// source --> https://ermafa-passage.de/wp-content/plugins/LayerSlider/assets/static/layerslider/js/layerslider.utils.js?ver=7.8.0 

/*
	* LayerSlider Utils
	*
	* (c) 2011-2023 George Krupa, John Gera & Kreatura Media
	*
	* LayerSlider home:		https://layerslider.com/
	* Licensing:			https://layerslider.com/licensing/
*/



;var _initLayerSlider=function(i,t,e){var r=jQuery;r(document).ready(function(){void 0===r.fn.layerSlider?window._layerSlider&&window._layerSlider.showNotice&&window._layerSlider.showNotice(i,"jquery"):(e&&r.each(e,function(t,e){r(i).on(t,e)}),r(i).layerSlider(t))})};if("object"==typeof LS_Meta&&LS_Meta.fixGSAP){var LS_oldGS=window.GreenSockGlobals,LS_oldGSQueue=window._gsQueue,LS_oldGSDefine=window._gsDefine;window._gsDefine=null,delete window._gsDefine;var LS_GSAP=window.GreenSockGlobals={}}var _gsScope="undefined"!=typeof module&&module.exports&&"undefined"!=typeof global?global:this||window;(_gsScope._gsQueue||(_gsScope._gsQueue=[])).push(function(){"use strict";function l(e){var i=e<1?Math.pow(10,(e+"").length-2):1;return function(t){return(Math.round(t/e)*e*i|0)/i}}function h(t,e){for(;t;)t.f||t.blob||(t.m=e||Math.round),t=t._next}var t,e,P,T,w,b,g,i,m,r;function y(t,e,i,r){i===r&&(i=r-(r-e)/1e6),t===e&&(e=t+(i-t)/1e6),this.a=t,this.b=e,this.c=i,this.d=r,this.da=r-t,this.ca=i-t,this.ba=e-t}function S(t,e,i,r){var n={a:t},s={},a={},o={c:r},l=(t+e)/2,h=(e+i)/2,u=(i+r)/2,_=(l+h)/2,f=(h+u)/2,c=(f-_)/8;return n.b=l+(t-l)/4,s.b=_+c,n.c=s.a=(n.b+s.b)/2,s.c=a.a=(_+f)/2,a.b=f-c,o.b=u+(r-u)/4,a.c=o.a=(a.b+o.b)/2,[n,s,a,o]}function v(t,e,i,r,n){var s,a,o,l,h,u,_,f,c,p,d,m,g,y=t.length-1,v=0,x=t[0].a;for(s=0;s<y;s++)a=(h=t[v]).a,o=h.d,l=t[v+1].d,f=n?(d=T[s],g=((m=w[s])+d)*e*.25/(r?.5:b[s]||.5),o-((u=o-(o-a)*(r?.5*e:0!==d?g/d:0))+(((_=o+(l-o)*(r?.5*e:0!==m?g/m:0))-u)*(3*d/(d+m)+.5)/4||0))):o-((u=o-(o-a)*e*.5)+(_=o+(l-o)*e*.5))/2,u+=f,_+=f,h.c=c=u,h.b=0!==s?x:x=h.a+.6*(h.c-h.a),h.da=o-a,h.ca=c-a,h.ba=x-a,i?(p=S(a,x,c,o),t.splice(v,1,p[0],p[1],p[2],p[3]),v+=4):v++,x=_;(h=t[v]).b=x,h.c=x+.4*(h.d-x),h.da=h.d-h.a,h.ca=h.c-h.a,h.ba=x-h.a,i&&(p=S(h.a,x,h.c,h.d),t.splice(v,1,p[0],p[1],p[2],p[3]))}function x(t,e,i,r){var n,s,a,o,l,h,u=[];if(r)for(s=(t=[r].concat(t)).length;-1<--s;)"string"==typeof(h=t[s][e])&&"="===h.charAt(1)&&(t[s][e]=r[e]+Number(h.charAt(0)+h.substr(2)));if((n=t.length-2)<0)return u[0]=new y(t[0][e],0,0,t[0][e]),u;for(s=0;s<n;s++)a=t[s][e],o=t[s+1][e],u[s]=new y(a,0,0,o),i&&(l=t[s+2][e],T[s]=(T[s]||0)+(o-a)*(o-a),w[s]=(w[s]||0)+(l-o)*(l-o));return u[s]=new y(t[s][e],0,0,t[s+1][e]),u}function c(t,e,i,r,n,s){var a,o,l,h,u,_,f,c,p={},d=[],m=s||t[0];for(o in n="string"==typeof n?","+n+",":",x,y,z,left,top,right,bottom,marginTop,marginLeft,marginRight,marginBottom,paddingLeft,paddingTop,paddingRight,paddingBottom,backgroundPosition,backgroundPosition_y,",null==e&&(e=1),t[0])d.push(o);if(1<t.length){for(c=t[t.length-1],f=!0,a=d.length;-1<--a;)if(o=d[a],.05<Math.abs(m[o]-c[o])){f=!1;break}f&&(t=t.concat(),s&&t.unshift(s),t.push(t[1]),s=t[t.length-3])}for(T.length=w.length=b.length=0,a=d.length;-1<--a;)o=d[a],g[o]=-1!==n.indexOf(","+o+","),p[o]=x(t,o,g[o],s);for(a=T.length;-1<--a;)T[a]=Math.sqrt(T[a]),w[a]=Math.sqrt(w[a]);if(!r){for(a=d.length;-1<--a;)if(g[o])for(_=(l=p[d[a]]).length-1,h=0;h<_;h++)u=l[h+1].da/w[h]+l[h].da/T[h]||0,b[h]=(b[h]||0)+u*u;for(a=b.length;-1<--a;)b[a]=Math.sqrt(b[a])}for(a=d.length,h=i?4:1;-1<--a;)l=p[o=d[a]],v(l,e,i,r,g[o]),f&&(l.splice(0,h),l.splice(l.length-h,h));return p}function p(t,e,i){for(var r,n,s,a,o,l,h,u,_,f,c,p=1/i,d=t.length;-1<--d;)for(s=(f=t[d]).a,a=f.d-s,o=f.c-s,l=f.b-s,r=n=0,u=1;u<=i;u++)r=n-(n=((h=p*u)*h*a+3*(_=1-h)*(h*o+_*l))*h),e[c=d*i+u-1]=(e[c]||0)+r*r}_gsScope._gsDefine("TweenMax",["core.Animation","core.SimpleTimeline","TweenLite"],function(r,u,v){function d(t){var e,i=[],r=t.length;for(e=0;e!==r;i.push(t[e++]));return i}function m(t,e,i){var r,n,s=t.cycle;for(r in s)n=s[r],t[r]="function"==typeof n?n(i,e[i],e):n[i%n.length];delete t.cycle}function g(t){if("function"==typeof t)return t;var p="object"==typeof t?t:{each:t},d=p.ease,m=p.from||0,g=p.base||0,y={},v=isNaN(m),x=p.axis,T={center:.5,end:1}[m]||0;return function(t,e,i){var r,n,s,a,o,l,h,u,_,f=(i||p).length,c=y[f];if(!c){if(!(_="auto"===p.grid?0:(p.grid||[1/0])[0])){for(h=-1/0;h<(h=i[_++].getBoundingClientRect().left)&&_<f;);_--}for(c=y[f]=[],r=v?Math.min(_,f)*T-.5:m%_,n=v?f*T/_-.5:m/_|0,u=1/(h=0),l=0;l<f;l++)s=l%_-r,a=n-(l/_|0),c[l]=o=x?Math.abs("y"===x?a:s):Math.sqrt(s*s+a*a),h<o&&(h=o),o<u&&(u=o);c.max=h-u,c.min=u,c.v=f=p.amount||p.each*(f<_?f-1:x?"y"===x?f/_:_:Math.max(_,f/_))||0,c.b=f<0?g-f:g}return f=(c[t]-c.min)/c.max,c.b+(d?d.getRatio(f):f)*c.v}}var y=function(t,e,i){v.call(this,t,e,i),this._cycle=0,this._yoyo=!0===this.vars.yoyo||!!this.vars.yoyoEase,this._repeat=this.vars.repeat||0,this._repeatDelay=this.vars.repeatDelay||0,this._repeat&&this._uncache(!0),this.render=y.prototype.render},x=1e-8,T=v._internals,w=T.isSelector,b=T.isArray,t=y.prototype=v.to({},.1,{}),P=[];y.version="2.1.3",t.constructor=y,t.kill()._gc=!1,y.killTweensOf=y.killDelayedCallsTo=v.killTweensOf,y.getTweensOf=v.getTweensOf,y.lagSmoothing=v.lagSmoothing,y.ticker=v.ticker,y.render=v.render,y.distribute=g,t.invalidate=function(){return this._yoyo=!0===this.vars.yoyo||!!this.vars.yoyoEase,this._repeat=this.vars.repeat||0,this._repeatDelay=this.vars.repeatDelay||0,this._yoyoEase=null,this._uncache(!0),v.prototype.invalidate.call(this)},t.updateTo=function(t,e){var i,r=this,n=r.ratio,s=r.vars.immediateRender||t.immediateRender;for(i in e&&r._startTime<r._timeline._time&&(r._startTime=r._timeline._time,r._uncache(!1),r._gc?r._enabled(!0,!1):r._timeline.insert(r,r._startTime-r._delay)),t)r.vars[i]=t[i];if(r._initted||s)if(e)r._initted=!1,s&&r.render(0,!0,!0);else if(r._gc&&r._enabled(!0,!1),r._notifyPluginsOfEnabled&&r._firstPT&&v._onPluginEvent("_onDisable",r),.998<r._time/r._duration){var a=r._totalTime;r.render(0,!0,!1),r._initted=!1,r.render(a,!0,!1)}else if(r._initted=!1,r._init(),0<r._time||s)for(var o,l=1/(1-n),h=r._firstPT;h;)o=h.s+h.c,h.c*=l,h.s=o-h.c,h=h._next;return r},t.render=function(t,e,i){this._initted||0===this._duration&&this.vars.repeat&&this.invalidate();var r,n,s,a,o,l,h,u,_,f=this,c=f._dirty?f.totalDuration():f._totalDuration,p=f._time,d=f._totalTime,m=f._cycle,g=f._duration,y=f._rawPrevTime;if(c-x<=t&&0<=t?(f._totalTime=c,f._cycle=f._repeat,f._yoyo&&0!=(1&f._cycle)?(f._time=0,f.ratio=f._ease._calcEnd?f._ease.getRatio(0):0):(f._time=g,f.ratio=f._ease._calcEnd?f._ease.getRatio(1):1),f._reversed||(r=!0,n="onComplete",i=i||f._timeline.autoRemoveChildren),0!==g||!f._initted&&f.vars.lazy&&!i||(f._startTime===f._timeline._duration&&(t=0),(y<0||t<=0&&-x<=t||y===x&&"isPause"!==f.data)&&y!==t&&(i=!0,x<y&&(n="onReverseComplete")),f._rawPrevTime=u=!e||t||y===t?t:x)):t<x?(f._totalTime=f._time=f._cycle=0,f.ratio=f._ease._calcEnd?f._ease.getRatio(0):0,(0!==d||0===g&&0<y)&&(n="onReverseComplete",r=f._reversed),-x<t?t=0:t<0&&(f._active=!1,0!==g||!f._initted&&f.vars.lazy&&!i||(0<=y&&(i=!0),f._rawPrevTime=u=!e||t||y===t?t:x)),f._initted||(i=!0)):(f._totalTime=f._time=t,0!==f._repeat&&(a=g+f._repeatDelay,f._cycle=f._totalTime/a>>0,0!==f._cycle&&f._cycle===f._totalTime/a&&d<=t&&f._cycle--,f._time=f._totalTime-f._cycle*a,f._yoyo&&0!=(1&f._cycle)&&(f._time=g-f._time,(_=f._yoyoEase||f.vars.yoyoEase)&&(f._yoyoEase||(!0!==_||f._initted?f._yoyoEase=_=!0===_?f._ease:_ instanceof Ease?_:Ease.map[_]:(_=f.vars.ease,f._yoyoEase=_=_?_ instanceof Ease?_:"function"==typeof _?new Ease(_,f.vars.easeParams):Ease.map[_]||v.defaultEase:v.defaultEase)),f.ratio=_?1-_.getRatio((g-f._time)/g):0)),f._time>g?f._time=g:f._time<0&&(f._time=0)),f._easeType&&!_?(o=f._time/g,(1===(l=f._easeType)||3===l&&.5<=o)&&(o=1-o),3===l&&(o*=2),1===(h=f._easePower)?o*=o:2===h?o*=o*o:3===h?o*=o*o*o:4===h&&(o*=o*o*o*o),f.ratio=1===l?1-o:2===l?o:f._time/g<.5?o/2:1-o/2):_||(f.ratio=f._ease.getRatio(f._time/g))),p!==f._time||i||m!==f._cycle){if(!f._initted){if(f._init(),!f._initted||f._gc)return;if(!i&&f._firstPT&&(!1!==f.vars.lazy&&f._duration||f.vars.lazy&&!f._duration))return f._time=p,f._totalTime=d,f._rawPrevTime=y,f._cycle=m,T.lazyTweens.push(f),void(f._lazy=[t,e]);!f._time||r||_?r&&this._ease._calcEnd&&!_&&(f.ratio=f._ease.getRatio(0===f._time?0:1)):f.ratio=f._ease.getRatio(f._time/g)}for(!1!==f._lazy&&(f._lazy=!1),f._active||!f._paused&&f._time!==p&&0<=t&&(f._active=!0),0===d&&(2===f._initted&&0<t&&f._init(),f._startAt&&(0<=t?f._startAt.render(t,!0,i):n=n||"_dummyGS"),!f.vars.onStart||0===f._totalTime&&0!==g||(e||f._callback("onStart"))),s=f._firstPT;s;)s.f?s.t[s.p](s.c*f.ratio+s.s):s.t[s.p]=s.c*f.ratio+s.s,s=s._next;f._onUpdate&&(t<0&&f._startAt&&f._startTime&&f._startAt.render(t,!0,i),e||f._totalTime===d&&!n||f._callback("onUpdate")),f._cycle!==m&&(e||f._gc||f.vars.onRepeat&&f._callback("onRepeat")),!n||f._gc&&!i||(t<0&&f._startAt&&!f._onUpdate&&f._startTime&&f._startAt.render(t,!0,i),r&&(f._timeline.autoRemoveChildren&&f._enabled(!1,!1),f._active=!1),!e&&f.vars[n]&&f._callback(n),0===g&&f._rawPrevTime===x&&u!==x&&(f._rawPrevTime=0))}else d!==f._totalTime&&f._onUpdate&&(e||f._callback("onUpdate"))},y.to=function(t,e,i){return new y(t,e,i)},y.from=function(t,e,i){return i.runBackwards=!0,i.immediateRender=0!=i.immediateRender,new y(t,e,i)},y.fromTo=function(t,e,i,r){return r.startAt=i,r.immediateRender=0!=r.immediateRender&&0!=i.immediateRender,new y(t,e,r)},y.staggerTo=y.allTo=function(t,e,i,r,n,s,a){var o,l,h,u,_=[],f=g(i.stagger||r),c=i.cycle,p=(i.startAt||P).cycle;for(b(t)||("string"==typeof t&&(t=v.selector(t)||t),w(t)&&(t=d(t))),o=(t=t||[]).length-1,h=0;h<=o;h++){for(u in l={},i)l[u]=i[u];if(c&&(m(l,t,h),null!=l.duration&&(e=l.duration,delete l.duration)),p){for(u in p=l.startAt={},i.startAt)p[u]=i.startAt[u];m(l.startAt,t,h)}l.delay=f(h,t[h],t)+(l.delay||0),h===o&&n&&(l.onComplete=function(){i.onComplete&&i.onComplete.apply(i.onCompleteScope||this,arguments),n.apply(a||i.callbackScope||this,s||P)}),_[h]=new y(t[h],e,l)}return _},y.staggerFrom=y.allFrom=function(t,e,i,r,n,s,a){return i.runBackwards=!0,i.immediateRender=0!=i.immediateRender,y.staggerTo(t,e,i,r,n,s,a)},y.staggerFromTo=y.allFromTo=function(t,e,i,r,n,s,a,o){return r.startAt=i,r.immediateRender=0!=r.immediateRender&&0!=i.immediateRender,y.staggerTo(t,e,r,n,s,a,o)},y.delayedCall=function(t,e,i,r,n){return new y(e,0,{delay:t,onComplete:e,onCompleteParams:i,callbackScope:r,onReverseComplete:e,onReverseCompleteParams:i,immediateRender:!1,useFrames:n,overwrite:0})},y.set=function(t,e){return new y(t,0,e)},y.isTweening=function(t){return 0<v.getTweensOf(t,!0).length};var s=function(t,e){for(var i=[],r=0,n=t._first;n;)n instanceof v?i[r++]=n:(e&&(i[r++]=n),r=(i=i.concat(s(n,e))).length),n=n._next;return i},_=y.getAllTweens=function(t){return s(r._rootTimeline,t).concat(s(r._rootFramesTimeline,t))};y.killAll=function(t,e,i,r){null==e&&(e=!0),null==i&&(i=!0);var n,s,a,o=_(0!=r),l=o.length,h=e&&i&&r;for(a=0;a<l;a++)s=o[a],(h||s instanceof u||(n=s.target===s.vars.onComplete)&&i||e&&!n)&&(t?s.totalTime(s._reversed?0:s.totalDuration()):s._enabled(!1,!1))},y.killChildTweensOf=function(t,e){if(null!=t){var i,r,n,s,a,o=T.tweenLookup;if("string"==typeof t&&(t=v.selector(t)||t),w(t)&&(t=d(t)),b(t))for(s=t.length;-1<--s;)y.killChildTweensOf(t[s],e);else{for(n in i=[],o)for(r=o[n].target.parentNode;r;)r===t&&(i=i.concat(o[n].tweens)),r=r.parentNode;for(a=i.length,s=0;s<a;s++)e&&i[s].totalTime(i[s].totalDuration()),i[s]._enabled(!1,!1)}}};function n(t,e,i,r){e=!1!==e,i=!1!==i;for(var n,s,a=_(r=!1!==r),o=e&&i&&r,l=a.length;-1<--l;)s=a[l],(o||s instanceof u||(n=s.target===s.vars.onComplete)&&i||e&&!n)&&s.paused(t)}return y.pauseAll=function(t,e,i){n(!0,t,e,i)},y.resumeAll=function(t,e,i){n(!1,t,e,i)},y.globalTimeScale=function(t){var e=r._rootTimeline,i=v.ticker.time;return arguments.length?(t=t||x,e._startTime=i-(i-e._startTime)*e._timeScale/t,e=r._rootFramesTimeline,i=v.ticker.frame,e._startTime=i-(i-e._startTime)*e._timeScale/t,e._timeScale=r._rootTimeline._timeScale=t,t):e._timeScale},t.progress=function(t,e){return arguments.length?this.totalTime(this.duration()*(this._yoyo&&0!=(1&this._cycle)?1-t:t)+this._cycle*(this._duration+this._repeatDelay),e):this.duration()?this._time/this._duration:this.ratio},t.totalProgress=function(t,e){return arguments.length?this.totalTime(this.totalDuration()*t,e):this._totalTime/this.totalDuration()},t.time=function(t,e){if(!arguments.length)return this._time;this._dirty&&this.totalDuration();var i=this._duration,r=this._cycle,n=r*(i+this._repeatDelay);return i<t&&(t=i),this.totalTime(this._yoyo&&1&r?i-t+n:this._repeat?t+n:t,e)},t.duration=function(t){return arguments.length?r.prototype.duration.call(this,t):this._duration},t.totalDuration=function(t){return arguments.length?-1===this._repeat?this:this.duration((t-this._repeat*this._repeatDelay)/(this._repeat+1)):(this._dirty&&(this._totalDuration=-1===this._repeat?999999999999:this._duration*(this._repeat+1)+this._repeatDelay*this._repeat,this._dirty=!1),this._totalDuration)},t.repeat=function(t){return arguments.length?(this._repeat=t,this._uncache(!0)):this._repeat},t.repeatDelay=function(t){return arguments.length?(this._repeatDelay=t,this._uncache(!0)):this._repeatDelay},t.yoyo=function(t){return arguments.length?(this._yoyo=t,this):this._yoyo},y},!0),_gsScope._gsDefine("TimelineLite",["core.Animation","core.SimpleTimeline","TweenLite"],function(_,f,p){function d(t){f.call(this,t);var e,i,r=this,n=r.vars;for(i in r._labels={},r.autoRemoveChildren=!!n.autoRemoveChildren,r.smoothChildTiming=!!n.smoothChildTiming,r._sortChildren=!0,r._onUpdate=n.onUpdate,n)e=n[i],c(e)&&-1!==e.join("").indexOf("{self}")&&(n[i]=r._swapSelfInParams(e));c(n.tweens)&&r.add(n.tweens,0,n.align,n.stagger)}function m(t){var e,i={};for(e in t)i[e]=t[e];return i}function g(t,e,i){var r,n,s=t.cycle;for(r in s)n=s[r],t[r]="function"==typeof n?n(i,e[i],e):n[i%n.length];delete t.cycle}function h(t,e,i,r){var n="immediateRender";return n in e||(e[n]=!(i&&!1===i[n]||r)),e}function y(t){if("function"==typeof t)return t;var p="object"==typeof t?t:{each:t},d=p.ease,m=p.from||0,g=p.base||0,y={},v=isNaN(m),x=p.axis,T={center:.5,end:1}[m]||0;return function(t,e,i){var r,n,s,a,o,l,h,u,_,f=(i||p).length,c=y[f];if(!c){if(!(_="auto"===p.grid?0:(p.grid||[1/0])[0])){for(h=-1/0;h<(h=i[_++].getBoundingClientRect().left)&&_<f;);_--}for(c=y[f]=[],r=v?Math.min(_,f)*T-.5:m%_,n=v?f*T/_-.5:m/_|0,u=1/(h=0),l=0;l<f;l++)s=l%_-r,a=n-(l/_|0),c[l]=o=x?Math.abs("y"===x?a:s):Math.sqrt(s*s+a*a),h<o&&(h=o),o<u&&(u=o);c.max=h-u,c.min=u,c.v=f=p.amount||p.each*(f<_?f-1:x?"y"===x?f/_:_:Math.max(_,f/_))||0,c.b=f<0?g-f:g}return f=(c[t]-c.min)/c.max,c.b+(d?d.getRatio(f):f)*c.v}}var v=1e-8,t=p._internals,e=d._internals={},x=t.isSelector,c=t.isArray,T=t.lazyTweens,w=t.lazyRender,a=_gsScope._gsDefine.globals,s=e.pauseCallback=function(){},i=d.prototype=new f;return d.version="2.1.3",d.distribute=y,i.constructor=d,i.kill()._gc=i._forcingPlayhead=i._hasPause=!1,i.to=function(t,e,i,r){var n=i.repeat&&a.TweenMax||p;return e?this.add(new n(t,e,i),r):this.set(t,i,r)},i.from=function(t,e,i,r){return this.add((i.repeat&&a.TweenMax||p).from(t,e,h(0,i)),r)},i.fromTo=function(t,e,i,r,n){var s=r.repeat&&a.TweenMax||p;return r=h(0,r,i),e?this.add(s.fromTo(t,e,i,r),n):this.set(t,r,n)},i.staggerTo=function(t,e,i,r,n,s,a,o){var l,h,u=new d({onComplete:s,onCompleteParams:a,callbackScope:o,smoothChildTiming:this.smoothChildTiming}),_=y(i.stagger||r),f=i.startAt,c=i.cycle;for("string"==typeof t&&(t=p.selector(t)||t),x(t=t||[])&&(t=function(t){var e,i=[],r=t.length;for(e=0;e!==r;i.push(t[e++]));return i}(t)),h=0;h<t.length;h++)l=m(i),f&&(l.startAt=m(f),f.cycle&&g(l.startAt,t,h)),c&&(g(l,t,h),null!=l.duration&&(e=l.duration,delete l.duration)),u.to(t[h],e,l,_(h,t[h],t));return this.add(u,n)},i.staggerFrom=function(t,e,i,r,n,s,a,o){return i.runBackwards=!0,this.staggerTo(t,e,h(0,i),r,n,s,a,o)},i.staggerFromTo=function(t,e,i,r,n,s,a,o,l){return r.startAt=i,this.staggerTo(t,e,h(0,r,i),n,s,a,o,l)},i.call=function(t,e,i,r){return this.add(p.delayedCall(0,t,e,i),r)},i.set=function(t,e,i){return this.add(new p(t,0,h(0,e,null,!0)),i)},d.exportRoot=function(t,e){null==(t=t||{}).smoothChildTiming&&(t.smoothChildTiming=!0);var i,r,n,s,a=new d(t),o=a._timeline;for(null==e&&(e=!0),o._remove(a,!0),a._startTime=0,a._rawPrevTime=a._time=a._totalTime=o._time,n=o._first;n;)s=n._next,e&&n instanceof p&&n.target===n.vars.onComplete||((r=n._startTime-n._delay)<0&&(i=1),a.add(n,r)),n=s;return o.add(a,0),i&&a.totalDuration(),a},i.add=function(t,e,i,r){var n,s,a,o,l,h,u=this;if("number"!=typeof e&&(e=u._parseTimeOrLabel(e,0,!0,t)),!(t instanceof _)){if(t instanceof Array||t&&t.push&&c(t)){for(i=i||"normal",r=r||0,n=e,s=t.length,a=0;a<s;a++)c(o=t[a])&&(o=new d({tweens:o})),u.add(o,n),"string"!=typeof o&&"function"!=typeof o&&("sequence"===i?n=o._startTime+o.totalDuration()/o._timeScale:"start"===i&&(o._startTime-=o.delay())),n+=r;return u._uncache(!0)}if("string"==typeof t)return u.addLabel(t,e);if("function"!=typeof t)throw"Cannot add "+t+" into the timeline; it is not a tween, timeline, function, or string.";t=p.delayedCall(0,t)}if(f.prototype.add.call(u,t,e),(t._time||!t._duration&&t._initted)&&(n=(u.rawTime()-t._startTime)*t._timeScale,(!t._duration||1e-5<Math.abs(Math.max(0,Math.min(t.totalDuration(),n)))-t._totalTime)&&t.render(n,!1,!1)),(u._gc||u._time===u._duration)&&!u._paused&&u._duration<u.duration())for(h=(l=u).rawTime()>t._startTime;l._timeline;)h&&l._timeline.smoothChildTiming?l.totalTime(l._totalTime,!0):l._gc&&l._enabled(!0,!1),l=l._timeline;return u},i.remove=function(t){if(t instanceof _){this._remove(t,!1);var e=t._timeline=t.vars.useFrames?_._rootFramesTimeline:_._rootTimeline;return t._startTime=(t._paused?t._pauseTime:e._time)-(t._reversed?t.totalDuration()-t._totalTime:t._totalTime)/t._timeScale,this}if(t instanceof Array||t&&t.push&&c(t)){for(var i=t.length;-1<--i;)this.remove(t[i]);return this}return"string"==typeof t?this.removeLabel(t):this.kill(null,t)},i._remove=function(t,e){return f.prototype._remove.call(this,t,e),this._last?this._time>this.duration()&&(this._time=this._duration,this._totalTime=this._totalDuration):this._time=this._totalTime=this._duration=this._totalDuration=0,this},i.append=function(t,e){return this.add(t,this._parseTimeOrLabel(null,e,!0,t))},i.insert=i.insertMultiple=function(t,e,i,r){return this.add(t,e||0,i,r)},i.appendMultiple=function(t,e,i,r){return this.add(t,this._parseTimeOrLabel(null,e,!0,t),i,r)},i.addLabel=function(t,e){return this._labels[t]=this._parseTimeOrLabel(e),this},i.addPause=function(t,e,i,r){var n=p.delayedCall(0,s,i,r||this);return n.vars.onComplete=n.vars.onReverseComplete=e,n.data="isPause",this._hasPause=!0,this.add(n,t)},i.removeLabel=function(t){return delete this._labels[t],this},i.getLabelTime=function(t){return null!=this._labels[t]?this._labels[t]:-1},i._parseTimeOrLabel=function(t,e,i,r){var n,s;if(r instanceof _&&r.timeline===this)this.remove(r);else if(r&&(r instanceof Array||r.push&&c(r)))for(s=r.length;-1<--s;)r[s]instanceof _&&r[s].timeline===this&&this.remove(r[s]);if(n="number"!=typeof t||e?99999999999<this.duration()?this.recent().endTime(!1):this._duration:0,"string"==typeof e)return this._parseTimeOrLabel(e,i&&"number"==typeof t&&null==this._labels[e]?t-n:0,i);if(e=e||0,"string"!=typeof t||!isNaN(t)&&null==this._labels[t])null==t&&(t=n);else{if(-1===(s=t.indexOf("=")))return null==this._labels[t]?i?this._labels[t]=n+e:e:this._labels[t]+e;e=parseInt(t.charAt(s-1)+"1",10)*Number(t.substr(s+1)),t=1<s?this._parseTimeOrLabel(t.substr(0,s-1),0,i):n}return Number(t)+e},i.seek=function(t,e){return this.totalTime("number"==typeof t?t:this._parseTimeOrLabel(t),!1!==e)},i.stop=function(){return this.paused(!0)},i.gotoAndPlay=function(t,e){return this.play(t,e)},i.gotoAndStop=function(t,e){return this.pause(t,e)},i.render=function(t,e,i){this._gc&&this._enabled(!0,!1);var r,n,s,a,o,l,h,u,_=this,f=_._time,c=_._dirty?_.totalDuration():_._totalDuration,p=_._startTime,d=_._timeScale,m=_._paused;if(f!==_._time&&(t+=_._time-f),_._hasPause&&!_._forcingPlayhead&&!e){if(f<t)for(r=_._first;r&&r._startTime<=t&&!l;)r._duration||"isPause"!==r.data||r.ratio||0===r._startTime&&0===_._rawPrevTime||(l=r),r=r._next;else for(r=_._last;r&&r._startTime>=t&&!l;)r._duration||"isPause"===r.data&&0<r._rawPrevTime&&(l=r),r=r._prev;l&&(_._time=_._totalTime=t=l._startTime,u=_._startTime+(_._reversed?_._duration-t:t)/_._timeScale)}if(c-v<=t&&0<=t)_._totalTime=_._time=c,_._reversed||_._hasPausedChild()||(n=!0,a="onComplete",o=!!_._timeline.autoRemoveChildren,0===_._duration&&(t<=0&&-v<=t||_._rawPrevTime<0||_._rawPrevTime===v)&&_._rawPrevTime!==t&&_._first&&(o=!0,_._rawPrevTime>v&&(a="onReverseComplete"))),_._rawPrevTime=_._duration||!e||t||_._rawPrevTime===t?t:v,t=c+1e-4;else if(t<v)if(_._totalTime=_._time=0,-v<t&&(t=0),(0!==f||0===_._duration&&_._rawPrevTime!==v&&(0<_._rawPrevTime||t<0&&0<=_._rawPrevTime))&&(a="onReverseComplete",n=_._reversed),t<0)_._active=!1,_._timeline.autoRemoveChildren&&_._reversed?(o=n=!0,a="onReverseComplete"):0<=_._rawPrevTime&&_._first&&(o=!0),_._rawPrevTime=t;else{if(_._rawPrevTime=_._duration||!e||t||_._rawPrevTime===t?t:v,0===t&&n)for(r=_._first;r&&0===r._startTime;)r._duration||(n=!1),r=r._next;t=0,_._initted||(o=!0)}else _._totalTime=_._time=_._rawPrevTime=t;if(_._time!==f&&_._first||i||o||l){if(_._initted||(_._initted=!0),_._active||!_._paused&&_._time!==f&&0<t&&(_._active=!0),0===f&&_.vars.onStart&&(0===_._time&&_._duration||e||_._callback("onStart")),f<=(h=_._time))for(r=_._first;r&&(s=r._next,h===_._time&&(!_._paused||m));)(r._active||r._startTime<=h&&!r._paused&&!r._gc)&&(l===r&&(_.pause(),_._pauseTime=u),r._reversed?r.render((r._dirty?r.totalDuration():r._totalDuration)-(t-r._startTime)*r._timeScale,e,i):r.render((t-r._startTime)*r._timeScale,e,i)),r=s;else for(r=_._last;r&&(s=r._prev,h===_._time&&(!_._paused||m));){if(r._active||r._startTime<=f&&!r._paused&&!r._gc){if(l===r){for(l=r._prev;l&&l.endTime()>_._time;)l.render(l._reversed?l.totalDuration()-(t-l._startTime)*l._timeScale:(t-l._startTime)*l._timeScale,e,i),l=l._prev;l=null,_.pause(),_._pauseTime=u}r._reversed?r.render((r._dirty?r.totalDuration():r._totalDuration)-(t-r._startTime)*r._timeScale,e,i):r.render((t-r._startTime)*r._timeScale,e,i)}r=s}_._onUpdate&&(e||(T.length&&w(),_._callback("onUpdate"))),a&&(_._gc||p!==_._startTime&&d===_._timeScale||!(0===_._time||c>=_.totalDuration())||(n&&(T.length&&w(),_._timeline.autoRemoveChildren&&_._enabled(!1,!1),_._active=!1),!e&&_.vars[a]&&_._callback(a)))}},i._hasPausedChild=function(){for(var t=this._first;t;){if(t._paused||t instanceof d&&t._hasPausedChild())return!0;t=t._next}return!1},i.getChildren=function(t,e,i,r){r=r||-9999999999;for(var n=[],s=this._first,a=0;s;)s._startTime<r||(s instanceof p?!1!==e&&(n[a++]=s):(!1!==i&&(n[a++]=s),!1!==t&&(a=(n=n.concat(s.getChildren(!0,e,i))).length))),s=s._next;return n},i.getTweensOf=function(t,e){var i,r,n=this._gc,s=[],a=0;for(n&&this._enabled(!0,!0),r=(i=p.getTweensOf(t)).length;-1<--r;)(i[r].timeline===this||e&&this._contains(i[r]))&&(s[a++]=i[r]);return n&&this._enabled(!1,!0),s},i.recent=function(){return this._recent},i._contains=function(t){for(var e=t.timeline;e;){if(e===this)return!0;e=e.timeline}return!1},i.shiftChildren=function(t,e,i){i=i||0;for(var r,n=this._first,s=this._labels;n;)n._startTime>=i&&(n._startTime+=t),n=n._next;if(e)for(r in s)s[r]>=i&&(s[r]+=t);return this._uncache(!0)},i._kill=function(t,e){if(!t&&!e)return this._enabled(!1,!1);for(var i=e?this.getTweensOf(e):this.getChildren(!0,!0,!1),r=i.length,n=!1;-1<--r;)i[r]._kill(t,e)&&(n=!0);return n},i.clear=function(t){var e=this.getChildren(!1,!0,!0),i=e.length;for(this._time=this._totalTime=0;-1<--i;)e[i]._enabled(!1,!1);return!1!==t&&(this._labels={}),this._uncache(!0)},i.invalidate=function(){for(var t=this._first;t;)t.invalidate(),t=t._next;return _.prototype.invalidate.call(this)},i._enabled=function(t,e){if(t===this._gc)for(var i=this._first;i;)i._enabled(t,!0),i=i._next;return f.prototype._enabled.call(this,t,e)},i.totalTime=function(t,e,i){this._forcingPlayhead=!0;var r=_.prototype.totalTime.apply(this,arguments);return this._forcingPlayhead=!1,r},i.duration=function(t){return arguments.length?(0!==this.duration()&&0!==t&&this.timeScale(this._duration/t),this):(this._dirty&&this.totalDuration(),this._duration)},i.totalDuration=function(t){if(arguments.length)return t&&this.totalDuration()?this.timeScale(this._totalDuration/t):this;if(this._dirty){for(var e,i,r=0,n=this,s=n._last,a=999999999999;s;)e=s._prev,s._dirty&&s.totalDuration(),s._startTime>a&&n._sortChildren&&!s._paused&&!n._calculatingDuration?(n._calculatingDuration=1,n.add(s,s._startTime-s._delay),n._calculatingDuration=0):a=s._startTime,s._startTime<0&&!s._paused&&(r-=s._startTime,n._timeline.smoothChildTiming&&(n._startTime+=s._startTime/n._timeScale,n._time-=s._startTime,n._totalTime-=s._startTime,n._rawPrevTime-=s._startTime),n.shiftChildren(-s._startTime,!1,-9999999999),a=0),r<(i=s._startTime+s._totalDuration/s._timeScale)&&(r=i),s=e;n._duration=n._totalDuration=r,n._dirty=!1}return this._totalDuration},i.paused=function(t){if(!1===t&&this._paused)for(var e=this._first;e;)e._startTime===this._time&&"isPause"===e.data&&(e._rawPrevTime=0),e=e._next;return _.prototype.paused.apply(this,arguments)},i.usesFrames=function(){for(var t=this._timeline;t._timeline;)t=t._timeline;return t===_._rootFramesTimeline},i.rawTime=function(t){return t&&(this._paused||this._repeat&&0<this.time()&&this.totalProgress()<1)?this._totalTime%(this._duration+this._repeatDelay):this._paused?this._totalTime:(this._timeline.rawTime(t)-this._startTime)*this._timeScale},d},!0),_gsScope._gsDefine("TimelineMax",["TimelineLite","TweenLite","easing.Ease"],function(e,o,t){function i(t){e.call(this,t),this._repeat=this.vars.repeat||0,this._repeatDelay=this.vars.repeatDelay||0,this._cycle=0,this._yoyo=!!this.vars.yoyo,this._dirty=!0}var C=1e-8,r=o._internals,R=r.lazyTweens,A=r.lazyRender,l=_gsScope._gsDefine.globals,h=new t(null,null,1,0),n=i.prototype=new e;return n.constructor=i,n.kill()._gc=!1,i.version="2.1.3",n.invalidate=function(){return this._yoyo=!!this.vars.yoyo,this._repeat=this.vars.repeat||0,this._repeatDelay=this.vars.repeatDelay||0,this._uncache(!0),e.prototype.invalidate.call(this)},n.addCallback=function(t,e,i,r){return this.add(o.delayedCall(0,t,i,r),e)},n.removeCallback=function(t,e){if(t)if(null==e)this._kill(null,t);else for(var i=this.getTweensOf(t,!1),r=i.length,n=this._parseTimeOrLabel(e);-1<--r;)i[r]._startTime===n&&i[r]._enabled(!1,!1);return this},n.removePause=function(t){return this.removeCallback(e._internals.pauseCallback,t)},n.tweenTo=function(t,e){e=e||{};var i,r,n,s={ease:h,useFrames:this.usesFrames(),immediateRender:!1,lazy:!1},a=e.repeat&&l.TweenMax||o;for(r in e)s[r]=e[r];return s.time=this._parseTimeOrLabel(t),i=Math.abs(Number(s.time)-this._time)/this._timeScale||.001,n=new a(this,i,s),s.onStart=function(){n.target.paused(!0),n.vars.time===n.target.time()||i!==n.duration()||n.isFromTo||n.duration(Math.abs(n.vars.time-n.target.time())/n.target._timeScale).render(n.time(),!0,!0),e.onStart&&e.onStart.apply(e.onStartScope||e.callbackScope||n,e.onStartParams||[])},n},n.tweenFromTo=function(t,e,i){i=i||{},t=this._parseTimeOrLabel(t),i.startAt={onComplete:this.seek,onCompleteParams:[t],callbackScope:this},i.immediateRender=!1!==i.immediateRender;var r=this.tweenTo(e,i);return r.isFromTo=1,r.duration(Math.abs(r.vars.time-t)/this._timeScale||.001)},n.render=function(t,e,i){this._gc&&this._enabled(!0,!1);var r,n,s,a,o,l,h,u,_,f=this,c=f._time,p=f._dirty?f.totalDuration():f._totalDuration,d=f._duration,m=f._totalTime,g=f._startTime,y=f._timeScale,v=f._rawPrevTime,x=f._paused,T=f._cycle;if(c!==f._time&&(t+=f._time-c),p-C<=t&&0<=t)f._locked||(f._totalTime=p,f._cycle=f._repeat),f._reversed||f._hasPausedChild()||(n=!0,a="onComplete",o=!!f._timeline.autoRemoveChildren,0===f._duration&&(t<=0&&-C<=t||v<0||v===C)&&v!==t&&f._first&&(o=!0,C<v&&(a="onReverseComplete"))),f._rawPrevTime=f._duration||!e||t||f._rawPrevTime===t?t:C,f._yoyo&&1&f._cycle?f._time=t=0:t=(f._time=d)+1e-4;else if(t<C)if(f._locked||(f._totalTime=f._cycle=0),f._time=0,-C<t&&(t=0),(0!==c||0===d&&v!==C&&(0<v||t<0&&0<=v)&&!f._locked)&&(a="onReverseComplete",n=f._reversed),t<0)f._active=!1,f._timeline.autoRemoveChildren&&f._reversed?(o=n=!0,a="onReverseComplete"):0<=v&&f._first&&(o=!0),f._rawPrevTime=t;else{if(f._rawPrevTime=d||!e||t||f._rawPrevTime===t?t:C,0===t&&n)for(r=f._first;r&&0===r._startTime;)r._duration||(n=!1),r=r._next;t=0,f._initted||(o=!0)}else 0===d&&v<0&&(o=!0),f._time=f._rawPrevTime=t,f._locked||(f._totalTime=t,0!==f._repeat&&(l=d+f._repeatDelay,f._cycle=f._totalTime/l>>0,f._cycle&&f._cycle===f._totalTime/l&&m<=t&&f._cycle--,f._time=f._totalTime-f._cycle*l,f._yoyo&&1&f._cycle&&(f._time=d-f._time),f._time>d?t=(f._time=d)+1e-4:f._time<0?f._time=t=0:t=f._time));if(f._hasPause&&!f._forcingPlayhead&&!e){if(c<(t=f._time)||f._repeat&&T!==f._cycle)for(r=f._first;r&&r._startTime<=t&&!h;)r._duration||"isPause"!==r.data||r.ratio||0===r._startTime&&0===f._rawPrevTime||(h=r),r=r._next;else for(r=f._last;r&&r._startTime>=t&&!h;)r._duration||"isPause"===r.data&&0<r._rawPrevTime&&(h=r),r=r._prev;h&&(_=f._startTime+(f._reversed?f._duration-h._startTime:h._startTime)/f._timeScale,h._startTime<d&&(f._time=f._rawPrevTime=t=h._startTime,f._totalTime=t+f._cycle*(f._totalDuration+f._repeatDelay)))}if(f._cycle!==T&&!f._locked){var w=f._yoyo&&0!=(1&T),b=w===(f._yoyo&&0!=(1&f._cycle)),P=f._totalTime,S=f._cycle,O=f._rawPrevTime,k=f._time;if(f._totalTime=T*d,f._cycle<T?w=!w:f._totalTime+=d,f._time=c,f._rawPrevTime=0===d?v-1e-4:v,f._cycle=T,f._locked=!0,c=w?0:d,f.render(c,e,0===d),e||f._gc||f.vars.onRepeat&&(f._cycle=S,f._locked=!1,f._callback("onRepeat")),c!==f._time)return;if(b&&(f._cycle=T,f._locked=!0,c=w?d+1e-4:-1e-4,f.render(c,!0,!1)),f._locked=!1,f._paused&&!x)return;f._time=k,f._totalTime=P,f._cycle=S,f._rawPrevTime=O}if(f._time!==c&&f._first||i||o||h){if(f._initted||(f._initted=!0),f._active||!f._paused&&f._totalTime!==m&&0<t&&(f._active=!0),0===m&&f.vars.onStart&&(0===f._totalTime&&f._totalDuration||e||f._callback("onStart")),c<=(u=f._time))for(r=f._first;r&&(s=r._next,u===f._time&&(!f._paused||x));)(r._active||r._startTime<=f._time&&!r._paused&&!r._gc)&&(h===r&&(f.pause(),f._pauseTime=_),r._reversed?r.render((r._dirty?r.totalDuration():r._totalDuration)-(t-r._startTime)*r._timeScale,e,i):r.render((t-r._startTime)*r._timeScale,e,i)),r=s;else for(r=f._last;r&&(s=r._prev,u===f._time&&(!f._paused||x));){if(r._active||r._startTime<=c&&!r._paused&&!r._gc){if(h===r){for(h=r._prev;h&&h.endTime()>f._time;)h.render(h._reversed?h.totalDuration()-(t-h._startTime)*h._timeScale:(t-h._startTime)*h._timeScale,e,i),h=h._prev;h=null,f.pause(),f._pauseTime=_}r._reversed?r.render((r._dirty?r.totalDuration():r._totalDuration)-(t-r._startTime)*r._timeScale,e,i):r.render((t-r._startTime)*r._timeScale,e,i)}r=s}f._onUpdate&&(e||(R.length&&A(),f._callback("onUpdate"))),a&&(f._locked||f._gc||g!==f._startTime&&y===f._timeScale||!(0===f._time||p>=f.totalDuration())||(n&&(R.length&&A(),f._timeline.autoRemoveChildren&&f._enabled(!1,!1),f._active=!1),!e&&f.vars[a]&&f._callback(a)))}else m!==f._totalTime&&f._onUpdate&&(e||f._callback("onUpdate"))},n.getActive=function(t,e,i){var r,n,s=[],a=this.getChildren(t||null==t,e||null==t,!!i),o=0,l=a.length;for(r=0;r<l;r++)(n=a[r]).isActive()&&(s[o++]=n);return s},n.getLabelAfter=function(t){t||0!==t&&(t=this._time);var e,i=this.getLabelsArray(),r=i.length;for(e=0;e<r;e++)if(i[e].time>t)return i[e].name;return null},n.getLabelBefore=function(t){null==t&&(t=this._time);for(var e=this.getLabelsArray(),i=e.length;-1<--i;)if(e[i].time<t)return e[i].name;return null},n.getLabelsArray=function(){var t,e=[],i=0;for(t in this._labels)e[i++]={time:this._labels[t],name:t};return e.sort(function(t,e){return t.time-e.time}),e},n.invalidate=function(){return this._locked=!1,e.prototype.invalidate.call(this)},n.progress=function(t,e){return arguments.length?this.totalTime(this.duration()*(this._yoyo&&0!=(1&this._cycle)?1-t:t)+this._cycle*(this._duration+this._repeatDelay),e):this._time/this.duration()||0},n.totalProgress=function(t,e){return arguments.length?this.totalTime(this.totalDuration()*t,e):this._totalTime/this.totalDuration()||0},n.totalDuration=function(t){return arguments.length?-1!==this._repeat&&t?this.timeScale(this.totalDuration()/t):this:(this._dirty&&(e.prototype.totalDuration.call(this),this._totalDuration=-1===this._repeat?999999999999:this._duration*(this._repeat+1)+this._repeatDelay*this._repeat),this._totalDuration)},n.time=function(t,e){if(!arguments.length)return this._time;this._dirty&&this.totalDuration();var i=this._duration,r=this._cycle,n=r*(i+this._repeatDelay);return i<t&&(t=i),this.totalTime(this._yoyo&&1&r?i-t+n:this._repeat?t+n:t,e)},n.repeat=function(t){return arguments.length?(this._repeat=t,this._uncache(!0)):this._repeat},n.repeatDelay=function(t){return arguments.length?(this._repeatDelay=t,this._uncache(!0)):this._repeatDelay},n.yoyo=function(t){return arguments.length?(this._yoyo=t,this):this._yoyo},n.currentLabel=function(t){return arguments.length?this.seek(t,!0):this.getLabelBefore(this._time+C)},i},!0),P=180/Math.PI,T=[],w=[],b=[],g={},i=_gsScope._gsDefine.globals,m=_gsScope._gsDefine.plugin({propName:"bezier",priority:-1,version:"1.3.9",API:2,global:!0,init:function(t,e,i){this._target=t,e instanceof Array&&(e={values:e}),this._func={},this._mod={},this._props=[],this._timeRes=null==e.timeResolution?6:parseInt(e.timeResolution,10);var r,n,s,a,o,l=e.values||[],h={},u=l[0],_=e.autoRotate||i.vars.orientToBezier;for(r in this._autoRotate=_?_ instanceof Array?_:[["x","y","rotation",!0===_?0:Number(_)||0]]:null,u)this._props.push(r);for(s=this._props.length;-1<--s;)r=this._props[s],this._overwriteProps.push(r),n=this._func[r]="function"==typeof t[r],h[r]=n?t[r.indexOf("set")||"function"!=typeof t["get"+r.substr(3)]?r:"get"+r.substr(3)]():parseFloat(t[r]),o||h[r]!==l[0][r]&&(o=h);if(this._beziers="cubic"!==e.type&&"quadratic"!==e.type&&"soft"!==e.type?c(l,isNaN(e.curviness)?1:e.curviness,!1,"thruBasic"===e.type,e.correlate,o):function(t,e,i){var r,n,s,a,o,l,h,u,_,f,c,p={},d="cubic"===(e=e||"soft")?3:2,m="soft"===e,g=[];if(m&&i&&(t=[i].concat(t)),null==t||t.length<1+d)throw"invalid Bezier data";for(_ in t[0])g.push(_);for(l=g.length;-1<--l;){for(p[_=g[l]]=o=[],f=0,u=t.length,h=0;h<u;h++)r=null==i?t[h][_]:"string"==typeof(c=t[h][_])&&"="===c.charAt(1)?i[_]+Number(c.charAt(0)+c.substr(2)):Number(c),m&&1<h&&h<u-1&&(o[f++]=(r+o[f-2])/2),o[f++]=r;for(u=f-d+1,h=f=0;h<u;h+=d)r=o[h],n=o[h+1],s=o[h+2],a=2==d?0:o[h+3],o[f++]=c=3==d?new y(r,n,s,a):new y(r,(2*n+r)/3,(2*n+s)/3,s);o.length=f}return p}(l,e.type,h),this._segCount=this._beziers[r].length,this._timeRes){var f=function(t,e){var i,r,n,s,a=[],o=[],l=0,h=0,u=(e=e>>0||6)-1,_=[],f=[];for(i in t)p(t[i],a,e);for(n=a.length,r=0;r<n;r++)l+=Math.sqrt(a[r]),f[s=r%e]=l,s===u&&(h+=l,_[s=r/e>>0]=f,o[s]=h,l=0,f=[]);return{length:h,lengths:o,segments:_}}(this._beziers,this._timeRes);this._length=f.length,this._lengths=f.lengths,this._segments=f.segments,this._l1=this._li=this._s1=this._si=0,this._l2=this._lengths[0],this._curSeg=this._segments[0],this._s2=this._curSeg[0],this._prec=1/this._curSeg.length}if(_=this._autoRotate)for(this._initialRotations=[],_[0]instanceof Array||(this._autoRotate=_=[_]),s=_.length;-1<--s;){for(a=0;a<3;a++)r=_[s][a],this._func[r]="function"==typeof t[r]&&t[r.indexOf("set")||"function"!=typeof t["get"+r.substr(3)]?r:"get"+r.substr(3)];r=_[s][2],this._initialRotations[s]=(this._func[r]?this._func[r].call(this._target):this._target[r])||0,this._overwriteProps.push(r)}return this._startRatio=i.vars.runBackwards?1:0,!0},set:function(t){var e,i,r,n,s,a,o,l,h,u,_,f=this._segCount,c=this._func,p=this._target,d=t!==this._startRatio;if(this._timeRes){if(h=this._lengths,u=this._curSeg,_=t*this._length,r=this._li,_>this._l2&&r<f-1){for(l=f-1;r<l&&(this._l2=h[++r])<=_;);this._l1=h[r-1],this._li=r,this._curSeg=u=this._segments[r],this._s2=u[this._s1=this._si=0]}else if(_<this._l1&&0<r){for(;0<r&&(this._l1=h[--r])>=_;);0===r&&_<this._l1?this._l1=0:r++,this._l2=h[r],this._li=r,this._curSeg=u=this._segments[r],this._s1=u[(this._si=u.length-1)-1]||0,this._s2=u[this._si]}if(e=r,_-=this._l1,r=this._si,_>this._s2&&r<u.length-1){for(l=u.length-1;r<l&&(this._s2=u[++r])<=_;);this._s1=u[r-1],this._si=r}else if(_<this._s1&&0<r){for(;0<r&&(this._s1=u[--r])>=_;);0===r&&_<this._s1?this._s1=0:r++,this._s2=u[r],this._si=r}a=1===t?1:(r+(_-this._s1)/(this._s2-this._s1))*this._prec||0}else a=(t-(e=t<0?0:1<=t?f-1:f*t>>0)*(1/f))*f;for(i=1-a,r=this._props.length;-1<--r;)n=this._props[r],o=(a*a*(s=this._beziers[n][e]).da+3*i*(a*s.ca+i*s.ba))*a+s.a,this._mod[n]&&(o=this._mod[n](o,p)),c[n]?p[n](o):p[n]=o;if(this._autoRotate){var m,g,y,v,x,T,w,b=this._autoRotate;for(r=b.length;-1<--r;)n=b[r][2],T=b[r][3]||0,w=!0===b[r][4]?1:P,s=this._beziers[b[r][0]],m=this._beziers[b[r][1]],s&&m&&(s=s[e],m=m[e],g=s.a+(s.b-s.a)*a,g+=((v=s.b+(s.c-s.b)*a)-g)*a,v+=(s.c+(s.d-s.c)*a-v)*a,y=m.a+(m.b-m.a)*a,y+=((x=m.b+(m.c-m.b)*a)-y)*a,x+=(m.c+(m.d-m.c)*a-x)*a,o=d?Math.atan2(x-y,v-g)*w+T:this._initialRotations[r],this._mod[n]&&(o=this._mod[n](o,p)),c[n]?p[n](o):p[n]=o)}}}),r=m.prototype,m.bezierThrough=c,m.cubicToQuadratic=S,m._autoCSS=!0,m.quadraticToCubic=function(t,e,i){return new y(t,(2*e+t)/3,(2*e+i)/3,i)},m._cssRegister=function(){var t=i.CSSPlugin;if(t){var e=t._internals,c=e._parseToProxy,p=e._setPluginRatio,d=e.CSSPropTween;e._registerComplexSpecialProp("bezier",{parser:function(t,e,i,r,n,s){e instanceof Array&&(e={values:e}),s=new m;var a,o,l,h=e.values,u=h.length-1,_=[],f={};if(u<0)return n;for(a=0;a<=u;a++)l=c(t,h[a],r,n,s,u!==a),_[a]=l.end;for(o in e)f[o]=e[o];return f.values=_,(n=new d(t,"bezier",0,0,l.pt,2)).data=l,n.plugin=s,n.setRatio=p,0===f.autoRotate&&(f.autoRotate=!0),!f.autoRotate||f.autoRotate instanceof Array||(a=!0===f.autoRotate?0:Number(f.autoRotate),f.autoRotate=null!=l.end.left?[["left","top","rotation",a,!1]]:null!=l.end.x&&[["x","y","rotation",a,!1]]),f.autoRotate&&(r._transform||r._enableTransforms(!1),l.autoRotate=r._target._gsTransform,l.proxy.rotation=l.autoRotate.rotation||0,r._overwriteProps.push("rotation")),s._onInitTween(l.proxy,f,r._tween),n}})}},r._mod=function(t){for(var e,i=this._overwriteProps,r=i.length;-1<--r;)(e=t[i[r]])&&"function"==typeof e&&(this._mod[i[r]]=e)},r._kill=function(t){var e,i,r=this._props;for(e in this._beziers)if(e in t)for(delete this._beziers[e],delete this._func[e],i=r.length;-1<--i;)r[i]===e&&r.splice(i,1);if(r=this._autoRotate)for(i=r.length;-1<--i;)t[r[i][2]]&&r.splice(i,1);return this._super._kill.call(this,t)},_gsScope._gsDefine("plugins.CSSPlugin",["plugins.TweenPlugin","TweenLite"],function(s,X){var p,P,S,d,B=function(){s.call(this,"css"),this._overwriteProps.length=0,this.setRatio=B.prototype.setRatio},h=_gsScope._gsDefine.globals,m={},t=B.prototype=new s("css");(t.constructor=B).version="2.1.3",B.API=2,B.defaultTransformPerspective=0,B.defaultSkewType="compensated",B.defaultSmoothOrigin=!0,t="px",B.suffixMap={top:t,right:t,bottom:t,left:t,width:t,height:t,fontSize:t,padding:t,margin:t,perspective:t,lineHeight:""};function a(t,e){return e.toUpperCase()}function o(t,e){var i=it.createElementNS?it.createElementNS(e||"h"+"t"+"t"+"p"+":"+"/"+"/"+"www.w3.org/1999/xhtml",t):it.createElement(t);return i.style?i:it.createElement(t)}function l(t){return j.test("string"==typeof t?t:(t.currentStyle?t.currentStyle.filter:t.style.filter)||"")?parseFloat(RegExp.$1)/100:1}function g(t){_gsScope.console&&console.log(t)}function O(t,e){var i,r,n=(e=e||rt).style;if(void 0!==n[t])return t;for(t=t.charAt(0).toUpperCase()+t.substr(1),i=["O","Moz","ms","Ms","Webkit"],r=5;-1<--r&&void 0===n[i[r]+t];);return 0<=r?(lt="-"+(ht=3===r?"ms":i[r]).toLowerCase()+"-",ht+t):null}function y(t){return ut.getComputedStyle(t)}function v(t,e){var i,r,n,s={};if(e=e||y(t))if(i=e.length)for(;-1<--i;)-1!==(n=e[i]).indexOf("-transform")&&Xt!==n||(s[n.replace(V,a)]=e.getPropertyValue(n));else for(i in e)-1!==i.indexOf("Transform")&&jt!==i||(s[i]=e[i]);else if(e=t.currentStyle||t.style)for(i in e)"string"==typeof i&&void 0===s[i]&&(s[i.replace(V,a)]=e[i]);return ot||(s.opacity=l(t)),r=$t(t,e,!1),s.rotation=r.rotation,s.skewX=r.skewX,s.scaleX=r.scaleX,s.scaleY=r.scaleY,s.x=r.x,s.y=r.y,Yt&&(s.z=r.z,s.rotationX=r.rotationX,s.rotationY=r.rotationY,s.scaleZ=r.scaleZ),s.filters&&delete s.filters,s}function x(t,e,i,r,n){var s,a,o,l={},h=t.style;for(a in i)"cssText"!==a&&"length"!==a&&isNaN(a)&&(e[a]!==(s=i[a])||n&&n[a])&&-1===a.indexOf("Origin")&&("number"==typeof s||"string"==typeof s)&&(l[a]="auto"!==s||"left"!==a&&"top"!==a?""!==s&&"auto"!==s&&"none"!==s||"string"!=typeof e[a]||""===e[a].replace(u,"")?s:0:ct(t,a),void 0!==h[a]&&(o=new bt(h,a,h[a],o)));if(r)for(a in r)"className"!==a&&(l[a]=r[a]);return{difs:l,firstMPT:o}}function T(t,e,i){if("svg"===(t.nodeName+"").toLowerCase())return(i||y(t))[e]||0;if(t.getCTM&&Qt(t))return t.getBBox()[e]||0;var r=parseFloat("width"===e?t.offsetWidth:t.offsetHeight),n=pt[e],s=n.length;for(i=i||y(t);-1<--s;)r-=parseFloat(_t(t,"padding"+n[s],i,!0))||0,r-=parseFloat(_t(t,"border"+n[s]+"Width",i,!0))||0;return r}function k(t,e){return"function"==typeof t&&(t=t(L,F)),"string"==typeof t&&"="===t.charAt(1)?parseInt(t.charAt(0)+"1",10)*parseFloat(t.substr(2)):parseFloat(t)-parseFloat(e)||0}function C(t,e){"function"==typeof t&&(t=t(L,F));var i="string"==typeof t&&"="===t.charAt(1);return"string"==typeof t&&"v"===t.charAt(t.length-2)&&(t=(i?t.substr(0,2):0)+window["inner"+("vh"===t.substr(-2)?"Height":"Width")]*(parseFloat(i?t.substr(2):t)/100)),null==t?e:i?parseInt(t.charAt(0)+"1",10)*parseFloat(t.substr(2))+e:parseFloat(t)||0}function R(t,e,i,r){var n,s,a,o,l;return"function"==typeof t&&(t=t(L,F)),(o=null==t?e:"number"==typeof t?t:(n=360,s=t.split("_"),a=((l="="===t.charAt(1))?parseInt(t.charAt(0)+"1",10)*parseFloat(s[0].substr(2)):parseFloat(s[0]))*(-1===t.indexOf("rad")?1:J)-(l?0:e),s.length&&(r&&(r[i]=e+a),-1!==t.indexOf("short")&&((a%=n)!==a%180&&(a=a<0?a+n:a-n)),-1!==t.indexOf("_cw")&&a<0?a=(a+3599999999640)%n-(a/n|0)*n:-1!==t.indexOf("ccw")&&0<a&&(a=(a-3599999999640)%n-(a/n|0)*n)),e+a))<1e-6&&-1e-6<o&&(o=0),o}function c(t,e,i){return 255*(6*(t=t<0?t+1:1<t?t-1:t)<1?e+(i-e)*t*6:t<.5?i:3*t<2?e+(i-e)*(2/3-t)*6:e)+.5|0}function r(t,e){var i,r,n,s=t.match(vt)||[],a=0,o="";if(!s.length)return t;for(i=0;i<s.length;i++)r=s[i],a+=(n=t.substr(a,t.indexOf(r,a)-a)).length+r.length,3===(r=yt(r,e)).length&&r.push(1),o+=n+(e?"hsla("+r[0]+","+r[1]+"%,"+r[2]+"%,"+r[3]:"rgba("+r.join(","))+")";return o+t.substr(a)}var A,w,b,Y,M,D,F,L,e,i,z=/(?:\-|\.|\b)(\d|\.|e\-)+/g,E=/(?:\d|\-\d|\.\d|\-\.\d|\+=\d|\-=\d|\+=.\d|\-=\.\d)+/g,I=/(?:\+=|\-=|\-|\b)[\d\-\.]+[a-zA-Z0-9]*(?:%|\b)/gi,n=/(?:\+=|\-=|\-|\b)[\d\-\.]+[a-zA-Z0-9]*(?:%|\b),?/gi,u=/(?![+-]?\d*\.?\d+|[+-]|e[+-]\d+)[^0-9]/g,N=/(?:\d|\-|\+|=|#|\.)*/g,j=/opacity *= *([^)]*)/i,G=/opacity:([^;]*)/i,_=/alpha\(opacity *=.+?\)/i,U=/^(rgb|hsl)/,f=/([A-Z])/g,V=/-([a-z])/gi,q=/(^(?:url\(\"|url\())|(?:(\"\))$|\)$)/gi,W=/(?:Left|Right|Width)/i,Q=/(M11|M12|M21|M22)=[\d\-\.e]+/gi,H=/progid\:DXImageTransform\.Microsoft\.Matrix\(.+?\)/i,Z=/,(?=[^\)]*(?:\(|$))/gi,$=/[\s,\(]/i,K=Math.PI/180,J=180/Math.PI,tt={},et={style:{}},it=_gsScope.document||{createElement:function(){return et}},rt=o("div"),nt=o("img"),st=B._internals={_specialProps:m},at=(_gsScope.navigator||{}).userAgent||"",ot=(e=at.indexOf("Android"),i=o("a"),b=-1!==at.indexOf("Safari")&&-1===at.indexOf("Chrome")&&(-1===e||3<parseFloat(at.substr(e+8,2))),M=b&&parseFloat(at.substr(at.indexOf("Version/")+8,2))<6,Y=-1!==at.indexOf("Firefox"),(/MSIE ([0-9]{1,}[\.0-9]{0,})/.exec(at)||/Trident\/.*rv:([0-9]{1,}[\.0-9]{0,})/.exec(at))&&(D=parseFloat(RegExp.$1)),!!i&&(i.style.cssText="top:1px;opacity:.55;",/^0.55/.test(i.style.opacity))),lt="",ht="",ut="undefined"!=typeof window?window:it.defaultView||{getComputedStyle:function(){}},_t=B.getStyle=function(t,e,i,r,n){var s;return ot||"opacity"!==e?(!r&&t.style[e]?s=t.style[e]:(i=i||y(t))?s=i[e]||i.getPropertyValue(e)||i.getPropertyValue(e.replace(f,"-$1").toLowerCase()):t.currentStyle&&(s=t.currentStyle[e]),null==n||s&&"none"!==s&&"auto"!==s&&"auto auto"!==s?s:n):l(t)},ft=st.convertToPixels=function(t,e,i,r,n){if("px"===r||!r&&"lineHeight"!==e)return i;if("auto"===r||!i)return 0;var s,a,o,l=W.test(e),h=t,u=rt.style,_=i<0,f=1===i;if(_&&(i=-i),f&&(i*=100),"lineHeight"!==e||r)if("%"===r&&-1!==e.indexOf("border"))s=i/100*(l?t.clientWidth:t.clientHeight);else{if(u.cssText="border:0 solid red;position:"+_t(t,"position")+";line-height:0;","%"!==r&&h.appendChild&&"v"!==r.charAt(0)&&"rem"!==r)u[l?"borderLeftWidth":"borderTopWidth"]=i+r;else{if(h=t.parentNode||it.body,-1!==_t(h,"display").indexOf("flex")&&(u.position="absolute"),a=h._gsCache,o=X.ticker.frame,a&&l&&a.time===o)return a.width*i/100;u[l?"width":"height"]=i+r}h.appendChild(rt),s=parseFloat(rt[l?"offsetWidth":"offsetHeight"]),h.removeChild(rt),l&&"%"===r&&!1!==B.cacheWidths&&((a=h._gsCache=h._gsCache||{}).time=o,a.width=s/i*100),0!==s||n||(s=ft(t,e,i,r,!0))}else a=y(t).lineHeight,t.style.lineHeight=i,s=parseFloat(y(t).lineHeight),t.style.lineHeight=a;return f&&(s/=100),_?-s:s},ct=st.calculateOffset=function(t,e,i){if("absolute"!==_t(t,"position",i))return 0;var r="left"===e?"Left":"Top",n=_t(t,"margin"+r,i);return t["offset"+r]-(ft(t,e,parseFloat(n),n.replace(N,""))||0)},pt={width:["Left","Right"],height:["Top","Bottom"]},dt=["marginLeft","marginRight","marginTop","marginBottom"],mt=function(t,e){if("contain"===t||"auto"===t||"auto auto"===t)return t+" ";null!=t&&""!==t||(t="0 0");var i,r=t.split(" "),n=-1!==t.indexOf("left")?"0%":-1!==t.indexOf("right")?"100%":r[0],s=-1!==t.indexOf("top")?"0%":-1!==t.indexOf("bottom")?"100%":r[1];if(3<r.length&&!e){for(r=t.split(", ").join(",").split(","),t=[],i=0;i<r.length;i++)t.push(mt(r[i]));return t.join(",")}return null==s?s="center"===n?"50%":"0":"center"===s&&(s="50%"),("center"===n||isNaN(parseFloat(n))&&-1===(n+"").indexOf("="))&&(n="50%"),t=n+" "+s+(2<r.length?" "+r[2]:""),e&&(e.oxp=-1!==n.indexOf("%"),e.oyp=-1!==s.indexOf("%"),e.oxr="="===n.charAt(1),e.oyr="="===s.charAt(1),e.ox=parseFloat(n.replace(u,"")),e.oy=parseFloat(s.replace(u,"")),e.v=t),e||t},gt={aqua:[0,255,255],lime:[0,255,0],silver:[192,192,192],black:[0,0,0],maroon:[128,0,0],teal:[0,128,128],blue:[0,0,255],navy:[0,0,128],white:[255,255,255],fuchsia:[255,0,255],olive:[128,128,0],yellow:[255,255,0],orange:[255,165,0],gray:[128,128,128],purple:[128,0,128],green:[0,128,0],red:[255,0,0],pink:[255,192,203],cyan:[0,255,255],transparent:[255,255,255,0]},yt=B.parseColor=function(t,e){var i,r,n,s,a,o,l,h,u,_,f;if(t)if("number"==typeof t)i=[t>>16,t>>8&255,255&t];else{if(","===t.charAt(t.length-1)&&(t=t.substr(0,t.length-1)),gt[t])i=gt[t];else if("#"===t.charAt(0))4===t.length&&(t="#"+(r=t.charAt(1))+r+(n=t.charAt(2))+n+(s=t.charAt(3))+s),i=[(t=parseInt(t.substr(1),16))>>16,t>>8&255,255&t];else if("hsl"===t.substr(0,3))if(i=f=t.match(z),e){if(-1!==t.indexOf("="))return t.match(E)}else a=Number(i[0])%360/360,o=Number(i[1])/100,r=2*(l=Number(i[2])/100)-(n=l<=.5?l*(o+1):l+o-l*o),3<i.length&&(i[3]=Number(i[3])),i[0]=c(a+1/3,r,n),i[1]=c(a,r,n),i[2]=c(a-1/3,r,n);else i=t.match(z)||gt.transparent;i[0]=Number(i[0]),i[1]=Number(i[1]),i[2]=Number(i[2]),3<i.length&&(i[3]=Number(i[3]))}else i=gt.black;return e&&!f&&(r=i[0]/255,n=i[1]/255,s=i[2]/255,l=((h=Math.max(r,n,s))+(u=Math.min(r,n,s)))/2,h===u?a=o=0:(_=h-u,o=.5<l?_/(2-h-u):_/(h+u),a=h===r?(n-s)/_+(n<s?6:0):h===n?(s-r)/_+2:(r-n)/_+4,a*=60),i[0]=a+.5|0,i[1]=100*o+.5|0,i[2]=100*l+.5|0),i},vt="(?:\\b(?:(?:rgb|rgba|hsl|hsla)\\(.+?\\))|\\B#(?:[0-9a-f]{3}){1,2}\\b";for(t in gt)vt+="|"+t+"\\b";vt=new RegExp(vt+")","gi"),B.colorStringFilter=function(t){var e,i=t[0]+" "+t[1];vt.test(i)&&(e=-1!==i.indexOf("hsl(")||-1!==i.indexOf("hsla("),t[0]=r(t[0],e),t[1]=r(t[1],e)),vt.lastIndex=0},X.defaultStringFilter||(X.defaultStringFilter=B.colorStringFilter);function xt(t,e,s,a){if(null==t)return function(t){return t};var o,l=e?(t.match(vt)||[""])[0]:"",h=t.split(l).join("").match(I)||[],u=t.substr(0,t.indexOf(h[0])),_=")"===t.charAt(t.length-1)?")":"",f=-1!==t.indexOf(" ")?" ":",",c=h.length,p=0<c?h[0].replace(z,""):"";return c?o=e?function(t){var e,i,r,n;if("number"==typeof t)t+=p;else if(a&&Z.test(t)){for(n=t.replace(Z,"|").split("|"),r=0;r<n.length;r++)n[r]=o(n[r]);return n.join(",")}if(e=(t.match(vt)||[l])[0],r=(i=t.split(e).join("").match(I)||[]).length,c>r--)for(;++r<c;)i[r]=s?i[(r-1)/2|0]:h[r];return u+i.join(f)+f+e+_+(-1!==t.indexOf("inset")?" inset":"")}:function(t){var e,i,r;if("number"==typeof t)t+=p;else if(a&&Z.test(t)){for(i=t.replace(Z,"|").split("|"),r=0;r<i.length;r++)i[r]=o(i[r]);return i.join(",")}if(r=(e=t.match(","==f?I:n)||[]).length,c>r--)for(;++r<c;)e[r]=s?e[(r-1)/2|0]:h[r];return(u&&"none"!==t&&t.substr(0,t.indexOf(e[0]))||u)+e.join(f)+_}:function(t){return t}}function Tt(h){return h=h.split(","),function(t,e,i,r,n,s,a){var o,l=(e+"").split(" ");for(a={},o=0;o<4;o++)a[h[o]]=l[o]=l[o]||l[(o-1)/2>>0];return r.parse(t,a,n,s)}}function wt(t,e,i,r,n,s){var a=new Pt(t,e,i,r-i,n,-1,s);return a.b=i,a.e=a.xs0=r,a}var bt=(st._setPluginRatio=function(t){this.plugin.setRatio(t);for(var e,i,r,n,s,a=this.data,o=a.proxy,l=a.firstMPT;l;)e=o[l.v],l.r?e=l.r(e):e<1e-6&&-1e-6<e&&(e=0),l.t[l.p]=e,l=l._next;if(a.autoRotate&&(a.autoRotate.rotation=a.mod?a.mod.call(this._tween,o.rotation,this.t,this._tween):o.rotation),1===t||0===t)for(l=a.firstMPT,s=1===t?"e":"b";l;){if((i=l.t).type){if(1===i.type){for(n=i.xs0+i.s+i.xs1,r=1;r<i.l;r++)n+=i["xn"+r]+i["xs"+(r+1)];i[s]=n}}else i[s]=i.s+i.xs0;l=l._next}},function(t,e,i,r,n){this.t=t,this.p=e,this.v=i,this.r=n,r&&((r._prev=this)._next=r)}),Pt=(st._parseToProxy=function(t,e,i,r,n,s){var a,o,l,h,u,_=r,f={},c={},p=i._transform,d=tt;for(i._transform=null,tt=e,r=u=i.parse(t,e,r,n),tt=d,s&&(i._transform=p,_&&(_._prev=null,_._prev&&(_._prev._next=null)));r&&r!==_;){if(r.type<=1&&(c[o=r.p]=r.s+r.c,f[o]=r.s,s||(h=new bt(r,"s",o,h,r.r),r.c=0),1===r.type))for(a=r.l;0<--a;)l="xn"+a,c[o=r.p+"_"+l]=r.data[l],f[o]=r[l],s||(h=new bt(r,l,o,h,r.rxp[l]));r=r._next}return{proxy:f,end:c,firstMPT:h,pt:u}},st.CSSPropTween=function(t,e,i,r,n,s,a,o,l,h,u){this.t=t,this.p=e,this.s=i,this.c=r,this.n=a||e,t instanceof Pt||d.push(this.n),this.r=o?"function"==typeof o?o:Math.round:o,this.type=s||0,l&&(this.pr=l,p=!0),this.b=void 0===h?i:h,this.e=void 0===u?i+r:u,n&&((this._next=n)._prev=this)}),St=B.parseComplex=function(t,e,i,r,n,s,a,o,l,h){i=i||s||"","function"==typeof r&&(r=r(L,F)),a=new Pt(t,e,0,0,a,h?2:1,null,!1,o,i,r),r+="",n&&vt.test(r+i)&&(r=[i,r],B.colorStringFilter(r),i=r[0],r=r[1]);var u,_,f,c,p,d,m,g,y,v,x,T,w,b=i.split(", ").join(",").split(" "),P=r.split(", ").join(",").split(" "),S=b.length,O=!1!==A;for(-1===r.indexOf(",")&&-1===i.indexOf(",")||(P=-1!==(r+i).indexOf("rgb")||-1!==(r+i).indexOf("hsl")?(b=b.join(" ").replace(Z,", ").split(" "),P.join(" ").replace(Z,", ").split(" ")):(b=b.join(" ").split(",").join(", ").split(" "),P.join(" ").split(",").join(", ").split(" ")),S=b.length),S!==P.length&&(S=(b=(s||"").split(" ")).length),a.plugin=l,a.setRatio=h,u=vt.lastIndex=0;u<S;u++)if(c=b[u],p=P[u]+"",(g=parseFloat(c))||0===g)a.appendXtra("",g,k(p,g),p.replace(E,""),O&&-1!==p.indexOf("px")&&Math.round,!0);else if(n&&vt.test(c))T=")"+((T=p.indexOf(")")+1)?p.substr(T):""),w=-1!==p.indexOf("hsl")&&ot,v=p,c=yt(c,w),p=yt(p,w),(y=6<c.length+p.length)&&!ot&&0===p[3]?(a["xs"+a.l]+=a.l?" transparent":"transparent",a.e=a.e.split(P[u]).join("transparent")):(ot||(y=!1),w?a.appendXtra(v.substr(0,v.indexOf("hsl"))+(y?"hsla(":"hsl("),c[0],k(p[0],c[0]),",",!1,!0).appendXtra("",c[1],k(p[1],c[1]),"%,",!1).appendXtra("",c[2],k(p[2],c[2]),y?"%,":"%"+T,!1):a.appendXtra(v.substr(0,v.indexOf("rgb"))+(y?"rgba(":"rgb("),c[0],p[0]-c[0],",",Math.round,!0).appendXtra("",c[1],p[1]-c[1],",",Math.round).appendXtra("",c[2],p[2]-c[2],y?",":T,Math.round),y&&(c=c.length<4?1:c[3],a.appendXtra("",c,(p.length<4?1:p[3])-c,T,!1))),vt.lastIndex=0;else if(d=c.match(z)){if(!(m=p.match(E))||m.length!==d.length)return a;for(_=f=0;_<d.length;_++)x=d[_],v=c.indexOf(x,f),a.appendXtra(c.substr(f,v-f),Number(x),k(m[_],x),"",O&&"px"===c.substr(v+x.length,2)&&Math.round,0===_),f=v+x.length;a["xs"+a.l]+=c.substr(f)}else a["xs"+a.l]+=a.l||a["xs"+a.l]?" "+p:p;if(-1!==r.indexOf("=")&&a.data){for(T=a.xs0+a.data.s,u=1;u<a.l;u++)T+=a["xs"+u]+a.data["xn"+u];a.e=T+a["xs"+u]}return a.l||(a.type=-1,a.xs0=a.e),a.xfirst||a},Ot=9;for((t=Pt.prototype).l=t.pr=0;0<--Ot;)t["xn"+Ot]=0,t["xs"+Ot]="";t.xs0="",t._next=t._prev=t.xfirst=t.data=t.plugin=t.setRatio=t.rxp=null,t.appendXtra=function(t,e,i,r,n,s){var a=this,o=a.l;return a["xs"+o]+=s&&(o||a["xs"+o])?" "+t:t||"",i||0===o||a.plugin?(a.l++,a.type=a.setRatio?2:1,a["xs"+a.l]=r||"",0<o?(a.data["xn"+o]=e+i,a.rxp["xn"+o]=n,a["xn"+o]=e,a.plugin||(a.xfirst=new Pt(a,"xn"+o,e,i,a.xfirst||a,0,a.n,n,a.pr),a.xfirst.xs0=0)):(a.data={s:e+i},a.rxp={},a.s=e,a.c=i,a.r=n)):a["xs"+o]+=e+(r||""),a};function kt(t,e){e=e||{},this.p=e.prefix&&O(t)||t,m[t]=m[this.p]=this,this.format=e.formatter||xt(e.defaultValue,e.color,e.collapsible,e.multi),e.parser&&(this.parse=e.parser),this.clrs=e.color,this.multi=e.multi,this.keyword=e.keyword,this.dflt=e.defaultValue,this.allowFunc=e.allowFunc,this.pr=e.priority||0}var Ct=st._registerComplexSpecialProp=function(t,e,i){"object"!=typeof e&&(e={parser:i});var r,n=t.split(","),s=e.defaultValue;for(i=i||[s],r=0;r<n.length;r++)e.prefix=0===r&&e.prefix,e.defaultValue=i[r]||s,new kt(n[r],e)},Rt=st._registerPluginProp=function(t){if(!m[t]){var l=t.charAt(0).toUpperCase()+t.substr(1)+"Plugin";Ct(t,{parser:function(t,e,i,r,n,s,a){var o=h.com.greensock.plugins[l];return o?(o._cssRegister(),m[i].parse(t,e,i,r,n,s,a)):(g("Error: "+l+" js file not loaded."),n)}})}};(t=kt.prototype).parseComplex=function(t,e,i,r,n,s){var a,o,l,h,u,_,f=this.keyword;if(this.multi&&(Z.test(i)||Z.test(e)?(o=e.replace(Z,"|").split("|"),l=i.replace(Z,"|").split("|")):f&&(o=[e],l=[i])),l){for(h=l.length>o.length?l.length:o.length,a=0;a<h;a++)e=o[a]=o[a]||this.dflt,i=l[a]=l[a]||this.dflt,f&&((u=e.indexOf(f))!==(_=i.indexOf(f))&&(-1===_?o[a]=o[a].split(f).join(""):-1===u&&(o[a]+=" "+f)));e=o.join(", "),i=l.join(", ")}return St(t,this.p,e,i,this.clrs,this.dflt,r,this.pr,n,s)},t.parse=function(t,e,i,r,n,s,a){return this.parseComplex(t.style,this.format(_t(t,this.p,S,!1,this.dflt)),this.format(e),n,s)},B.registerSpecialProp=function(t,l,h){Ct(t,{parser:function(t,e,i,r,n,s,a){var o=new Pt(t,i,0,0,n,2,i,!1,h);return o.plugin=s,o.setRatio=l(t,e,r._tween,i),o},priority:h})},B.useSVGTransformAttr=!0;function At(t,e,i){var r,n=it.createElementNS("h"+"t"+"t"+"p"+":"+"/"+"/"+"www.w3.org/2000/svg",t),s=/([a-z])([A-Z])/g;for(r in i)n.setAttributeNS(null,r.replace(s,"$1-$2").toLowerCase(),i[r]);return e.appendChild(n),n}function Mt(t,e,i,r,n,s){var a,o,l,h,u,_,f,c,p,d,m,g,y,v,x=t._gsTransform,T=Zt(t,!0);x&&(y=x.xOrigin,v=x.yOrigin),(!r||(a=r.split(" ")).length<2)&&(0===(f=t.getBBox()).x&&0===f.y&&f.width+f.height===0&&(f={x:parseFloat(t.hasAttribute("x")?t.getAttribute("x"):t.hasAttribute("cx")?t.getAttribute("cx"):0)||0,y:parseFloat(t.hasAttribute("y")?t.getAttribute("y"):t.hasAttribute("cy")?t.getAttribute("cy"):0)||0,width:0,height:0}),a=[(-1!==(e=mt(e).split(" "))[0].indexOf("%")?parseFloat(e[0])/100*f.width:parseFloat(e[0]))+f.x,(-1!==e[1].indexOf("%")?parseFloat(e[1])/100*f.height:parseFloat(e[1]))+f.y]),i.xOrigin=h=parseFloat(a[0]),i.yOrigin=u=parseFloat(a[1]),r&&T!==Ht&&(_=T[0],f=T[1],c=T[2],p=T[3],d=T[4],m=T[5],(g=_*p-f*c)&&(o=h*(p/g)+u*(-c/g)+(c*m-p*d)/g,l=h*(-f/g)+u*(_/g)-(_*m-f*d)/g,h=i.xOrigin=a[0]=o,u=i.yOrigin=a[1]=l)),x&&(s&&(i.xOffset=x.xOffset,i.yOffset=x.yOffset,x=i),n||!1!==n&&!1!==B.defaultSmoothOrigin?(o=h-y,l=u-v,x.xOffset+=o*T[0]+l*T[2]-o,x.yOffset+=o*T[1]+l*T[3]-l):x.xOffset=x.yOffset=0),s||t.setAttribute("data-svg-origin",a.join(" "))}function Dt(t){var e,i,r=this.data,n=-r.rotation*K,s=n+r.skewX*K,a=1e5,o=(Math.cos(n)*r.scaleX*a|0)/a,l=(Math.sin(n)*r.scaleX*a|0)/a,h=(Math.sin(s)*-r.scaleY*a|0)/a,u=(Math.cos(s)*r.scaleY*a|0)/a,_=this.t.style,f=this.t.currentStyle;if(f){i=l,l=-h,h=-i,e=f.filter,_.filter="";var c,p,d=this.t.offsetWidth,m=this.t.offsetHeight,g="absolute"!==f.position,y="progid:DXImageTransform.Microsoft.Matrix(M11="+o+", M12="+l+", M21="+h+", M22="+u,v=r.x+d*r.xPercent/100,x=r.y+m*r.yPercent/100;if(null!=r.ox&&(v+=(c=(r.oxp?d*r.ox*.01:r.ox)-d/2)-(c*o+(p=(r.oyp?m*r.oy*.01:r.oy)-m/2)*l),x+=p-(c*h+p*u)),g?y+=", Dx="+((c=d/2)-(c*o+(p=m/2)*l)+v)+", Dy="+(p-(c*h+p*u)+x)+")":y+=", sizingMethod='auto expand')",-1!==e.indexOf("DXImageTransform.Microsoft.Matrix(")?_.filter=e.replace(H,y):_.filter=y+" "+e,0!==t&&1!==t||1!=o||0!==l||0!==h||1!=u||(g&&-1===y.indexOf("Dx=0, Dy=0")||j.test(e)&&100!==parseFloat(RegExp.$1)||-1===e.indexOf(e.indexOf("Alpha"))&&_.removeAttribute("filter")),!g){var T,w,b,P=D<8?1:-1;for(c=r.ieOffsetX||0,p=r.ieOffsetY||0,r.ieOffsetX=Math.round((d-((o<0?-o:o)*d+(l<0?-l:l)*m))/2+v),r.ieOffsetY=Math.round((m-((u<0?-u:u)*m+(h<0?-h:h)*d))/2+x),Ot=0;Ot<4;Ot++)b=(i=-1!==(T=f[w=dt[Ot]]).indexOf("px")?parseFloat(T):ft(this.t,w,parseFloat(T),T.replace(N,""))||0)!==r[w]?Ot<2?-r.ieOffsetX:-r.ieOffsetY:Ot<2?c-r.ieOffsetX:p-r.ieOffsetY,_[w]=(r[w]=Math.round(i-b*(0===Ot||2===Ot?1:P)))+"px"}}}var Ft,Lt,zt,Et,It,Nt="scaleX,scaleY,scaleZ,x,y,z,skewX,skewY,rotation,rotationX,rotationY,perspective,xPercent,yPercent".split(","),jt=O("transform"),Xt=lt+"transform",Bt=O("transformOrigin"),Yt=null!==O("perspective"),Gt=st.Transform=function(){this.perspective=parseFloat(B.defaultTransformPerspective)||0,this.force3D=!(!1===B.defaultForce3D||!Yt)&&(B.defaultForce3D||"auto")},Ut=_gsScope.SVGElement,Vt=it.documentElement||{},qt=(It=D||/Android/i.test(at)&&!_gsScope.chrome,it.createElementNS&&Vt.appendChild&&!It&&(Lt=At("svg",Vt),Et=(zt=At("rect",Lt,{width:100,height:50,x:100})).getBoundingClientRect().width,zt.style[Bt]="50% 50%",zt.style[jt]="scaleX(0.5)",It=Et===zt.getBoundingClientRect().width&&!(Y&&Yt),Vt.removeChild(Lt)),It),Wt=function(t){var e,i=o("svg",this.ownerSVGElement&&this.ownerSVGElement.getAttribute("xmlns")||"h"+"t"+"t"+"p"+":"+"/"+"/"+"www.w3.org/2000/svg"),r=this.parentNode,n=this.nextSibling,s=this.style.cssText;if(Vt.appendChild(i),i.appendChild(this),this.style.display="block",t)try{e=this.getBBox(),this._originalGetBBox=this.getBBox,this.getBBox=Wt}catch(t){}else this._originalGetBBox&&(e=this._originalGetBBox());return n?r.insertBefore(this,n):r.appendChild(this),Vt.removeChild(i),this.style.cssText=s,e},Qt=function(t){return!(!Ut||!t.getCTM||t.parentNode&&!t.ownerSVGElement||!function(e){try{return e.getBBox()}catch(t){return Wt.call(e,!0)}}(t))},Ht=[1,0,0,1,0,0],Zt=function(t,e){var i,r,n,s,a,o,l,h=t._gsTransform||new Gt,u=t.style;if(jt?r=_t(t,Xt,null,!0):t.currentStyle&&(r=(r=t.currentStyle.filter.match(Q))&&4===r.length?[r[0].substr(4),Number(r[2].substr(4)),Number(r[1].substr(4)),r[3].substr(4),h.x||0,h.y||0].join(","):""),i=!r||"none"===r||"matrix(1, 0, 0, 1, 0, 0)"===r,jt&&i&&!t.offsetParent&&t!==Vt&&(s=u.display,u.display="block",(l=t.parentNode)&&t.offsetParent||(a=1,o=t.nextSibling,Vt.appendChild(t)),i=!(r=_t(t,Xt,null,!0))||"none"===r||"matrix(1, 0, 0, 1, 0, 0)"===r,s?u.display=s:ee(u,"display"),a&&(o?l.insertBefore(t,o):l?l.appendChild(t):Vt.removeChild(t))),(h.svg||t.getCTM&&Qt(t))&&(i&&-1!==(u[jt]+"").indexOf("matrix")&&(r=u[jt],i=0),n=t.getAttribute("transform"),i&&n&&(r="matrix("+(n=t.transform.baseVal.consolidate().matrix).a+","+n.b+","+n.c+","+n.d+","+n.e+","+n.f+")",i=0)),i)return Ht;for(n=(r||"").match(z)||[],Ot=n.length;-1<--Ot;)s=Number(n[Ot]),n[Ot]=(a=s-(s|=0))?(1e5*a+(a<0?-.5:.5)|0)/1e5+s:s;return e&&6<n.length?[n[0],n[1],n[4],n[5],n[12],n[13]]:n},$t=st.getTransform=function(t,e,i,r){if(t._gsTransform&&i&&!r)return t._gsTransform;var n,s,a,o,l,h,u=i&&t._gsTransform||new Gt,_=u.scaleX<0,f=Yt&&(parseFloat(_t(t,Bt,e,!1,"0 0 0").split(" ")[2])||u.zOrigin)||0,c=parseFloat(B.defaultTransformPerspective)||0;if(u.svg=!(!t.getCTM||!Qt(t)),u.svg&&(Mt(t,_t(t,Bt,e,!1,"50% 50%")+"",u,t.getAttribute("data-svg-origin")),Ft=B.useSVGTransformAttr||qt),(n=Zt(t))!==Ht){if(16===n.length){var p,d,m,g,y,v=n[0],x=n[1],T=n[2],w=n[3],b=n[4],P=n[5],S=n[6],O=n[7],k=n[8],C=n[9],R=n[10],A=n[12],M=n[13],D=n[14],F=n[11],L=Math.atan2(S,R);u.zOrigin&&(A=k*(D=-u.zOrigin)-n[12],M=C*D-n[13],D=R*D+u.zOrigin-n[14]),u.rotationX=L*J,L&&(p=b*(g=Math.cos(-L))+k*(y=Math.sin(-L)),d=P*g+C*y,m=S*g+R*y,k=b*-y+k*g,C=P*-y+C*g,R=S*-y+R*g,F=O*-y+F*g,b=p,P=d,S=m),L=Math.atan2(-T,R),u.rotationY=L*J,L&&(d=x*(g=Math.cos(-L))-C*(y=Math.sin(-L)),m=T*g-R*y,C=x*y+C*g,R=T*y+R*g,F=w*y+F*g,v=p=v*g-k*y,x=d,T=m),L=Math.atan2(x,v),u.rotation=L*J,L&&(p=v*(g=Math.cos(L))+x*(y=Math.sin(L)),d=b*g+P*y,m=k*g+C*y,x=x*g-v*y,P=P*g-b*y,C=C*g-k*y,v=p,b=d,k=m),u.rotationX&&359.9<Math.abs(u.rotationX)+Math.abs(u.rotation)&&(u.rotationX=u.rotation=0,u.rotationY=180-u.rotationY),L=Math.atan2(b,P),u.scaleX=(1e5*Math.sqrt(v*v+x*x+T*T)+.5|0)/1e5,u.scaleY=(1e5*Math.sqrt(P*P+S*S)+.5|0)/1e5,u.scaleZ=(1e5*Math.sqrt(k*k+C*C+R*R)+.5|0)/1e5,v/=u.scaleX,b/=u.scaleY,x/=u.scaleX,P/=u.scaleY,2e-5<Math.abs(L)?(u.skewX=L*J,b=0,"simple"!==u.skewType&&(u.scaleY*=1/Math.cos(L))):u.skewX=0,u.perspective=F?1/(F<0?-F:F):0,u.x=A,u.y=M,u.z=D,u.svg&&(u.x-=u.xOrigin-(u.xOrigin*v-u.yOrigin*b),u.y-=u.yOrigin-(u.yOrigin*x-u.xOrigin*P))}else if(!Yt||r||!n.length||u.x!==n[4]||u.y!==n[5]||!u.rotationX&&!u.rotationY){var z=6<=n.length,E=z?n[0]:1,I=n[1]||0,N=n[2]||0,j=z?n[3]:1;u.x=n[4]||0,u.y=n[5]||0,a=Math.sqrt(E*E+I*I),o=Math.sqrt(j*j+N*N),l=E||I?Math.atan2(I,E)*J:u.rotation||0,h=N||j?Math.atan2(N,j)*J+l:u.skewX||0,u.scaleX=a,u.scaleY=o,u.rotation=l,u.skewX=h,Yt&&(u.rotationX=u.rotationY=u.z=0,u.perspective=c,u.scaleZ=1),u.svg&&(u.x-=u.xOrigin-(u.xOrigin*E+u.yOrigin*N),u.y-=u.yOrigin-(u.xOrigin*I+u.yOrigin*j))}for(s in 90<Math.abs(u.skewX)&&Math.abs(u.skewX)<270&&(_?(u.scaleX*=-1,u.skewX+=u.rotation<=0?180:-180,u.rotation+=u.rotation<=0?180:-180):(u.scaleY*=-1,u.skewX+=u.skewX<=0?180:-180)),u.zOrigin=f,u)u[s]<2e-5&&-2e-5<u[s]&&(u[s]=0)}return i&&((t._gsTransform=u).svg&&(Ft&&t.style[jt]?X.delayedCall(.001,function(){ee(t.style,jt)}):!Ft&&t.getAttribute("transform")&&X.delayedCall(.001,function(){t.removeAttribute("transform")}))),u},Kt=st.set3DTransformRatio=st.setTransformRatio=function(t){var e,i,r,n,s,a,o,l,h,u,_,f,c,p,d,m,g,y,v,x,T,w,b,P=this.data,S=this.t.style,O=P.rotation,k=P.rotationX,C=P.rotationY,R=P.scaleX,A=P.scaleY,M=P.scaleZ,D=P.x,F=P.y,L=P.z,z=P.svg,E=P.perspective,I=P.force3D,N=P.skewY,j=P.skewX;if(N&&(j+=N,O+=N),!((1!==t&&0!==t||"auto"!==I||this.tween._totalTime!==this.tween._totalDuration&&this.tween._totalTime)&&I||L||E||C||k||1!==M)||Ft&&z||!Yt)O||j||z?(O*=K,w=j*K,b=1e5,i=Math.cos(O)*R,s=Math.sin(O)*R,r=Math.sin(O-w)*-A,a=Math.cos(O-w)*A,w&&"simple"===P.skewType&&(e=Math.tan(w-N*K),r*=e=Math.sqrt(1+e*e),a*=e,N&&(e=Math.tan(N*K),i*=e=Math.sqrt(1+e*e),s*=e)),z&&(D+=P.xOrigin-(P.xOrigin*i+P.yOrigin*r)+P.xOffset,F+=P.yOrigin-(P.xOrigin*s+P.yOrigin*a)+P.yOffset,Ft&&(P.xPercent||P.yPercent)&&(d=this.t.getBBox(),D+=.01*P.xPercent*d.width,F+=.01*P.yPercent*d.height),D<(d=1e-6)&&-d<D&&(D=0),F<d&&-d<F&&(F=0)),v=(i*b|0)/b+","+(s*b|0)/b+","+(r*b|0)/b+","+(a*b|0)/b+","+D+","+F+")",z&&Ft?this.t.setAttribute("transform","matrix("+v):S[jt]=(P.xPercent||P.yPercent?"translate("+P.xPercent+"%,"+P.yPercent+"%) matrix(":"matrix(")+v):S[jt]=(P.xPercent||P.yPercent?"translate("+P.xPercent+"%,"+P.yPercent+"%) matrix(":"matrix(")+R+",0,0,"+A+","+D+","+F+")";else{if(Y&&(R<(d=1e-4)&&-d<R&&(R=M=2e-5),A<d&&-d<A&&(A=M=2e-5),!E||P.z||P.rotationX||P.rotationY||(E=0)),O||j)O*=K,m=i=Math.cos(O),g=s=Math.sin(O),j&&(O-=j*K,m=Math.cos(O),g=Math.sin(O),"simple"===P.skewType&&(e=Math.tan((j-N)*K),m*=e=Math.sqrt(1+e*e),g*=e,P.skewY&&(e=Math.tan(N*K),i*=e=Math.sqrt(1+e*e),s*=e))),r=-g,a=m;else{if(!(C||k||1!==M||E||z))return void(S[jt]=(P.xPercent||P.yPercent?"translate("+P.xPercent+"%,"+P.yPercent+"%) translate3d(":"translate3d(")+D+"px,"+F+"px,"+L+"px)"+(1!==R||1!==A?" scale("+R+","+A+")":""));i=a=1,r=s=0}u=1,n=o=l=h=_=f=0,c=E?-1/E:0,p=P.zOrigin,d=1e-6,x=",",T="0",(O=C*K)&&(m=Math.cos(O),_=c*(l=-(g=Math.sin(O))),n=i*g,o=s*g,c*=u=m,i*=m,s*=m),(O=k*K)&&(e=r*(m=Math.cos(O))+n*(g=Math.sin(O)),y=a*m+o*g,h=u*g,f=c*g,n=r*-g+n*m,o=a*-g+o*m,u*=m,c*=m,r=e,a=y),1!==M&&(n*=M,o*=M,u*=M,c*=M),1!==A&&(r*=A,a*=A,h*=A,f*=A),1!==R&&(i*=R,s*=R,l*=R,_*=R),(p||z)&&(p&&(D+=n*-p,F+=o*-p,L+=u*-p+p),z&&(D+=P.xOrigin-(P.xOrigin*i+P.yOrigin*r)+P.xOffset,F+=P.yOrigin-(P.xOrigin*s+P.yOrigin*a)+P.yOffset),D<d&&-d<D&&(D=T),F<d&&-d<F&&(F=T),L<d&&-d<L&&(L=0)),v=P.xPercent||P.yPercent?"translate("+P.xPercent+"%,"+P.yPercent+"%) matrix3d(":"matrix3d(",v+=(i<d&&-d<i?T:i)+x+(s<d&&-d<s?T:s)+x+(l<d&&-d<l?T:l),v+=x+(_<d&&-d<_?T:_)+x+(r<d&&-d<r?T:r)+x+(a<d&&-d<a?T:a),k||C||1!==M?(v+=x+(h<d&&-d<h?T:h)+x+(f<d&&-d<f?T:f)+x+(n<d&&-d<n?T:n),v+=x+(o<d&&-d<o?T:o)+x+(u<d&&-d<u?T:u)+x+(c<d&&-d<c?T:c)+x):v+=",0,0,0,0,1,0,",v+=D+x+F+x+L+x+(E?1+-L/E:1)+")",S[jt]=v}};(t=Gt.prototype).x=t.y=t.z=t.skewX=t.skewY=t.rotation=t.rotationX=t.rotationY=t.zOrigin=t.xPercent=t.yPercent=t.xOffset=t.yOffset=0,t.scaleX=t.scaleY=t.scaleZ=1,Ct("transform,scale,scaleX,scaleY,scaleZ,x,y,z,rotation,rotationX,rotationY,rotationZ,skewX,skewY,shortRotation,shortRotationX,shortRotationY,shortRotationZ,transformOrigin,svgOrigin,transformPerspective,directionalRotation,parseTransform,force3D,skewType,xPercent,yPercent,smoothOrigin",{parser:function(t,e,i,r,n,s,a){if(r._lastParsedTransform===a)return n;var o=(r._lastParsedTransform=a).scale&&"function"==typeof a.scale?a.scale:0;o&&(a.scale=o(L,t));var l,h,u,_,f,c,p,d,m,g=t._gsTransform,y=t.style,v=Nt.length,x=a,T={},w="transformOrigin",b=$t(t,S,!0,x.parseTransform),P=x.transform&&("function"==typeof x.transform?x.transform(L,F):x.transform);if(b.skewType=x.skewType||b.skewType||B.defaultSkewType,r._transform=b,"rotationZ"in x&&(x.rotation=x.rotationZ),P&&"string"==typeof P&&jt)(h=rt.style)[jt]=P,h.display="block",h.position="absolute",-1!==P.indexOf("%")&&(h.width=_t(t,"width"),h.height=_t(t,"height")),it.body.appendChild(rt),l=$t(rt,null,!1),"simple"===b.skewType&&(l.scaleY*=Math.cos(l.skewX*K)),b.svg&&(c=b.xOrigin,p=b.yOrigin,l.x-=b.xOffset,l.y-=b.yOffset,(x.transformOrigin||x.svgOrigin)&&(P={},Mt(t,mt(x.transformOrigin),P,x.svgOrigin,x.smoothOrigin,!0),c=P.xOrigin,p=P.yOrigin,l.x-=P.xOffset-b.xOffset,l.y-=P.yOffset-b.yOffset),(c||p)&&(d=Zt(rt,!0),l.x-=c-(c*d[0]+p*d[2]),l.y-=p-(c*d[1]+p*d[3]))),it.body.removeChild(rt),l.perspective||(l.perspective=b.perspective),null!=x.xPercent&&(l.xPercent=C(x.xPercent,b.xPercent)),null!=x.yPercent&&(l.yPercent=C(x.yPercent,b.yPercent));else if("object"==typeof x){if(l={scaleX:C(null!=x.scaleX?x.scaleX:x.scale,b.scaleX),scaleY:C(null!=x.scaleY?x.scaleY:x.scale,b.scaleY),scaleZ:C(x.scaleZ,b.scaleZ),x:C(x.x,b.x),y:C(x.y,b.y),z:C(x.z,b.z),xPercent:C(x.xPercent,b.xPercent),yPercent:C(x.yPercent,b.yPercent),perspective:C(x.transformPerspective,b.perspective)},null!=(f=x.directionalRotation))if("object"==typeof f)for(h in f)x[h]=f[h];else x.rotation=f;"string"==typeof x.x&&-1!==x.x.indexOf("%")&&(l.x=0,l.xPercent=C(x.x,b.xPercent)),"string"==typeof x.y&&-1!==x.y.indexOf("%")&&(l.y=0,l.yPercent=C(x.y,b.yPercent)),l.rotation=R("rotation"in x?x.rotation:"shortRotation"in x?x.shortRotation+"_short":b.rotation,b.rotation,"rotation",T),Yt&&(l.rotationX=R("rotationX"in x?x.rotationX:"shortRotationX"in x?x.shortRotationX+"_short":b.rotationX||0,b.rotationX,"rotationX",T),l.rotationY=R("rotationY"in x?x.rotationY:"shortRotationY"in x?x.shortRotationY+"_short":b.rotationY||0,b.rotationY,"rotationY",T)),l.skewX=R(x.skewX,b.skewX),l.skewY=R(x.skewY,b.skewY)}for(Yt&&null!=x.force3D&&(b.force3D=x.force3D,_=!0),(u=b.force3D||b.z||b.rotationX||b.rotationY||l.z||l.rotationX||l.rotationY||l.perspective)||null==x.scale||(l.scaleZ=1);-1<--v;)(1e-6<(P=l[m=Nt[v]]-b[m])||P<-1e-6||null!=x[m]||null!=tt[m])&&(_=!0,n=new Pt(b,m,b[m],P,n),m in T&&(n.e=T[m]),n.xs0=0,n.plugin=s,r._overwriteProps.push(n.n));return P="function"==typeof x.transformOrigin?x.transformOrigin(L,F):x.transformOrigin,b.svg&&(P||x.svgOrigin)&&(c=b.xOffset,p=b.yOffset,Mt(t,mt(P),l,x.svgOrigin,x.smoothOrigin),n=wt(b,"xOrigin",(g?b:l).xOrigin,l.xOrigin,n,w),n=wt(b,"yOrigin",(g?b:l).yOrigin,l.yOrigin,n,w),c===b.xOffset&&p===b.yOffset||(n=wt(b,"xOffset",g?c:b.xOffset,b.xOffset,n,w),n=wt(b,"yOffset",g?p:b.yOffset,b.yOffset,n,w)),P="0px 0px"),(P||Yt&&u&&b.zOrigin)&&(jt?(_=!0,m=Bt,P||(P=(P=(_t(t,m,S,!1,"50% 50%")+"").split(" "))[0]+" "+P[1]+" "+b.zOrigin+"px"),P+="",(n=new Pt(y,m,0,0,n,-1,w)).b=y[m],n.plugin=s,Yt?(h=b.zOrigin,P=P.split(" "),b.zOrigin=(2<P.length?parseFloat(P[2]):h)||0,n.xs0=n.e=P[0]+" "+(P[1]||"50%")+" 0px",(n=new Pt(b,"zOrigin",0,0,n,-1,n.n)).b=h,n.xs0=n.e=b.zOrigin):n.xs0=n.e=P):mt(P+"",b)),_&&(r._transformType=b.svg&&Ft||!u&&3!==this._transformType?2:3),o&&(a.scale=o),n},allowFunc:!0,prefix:!0}),Ct("boxShadow",{defaultValue:"0px 0px 0px 0px #999",prefix:!0,color:!0,multi:!0,keyword:"inset"}),Ct("clipPath",{defaultValue:"inset(0%)",prefix:!0,multi:!0,formatter:xt("inset(0% 0% 0% 0%)",!1,!0)}),Ct("borderRadius",{defaultValue:"0px",parser:function(t,e,i,r,n,s){e=this.format(e);var a,o,l,h,u,_,f,c,p,d,m,g,y,v,x,T,w=["borderTopLeftRadius","borderTopRightRadius","borderBottomRightRadius","borderBottomLeftRadius"],b=t.style;for(p=parseFloat(t.offsetWidth),d=parseFloat(t.offsetHeight),a=e.split(" "),o=0;o<w.length;o++)this.p.indexOf("border")&&(w[o]=O(w[o])),-1!==(u=h=_t(t,w[o],S,!1,"0px")).indexOf(" ")&&(u=(h=u.split(" "))[0],h=h[1]),_=l=a[o],f=parseFloat(u),g=u.substr((f+"").length),""===(m=(y="="===_.charAt(1))?(c=parseInt(_.charAt(0)+"1",10),_=_.substr(2),c*=parseFloat(_),_.substr((c+"").length-(c<0?1:0))||""):(c=parseFloat(_),_.substr((c+"").length)))&&(m=P[i]||g),m!==g&&(v=ft(t,"borderLeft",f,g),x=ft(t,"borderTop",f,g),h="%"===m?(u=v/p*100+"%",x/d*100+"%"):"em"===m?(u=v/(T=ft(t,"borderLeft",1,"em"))+"em",x/T+"em"):(u=v+"px",x+"px"),y&&(_=parseFloat(u)+c+m,l=parseFloat(h)+c+m)),n=St(b,w[o],u+" "+h,_+" "+l,!1,"0px",n);return n},prefix:!0,formatter:xt("0px 0px 0px 0px",!1,!0)}),Ct("borderBottomLeftRadius,borderBottomRightRadius,borderTopLeftRadius,borderTopRightRadius",{defaultValue:"0px",parser:function(t,e,i,r,n,s){return St(t.style,i,this.format(_t(t,i,S,!1,"0px 0px")),this.format(e),!1,"0px",n)},prefix:!0,formatter:xt("0px 0px",!1,!0)}),Ct("backgroundPosition",{defaultValue:"0 0",parser:function(t,e,i,r,n,s){var a,o,l,h,u,_,f="background-position",c=S||y(t),p=this.format((c?D?c.getPropertyValue(f+"-x")+" "+c.getPropertyValue(f+"-y"):c.getPropertyValue(f):t.currentStyle.backgroundPositionX+" "+t.currentStyle.backgroundPositionY)||"0 0"),d=this.format(e);if(-1!==p.indexOf("%")!=(-1!==d.indexOf("%"))&&d.split(",").length<2&&((_=_t(t,"backgroundImage").replace(q,""))&&"none"!==_)){for(a=p.split(" "),o=d.split(" "),nt.setAttribute("src",_),l=2;-1<--l;)(h=-1!==(p=a[l]).indexOf("%"))!=(-1!==o[l].indexOf("%"))&&(u=0===l?t.offsetWidth-nt.width:t.offsetHeight-nt.height,a[l]=h?parseFloat(p)/100*u+"px":parseFloat(p)/u*100+"%");p=a.join(" ")}return this.parseComplex(t.style,p,d,n,s)},formatter:mt}),Ct("backgroundSize",{defaultValue:"0 0",formatter:function(t){return"co"===(t+="").substr(0,2)?t:mt(-1===t.indexOf(" ")?t+" "+t:t)}}),Ct("perspective",{defaultValue:"0px",prefix:!0}),Ct("perspectiveOrigin",{defaultValue:"50% 50%",prefix:!0}),Ct("transformStyle",{prefix:!0}),Ct("backfaceVisibility",{prefix:!0}),Ct("userSelect",{prefix:!0}),Ct("margin",{parser:Tt("marginTop,marginRight,marginBottom,marginLeft")}),Ct("padding",{parser:Tt("paddingTop,paddingRight,paddingBottom,paddingLeft")}),Ct("clip",{defaultValue:"rect(0px,0px,0px,0px)",parser:function(t,e,i,r,n,s){var a,o,l;return e=D<9?(o=t.currentStyle,l=D<8?" ":",",a="rect("+o.clipTop+l+o.clipRight+l+o.clipBottom+l+o.clipLeft+")",this.format(e).split(",").join(l)):(a=this.format(_t(t,this.p,S,!1,this.dflt)),this.format(e)),this.parseComplex(t.style,a,e,n,s)}}),Ct("textShadow",{defaultValue:"0px 0px 0px #999",color:!0,multi:!0}),Ct("autoRound,strictUnits",{parser:function(t,e,i,r,n){return n}}),Ct("border",{defaultValue:"0px solid #000",parser:function(t,e,i,r,n,s){var a=_t(t,"borderTopWidth",S,!1,"0px"),o=this.format(e).split(" "),l=o[0].replace(N,"");return"px"!==l&&(a=parseFloat(a)/ft(t,"borderTopWidth",1,l)+l),this.parseComplex(t.style,this.format(a+" "+_t(t,"borderTopStyle",S,!1,"solid")+" "+_t(t,"borderTopColor",S,!1,"#000")),o.join(" "),n,s)},color:!0,formatter:function(t){var e=t.split(" ");return e[0]+" "+(e[1]||"solid")+" "+(t.match(vt)||["#000"])[0]}}),Ct("borderWidth",{parser:Tt("borderTopWidth,borderRightWidth,borderBottomWidth,borderLeftWidth")}),Ct("float,cssFloat,styleFloat",{parser:function(t,e,i,r,n,s){var a=t.style,o="cssFloat"in a?"cssFloat":"styleFloat";return new Pt(a,o,0,0,n,-1,i,!1,0,a[o],e)}});function Jt(t){var e,i=this.t,r=i.filter||_t(this.data,"filter")||"",n=this.s+this.c*t|0;100==n&&(e=-1===r.indexOf("atrix(")&&-1===r.indexOf("radient(")&&-1===r.indexOf("oader(")?(i.removeAttribute("filter"),!_t(this.data,"filter")):(i.filter=r.replace(_,""),!0)),e||(this.xn1&&(i.filter=r=r||"alpha(opacity="+n+")"),-1===r.indexOf("pacity")?0==n&&this.xn1||(i.filter=r+" alpha(opacity="+n+")"):i.filter=r.replace(j,"opacity="+n))}Ct("opacity,alpha,autoAlpha",{defaultValue:"1",parser:function(t,e,i,r,n,s){var a=parseFloat(_t(t,"opacity",S,!1,"1")),o=t.style,l="autoAlpha"===i;return"string"==typeof e&&"="===e.charAt(1)&&(e=("-"===e.charAt(0)?-1:1)*parseFloat(e.substr(2))+a),l&&1===a&&"hidden"===_t(t,"visibility",S)&&0!==e&&(a=0),ot?n=new Pt(o,"opacity",a,e-a,n):((n=new Pt(o,"opacity",100*a,100*(e-a),n)).xn1=l?1:0,o.zoom=1,n.type=2,n.b="alpha(opacity="+n.s+")",n.e="alpha(opacity="+(n.s+n.c)+")",n.data=t,n.plugin=s,n.setRatio=Jt),l&&((n=new Pt(o,"visibility",0,0,n,-1,null,!1,0,0!==a?"inherit":"hidden",0===e?"hidden":"inherit")).xs0="inherit",r._overwriteProps.push(n.n),r._overwriteProps.push(i)),n}});function te(t){if(this.t._gsClassPT=this,1===t||0===t){this.t.setAttribute("class",0===t?this.b:this.e);for(var e=this.data,i=this.t.style;e;)e.v?i[e.p]=e.v:ee(i,e.p),e=e._next;1===t&&this.t._gsClassPT===this&&(this.t._gsClassPT=null)}else this.t.getAttribute("class")!==this.e&&this.t.setAttribute("class",this.e)}var ee=function(t,e){e&&(t.removeProperty?("ms"!==e.substr(0,2)&&"webkit"!==e.substr(0,6)||(e="-"+e),t.removeProperty(e.replace(f,"-$1").toLowerCase())):t.removeAttribute(e))};Ct("className",{parser:function(t,e,i,r,n,s,a){var o,l,h,u,_,f=t.getAttribute("class")||"",c=t.style.cssText;if((n=r._classNamePT=new Pt(t,i,0,0,n,2)).setRatio=te,n.pr=-11,p=!0,n.b=f,l=v(t,S),h=t._gsClassPT){for(u={},_=h.data;_;)u[_.p]=1,_=_._next;h.setRatio(1)}return(t._gsClassPT=n).e="="!==e.charAt(1)?e:f.replace(new RegExp("(?:\\s|^)"+e.substr(2)+"(?![\\w-])"),"")+("+"===e.charAt(0)?" "+e.substr(2):""),t.setAttribute("class",n.e),o=x(t,l,v(t),a,u),t.setAttribute("class",f),n.data=o.firstMPT,t.style.cssText!==c&&(t.style.cssText=c),n.xfirst=r.parse(t,o.difs,n,s)}});function ie(t){if((1===t||0===t)&&this.data._totalTime===this.data._totalDuration&&"isFromStart"!==this.data.data){var e,i,r,n,s,a=this.t.style,o=m.transform.parse;if("all"===this.e)n=!(a.cssText="");else for(r=(e=this.e.split(" ").join("").split(",")).length;-1<--r;)i=e[r],m[i]&&(m[i].parse===o?n=!0:i="transformOrigin"===i?Bt:m[i].p),ee(a,i);n&&(ee(a,jt),(s=this.t._gsTransform)&&(s.svg&&(this.t.removeAttribute("data-svg-origin"),this.t.removeAttribute("transform")),delete this.t._gsTransform))}}for(Ct("clearProps",{parser:function(t,e,i,r,n){return(n=new Pt(t,i,0,0,n,2)).setRatio=ie,n.e=e,n.pr=-10,n.data=r._tween,p=!0,n}}),t="bezier,throwProps,physicsProps,physics2D".split(","),Ot=t.length;Ot--;)Rt(t[Ot]);(t=B.prototype)._firstPT=t._lastParsedTransform=t._transform=null,t._onInitTween=function(t,e,i,r){if(!t.nodeType)return!1;this._target=F=t,this._tween=i,this._vars=e,L=r,A=e.autoRound,p=!1,P=e.suffixMap||B.suffixMap,S=y(t),d=this._overwriteProps;var n,s,a,o,l,h,u,_,f,c=t.style;if(w&&""===c.zIndex&&("auto"!==(n=_t(t,"zIndex",S))&&""!==n||this._addLazySet(c,"zIndex",0)),"string"==typeof e&&(o=c.cssText,n=v(t,S),c.cssText=o+";"+e,n=x(t,n,v(t)).difs,!ot&&G.test(e)&&(n.opacity=parseFloat(RegExp.$1)),e=n,c.cssText=o),e.className?this._firstPT=s=m.className.parse(t,e.className,"className",this,null,null,e):this._firstPT=s=this.parse(t,e,null),this._transformType){for(f=3===this._transformType,jt?b&&(w=!0,""===c.zIndex&&("auto"!==(u=_t(t,"zIndex",S))&&""!==u||this._addLazySet(c,"zIndex",0)),M&&this._addLazySet(c,"WebkitBackfaceVisibility",this._vars.WebkitBackfaceVisibility||(f?"visible":"hidden"))):c.zoom=1,a=s;a&&a._next;)a=a._next;_=new Pt(t,"transform",0,0,null,2),this._linkCSSP(_,null,a),_.setRatio=jt?Kt:Dt,_.data=this._transform||$t(t,S,!0),_.tween=i,_.pr=-1,d.pop()}if(p){for(;s;){for(h=s._next,a=o;a&&a.pr>s.pr;)a=a._next;(s._prev=a?a._prev:l)?s._prev._next=s:o=s,(s._next=a)?a._prev=s:l=s,s=h}this._firstPT=o}return!0},t.parse=function(t,e,i,r){var n,s,a,o,l,h,u,_,f,c,p=t.style;for(n in e){if(h=e[n],s=m[n],"function"!=typeof h||s&&s.allowFunc||(h=h(L,F)),s)i=s.parse(t,h,n,this,i,r,e);else{if("--"===n.substr(0,2)){this._tween._propLookup[n]=this._addTween.call(this._tween,t.style,"setProperty",y(t).getPropertyValue(n)+"",h+"",n,!1,n);continue}l=_t(t,n,S)+"",f="string"==typeof h,"color"===n||"fill"===n||"stroke"===n||-1!==n.indexOf("Color")||f&&U.test(h)?(f||(h=(3<(h=yt(h)).length?"rgba(":"rgb(")+h.join(",")+")"),i=St(p,n,l,h,!0,"transparent",i,0,r)):f&&$.test(h)?i=St(p,n,l,h,!0,null,i,0,r):(u=(a=parseFloat(l))||0===a?l.substr((a+"").length):"",""!==l&&"auto"!==l||(u="width"===n||"height"===n?(a=T(t,n,S),"px"):"left"===n||"top"===n?(a=ct(t,n,S),"px"):(a="opacity"!==n?0:1,"")),""===(_=(c=f&&"="===h.charAt(1))?(o=parseInt(h.charAt(0)+"1",10),h=h.substr(2),o*=parseFloat(h),h.replace(N,"")):(o=parseFloat(h),f?h.replace(N,""):""))&&(_=n in P?P[n]:u),h=o||0===o?(c?o+a:o)+_:e[n],u===_||""===_&&"lineHeight"!==n||!o&&0!==o||!a||(a=ft(t,n,a,u),"%"===_?(a/=ft(t,n,100,"%")/100,!0!==e.strictUnits&&(l=a+"%")):"em"===_||"rem"===_||"vw"===_||"vh"===_?a/=ft(t,n,1,_):"px"!==_&&(o=ft(t,n,o,_),_="px"),c&&(o||0===o)&&(h=o+a+_)),c&&(o+=a),!a&&0!==a||!o&&0!==o?void 0!==p[n]&&(h||h+""!="NaN"&&null!=h)?(i=new Pt(p,n,o||a||0,0,i,-1,n,!1,0,l,h)).xs0="none"!==h||"display"!==n&&-1===n.indexOf("Style")?h:l:g("invalid "+n+" tween value: "+e[n]):(i=new Pt(p,n,a,o-a,i,0,n,!1!==A&&("px"===_||"zIndex"===n),0,l,h)).xs0=_)}r&&i&&!i.plugin&&(i.plugin=r)}return i},t.setRatio=function(t){var e,i,r,n=this._firstPT;if(1!==t||this._tween._time!==this._tween._duration&&0!==this._tween._time)if(t||this._tween._time!==this._tween._duration&&0!==this._tween._time||-1e-6===this._tween._rawPrevTime)for(;n;){if(e=n.c*t+n.s,n.r?e=n.r(e):e<1e-6&&-1e-6<e&&(e=0),n.type)if(1===n.type)if(2===(r=n.l))n.t[n.p]=n.xs0+e+n.xs1+n.xn1+n.xs2;else if(3===r)n.t[n.p]=n.xs0+e+n.xs1+n.xn1+n.xs2+n.xn2+n.xs3;else if(4===r)n.t[n.p]=n.xs0+e+n.xs1+n.xn1+n.xs2+n.xn2+n.xs3+n.xn3+n.xs4;else if(5===r)n.t[n.p]=n.xs0+e+n.xs1+n.xn1+n.xs2+n.xn2+n.xs3+n.xn3+n.xs4+n.xn4+n.xs5;else{for(i=n.xs0+e+n.xs1,r=1;r<n.l;r++)i+=n["xn"+r]+n["xs"+(r+1)];n.t[n.p]=i}else-1===n.type?n.t[n.p]=n.xs0:n.setRatio&&n.setRatio(t);else n.t[n.p]=e+n.xs0;n=n._next}else for(;n;)2!==n.type?n.t[n.p]=n.b:n.setRatio(t),n=n._next;else for(;n;){if(2!==n.type)if(n.r&&-1!==n.type)if(e=n.r(n.s+n.c),n.type){if(1===n.type){for(r=n.l,i=n.xs0+e+n.xs1,r=1;r<n.l;r++)i+=n["xn"+r]+n["xs"+(r+1)];n.t[n.p]=i}}else n.t[n.p]=e+n.xs0;else n.t[n.p]=n.e;else n.setRatio(t);n=n._next}},t._enableTransforms=function(t){this._transform=this._transform||$t(this._target,S,!0),this._transformType=this._transform.svg&&Ft||!t&&3!==this._transformType?2:3};function re(t){this.t[this.p]=this.e,this.data._linkCSSP(this,this._next,null,!0)}t._addLazySet=function(t,e,i){var r=this._firstPT=new Pt(t,e,0,0,this._firstPT,2);r.e=i,r.setRatio=re,r.data=this},t._linkCSSP=function(t,e,i,r){return t&&(e&&(e._prev=t),t._next&&(t._next._prev=t._prev),t._prev?t._prev._next=t._next:this._firstPT===t&&(this._firstPT=t._next,r=!0),i?i._next=t:r||null!==this._firstPT||(this._firstPT=t),t._next=e,t._prev=i),t},t._mod=function(t){for(var e=this._firstPT;e;)"function"==typeof t[e.p]&&(e.r=t[e.p]),e=e._next},t._kill=function(t){var e,i,r,n=t;if(t.autoAlpha||t.alpha){for(i in n={},t)n[i]=t[i];n.opacity=1,n.autoAlpha&&(n.visibility=1)}for(t.className&&(e=this._classNamePT)&&((r=e.xfirst)&&r._prev?this._linkCSSP(r._prev,e._next,r._prev._prev):r===this._firstPT&&(this._firstPT=e._next),e._next&&this._linkCSSP(e._next,e._next._next,r._prev),this._classNamePT=null),e=this._firstPT;e;)e.plugin&&e.plugin!==i&&e.plugin._kill&&(e.plugin._kill(t),i=e.plugin),e=e._next;return s.prototype._kill.call(this,n)};var ne=function(t,e,i){var r,n,s,a;if(t.slice)for(n=t.length;-1<--n;)ne(t[n],e,i);else for(n=(r=t.childNodes).length;-1<--n;)a=(s=r[n]).type,s.style&&(e.push(v(s)),i&&i.push(s)),1!==a&&9!==a&&11!==a||!s.childNodes.length||ne(s,e,i)};return B.cascadeTo=function(t,e,i){var r,n,s,a,o=X.to(t,e,i),l=[o],h=[],u=[],_=[],f=X._internals.reservedProps;for(t=o._targets||o.target,ne(t,h,_),o.render(e,!0,!0),ne(t,u),o.render(0,!0,!0),o._enabled(!0),r=_.length;-1<--r;)if((n=x(_[r],h[r],u[r])).firstMPT){for(s in n=n.difs,i)f[s]&&(n[s]=i[s]);for(s in a={},n)a[s]=h[r][s];l.push(X.fromTo(_[r],e,a,n))}return l},s.activate([B]),B},!0),t=_gsScope._gsDefine.plugin({propName:"roundProps",version:"1.7.0",priority:-1,API:2,init:function(t,e,i){return this._tween=i,!0}}),(e=t.prototype)._onInitAllProps=function(){var t,e,i,r,n=this._tween,s=n.vars.roundProps,a={},o=n._propLookup.roundProps;if("object"!=typeof s||s.push)for("string"==typeof s&&(s=s.split(",")),i=s.length;-1<--i;)a[s[i]]=Math.round;else for(r in s)a[r]=l(s[r]);for(r in a)for(t=n._firstPT;t;)e=t._next,t.pg?t.t._mod(a):t.n===r&&(2===t.f&&t.t?h(t.t._firstPT,a[r]):(this._add(t.t,r,t.s,t.c,a[r]),e&&(e._prev=t._prev),t._prev?t._prev._next=e:n._firstPT===t&&(n._firstPT=e),t._next=t._prev=null,n._propLookup[r]=o)),t=e;return!1},e._add=function(t,e,i,r,n){this._addTween(t,e,i,i+r,e,n||Math.round),this._overwriteProps.push(e)},_gsScope._gsDefine.plugin({propName:"attr",API:2,version:"0.6.1",init:function(t,e,i,r){var n,s;if("function"!=typeof t.setAttribute)return!1;for(n in e)"function"==typeof(s=e[n])&&(s=s(r,t)),this._addTween(t,"setAttribute",t.getAttribute(n)+"",s+"",n,!1,n),this._overwriteProps.push(n);return!0}}),_gsScope._gsDefine.plugin({propName:"directionalRotation",version:"0.3.1",API:2,init:function(t,e,i,r){"object"!=typeof e&&(e={rotation:e}),this.finals={};var n,s,a,o,l,h,u=!0===e.useRadians?2*Math.PI:360;for(n in e)"useRadians"!==n&&("function"==typeof(o=e[n])&&(o=o(r,t)),s=(h=(o+"").split("_"))[0],a=parseFloat("function"!=typeof t[n]?t[n]:t[n.indexOf("set")||"function"!=typeof t["get"+n.substr(3)]?n:"get"+n.substr(3)]()),l=(o=this.finals[n]="string"==typeof s&&"="===s.charAt(1)?a+parseInt(s.charAt(0)+"1",10)*Number(s.substr(2)):Number(s)||0)-a,h.length&&(-1!==(s=h.join("_")).indexOf("short")&&((l%=u)!==l%(u/2)&&(l=l<0?l+u:l-u)),-1!==s.indexOf("_cw")&&l<0?l=(l+9999999999*u)%u-(l/u|0)*u:-1!==s.indexOf("ccw")&&0<l&&(l=(l-9999999999*u)%u-(l/u|0)*u)),(1e-6<l||l<-1e-6)&&(this._addTween(t,n,a,a+l,n),this._overwriteProps.push(n)));return!0},set:function(t){var e;if(1!==t)this._super.setRatio.call(this,t);else for(e=this._firstPT;e;)e.f?e.t[e.p](this.finals[e.p]):e.t[e.p]=this.finals[e.p],e=e._next}})._autoCSS=!0,_gsScope._gsDefine("easing.Back",["easing.Ease"],function(m){function t(t,e){var i=_("easing."+t,function(){},!0),r=i.prototype=new m;return r.constructor=i,r.getRatio=e,i}function e(t,e,i,r,n){var s=_("easing."+t,{easeOut:new e,easeIn:new i,easeInOut:new r},!0);return f(s,t),s}function g(t,e,i){this.t=t,this.v=e,i&&(((this.next=i).prev=this).c=i.v-e,this.gap=i.t-t)}function i(t,e){var i=_("easing."+t,function(t){this._p1=t||0===t?t:1.70158,this._p2=1.525*this._p1},!0),r=i.prototype=new m;return r.constructor=i,r.getRatio=e,r.config=function(t){return new i(t)},i}var r,n,s,a,o=_gsScope.GreenSockGlobals||_gsScope,l=o.com.greensock,h=2*Math.PI,u=Math.PI/2,_=l._class,f=m.register||function(){},c=e("Back",i("BackOut",function(t){return--t*t*((this._p1+1)*t+this._p1)+1}),i("BackIn",function(t){return t*t*((this._p1+1)*t-this._p1)}),i("BackInOut",function(t){return(t*=2)<1?.5*t*t*((this._p2+1)*t-this._p2):.5*((t-=2)*t*((this._p2+1)*t+this._p2)+2)})),p=_("easing.SlowMo",function(t,e,i){e=e||0===e?e:.7,null==t?t=.7:1<t&&(t=1),this._p=1!==t?e:0,this._p1=(1-t)/2,this._p2=t,this._p3=this._p1+this._p2,this._calcEnd=!0===i},!0),d=p.prototype=new m;return d.constructor=p,d.getRatio=function(t){var e=t+(.5-t)*this._p;return t<this._p1?this._calcEnd?1-(t=1-t/this._p1)*t:e-(t=1-t/this._p1)*t*t*t*e:t>this._p3?this._calcEnd?1===t?0:1-(t=(t-this._p3)/this._p1)*t:e+(t-e)*(t=(t-this._p3)/this._p1)*t*t*t:this._calcEnd?1:e},p.ease=new p(.7,.7),d.config=p.config=function(t,e,i){return new p(t,e,i)},(d=(r=_("easing.SteppedEase",function(t,e){t=t||1,this._p1=1/t,this._p2=t+(e?0:1),this._p3=e?1:0},!0)).prototype=new m).constructor=r,d.getRatio=function(t){return t<0?t=0:1<=t&&(t=.999999999),((this._p2*t|0)+this._p3)*this._p1},d.config=r.config=function(t,e){return new r(t,e)},(d=(n=_("easing.ExpoScaleEase",function(t,e,i){this._p1=Math.log(e/t),this._p2=e-t,this._p3=t,this._ease=i},!0)).prototype=new m).constructor=n,d.getRatio=function(t){return this._ease&&(t=this._ease.getRatio(t)),(this._p3*Math.exp(this._p1*t)-this._p3)/this._p2},d.config=n.config=function(t,e,i){return new n(t,e,i)},(d=(s=_("easing.RoughEase",function(t){for(var e,i,r,n,s,a,o=(t=t||{}).taper||"none",l=[],h=0,u=0|(t.points||20),_=u,f=!1!==t.randomize,c=!0===t.clamp,p=t.template instanceof m?t.template:null,d="number"==typeof t.strength?.4*t.strength:.4;-1<--_;)e=f?Math.random():1/u*_,i=p?p.getRatio(e):e,r="none"===o?d:"out"===o?(n=1-e)*n*d:"in"===o?e*e*d:(n=e<.5?2*e:2*(1-e))*n*.5*d,f?i+=Math.random()*r-.5*r:_%2?i+=.5*r:i-=.5*r,c&&(1<i?i=1:i<0&&(i=0)),l[h++]={x:e,y:i};for(l.sort(function(t,e){return t.x-e.x}),a=new g(1,1,null),_=u;-1<--_;)s=l[_],a=new g(s.x,s.y,a);this._prev=new g(0,0,0!==a.t?a:a.next)},!0)).prototype=new m).constructor=s,d.getRatio=function(t){var e=this._prev;if(t>e.t){for(;e.next&&t>=e.t;)e=e.next;e=e.prev}else for(;e.prev&&t<=e.t;)e=e.prev;return(this._prev=e).v+(t-e.t)/e.gap*e.c},d.config=function(t){return new s(t)},s.ease=new s,e("Bounce",t("BounceOut",function(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375}),t("BounceIn",function(t){return(t=1-t)<1/2.75?1-7.5625*t*t:t<2/2.75?1-(7.5625*(t-=1.5/2.75)*t+.75):t<2.5/2.75?1-(7.5625*(t-=2.25/2.75)*t+.9375):1-(7.5625*(t-=2.625/2.75)*t+.984375)}),t("BounceInOut",function(t){var e=t<.5;return t=(t=e?1-2*t:2*t-1)<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375,e?.5*(1-t):.5*t+.5})),e("Circ",t("CircOut",function(t){return Math.sqrt(1- --t*t)}),t("CircIn",function(t){return-(Math.sqrt(1-t*t)-1)}),t("CircInOut",function(t){return(t*=2)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)})),e("Elastic",(a=function(t,e,i){var r=_("easing."+t,function(t,e){this._p1=1<=t?t:1,this._p2=(e||i)/(t<1?t:1),this._p3=this._p2/h*(Math.asin(1/this._p1)||0),this._p2=h/this._p2},!0),n=r.prototype=new m;return n.constructor=r,n.getRatio=e,n.config=function(t,e){return new r(t,e)},r})("ElasticOut",function(t){return this._p1*Math.pow(2,-10*t)*Math.sin((t-this._p3)*this._p2)+1},.3),a("ElasticIn",function(t){return-this._p1*Math.pow(2,10*--t)*Math.sin((t-this._p3)*this._p2)},.3),a("ElasticInOut",function(t){return(t*=2)<1?this._p1*Math.pow(2,10*--t)*Math.sin((t-this._p3)*this._p2)*-.5:this._p1*Math.pow(2,-10*--t)*Math.sin((t-this._p3)*this._p2)*.5+1},.45)),e("Expo",t("ExpoOut",function(t){return 1-Math.pow(2,-10*t)}),t("ExpoIn",function(t){return Math.pow(2,10*(t-1))-.001}),t("ExpoInOut",function(t){return(t*=2)<1?.5*Math.pow(2,10*(t-1)):.5*(2-Math.pow(2,-10*(t-1)))})),e("Sine",t("SineOut",function(t){return Math.sin(t*u)}),t("SineIn",function(t){return 1-Math.cos(t*u)}),t("SineInOut",function(t){return-.5*(Math.cos(Math.PI*t)-1)})),_("easing.EaseLookup",{find:function(t){return m.map[t]}},!0),f(o.SlowMo,"SlowMo","ease,"),f(s,"RoughEase","ease,"),f(r,"SteppedEase","ease,"),c},!0)}),_gsScope._gsDefine&&_gsScope._gsQueue.pop()(),function(f,c){"use strict";var p={},r=f.document,d=f.GreenSockGlobals=f.GreenSockGlobals||f,t=d[c];if(t)return"undefined"!=typeof module&&module.exports&&(module.exports=t);function m(t){var e,i=t.split("."),r=d;for(e=0;e<i.length;e++)r[i[e]]=r=r[i[e]]||{};return r}function l(t){var e,i=[],r=t.length;for(e=0;e!==r;i.push(t[e++]));return i}function g(){}var e,i,n,y,v,s,a,_=m("com.greensock"),x=1e-8,T=(s=Object.prototype.toString,a=s.call([]),function(t){return null!=t&&(t instanceof Array||"object"==typeof t&&!!t.push&&s.call(t)===a)}),w={},b=function(o,l,h,u){this.sc=w[o]?w[o].sc:[],(w[o]=this).gsClass=null,this.func=h;var _=[];this.check=function(t){for(var e,i,r,n,s=l.length,a=s;-1<--s;)(e=w[l[s]]||new b(l[s],[])).gsClass?(_[s]=e.gsClass,a--):t&&e.sc.push(this);if(0===a&&h){if(r=(i=("com.greensock."+o).split(".")).pop(),n=m(i.join("."))[r]=this.gsClass=h.apply(h,_),u)if(d[r]=p[r]=n,"undefined"!=typeof module&&module.exports)if(o===c)for(s in module.exports=p[c]=n,p)n[s]=p[s];else p[c]&&(p[c][r]=n);else"function"==typeof define&&define.amd&&define((f.GreenSockAMDPath?f.GreenSockAMDPath+"/":"")+o.split(".").pop(),[],function(){return n});for(s=0;s<this.sc.length;s++)this.sc[s].check()}},this.check(!0)},o=f._gsDefine=function(t,e,i,r){return new b(t,e,i,r)},P=_._class=function(t,e,i){return e=e||function(){},o(t,[],function(){return e},i),e};o.globals=d;var h=[0,0,1,1],S=P("easing.Ease",function(t,e,i,r){this._func=t,this._type=i||0,this._power=r||0,this._params=e?h.concat(e):h},!0),O=S.map={},u=S.register=function(t,e,i,r){for(var n,s,a,o,l=e.split(","),h=l.length,u=(i||"easeIn,easeOut,easeInOut").split(",");-1<--h;)for(s=l[h],n=r?P("easing."+s,null,!0):_.easing[s]||{},a=u.length;-1<--a;)o=u[a],O[s+"."+o]=O[o+s]=n[o]=t.getRatio?t:t[o]||new t};for((n=S.prototype)._calcEnd=!1,n.getRatio=function(t){if(this._func)return this._params[0]=t,this._func.apply(null,this._params);var e=this._type,i=this._power,r=1===e?1-t:2===e?t:t<.5?2*t:2*(1-t);return 1===i?r*=r:2===i?r*=r*r:3===i?r*=r*r*r:4===i&&(r*=r*r*r*r),1===e?1-r:2===e?r:t<.5?r/2:1-r/2},i=(e=["Linear","Quad","Cubic","Quart","Quint,Strong"]).length;-1<--i;)n=e[i]+",Power"+i,u(new S(null,null,1,i),n,"easeOut",!0),u(new S(null,null,2,i),n,"easeIn"+(0===i?",easeNone":"")),u(new S(null,null,3,i),n,"easeInOut");O.linear=_.easing.Linear.easeIn,O.swing=_.easing.Quad.easeInOut;var k=P("events.EventDispatcher",function(t){this._listeners={},this._eventTarget=t||this});(n=k.prototype).addEventListener=function(t,e,i,r,n){n=n||0;var s,a,o=this._listeners[t],l=0;for(this!==y||v||y.wake(),null==o&&(this._listeners[t]=o=[]),a=o.length;-1<--a;)(s=o[a]).c===e&&s.s===i?o.splice(a,1):0===l&&s.pr<n&&(l=a+1);o.splice(l,0,{c:e,s:i,up:r,pr:n})},n.removeEventListener=function(t,e){var i,r=this._listeners[t];if(r)for(i=r.length;-1<--i;)if(r[i].c===e)return void r.splice(i,1)},n.dispatchEvent=function(t){var e,i,r,n=this._listeners[t];if(n)for(1<(e=n.length)&&(n=n.slice(0)),i=this._eventTarget;-1<--e;)(r=n[e])&&(r.up?r.c.call(r.s||i,{type:t,target:i}):r.c.call(r.s||i))};var C=f.requestAnimationFrame,R=f.cancelAnimationFrame,A=Date.now||function(){return(new Date).getTime()},M=A();for(i=(e=["ms","moz","webkit","o"]).length;-1<--i&&!C;)C=f[e[i]+"RequestAnimationFrame"],R=f[e[i]+"CancelAnimationFrame"]||f[e[i]+"CancelRequestAnimationFrame"];P("Ticker",function(t,e){var n,s,a,o,l,h=this,u=A(),i=!(!1===e||!C)&&"auto",_=500,f=33,c=function(t){var e,i,r=A()-M;_<r&&(u+=r-f),M+=r,h.time=(M-u)/1e3,e=h.time-l,(!n||0<e||!0===t)&&(h.frame++,l+=e+(o<=e?.004:o-e),i=!0),!0!==t&&(a=s(c)),i&&h.dispatchEvent("tick")};k.call(h),h.time=h.frame=0,h.tick=function(){c(!0)},h.lagSmoothing=function(t,e){return arguments.length?(_=t||1e8,void(f=Math.min(e,_,0))):_<1e8},h.sleep=function(){null!=a&&((i&&R?R:clearTimeout)(a),s=g,a=null,h===y&&(v=!1))},h.wake=function(t){null!==a?h.sleep():t?u+=-M+(M=A()):10<h.frame&&(M=A()-_+5),s=0===n?g:i&&C?C:function(t){return setTimeout(t,1e3*(l-h.time)+1|0)},h===y&&(v=!0),c(2)},h.fps=function(t){return arguments.length?(o=1/((n=t)||60),l=this.time+o,void h.wake()):n},h.useRAF=function(t){return arguments.length?(h.sleep(),i=t,void h.fps(n)):i},h.fps(t),setTimeout(function(){"auto"===i&&h.frame<5&&"hidden"!==(r||{}).visibilityState&&h.useRAF(!1)},1500)}),(n=_.Ticker.prototype=new _.events.EventDispatcher).constructor=_.Ticker;var D=P("core.Animation",function(t,e){if(this.vars=e=e||{},this._duration=this._totalDuration=t||0,this._delay=Number(e.delay)||0,this._timeScale=1,this._active=!!e.immediateRender,this.data=e.data,this._reversed=!!e.reversed,K){v||y.wake();var i=this.vars.useFrames?$:K;i.add(this,i._time),this.vars.paused&&this.paused(!0)}});y=D.ticker=new _.Ticker,(n=D.prototype)._dirty=n._gc=n._initted=n._paused=!1,n._totalTime=n._time=0,n._rawPrevTime=-1,n._next=n._last=n._onUpdate=n._timeline=n.timeline=null,n._paused=!1;var F=function(){v&&2e3<A()-M&&("hidden"!==(r||{}).visibilityState||!y.lagSmoothing())&&y.wake();var t=setTimeout(F,2e3);t.unref&&t.unref()};F(),n.play=function(t,e){return null!=t&&this.seek(t,e),this.reversed(!1).paused(!1)},n.pause=function(t,e){return null!=t&&this.seek(t,e),this.paused(!0)},n.resume=function(t,e){return null!=t&&this.seek(t,e),this.paused(!1)},n.seek=function(t,e){return this.totalTime(Number(t),!1!==e)},n.restart=function(t,e){return this.reversed(!1).paused(!1).totalTime(t?-this._delay:0,!1!==e,!0)},n.reverse=function(t,e){return null!=t&&this.seek(t||this.totalDuration(),e),this.reversed(!0).paused(!1)},n.render=function(t,e,i){},n.invalidate=function(){return this._time=this._totalTime=0,this._initted=this._gc=!1,this._rawPrevTime=-1,!this._gc&&this.timeline||this._enabled(!0),this},n.isActive=function(){var t,e=this._timeline,i=this._startTime;return!e||!this._gc&&!this._paused&&e.isActive()&&(t=e.rawTime(!0))>=i&&t<i+this.totalDuration()/this._timeScale-x},n._enabled=function(t,e){return v||y.wake(),this._gc=!t,this._active=this.isActive(),!0!==e&&(t&&!this.timeline?this._timeline.add(this,this._startTime-this._delay):!t&&this.timeline&&this._timeline._remove(this,!0)),!1},n._kill=function(t,e){return this._enabled(!1,!1)},n.kill=function(t,e){return this._kill(t,e),this},n._uncache=function(t){for(var e=t?this:this.timeline;e;)e._dirty=!0,e=e.timeline;return this},n._swapSelfInParams=function(t){for(var e=t.length,i=t.concat();-1<--e;)"{self}"===t[e]&&(i[e]=this);return i},n._callback=function(t){var e=this.vars,i=e[t],r=e[t+"Params"],n=e[t+"Scope"]||e.callbackScope||this;switch(r?r.length:0){case 0:i.call(n);break;case 1:i.call(n,r[0]);break;case 2:i.call(n,r[0],r[1]);break;default:i.apply(n,r)}},n.eventCallback=function(t,e,i,r){if("on"===(t||"").substr(0,2)){var n=this.vars;if(1===arguments.length)return n[t];null==e?delete n[t]:(n[t]=e,n[t+"Params"]=T(i)&&-1!==i.join("").indexOf("{self}")?this._swapSelfInParams(i):i,n[t+"Scope"]=r),"onUpdate"===t&&(this._onUpdate=e)}return this},n.delay=function(t){return arguments.length?(this._timeline.smoothChildTiming&&this.startTime(this._startTime+t-this._delay),this._delay=t,this):this._delay},n.duration=function(t){return arguments.length?(this._duration=this._totalDuration=t,this._uncache(!0),this._timeline.smoothChildTiming&&0<this._time&&this._time<this._duration&&0!==t&&this.totalTime(this._totalTime*(t/this._duration),!0),this):(this._dirty=!1,this._duration)},n.totalDuration=function(t){return this._dirty=!1,arguments.length?this.duration(t):this._totalDuration},n.time=function(t,e){return arguments.length?(this._dirty&&this.totalDuration(),this.totalTime(t>this._duration?this._duration:t,e)):this._time},n.totalTime=function(t,e,i){if(v||y.wake(),!arguments.length)return this._totalTime;if(this._timeline){if(t<0&&!i&&(t+=this.totalDuration()),this._timeline.smoothChildTiming){this._dirty&&this.totalDuration();var r=this._totalDuration,n=this._timeline;if(r<t&&!i&&(t=r),this._startTime=(this._paused?this._pauseTime:n._time)-(this._reversed?r-t:t)/this._timeScale,n._dirty||this._uncache(!1),n._timeline)for(;n._timeline;)n._timeline._time!==(n._startTime+n._totalTime)/n._timeScale&&n.totalTime(n._totalTime,!0),n=n._timeline}this._gc&&this._enabled(!0,!1),this._totalTime===t&&0!==this._duration||(B.length&&tt(),this.render(t,e,!1),B.length&&tt())}return this},n.progress=n.totalProgress=function(t,e){var i=this.duration();return arguments.length?this.totalTime(i*t,e):i?this._time/i:this.ratio},n.startTime=function(t){return arguments.length?(t!==this._startTime&&(this._startTime=t,this.timeline&&this.timeline._sortChildren&&this.timeline.add(this,t-this._delay)),this):this._startTime},n.endTime=function(t){return this._startTime+(0!=t?this.totalDuration():this.duration())/this._timeScale},n.timeScale=function(t){if(!arguments.length)return this._timeScale;var e,i;for(t=t||x,this._timeline&&this._timeline.smoothChildTiming&&(i=(e=this._pauseTime)||0===e?e:this._timeline.totalTime(),this._startTime=i-(i-this._startTime)*this._timeScale/t),this._timeScale=t,i=this.timeline;i&&i.timeline;)i._dirty=!0,i.totalDuration(),i=i.timeline;return this},n.reversed=function(t){return arguments.length?(t!=this._reversed&&(this._reversed=t,this.totalTime(this._timeline&&!this._timeline.smoothChildTiming?this.totalDuration()-this._totalTime:this._totalTime,!0)),this):this._reversed},n.paused=function(t){if(!arguments.length)return this._paused;var e,i,r=this._timeline;return t!=this._paused&&r&&(v||t||y.wake(),i=(e=r.rawTime())-this._pauseTime,!t&&r.smoothChildTiming&&(this._startTime+=i,this._uncache(!1)),this._pauseTime=t?e:null,this._paused=t,this._active=this.isActive(),!t&&0!=i&&this._initted&&this.duration()&&(e=r.smoothChildTiming?this._totalTime:(e-this._startTime)/this._timeScale,this.render(e,e===this._totalTime,!0))),this._gc&&!t&&this._enabled(!0,!1),this};var L=P("core.SimpleTimeline",function(t){D.call(this,0,t),this.autoRemoveChildren=this.smoothChildTiming=!0});(n=L.prototype=new D).constructor=L,n.kill()._gc=!1,n._first=n._last=n._recent=null,n._sortChildren=!1,n.add=n.insert=function(t,e,i,r){var n,s;if(t._startTime=Number(e||0)+t._delay,t._paused&&this!==t._timeline&&(t._pauseTime=this.rawTime()-(t._timeline.rawTime()-t._pauseTime)),t.timeline&&t.timeline._remove(t,!0),t.timeline=t._timeline=this,t._gc&&t._enabled(!0,!0),n=this._last,this._sortChildren)for(s=t._startTime;n&&n._startTime>s;)n=n._prev;return n?(t._next=n._next,n._next=t):(t._next=this._first,this._first=t),t._next?t._next._prev=t:this._last=t,t._prev=n,this._recent=t,this._timeline&&this._uncache(!0),this},n._remove=function(t,e){return t.timeline===this&&(e||t._enabled(!1,!0),t._prev?t._prev._next=t._next:this._first===t&&(this._first=t._next),t._next?t._next._prev=t._prev:this._last===t&&(this._last=t._prev),t._next=t._prev=t.timeline=null,t===this._recent&&(this._recent=this._last),this._timeline&&this._uncache(!0)),this},n.render=function(t,e,i){var r,n=this._first;for(this._totalTime=this._time=this._rawPrevTime=t;n;)r=n._next,(n._active||t>=n._startTime&&!n._paused&&!n._gc)&&(n._reversed?n.render((n._dirty?n.totalDuration():n._totalDuration)-(t-n._startTime)*n._timeScale,e,i):n.render((t-n._startTime)*n._timeScale,e,i)),n=r},n.rawTime=function(){return v||y.wake(),this._totalTime};function z(t){return t&&t.length&&t!==f&&t[0]&&(t[0]===f||t[0].nodeType&&t[0].style&&!t.nodeType)}var E=P("TweenLite",function(t,e,i){if(D.call(this,e,i),this.render=E.prototype.render,null==t)throw"Cannot tween a null target.";this.target=t="string"!=typeof t?t:E.selector(t)||t;var r,n,s,a=t.jquery||t.length&&t!==f&&t[0]&&(t[0]===f||t[0].nodeType&&t[0].style&&!t.nodeType),o=this.vars.overwrite;if(this._overwrite=o=null==o?Z[E.defaultOverwrite]:"number"==typeof o?o>>0:Z[o],(a||t instanceof Array||t.push&&T(t))&&"number"!=typeof t[0])for(this._targets=s=l(t),this._propLookup=[],this._siblings=[],r=0;r<s.length;r++)(n=s[r])?"string"!=typeof n?n.length&&n!==f&&n[0]&&(n[0]===f||n[0].nodeType&&n[0].style&&!n.nodeType)?(s.splice(r--,1),this._targets=s=s.concat(l(n))):(this._siblings[r]=it(n,this,!1),1===o&&1<this._siblings[r].length&&rt(n,this,null,1,this._siblings[r])):"string"==typeof(n=s[r--]=E.selector(n))&&s.splice(r+1,1):s.splice(r--,1);else this._propLookup={},this._siblings=it(t,this,!1),1===o&&1<this._siblings.length&&rt(t,this,null,1,this._siblings);(this.vars.immediateRender||0===e&&0===this._delay&&!1!==this.vars.immediateRender)&&(this._time=-x,this.render(Math.min(0,-this._delay)))},!0);(n=E.prototype=new D).constructor=E,n.kill()._gc=!1,n.ratio=0,n._firstPT=n._targets=n._overwrittenProps=n._startAt=null,n._notifyPluginsOfEnabled=n._lazy=!1,E.version="2.1.3",E.defaultEase=n._ease=new S(null,null,1,1),E.defaultOverwrite="auto",E.ticker=y,E.autoSleep=120,E.lagSmoothing=function(t,e){y.lagSmoothing(t,e)},E.selector=f.$||f.jQuery||function(t){var e=f.$||f.jQuery;return e?(E.selector=e)(t):(r=r||f.document)?r.querySelectorAll?r.querySelectorAll(t):r.getElementById("#"===t.charAt(0)?t.substr(1):t):t};function I(t){for(var e,i=this._firstPT;i;)e=i.blob?1===t&&null!=this.end?this.end:t?this.join(""):this.start:i.c*t+i.s,i.m?e=i.m.call(this._tween,e,this._target||i.t,this._tween):e<1e-6&&-1e-6<e&&!i.blob&&(e=0),i.f?i.fp?i.t[i.p](i.fp,e):i.t[i.p](e):i.t[i.p]=e,i=i._next}function N(t){return(1e3*t|0)/1e3+""}function j(t,e,i,r){var n,s,a,o,l,h,u,_=[],f=0,c="",p=0;for(_.start=t,_.end=e,t=_[0]=t+"",e=_[1]=e+"",i&&(i(_),t=_[0],e=_[1]),_.length=0,n=t.match(G)||[],s=e.match(G)||[],r&&(r._next=null,r.blob=1,_._firstPT=_._applyPT=r),l=s.length,o=0;o<l;o++)u=s[o],c+=(h=e.substr(f,e.indexOf(u,f)-f))||!o?h:",",f+=h.length,p?p=(p+1)%5:"rgba("===h.substr(-5)&&(p=1),u===n[o]||n.length<=o?c+=u:(c&&(_.push(c),c=""),a=parseFloat(n[o]),_.push(a),_._firstPT={_next:_._firstPT,t:_,p:_.length-1,s:a,c:("="===u.charAt(1)?parseInt(u.charAt(0)+"1",10)*parseFloat(u.substr(2)):parseFloat(u)-a)||0,f:0,m:p&&p<4?Math.round:N}),f+=u.length;return(c+=e.substr(f))&&_.push(c),_.setRatio=I,U.test(e)&&(_.end=null),_}function X(t,e,i,r,n,s,a,o,l){"function"==typeof r&&(r=r(l||0,t));var h=typeof t[e],u="function"!=h?"":e.indexOf("set")||"function"!=typeof t["get"+e.substr(3)]?e:"get"+e.substr(3),_="get"!==i?i:u?a?t[u](a):t[u]():t[e],f="string"==typeof r&&"="===r.charAt(1),c={t:t,p:e,s:_,f:"function"==h,pg:0,n:n||e,m:s?"function"==typeof s?s:Math.round:0,pr:0,c:f?parseInt(r.charAt(0)+"1",10)*parseFloat(r.substr(2)):parseFloat(r)-_||0};return"number"==typeof _&&("number"==typeof r||f)||(a||isNaN(_)||!f&&isNaN(r)||"boolean"==typeof _||"boolean"==typeof r?(c.fp=a,c={t:j(_,f?parseFloat(c.s)+c.c+(c.s+"").replace(/[0-9\-\.]/g,""):r,o||E.defaultStringFilter,c),p:"setRatio",s:0,c:1,f:2,pg:0,n:n||e,pr:0,m:0}):(c.s=parseFloat(_),f||(c.c=parseFloat(r)-c.s||0))),c.c?((c._next=this._firstPT)&&(c._next._prev=c),this._firstPT=c):void 0}var B=[],Y={},G=/(?:(-|-=|\+=)?\d*\.?\d*(?:e[\-+]?\d+)?)[0-9]/gi,U=/[\+-]=-?[\.\d]/,V=E._internals={isArray:T,isSelector:z,lazyTweens:B,blobDif:j},q=E._plugins={},W=V.tweenLookup={},Q=0,H=V.reservedProps={ease:1,delay:1,overwrite:1,onComplete:1,onCompleteParams:1,onCompleteScope:1,useFrames:1,runBackwards:1,startAt:1,onUpdate:1,onUpdateParams:1,onUpdateScope:1,onStart:1,onStartParams:1,onStartScope:1,onReverseComplete:1,onReverseCompleteParams:1,onReverseCompleteScope:1,onRepeat:1,onRepeatParams:1,onRepeatScope:1,easeParams:1,yoyo:1,immediateRender:1,repeat:1,repeatDelay:1,data:1,paused:1,reversed:1,autoCSS:1,lazy:1,onOverwrite:1,callbackScope:1,stringFilter:1,id:1,yoyoEase:1,stagger:1},Z={none:0,all:1,auto:2,concurrent:3,allOnStart:4,preexisting:5,true:1,false:0},$=D._rootFramesTimeline=new L,K=D._rootTimeline=new L,J=30,tt=V.lazyRender=function(){var t,e,i=B.length;for(Y={},t=0;t<i;t++)(e=B[t])&&!1!==e._lazy&&(e.render(e._lazy[0],e._lazy[1],!0),e._lazy=!1);B.length=0};K._startTime=y.time,$._startTime=y.frame,K._active=$._active=!0,setTimeout(tt,1),D._updateRoot=E.render=function(){var t,e,i;if(B.length&&tt(),K.render((y.time-K._startTime)*K._timeScale,!1,!1),$.render((y.frame-$._startTime)*$._timeScale,!1,!1),B.length&&tt(),y.frame>=J){for(i in J=y.frame+(parseInt(E.autoSleep,10)||120),W){for(t=(e=W[i].tweens).length;-1<--t;)e[t]._gc&&e.splice(t,1);0===e.length&&delete W[i]}if((!(i=K._first)||i._paused)&&E.autoSleep&&!$._first&&1===y._listeners.tick.length){for(;i&&i._paused;)i=i._next;i||y.sleep()}}},y.addEventListener("tick",D._updateRoot);function et(t,e,i,r){var n,s,a=t.vars.onOverwrite;return a&&(n=a(t,e,i,r)),(a=E.onOverwrite)&&(s=a(t,e,i,r)),!1!==n&&!1!==s}var it=function(t,e,i){var r,n,s=t._gsTweenID;if(W[s||(t._gsTweenID=s="t"+Q++)]||(W[s]={target:t,tweens:[]}),e&&((r=W[s].tweens)[n=r.length]=e,i))for(;-1<--n;)r[n]===e&&r.splice(n,1);return W[s].tweens},rt=function(t,e,i,r,n){var s,a,o,l;if(1===r||4<=r){for(l=n.length,s=0;s<l;s++)if((o=n[s])!==e)o._gc||o._kill(null,t,e)&&(a=!0);else if(5===r)break;return a}var h,u=e._startTime+x,_=[],f=0,c=0===e._duration;for(s=n.length;-1<--s;)(o=n[s])===e||o._gc||o._paused||(o._timeline!==e._timeline?(h=h||nt(e,0,c),0===nt(o,h,c)&&(_[f++]=o)):o._startTime<=u&&o._startTime+o.totalDuration()/o._timeScale>u&&((c||!o._initted)&&u-o._startTime<=2e-8||(_[f++]=o)));for(s=f;-1<--s;)if(l=(o=_[s])._firstPT,2===r&&o._kill(i,t,e)&&(a=!0),2!==r||!o._firstPT&&o._initted&&l){if(2!==r&&!et(o,e))continue;o._enabled(!1,!1)&&(a=!0)}return a},nt=function(t,e,i){for(var r=t._timeline,n=r._timeScale,s=t._startTime;r._timeline;){if(s+=r._startTime,n*=r._timeScale,r._paused)return-100;r=r._timeline}return e<(s/=n)?s-e:i&&s===e||!t._initted&&s-e<2e-8?x:(s+=t.totalDuration()/t._timeScale/n)>e+x?0:s-e-x};n._init=function(){var t,e,i,r,n,s,a=this.vars,o=this._overwrittenProps,l=this._duration,h=!!a.immediateRender,u=a.ease,_=this._startAt;if(a.startAt){for(r in _&&(_.render(-1,!0),_.kill()),n={},a.startAt)n[r]=a.startAt[r];if(n.data="isStart",n.overwrite=!1,n.immediateRender=!0,n.lazy=h&&!1!==a.lazy,n.startAt=n.delay=null,n.onUpdate=a.onUpdate,n.onUpdateParams=a.onUpdateParams,n.onUpdateScope=a.onUpdateScope||a.callbackScope||this,this._startAt=E.to(this.target||{},0,n),h)if(0<this._time)this._startAt=null;else if(0!==l)return}else if(a.runBackwards&&0!==l)if(_)_.render(-1,!0),_.kill(),this._startAt=null;else{for(r in 0!==this._time&&(h=!1),i={},a)H[r]&&"autoCSS"!==r||(i[r]=a[r]);if(i.overwrite=0,i.data="isFromStart",i.lazy=h&&!1!==a.lazy,i.immediateRender=h,this._startAt=E.to(this.target,0,i),h){if(0===this._time)return}else this._startAt._init(),this._startAt._enabled(!1),this.vars.immediateRender&&(this._startAt=null)}if(this._ease=u=u?u instanceof S?u:"function"==typeof u?new S(u,a.easeParams):O[u]||E.defaultEase:E.defaultEase,a.easeParams instanceof Array&&u.config&&(this._ease=u.config.apply(u,a.easeParams)),this._easeType=this._ease._type,this._easePower=this._ease._power,this._firstPT=null,this._targets)for(s=this._targets.length,t=0;t<s;t++)this._initProps(this._targets[t],this._propLookup[t]={},this._siblings[t],o?o[t]:null,t)&&(e=!0);else e=this._initProps(this.target,this._propLookup,this._siblings,o,0);if(e&&E._onPluginEvent("_onInitAllProps",this),o&&(this._firstPT||"function"!=typeof this.target&&this._enabled(!1,!1)),a.runBackwards)for(i=this._firstPT;i;)i.s+=i.c,i.c=-i.c,i=i._next;this._onUpdate=a.onUpdate,this._initted=!0},n._initProps=function(t,e,i,r,n){var s,a,o,l,h,u;if(null==t)return!1;for(s in Y[t._gsTweenID]&&tt(),this.vars.css||t.style&&t!==f&&t.nodeType&&q.css&&!1!==this.vars.autoCSS&&function(t,e){var i,r={};for(i in t)H[i]||i in e&&"transform"!==i&&"x"!==i&&"y"!==i&&"width"!==i&&"height"!==i&&"className"!==i&&"border"!==i||!(!q[i]||q[i]&&q[i]._autoCSS)||(r[i]=t[i],delete t[i]);t.css=r}(this.vars,t),this.vars)if(u=this.vars[s],H[s])u&&(u instanceof Array||u.push&&T(u))&&-1!==u.join("").indexOf("{self}")&&(this.vars[s]=u=this._swapSelfInParams(u,this));else if(q[s]&&(l=new q[s])._onInitTween(t,this.vars[s],this,n)){for(this._firstPT=h={_next:this._firstPT,t:l,p:"setRatio",s:0,c:1,f:1,n:s,pg:1,pr:l._priority,m:0},a=l._overwriteProps.length;-1<--a;)e[l._overwriteProps[a]]=this._firstPT;(l._priority||l._onInitAllProps)&&(o=!0),(l._onDisable||l._onEnable)&&(this._notifyPluginsOfEnabled=!0),h._next&&(h._next._prev=h)}else e[s]=X.call(this,t,s,"get",u,s,0,null,this.vars.stringFilter,n);return r&&this._kill(r,t)?this._initProps(t,e,i,r,n):1<this._overwrite&&this._firstPT&&1<i.length&&rt(t,this,e,this._overwrite,i)?(this._kill(e,t),this._initProps(t,e,i,r,n)):(this._firstPT&&(!1!==this.vars.lazy&&this._duration||this.vars.lazy&&!this._duration)&&(Y[t._gsTweenID]=!0),o)},n.render=function(t,e,i){var r,n,s,a,o=this,l=o._time,h=o._duration,u=o._rawPrevTime;if(h-x<=t&&0<=t)o._totalTime=o._time=h,o.ratio=o._ease._calcEnd?o._ease.getRatio(1):1,o._reversed||(r=!0,n="onComplete",i=i||o._timeline.autoRemoveChildren),0!==h||!o._initted&&o.vars.lazy&&!i||(o._startTime===o._timeline._duration&&(t=0),(u<0||t<=0&&-x<=t||u===x&&"isPause"!==o.data)&&u!==t&&(i=!0,x<u&&(n="onReverseComplete")),o._rawPrevTime=a=!e||t||u===t?t:x);else if(t<x)o._totalTime=o._time=0,o.ratio=o._ease._calcEnd?o._ease.getRatio(0):0,(0!==l||0===h&&0<u)&&(n="onReverseComplete",r=o._reversed),-x<t?t=0:t<0&&(o._active=!1,0!==h||!o._initted&&o.vars.lazy&&!i||(0<=u&&(u!==x||"isPause"!==o.data)&&(i=!0),o._rawPrevTime=a=!e||t||u===t?t:x)),(!o._initted||o._startAt&&o._startAt.progress())&&(i=!0);else if(o._totalTime=o._time=t,o._easeType){var _=t/h,f=o._easeType,c=o._easePower;(1===f||3===f&&.5<=_)&&(_=1-_),3===f&&(_*=2),1===c?_*=_:2===c?_*=_*_:3===c?_*=_*_*_:4===c&&(_*=_*_*_*_),o.ratio=1===f?1-_:2===f?_:t/h<.5?_/2:1-_/2}else o.ratio=o._ease.getRatio(t/h);if(o._time!==l||i){if(!o._initted){if(o._init(),!o._initted||o._gc)return;if(!i&&o._firstPT&&(!1!==o.vars.lazy&&o._duration||o.vars.lazy&&!o._duration))return o._time=o._totalTime=l,o._rawPrevTime=u,B.push(o),void(o._lazy=[t,e]);o._time&&!r?o.ratio=o._ease.getRatio(o._time/h):r&&o._ease._calcEnd&&(o.ratio=o._ease.getRatio(0===o._time?0:1))}for(!1!==o._lazy&&(o._lazy=!1),o._active||!o._paused&&o._time!==l&&0<=t&&(o._active=!0),0===l&&(o._startAt&&(0<=t?o._startAt.render(t,!0,i):n=n||"_dummyGS"),!o.vars.onStart||0===o._time&&0!==h||(e||o._callback("onStart"))),s=o._firstPT;s;)s.f?s.t[s.p](s.c*o.ratio+s.s):s.t[s.p]=s.c*o.ratio+s.s,s=s._next;o._onUpdate&&(t<0&&o._startAt&&-1e-4!==t&&o._startAt.render(t,!0,i),e||(o._time!==l||r||i)&&o._callback("onUpdate")),!n||o._gc&&!i||(t<0&&o._startAt&&!o._onUpdate&&-1e-4!==t&&o._startAt.render(t,!0,i),r&&(o._timeline.autoRemoveChildren&&o._enabled(!1,!1),o._active=!1),!e&&o.vars[n]&&o._callback(n),0===h&&o._rawPrevTime===x&&a!==x&&(o._rawPrevTime=0))}},n._kill=function(t,e,i){if("all"===t&&(t=null),null==t&&(null==e||e===this.target))return this._lazy=!1,this._enabled(!1,!1);e="string"!=typeof e?e||this._targets||this.target:E.selector(e)||e;var r,n,s,a,o,l,h,u,_,f=i&&this._time&&i._startTime===this._startTime&&this._timeline===i._timeline,c=this._firstPT;if((T(e)||z(e))&&"number"!=typeof e[0])for(r=e.length;-1<--r;)this._kill(t,e[r],i)&&(l=!0);else{if(this._targets){for(r=this._targets.length;-1<--r;)if(e===this._targets[r]){o=this._propLookup[r]||{},this._overwrittenProps=this._overwrittenProps||[],n=this._overwrittenProps[r]=t?this._overwrittenProps[r]||{}:"all";break}}else{if(e!==this.target)return!1;o=this._propLookup,n=this._overwrittenProps=t?this._overwrittenProps||{}:"all"}if(o){if(h=t||o,u=t!==n&&"all"!==n&&t!==o&&("object"!=typeof t||!t._tempKill),i&&(E.onOverwrite||this.vars.onOverwrite)){for(s in h)o[s]&&(_=_||[]).push(s);if((_||!t)&&!et(this,i,e,_))return!1}for(s in h)(a=o[s])&&(f&&(a.f?a.t[a.p](a.s):a.t[a.p]=a.s,l=!0),a.pg&&a.t._kill(h)&&(l=!0),a.pg&&0!==a.t._overwriteProps.length||(a._prev?a._prev._next=a._next:a===this._firstPT&&(this._firstPT=a._next),a._next&&(a._next._prev=a._prev),a._next=a._prev=null),delete o[s]),u&&(n[s]=1);!this._firstPT&&this._initted&&c&&this._enabled(!1,!1)}}return l},n.invalidate=function(){this._notifyPluginsOfEnabled&&E._onPluginEvent("_onDisable",this);var t=this._time;return this._firstPT=this._overwrittenProps=this._startAt=this._onUpdate=null,this._notifyPluginsOfEnabled=this._active=this._lazy=!1,this._propLookup=this._targets?{}:[],D.prototype.invalidate.call(this),this.vars.immediateRender&&(this._time=-x,this.render(t,!1,!1!==this.vars.lazy)),this},n._enabled=function(t,e){if(v||y.wake(),t&&this._gc){var i,r=this._targets;if(r)for(i=r.length;-1<--i;)this._siblings[i]=it(r[i],this,!0);else this._siblings=it(this.target,this,!0)}return D.prototype._enabled.call(this,t,e),!(!this._notifyPluginsOfEnabled||!this._firstPT)&&E._onPluginEvent(t?"_onEnable":"_onDisable",this)},E.to=function(t,e,i){return new E(t,e,i)},E.from=function(t,e,i){return i.runBackwards=!0,i.immediateRender=0!=i.immediateRender,new E(t,e,i)},E.fromTo=function(t,e,i,r){return r.startAt=i,r.immediateRender=0!=r.immediateRender&&0!=i.immediateRender,new E(t,e,r)},E.delayedCall=function(t,e,i,r,n){return new E(e,0,{delay:t,onComplete:e,onCompleteParams:i,callbackScope:r,onReverseComplete:e,onReverseCompleteParams:i,immediateRender:!1,lazy:!1,useFrames:n,overwrite:0})},E.set=function(t,e){return new E(t,0,e)},E.getTweensOf=function(t,e){if(null==t)return[];var i,r,n,s;if(t="string"!=typeof t?t:E.selector(t)||t,(T(t)||z(t))&&"number"!=typeof t[0]){for(i=t.length,r=[];-1<--i;)r=r.concat(E.getTweensOf(t[i],e));for(i=r.length;-1<--i;)for(s=r[i],n=i;-1<--n;)s===r[n]&&r.splice(i,1)}else if(t._gsTweenID)for(i=(r=it(t).concat()).length;-1<--i;)(r[i]._gc||e&&!r[i].isActive())&&r.splice(i,1);return r||[]},E.killTweensOf=E.killDelayedCallsTo=function(t,e,i){"object"==typeof e&&(i=e,e=!1);for(var r=E.getTweensOf(t,e),n=r.length;-1<--n;)r[n]._kill(i,t)};var st=P("plugins.TweenPlugin",function(t,e){this._overwriteProps=(t||"").split(","),this._propName=this._overwriteProps[0],this._priority=e||0,this._super=st.prototype},!0);if(n=st.prototype,st.version="1.19.0",st.API=2,n._firstPT=null,n._addTween=X,n.setRatio=I,n._kill=function(t){var e,i=this._overwriteProps,r=this._firstPT;if(null!=t[this._propName])this._overwriteProps=[];else for(e=i.length;-1<--e;)null!=t[i[e]]&&i.splice(e,1);for(;r;)null!=t[r.n]&&(r._next&&(r._next._prev=r._prev),r._prev?(r._prev._next=r._next,r._prev=null):this._firstPT===r&&(this._firstPT=r._next)),r=r._next;return!1},n._mod=n._roundProps=function(t){for(var e,i=this._firstPT;i;)(e=t[this._propName]||null!=i.n&&t[i.n.split(this._propName+"_").join("")])&&"function"==typeof e&&(2===i.f?i.t._applyPT.m=e:i.m=e),i=i._next},E._onPluginEvent=function(t,e){var i,r,n,s,a,o=e._firstPT;if("_onInitAllProps"===t){for(;o;){for(a=o._next,r=n;r&&r.pr>o.pr;)r=r._next;(o._prev=r?r._prev:s)?o._prev._next=o:n=o,(o._next=r)?r._prev=o:s=o,o=a}o=e._firstPT=n}for(;o;)o.pg&&"function"==typeof o.t[t]&&o.t[t]()&&(i=!0),o=o._next;return i},st.activate=function(t){for(var e=t.length;-1<--e;)t[e].API===st.API&&(q[(new t[e])._propName]=t[e]);return!0},o.plugin=function(t){if(!(t&&t.propName&&t.init&&t.API))throw"illegal plugin definition.";var e,i=t.propName,r=t.priority||0,n=t.overwriteProps,s={init:"_onInitTween",set:"setRatio",kill:"_kill",round:"_mod",mod:"_mod",initAll:"_onInitAllProps"},a=P("plugins."+i.charAt(0).toUpperCase()+i.substr(1)+"Plugin",function(){st.call(this,i,r),this._overwriteProps=n||[]},!0===t.global),o=a.prototype=new st(i);for(e in(o.constructor=a).API=t.API,s)"function"==typeof t[e]&&(o[s[e]]=t[e]);return a.version=t.version,st.activate([a]),a},e=f._gsQueue){for(i=0;i<e.length;i++)e[i]();for(n in w)w[n].func||f.console.log("GSAP encountered missing dependency: "+n)}v=!1}("undefined"!=typeof module&&module.exports&&"undefined"!=typeof global?global:this||window,"TweenMax"),function(t){"function"==typeof define&&define.amd?define(t):"undefined"!=typeof exports?module.exports=t():t()}(function(){(void 0!==LS_GSAP?LS_GSAP:window).SplitType=function(C,l,s){function h(t){return null!==t&&"object"==typeof t}function u(t){return h(t)&&"number"==typeof t.length&&0<t.length}function _(t){return h(t)&&/^(1|3|11)$/.test(t.nodeType)}function R(t,e,i){for(var r=Object(t),n=u(r)?r:h(o=r)&&"[object Object]"===Object.prototype.toString.call(o)?c(r):[r],s=parseInt(n.length)||0,a=0;a<s;a++)e.call(i,n[a],a,r);var o}function i(i,r){return i=Object(i),r=Object(r),Object.getOwnPropertyNames(i).reduce(function(t,e){return n(t,e,p(r,e)||p(i,e))},{})}function A(t,e,i){var r,n={};return h(t)&&(r=t[a]||(t[a]=++f),n=o[r]||(o[r]={})),i===s?e===s?n:n[e]:e!==s?n[e]=i:void 0}function M(t,i){var r=l.createElement(t);return i===s||R(i,function(t){var e=i[t];if(null!==e)switch(t){case"textContent":r.textContent=e;break;case"innerHTML":r.innerHTML=e;break;case"children":R(e,function(t){_(t)&&r.appendChild(t)});break;default:r.setAttribute(t,e)}}),r}function r(t,e){return this instanceof r?(this.isSplit=!1,this.settings=i(d,e),this.elements=function(t){var e,i,r,n,s,a,o=[];if("string"==typeof t&&(t="#"===(e=t.trim())[0]&&!/[^\w]/.test(i=e.slice(1))?l.getElementById(i):l.querySelectorAll(e)),e||_(t))return _(t)?[t]:F.call(t);if(u(t))for(s=0,r=t.length;s<r;s++)if(u(t[s]))for(a=0,n=t[s].length;a<n;a++)_(t[s][a])&&o.push(t[s][a]);else _(t[s])&&o.push(t[s]);return o}(t),void(this.elements.length&&(this.originals=this.elements.map(function(t){return A(t).html=A(t).html||t.innerHTML}),this.split()))):new r(t,e)}if(l.addEventListener&&Function.prototype.bind){var a="splitType"+ +new Date,o={},f=0,D=Array.prototype.push,F=Array.prototype.slice,c=Object.keys,n=(Object.prototype.hasOwnProperty,Object.defineProperty),p=(Object.defineProperties,Object.getOwnPropertyDescriptor),L=l.createDocumentFragment.bind(l),z=l.createTextNode.bind(l),d={splitClass:"",lineClass:"line",wordClass:"word",charClass:"char",split:"lines, words, chars",position:"relative",absolute:!1,tagName:"div",DEBUG:!1};return n(r,"defaults",{get:function(){return d},set:function(t){d=i(d,t)}}),r.prototype.split=function(t){this.revert(),this.lines=[],this.words=[],this.chars=[],t!==s&&(this.settings=i(this.settings,t)),R(this.elements,function(t){(function(t){var e,i,r,n,s=this.settings,a=s.tagName,o="B"+ +new Date+"R",l=s.split,h=-1!==l.indexOf("lines"),u=-1!==l.indexOf("words"),_=-1!==l.indexOf("chars"),f="absolute"===s.position||!0===s.absolute,c=M("div"),p=[],d=[];if(r=h?M("div"):L(),c.innerHTML=t.innerHTML.replace(/<br\s*\/?>/g," "+o+" "),n=c.textContent.replace(/\s+/g," ").trim().split(" ").map(function(t){if(t===o)return r.appendChild(M("br")),null;if(_){var e=t.split("").map(function(t){return M(a,{class:s.charClass+" "+s.splitClass,style:"display: inline-block;",textContent:t})});D.apply(d,e)}return u||h?(i=M(a,{class:s.wordClass+" "+s.splitClass,style:"display: inline-block; position:"+(u?"relative":"static;"),children:_?e:null,textContent:_?null:t}),r.appendChild(i)):R(e,function(t){r.appendChild(t)}),r.appendChild(z(" ")),i},this).filter(function(t){return t}),t.innerHTML="",t.appendChild(r),D.apply(this.words,n),D.apply(this.chars,d),f||h){var m,g,y,v,x,T,w,b,P,S,O,k=[];w=A(t).nodes=t.getElementsByTagName(a),b=t.parentElement,P=t.nextElementSibling,S=C.getComputedStyle(t),O=S.textAlign,f&&(v={left:r.offsetLeft,top:r.offsetTop,width:r.offsetWidth},T=t.offsetWidth,x=t.offsetHeight,A(t).cssWidth=t.style.width,A(t).cssHeight=t.style.height),R(w,function(t){if(t!==r){var e,i=t.parentElement===r;h&&i&&((e=A(t).top=t.offsetTop)!==g&&(g=e,k.push(m=[])),m.push(t)),f&&(A(t).top=e||t.offsetTop,A(t).left=t.offsetLeft,A(t).width=t.offsetWidth,A(t).height=y=y||t.offsetHeight)}}),b.removeChild(t),h&&(r=L(),p=k.map(function(t){return r.appendChild(e=M(a,{class:s.lineClass+" "+s.splitClass,style:"display: block; text-align:"+O+"; width: 100%;"})),f&&(A(e).type="line",A(e).top=A(t[0]).top,A(e).height=y),R(t,function(t){u?e.appendChild(t):_?F.call(t.children).forEach(function(t){e.appendChild(t)}):e.appendChild(z(t.textContent)),e.appendChild(z(" "))}),e}),t.replaceChild(r,t.firstChild),D.apply(this.lines,p)),f&&(t.style.width=t.style.width||T+"px",t.style.height=x+"px",R(w,function(t){var e="line"===A(t).type,i=!e&&"line"===A(t.parentElement).type;t.style.top=i?0:A(t).top+"px",t.style.left=e?v.left+"px":(i?A(t).left-v.left:A(t).left)+"px",t.style.height=A(t).height+"px",t.style.width=e?v.width+"px":A(t).width+"px",t.style.position="absolute"})),P?b.insertBefore(t,P):b.appendChild(t)}}).call(this,t),A(t).isSplit=!0},this),this.isSplit=!0,R(this.elements,function(t){for(var e=A(t).nodes||[],i=0,r=e.length;i<r;i++)(s=(n=e[i])&&n[a])&&(delete n[s],delete o[s]);var n,s})},r.prototype.revert=function(){this.isSplit&&(this.lines=this.words=this.chars=null),R(this.elements,function(t){A(t).isSplit&&A(t).html&&(t.innerHTML=A(t).html,t.style.height=A(t).cssHeight||"",t.style.width=A(t).cssWidth||"",this.isSplit=!1)},this)},r}}(window,document)}),"object"==typeof LS_Meta&&LS_Meta.fixGSAP&&(window.GreenSockGlobals=null,window._gsQueue=null,window._gsDefine=null,delete window.GreenSockGlobals,delete window._gsQueue,delete window._gsDefine,window.GreenSockGlobals=LS_oldGS,window._gsQueue=LS_oldGSQueue,window._gsDefine=LS_oldGSDefine),window._layerSlider={globals:{youTubeIsReady:!1,vimeoIsReady:!1},GSAP:void 0!==LS_GSAP&&LS_GSAP,pluginsLoaded:[],pluginsNotLoaded:[],pluginsBeingLoaded:[],plugins:{},slidersList:{},currentScript:document.currentScript,lsScript:jQuery('script[src*="layerslider.kreaturamedia.jquery.js"]')[0],scriptPath:"",pluginsPath:!1,showNotice:function(t,e,i,r){var n,s,a,o=jQuery(t),l="ls-issue-"+e;switch(e){case"jquery":a="Multiple jQuery issue",s='It looks like that another plugin or your theme loads an extra copy of the jQuery library causing problems for LayerSlider to show your sliders. Please navigate from your WordPress admin sidebar to LayerSlider -> Options -> Advanced and enable the "Include scripts in the footer" option.';break;case"oldjquery":a="Old jQuery issue",s="It looks like you are using an old version ("+i+") of the jQuery library. LayerSlider requires at least version "+r+" or newer. Please update jQuery to 1.10.x or higher. Important: Please do not use the jQuery Updater plugin on WordPress as it can cause issues in certain cases."}o.each(function(){(n=jQuery(this)).hasClass(l)||(n.addClass(l),jQuery('<div class="ls-slider-notification"><i class="ls-slider-notification-logo">!</i><strong>LayerSlider: '+a+"</strong><span>"+s+"</span></div>").insertBefore(n))})},removeSlider:function(t){this.slidersList[t]=null,delete this.slidersList[t]},checkVersions:function(t,e){for(var i=t.split("."),r=e.split("."),n=0;n<i.length;++n){if(r.length==n)return!1;if(parseInt(i[n])!=parseInt(r[n]))return!(parseInt(i[n])>parseInt(r[n]))}return i.length,r.length,!0}},Number.prototype.indexOf=function(t){return(""+this).indexOf(t)};
// source --> https://ermafa-passage.de/wp-content/plugins/LayerSlider/assets/static/layerslider/js/layerslider.kreaturamedia.jquery.js?ver=7.8.0 
/*
	* LayerSlider
	*
	* (c) 2011-2023 George Krupa, John Gera & Kreatura Media
	*
	* LayerSlider home:		https://layerslider.com/
	* Licensing:			https://layerslider.com/licensing/
*/



;!function(ie){"use strict";window._layerSliders={},window._lsData={$overflowWrapper:ie("body").length?ie("body"):ie("html"),isMobile:!!navigator.userAgent.match(/(iPhone|iPod|iPad|Android|BlackBerry|BB10|webOS|Windows Phone|IEMobile|mobi|opera mini|nexus 7)/i)||navigator.maxTouchPoints&&2<navigator.maxTouchPoints&&/Macintosh/.test(navigator.userAgent),supportOrientation:!!window.DeviceOrientationEvent,screen:{},document:{},viewport:{},scroll:{direction:"down"},resize:{},getScreenSize:function(){window._lsData.screen={width:screen.width,height:screen.height,ratio:screen.width/screen.height}},slide:{keys:{slidedelay:["data","duration"],duration:["data","duration"],timeshift:["data","timeShift"],transition2d:["data","transition2d"],transition3d:["data","transition3d"],transitionorigami:["data","transitionorigami"],customtransition2d:["data","customtransition2d"],customtransition3d:["data","customtransition3d"],transitionduration:["data","transitionDuration"],backgroundsize:["data","backgroundSize"],bgsize:["data","backgroundSize"],backgroundposition:["data","backgroundPosition"],bgposition:["data","backgroundPosition"],backgroundcolor:["data","backgroundColor"],bgcolor:["data","backgroundColor"],thumbnail:["data","thumbnail"],deeplink:["data","deeplink"],overflow:["data","overflow"],kenburnspan:["kenBurns","pan"],kenburnszoom:["kenBurns","zoom"],kenburnsrotation:["kenBurns","rotation"],kenburnsrotate:["kenBurns","rotation"],kenburnsscale:["kenBurns","scale"],filterfrom:["filter","from"],filterto:["filter","to"],parallaxtype:["parallax","type"],parallaxevent:["parallax","event"],parallaxpath:["parallax","path"],parallaxdirection:["parallax","direction"],parallaxduration:["parallax","duration"],parallaxcount:["parallax","count"],parallaxdelay:["parallax","startAt"],parallaxstartat:["parallax","startAt"],parallaxaxis:["parallax","axis"],parallaxtransformorigin:["parallax","transformOrigin"],parallaxdurationmove:["parallax","durationMove"],parallaxdurationleave:["parallax","durationLeave"],parallaxrotate:["parallax","rotation"],parallaxrotation:["parallax","rotation"],parallaxdistance:["parallax","distance"],parallaxtransformperspective:["parallax","transformPerspective"],globalhover:["data","globalhover"]}},layer:{keys:{keyframe:["is"],responsive:["is"],pinned:["is"],position:["settings"],static:["settings"],minresponsiveratio:["settings"],maxresponsiveratio:["settings"],minfontsize:["styleSettings"],minmobilefontsize:["styleSettings"],overlay:["styleSettings"],pointerevents:["styleSettings"],smartbg:["styleSettings"],autoplay:["mediaSettings"],controls:["mediaSettings"],showinfo:["mediaSettings"],thumbnail:["poster","mediaSettings"],poster:["mediaSettings"],volume:["mediaSettings"],muted:["mediaSettings"],loopmedia:["loop","mediaSettings"],backgroundvideo:["backgroundVideo","mediaSettings"],fadein:["opacity","inLayerFromCSS"],opacityin:["opacity","inLayerFromCSS"],rotatein:["rotation","inLayerFromCSS"],rotatexin:["rotationX","inLayerFromCSS"],rotateyin:["rotationY","inLayerFromCSS"],rotationin:["rotation","inLayerFromCSS"],rotationxin:["rotationX","inLayerFromCSS"],rotationyin:["rotationY","inLayerFromCSS"],scalein:["scale","inLayerFromCSS"],scalexin:["scaleX","inLayerFromCSS"],scaleyin:["scaleY","inLayerFromCSS"],skewxin:["skewX","inLayerFromCSS"],skewyin:["skewY","inLayerFromCSS"],bgcolorin:["backgroundColor","inLayerStyleFromCSS"],colorin:["color","inLayerStyleFromCSS"],radiusin:["borderRadius","inLayerStyleShouldBeConvertedFrom"],widthin:["width","inLayerStyleShouldBeConvertedFrom"],heightin:["height","inLayerStyleShouldBeConvertedFrom"],filterin:["filter","inLayerStyleShouldBeConvertedFrom"],rotate:["rotation","inLayerToCSS"],rotatex:["rotationX","inLayerToCSS"],rotatey:["rotationY","inLayerToCSS"],rotation:["rotation","inLayerToCSS"],rotationx:["rotationX","inLayerToCSS"],rotationy:["rotationY","inLayerToCSS"],scale:["scale","inLayerToCSS"],scalex:["scaleX","inLayerToCSS"],scaley:["scaleY","inLayerToCSS"],skewx:["skewX","inLayerToCSS"],skewy:["skewY","inLayerToCSS"],transformoriginin:["transformOrigin","inLayerShouldBeConverted"],offsetxin:["x","inLayerShouldBeConverted"],offsetyin:["y","inLayerShouldBeConverted"],clipin:["clip","inClipShouldBeConverted"],delayin:["startAt","in"],startatin:["startAt","in"],instartat:["startAt","in"],durationin:["duration","in"],easein:["ease","in"],easingin:["ease","in"],transitionin:["enabled","in"],transformmirrorin:["mirror","in"],skipviewport:["skipViewport","settings"],textfadein:["opacity","textInNodesFrom"],textopacityin:["opacity","textInNodesFrom"],textrotatein:["rotation","textInNodesFrom"],textrotatexin:["rotationX","textInNodesFrom"],textrotateyin:["rotationY","textInNodesFrom"],textrotationin:["rotation","textInNodesFrom"],textrotationxin:["rotationX","textInNodesFrom"],textrotationyin:["rotationY","textInNodesFrom"],textscalein:["scale","textInNodesFrom"],textscalexin:["scaleX","textInNodesFrom"],textscaleyin:["scaleY","textInNodesFrom"],textskewxin:["skewX","textInNodesFrom"],textskewyin:["skewY","textInNodesFrom"],textcolorin:["color","textInNodesFrom"],textoverflowin:["overflow","textInLayerStyle"],texteasein:["ease","textInNodesTo"],texteasingin:["ease","textInNodesTo"],texttransformoriginin:["transformOrigin","textInShouldBeConverted"],textoffsetxin:["x","textInShouldBeConverted"],textoffsetyin:["y","textInShouldBeConverted"],texttypein:["type","textIn"],textshiftin:["shiftNodes","textIn"],textdelayin:["startAt","textIn"],textstartatin:["startAt","textIn"],textinstartat:["startAt","textIn"],textdurationin:["duration","textIn"],texttransitionin:["enabled","textIn"],texttransformmirrorin:["mirror","textIn"],fadeout:["opacity","outLayerToCSS"],opacityout:["opacity","outLayerToCSS"],rotateout:["rotation","outLayerToCSS"],rotatexout:["rotationX","outLayerToCSS"],rotateyout:["rotationY","outLayerToCSS"],rotationout:["rotation","outLayerToCSS"],rotationxout:["rotationX","outLayerToCSS"],rotationyout:["rotationY","outLayerToCSS"],scaleout:["scale","outLayerToCSS"],scalexout:["scaleX","outLayerToCSS"],scaleyout:["scaleY","outLayerToCSS"],skewxout:["skewX","outLayerToCSS"],skewyout:["skewY","outLayerToCSS"],bgcolorout:["backgroundColor","outLayerStyleToCSS"],colorout:["color","outLayerStyleToCSS"],radiusout:["borderRadius","outLayerStyleShouldBeConvertedTo"],widthout:["width","outLayerStyleShouldBeConvertedTo"],heightout:["height","outLayerStyleShouldBeConvertedTo"],filterout:["filter","outLayerStyleShouldBeConvertedTo"],transformoriginout:["transformOrigin","outLayerShouldBeConverted"],offsetxout:["x","outLayerShouldBeConverted"],offsetyout:["y","outLayerShouldBeConverted"],clipout:["clip","outClipShouldBeConverted"],showuntil:["showUntil","out"],startatout:["startAt","out"],outstartat:["startAt","out"],durationout:["duration","out"],easeout:["ease","out"],easingout:["ease","out"],transitionout:["enabled","out"],transformmirrorout:["mirror","out"],textfadeout:["opacity","textOutNodesTo"],textopacityout:["opacity","textOutNodesTo"],textrotateout:["rotation","textOutNodesTo"],textrotatexout:["rotationX","textOutNodesTo"],textrotateyout:["rotationY","textOutNodesTo"],textrotationout:["rotation","textOutNodesTo"],textrotationxout:["rotationX","textOutNodesTo"],textrotationyout:["rotationY","textOutNodesTo"],textscaleout:["scale","textOutNodesTo"],textscalexout:["scaleX","textOutNodesTo"],textscaleyout:["scaleY","textOutNodesTo"],textskewxout:["skewX","textOutNodesTo"],textskewyout:["skewY","textOutNodesTo"],textcolorout:["color","textOutNodesTo"],texteaseout:["ease","textOutNodesTo"],texteasingout:["ease","textOutNodesTo"],texttransformoriginout:["transformOrigin","textOutShouldBeConverted"],textoffsetxout:["x","textOutShouldBeConverted"],textoffsetyout:["y","textOutShouldBeConverted"],textoverflowout:["overflow","textOutLayerStyle"],texttypeout:["type","textOut"],textshiftout:["shiftNodes","textOut"],textdelayout:["startAt","textOut"],textstartatout:["startAt","textOut"],textoutstartat:["startAt","textOut"],textdurationout:["duration","textOut"],texttransitionout:["enabled","textOut"],texttransformmirrorout:["mirror","textOut"],loopopacity:["opacity","loopToCSS"],looprotate:["rotation","loopToCSS"],looprotatex:["rotationX","loopToCSS"],looprotatey:["rotationY","loopToCSS"],looprotation:["rotation","loopToCSS"],looprotationx:["rotationX","loopToCSS"],looprotationy:["rotationY","loopToCSS"],loopscale:["scale","loopToCSS"],loopscalex:["scaleX","loopToCSS"],loopscaley:["scaleY","loopToCSS"],loopskewx:["skewX","loopToCSS"],loopskewy:["skewY","loopToCSS"],looptransformorigin:["transformOrigin","loopLayerShouldBeConverted"],loopoffsetx:["x","loopLayerShouldBeConverted"],loopoffsety:["y","loopLayerShouldBeConverted"],loopfilter:["filter","loopLayerShouldBeConverted"],loopclip:["clip","loopClipShouldBeConverted"],loopdelay:["startAt","loop"],loopstartat:["startAt","loop"],loopduration:["duration","loop"],loopcount:["count","loop"],looprepeatdelay:["repeatDelay","loop"],loopyoyo:["yoyo","loop"],loopease:["ease","loop"],loopeasing:["ease","loop"],loop:["enabled","loop"],hoveropacity:["opacity","hoverToCSS"],hoverrotate:["rotation","hoverToCSS"],hoverrotatex:["rotationX","hoverToCSS"],hoverrotatey:["rotationY","hoverToCSS"],hoverrotation:["rotation","hoverToCSS"],hoverrotationx:["rotationX","hoverToCSS"],hoverrotationy:["rotationY","hoverToCSS"],hoverscale:["scale","hoverToCSS"],hoverscalex:["scaleX","hoverToCSS"],hoverscaley:["scaleY","hoverToCSS"],hoverskewx:["skewX","hoverToCSS"],hoverskewy:["skewY","hoverToCSS"],hoverbgcolor:["backgroundColor","hoverToCSS"],hovercolor:["color","hoverToCSS"],hoverease:["easeIn","hover"],hovereasing:["easeIn","hover"],hovereasein:["easeIn","hover"],hovereasingin:["easeIn","hover"],hovereaseout:["easeOut","hover"],hovereasingout:["easeOut","hover"],hoverduration:["durationIn","hover"],hoverdurationin:["durationIn","hover"],hoverdurationout:["durationOut","hover"],hoveralwaysontop:["alwaysOnTop","hover"],hoveroffsetx:["x","hoverShouldBeConverted"],hoveroffsety:["y","hoverShouldBeConverted"],hoverfilter:["filter","hoverShouldBeConverted"],hoverborderradius:["borderRadius","hoverShouldBeConverted"],hoverradius:["borderRadius","hoverShouldBeConverted"],hovertransformorigin:["transformOrigin","hoverShouldBeConverted"],hover:["enabled","hover"],kenburnspan:["pan","kenBurns"],kenburnszoom:["zoom","kenBurns"],kenburnsrotation:["rotation","kenBurns"],kenburnsrotate:["rotation","kenBurns"],kenburnsscale:["scale","kenBurns"],parallaxlevel:["level","parallax"],parallaxtype:["type","parallax"],parallaxevent:["event","parallax"],parallaxpath:["path","parallax"],parallaxdirection:["direction","parallax"],parallaxduration:["duration","parallax"],parallaxcount:["count","parallax"],parallaxdelay:["startAt","parallax"],parallaxstartat:["startAt","parallax"],parallaxaxis:["axis","parallax"],parallaxtransformorigin:["transformOrigin","parallax"],parallaxdurationmove:["durationMove","parallax"],parallaxdurationleave:["durationLeave","parallax"],parallaxrotate:["rotation","parallax"],parallaxrotation:["rotation","parallax"],parallaxdistance:["distance","parallax"],parallax:["enabled","parallax"],scroll:["enabled","scroll"],scrollduration:["duration","scroll"],scrolldurationrev:["durationRev","scroll"],scrollease:["ease","scroll"],scrolleaserev:["easeRev","scroll"],scrollcenter:["center","scroll"],scrollopacity:["opacity","scroll"],scrollopacitymin:["opacitymin","scroll"],scrollopacitymax:["opacitymax","scroll"],scrollopacityyoyo:["opacityyoyo","scroll"],scrollopacityinvert:["opacityinvert","scroll"],scrollrotate:["rotation","scroll"],scrollrotatemin:["rotationmin","scroll"],scrollrotatemax:["rotationmax","scroll"],scrollrotateyoyo:["rotationyoyo","scroll"],scrollrotatex:["rotationX","scroll"],scrollrotatexmin:["rotationXmin","scroll"],scrollrotatexmax:["rotationXmax","scroll"],scrollrotatexyoyo:["rotationXyoyo","scroll"],scrollrotatey:["rotationY","scroll"],scrollrotateymin:["rotationYmin","scroll"],scrollrotateymax:["rotationYmax","scroll"],scrollrotateyyoyo:["rotationYyoyo","scroll"],scrollrotation:["rotation","scroll"],scrollrotationmin:["rotationmin","scroll"],scrollrotationmax:["rotationmax","scroll"],scrollrotationyoyo:["rotationyoyo","scroll"],scrollrotationx:["rotationX","scroll"],scrollrotationxmin:["rotationXmin","scroll"],scrollrotationxmax:["rotationXmax","scroll"],scrollrotationxyoyo:["rotationXyoyo","scroll"],scrollrotationy:["rotationY","scroll"],scrollrotationymin:["rotationYmin","scroll"],scrollrotationymax:["rotationYmax","scroll"],scrollrotationyyoyo:["rotationYyoyo","scroll"],scrollscalex:["scaleX","scroll"],scrollscalexmin:["scaleXmin","scroll"],scrollscalexmax:["scaleXmax","scroll"],scrollscalexyoyo:["scaleXyoyo","scroll"],scrollscaley:["scaleY","scroll"],scrollscaleymin:["scaleYmin","scroll"],scrollscaleymax:["scaleYmax","scroll"],scrollscaleyyoyo:["scaleYyoyo","scroll"],scrollskewx:["skewX","scroll"],scrollskewxmin:["skewXmin","scroll"],scrollskewxmax:["skewXmax","scroll"],scrollskewxyoyo:["skewXyoyo","scroll"],scrollskewy:["skewY","scroll"],scrollskewymin:["skewYmin","scroll"],scrollskewymax:["skewYmax","scroll"],scrollskewyyoyo:["skewYyoyo","scroll"],scrolloffsetx:["x","scroll"],scrolloffsetxmin:["xmin","scroll"],scrolloffsetxmax:["xmax","scroll"],scrolloffsetxyoyo:["xyoyo","scroll"],scrolloffsetxresponsive:["xresponsive","scroll"],scrolloffsety:["y","scroll"],scrolloffsetymin:["ymin","scroll"],scrolloffsetymax:["ymax","scroll"],scrolloffsetyyoyo:["yyoyo","scroll"],scrolloffsetyresponsive:["yresponsive","scroll"],scrolltransformorigin:["transformOrigin","scrollShouldBeConverted"],scrolltransformoriginalt:["transformOriginAlt","scrollShouldBeConverted"],scrollgetposition:["getPosition","scroll"],transformperspective:["layer","transformPerspective"],transformperspectivein:["layer","transformPerspective"],transformperspectiveout:["layer","transformPerspective"],texttransformperspective:["text","transformPerspective"],texttransformperspectivein:["text","transformPerspective"],texttransformperspectiveout:["text","transformPerspective"],looptransformperspective:["loop","transformPerspective"],hovertransformperspective:["hover","transformPerspective"],parallaxtransformperspective:["parallax","transformPerspective"],scrolltransformperspective:["scroll","transformPerspective"]}}},ie(window).on("resize.lsGlobal",function(){window._lsData.documentIsAccessible&&(window._lsData.document={width:document.body.scrollWidth,height:document.body.scrollHeight},window._lsData.viewport={lastWidth:window._lsData.viewport.width||0,lastHeight:window._lsData.viewport.height||0,width:ie(window).width(),height:ie(window).height()},ie(window).trigger("scroll.lsGlobal"),window._lsData.resize.timeout&&clearTimeout(window._lsData.resize.timeout),window._lsData.resize.once?window._lsData.resize.once=!1:window._lsData.resize.timeout=setTimeout(function(){window._lsData.resize.once=!0,ie(window).trigger("resize.lsGlobal")},100))}),ie(window).on("scroll.lsGlobal",function(){window._lsData.documentIsAccessible&&(window._lsData.scroll.left=window.pageXOffset,window._lsData.scroll.top=window.pageYOffset,window._lsData.scroll.leftMax=window._lsData.document.width-window._lsData.viewport.width,window._lsData.scroll.topMax=window._lsData.document.height-window._lsData.viewport.height)}),ie(document).on("wheel.lsGlobal ",function(e){0!==Math.abs(e.originalEvent.deltaY)&&(window._lsData.scroll.direction=e.originalEvent.deltaY<0?"up":"down")}),ie(document).on("touchstart.lsGlobal ",function(e){window._lsData.ts=e.originalEvent.touches[0].clientY}),ie(document).on("touchend.lsGlobal ",function(e){e=e.originalEvent.changedTouches[0].clientY;window._lsData.ts>e+5?window._lsData.scroll.direction="down":window._lsData.ts<e-5&&(window._lsData.scroll.direction="up")}),ie.fn.layerSlider=function(i,s,a,r){window._lsData.documentIsAccessible=!0,i=i||{};var t,e="1.8.0",o=ie.fn.jquery;if(window._layerSlider.checkVersions(e,o,e))return(typeof i).match("object|undefined")?this.each(function(e){t="LS"+Math.random().toString(36).substr(2,9),ie(this).data("lsSliderUID")||(window._layerSliders[t]=new n(this,ie(this),i,t))}):"data"===i?window._layerSliders[this.data("lsSliderUID")]:"eventData"===i?window._layerSliders[this.data("lsSliderUID")].api.eventData():"defaultInitOptions"===i?window._layerSliders[this.data("lsSliderUID")].defaults.init.options||!1:"userInitOptions"===i?window._layerSliders[this.data("lsSliderUID")].userInitOptions||!1:"sliderInitOptions"===i?window._layerSliders[this.data("lsSliderUID")].o||!1:"originalMarkup"===i?window._layerSliders[this.data("lsSliderUID")].originalMarkup||!1:this.each(function(e){var t=window._layerSliders[ie(this).data("lsSliderUID")];t&&t.api.methods(i,s,a,r),t=null});window._layerSlider.showNotice(this,"oldjquery",o,e)};var n=function(I,$,i,B){$.data("lsSliderUID",B).attr("data-layerslider-uid",B);var J=this,ee=J.gsap=window._layerSlider.GSAP||window,M=ie(window),te=window._lsData;J.defaults={init:{staggerSplitChar:"|",rangeSplitChar:"..",randomSplitChar:"|",openingBracket:"[",closingBracket:"]",dataKey:"_LS",controls:["#playmedia","#pausemedia","#unmute","#unmutemedia","#start","#stop","#prev","#next","#replay","#reverse","#reverse-replay","#reversereplay"],options:{silentMode:!1,getData:!1,destroyAfter:!0,type:"responsive",fullSizeMode:"normal",fitScreenWidth:!0,calculateOffsetFrom:!1,preventSliderClip:!0,allowFullscreen:!1,performanceMode:!0,performanceModeThreshold:"20sh",responsiveUnder:-1,layersContainerWidth:-1,layersContainerHeight:-1,maxRatio:-1,insertMethod:"prependTo",insertSelector:null,clipSlideTransition:!1,slideBGSize:"cover",slideBGPosition:"50% 50%",preferBlendMode:!1,scene:!1,sceneHeight:2,sceneSpeed:100,sceneDuration:null,smoothScrollDuration:1e3,stickTo:"center",autoStart:!0,startInViewport:!0,playByScroll:!1,playByScrollSpeed:1,playByScrollStart:!1,playByScrollSkipSlideBreaks:!1,pauseOnHover:!1,pauseLayers:!1,firstSlide:1,sliderFadeInDuration:0,animateFirstSlide:!1,firstSlideDuration:!1,firstSlideTimeShift:!1,cycles:-1,forceCycles:!0,twoWaySlideshow:!1,shuffleSlideshow:!1,forceLayersOutDuration:750,slideDuration:!1,slideDurationWithoutLayers:3e3,slideTransitionDuration:!1,slideTimeShift:0,skin:"v6",skinsPath:"/layerslider/skins/",globalBGColor:"transparent",globalBGImage:!1,globalBGRepeat:"no-repeat",globalBGAttachment:"scroll",globalBGSize:"auto",globalBGPosition:"50% 50%",marginTop:!1,marginBottom:!1,navPrevNext:!0,navStartStop:!0,navButtons:!0,keybNav:!0,touchNav:!0,hoverPrevNext:!0,hoverBottomNav:!1,showBarTimer:!1,showCircleTimer:!0,showSlideBarTimer:!1,thumbnailNavigation:"hover",tnFillMode:"contain",tnContainerWidth:"60%",tnWidth:100,tnHeight:60,tnActiveOpacity:35,tnInactiveOpacity:100,scrollModifier:0,autoPlayVideos:!0,autoPauseSlideshow:"auto",youtubePreview:"maxresdefault.jpg",rememberUnmuteState:!0,parallaxCenterDegree:40,parallaxSensitivity:10,parallaxCenterLayers:"center",parallaxScrollReverse:!1,scrollCenterLayers:"center",yourLogo:!1,yourLogoStyle:"left: -10px; top: -10px;",yourLogoLink:!1,yourLogoTarget:"_self",optimizeForMobile:!0,hideOnMobile:!1,hideUnder:-1,hideOver:-1,slideOnSwipe:!0,allowRestartOnResize:!1,fixFloatedContainers:!1,useSrcset:!0,hashChange:!1,refreshWaypoint:!0,staticImage:""}},slider:{errorText:"LayerSlider (UID: "+B+") error:"},slide:{keys:window._lsData.slide.keys,options:{$link:!1,index:-1,data:{duration:-1,timeShift:0,calculatedTimeShift:0},parallax:{},kenBurns:{scale:1.2},filter:{}},registerPluginDefaults:function(e,t,i){J.defaults.slide.options.plugins||(J.defaults.slide.options.plugins={}),J.defaults.slide.options.plugins[e]=t}},layer:{keys:window._lsData.layer.keys,splitTypeKeys:["chars_asc","chars_desc","chars_rand","chars_center","chars_edge","words_asc","words_desc","words_rand","words_center","words_edge","lines_asc","lines_desc","lines_rand","lines_center","lines_edge"],timelineHierarchy:{slidestart:[0],transitioninstart:[1],transitioninend:[2],textinstart:[3,[1,2,6,7,8]],textinend:[4],allinend:[5],loopstart:[6,[1,2,3,4,5]],loopend:[7],autoparallaxstart:[6.5,[0,1,2,3,4,5,6,7]],autoparallaxend:[7.5],transitioninandloopend:[8],textinandloopend:[9],allinandloopend:[10],textoutstart:[11,[2,3,4,5,6,7,8,9,10]],textoutend:[12],textoutandloopend:[13],transitionoutstart:[14,[2,3,4,5,6,7,8,9,10,11,12,13]],transitionoutend:[15],alloutend:[16],alloutandloopend:[17]},properties:{filter:function(){return{blur:0,brightness:100,contrast:100,grayscale:0,"hue-rotate":0,invert:0,saturate:100,sepia:0}}},options:function(e,t){t={is:{slideBackground:!!e.is("img.ls-bg"),backgroundVideo:!!e.is(".ls-bg-video"),imageLayer:!!e.is("img.ls-layer"),layerGroup:!!e.is(".ls-layer-group"),insideLayerGroup:!!e.data("$layerGroup"),mediaLayer:!1,textLayer:!1,responsive:!0,onSlide:t},should:{},elements:{},settings:{position:"relative",slideIn:t,slideOut:t},styleSettings:{minfontsize:0,minmobilefontsize:0},mediaSettings:{backgroundVideo:!1},timeline:{slidestart:0,transitioninstart:0,transitioninend:0,textinstart:0,textinend:0,allinend:function(e){return Math.max(this.transitioninend,this.textinend)},loopstart:0,loopend:0,transitioninandloopend:function(e){return 0===this.loopend&&e.loop.enabled&&("number"==typeof e.loop.startAt||-1!==e.loop.startAt.indexOf("textinstart")&&-1!==e.loop.startAt.indexOf("textinend")&&-1!==e.loop.startAt.indexOf("allinend"))?(this.loopstart=J.transitions.layers.timeline.getTiming(e,e.loop.startAt,"loopstart"),this.loopend=-1!==e.loop.count&&e.timeline.loopstart+(e.loop.repeat+1)*e.loop.duration+e.loop.repeat*e.loop.repeatDelay):J.debugMode&&J.debug.add("warn","layerTransition.infinite",e.self[0].tagName+"."+e.self.attr("class")+" [ "+e.self.html().substr(0,30)+"... ]"),Math.max(this.transitioninend,this.loopend)},textinandloopend:function(e){return Math.max(this.textinend,this.loopend)},allinandloopend:function(e){return Math.max(this.allinend(),this.loopend)},textoutstart:0,textoutend:0,textoutandloopend:function(e){return Math.max(this.textoutend,this.loopend)},transitionoutstart:function(e){return Math.max(this.allinandloopend(),this.textoutend)},transitionoutend:0,alloutend:function(e){return Math.max(this.transitionoutend,this.textoutend,this.allinend())},alloutandloopend:function(e){return Math.max(this.transitionoutend,this.textoutandloopend(),this.allinend())},staticfrom:!1,staticto:!1},transitionProperties:{in:{enabled:!0,layerFrom:{autoCSS:!1,immediateRender:!1,css:{opacity:0}},layerTo:{autoCSS:!1,onStart:function(){J.transitions.layers.in.onStart(e)},onComplete:function(){J.transitions.layers.in.onComplete(e)},css:{display:"block",opacity:1,rotation:0,rotationX:0,rotationY:0,scaleX:1,scaleY:1,skewX:0,skewY:0,x:0,y:0}},layerStyleFrom:{autoCSS:!1,immediateRender:!1,css:{}},layerStyleTo:{autoCSS:!1,css:{}},clipFrom:{autoCSS:!1,immediateRender:!1,css:{}},clipTo:{autoCSS:!1,css:{}},layerShouldBeConverted:{transformOrigin:"50% 50% 0",x:0,y:0},layerStyleShouldBeConvertedFrom:{},layerStyleShouldBeConvertedTo:{},clipShouldBeConverted:{},startAt:0,duration:1,ease:"easeInOutQuint"},textIn:{enabled:null,nodesFrom:{cycle:{},random:{},opacity:0},nodesTo:{ease:"easeInOutQuint",css:{opacity:1,rotation:0,rotationX:0,rotationY:0,scaleX:1,scaleY:1,skewX:0,skewY:0,x:0,y:0},onStart:function(){J.layers.set.dataAttribute("add",e,"text-animating-in")},onComplete:function(){J.layers.set.dataAttribute("remove",e,"text-animating-in"),J.layers.set.dataAttribute("add",e,"active")}},shouldBeConverted:{cycle:{},random:{},transformOrigin:"50% 50% 0",x:0,y:0},layerStyle:{},split:"",shiftNodes:.05,startAt:"transitioninend",duration:1},out:{enabled:!0,layerFrom:{autoCSS:!1,immediateRender:!1,css:{}},layerTo:{autoCSS:!1,onStart:function(){J.transitions.layers.out.onStart(e)},onComplete:function(){J.transitions.layers.out.onComplete(e)},css:{opacity:0,rotation:0,rotationX:0,rotationY:0,scaleX:1,scaleY:1,skewX:0,skewY:0}},layerStyleFrom:{autoCSS:!1,immediateRender:!1,css:{}},layerStyleTo:{autoCSS:!1,css:{}},clipFrom:{autoCSS:!1,immediateRender:!1,css:{}},clipTo:{autoCSS:!1,css:{}},layerShouldBeConverted:{x:0,y:0},layerStyleShouldBeConvertedFrom:{},layerStyleShouldBeConvertedTo:{},clipShouldBeConverted:{},startAt:"slidechangeonly",duration:1,ease:"easeInOutQuint"},textOut:{enabled:null,nodesFrom:{immediateRender:!1,cycle:{},opacity:1},nodesTo:{ease:"easeInOutQuint",immediateRender:!1,cycle:{},random:{},opacity:0,onStart:function(){J.layers.set.dataAttribute("add",e,"text-animating-out")},onComplete:function(){J.layers.set.dataAttribute("remove",e,"text-animating-out"),J.layers.set.dataAttribute("add",e,"hidden")}},layerStyle:{},shouldBeConverted:{cycle:{},random:{},x:0,y:0},split:"",startAt:"allinandloopend",shiftNodes:.05,duration:1},loop:{enabled:null,from:{autoCSS:!1,immediateRender:!1,css:{}},to:{autoCSS:!1,css:{}},clipTo:{autoCSS:!1,immediateRender:!1,css:{}},layerShouldBeConverted:{transformOrigin:"50% 50% 0",x:0,y:0},clipShouldBeConverted:{},ease:"linear",startAt:"allinend",repeatDelay:0,duration:1,count:0,yoyo:!1},hover:{enabled:null,from:{autoCSS:!1,immediateRender:!1,css:{}},to:{autoCSS:!1,css:{}},shouldBeConverted:{transformOrigin:"50% 50% 0"},alwaysOnTop:!0,easeIn:"easeInOutQuint",durationIn:.5},parallax:{enabled:null},scroll:{enabled:null,shouldBeConverted:{transformOrigin:"50% 50% 0"},xresponsive:!0,yresponsive:!0},kenBurns:{scale:1.2},clip:{enabled:!1,min:"0 0 0 0",max:"-9999 9999 9999 -9999"},filter:{values:{style:{},in:{},out:{},loop:{},hover:{},afterIn:{},afterLoop:{},bgFrom:{},bgTo:{}},transitions:{bg:null,in:null,out:null,loop:null,hover:null}},init:{wrapper:{autoCSS:!1,immediateRender:!1,css:{display:"block"}}},transformPerspective:{layer:500,text:500,loop:500,hover:500},reset:{wrapperOnTimelineEnd:{autoCSS:!1,css:{opacity:1,display:"none"}},wrapperOnSlideChange:{autoCSS:!1,css:{x:0,y:0,rotation:0,rotationX:0,rotationY:0,scaleX:1,scaleY:1,skewX:0,skewY:0,opacity:1,display:"none"}},loopWrapperOnSlideChange:{autoCSS:!1,css:{x:0,y:0,rotation:0,rotationX:0,rotationY:0,scaleX:1,scaleY:1,skewX:0,skewY:0,opacity:1}}}}};return{is:t.is,should:t.should,elements:t.elements,settings:t.settings,styleSettings:t.styleSettings,mediaSettings:t.mediaSettings,mediaProperties:t.mediaProperties,timeline:t.timeline,in:t.transitionProperties.in,inLayerFrom:t.transitionProperties.in.layerFrom,inLayerFromCSS:t.transitionProperties.in.layerFrom.css,inLayerStyleFrom:t.transitionProperties.in.layerStyleFrom,inLayerStyleFromCSS:t.transitionProperties.in.layerStyleFrom.css,inClipFrom:t.transitionProperties.in.clipFrom,inClipFromCSS:t.transitionProperties.in.clipFrom.css,inLayerTo:t.transitionProperties.in.layerTo,inLayerToCSS:t.transitionProperties.in.layerTo.css,inLayerStyleTo:t.transitionProperties.in.layerStyleTo,inLayerStyleToCSS:t.transitionProperties.in.layerStyleTo.css,inClipTo:t.transitionProperties.in.clipTo,inClipToCSS:t.transitionProperties.in.clipTo.css,inClipShouldBeConverted:t.transitionProperties.in.clipShouldBeConverted,inLayerShouldBeConverted:t.transitionProperties.in.layerShouldBeConverted,inLayerStyleShouldBeConvertedFrom:t.transitionProperties.in.layerStyleShouldBeConvertedFrom,inLayerStyleShouldBeConvertedTo:t.transitionProperties.in.layerStyleShouldBeConvertedTo,textIn:t.transitionProperties.textIn,textInLayerStyle:t.transitionProperties.textIn.layerStyle,textInNodesFrom:t.transitionProperties.textIn.nodesFrom,textInNodesTo:t.transitionProperties.textIn.nodesTo,textInNodesToCSS:t.transitionProperties.textIn.nodesTo.css,textInShouldBeConverted:t.transitionProperties.textIn.shouldBeConverted,out:t.transitionProperties.out,outLayerFrom:t.transitionProperties.out.layerFrom,outLayerFromCSS:t.transitionProperties.out.layerFrom.css,outLayerStyleFrom:t.transitionProperties.out.layerStyleFrom,outLayerStyleFromCSS:t.transitionProperties.out.layerStyleFrom.css,outLayerTo:t.transitionProperties.out.layerTo,outLayerToCSS:t.transitionProperties.out.layerTo.css,outLayerStyleTo:t.transitionProperties.out.layerStyleTo,outLayerStyleToCSS:t.transitionProperties.out.layerStyleTo.css,outClipTo:t.transitionProperties.out.clipTo,outClipToCSS:t.transitionProperties.out.clipTo.css,outClipShouldBeConverted:t.transitionProperties.out.clipShouldBeConverted,outLayerShouldBeConverted:t.transitionProperties.out.layerShouldBeConverted,outLayerStyleShouldBeConvertedFrom:t.transitionProperties.out.layerStyleShouldBeConvertedFrom,outLayerStyleShouldBeConvertedTo:t.transitionProperties.out.layerStyleShouldBeConvertedTo,textOut:t.transitionProperties.textOut,textOutLayerStyle:t.transitionProperties.textOut.layerStyle,textOutNodesFrom:t.transitionProperties.textOut.nodesFrom,textOutNodesTo:t.transitionProperties.textOut.nodesTo,textOutShouldBeConverted:t.transitionProperties.textOut.shouldBeConverted,loop:t.transitionProperties.loop,loopFrom:t.transitionProperties.loop.from,loopFromCSS:t.transitionProperties.loop.from.css,loopTo:t.transitionProperties.loop.to,loopToCSS:t.transitionProperties.loop.to.css,loopClipTo:t.transitionProperties.loop.clipTo,loopClipToCSS:t.transitionProperties.loop.clipTo.css,loopClipShouldBeConverted:t.transitionProperties.loop.clipShouldBeConverted,loopLayerShouldBeConverted:t.transitionProperties.loop.layerShouldBeConverted,hover:t.transitionProperties.hover,hoverFrom:t.transitionProperties.hover.from,hoverFromCSS:t.transitionProperties.hover.from.css,hoverTo:t.transitionProperties.hover.to,hoverToCSS:t.transitionProperties.hover.to.css,hoverShouldBeConverted:t.transitionProperties.hover.shouldBeConverted,parallax:t.transitionProperties.parallax,scroll:t.transitionProperties.scroll,scrollShouldBeConverted:t.transitionProperties.scroll.shouldBeConverted,kenBurns:t.transitionProperties.kenBurns,clip:t.transitionProperties.clip,filter:t.transitionProperties.filter,transformPerspective:t.transitionProperties.transformPerspective,init:t.transitionProperties.init,reset:t.transitionProperties.reset}}}},J.slides={count:0,first:{},last:{},prev:{},current:{},next:{},init:function(){if(!document.body.contains(I))return!1;for(var e=$.find("> .ls-layer, > .ls-slide"),t=0,i=J.defaults.slide.keys,s=0,a=e.length;s<a;s++){var r=ie(e[s]),o=r[0].style,n=ie.extend(!0,{},J.defaults.slide.options),l=!1;if(J.slides.count++,r.removeClass("ls-layer").addClass("ls-slide").css({width:J.slider.initial.originalWidth,height:J.slider.initial.originalHeight}).appendTo(J.slider.$hiddenWrapper),r.data("ls"))for(var d=r.data("ls").split(";"),c=0;c<d.length;c++){var p,u,h=d[c].split(":");h[0]=ie.trim(h[0].toLowerCase()),h[1]=ie.trim(h[1]),-1==["thumbnail"].indexOf(h[0])&&(h[1]=h[1].toLowerCase()),""!==h[0]&&(void 0!==i[h[0]]?(p=void 0===i[h[0]][1]?h[0]:i[h[0]][1],u=J.functions.convert.properties(h[1]),-1===p.toLowerCase().indexOf("duration")&&-1===p.toLowerCase().indexOf("delay")&&"timeShift"!=p||(u/=1e3),n[i[h[0]][0]]||(n[i[h[0]][0]]={}),n[i[h[0]][0]][p]=u):n.data[h[0]]=h[1])}if(n.plugins&&!ie.isEmptyObject(n.plugins))for(var m in n.plugins)if(r.data("ls-plugin-"+m)){var f,g=r.data("ls-plugin-"+m).toLowerCase().split(";"),y={};for(f in n.plugins[m])y[f.toLowerCase()]=f;for(var v=0;v<g.length;v++){var w,b=g[v].split(":");b[0]=ie.trim(b[0]),""!==b[0]&&(w=J.functions.convert.properties(ie.trim(b[1])),-1===b[0].indexOf("duration")&&-1===b[0].indexOf("delay")||(w/=1e3),y[b[0]]?n.plugins[m][y[b[0]]]=w:n.plugins[m][b[0]]=w)}}else delete n.plugins[m];r.children("a.ls-link").length&&(n.data.$link=r.children("a.ls-link").first().css({zIndex:5}).attr("data-ls-slide-link",t+1).appendTo(J.slider.$layersWrapper),J.layers.set.smartLinks(n.data.$link)),n.data.$backgroundVideo=r.children('[data-ls*="backgroundvideo"]').first(),n.data.$backgroundVideo.find("iframe, video, audio").length||(n.data.$backgroundVideo=ie()),n.data.$backgroundVideo.length&&(null!==n.data.$backgroundVideo.attr("data-ls").split("backgroundvideo")[1].split(";")[0].match(/(true|enabled|on|1)/i)?(n.data.$backgroundVideo.addClass("ls-bg-video").css({width:"auto",height:"auto"}).children("video, audio, iframe").css({width:"100%",height:"100%"}),n.data.$backgroundVideo.append(ie('<div class="ls-bg-video-overlay"></div>'))):n.data.$backgroundVideo=!1);for(var S=r.find("picture"),v=0,x=S.length;v<x;v++)J.layers.set.pictureElement(ie(S[v]));r.find("> .ls-bg").length&&(n.data.$background=r.find("> .ls-bg").first()),n.data.thumbnail||(r.find("> .ls-tn").length?l=r.find("> .ls-tn").first():r.find("> .ls-bg").length&&(l=r.find("> .ls-bg").first()),l?(n.data.thumbnail=J.functions.getURL(l),n.data.tnAlt=J.functions.getALT(l)):n.data.thumbnail=J.o.skinsPath+J.o.skin+"/nothumb.png"),(n.data.customtransition2d||n.data.customtransition3d)&&"undefined"==typeof layerSliderCustomTransitions&&(delete n.data.customtransition2d,delete n.data.customtransition3d,J.debugMode&&J.debug.add("warn","sliderInit.customTransitions",t+1)),"visible"===o.overflow&&(n.data.overflow="visible"),n.data.backgroundColor?n.data.$background||n.data.$backgroundVideo&&n.data.$backgroundVideo.length||(n.data.$background=ie("<img>").addClass("ls-bg").attr("src","data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==").appendTo(r)):n.data.backgroundColor=""===r[0].style.backgroundColor?"transparent":r[0].style.backgroundColor,J.slides[++t]={},J.slides[t].data=ie.extend(!0,{},J.defaults.slide.options.data,n.data),J.slides[t].parallax=n.parallax,J.slides[t].scroll=n.scroll,J.slides[t].kenBurns=n.kenBurns,J.slides[t].filter=n.filter,J.slides[t].index=t,J.slides[t].$layers=ie(),J.slides[t].plugins=n.plugins,J.slider.thumbnails.push(n.data.thumbnail),J.layers.init(r,t)}J.debugMode&&J.debug.groupEnd("sliderInit.style")},set:{slideIndexes:function(){var e=J.slides;e.prev.index=e.current.index,e.current.index=e.next.index,e.next.index=J.slideshow.get.slideInSequence(J.slideshow.direction),e.set.slidesData(),J.slider.set.attributes()},nextSlideIndex:function(e){var t=J.slides;t.next.index=e,t.set.slidesData()},slidesData:function(){var e=J.slides;e.prev=-1!==e.prev.index?ie.extend(!0,{},e[e.prev.index]):{},e.current=-1!==e.current.index?ie.extend(!0,{},e[e.current.index]):{},e.next=-1!==e.next.index?ie.extend(!0,{},e[e.next.index]):{}},firstSlide:function(){var e,t=J.slides;t.first.index="random"===J.o.firstSlide?J.o.firstSlide:Math.max(J.functions.convert.properties(J.o.firstSlide,!0),1),J.o.shuffleSlideshow&&2<J.slides.count?J.o.twoWaySlideshow=!1:J.o.shuffleSlideshow=!1,t.first.index="random"==t.first.index?Math.floor(Math.random()*J.slides.count+1):t.first.index,!document.location.hash||(e=J.slides.deeplink(document.location.hash,!0))&&(J.slides.first.index=e),t.first.index=t.first.index<1||t.first.index>J.slides.count?1:t.first.index,J.o.shuffleSlideshow&&"random"!=J.o.firstSlide&&(t.first.index=J.o.firstSlide),t[t.first.index]&&t[t.first.index].data&&(t.first.data=ie.extend(!0,{},t[t.first.index].data)),J.o.playByScroll&&J.slideshow.set.normalizedSequence(),J.debugMode&&J.debug.options.firstSlide&&(t.first.index=J.debug.options.firstSlide)},actions:function(e,t){}},get:{deeplink:function(e){return e&&J.slides[e]&&J.slides[e].data&&J.slides[e].data.deeplink?J.slides[e].data.deeplink:null}},deeplink:function(e,t){for(var i=!1,s=1;s<J.slides.count+1;s++)if(J.slides[s].data.deeplink==e.substring(1)){if(i=s,t)return i;J.slideshow.changeTo(i,!0,!0)}if(!i&&t)return!1},slide:[]},J.layers={$all:ie(),getStyle:function(e,t){return-1!=e.indexOf("em")?e:(-1!=e.indexOf("%")?parseFloat(e)*t:parseFloat(e)||0).toString()},toNum:function(e,t){return t=parseFloat(t),-1!=e.indexOf("em")?parseFloat(e)*t:parseFloat(e)},init:function(e,t){if(!document.body.contains(I))return!1;for(var i,s=e.find(".ls-bg, .ls-l, .ls-layer, .ls-lg, .ls-layer-group"),a=0,r=s.length;a<r;a++){var o=ie(s[a]),n=o[0],l=o.children();if(o.data("slideIndex",t),o.hasClass("ls-l"))o.removeClass("ls-l").addClass("ls-layer");else if(o.hasClass("ls-lg"))o.removeClass("ls-lg").addClass("ls-layer-group");else if(!o.is(".ls-bg, .ls-layer, .ls-layer-group")){o.remove();continue}o.is("a")&&1===l.length&&((n=(o=o.children().first())[0]).setAttribute("data-ls",n.parentNode.getAttribute("data-ls")),n.parentNode.removeAttribute("data-ls"),o.parent().removeClass("ls-layer"),o.addClass("ls-layer")),o.is(".ls-layer-group")&&o.children().data("$layerGroup",o),o.data(J.defaults.init.dataKey,new J.defaults.layer.options(o,t)),-1!==o.attr("class").indexOf("ls-linkto-")&&this.set.linkTo(o),o.parent().is("a")?(o.parent().data("slideIndex")&&o.data("slideIndex",o.parent().data("slideIndex")),i=o.parent(),this.set.smartLinks(i)):i=o,i.attr("data-ls-actions")&&this.set.actions(i,JSON.parse(i.attr("data-ls-actions"))||{}),J.slides[t].$layers=J.slides[t].$layers.add(i)}},set:{mirrorTransitions:function(e){return e=e.split(" ")},pictureElement:function(e){var t=e.find("source").last().attr("srcset").split(" ")[0]||"data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==",i=e.find("img"),s=i.length?i:ie("<img>").attr("src",t),a=s[0],r=(e.attr("ls-data")||s.attr("ls-data"),e.attr("style")||!1),i=a.currentSrc||a.src,o=i.split(".").pop(),t=(i.indexOf("webp"),s.attr("data-src")?"data-":""),a="";e.hasClass("ls-bg")?a="ls-bg":e.hasClass("ls-tn")?a="ls-tn":(e.hasClass("ls-l")||e.hasClass("ls-layer"))&&(a="ls-layer");for(var n,l,d,c=e.find("source"),p=0;p<c.length&&(n=c[p],l=(n=ie(n)).attr("srcset"),d=n.attr("sizes"),l.split(" ")[0].split(".").pop()!=o);p++);s.removeAttr("width height sizes src srcset data-src data-srcset loading"),s.addClass(a).attr(t+"src",i).attr(t+"srcset",l).attr("sizes",d),r&&s.attr("style",r),s.insertAfter(e),e.remove()},actions:function(s,e){e.length;ie.each(e,function(e,t){var i=ie.extend(!0,{},t),t=i.trigger;s.on(t,function(e){setTimeout(function(e){J.actions.do(e)},i.delay||0,i)})})},smartLinks:function(e){var s=e.attr("href"),t=e.attr("target"),i="";if(t&&-1!==t.indexOf("ls-scroll")){switch(s){case"pagetop":i="Scroll to page top";break;case"pagebottom":i="Scroll to page bottom";break;case"slidertop":i="Scroll to the top of the slider";break;case"":case"sliderbottom":i="Scroll to the bottom of the slider";break;default:i="Scroll to a specified location on the page"}J.layers.set.ariaLabel(e,i),e.on("click."+B,function(e){e.preventDefault();var t,i=document.body.scrollHeight-te.viewport.height;if(s)switch(s){case"pagetop":t=0;break;case"pagebottom":t=i;break;case"slidertop":t=J.slider.offset.top;break;case"":case"sliderbottom":t=J.slider.offset.top+J.slider.height;break;default:t=ie(s).filter(":visible").last().length?ie(s).filter(":visible").last().offset().top:J.slider.offset.top+J.slider.height}t+=J.o.scrollModifier,t=Math.min(t,i),t=Math.max(0,t),ee.TweenMax.to("html, body",1,{scrollTop:t,ease:ee.Quint.easeInOut})})}if(-1!==J.defaults.init.controls.indexOf(s.toLowerCase())||s.match(/^\#[0-9]/)){var a=ie.trim(s.toLowerCase().split("#")[1]),r=parseInt(a);switch(a){case"playmedia":i="play active media elements on current slide";break;case"pausemedia":i="pause active media elements on current slide";break;case"prev":i="jump to the previous slide";break;case"next":i="jump to the next slide";break;case"start":i="start slideshow";break;case"stop":i="stop slideshow";break;case"replay":i="replay slide";break;case"reverse":i="reverse slide";break;case"reverse-replay":case"reversereplay":i="reverse, than replay slide";break;default:"number"==typeof r&&r==r&&(i="jump to slide "+r)}J.layers.set.ariaLabel(e,i),e.on("click."+B,function(e){if(e.preventDefault(),-1!==["prev","next","last","first","start","stop"].indexOf(a))J.navigation[a]("clicked");else if("number"==typeof r&&r==r)J.slideshow.changeTo(r,!0,!0);else if(!J.slider.state.changingSlides)switch(a){case"replay":J.api.methods("replay");break;case"reverse":J.api.methods("reverse");break;case"reverse-replay":case"reversereplay":J.api.methods("reverse",!0);break;case"playmedia":J.media.functions.playActiveMedia();break;case"pausemedia":J.media.functions.pauseActiveMedia();break;case"unmute":case"unmutemedia":J.media.unmute.multipleMediaElements()}})}},ariaLabel:function(e,t){e.attr("aria-label")||e.attr("aria-label",t)},linkTo:function(e){for(var t=e.attr("class").split(" "),i=1,s=0;s<t.length;s++)-1!=t[s].indexOf("ls-linkto-")&&(i=parseInt(t[s].split("ls-linkto-")[1]));e.data(J.defaults.init.dataKey).settings.linkedToSlide=i,e.css({cursor:"pointer"}).on("click."+B,function(e){e.preventDefault(),$.layerSlider(ie(this).data(J.defaults.init.dataKey).settings.linkedToSlide)})},wrappers:function(e,t,i){t.is.slideBackground||t.is.backgroundVideo?(t.elements.$bgWrapper=e.closest(".ls-bg-wrap"),t.elements.$bgOuterWrapper=e.closest(".ls-bg-outer")):(t.elements.$wrapper=e.closest(".ls-in-out"),t.elements.$wrapper.data(J.defaults.init.dataKey,{}),t.settings.wrapperData=t.elements.$wrapper.data(J.defaults.init.dataKey),t.elements.$clipWrapper=e.closest(".ls-clip"),t.elements.$clipWrapper.data(J.defaults.init.dataKey,{}),t.settings.clipWrapperData=t.elements.$clipWrapper.data(J.defaults.init.dataKey),t.elements.$loopWrapper=e.closest(".ls-loop"),t.elements.$loopWrapper.data(J.defaults.init.dataKey,{}),t.settings.loopWrapperData=t.elements.$loopWrapper.data(J.defaults.init.dataKey)),t.parallax.enabled&&(t.elements.$parallaxWrapper=e.closest(".ls-parallax"),t.elements.$parallaxWrapper.data(J.defaults.init.dataKey,{parallax:{}}),t.settings.parallaxWrapperData=t.elements.$parallaxWrapper.data(J.defaults.init.dataKey),J.transitions.layers.parallax.addLayer(t.elements.$parallaxWrapper,t.settings.parallaxWrapperData.parallax,t,i)),t.scroll.enabled&&(t.elements.$scrollWrapper=e.closest(".ls-scroll"),t.elements.$scrollTransformWrapper=e.closest(".ls-scroll-transform"),t.elements.$scrollWrapper.data(J.defaults.init.dataKey,{scroll:{}}),t.settings.scrollWrapperData=t.elements.$scrollWrapper.data(J.defaults.init.dataKey),J.transitions.layers.scroll.addLayer(t.elements.$scrollWrapper,t.settings.scrollWrapperData.scroll,t,i)),t.hover.enabled&&!J.slides[i].data.globalhover&&J.transitions.layers.hover.set(e,t),t.elements.$outerWrapper=e.closest(".ls-z"),t.elements.$outerStyleWrapper=t.elements.$outerWrapper.find("> .ls-wrapper"),t.elements.$outerWrapper.attr("data-slide-index",i),t.elements.$innerWrapper=e.closest(".ls-wrapper").addClass("ls-inner-wrapper"),t.elements.$_innerWrappers=t.elements.$outerWrapper.find(".ls-wrapper"),t.elements.$_allWrappers=t.elements.$outerWrapper.add(t.elements.$_innerWrappers),t.elements.$_outerWrappers=t.elements.$outerWrapper.add(t.elements.$outerWrapper.find(".ls-wrapper:not(.ls-inner-wrapper)"))},singleLayer:function(e,t){J.layers.set.style(e),J.layers.set.properties(e,t),J.layers.set.dataAttribute("add",e,"hidden"),e.data("hasBeenSet",!0)},style:function(e){var t,i,s,a,r,o,n,l,d,c,p,u=e[0],h=e.data(J.defaults.init.dataKey),m=u.style,f=J.layers,g=0,y=0,v=!1,w=parseFloat(u.style.fontSize)||36,b=u.getBoundingClientRect(),S=!e.is("img")&&window.LS_previewZoom||1,x=""!==m.paddingLeft?f.getStyle(m.paddingLeft,J.slider.initial.percW):f.getStyle(e.css("padding-left"),J.slider.initial.percW),T=""!==m.paddingRight?f.getStyle(m.paddingRight,J.slider.initial.percW):f.getStyle(e.css("padding-right"),J.slider.initial.percW),k=""!==m.paddingTop?f.getStyle(m.paddingTop,J.slider.initial.percH):f.getStyle(e.css("padding-top"),J.slider.initial.percH),C=""!==m.paddingBottom?f.getStyle(m.paddingBottom,J.slider.initial.percH):f.getStyle(e.css("padding-bottom"),J.slider.initial.percH),O=""!==m.marginLeft?f.getStyle(m.marginLeft,J.slider.initial.percW):f.getStyle(e.css("margin-left"),J.slider.initial.percW),P=""!==m.marginRight?f.getStyle(m.marginRight,J.slider.initial.percW):f.getStyle(e.css("margin-right"),J.slider.initial.percW),L=""!==m.marginTop?f.getStyle(m.marginTop,J.slider.initial.percH):f.getStyle(e.css("margin-top"),J.slider.initial.percH),I=""!==m.marginBottom?f.getStyle(m.marginBottom,J.slider.initial.percH):f.getStyle(e.css("margin-bottom"),J.slider.initial.percH);u.style.margin="0",r=""!==m.borderLeftWidth?f.getStyle(m.borderLeftWidth,J.slider.initial.percW):f.getStyle(e.css("border-left-width"),J.slider.initial.percW),n=""!==m.borderRightWidth?f.getStyle(m.borderRightWidth,J.slider.initial.percW):f.getStyle(e.css("border-right-width"),J.slider.initial.percW),o=""!==m.borderTopWidth?f.getStyle(m.borderTopWidth,J.slider.initial.percH):f.getStyle(e.css("border-top-width"),J.slider.initial.percH),l=""!==m.borderBottomWidth?f.getStyle(m.borderBottomWidth,J.slider.initial.percH):f.getStyle(e.css("border-bottom-width"),J.slider.initial.percH),1!==J.media.properties.$allMediaLayers.filter(e).length&&!e.children("iframe").length||(p=(c=e.children()).attr("width")?c.attr("width"):c.width(),$=c.attr("height")?c.attr("height"):c.height(),300===parseInt(p)&&150===parseInt($)&&(p=640,$=360),""!==u.style.width&&"auto"!==u.style.width||e.css("width",p),""!==u.style.height&&"auto"!==u.style.height||e.css("height",$),"100%"===m.width&&"100%"===m.height&&(m.left="50%",m.top="50%"),v=p/$,c.css({width:"100%",height:"100%"}));var $=h.attributes;e.is("img")&&(d=(s=e.data("preloadedWidth"))/(a=e.data("preloadedHeight")),(!m.width&&!m.height||"auto"===m.width&&"auto"===m.height)&&$&&($.width&&$.height?(t=-1===$.width.indexOf("%")?parseInt($.width):(g=parseInt($.width),f.getStyle($.width,J.slider.initial.percW)),i=-1===$.height.indexOf("%")?parseInt($.height):(y=parseInt($.height),f.getStyle($.height,J.slider.initial.percH))):$.maxWidth&&(e[0].style.width=$.maxWidth+"px",t=$.maxWidth,i=e.height()))),c=b.width?b.width/S:(b.right-b.left)/S,S=b.height?b.height/S:(b.bottom-b.top)/S,t||(t=m.width,-1!==m.width.indexOf("%")&&(g=parseInt(m.width)),t=(t=""!==t&&"auto"!==t?f.getStyle(t,J.slider.initial.percW):c-J.layers.toNum(x,w)-J.layers.toNum(T,w)-J.layers.toNum(r,w)-J.layers.toNum(n,w))||"auto"),i||(i=m.height,-1!==m.height.indexOf("%")&&(y=parseInt(m.height)),i=(i=""!==i&&"auto"!==i?f.getStyle(i,J.slider.initial.percH):S-J.layers.toNum(k,w)-J.layers.toNum(C,w)-J.layers.toNum(o,w)-J.layers.toNum(l,w))||"auto"),v=v||("auto"!==t&&"auto"!==i?t/i:"auto"),!e.is("img")||m.width||m.height||$&&(!$||$.width||$.height)||s===t&&a===i||(s!==t?i=(t=5<s?s:t)/(v=5<s?d:v):a!==i&&(t=(i=5<a?a:i)*(v=5<a?d:v))),parseFloat(e.css("opacity")),a=""!==m.clip&&m.clip,m.clip="",d=m.webkitFilter||m.filter;var B,M,W,_;h.original={clip:a,clipShouldBeConverted:!1,left:m.left||"0",top:m.top||"0",width:"auto"!==t?parseFloat(t):"auto",height:"auto"!==i?parseFloat(i):"auto",sWidth:m.width,sHeight:m.height,percentWidth:g,percentHeight:y,backgroundImage:m.backgroundImage,backgroundSize:m.backgroundSize||"cover",backgroundRepeat:m.backgroundRepeat,backgroundPosition:m.backgroundPosition,ratio:v,paddingLeft:x,paddingTop:k,paddingRight:T,paddingBottom:C,marginLeft:O,marginRight:P,marginTop:L,marginBottom:I,borderLeftWidth:r,borderTopWidth:o,borderRightWidth:n,borderBottomWidth:l,borderRadius:(B=e,W=["borderTopLeftRadius","borderTopRightRadius","borderBottomRightRadius","borderBottomLeftRadius"],_="",(M=m).borderRadius&&(-1===M.borderRadius.indexOf("/")?ie.each(["border-top-left-radius","border-top-right-radius","border-bottom-right-radius","border-bottom-left-radius"],function(e,t){e=M[W[e]],t=B.css(t),t=ie.trim(void 0!==e&&e.length?e:t);-1==t.indexOf(" ")&&-1==t.indexOf("em")&&-1==t.indexOf("%")&&(t=parseInt(t)),_+=t+" "}):_=M.borderRadius),ie.trim(_)),fontSize:w,lineHeight:u.style.lineHeight,letterSpacing:u.style.letterSpacing,textStrokeWidth:u.style.textStrokeWidth||u.style.webkitTextStrokeWidth,color:e.css("color"),zIndex:parseInt(e.css("z-index"))||"auto",filter:d,backgroundColor:e.css("background-color"),dataLS:e.attr("data-ls")||"",styles:e.attr("style")||""},m.zIndex="auto",h.responsive={left:m.left||"0",top:m.top||"0",width:t,height:i}},properties:function(e,t,i){t=t||e.data("slideIndex");var s=e.data(J.defaults.init.dataKey);e.data("ls");if(s.is.textLayer=!(e.is("img")||s.is.mediaLayer||s.is.backgroundVideo),(s.self=e).data("ls"))for(var a=J.defaults.layer.keys,r=e.data("ls").split(";"),o=e.data("ls").split(";"),n=0;n<o.length;n++)if(ie.trim(o[n])){var l=o[n].indexOf(":"),d=[o[n].substring(0,l),o[n].substring(l+1)],c=null,p=null,u=null,h=null,m=null;if(d[0]=ie.trim(d[0].toLowerCase()),-1==["thumbnail","poster"].indexOf(d[0])&&(d[1]=d[1].toLowerCase()),""!==(c=d[0]))if(void 0!==a[c=c.replace("split","text")]){if(p=a[c][0],m="overlay"===c?ie.trim(r[n].substring(l+1)):J.functions.convert.properties(ie.trim(d[1])),-1!==c.indexOf("mirror")&&(m=J.layers.set.mirrorTransitions(ie.trim(d[1]))),!d[1]||-1===d[1].indexOf("random")&&d[1].charAt(0)!==J.defaults.init.openingBracket||(c.match(/(text)/)||(m=J.functions.convert.randomProperties(m,p)),s.should.update||(s.should.update=!0)),"number"==typeof m&&p.match(/(duration|startat|shift|delay)/i)&&(m/=1e3),c.match(/(fade)(.+)/))switch(m){case!0:m=0;break;case!1:m=1}void 0!==(h=a[c][1])?""!==m?"object"==typeof m&&-1==c.indexOf("mirror")?c.match(/(text)/)?h.match(/(converted)/i)?s[h][p]=m:s[h].cycle[p]=m:(u=J.functions.convert.properties(ie.trim(m[0])),J.debugMode&&J.debug.add("warn","layerInit.prop1",[c,m,u]),"number"==typeof u&&p.match(/(duration|startat|shift|delay)/i)&&(u/=1e3),s[h][p]=u):c.match(/(text)/)&&-1!==m.toString().indexOf("random")?s[h].random[p]=m:s[h][p]=m:J.debugMode&&J.debug.add("warn","layerInit.prop2",c):s[p][c]=m}else"clip"===c?(s.original.clip=d[1],s.original.clipShouldBeConverted=!0):J.debugMode&&J.debug.add("warn","layerInit.prop4",c)}if(J.browser.isOld&&(s.in.enabled=!0,s.textIn.enabled=!1,s.textOut.enabled=!1,s.textIn.type=null,s.textOut.type=null),s.in.enabled&&(s.inLayerTo.ease=s.inLayerStyleTo.ease=s.inClipTo.ease=J.functions.convert.easing(s.in.ease)),void 0!==s.inLayerStyleShouldBeConvertedFrom.borderRadius&&(s.inLayerStyleShouldBeConvertedTo.borderRadius=s.original.borderRadius),void 0!==s.outLayerStyleShouldBeConvertedTo.borderRadius&&(s.outLayerStyleShouldBeConvertedFrom.borderRadius=s.original.borderRadius),s.inLayerStyleFromCSS.backgroundColor&&(s.inLayerStyleToCSS.backgroundColor=s.original.backgroundColor),s.outLayerStyleToCSS.backgroundColor&&(s.outLayerStyleFromCSS.backgroundColor=s.original.backgroundColor),s.inLayerStyleFromCSS.color&&(s.inLayerStyleToCSS.color=s.original.color),s.outLayerStyleToCSS.color&&(s.outLayerStyleFromCSS.color=s.original.color),void 0!==s.inLayerStyleShouldBeConvertedFrom.width&&(s.inLayerStyleShouldBeConvertedTo.width=s.original.width),void 0!==s.outLayerStyleShouldBeConvertedTo.width&&(s.outLayerStyleShouldBeConvertedFrom.width=s.original.width),void 0!==s.inLayerStyleShouldBeConvertedFrom.height&&(s.inLayerStyleShouldBeConvertedTo.height=s.original.height),void 0!==s.outLayerStyleShouldBeConvertedTo.height&&(s.outLayerStyleShouldBeConvertedFrom.height=s.original.height),void 0!==s.out.showUntil&&0!==s.out.showUntil&&(s.out.startAt="transitioninend + "+s.out.showUntil),-1!==s.out.startAt.indexOf("slidechangeonly")&&"slidechangeonly"!==s.out.startAt&&(s.out.startAt="slidechangeonly"),s.out.enabled&&(s.outLayerTo.ease=s.outLayerStyleTo.ease=s.outClipTo.ease=J.functions.convert.easing(s.out.ease)),ie.isNumeric(s.loop.count)&&(0<s.loop.count||-1===s.loop.count)&&!1!==s.loop.enabled?(s.loop.enabled=!0,s.loopTo.ease=s.loopClipTo.ease=J.functions.convert.easing(s.loop.ease),-1!==s.loop.count?s.loop.yoyo?s.loop.repeat=2*s.loop.count-1:s.loop.repeat=s.loop.count-1:s.loop.repeat=-1):s.loop.enabled=!1,(!ie.isEmptyObject(s.hoverToCSS)||s.hoverShouldBeConverted.x||s.hoverShouldBeConverted.y||s.hoverShouldBeConverted.borderRadius||s.hoverShouldBeConverted.filter)&&!1!==s.hover.enabled?(s.hover.enabled=!0,s.hover.easeOut||(s.hover.easeOut=s.hover.easeIn),s.hover.easeIn=J.functions.convert.easing(s.hover.easeIn),s.hover.easeOut=J.functions.convert.easing(s.hover.easeOut,!0),s.hover.durationOut||(s.hover.durationOut=s.hover.durationIn),ee.TweenMax.set(e[0],{autoCSS:!1,css:{transformPerspective:s.hoverShouldBeConverted.transformPerspective}})):s.hover.enabled=!1,s.parallax.level&&ie.isNumeric(s.parallax.level)&&0!==s.parallax.level&&!1!==s.parallax.enabled?s.parallax.enabled=!0:s.parallax.enabled=!1,s.is.slideBackground){var f={scale:1,rotation:0};if(J.slides[t].kenBurns.zoom&&(s.kenBurns=J.slides[t].kenBurns),s.kenBurns.zoom){switch(s.kenBurns.from={},s.kenBurns.to={},s.kenBurns.zoom){case"out":s.kenBurns.from.scale=s.kenBurns.scale||1,s.kenBurns.from.rotation=s.kenBurns.rotation||0,s.kenBurns.to=f;break;case"in":s.kenBurns.from=f,s.kenBurns.to.scale=s.kenBurns.scale||1,s.kenBurns.to.rotation=s.kenBurns.rotation||0}delete s.kenBurns.scale,delete s.kenBurns.rotation}else s.kenBurns.from=f,s.kenBurns.to=f;ie.isEmptyObject(J.slides[t].filter)||(J.slides[t].filter.from&&(s.filter.values.bgFrom=J.transitions.layers.filters.convert(J.slides[t].filter.from)),J.slides[t].filter.to&&(s.filter.values.bgTo=J.transitions.layers.filters.convert(J.slides[t].filter.to)))}if(s.textIn.type&&-1===J.defaults.layer.splitTypeKeys.indexOf(s.textIn.type)&&(J.debugMode&&J.debug.add("warn","layerInit.splitType3a",[e[0].tagName,s.textIn.type]),delete s.textIn.type,delete s.textIn.ns,s.textIn.enabled=!1),s.textOut.type&&-1===J.defaults.layer.splitTypeKeys.indexOf(s.textOut.type)&&(J.debugMode&&J.debug.add("warn","layerInit.splitType3b",[e[0].tagName,s.textOut.type]),delete s.textOut.type,delete s.textOut.ns,s.textOut.enabled=!1),s.textIn.type||s.textOut.type){var g=0;if(s.is.textLayer?(s.textIn.type&&(s.textIn.enabled=!0,s.textInNodesTo.ease=J.functions.convert.easing(s.textInNodesTo.ease),s.textIn.split=s.textIn.type.split("_")[0],e.children().length&&J.debugMode&&(g=1)),s.textOut.type&&!J.o.inLayerPreview&&(s.textOut.enabled=!0),s.textOut.enabled&&(s.textOutNodesTo.ease=J.functions.convert.easing(s.textOutNodesTo.ease)),s.textOut.enabled&&s.textOut.type.split("_")[0]!==s.textIn.split&&(s.textIn.split+=", "+s.textOut.type.split("_")[0],e.children().length&&J.debugMode&&(g=1)),-1!==s.textIn.split.indexOf("chars")&&-1===s.textIn.split.indexOf("words")&&(s.textIn.split+=", words"),-1!==s.textIn.split.indexOf("words")&&-1===s.textIn.split.indexOf("lines")&&(s.textIn.split+=", lines")):(delete s.textIn.type,delete s.textOut.type,delete s.textIn.ns,delete s.textOut.ns,J.debugMode&&(g=2)),J.debugMode&&0!==g&&t&&!i)switch(g){case 1:J.debug.add("warn","layerInit.splitType1",[e.prop("nodeName"),t]);break;case 2:J.debug.add("warn","layerInit.splitType2",[t,e.prop("nodeName")])}}(s.original.clip||s.inClipShouldBeConverted.clip||s.outClipShouldBeConverted.clip||s.loopClipShouldBeConverted.clip)&&(s.clip.enabled=!0),s.in.enabled&&s.inLayerToCSS.scale&&(delete s.inLayerToCSS.scaleX,delete s.inLayerToCSS.scaleY),s.out.enabled&&s.outLayerToCSS.scale&&(delete s.outLayerToCSS.scaleX,delete s.outLayerToCSS.scaleY),s.inLayerStyleShouldBeConvertedFrom.filter&&(s.filter.values.in=J.transitions.layers.filters.convert(s.inLayerStyleShouldBeConvertedFrom.filter)),s.filter.values.style=J.transitions.layers.filters.convert(s.original.filter),s.outLayerStyleShouldBeConvertedTo.filter&&(s.filter.values.out=J.transitions.layers.filters.convert(s.outLayerStyleShouldBeConvertedTo.filter)),s.loopLayerShouldBeConverted.filter&&(s.filter.values.loop=J.transitions.layers.filters.convert(s.loopLayerShouldBeConverted.filter)),s.hoverShouldBeConverted.filter&&(s.filter.values.hover=J.transitions.layers.filters.convert(s.hoverShouldBeConverted.filter)),s.in.enabled||(s.in.duration=0),s.textIn.enabled||(s.textIn.duration=0),s.loop.enabled||(s.loop.duration=0),s.textOut.enabled||(s.textOut.duration=0),s.out.enabled||(s.out.duration=0),e.attr("data-ls-slidein",t),void 0!==s.settings.static&&"none"!==s.settings.static?(0!==(g=parseInt(s.settings.static))&&"forever"!==s.settings.static?(e.attr("data-ls-slideout",g),s.settings.slideOut=g):s.settings.slideOut=0,s.is.static=!0,e.attr("data-ls-static","1")):e.attr("data-ls-slideout",t),s.is.mediaLayer&&e.children("video, audio").length&&J.media.html5.singleInit(e.children("video, audio").eq(0)),s.is.backgroundVideo&&s.styleSettings.overlay&&e.find(".ls-bg-video-overlay").css({backgroundImage:"url("+s.styleSettings.overlay+")"}),s.styleSettings.minfontsize&&(s.styleSettings.minfontsize=parseFloat(s.styleSettings.minfontsize)),s.styleSettings.minmobilefontsize&&(s.styleSettings.minmobilefontsize=parseFloat(s.styleSettings.minmobilefontsize)),J.slider.isPopup&&(s.is.pinned=!1),s.is.pinned&&(J.slider.hasPinnedLayers=!0),s.styleSettings.smartbg&&(e.attr("data-ls-smart-bg","").css("--bgs",s.original.backgroundSize),s.styleSettings.smartbg=s.styleSettings.smartbg.toString(),s.is.smartBG=!0)},dataAttribute:function(e,t,i){var s=t.add(t.closest(".ls-wrapper.ls-z"));switch(e){case"remove":s.removeAttr("data-ls-"+i);break;case"add":"active"===i&&s.removeAttr("data-ls-hidden"),"hidden"===i&&s.removeAttr("data-ls-active data-ls-animating-in data-ls-text-animating-in data-ls-animating-out data-ls-text-animating-out"),-1===i.indexOf("in")&&-1===i.indexOf("out")||(s.removeAttr("data-ls-active"),s.removeAttr("data-ls-hidden")),"active"===i&&t.is("[data-ls-animating-in], [data-ls-text-animating-in]")||"hidden"===i&&t.is("[data-ls-animating-out], [data-ls-text-animating-out]")||s.attr("data-ls-"+i,"")}}},get:function(e){var t,i,s,a,r,o=this.$all;return e&&(t="in",s=i="",a=':not(".ls-bg")',r=':not(".ls-bg-video")',-1==(e=e.toLowerCase()).indexOf("bgvideo")&&-1==e.indexOf("backgroundvideo")||(r="",e=e.replace("bgvideo","").replace("backgroundvideo","")),-1!=e.indexOf("video")&&(s+=", > video",e=e.replace("video","")),-1!=e.indexOf("audio")&&(s+=", > audio",e=e.replace("audio","")),-1!=e.indexOf("html5")&&(s+=", > video, > audio",e=e.replace("html5","")),-1!=e.indexOf("youtube")&&(s+=', > iframe[src*="youtube-nocookie.com"], > iframe[src*="youtube.com"], > iframe[src*="youtu.be"], > iframe[data-src*="youtube-nocookie.com"], > iframe[data-src*="youtube.com"], > iframe[data-src*="youtu.be"]',e=e.replace("youtube","")),-1!=e.indexOf("vimeo")&&(s+=', > iframe[src*="player.vimeo"], > iframe[data-src*="player.vimeo"]',e=e.replace("vimeo","")),","==s.charAt(0)&&(s=s.substring(2,s.length)),-1!=e.indexOf("out")&&(t="out"),-1==e.indexOf("img")&&-1==e.indexOf("image")||(i="img"),-1==e.indexOf("bg")&&-1==e.indexOf("background")&&-1==e.indexOf("bgonly")||(a=""),o=-1!=e.indexOf("current")?o.filter(i+"[data-ls-slide"+t+'="'+J.slides.current.index+'"]'+a+r):-1!=e.indexOf("next")?o.filter(i+"[data-ls-slide"+t+'="'+J.slides.next.index+'"]'+a+r):o.filter(i+a+r),-1!=e.indexOf("notactive")&&(o=o.filter(".ls-bg, .ls-bg-video, :hidden"),e=e.replace("notactive","")),-1!=e.indexOf("active")&&(o=o.filter(':visible:not(.ls-bg, .ls-bg-video), [data-ls-static="1"]:not([data-ls-hidden])'),e=e.replace("active","")),-1!=e.indexOf("notstatic")&&(o=o.filter(':not([data-ls-static="1"])'),e=e.replace("notstatic","")),-1!=e.indexOf("static")&&(o=o.filter('[data-ls-static="1"]'),e=e.replace("static","")),-1!=e.indexOf("bgonly")&&(o=o.filter(".ls-bg"),e=e.replace("bgonly","")),""!==s&&(o=o.find(s))),o},update:{data:function(e,t,i){var s,a,r;switch(e instanceof jQuery||(e=ie(e)),i&&e.attr("data-ls",i).data("ls",i),s=(a=e.data(J.defaults.init.dataKey)).is.onSlide,r=a.original,t){default:case"transitions":a.settings.timelineIsCalculated=!1,J.layers.set.properties(e,s,!0);break;case"all":e.data(J.defaults.init.dataKey,new J.defaults.layer.options(e,s)),(a=e.data(J.defaults.init.dataKey)).original=r,J.layers.set.properties(e,s,!0),J.layers.set.wrappers(e,a,s)}}},wrap:function(u,e){var t,h;J.slides[u].wrapped||"wrapping"===J.slides[u].wrapped||(J.slides[u].wrapped="wrapping",t=e?25:0,e=J.slides[u].$layers,0===(h=e.length)?J.slides[u].wrapped=!0:e.each(function(c,p){J.timeouts["slide-"+u+"-layer-"+c]=setTimeout(function(){delete J.timeouts["slide-"+u+"-layer-"+c];var e=ie(p),t=e,i="",s=!1,a="";e.hasClass("ls-hide-phone")&&(a+=" ls-hide-on-phone"),e.hasClass("ls-hide-tablet")&&(a+=" ls-hide-on-tablet"),e.hasClass("ls-hide-desktop")&&(a+=" ls-hide-on-desktop"),e.removeClass("ls-hide-phone ls-hide-tablet ls-hide-desktop"),t.is("a")&&1===t.children().length&&(s=!0,e=t.find(".ls-layer"));var r,o,n,l=e.data(J.defaults.init.dataKey);if(!l)return!0;d=e.data("$layerGroup")||J.slider.$layersWrapper,l.is.backgroundVideo?d=J.slider.$bgVideosWrapper:l.is.slideBackground&&(d=J.slider.$slideBGWrapper),e.data("hasBeenSet")||J.layers.set.singleLayer(e,u),l.textIn.split&&(n=new ee.SplitType(e[0],{split:l.textIn.split}),l.textIn.type&&(l.textIn.ns=n[l.textIn.type.split("_")[0]]),l.textOut.type&&(l.textOut.ns=n[l.textOut.type.split("_")[0]]),-1!==e.css("background-clip").indexOf("text")&&(r=e.find(".char"),o=e.find(".word"),n=e.find(".line"),l.textIn.$nodesForBackgroundClip=r.length?r:o.length?o:n,r.length?e.addClass("ls-has-chars"):o.length?e.addClass("ls-has-words"):e.addClass("ls-has-lines"),l.textIn.$nodesForBackgroundClip.each(function(){var e=ie(this),t=ie.trim(e.text()),i=document.createTextNode(t),t=ie(i),i=ie('<div class="ls-textnode-bgclip-wrap"><div class="ls-textnode"></div></div>').css({backgroundColor:l.original.backgroundColor,backgroundImage:l.original.backgroundImage,backgroundSize:l.original.backgroundSize,backgroundRepeat:l.original.backgroundRepeat,backgroundPosition:l.original.backgroundPosition});e.css({verticalAlign:"top"}).text(""),t.clone().appendTo(e).wrap('<div class="ls-textnode-dummy"></div>'),t.appendTo(e).wrap(i)}))),i=l.is.slideBackground||l.is.backgroundVideo?'<div class="ls-wrapper ls-bg-outer"><div class="ls-wrapper ls-bg-wrap"></div></div>':(l.clip.enabled&&(i='<div class="ls-wrapper ls-clip"></div>'),l.loop.enabled&&(i='<div class="ls-wrapper ls-loop">'+i+"</div>"),l.scroll.enabled&&(i='<div class="ls-wrapper ls-scroll"><div class="ls-wrapper ls-scroll-transform">'+i+"</div></div>"),'<div class="ls-wrapper ls-in-out">'+i+"</div>"),l.parallax.enabled&&(i='<div class="ls-wrapper ls-parallax">'+i+"</div>"),""!==(i='<div class="ls-wrapper ls-z '+(l.is.pinned?"ls-pinned":"")+'">'+i+"</div>")?e.appendTo(d).wrap(i):e.appendTo(d),!0===s&&t.addClass("ls-layer-link").appendTo(e.parent());var d={},s=e.css("mix-blend-mode");s&&"normal"!==s&&(d["mix-blend-mode"]=s,e.css("mix-blend-mode","normal")),l.original.customZIndex=1;s=parseInt(l.original.zIndex);l.is.backgroundVideo||l.is.slideBackground?d={zIndex:l.original.customZIndex}:(s=s||c+101,d.zIndex=s,l.original.customZIndex=s),J.browser.isSafari&&(d.transform="translateZ(0)"),J.layers.set.wrappers(e,l,u),l.elements.$outerWrapper.css(d).addClass(a),l.styleSettings.pointerevents&&l.elements.$innerWrapper.css("pointer-events","none"),l.is.slideBackground&&l.elements.$bgWrapper.css({backgroundColor:J.slides[u].data.backgroundColor}),J.layers.$all=J.layers.$all.add(e),J.slides[u].$layers=J.slides[u].$layers.not(t),c===h-1&&($.children(".ls-slide").eq(u-1).empty(),J.slides[u].wrapped=!0)},t*(c+1))}))}},J.slideshow={direction:"next",nextLoop:0,firstStart:!0,forceFastChange:!1,sequence:{normal:[],randomized:[]},state:{changed:-1,running:!0,paused:!1,pausedByVideo:!1,pausedByHover:!1,pausedByLastCycle:!1},should:{change:!1,start:!1,stop:!1},isPaused:function(){return this.state.paused||this.state.pausedByVideo||this.state.pausedByHover||this.state.pausedByPerformance},init:function(){1==J.slides.count&&ie.extend(J.o,{autoStart:!1,navPrevNext:!1,navStartStop:!1,navButtons:!1,cycles:-1,forceLoopNum:!1,autoPauseSlideshow:!0,firstSlide:1,thumbnailNavigation:"disabled"}),J.o.autoStart&&1!=J.slides.count||J.functions.setStates(this,{running:!1,paused:!0}),this.set.pauseOnHover(),this.set.sequences()},set:{pauseOnHover:function(){J.o.pauseOnHover=!0===J.o.pauseOnHover?"slideshowOnly":J.o.pauseOnHover,!1!==J.o.pauseOnHover&&$.on("mouseenter."+B,function(){J.slider.state.inFullscreen||(J.functions.setStates(J.slideshow,{pausedByHover:!0}),"slideshowOnly"!==J.o.pauseOnHover&&J.transitions.layers.timeline.pause())}).on("mouseleave."+B,function(){var e=1;J.transitions._slideTimeline&&J.transitions._slideTimeline.duration()>J.transitions.layers.timeline.totalDuration&&(e=J.transitions.layers.timeline.totalDuration/J.transitions._slideTimeline.duration()),J.functions.setStates(J.slideshow,{pausedByHover:!1}),ie("body").hasClass("ls-unselectable")||"slideshowOnly"===J.o.pauseOnHover||J.o.pauseLayers&&J.slideshow.isPaused()||J.transitions.layers.timeline.resume(),J.transitions._slideTimeline&&J.transitions.layers.timeline.state.finished&&J.transitions._slideTimeline.progress()<e&&J.functions.setStates(J.transitions.layers.timeline,{finished:!1}),J.slideshow.start()})},sequences:function(){for(var e=0;e<J.slides.count;e++)J.slideshow.sequence.normal[e]=e+1;J.slideshow.sequence.randomized=J.functions.shuffleArray(ie.merge([],J.slideshow.sequence.normal))},normalizedSequence:function(){var e=J.o.shuffleSlideshow?"randomized":"normal",t=J.slideshow.sequence[e],i=J.slideshow.sequence[e].length,s=t.indexOf(J.slides.first.index);J.slideshow.sequence.normalized=[];for(var a=s;a<i;a++)J.slideshow.sequence.normalized.push(t[a]);for(var r=0;r<s;r++)J.slideshow.sequence.normalized.push(t[r])},prevNext:function(e){switch("prev"!==e&&"first"!==e||!J.o.twoWaySlideshow?J.slideshow.direction="next":J.slideshow.direction="prev",e){case"prev":J.slideshow.changeTo(J.slideshow.get.slideInSequence("prev"),!0);break;case"next":J.slideshow.changeTo(J.slideshow.get.slideInSequence("next"),!0);break;case"first":J.slideshow.changeTo(1,!0);break;case"last":J.slideshow.changeTo(J.slides.count,!0)}}},get:{sequence:function(){var e="normal";return J.o.playByScroll?e="normalized":J.o.shuffleSlideshow&&(e="randomized"),e},slideInSequence:function(e){var t=J.slideshow.sequence[this.sequence()],i=t.indexOf(J.slides.current.index);switch(e){case"prev":return 0===i?t[t.length-1]:t[i-1];case"next":return i===t.length-1?t[0]:t[i+1];default:return t[e]}},indexOfSlideInSequence:function(e){return J.slideshow.sequence[this.sequence()].indexOf(e)}},cycles:{set:function(){0<J.o.cycles&&(J.slideshow.curCycle=1,J.slideshow.cycleSlideIndex=J.slideshow.get.indexOfSlideInSequence(J.slides.first.index))},check:function(e){if(J.slideshow.get.indexOfSlideInSequence(e)===J.slideshow.cycleSlideIndex)return++J.slideshow.curCycle===J.o.cycles+1}},start:function(e){!this.isPaused()&&J.transitions._slideTimeline&&J.transitions.layers.timeline.state.finished&&this.changeTo(J.slides.next.index)},stop:function(){J.functions.setStates(this,{running:!1,paused:!0})},changeTo:function(e,t,i){if(!document.body.contains(I))return!1;if(J.slides.current.index===e&&!J.slideshow.forceSlideChangeTo)return!1;if(J.slideshow.forceSlideChangeTo=null,!this.firstStart&&J.api.hasEvent("slideChangeWillStart")){var s=J.api.triggerEvent("slideChangeWillStart",J.api.eventData());if(!1===s)return;ie.isNumeric(s)&&(e=parseInt(s))}e>J.slides.count||e<1?J.debugMode&&(J.debug.add("group","slideshow"),J.debug.add("warn","slideshow.invalidSlideIndex",[e,J.slides.count]),J.debug.groupEnd()):J.slider.isBusy()||J.slideshow.state.pausedByVideo&&!t?!J.slider.state.preloadingImages&&J.slider.state.animatingSlides&&J.transitions._slideTransition&&(J.slideshow.forceSlideChangeTo=e,J.slideshow.should.change=!0,J.transitions._slideTransition.progress(1),J.transitions.timelines.set("currentforce",function(e,t){e.progress(1)})):(J.functions.setStates(J.transitions.layers.timeline,{finished:!1}),J.slideshow.should.change=!1,J.debugMode&&J.debug.add("group","slideshow"),t?(i&&(J.navigation.direction=J.slides.current.index>e?"prev":"next"),J.o.twoWaySlideshow&&("prev"===J.navigation.direction?J.slideshow.direction="prev":J.slideshow.direction="next"),J.debugMode&&(J.debug.add("log","slideshow.changedByUser",!1),J.o.twoWaySlideshow&&J.debug.add("log","slideshow.setdir",J.slideshow.direction))):J.navigation.direction=J.slideshow.direction,J.transitions.timers.reverse(),J.gui.media.hideUnmute(),J.slides.set.nextSlideIndex(e),J.debugMode&&(J.debug.add("log","slideshow.change",[J.slides.current.index,J.slides.next.index,J.slideshow.direction,J.navigation.direction]),J.debug.groupEnd()),J.functions.setStates(this,{pausedByVideo:!1,changed:++this.state.changed}),J.functions.setStates(J.slider,{changingSlides:!0}),J.slider.state.animatingSlides&&J.transitions._slideTransition&&J.transitions.timelines.set("currentforce",function(e,t){e.progress(1)}),J.preload.imagesOfSlide(J.slides.next.index,function(){J.transitions.start()}))},forceStop:function(){J.navigation.stop(),ie.each(J.timeouts,function(e,t){clearTimeout(J.timeouts[e])}),J.transitions.timers.stop(),J.transitions._slideTimeline.stop(),J.transitions._slideTimelineAlternate.stop(),J.functions.setStates(J.transitions.layers.timeline,{stopped:!0,running:!1}),$.find("*").stop(!0,!1).dequeue()},restart:function(){$.find("*").stop(),J.navigation.change(J.slides.current.index,J.slideshow.direction)}},J.media={properties:{$allMediaLayers:ie(),playingInCurSlide:0,endedInCurSlide:0,userDidUnmute:!1},init:function(){J.functions.setStates(J.slider,{waitingForYouTube:!1,waitingForVimeo:!1}),J.media.properties.allowToUnmute=!0,J.media.youtube.init(),J.media.vimeo.init(),J.media.html5.init()},isPlayable:function(e){return!e.is("[data-ls-animating-out], [data-ls-hidden]")},get:function(e){var t,i=J.media.properties.$allMediaLayers;return e&&(-1!==(e=e.toLowerCase()).indexOf("notbg")&&(i=i.not(".ls-bg-video")),-1!==e.indexOf("active")&&(i=i.filter("[data-ls-active], [data-ls-animating-in], [data-ls-text-animating-in]")),-1!==e.indexOf("notstatic")&&(i=i.not("[data-ls-static]")),t=i.find("video, audio, iframe"),-1!==e.indexOf("notplaying")?t=t.filter("[data-ls-not-playing]"):-1!==e.indexOf("playing")&&(t=t.filter("[data-ls-playing]")),-1!==e.indexOf("allowtounmute")&&(t=t.filter("[data-ls-allow-to-unmute]")),-1!==e.indexOf("mutedbybrowser")&&(t=t.filter("[data-ls-muted-by-browser]"))),t},set:{backgroundVideo:function(e,t){0===e.children(".ls-vpcontainer").length&&(e=ie("<div>").addClass("ls-vpcontainer").appendTo(e),t.mediaSettings.poster&&ie("<div>").appendTo(e).addClass("ls-videopreview").attr({style:"background-image: url("+t.mediaSettings.poster+")"}))},customPoster:function(e,t){return t.mediaSettings.poster||!1},dataAttribute:function(e,t){e.removeAttr("data-ls-playing data-ls-not-playing"),e.attr("data-ls-"+t,""),J.media.functions.checkSlideshowWaiting()},mediaElements:function(e,t,i){var s=ie("<div>").addClass("ls-vpcontainer").appendTo(e);!("autoplay"in i.mediaSettings)&&J.o.autoPlayVideos||i.mediaSettings.autoplay?e.addClass("ls-autoplay"):ie("<div>").appendTo(s).addClass("ls-playvideo"),t.is("iframe")&&i.mediaProperties.poster&&ie("<div>").appendTo(s).addClass("ls-videopreview").attr({style:"background-image: url("+i.mediaProperties.poster+")"}),t.is("video, audio")&&i.mediaProperties.poster&&ie("<div>").appendTo(s).addClass("ls-videopreview").attr({style:"background-image: url("+i.mediaProperties.poster+")"})},properties:function(e,t,i){switch(i.is.mediaLayer=!0,i.mediaProperties.type){case"youtube":i.is.backgroundVideo?(i.mediaProperties.options=ie.extend(!0,{loop:1,playlist:i.mediaProperties.embedID,controls:0,autoplay:0,showinfo:!1,modestbranding:1,thumbnail:!1},J.media[i.mediaProperties.type].defaults,i.mediaProperties.embedOptions),J.media.set.backgroundVideo(e,i)):(i.mediaProperties.options=ie.extend(!0,{},J.media[i.mediaProperties.type].defaults,i.mediaProperties.embedOptions,{autoplay:0}),J.media.set.mediaElements(e,t,i));break;case"vimeo":i.is.backgroundVideo?(i.mediaProperties.options=ie.extend(!0,{loop:1,byline:0,portrait:0,title:0,fun:0},J.media[i.mediaProperties.type].defaults,i.mediaProperties.embedOptions),J.media.set.backgroundVideo(e,i)):(i.mediaProperties.options=ie.extend(!0,{},J.media[i.mediaProperties.type].defaults,i.mediaProperties.embedOptions,{autoplay:0}),J.media.set.mediaElements(e,t,i));break;case"html5":t.attr("autoplay")&&(t.removeAttr("autoplay"),e.attr("data-ls",e.attr("data-ls")+" autoplay: true;")),i.is.backgroundVideo?(t.removeAttr("controls"),t[0].muted=!0,t.attr("loop","")):"controls"in i.mediaSettings&&"auto"!==i.mediaSettings.controls&&(i.mediaSettings.controls?(t.attr("controls",""),t.removeAttr("nocontrols")):t.removeAttr("controls")),"volume"in i.mediaSettings&&(i.mediaSettings.volume<0?i.mediaSettings.volume=0:100<i.mediaSettings.volume&&(i.mediaSettings.volume=100),t[0].volume=i.mediaSettings.volume/100),"muted"in i.mediaSettings&&(i.mediaSettings.muted?t[0].muted=!0:t[0].muted=!1),"loop"in i.mediaSettings&&(i.mediaSettings.loop?t.attr("loop",""):t.removeAttr("loop")),i.is.backgroundVideo?J.media.set.backgroundVideo(e,i):J.media.set.mediaElements(e,t,i)}},thumbnail:function(e,t){switch(t){case"show":e.stop(!0,!0).fadeIn(J.transitions.media.defaults.fadeIn);break;case"hide":e.stop(!0,!0).delay(J.transitions.media.defaults.delay).fadeOut(J.transitions.media.defaults.fadeOut)}}},events:{start:function(e,t,i){var s;J.api.hasEvent("mediaDidStart")&&!i.mediaProperties.alreadyStarted&&J.media.functions.allowedToPlay(e,i)&&((s=J.api.eventData()).event.target=e[0],J.api.triggerEvent("mediaDidStart",s),i.mediaProperties.alreadyStarted=!0)},stop:function(e,t,i){var s;J.api.hasEvent("mediaDidStop")&&i.mediaProperties.alreadyStarted&&((s=J.api.eventData()).event.target=e[0],J.api.triggerEvent("mediaDidStop",s),i.mediaProperties.alreadyStarted=!1)}},unmute:{set:function(e,t,i){("youtube"!==t&&"vimeo"!==t||J.media.properties.allowToUnmute)&&J.gui.media.showUnmute(),e.attr("data-ls-allow-to-unmute",""),i&&e.attr("data-ls-muted-by-browser","")},multipleMediaElements:function(){var e=$.find("[data-ls-allow-to-unmute]");(J.o.rememberUnmuteState?e:e.filter("[data-ls-playing], [data-ls-muted-by-browser]")).each(function(){J.media.unmute.singleMediaElement(ie(this))}),J.gui.media.hideUnmute(),J.media.properties.userDidUnmute=!0},singleMediaElement:function(e){var t,i=e.closest(".ls-layer").data(J.defaults.init.dataKey),s=!1;switch(i.mediaProperties.type){case"youtube":J.media.properties.allowToUnmute&&(s=!0,i.mediaProperties.player.unMute());break;case"vimeo":J.media.properties.allowToUnmute&&(s=!0,t=i.mediaSettings.volume?i.mediaSettings.volume/100:1,i.mediaProperties.player.setVolume(t));break;case"html5":s=!0,e[0].muted=!1}s&&e.removeAttr("data-ls-muted-by-browser data-ls-allow-to-unmute")}},functions:{allowedToPlay:function(e,t){e=e.closest(".ls-layer");return!!(J.slides.current.index===parseInt(e.attr("data-ls-slidein"))||t.is.backgroundVideo&&J.slides.next.index===parseInt(e.attr("data-ls-slidein"))||e.attr("data-ls-static")&&void 0!==e.attr("data-ls-active"))},playActiveMedia:function(e){var t,i;J.media.get("notbg,active").each(function(){if(t=ie(this).closest(".ls-layer"),i=t.data(J.defaults.init.dataKey),e){if(!i.mediaProperties.pausedByPerformance)return!0;i.mediaProperties.pausedByPerformance=!1}if(J.media.isPlayable(t))if(i.mediaProperties.alreadyStarted)switch(i.mediaProperties.type){case"youtube":i.mediaProperties.player.playVideo();break;case"vimeo":i.mediaProperties.player.play();break;case"html5":i.mediaProperties.$media[0].play()}else ie(this).parent().find(".ls-vpcontainer").trigger("playMedia")})},stopSingleMedia:function(e,t){var i=t.mediaProperties.$media;J.media[t.mediaProperties.type].stop(e,i,t,!0),J.media.functions.mediaEnded(i,e,t)},pauseActiveMedia:function(e){var t;J.media.get("notbg,active,playing").each(function(){switch(t=ie(this).closest(".ls-layer").data(J.defaults.init.dataKey),e&&(t.mediaProperties.pausedByPerformance=!0),t.mediaProperties.type){case"youtube":t.mediaProperties.player.pauseVideo();break;case"vimeo":t.mediaProperties.player.pause();break;case"html5":this.pause()}})},urlToObject:function(e){var s={},e=e.split("?")[1];return e&&e.split("#")[0].replace(/([^=&]+)=([^&]*)/g,function(e,t,i){s[decodeURIComponent(t)]=ie.isNumeric(decodeURIComponent(i))?parseInt(decodeURIComponent(i)):decodeURIComponent(i)}),s},checkSlideshowState:function(e,t){!t.is.static&&J.o.autoPauseSlideshow&&(J.functions.setStates(J.slideshow,{pausedByVideo:!0}),"auto"==J.o.autoPauseSlideshow&&J.media.properties.playingInCurSlide++)},checkSlideshowWaiting:function(){var e=J.media.properties.playingInCurSlide,t=J.media.get("notbg,active,notstatic,notplaying"),i=t.length;i===e&&0<i&&J.slideshow.state.pausedByVideo&&J.o.autoPauseSlideshow&&!J.timeouts.pausedVideos&&J.slideshow.state.running?J.timeouts.pausedVideos=setTimeout(function(){J.slideshow.state.running?t.each(function(){J.media.functions.mediaEnded(ie(this),ie(this).closest(".ls-layer"),ie(this).closest(".ls-layer").data(J.defaults.init.dataKey))}):J.slideshow.state.pausedByVideo=!1},5e3):J.timeouts.pausedVideos&&(clearTimeout(J.timeouts.pausedVideos),delete J.timeouts.pausedVideos)},playIfAllowed:function(e){var t=e.data(J.defaults.init.dataKey);t.is.mediaLayer&&(te.isMobile&&($.hasClass("ls-device-is-phone")&&t.elements.$outerWrapper.hasClass("ls-hide-on-phone")||$.hasClass("ls-device-is-tablet")&&t.elements.$outerWrapper.hasClass("ls-hide-on-tablet"))||("autoplay"in t.mediaSettings||!J.o.autoPlayVideos)&&!t.mediaSettings.autoplay||e.find(".ls-vpcontainer").trigger("playMedia"))},stop:function(s){s=void 0===s||s;J.layers.get("current,out,youtube").each(function(){var e=ie(this),t=e.closest(".ls-layer"),i=t.data(J.defaults.init.dataKey);J.media.youtube.stop(t,e,i,s)}),J.layers.get("current,out,vimeo").each(function(){var e=ie(this),t=e.closest(".ls-layer"),i=t.data(J.defaults.init.dataKey);J.media.vimeo.stop(t,e,i,s)}),J.layers.get("current,out,html5").each(function(){var e=ie(this),t=e.closest(".ls-layer"),i=t.data(J.defaults.init.dataKey);J.media.html5.stop(t,e,i,s)}),J.media.properties.playingInCurSlide=0,J.media.properties.endedInCurSlide=0},mediaEnded:function(e,t,i){"auto"!=J.o.autoPauseSlideshow||i.is.backgroundVideo||(i.is.static||J.media.properties.endedInCurSlide++,J.media.properties.endedInCurSlide==J.media.properties.playingInCurSlide&&0!==J.media.properties.playingInCurSlide&&J.functions.setStates(J.slideshow,{pausedByVideo:!1})),J.media.set.dataAttribute(e,"not-playing"),J.media.events.stop(e,t,i)},removeFromTimeline:function(e){J.transitions._slideTimeline.kill(null,e.closest(".ls-in-out")[0]),J.transitions._slideTimelineAlternate.kill(null,e.closest(".ls-in-out")[0])}},youtube:{defaults:{autoplay:0,playsinline:1,wmode:"opaque",html5:1,enablejsapi:1,version:3,rel:0},init:function(){var f=0;this.$medias=J.slider.$hiddenWrapper.find('iframe[src*="youtube-nocookie.com"], iframe[src*="youtube.com"], iframe[src*="youtu.be"], iframe[data-src*="youtube-nocookie.com"], iframe[data-src*="youtube.com"], iframe[data-src*="youtu.be"]').each(function(){var e=ie(this).attr({id:"ls-youtube-"+ ++f,allow:"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture; fullscreen",allowfullscreen:""}),t=e.closest(".ls-layer");t.data("hasBeenSet")||J.layers.set.singleLayer(t);var i,s,a,r,o,n,l,d,c=t.data(J.defaults.init.dataKey),p=e.attr("src")||e.attr("data-src"),u=J.media.functions.urlToObject(p),h=(p=p.split("?")[0].split("//")[1]).split("/"),m=h[h.length-1],h=J.media.set.customPoster(t,c);c.mediaProperties={type:"youtube",$media:e,embedURL:p,embedID:m,embedOptions:u},h?(c.mediaProperties.poster=h,J.media.set.properties(t,e,c)):(i=["default.jpg","mqdefault.jpg","hqdefault.jpg","sddefault.jpg","maxresdefault.jpg"],s="https://img.youtube.com/vi/"+p.split("embed/")[1].split("?")[0]+"/",a=s+J.o.youtubePreview,o=r=0,n=function(){this.width>r&&(r=this.width,a=this.src),d()},l=function(){d()},d=function(){(o+=1)===i.length&&(c.mediaProperties.poster=a,J.media.set.properties(t,e,c))},i.forEach(function(e){var t=new Image;t.addEventListener("error",l,!1),t.addEventListener("load",n,!1),t.src=s+e}))}),this.$medias.length&&(J.media.properties.$allMediaLayers=J.media.properties.$allMediaLayers.add(this.$medias.closest(".ls-layer")),J.timeouts.loadYouTube=Math.floor(Date.now()/1e3),window.YT||ie("<script>").attr({src:"https://www.youtube.com/iframe_api",type:"text/javascript"}).appendTo("head"),window.onYouTubeIframeAPIReady=function(){window._layerSlider.globals.youTubeIsReady=!0},J.intervals.isYouTubeReady=setInterval(function(){window.YT&&1===window.YT.loaded||window._layerSlider.globals.youTubeIsReady||3<Math.floor(Date.now()/1e3)-J.timeouts.loadYouTube?(clearInterval(J.intervals.isYouTubeReady),delete J.intervals.isYouTubeReady,delete J.timeouts.loadYouTube,J.media.youtube.$medias.closest(".ls-layer").each(function(){var e=ie(this),t=e.find("iframe"),i=e.data(J.defaults.init.dataKey);e.on("playMedia."+B+" click."+B,".ls-vpcontainer",function(){J.media.set.thumbnail(ie(this),"hide"),J.media.functions.checkSlideshowState(e,i),t.hide(),J.media.youtube.play(e,i.mediaProperties.$media,i,i.mediaProperties.embedURL),setTimeout(function(){t.show()},10)}).on("playBackgroundVideo."+B,function(){J.media.youtube.play(e,i.mediaProperties.$media,i,i.mediaProperties.embedURL),J.layers.set.dataAttribute("add",e,"active")}).on("stopBackgroundVideo."+B,function(){J.media.youtube.stop(e,i.mediaProperties.$media,i,!0),J.layers.set.dataAttribute("add",e,"hidden")}).on("preloadBackgroundVideo."+B,function(){J.media.youtube.createPlayer(e,i.mediaProperties.$media,i,i.mediaProperties.embedURL,!0)})}),J.functions.setStates(J.slider,{waitingForYouTube:!1})):J.functions.setStates(J.slider,{waitingForYouTube:!0})},25))},createPlayer:function(t,i,s,a,r){s.mediaProperties.playerState="initializing","controls"in s.mediaSettings&&(s.mediaProperties.options.controls=s.mediaSettings.controls?1:0),"loop"in s.mediaSettings&&(s.mediaProperties.options.loop=s.mediaSettings.loop?1:0),"showinfo"in s.mediaSettings&&(s.mediaProperties.options.showinfo=s.mediaSettings.showinfo?1:0),s.mediaProperties.options.loop?s.mediaProperties.options.playlist=s.mediaProperties.embedID:delete s.mediaProperties.options.playlist,0===s.mediaProperties.options.showinfo&&(s.mediaProperties.options.modestbranding=1),i.attr("src","https://"+a+"?"+jQuery.param(s.mediaProperties.options)).on("load",function(){s.mediaProperties.player=new YT.Player(i[0],{events:{onReady:function(e){s.mediaProperties.playerState="ready",s.mediaSettings.volume&&s.mediaProperties.player.setVolume(s.mediaSettings.volume),r&&!s.mediaProperties.shouldPlay||(J.media.youtube.play(t,i,s,a),s.mediaProperties.shouldPlay=!1)},onStateChange:function(e){switch(e.data){case 0:s.mediaProperties.options.loop&&1===s.mediaProperties.options.loop||J.media.functions.mediaEnded(i,t,s);break;case 1:J.media.events.start(i,t,s),s.mediaProperties.lastStarted=Date.now();break;case 2:case-1:s.mediaProperties.firstState&&0!==s.mediaProperties.lastState&&1!==s.mediaProperties.lastState||s.mediaProperties.lastStarted&&(Date.now(),s.mediaProperties.lastStarted)}1===e.data?J.media.set.dataAttribute(i,"playing"):J.media.set.dataAttribute(i,"not-playing"),J.media.youtube.savePlayerState(s,e.data)}}})})},savePlayerState:function(e,t){e.mediaProperties.firstState||(e.mediaProperties.firstState=t),e.mediaProperties.lastState=t},play:function(e,t,i,s,a){void 0!==t.attr("data-ls-muted-by-browser")&&J.media.unmute.singleMediaElement(t),i.mediaProperties.player?i.mediaProperties.player.playVideo?(!i.is.backgroundVideo||"muted"in i.mediaSettings||i.mediaProperties.player.mute(),i.mediaSettings.muted?J.o.rememberUnmuteState&&J.media.properties.userDidUnmute||(i.mediaProperties.player.mute(),"offertounmute"==i.mediaSettings.muted&&J.media.unmute.set(t,i.mediaProperties.type)):a&&(i.mediaProperties.player.mute(),J.media.unmute.set(t,i.mediaProperties.type,!0)),J.media.functions.allowedToPlay(t,i)?J.media.isPlayable(e)&&i.mediaProperties.player.playVideo():J.media.youtube.stop(e,t,i,!0)):i.mediaProperties.shouldPlay=!0:i.mediaProperties.playerState?i.mediaProperties.shouldPlay=!0:this.createPlayer(e,t,i,s)},stop:function(e,t,i,s){i.mediaProperties.player&&(i.mediaProperties.player.pauseVideo&&i.mediaProperties.player.pauseVideo(),s&&i.mediaProperties.player.seekTo&&(i.mediaProperties.player.seekTo(0),i.mediaProperties.player.pauseVideo()),i.is.backgroundVideo||J.media.set.thumbnail(e.find(".ls-vpcontainer"),"show"),J.media.events.stop(t,e,i))}},vimeo:{defaults:{autoplay:0,autopause:0,wmode:"opaque",playsinline:1},init:function(){var d,e,t=this.$medias=J.slider.$hiddenWrapper.find('iframe[src*="player.vimeo"], iframe[data-src*="player.vimeo"]'),c=J.slider.$hiddenWrapper.find('.ls-slide:eq(0) iframe[src*="player.vimeo"], .ls-slide:eq(0) iframe[data-src*="player.vimeo"]').length;t.length&&(J.timeouts.loadVimeo=Math.floor(Date.now()/1e3),J.media.properties.$allMediaLayers=J.media.properties.$allMediaLayers.add(t.closest(".ls-layer")),d=0,ie("<script>").attr({src:"https://player.vimeo.com/api/player.js",type:"text/javascript"}).appendTo("head"),J.intervals.isVimeoReady=setInterval(function(){J.functions.setStates(J.slider,{waitingForVimeo:!0}),(window.Vimeo||3<Math.floor(Date.now()/1e3)-J.timeouts.loadVimeo)&&(clearInterval(J.intervals.isVimeoReady),delete J.intervals.isVimeoReady,delete J.timeouts.loadVimeo,e())},25),e=function(){var l=0;J.media.vimeo.$medias.each(function(){var t=ie(this).attr({id:"ls-vimeo-"+ ++d,allow:"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture; fullscreen",allowfullscreen:""}),i=t.closest(".ls-layer");i.data("hasBeenSet")||J.layers.set.singleLayer(i);var s=i.data(J.defaults.init.dataKey),e=t.attr("src")||t.attr("data-src"),a=J.media.functions.urlToObject(e),r="https://vimeo.com/api/oembed.json?url=http://vimeo.com/"+e.split("video/")[1].split("?")[0],e=e.split("?")[0].split("//")[1];J.media.vimeo.defaults.player_id="ls-vimeo-"+d;var o=J.media.set.customPoster(i,s);s.mediaProperties={type:"vimeo",$media:t,embedURL:e,embedOptions:a};function n(e){s.mediaProperties.poster=e,(0===c||0<c&&++l==c)&&(window._layerSlider.globals.vimeoIsReady=!0),J.media.set.properties(i,t,s)}o?n(o):ie.getJSON(r,function(e){n(e.thumbnail_url)}),i.on("playMedia."+B+" click."+B,".ls-vpcontainer",function(){J.media.set.thumbnail(ie(this),"hide"),J.media.functions.checkSlideshowState(i,s),J.media.vimeo.play(i,t,s,e)}).on("playBackgroundVideo."+B,function(){J.media.vimeo.play(i,t,s,e),J.layers.set.dataAttribute("add",i,"active")}).on("stopBackgroundVideo."+B,function(){J.media.vimeo.stop(i,t,s,!0),J.layers.set.dataAttribute("add",i,"hidden")}).on("preloadBackgroundVideo."+B,function(){J.media.vimeo.createPlayer(i,t,s,e,!0)})}),J.functions.setStates(J.slider,{waitingForVimeo:!1})})},createPlayer:function(e,t,i,s,a){i.mediaProperties.playerState="initializing";"controls"in i.mediaSettings&&delete i.mediaSettings.controls,"loop"in i.mediaSettings&&(i.mediaProperties.options.loop=i.mediaSettings.loop?1:0),"showinfo"in i.mediaSettings&&(i.mediaSettings.showinfo?(i.mediaProperties.options.byline=1,i.mediaProperties.options.portrait=1,i.mediaProperties.options.title=1):(i.mediaProperties.options.byline=0,i.mediaProperties.options.portrait=0,i.mediaProperties.options.title=0),delete i.mediaProperties.options.showinfo),"volume"in i.mediaSettings&&(0===i.mediaSettings.volume?(i.mediaSettings.volume=100,i.mediaSettings.muted=!0):(i.mediaSettings.volume<0||100<i.mediaSettings.volume)&&(i.mediaSettings.volume=100)),i.mediaSettings.muted&&(i.mediaProperties.options.muted=1),t.attr("src","https://"+s+"?"+jQuery.param(i.mediaProperties.options)),i.mediaProperties.player=new Vimeo.Player(t[0]),i.mediaProperties.player.on("play",function(){J.media.set.dataAttribute(t,"playing"),J.media.events.start(t,e,i)}),i.mediaProperties.player.on("pause",function(){J.media.set.dataAttribute(t,"not-playing")}),i.mediaProperties.player.on("ended",function(){J.media.functions.mediaEnded(t,e,i)}),i.mediaProperties.player.ready().then(function(){i.mediaProperties.playerState="ready",i.mediaSettings.volume&&!i.mediaSettings.muted&&ie.isNumeric(i.mediaSettings.volume)&&0<=i.mediaSettings.volume&&i.mediaSettings.volume<=100&&i.mediaProperties.player.setVolume(i.mediaSettings.volume/100),a||J.media.vimeo.play(e,t,i,s)})},play:function(t,i,s,a,e){void 0!==i.attr("data-ls-muted-by-browser")&&J.media.unmute.singleMediaElement(i),s.mediaProperties.player?(!s.is.backgroundVideo||"muted"in s.mediaSettings||s.mediaProperties.player.setVolume(0),s.mediaSettings.muted&&(J.o.rememberUnmuteState&&J.media.properties.userDidUnmute?J.o.rememberUnmuteState&&J.media.properties.userDidUnmute&&(s.mediaProperties.player.setVolume(s.mediaSettings.volume/100||1),delete s.mediaSettings.muted):(s.mediaProperties.player.setVolume(0),"offertounmute"==s.mediaSettings.muted&&J.media.unmute.set(i,s.mediaProperties.type))),e?(s.mediaProperties.player.setVolume(0),J.media.unmute.set(i,s.mediaProperties.type,!0)):s.mediaProperties.player.getVolume().then(function(e){0==e&&"offertounmute"==s.mediaSettings.muted&&J.media.unmute.set(i,s.mediaProperties.type)}),J.media.functions.allowedToPlay(i,s)?s.mediaProperties.player.play().then(function(){}).catch(function(e){switch(e.name){case"PasswordError":window.console&&(console.error(J.defaults.slider.errorText),console.error("Vimeo video is password protected and may cause playback issues."));break;case"PrivacyError":window.console&&(console.error(J.defaults.slider.errorText),console.error("Vimeo video is private and may cause playback issues."));break;default:J.media.vimeo.play(t,i,s,a,!0)}}):J.media.vimeo.stop(t,i,s,!0)):this.createPlayer(t,i,s,a)},stop:function(e,t,i,s){i.mediaProperties.player&&(i.mediaProperties.player.pause(),s&&i.mediaProperties.player.setCurrentTime(0),i.is.backgroundVideo||J.media.set.thumbnail(e.find(".ls-vpcontainer"),"show"),J.media.events.stop(t,e,i))}},html5:{singleInit:function(t){var e,i,s,a,r=t.closest(".ls-layer"),o=r.data(J.defaults.init.dataKey),n=t.find("source"),l=J.media.set.customPoster(r,o);o.mediaProperties={type:"html5",$media:t,poster:l||t.attr("poster")},t.removeAttr("poster"),0<n.length?n.each(function(){void 0!==(e=ie(this).attr("type"))&&!1!==e||(i=ie(this).attr("src"),s=i.split("."),a=s[s.length-1].toLowerCase(),ie(this).attr("type",ie(this).parent()[0].tagName.toLowerCase()+"/"+a)),""!==t[0].canPlayType(ie(this).attr("type"))&&(o.mediaProperties.canBePlayed=!0)}):void 0!==t.attr("src")&&!1!==t.attr("src")&&(i=t.attr("src"),s=i.split("."),a=s[s.length-1].toLowerCase(),""!==t[0].canPlayType(t[0].tagName.toLowerCase()+"/"+a)&&(o.mediaProperties.canBePlayed=!0)),o.mediaProperties.canBePlayed&&(J.media.set.properties(r,t,o),t.on("ended."+B,function(){J.media.functions.mediaEnded(t,r,o)}).on("play."+B,function(){}).on("playing."+B,function(){J.media.events.start(t,r,o),J.media.set.dataAttribute(t,"playing")}).on("pause."+B,function(){J.media.set.dataAttribute(t,"not-playing")}),r.on("playMedia."+B+" click."+B,".ls-vpcontainer",function(e){J.media.set.thumbnail(ie(this),"hide"),J.media.functions.checkSlideshowState(r,o),J.media.html5.play(r,t,o)}).on("playBackgroundVideo."+B,function(){J.media.html5.play(r,t,o),J.layers.set.dataAttribute("add",r,"active")}).on("stopBackgroundVideo."+B,function(){J.media.html5.stop(r,t,o,!0),J.layers.set.dataAttribute("add",r,"hidden")}))},init:function(){var e,t=J.slider.$hiddenWrapper.find("video, audio");J.media.properties.$allMediaLayers=J.media.properties.$allMediaLayers.add(t.closest(".ls-layer")),t.length&&(e=0,t.each(function(){ie(this).closest(".ls-layer").data(J.defaults.init.dataKey).is.mediaLayer=!0,ie(this).attr("id","ls-html5-"+ ++e).attr("playsinline",""),ie(this)[0].pause()}))},play:function(e,t,i){var s;i.mediaProperties.canBePlayed&&(void 0!==t.attr("data-ls-muted-by-browser")&&J.media.unmute.singleMediaElement(t),i.mediaSettings.muted&&(J.o.rememberUnmuteState&&J.media.properties.userDidUnmute?J.o.rememberUnmuteState&&J.media.properties.userDidUnmute&&(t[0].muted=!1):(t[0].muted=!0,"offertounmute"==i.mediaSettings.muted&&J.media.unmute.set(t,i.mediaProperties.type))),void 0!==(s=t[0].play())&&s.then(function(e){}).catch(function(e){t[0].muted=!0,t[0].play(),t[0].paused&&J.functions.setStates(J.slideshow,{pausedByVideo:!1}),J.media.unmute.set(t,i.mediaProperties.type,!0)}))},stop:function(e,t,i,s){i.mediaProperties.canBePlayed&&(t[0].pause(),s&&(t[0].currentTime=0),i.is.backgroundVideo||J.media.set.thumbnail(ie(this),"show"),J.media.events.stop(t,e,i))}}},J.yourLogo={init:function(){J.o.yourLogo&&(this.$element=ie("<img>").addClass("ls-yourlogo").appendTo($).attr("style",J.o.yourLogoStyle).css({visibility:"hidden",display:"bock"}).on("load."+B,function(){var e=J.yourLogo.$element?500:0;J.timeouts.yourLogo=setTimeout(function(){delete J.timeouts.yourLogo,J.yourLogo.$element.data("originalWidth",J.yourLogo.$element.width()),J.yourLogo.$element.data("originalHeight",J.yourLogo.$element.height()),"auto"!=J.yourLogo.$element.css("left")&&J.yourLogo.$element.data("originalLeft",J.yourLogo.$element[0].style.left),"auto"!=J.yourLogo.$element.css("right")&&J.yourLogo.$element.data("originalRight",J.yourLogo.$element[0].style.right),"auto"!=J.yourLogo.$element.css("top")&&J.yourLogo.$element.data("originalTop",J.yourLogo.$element[0].style.top),"auto"!=J.yourLogo.$element.css("bottom")&&J.yourLogo.$element.data("originalBottom",J.yourLogo.$element[0].style.bottom),!1!==J.o.yourLogoLink&&ie("<a>").appendTo($).attr("href",J.o.yourLogoLink).attr("target",J.o.yourLogoTarget).css({textDecoration:"none",outline:"none"}).append(J.yourLogo.$element),J.yourLogo.$element.css({display:"none",visibility:"visible"}),J.yourLogo.resize()},e)}).attr("src",J.o.yourLogo))},resize:function(){this.$element.css({width:this.$element.data("originalWidth")*J.resize.ratio,height:this.$element.data("originalHeight")*J.resize.ratio}),this.$element.fadeIn(300);var e="auto",t="auto",i="auto",s="auto",e=this.$element.data("originalLeft")&&-1!=this.$element.data("originalLeft").indexOf("%")?$.width()/100*parseFloat(this.$element.data("originalLeft"))-this.$element.width()/2+parseInt($.css("padding-left")):parseInt(this.$element.data("originalLeft"))*J.resize.ratio,t=this.$element.data("originalRight")&&-1!=this.$element.data("originalRight").indexOf("%")?$.width()/100*parseFloat(this.$element.data("originalRight"))-this.$element.width()/2+parseInt($.css("padding-right")):parseInt(this.$element.data("originalRight"))*J.resize.ratio,i=this.$element.data("originalTop")&&-1!=this.$element.data("originalTop").indexOf("%")?$.height()/100*parseFloat(this.$element.data("originalTop"))-this.$element.height()/2+parseInt($.css("padding-top")):parseInt(this.$element.data("originalTop"))*J.resize.ratio,s=this.$element.data("originalBottom")&&-1!=this.$element.data("originalBottom").indexOf("%")?$.height()/100*parseFloat(this.$element.data("originalBottom"))-this.$element.height()/2+parseInt($.css("padding-bottom")):parseInt(this.$element.data("originalBottom"))*J.resize.ratio;this.$element.css({left:e,right:t,top:i,bottom:s})}},J.gui={navigation:{init:function(){J.o.navPrevNext&&this.prevNext.init(),(J.o.navStartStop||J.o.navButtons)&&this.bottom.init()},prevNext:{init:function(){ie('<a class="ls-gui-element ls-nav-prev" aria-label="jump to the previous slide" href="#" />').on("click."+B,function(e){e.preventDefault(),$.layerSlider("prev")}).appendTo($),ie('<a class="ls-gui-element ls-nav-next" aria-label="jump to the next slide" href="#" />').on("click."+B,function(e){e.preventDefault(),$.layerSlider("next")}).appendTo($),J.o.hoverPrevNext&&this.setHover()},setHover:function(){$.find(".ls-nav-prev, .ls-nav-next").css({display:"none"}),$.on("mouseenter."+B,function(){J.gui.navigation.forceHide||$.find(".ls-nav-prev, .ls-nav-next").stop(!0,!0).fadeIn(300)}).on("mouseleave."+B,function(){$.find(".ls-nav-prev, .ls-nav-next").stop(!0,!0).fadeOut(300)})}},bottom:{init:function(){this.wrapper=ie('<div class="ls-gui-element ls-bottom-nav-wrapper" />').appendTo($),J.o.navButtons&&"always"!=J.o.thumbnailNavigation&&this.bullets.init(),J.o.navStartStop?this.createStartStop():"always"!=J.o.thumbnailNavigation&&this.createSides(),J.o.hoverBottomNav&&"always"!=J.o.thumbnailNavigation&&this.setHover(),"always"==J.o.thumbnailNavigation&&(this.wrapper.addClass("ls-above-thumbnails"),this.thumbnails.init())},bullets:{init:function(){var t=this;ie('<span class="ls-bottom-slidebuttons" />').appendTo($.find(".ls-bottom-nav-wrapper"));for(var e=0;e<J.slides.count;e++){var i=ie('<a href="#" aria-label="jump to slide '+(e+1)+'" />').appendTo($.find(".ls-bottom-slidebuttons")).data("index",e+1).on("click."+B,function(e){e.preventDefault(),$.layerSlider(ie(this).data("index"))});"hover"==J.o.thumbnailNavigation&&i.on("mouseenter."+B,function(){var e=ie(this);$.find(".ls-thumbnail-hover-img").css({left:parseInt(t.hoverWrapper.css("padding-left")),top:parseInt(t.hoverWrapper.css("padding-top"))}),t.hoverImage.on("load."+B,function(){0===ie(this).width()?t.hoverImage.css({position:"relative",margin:"0 auto",left:"auto"}):t.hoverImage.css({position:"absolute",marginLeft:-ie(this).width()/2,left:"50%"}),t.hoverImage.css("display","none").stop(!0,!0).fadeIn(250)}).attr("src",J.slides[e.data("index")].data.thumbnail),t.hoverWrapper.css({display:"block"}).stop().animate({left:ie(this).position().left+(ie(this).width()-t.hoverWrapper.outerWidth())/2},250),t.hoverWrapperInner.css({display:"none",visibility:"visible"}).stop().fadeIn(250)}).on("mouseleave."+B,function(){t.hoverWrapperInner.stop().fadeOut(250,function(){t.hoverWrapper.css({visibility:"hidden",display:"block"})})})}t.set.active(J.slides.first.index),"hover"==J.o.thumbnailNavigation&&t.set.hover()},set:{active:function(e){void 0===e&&(e=J.slides.current.index),e--,$.find(".ls-bottom-slidebuttons a").removeClass("ls-nav-active"),$.find(".ls-bottom-slidebuttons a:eq( "+e+" )").addClass("ls-nav-active")},hover:function(){var e=J.gui.navigation.bottom.bullets,t=ie('<div class="ls-thumbnail-hover"><div class="ls-thumbnail-hover-inner"><div class="ls-thumbnail-hover-bg"></div><div class="ls-thumbnail-hover-img"><img></div><span></span></div></div>').appendTo($.find(".ls-bottom-slidebuttons"));$.find(".ls-thumbnail-hover, .ls-thumbnail-hover-img").css({width:J.o.tnWidth,height:J.o.tnHeight}),e.hoverWrapper=$.find(".ls-thumbnail-hover"),e.hoverImage=e.hoverWrapper.find("img").css({height:J.o.tnHeight}),e.hoverWrapperInner=$.find(".ls-thumbnail-hover-inner").css({visibility:"hidden",display:"block"}),t.appendTo($.find(".ls-bottom-slidebuttons"))}}},createStartStop:function(){this.buttonStart=ie('<a class="ls-nav-start" aria-label="start slideshow" href="#" />').on("click."+B,function(e){e.preventDefault(),$.layerSlider("start")}).prependTo($.find(".ls-bottom-nav-wrapper")),this.buttonStop=ie('<a class="ls-nav-stop" aria-label="stop slideshow" href="#" />').on("click."+B,function(e){e.preventDefault(),$.layerSlider("stop")}).appendTo($.find(".ls-bottom-nav-wrapper")),J.o.autoStart?this.setStartStop("start"):this.setStartStop("stop")},setStartStop:function(e){if(J.o.navStartStop)switch(e){case"start":this.buttonStart.addClass("ls-nav-start-active"),this.buttonStop.removeClass("ls-nav-stop-active");break;case"stop":this.buttonStart.removeClass("ls-nav-start-active"),this.buttonStop.addClass("ls-nav-stop-active")}},createSides:function(){ie('<span class="ls-nav-sides ls-nav-sideleft" />').prependTo($.find(".ls-bottom-nav-wrapper")),ie('<span class="ls-nav-sides ls-nav-sideright" />').appendTo($.find(".ls-bottom-nav-wrapper"))},setHover:function(){var e=this;e.wrapper.css({display:"none"}),$.on("mouseenter."+B,function(){J.gui.navigation.forceHide||e.wrapper.stop(!0,!0).fadeIn(300)}).on("mouseleave."+B,function(){e.wrapper.stop(!0,!0).fadeOut(300)})},switchHelper:function(e){if(J.o.hoverBottomNav&&!$.hasClass("ls-hover"))switch(e){case"on":J.gui.navigation.bottom.thumbnails.wrapper.css({visibility:"hidden",display:"block"});break;case"off":J.gui.navigation.bottom.thumbnails.wrapper.css({visibility:"visible",display:"none"})}},thumbnails:{init:function(){this.wrapper=ie('<div class="ls-gui-element ls-thumbnail-wrapper '+("contain"!==J.o.tnFillMode?"ls-thumbnail-fill":"")+'"></div>').appendTo($),ie('<div class="ls-thumbnail"><div class="ls-thumbnail-inner"><div class="ls-thumbnail-slide-container"><div class="ls-thumbnail-slide"></div></div></div></div>').appendTo(this.wrapper),this.$element=$.find(".ls-thumbnail-slide-container"),"ontouchstart"in window?this.$element.addClass("ls-touchscroll"):this.$element.on("mouseenter."+B,function(){ie(this).addClass("ls-thumbnail-slide-hover")}).on("mouseleave."+B,function(){ie(this).removeClass("ls-thumbnail-slide-hover"),J.gui.navigation.bottom.thumbnails.scroll()}).on("mousemove."+B,function(e){e=parseInt(e.pageX-ie(this).offset().left)/ie(this).width()*(ie(this).width()-ie(this).find(".ls-thumbnail-slide").width());ie(this).find(".ls-thumbnail-slide").stop().css({marginLeft:e})});for(var e=0;e<J.slides.count;e++){var t=e+1,i=J.slides[t].data.thumbnail,s="";"contain"!==J.o.tnFillMode&&(i="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",s='style="background-image: url('+J.slides[t].data.thumbnail+"); background-size: "+J.o.tnFillMode+';"');i=ie('<a href="#" class="ls-thumb-'+(e+1)+'"  aria-label="jump to slide '+(e+1)+'"><img '+s+' src="'+i+'"></a>');J.slides[t].data.tnAlt&&i.find("img").attr("alt",J.slides[t].data.tnAlt),i.data("index",t).on("click."+B,function(e){e.preventDefault(),$.layerSlider(ie(this).data("index"))}).appendTo($.find(".ls-thumbnail-slide")),"ontouchstart"in window||i.on("mouseenter."+B,function(){ie(this).children().stop().fadeTo(300,J.o.tnActiveOpacity/100)}).on("mouseleave."+B,function(){ie(this).children().hasClass("ls-thumb-active")||ie(this).children().stop().fadeTo(300,J.o.tnInactiveOpacity/100)})}J.gui.navigation.bottom.buttonStart&&J.gui.navigation.bottom.buttonStop&&(J.gui.navigation.bottom.wrapper=ie('<div class="ls-bottom-nav-wrapper ls-below-thumbnails"></div>').appendTo($),J.gui.navigation.bottom.buttonStart.clone().on("click."+B,function(e){e.preventDefault(),$.layerSlider("start")}).appendTo(J.gui.navigation.bottom.wrapper),J.gui.navigation.bottom.buttonStop.clone().on("click."+B,function(e){e.preventDefault(),$.layerSlider("stop")}).appendTo(J.gui.navigation.bottom.wrapper)),J.o.hoverBottomNav&&this.setHover()},setHover:function(){var e=this;e.wrapper.css("display","none"),J.gui.navigation.bottom.wrapper&&(J.gui.navigation.bottom.wrapper="block"==J.gui.navigation.bottom.wrapper.css("display")?J.gui.navigation.bottom.wrapper:$.find(".ls-above-thumbnails"),J.gui.navigation.bottom.wrapper.css("display","none")),$.on("mouseenter."+B,function(){$.addClass("ls-hover"),J.gui.navigation.forceHide||(e.wrapper.stop(!0,!0).fadeIn(300),J.gui.navigation.bottom.wrapper&&J.gui.navigation.bottom.wrapper.stop(!0,!0).fadeIn(300))}).on("mouseleave."+B,function(){$.removeClass("ls-hover"),e.wrapper.stop(!0,!0).fadeOut(300),J.gui.navigation.bottom.wrapper&&J.gui.navigation.bottom.wrapper.stop(!0,!0).fadeOut(300)})},change:function(e){e=e||J.slides.next.index;$.find(".ls-thumbnail-slide a:not(.ls-thumb-"+e+" )").children().each(function(){ie(this).removeClass("ls-thumb-active").stop().fadeTo(750,J.o.tnInactiveOpacity/100)}),$.find(".ls-thumbnail-slide a.ls-thumb-"+e).children().addClass("ls-thumb-active").stop().fadeTo(750,J.o.tnActiveOpacity/100)},scroll:function(){var e;$.find(".ls-thumbnail-slide-container").hasClass("ls-thumbnail-slide-hover")||(e=!!$.find(".ls-thumb-active").length&&$.find(".ls-thumb-active").parent())&&(e=e.position().left+e.width()/2,e=0<(e=(e=$.find(".ls-thumbnail-slide-container").width()/2-e)<$.find(".ls-thumbnail-slide-container").width()-$.find(".ls-thumbnail-slide").width()?$.find(".ls-thumbnail-slide-container").width()-$.find(".ls-thumbnail-slide").width():e)?0:e,$.find(".ls-thumbnail-slide").animate({marginLeft:e},600))},resize:function(){J.gui.navigation.bottom.switchHelper("on");var e=-1==J.slider.initial.width.indexOf("%")?parseInt(J.slider.initial.originalWidth):$.width(),t=$.find(".ls-thumbnail"),e=-1==J.o.tnContainerWidth.indexOf("%")?parseInt(J.o.tnContainerWidth):parseInt(e/100*parseInt(J.o.tnContainerWidth));$.find(".ls-thumbnail-slide a").css({width:parseInt(J.o.tnWidth*J.resize.ratio),height:parseInt(J.o.tnHeight*J.resize.ratio)}),$.find(".ls-thumbnail-slide a:last").css({margin:0}),$.find(".ls-thumbnail-slide").css({height:parseInt(J.o.tnHeight*J.resize.ratio)}),t.css({width:e*Math.floor(100*J.resize.ratio)/100}),t.width()>$.find(".ls-thumbnail-slide").width()&&t.css({width:$.find(".ls-thumbnail-slide").width()}),J.gui.navigation.bottom.switchHelper("off")}}}},media:{init:function(){0<J.media.properties.$allMediaLayers.length&&ie('<div class="ls-gui-element ls-media-unmute" aria-label="Unmute"><div class="ls-media-unmute-bg"></div><div class="ls-icon-muted"></div><div class="ls-icon-unmuted"></div></div>').on("click."+B,function(e){e.preventDefault(),$.layerSlider("unmute")}).appendTo($)},showUnmute:function(){$.find(".ls-media-unmute").addClass("ls-media-unmute-active")},hideUnmute:function(){$.find(".ls-media-unmute").removeClass("ls-media-unmute-active")}},skin:{load:function(){$.addClass("ls-"+J.o.skin);var e,t=J.o.skinsPath+J.o.skin+"/skin.css",i=ie("head").length?ie("head"):ie("body");ie('link[href="'+t+'"]').length?(e=ie('link[href="'+t+'"]'),J.gui.skin.isLoaded||(J.gui.skin.isLoaded=!0,J.timeouts.skinLoad1=setTimeout(function(){delete J.timeouts.skinLoad1,J.slider.init()},150))):e=document.createStyleSheet?(document.createStyleSheet(t),ie('link[href="'+t+'"]')):ie('<link rel="stylesheet" href="'+t+'" type="text/css" />').appendTo(i),e.on("load."+B,function(){J.gui.skin.isLoaded||(J.gui.skin.isLoaded=!0,J.timeouts.skinLoad2=setTimeout(function(){delete J.timeouts.skinLoad2,J.slider.init()},150))}),M.on("load."+B,function(){J.gui.skin.isLoaded||(J.gui.skin.isLoaded=!0,J.timeouts.skinLoad3=setTimeout(function(){delete J.timeouts.skinLoad3,J.slider.init()},150))}),J.timeouts.skinLoad4=setTimeout(function(){J.gui.skin.isLoaded||(J.gui.skin.isLoaded=!0,delete J.timeouts.skinLoad4,J.slider.init())},1e3)}},shadow:{init:function(){this.set(),this.resize()},set:function(){this.$element=ie('<div class="ls-gui-element ls-shadow"></div>').appendTo($),"block"!=this.$element.css("display")||this.$element.find("img").length||(this.show=function(){J.gui.shadow.$element.css({display:"none",visibility:"visible"}).fadeIn(500,function(){J.gui.shadow.show=!1})},this.image=ie("<img>").attr("src",J.o.skinsPath+J.o.skin+"/shadow.png").appendTo(this.$element),this.btmMod="number"==typeof parseInt($.css("padding-bottom"))?parseInt($.css("padding-bottom")):0)},resize:function(){this.image&&(0<this.image.height()?0<this.btmMod?this.$element.css({height:this.image.height()/2}):this.$element.css({height:this.image.height(),marginTop:-this.image.height()/2}):J.timeouts.resizeShadow=setTimeout(function(){delete J.timeouts.resizeShadow,J.gui.shadow.resize()},50))}},timers:{init:function(){J.o.showBarTimer&&this.bar.create(),J.o.showCircleTimer&&this.circle.create();var e=!1;(e=J.o.showSlideBarTimer?ie("<div>").insertAfter($):ie('[data-slidebar-for="'+$.attr("id")+'"], [data-slidebar-for="'+B+'"]')).length&&(e.addClass("ls-gui-element"),this.slidebar.create(e))},bar:{create:function(){this.$element=ie("<div>").addClass("ls-gui-element ls-bar-timer").appendTo($)}},circle:{create:function(){this.$element=ie("<div>").addClass("ls-gui-element ls-circle-timer").appendTo($),this.$element.append(ie('<div class="ls-ct-center"></div><div class="ls-ct-left"><div class="ls-ct-rotate"><div class="ls-ct-hider"><div class="ls-ct-half"></div></div></div></div><div class="ls-ct-right"><div class="ls-ct-rotate"><div class="ls-ct-hider"><div class="ls-ct-half"></div></div></div></div>')),this.$element.data("original",{opacity:this.$element.css("opacity")})}},slidebar:{$containerElement:[],$element:[],$progressBarElement:[],$sliderContainerElement:[],$sliderElement:[],elementWidth:[],containerElementWidth:[],sliderContainerElementWidth:[],state:{},create:function(e){function i(e,t){(a=(e.pageX||J.device.touchX||0)-o.$element[t].offset().left-o.sliderContainerElementWidth[t]/2)<0&&(a=0),a>o.containerElementWidth[t]-o.sliderContainerElementWidth[t]&&(a="calc( 100% - "+J.gui.timers.slidebar.sliderContainerElementWidth[t]+"px )"),o.$sliderContainerElement[t].css({left:a}),J.transitions._slideTimeline&&J.transitions._slideTimeline.progress("string"==typeof a?J.transitions.layers.timeline.progress:a/(o.containerElementWidth[t]-o.sliderContainerElementWidth[t])*J.transitions.layers.timeline.progress)}function s(e){"dragging"==J.gui.timers.slidebar.state&&(J.transitions._slideTimeline&&J.transitions.layers.timeline.state.finished&&J.transitions._slideTimeline.progress()!==J.transitions.layers.timeline.progress&&J.functions.setStates(J.transitions.layers.timeline,{finished:!1}),ie(document).off("mousemove."+B),ie("body").prop("unselectable",!1).removeClass("ls-unselectable"),J.o.pauseLayers&&!J.slideshow.state.running||J.slider.state.isPaused||!J.transitions._slideTimeline||J.o.playByScroll||(!0===J.transitions.layers.timeline.state.started?J.transitions.layers.timeline.resume():J.transitions.layers.timeline.play()),J.gui.timers.slidebar.state=!1)}var a,r=ie(document),o=this;ie.each(e,function(t,e){o.$containerElement[t]=ie(e).addClass("ls-slidebar-container "+B),o.$element[t]=ie("<div>").addClass("ls-slidebar").appendTo(o.$containerElement[t]),o.$progressBarElement[t]=ie("<div>").addClass("ls-progressbar").appendTo(o.$element[t]),o.$sliderContainerElement[t]=ie("<div>").addClass("ls-slidebar-slider-container").appendTo(o.$containerElement[t]),o.$sliderElement[t]=ie("<div>").addClass("ls-slidebar-slider").appendTo(o.$sliderContainerElement[t]),o.sliderContainerElementWidth[t]=o.$sliderContainerElement[t].width(),o.$sliderContainerElement[t].css({marginTop:-o.$sliderElement[t].outerHeight()/2}),o.$containerElement[t].on("touchmove."+B,function(e){i(e,t)}),o.$containerElement[t].on("touchend."+B,function(e){s()}),o.$containerElement[t].on("mousedown."+B+" touchstart."+B,function(e){J.transitions.layers.timeline.pause(0),ie("body").prop("unselectable",!0).addClass("ls-unselectable"),ie(document).on("mousemove."+B,function(e){i(e,t)}),i(e,t),J.gui.timers.slidebar.state="dragging"}),r=r.add(o.$sliderElement[t])}),ie("body").on("mouseup."+B,function(e){s()})}}},loadingIndicator:{init:function(){this.$element=ie("<div>").css({display:"none"}).addClass("ls-gui-element ls-loading-container").appendTo($),ie("<div>").addClass("ls-loading-indicator").appendTo(this.$element)},show:function(){this.$element.delay(400).fadeIn(300)},hide:function(){this.$element.stop(!0,!0).fadeOut(300)}}},J.navigation={direction:"next",init:function(){1<J.slides.count&&(this.set.keyboard(),this.set.touch())},set:{keyboard:function(){J.o.keybNav&&ie("body").on("keydown."+B,function(e){ie(e.target).is(":input")||J.slider.isAnimating||J.slider.isPreloading||(37==e.which?J.navigation.prev():39==e.which&&J.navigation.next())})},touch:function(){"ontouchstart"in window&&J.o.touchNav&&(J.slider.$innerWrapper.on("touchstart."+B,function(e){e=e.touches||e.originalEvent.touches;1==e.length&&(J.device.touchStartX=J.device.touchEndX=e[0].clientX)}),J.slider.$innerWrapper.on("touchmove."+B,function(e){var t=e.touches||e.originalEvent.touches;1==t.length&&(J.device.touchEndX=t[0].clientX),45<Math.abs(J.device.touchStartX-J.device.touchEndX)&&e.preventDefault()}),J.slider.$innerWrapper.on("touchend."+B,function(e){45<Math.abs(J.device.touchStartX-J.device.touchEndX)&&(0<J.device.touchStartX-J.device.touchEndX?$.layerSlider("touchNext"):$.layerSlider("touchPrev"))}))}},prev:function(){(!J.slider.isPopup||J.slider.isPopup&&J.slider.state.popupIsVisible)&&(this.direction="prev",this.forceDirection="prev",J.slideshow.set.prevNext("prev"))},next:function(){(!J.slider.isPopup||J.slider.isPopup&&J.slider.state.popupIsVisible)&&(this.direction="next",this.forceDirection="next",J.slideshow.set.prevNext("next"))},start:function(){J.functions.setStates(J.slideshow,{running:!0,paused:!1}),!0===J.slideshow.state.pausedByLastCycle&&J.functions.setStates(J.slideshow,{pausedByLastCycle:!1}),J.gui.navigation.bottom.setStartStop("start"),J.slideshow.state.pausedByHover||1!==J.transitions._slideTimeline.timeScale()&&J.transitions.layers.timeline.resume(),J.slideshow.start()},stop:function(){J.gui.navigation.bottom.setStartStop("stop"),J.o.pauseLayers&&J.transitions.layers.timeline.pause(),J.slideshow.stop()}},J.preload={init:function(){J.slider.$hiddenWrapper.find(".ls-slide img").each(function(){var e,t=ie(this),i=t[0],s={};t.is(".ls-layer, .ls-bg")&&(i.getAttribute("width")&&(s.width=i.getAttribute("width")),i.getAttribute("height")&&(s.height=i.getAttribute("height")),i.sizes&&(s.sizes=i.sizes),J.o.useSrcset&&(t.data("srcset")||i.srcset)&&(s.srcSet=t.data("srcset")||i.srcset,s.curSrc=i.currentSrc,e=s.srcSet.split(",").map(function(e){return parseInt(ie.trim(e).split(" ")[1])}),s.maxWidth=Math.max.apply(null,e)),t.removeAttr("width height sizes srcset loading"),ie.isEmptyObject(s)||(t.data(J.defaults.init.dataKey).attributes=s)),t.data("lazy-src")?t.data("src",t.data("lazy-src")):t.attr("data-lazy-src")?t.data("src",t.attr("data-lazy-src")):t.attr("data-lazy")?t.data("src",t.attr("data-lazy")):t.data("src")?s.curSrc&&t.data("src",s.curSrc):t.data("src",s.curSrc||i.src),t.attr("data-lazyset")?t.attr("srcset",t.attr("data-lazyset")):t.attr("data-lazy-srcset")&&t.attr("srcset",t.attr("data-lazy-srcset")),t.removeAttr("data-lazy-src data-lazy data-lazyset data-lazy-srcset"),t.attr("src","data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")})},imagesOfSlide:function(e,t){var i,s,a;!0!==J.slides[e].wrapped?(this.slideIndex=e,t?(this.onCompleteCallback=t,J.functions.setStates(J.slider,{preloadingImages:!0}),J.gui.loadingIndicator.show()):this.onCompleteCallback=!1,J.slider.canShow&&$.css({visibility:"visible"}),this.preImages=[],i=this,J.slider.$hiddenWrapper.find(".ls-slide:eq("+(i.slideIndex-1)+") *").each(function(){s=ie(this),a=this;var e,t=s.data(J.defaults.init.dataKey);s.is("img")?(s.data("src")&&s.attr("src",s.data("src")),t&&t.attributes&&t.attributes.srcSet&&J.o.useSrcset&&(a.srcset=t.attributes.srcSet),e=a.src,(t=!!(t&&t.attributes&&t.attributes.curSrc)&&t.attributes.curSrc)&&e!==t&&s.is(".ls-bg")&&(e=t,J.slides[i.slideIndex].data.$background.attr("src",e)),J.preload.preImages.push([e,s])):"none"!==s.css("background-image")&&-1!==s.css("background-image").indexOf("url")&&J.preload.preImages.push([s.css("background-image").match(/url\(['"]?(.+?)['"]?\)/)[1],s])}),J.transitions.firstSlide&&J.o.globalBGImage&&J.preload.preImages.push([J.o.globalBGImage,ie()]),this.thumbnailsAreLoaded||this.thumbnails(),0===this.preImages.length?this.onComplete():this.start()):J.slider.shouldResize&&t?(J.resize.setLayers(J.layers.get("next, bg")),J.resize.layers(t)):t&&t()},thumbnails:function(){for(var e=J.slider.thumbnails.filter(function(e,t,i){return i.indexOf(e)==t}),t=e.length,i=0;i<t;i++)(new Image).src=e[i];this.thumbnailsAreLoaded=!0},start:function(){J.debugMode&&(J.debug.add("group","preload"),J.debug.add("log","preload.info",this.slideIndex)),this.preloadedImagesCount=0;for(var e,t=this,i=function(){++t.preloadedImagesCount==t.preImages.length&&(J.debugMode&&J.debug.groupEnd(),t.onComplete())},s=function(){J.debugMode&&(e=this.src.substring(this.src.lastIndexOf("/")+1,this.src.length),J.debug.add("log","preload.success",e)),this.originalLayer.data("preloadedWidth",this.width),this.originalLayer.data("preloadedHeight",this.height),i()},a=function(){J.debugMode&&(e=this.src.substring(this.src.lastIndexOf("/")+1,this.src.length),J.debug.add("warn","preload.fail",e)),i()},r=0;r<this.preImages.length;r++){var o=new Image;o.addEventListener("error",a,!1),o.addEventListener("load",s,!1),o.src=this.preImages[r][0],o.originalLayer=this.preImages[r][1]}},onComplete:function(){var a=this;this.onCompleteCallback?(J.layers.wrap(this.slideIndex),function e(){var t,i,s;0!==J.slides[a.slideIndex].$layers.length?J.timeouts.waitForWrap=setTimeout(e,100):(delete J.timeouts.waitForWrap,J.functions.setStates(J.transitions.layers.parallax,{ready:!0}),ie(".ls-thumbnail-wrapper, .ls-nav-next, .ls-nav-prev, .ls-bottom-nav-wrapper").css({visibility:"visible"}),J.slides[a.slideIndex].wrapped=!0,t=!(!window._layerSlider.globals.youTubeIsReady&&J.layers.get("next,in,youtube,bgvideo").length),i=!(!window._layerSlider.globals.vimeoIsReady&&J.layers.get("next,in,vimeo,bgvideo").length),s=function(){J.gui.loadingIndicator.hide(),J.slider.shouldResize?(J.resize.setLayers(J.layers.get("next, bg")),J.resize.layers(a.onCompleteCallback)):a.onCompleteCallback()},t&&i?s():J.intervals.waitForJSApisLoaded=setInterval(function(){(t||window._layerSlider.globals.youTubeIsReady)&&(i||window._layerSlider.globals.vimeoIsReady)&&(clearInterval(J.intervals.waitForJSApisLoaded),delete J.intervals.waitForJSApisLoaded,s())},50))}()):J.layers.wrap(this.slideIndex,!0),J.functions.setStates(J.slider,{preloadingImages:!1})}},J.resize={setLayers:function(e){this.$responsiveLayers=e.add(J.layers.get("active")),J.slides.next.data.$backgroundVideo.length&&(this.$responsiveLayers=this.$responsiveLayers.add(J.slides.next.data.$backgroundVideo))},all:function(e={}){return!(J.slider.state.isHidden&&!J.slider.isPopup)&&(!!document.body.contains(I)&&(J.api.hasEvent("sliderWillResize")&&J.api.triggerEvent("sliderWillResize",J.api.eventData()),this.slider(!!e.forceToGetParentWidth),J.o.performanceMode&&this.performance(),J.slider.isScene&&!J.slider.$spacingWrapper.is("[data-disabled-scene]")&&this.scene(),this.navigation(),this.layers(),this.yourLogo(),this.shadow(),this.timers(),J.transitions.layers.timeline.shouldRestart&&J.o.allowRestartOnResize&&(J.functions.resetSlideTimelines(),J.transitions.layers.timeline.create(!0),J.slider.isScrollScene&&J.transitions._slideTimeline&&J.transitions.scrollscene.animate()),void(J.api.hasEvent("sliderDidResize")&&J.api.triggerEvent("sliderDidResize",J.api.eventData()))))},viewport:function(){M.scrollTop(Math.round(J.slider.offset.top)-(te.viewport.height-J.slider.height)/2)},slider:function(e){if(!document.body.contains(I))return!1;te.viewport.width||M.trigger("resize.lsGlobal"),J.o.fixFloatedContainers&&$.css("display","none");var t,i,s,a=J.slider.$parentWithNumericWidthValue&&0<J.slider.$parentWithNumericWidthValue.width()&&!e?J.slider.$parentWithNumericWidthValue:J.functions.getSliderClosestParentElementWithNumericValueOfProperty("width"),r=J.slider.initial,o=J.slider.$parentWithNumericWidthValuePercent?a.width()/100*J.slider.$parentWithNumericWidthValuePercent:a.width(),n=r.type,l=0!==r.maxWidth?r.maxWidth:o,d="auto"===r.marginLeft?0:r.marginLeft,e="auto"===r.marginRight?0:r.marginRight;switch(J.o.fixFloatedContainers&&$.css("display","block"),-1!==l.indexOf("%")?l=o/100*parseInt(l):-1!==l.indexOf("vw")&&(l=te.viewport.width/100*parseInt(l)),J.slider.state.inFullscreen?$[0].style.maxWidth="":0!==r.maxWidth&&($[0].style.maxWidth=l),l<(o-=d+e)&&0<=l&&(o=l),J.o.fitScreenWidth&&("fullwidth"===n||"fullsize"===n&&"fitheight"!==J.o.fullSizeMode&&"fitwidth"!==J.o.fullSizeMode)&&(d=a.offset().left,e=parseInt(a.css("padding-left"))||0,l=parseInt(a.css("border-left-width"))||0,$[0].style.maxWidth="100vw",$[0].style.marginLeft=-(d+e+l)+"px",o=te.viewport.width),o-=r.skinWidth,te.getScreenSize(),J.slider.state.inFullscreen&&(o=te.screen.width),n){case"responsive":0<J.o.maxRatio&&(o=Math.min(r.width*J.o.maxRatio,o)),t=(J.slider.state.inFullscreen?(te.screen.ratio>r.ratio?this.ratio=te.screen.height/r.height:this.ratio=te.screen.width/r.width,o=Math.round(r.width*this.ratio)):this.ratio=o/r.width,Math.round(r.height*this.ratio));break;case"fullwidth":t=o<J.o.responsiveUnder?(this.ratio=o/J.o.responsiveUnder,Math.round(r.height*this.ratio)):J.slider.state.inFullscreen?te.screen.ratio>r.layersWidth/r.height?(this.ratio=te.screen.height/r.height,te.screen.height):(this.ratio=te.screen.width/r.layersWidth,r.height*this.ratio):(this.ratio=1,r.height);break;case"fullsize":switch(J.o.fullSizeMode.toLowerCase()){case"normal":t=te.viewport.height-r.skinHeight;break;case"hero":var c=Math.max($.offset().top,0),p=J.slider.isScene?J.slider.$spacingWrapper:$;J.slider.isScene&&(c=0);var u=ie(J.o.calculateOffsetFrom).length?ie(J.o.calculateOffsetFrom).height()+ie(J.o.calculateOffsetFrom)[0].getBoundingClientRect().top:0;u&&p.css("top",u),(t=te.viewport.height-r.skinHeight-(u||c))<=0&&(t=te.viewport.height-r.skinHeight);break;case"fitheight":o=a.width()-r.skinWidth,t=a.height()-r.skinHeight;break;case"fitwidth":o=a.width()-r.skinWidth,t=te.viewport.height-r.skinHeight}o/t<r.ratio?this.ratio=o/r.layersWidth:this.ratio=t/r.layersHeight;break;case"fixed":case"fixedsize":this.ratio=1,o=r.width,t=r.height,J.o.maxRatio=1,I.style.maxWidth="none"}this.ratio=J.o.maxRatio&&0<J.o.maxRatio&&this.ratio>J.o.maxRatio?J.o.maxRatio:this.ratio,I.style.width=o+"px",I.style.height=t+"px",J.slider.width=o,J.slider.height=t,te.isMobile?768<=te.viewport.width||te.viewport.width>te.viewport.height?$.removeClass("ls-device-is-phone").addClass("ls-device-is-tablet"):$.removeClass("ls-device-is-tablet").addClass("ls-device-is-phone"):$.removeClass("ls-device-is-phone ls-device-is-tablet").addClass("ls-device-is-desktop"),J.o.marginTop&&(i=-1!=J.o.marginTop.indexOf("sh")||-1!=J.o.marginTop.indexOf("%")?J.slider.height/100*parseInt(J.o.marginTop):J.o.marginTop),J.o.marginBottom&&(s=-1!=J.o.marginBottom.indexOf("sh")||-1!=J.o.marginBottom.indexOf("%")?J.slider.height/100*parseInt(J.o.marginBottom):J.o.marginBottom),J.slider.$spacingWrapper.css({marginTop:i,marginBottom:s}),J.slider.hasPinnedLayers&&J.slider.$layersWrapper.css({clip:"rect(0px "+J.slider.width+"px "+J.slider.height+"px 0px)"})},performance:function(){var e=parseInt(J.o.performanceModeThreshold);-1!==J.o.performanceModeThreshold.indexOf("sh")||-1!==J.o.performanceModeThreshold.indexOf("%")?J.performance.threshold=J.slider.height*(e/100):-1!==J.o.performanceModeThreshold.indexOf("vh")?J.performance.threshold=te.viewport.height*(e/100):-1!==J.o.performanceModeThreshold.indexOf("px")?J.performance.threshold=e:J.performance.threshold=J.slider.height*e,J.performance.threshold=Math.max(parseInt(J.performance.threshold),0)},scene:function(){var e;J.slider.isScrollScene&&J.o.sceneDuration?e=Math.round(J.slider.height+J.o.sceneDuration*J.slider.height/(J.o.sceneSpeed/100))+"px":J.slider.isSticky&&(-1!==J.o.sceneHeight.indexOf("sh")||-1!==J.o.sceneHeight.indexOf("%")?(e=J.slider.height*(parseInt(J.o.sceneHeight)/100),e=Math.round(Math.max(J.slider.height,e)),e+="px"):-1===J.o.sceneHeight.indexOf("px")&&-1===J.o.sceneHeight.indexOf("vh")?(e=J.slider.height*(J.o.sceneHeight||2),e=Math.round(Math.max(J.slider.height,e)),e+="px"):e=J.o.sceneHeight),e&&J.slider.$spacingWrapper.css({height:e}),$.css({top:J.transitions.scrollscene.stickLimit})},borderRadius:function(e,i){ie.isNumeric(e)&&(e=e.toString());var s="";return ie.each(e.split(" "),function(e,t){-1==t.indexOf("%")&&-1==t.indexOf("em")?s+=Math.round(parseInt(t)*i)+"px ":s+=t+" "}),ie.trim(s)},convertSingleValue:function(e,t){return-1==e.indexOf("em")?Math.round(parseInt(e)*t)+"px ":e},layers:function(e){if(this.$responsiveLayers){J.debugMode&&J.debug.add("group","resize");for(var t,i=this.$responsiveLayers,s=J.slider.initial,a=J.slider.width,r=J.slider.height,o=a/r,n=[],l=[],d=[],c=[],p=0,u=0,h=window.LS_previewZoom||1,m=0,f=i.length;m<f;m++){var g=i[m],y=ie(g),v=y.data(J.defaults.init.dataKey),w=!!v.is.insideLayerGroup&&y.data("$layerGroup"),b=!!v.is.insideLayerGroup&&w.data(J.defaults.init.dataKey),S=v.original,x=this.ratio;v.settings.minresponsiveratio&&x<v.settings.minresponsiveratio&&(x=v.settings.minresponsiveratio),v.settings.maxresponsiveratio&&x>v.settings.maxresponsiveratio&&(x=v.settings.maxresponsiveratio),v.settings.calculatedratio=x,!y.is("img")||"auto"!==S.width&&"auto"!==S.height||((_=v.elements.$_innerWrappers).addClass("ls-force-display-block ls-force-visibility-hidden"),"auto"===S.width&&(S.width=y.width()),"auto"===S.height&&(S.height=y.height()),_.removeClass("ls-force-display-block ls-force-visibility-hidden")),t="responsive"===s.type&&-1!==J.o.maxRatio?s.width:s.layersWidth,L="responsive"===s.type&&-1!==J.o.maxRatio?s.height:s.layersHeight,T=t,u="fullsize"===s.type||"fullwidth"===s.type||"responsive"===s.type?(p=0<t?(a-t*x)/2:0,0<L?(r-L*x)/2:0):(p=p<0?0:p,u<0?0:u);var T,k="fixed"==v.settings.position||"fixedx"==v.settings.position,C="fixed"==v.settings.position||"fixedy"==v.settings.position,O=a,P=r,L=v.is.insideLayerGroup?(C=k=!1,$=I=0,t=O=b.responsive.width,P=b.responsive.height):(t=T,L);v.is.pinned&&(J.slider.get.offset(),s.width,s.height,"responsive"!==s.type&&"fixedsize"!==s.type&&("fullsize"!==s.type||"fitheight"!==J.o.fullSizeMode&&!1!==J.o.fitScreenWidth)||(k?(t=O=te.viewport.width,p=0):(O=J.slider.width,p=J.slider.offset.left,t=s.width),C?(L=P=te.viewport.height,u=0):(P=J.slider.height,u=(te.viewport.height-J.slider.height)/2||0,L=s.height)));var I=k?0:p,$=C?0:u,B={width:k&&0!==S.percentWidth?O/100*S.percentWidth:S.width*x,height:C&&0!==S.percentHeight?P/100*S.percentHeight:S.height*x,paddingLeft:this.convertSingleValue(S.paddingLeft,x),paddingTop:this.convertSingleValue(S.paddingTop,x),paddingRight:this.convertSingleValue(S.paddingRight,x),paddingBottom:this.convertSingleValue(S.paddingBottom,x),borderLeftWidth:this.convertSingleValue(S.borderLeftWidth,x),borderTopWidth:this.convertSingleValue(S.borderTopWidth,x),borderRightWidth:this.convertSingleValue(S.borderRightWidth,x),borderBottomWidth:this.convertSingleValue(S.borderBottomWidth,x),borderRadius:this.borderRadius(S.borderRadius,x)},M={marginLeft:this.convertSingleValue(S.marginLeft,x),marginTop:this.convertSingleValue(S.marginTop,x),marginRight:this.convertSingleValue(S.marginRight,x),marginBottom:this.convertSingleValue(S.marginBottom,x)},W={},_={borderRadius:B.borderRadius};if((k||C)&&(S.percentHeight||S.percentWidth)&&v.is.imageLayer&&(S.percentHeight&&!S.percentWidth&&(B.width=S.width*(B.height/S.height)),S.percentWidth&&!S.percentHeight&&(B.height=S.height*(B.width/S.width))),("number"==typeof S.width&&S.width<0||"auto"==S.width||""==S.sWidth)&&J.debugMode&&J.debug.add("warn","resize.width",[m+1,S.width]),("number"==typeof S.height&&S.height<0||"auto"==S.height||""==S.sHeight)&&J.debugMode&&J.debug.add("warn","resize.height",[m+1,S.height]),v.is.textLayer&&(B.fontSize=S.fontSize*x,te.isMobile&&B.fontSize<v.styleSettings.minmobilefontsize?B.fontSize=v.styleSettings.minmobilefontsize:B.fontSize<v.styleSettings.minfontsize&&(B.fontSize=v.styleSettings.minfontsize),T=B.fontSize/S.fontSize,B.fontSize+="px",-1!==S.lineHeight.indexOf("px")&&(B.lineHeight=parseFloat(S.lineHeight)*T+"px"),-1!==S.letterSpacing.indexOf("px")&&(B.letterSpacing=parseFloat(S.letterSpacing)*T+"px"),-1!==S.textStrokeWidth.indexOf("px")&&(B.textStrokeWidth=parseFloat(S.textStrokeWidth)*T+"px"),""==S.sWidth&&(B.width="auto",v.elements.$innerWrapper.addClass("ls-force-width-auto"),"nowrap"!==y.css("white-space")&&(v.elements.$_innerWrappers.addClass("ls-force-left-0"),v.elements.$_outerWrappers.addClass("ls-force-full-size"))),""==S.sHeight&&(B.height="auto",v.elements.$innerWrapper.addClass("ls-force-height-auto")),""!=S.sWidth&&""!=S.sHeight||y.css(B)),v.is.slideBackground||v.is.backgroundVideo)if(v.is.slideBackground){var A=J.slides[v.is.onSlide].data.backgroundSize;switch((void 0!==A&&"inherit"!==A?A:J.o.slideBGSize).replace("100% 100%","stretch")){case"auto":break;case"cover":S.ratio<o?(B.width=a,B.height=B.width/S.ratio):(B.height=r,B.width=B.height*S.ratio);break;case"contain":S.ratio<o?(B.height=r,B.width=B.height*S.ratio):(B.width=a,B.height=B.width/S.ratio);break;case"stretch":B.width=a,B.height=r}B.width=Math.round(B.width),B.height=Math.round(B.height);var F,z=J.slides[v.is.onSlide].data.backgroundPosition;switch((F=(void 0!==z?z:J.o.slideBGPosition).split(" "))[0]){case"left":B.x=0;break;case"center":B.x=(J.slider.width-B.width)/2;break;case"right":B.x=J.slider.width-B.width;break;default:-1!==F[0].indexOf("%")?B.x=(J.slider.width-B.width)/100*parseInt(F[0]):B.x=parseInt(F[0])}if(void 0!==F[1])switch(F[1]){case"top":B.y=0;break;case"center":B.y=(J.slider.height-B.height)/2;break;case"bottom":B.y=J.slider.height-B.height;break;default:-1!==F[1].indexOf("%")?B.y=(J.slider.height-B.height)/100*parseInt(F[1]):B.y=parseInt(F[1])}B.transform="translateX("+B.x+"px) translateY("+B.y+"px)",B["-ms-transform"]="translateX("+B.x+"px) translateY("+B.y+"px)",B["-webkit-transform"]="translateX("+B.x+"px) translateY("+B.y+"px)"}else v.is.backgroundVideo&&(S.ratio<o?(B.width=a,B.height=B.width/S.ratio):(B.height=r,B.width=B.height*S.ratio),B.x=(J.slider.width-B.width)/2,B.y=(J.slider.height-B.height)/2,B.width=Math.round(B.width),B.height=Math.round(B.height),B.transform="translateX("+B.x+"px) translateY("+B.y+"px)",B["-ms-transform"]="translateX("+B.x+"px) translateY("+B.y+"px)",B["-webkit-transform"]="translateX("+B.x+"px) translateY("+B.y+"px)");else!v.mediaProperties||"youtube"!==v.mediaProperties.type&&"vimeo"!==v.mediaProperties.type||(A=B.width/B.height,z={width:B.width,height:B.height},S.ratio<A?(z.height=B.width/S.ratio,z.marginTop=(B.height-z.height)/2):(z.width=B.height*S.ratio,z.marginLeft=(B.width-z.width)/2),v.mediaProperties.$media.css(z)),v.elements.$_innerWrappers.addClass("ls-force-display-block ls-force-no-transform"),y.addClass("ls-force-no-transform"),v.is.insideLayerGroup&&((b=(w=y.data("$layerGroup")).data(J.defaults.init.dataKey)).elements.$_innerWrappers.addClass("ls-force-display-block ls-force-no-transform"),w.addClass("ls-force-no-transform")),"auto"==B.width?B.outerWidth=Math.ceil(y.outerWidth()):B.outerWidth=B.width+J.layers.toNum(B.paddingLeft,B.fontSize)+J.layers.toNum(B.paddingRight,B.fontSize)+J.layers.toNum(B.borderLeftWidth,B.fontSize)+J.layers.toNum(B.borderRightWidth,B.fontSize),"auto"==B.height?B.outerHeight=Math.ceil(y.outerHeight()):B.outerHeight=B.height+J.layers.toNum(B.paddingTop,B.fontSize)+J.layers.toNum(B.paddingBottom,B.fontSize)+J.layers.toNum(B.borderTopWidth,B.fontSize)+J.layers.toNum(B.borderBottomWidth,B.fontSize),v.elements.$_allWrappers.removeClass("ls-force-display-block ls-force-no-transform ls-force-width-auto ls-force-height-auto ls-force-left-0 ls-force-full-size"),y.removeClass("ls-force-no-transform"),v.is.insideLayerGroup&&(b.elements.$_allWrappers.removeClass("ls-force-display-block ls-force-no-transform ls-force-width-auto ls-force-height-auto ls-force-left-0 ls-force-full-size"),w.removeClass("ls-force-no-transform")),M.width=W.width=B.outerWidth,M.height=W.height=B.outerHeight,-1!=S.left.indexOf("%")?"100%"===S.left?B.left=0===I?O/100*parseFloat(S.left)-B.outerWidth:I+t*x/100*parseFloat(S.left)-B.outerWidth:"0%"===S.left?B.left=0===I?0:I:B.left=0===I?O/100*parseFloat(S.left)-B.outerWidth/2:I+t*x/100*parseFloat(S.left)-B.outerWidth/2:B.left=I+parseFloat(S.left)*x,M.left=B.left,-1!=S.top.indexOf("%")?"100%"===S.top?B.top=0===$?P/100*parseFloat(S.top)-B.outerHeight:$+L*x/100*parseFloat(S.top)-B.outerHeight:"0%"===S.top?B.top=0===$?0:$+0:B.top=0===$?P/100*parseFloat(S.top)-B.outerHeight/2:$+L*x/100*parseFloat(S.top)-B.outerHeight/2:B.top=$+parseFloat(S.top)*x,M.top=B.top;v.textIn.$nodesForBackgroundClip&&v.textIn.$nodesForBackgroundClip.length&&((P=v.elements.$outerStyleWrapper.add(v.elements.$outerStyleWrapper.find(".ls-wrapper"))).addClass("ls-force-visibility-hidden ls-force-display-block"),v.elements.$_innerWrappers.addClass("ls-force-no-transform"),L=!1,"auto"===g.style.width&&(g.style.width=Math.ceil(v.original.width*(h*x))+"px",L=!0),v.textIn.$nodesForBackgroundClip.each(function(e,t){var i=ie(t),s=i.children(".ls-textnode-bgclip-wrap"),t=s.children(".ls-textnode"),i=(i.children(".ls-textnode-dummy"),i.position());s.css({width:Math.ceil(M.width),height:Math.ceil(M.height),transform:"translate("+-i.left/h+"px,"+-i.top/h+"px)"}),t.css({marginLeft:i.left/h,marginTop:i.top/h})}),L=L&&!(g.style.width="auto"),v.elements.$_innerWrappers.removeClass("ls-force-no-transform"),P.removeClass("ls-force-visibility-hidden ls-force-display-block")),B.fontSize=parseFloat(B.fontSize)/te.automaticFontSizeRatio+"px",v.responsive=B,n[m]=B,v.is.smartBG&&(B.left=Math.round(B.left),B.top=Math.round(B.top),B.width=Math.ceil(B.width),B.height=Math.ceil(B.height),n[m]["--sw"]=(k?J.slider.width:s.width*x)+"px",n[m]["--sh"]=(C?J.slider.height:s.height*x)+"px",n[m]["--x"]=-B.left-parseFloat(B.borderLeftWidth)-parseFloat(B.paddingLeft)-parseFloat(M.marginLeft)+(k?0:p)+"px",n[m]["--y"]=-B.top-parseFloat(B.borderTopWidth)-parseFloat(B.paddingTop)-parseFloat(M.marginTop)+(C?0:u)+"px"),v.is.slideBackground||v.is.backgroundVideo||(v.settings.wrapperData.responsive=M,l[m]=M,d[m]=W,c[m]=_)}for(var D=0,V=n.length;D<V;D++){var R=ie(i[D]),E=R.data(J.defaults.init.dataKey);R.css(n[D]),E.is.slideBackground||E.is.backgroundVideo?(E.is.slideBackground||E.is.backgroundVideo)&&(E.elements.$bgOuterWrapper.css({width:J.slider.width,height:J.slider.height}),E.elements.$outerWrapper.css({width:J.slider.width,height:J.slider.height})):(R.find(".split-item").css(c[D]),this.wrappers(R,E,l[D],d[D]))}void 0!==e&&e(),J.debugMode&&J.debug.groupEnd("resize")}},wrappers:function(e,t,i,s){i&&t.elements.$outerStyleWrapper.css(i),s&&t.loop.enabled&&t.elements.$loopWrapper.css(s),ee.TweenMax.set(t.elements.$wrapper[0],{autoCSS:!1,css:{transformPerspective:t.transformPerspective.layer*J.resize.ratio}}),t.loop.enabled&&ee.TweenMax.set(t.elements.$loopWrapper[0],{autoCSS:!1,css:{transformPerspective:t.transformPerspective.loop*J.resize.ratio}}),t.hover.enabled&&ee.TweenMax.set(e[0],{autoCSS:!1,css:{transformPerspective:t.transformPerspective.hover*J.resize.ratio}}),t.textIn.nodes&&ee.TweenMax.set(t.textIn.nodes,{autoCSS:!1,css:{transformPerspective:t.transformPerspective.text*J.resize.ratio}}),t.textOut.nodes&&ee.TweenMax.set(t.textOut.nodes,{autoCSS:!1,css:{transformPerspective:t.transformPerspective.text*J.resize.ratio}}),t.parallax.enabled&&ee.TweenMax.set(t.elements.$parallaxWrapper[0],{autoCSS:!1,css:{transformPerspective:t.transformPerspective.parallax*J.resize.ratio}}),t.scroll.enabled&&ee.TweenMax.set(t.elements.$scrollTransformWrapper[0],{autoCSS:!1,css:{transformPerspective:t.transformPerspective.scroll*J.resize.ratio}})},performTransformOperations:function(e,t){var i,s,a,r;for(r in t)if("string"==typeof t[r]&&-1!==t[r].indexOf("="))if(s=(i=t[r].split("="))[0].trim()||!1,a=parseFloat(i[1].trim())||!1,s&&a&&ie.isNumeric(a))switch(s){case"+":t[r]=e[r]+a;break;case"-":t[r]=e[r]-a;break;case"*":t[r]=e[r]*a;break;case"/":t[r]=e[r]/a}else t[r]=e[r]},mirrorTransitionProperties:function(o){function n(e){var t=e;switch(e){case"left":t="right";break;case"right":t="left";break;case"top":t="bottom";break;case"bottom":t="top"}return-1!==e.indexOf("lw")||-1!==e.indexOf("lh")||-1!==e.indexOf("sw")||-1!==e.indexOf("sh")?t="-"===e.charAt(0)?e.substring(1):"-"+e:-1!==e.indexOf("%")?t=-1*parseFloat(e.split("%")[0])+"%":ie.isNumeric(e)&&0!==e&&"0"!==e&&(t=-1*e),t}function e(e){var t,i,s,a;for(a in e)if(s=a.toLowerCase(),-1!==o.mirrorProperties.indexOf(s)){if("object"==typeof(t=e[a]))for(var r in i=[],t)i.push(n(t[r]));else i=n(t);e[a]=i}}e(o.transitionProperties),o.transitionPropertiesShouldBeConverted&&e(o.transitionPropertiesShouldBeConverted)},transformProperties:function(e,t,i,s,a,r){if("object"==typeof s.x){for(var o=[],n=0;n<s.x.length;n++)"string"==typeof s.x[n]?o[n]=this.getXY(e,t,s.x[n],"Width"):o[n]=s.x[n]*t.settings.calculatedratio;i.cycle.x=o}else"string"==typeof s.x?i.x=this.getXY(e,t,s.x,"Width"):void 0!==s.x&&(i.x=s.x*t.settings.calculatedratio);if("object"==typeof s.y){for(var l=[],d=0;d<s.y.length;d++)"string"==typeof s.y[d]?l[d]=this.getXY(e,t,s.y[d],"Height"):l[d]=s.y[d]*t.settings.calculatedratio;i.cycle.y=l}else"string"==typeof s.y?i.y=this.getXY(e,t,s.y,"Height"):void 0!==s.y&&(i.y=s.y*t.settings.calculatedratio);if(a&&(i=a),"object"==typeof s.transformOrigin||r){var c=[];if(r){a=e.data(J.defaults.init.dataKey).elements.$outerStyleWrapper.add(e.data(J.defaults.init.dataKey).elements.$outerStyleWrapper.find(".ls-wrapper"));a.addClass("ls-force-visibility-hidden ls-force-display-block ls-fix-textnodes"),c=J.functions.convert.nodesTransformOrigin(s.transformOrigin,r,t,e.data(J.defaults.init.dataKey).elements.$outerStyleWrapper),a.removeClass("ls-force-visibility-hidden ls-force-display-block ls-fix-textnodes")}else for(var p=0;p<s.transformOrigin.length;p++)c[p]=J.functions.convert.transformOrigin(s.transformOrigin[p],e,t,e.data(J.defaults.init.dataKey).elements.$outerStyleWrapper);i.cycle.transformOrigin=c}else"string"==typeof s.transformOrigin&&(i.transformOrigin=J.functions.convert.transformOrigin(s.transformOrigin,e,t,e.data(J.defaults.init.dataKey).elements.$outerStyleWrapper))},styleProperties:function(e,t,i){void 0!==i.width&&(ie.isNumeric(i.width)?t.width=parseInt(i.width)*e.settings.calculatedratio:"string"==typeof i.width&&-1!==i.width.indexOf("%")&&(t.width=J.slider.width/100*parseInt(i.width))),void 0!==i.height&&(ie.isNumeric(i.height)?t.height=parseInt(i.height)*e.settings.calculatedratio:"string"==typeof i.height&&-1!==i.height.indexOf("%")&&(t.height=J.slider.height/100*parseInt(i.height))),i.borderRadius&&(t.borderRadius=J.resize.borderRadius(i.borderRadius,e.settings.calculatedratio))},clip:function(e,t,i,s){i=ie.trim(i.replace("rect(","").replace(")",""));for(var a,e=e.data(J.defaults.init.dataKey).responsive,r=Math.ceil(e.outerWidth),o=Math.ceil(e.outerHeight),n=-1===i.indexOf(",")?i.split(" "):i.split(","),l="",d=0;d<n.length;d++)if(-1!==n[d].indexOf("%"))switch(d){case 0:l+=parseInt(o/100*parseInt(n[d])*100)/100+"px ";break;case 1:l+=s?parseInt(100*(r-r/100*parseInt(n[d])))/100+"px ":parseInt(r/100*parseInt(n[d])*100)/100+"px ";break;case 2:l+=s?parseInt(100*(o-o/100*parseInt(n[d])))/100+"px ":parseInt(o/100*parseInt(n[d])*100)/100+"px ";break;case 3:l+=parseInt(r/100*parseInt(n[d])*100)/100+"px"}else switch(a=parseInt(n[d])*t.settings.calculatedratio,d){case 0:l+=a+"px ";break;case 1:l+=s?r-a+"px ":a+"px ";break;case 2:l+=s?o-a+"px ":a+"px ";break;case 3:l+=a+"px"}return"rect("+l+")"},getXY:function(e,t,i,s){var a=0,r=t.original,o=t.responsive,n=t.settings.wrapperData.responsive;if(r&&o&&n)switch(i){case"left":a=-1==r.left.indexOf("%")||"100%"===r.left?-o.left-o.outerWidth-parseInt(n.marginLeft):-parseInt(r.left)/100*J.slider.width-o.outerWidth/2-parseInt(n.marginLeft);break;case"right":a=-1==r.left.indexOf("%")||"100%"===r.left?J.slider.width-o.left-parseInt(n.marginLeft):(1-parseInt(r.left)/100)*J.slider.width+o.outerWidth/2-parseInt(n.marginLeft);break;case"top":a=-1==r.top.indexOf("%")||"100%"===r.top?-o.top-o.outerHeight-parseInt(n.marginTop):-parseInt(r.top)/100*J.slider.height-o.outerHeight/2-parseInt(n.marginTop);break;case"bottom":a=-1==r.top.indexOf("%")||"100%"===r.top?J.slider.height-o.top-parseInt(n.marginTop):(1-parseInt(r.top)/100)*J.slider.height+o.outerHeight/2-parseInt(n.marginTop);break;case"width":a=o.outerWidth;break;case"-width":a=-o.outerWidth;break;case"height":a=o.outerHeight;break;case"-height":a=-o.outerHeight;break;default:a=-1!==i.indexOf("%")?o["outer"+s]/100*parseInt(i):-1!==i.indexOf("sw")?parseInt(i.split("sw")[0])/100*J.slider.width:-1!==i.indexOf("sh")?parseInt(i.split("sh")[0])/100*J.slider.height:-1!==i.indexOf("lw")?o.outerWidth/100*parseInt(i.split("lw")[0]):-1!==i.indexOf("lh")?o.outerHeight/100*parseInt(i.split("lh")[0]):parseInt(i)*t.settings.calculatedratio}return a},navigation:function(){"always"==J.o.thumbnailNavigation&&J.gui.navigation.bottom.thumbnails.resize()},shadow:function(){J.gui.shadow.show&&J.gui.shadow.show(),J.gui.shadow.$element&&J.gui.shadow.resize()},yourLogo:function(){J.yourLogo.$element&&J.yourLogo.resize()},timers:function(){if(0<J.gui.timers.slidebar.$containerElement.length)for(var e=0,t=J.gui.timers.slidebar.$containerElement.length;e<t;e++)J.gui.timers.slidebar.containerElementWidth[e]=J.gui.timers.slidebar.$containerElement[e].width(),J.gui.timers.slidebar.elementWidth[e]=J.gui.timers.slidebar.$element[e].width()}},J.transitions={firstSlide:!0,timelines:{all:["_slideTransition","_slideTimeline","_slideTimelineAlternate","_forceLayersOut","_forceLayersOutMirror","_forceLayersOutPrevious","_forceLayersOutMirrorPrevious"],slide:["_slideTransition"],layers:["_slideTimeline","_slideTimelineAlternate"],allforce:["_forceLayersOut","_forceLayersOutMirror","_forceLayersOutPrevious","_forceLayersOutMirrorPrevious"],prevforce:["_forceLayersOutPrevious","_forceLayersOutMirrorPrevious"],currentforce:["_forceLayersOut","_forceLayersOutMirror"],mirrorforce:["_forceLayersOutMirror","_forceLayersOutMirrorPrevious"],set:function(e,t){for(var i in this[e])J.transitions[this[e][i]]&&t(J.transitions[this[e][i]],this[e][i])}},start:function(){return!!document.body.contains(I)&&(J.slider.isPopup&&J.slider.state.popupIsWaitingForDelay?!(J.slider.state.waitingForPopupTimer=!0):(J.device.scroll.directionAtSlideTransitionStart=J.device.scroll.direction,"always"==J.o.thumbnailNavigation&&(J.gui.navigation.bottom.thumbnails.change(),"ontouchstart"in window||J.gui.navigation.bottom.thumbnails.scroll()),this.layers.out.forced(),void this.slide.init()))},slide:{$wrapper:ie(),init:function(){var e,t,i;J.functions.setStates(J.slider,{animatingSlides:!0}),J.transitions.layers.parallax.reset(),J.slider.$layersWrapper.children('.ls-parallax[data-ls-parallax="active"]').each(function(){ie(this).find(".ls-layer").data(J.defaults.init.dataKey).settings.slideOut===J.slides.current.index&&ie(this).attr("data-ls-parallax","disbaled")}),J.transitions.curSlide=J.slides.current,J.transitions.nextSlide=J.slides.next,J.transitions._slideTransition=new ee.TimelineMax({paused:!0,onComplete:function(){J.transitions.slide.onComplete()}}),(J.transitions.nextSlide.data&&J.transitions.nextSlide.data.transitionorigami||J.slider.isScrollScene)&&(J.o.animateFirstSlide=!1),J.transitions.firstSlide&&J.o.animateFirstSlide&&(J.transitions.curSlide=ie.extend(!0,{},J.transitions.nextSlide),delete J.transitions.curSlide.data.$background,J.transitions.curSlide.data.backgroundColor="transparent"),J.transitions.firstSlide&&!J.o.animateFirstSlide?(void 0!==J.transitions.nextSlide.data.$background&&(e=(i=J.transitions.nextSlide.data.$background.data(J.defaults.init.dataKey)).kenBurns.zoom?i.kenBurns.from.scale:1,t=i.kenBurns.zoom?i.kenBurns.from.rotation:0,i=J.transitions.nextSlide.filter.from||"none",J.transitions._slideTransition.set(J.transitions.nextSlide.data.$background[0],{"-webkit-filter":i,filter:i},0),J.transitions._slideTransition.fromTo(J.transitions.nextSlide.data.$background.closest(".ls-bg-wrap")[0],J.o.sliderFadeInDuration,{autoCSS:!1,css:{scale:e,rotation:t,opacity:0,display:"block"}},{autoCSS:!1,css:{opacity:1}},0)),this.start(!0)):"undefined"==typeof layerSliderTransitions&&"undefined"==typeof layerSliderCustomTransitions?(this.start(!0),J.debugMode&&J.debug.add("warn","slideTransition.noSlideTransition",J.transitions.nextSlide.index)):void 0===J.transitions.curSlide.data.$background&&void 0===J.transitions.nextSlide.data.$background&&"transparent"==J.transitions.curSlide.data.backgroundColor&&"transparent"==J.transitions.nextSlide.data.backgroundColor?this.start(!0):("x"===J.o.clipSlideTransition?te.$overflowWrapper.addClass("ls-overflowx-hidden"):"y"===J.o.clipSlideTransition?te.$overflowWrapper.addClass("ls-overflowy-hidden"):!0===J.o.clipSlideTransition&&te.$overflowWrapper.addClass("ls-overflow-hidden"),void 0!==J.transitions.curSlide.data.$background&&(e=J.transitions.curSlide.data.$background.closest(".ls-bg-wrap")[0]._gsTransform,(t=J.transitions.curSlide.data.$background.data(J.defaults.init.dataKey)).responsive.filter=J.transitions.curSlide.data.$background[0].style.filter,t.responsive.kbRotation=void 0!==e?" rotate("+e.rotation+"deg)":" rotate(0deg)",t.responsive.kbScale=void 0!==e?" scale("+e.scaleX+")":" scale(1)"),J.transitions.slide.$wrapper=ie("<div>").addClass("ls-slide-transition-wrapper").css({width:J.slider.width,height:J.slider.height}),this.select.slideTransitionType())},select:{slideTransitionType:function(){J.transitions.slide.normal.select.transitionType()}},start:function(e){var t,i=!(!J.slides.current.index||!J.slides.current.data.$backgroundVideo.length),s=!(!J.slides.next.index||!J.slides.next.data.$backgroundVideo.length);!J.slideshow.firstStart&&J.api.hasEvent("slideChangeDidStart")&&J.api.triggerEvent("slideChangeDidStart",J.api.eventData()),e||(void 0!==J.transitions.nextSlide.data.transitionDuration?a=J.transitions.nextSlide.data.transitionDuration:void 0!==J.o.slideTransitionDuration&&ie.isNumeric(J.o.slideTransitionDuration)&&-1<J.o.slideTransitionDuration&&(a=J.o.slideTransitionDuration/1e3),ie.isNumeric(a)&&(0===a&&(a+=1e-5),J.transitions._slideTransition.duration(a)),J.transitions.firstSlide&&J.o.animateFirstSlide&&J.o.firstSlideDuration&&J.transitions._slideTransition.duration(J.o.firstSlideDuration/1e3),J.debugMode&&J.debug.options.transitionDuration&&J.transitions._slideTransition.duration(J.debug.options.transitionDuration),.25<J.transitions.layers.timeline.timeScaleModifier&&(r=(r=J.transitions._slideTransition.duration()/(.75+J.transitions.layers.timeline.timeScaleModifier))<.5?.5:r,J.transitions._slideTransition.duration(r)));var e=J.transitions._slideTransition.duration()/J.transitions._slideTransition.timeScale(),a=e,r=J.transitions.nextSlide.data.timeShift||(void 0!==J.o.slideTimeShift&&ie.isNumeric(J.o.slideTimeShift)&&J.o.slideTimeShift<0?J.o.slideTimeShift/1e3:0);0<r?r=0:Math.abs(r)>e&&(r=-e),J.transitions.firstSlide&&J.o.animateFirstSlide&&!1!==J.o.firstSlideTimeShift&&J.o.firstSlideTimeShift<=0&&(r=J.o.firstSlideTimeShift/1e3),J.transitions.nextSlide.data.calculatedTimeShift=r,r=J.transitions.firstSlide&&!J.o.animateFirstSlide?J.o.sliderFadeInDuration+.01:(a+r)*J.transitions._slideTransition.timeScale(),(i||s)&&J.transitions.media.changeBackgroundVideo(J.transitions.firstSlide,i&&s),J.transitions._slideTransition.call(function(){!J.slideshow.firstStart&&J.api.hasEvent("slideChangeWillComplete")&&J.api.triggerEvent("slideChangeWillComplete",J.api.eventData()),J.slideshow.should.change||J.transitions.layers.timeline.prepare(),J.media.functions.stop(!0),J.slides.set.slideIndexes(),J.o.hashChange&&(document.location.hash=J.slides[J.slides.current.index].data.deeplink||"_no-deeplink-found_"),J.slideshow.start(),!J.transitions.firstSlide&&J.slides.prev.index&&J.slides.prev.data.$backgroundVideo.length&&!J.slides.prev.data.$backgroundVideo.data(J.defaults.init.dataKey).mediaProperties.willBePaused&&(J.slides.prev.data.$backgroundVideo.trigger("stopBackgroundVideo"),J.slides.prev.data.$backgroundVideo.data(J.defaults.init.dataKey).elements.$bgWrapper.css({display:"none"})),J.slideshow.should.change||J.slides.next.data.$backgroundVideo.length&&J.slides.next.data.$backgroundVideo.data(J.defaults.init.dataKey).mediaProperties&&!J.slides.next.data.$backgroundVideo.data(J.defaults.init.dataKey).mediaProperties.isPreloaded&&(J.slides.next.data.$backgroundVideo.trigger("preloadBackgroundVideo"),J.slides.next.data.$backgroundVideo.data(J.defaults.init.dataKey).mediaProperties.isPreloaded=!0),J.transitions.firstSlide=!1},[],this,r),J.transitions._slideTransition.play(),J.slideshow.forceFastChange&&J.transitions._slideTransition.progress(1),void 0!==J.transitions.curSlide.data&&void 0!==J.transitions.curSlide.data.$background&&(t=J.transitions.curSlide.data.$background.data(J.defaults.init.dataKey),J.timeouts.applyBG=setTimeout(function(){delete J.timeouts.applyBG,J.transitions.curSlide.data.$background.closest(".ls-bg-wrap").hide(),t.kenBurns.zoom&&ee.TweenMax.set(J.transitions.curSlide.data.$background[0],{autoCSS:!1,css:t.kenBurns.from})},5))},onComplete:function(){var e;void 0!==J.transitions.nextSlide.data.$background&&J.transitions.nextSlide.data.$background.closest(".ls-bg-wrap").show(),"transparent"!==J.transitions.nextSlide.data.backgroundColor?J.slider.$slideBGColorWrapper.css("background-color",J.transitions.nextSlide.data.backgroundColor):J.slider.$slideBGColorWrapper.css("background-color","transparent"),J.o.leaveOverflow||te.$overflowWrapper.removeClass("ls-overflowx-hidden ls-overflowy-hidden ls-overflow-hidden"),this.$wrapper&&(this.$wrapper.html("").remove(),this.$wrapper=!1),J.gui.navigation.bottom.bullets.set.active(),0<J.o.cycles&&(J.slideshow.hasOwnProperty("cycleSlideIndex")?J.slideshow.cycles.check(J.transitions.nextSlide.index)&&(J.navigation.stop(),J.functions.setStates(J.slideshow,{pausedByLastCycle:!0}),J.o.forceCycles&&(J.slideshow.curCycle=1)):J.slideshow.cycles.set()),J.functions.setStates(J.slider,{animatingSlides:!1,changingSlides:!1}),!J.slideshow.firstStart&&J.api.hasEvent("slideChangeDidComplete")&&J.api.triggerEvent("slideChangeDidComplete",J.api.eventData()),J.slideshow.firstStart=!1,J.slideshow.forceFastChange=!1,J.slideshow.forceFastChangeCallback&&(J.slideshow.forceFastChangeCallback(),J.slideshow.forceFastChangeCallback=!1),J.slideshow.should.change?J.navigation.forceDirection?(void 0!==J.transitions.curSlide.data&&void 0!==J.transitions.curSlide.data.$background&&(e=J.transitions.curSlide.data.$background.data(J.defaults.init.dataKey),J.transitions.curSlide.data.$background.closest(".ls-bg-wrap").hide(),e.kenBurns.zoom&&ee.TweenMax.set(J.transitions.curSlide.data.$background[0],{autoCSS:!1,css:e.kenBurns.from})),J.slideshow.changeTo(J.slideshow.get.slideInSequence(J.navigation.forceDirection),!0),J.navigation.forceDirection=!1):J.slideshow.forceSlideChangeTo?J.slideshow.changeTo(J.slideshow.forceSlideChangeTo,!0,!0):J.preload.imagesOfSlide(J.slides.next.index):J.preload.imagesOfSlide(J.slides.next.index)},normal:{select:{transitionType:function(){var e,t,i;J.o.slideTransition?J.transitions.slide.normal.setTransition(J.o.slideTransition.type,J.o.slideTransition.obj):(i=!!J.transitions.nextSlide.data.transition2d&&J.transitions.nextSlide.data.transition2d.toString().split(","),J.device.touchPrev&&J.o.slideOnSwipe?(J.device.touchPrev=!1,this.transition("2d","1")):J.device.touchNext&&J.o.slideOnSwipe?(J.device.touchNext=!1,this.transition("2d","1")):J.slides.next.data.$background||i&&(!i||-1!=i.indexOf("1")||-1!=i.indexOf("2")||-1!=i.indexOf("3")||-1!=i.indexOf("4"))?J.browser.supports3D()&&(J.transitions.nextSlide.data.transition3d||J.transitions.nextSlide.data.customtransition3d)?J.transitions.nextSlide.data.transition3d&&J.transitions.nextSlide.data.customtransition3d?(e=Math.floor(2*Math.random()),t=[["3d",J.transitions.nextSlide.data.transition3d],["custom3d",J.transitions.nextSlide.data.customtransition3d]],this.transition(t[e][0],t[e][1])):J.transitions.nextSlide.data.transition3d?this.transition("3d",J.transitions.nextSlide.data.transition3d):this.transition("custom3d",J.transitions.nextSlide.data.customtransition3d):J.transitions.nextSlide.data.transition2d&&J.transitions.nextSlide.data.customtransition2d?(e=Math.floor(2*Math.random()),t=[["2d",J.transitions.nextSlide.data.transition2d],["custom2d",J.transitions.nextSlide.data.customtransition2d]],this.transition(t[e][0],t[e][1])):J.transitions.nextSlide.data.transition2d?this.transition("2d",J.transitions.nextSlide.data.transition2d):J.transitions.nextSlide.data.customtransition2d?this.transition("custom2d",J.transitions.nextSlide.data.customtransition2d):this.transition("2d","1"):this.transition("2d","5"))},transition:function(e,t){J.debugMode&&J.debug.add("group","slideTransition.info"),t+="";var i,s,a=-1==e.indexOf("custom")?J.t:J.ct,r="3d";-1!=e.indexOf("2d")&&(r="2d"),s=-1!=t.indexOf("last")?a["t"+r].length-1:-1!=t.indexOf("all")?Math.floor(Math.random()*J.functions.countProp(a["t"+r])):(t=(i=t.split(",")).length,parseInt(i[Math.floor(Math.random()*t)])-1),void 0===a["t"+r][s]&&(J.debugMode&&J.debug.add("warn","slideTransition.customTransition",[r.toUpperCase()+(-1===e.indexOf("custom")?"":" (CUSTOM)"),s+1]),a=J.t,e=r="2d",s=0),J.debugMode&&J.debug.add("log","slideTransition.info",[r.toUpperCase()+(-1===e.indexOf("custom")?"":" (CUSTOM)"),s+1,a["t"+r][s].name]),J.transitions.slide.normal.setTransition(r,a["t"+r][s])}},setTransition:function(e,t){t.name||(t=_lsConvTrProp(t));var i,s,a,r,o,n=ie.extend(!0,{cols:1,rows:1},t),l=typeof n.cols,d=typeof n.rows,c=[],p=J.navigation.direction,u=0,h=0,m=!!J.transitions.curSlide.data.$background&&J.functions.getURL(J.transitions.curSlide.data.$background),f=!!J.transitions.nextSlide.data.$background&&J.functions.getURL(J.transitions.nextSlide.data.$background),g=J.o.playByScroll&&"up"===J.device.scroll.direction?"to":"from";if(n.rc){switch(typeof n.rc){case"number":J.slider.width>J.slider.height?(d=n.rc,l=Math.floor(J.slider.width/(J.slider.height/n.rc))):(l=n.rc,d=Math.floor(J.slider.height/(J.slider.width/n.rc)));break;case"string":a=parseInt(n.rc),l=Math.floor(J.slider.width/a),d=Math.floor(J.slider.height/a)}n.cols=l,n.rows=d}else{switch(l){case"number":l=n.cols;break;case"string":l=Math.floor(Math.random()*(parseInt(n.cols.split(",")[1])-parseInt(n.cols.split(",")[0])+1))+parseInt(n.cols.split(",")[0]);break;default:l=Math.floor(Math.random()*(n.cols[1]-n.cols[0]+1))+n.cols[0]}switch(d){case"number":d=n.rows;break;case"string":d=Math.floor(Math.random()*(parseInt(n.rows.split(",")[1])-parseInt(n.rows.split(",")[0])+1))+parseInt(n.rows.split(",")[0]);break;default:d=Math.floor(Math.random()*(n.rows[1]-n.rows[0]+1))+n.rows[0]}te.isMobile&&J.o.optimizeForMobile&&(15<=l?l=7:5<=l?l=4:4<=l?l=3:2<l&&(l=2),15<=d?d=7:5<=d?d=4:4<=d?d=3:2<d&&(d=2),2<d&&2<l&&(d=2,4<l&&(l=4)))}J.debugMode&&!J.o.slideTransition&&(J.debug.add("log","slideTransition.properties",[[l,d],l*d]),J.debug.groupEnd()),i=Math.floor(J.slider.width/l),s=Math.floor(J.slider.height/d),l=Math.floor(J.slider.width/i),d=Math.floor(J.slider.height/s),r=J.slider.width-i*l,o=J.slider.height-s*d,"prev"==p&&(t={random:"random",forward:"reverse",reverse:"forward",center:"center",edge:"edge",mirror:"mirror","radial-in":"radial-in","radial-out":"radial-out","col-forward":"col-reverse","col-reverse":"col-forward"},"2d"===e&&n.transition&&"scale"===n.transition.type&&(t.forward="forward",t.reverse="reverse"),n.tile&&n.tile.sequence&&(n.tile.sequence=t[n.tile.sequence]),ie.each(["animation","before","after"],function(e,t){n[t]&&n[t].transition&&((t=n[t].transition).rotateX&&44<Math.abs(t.rotateX)&&(t.rotateX*=-1),t.rotateY&&44<Math.abs(t.rotateY)&&(t.rotateY*=-1),t.rotate&&(t.rotate*=-1))}));for(var y,v,w=0;w<l*d;w++)c.push(w);switch(n.tile.sequence){case"reverse":c.reverse();break;case"col-forward":c=J.functions.sortArray(d,l,"forward");break;case"col-reverse":c=J.functions.sortArray(d,l,"reverse");break;case"random":c=J.functions.shuffleArray(c);break;case"center":c=J.functions.sortArray(d,l,"center");break;case"edge":case"mirror":c=J.functions.sortArray(d,l,"edge");break;case"radial-out":c=J.functions.sortArray(d,l,"radial-out");break;case"radial-in":c=J.functions.sortArray(d,l,"radial-in")}("transparent"===J.transitions.nextSlide.data.backgroundColor||"3d"==e||void 0!==J.transitions.curSlide.data.$background&&void 0!==J.transitions.nextSlide.data.$background)&&J.slider.$slideBGColorWrapper.css("background-color","transparent"),"2d"==e&&(y=-1!=n.name.toLowerCase().indexOf("carousel"),v=-1!=n.name.toLowerCase().indexOf("crossfad"),this.$curTiles=ie("<div>").addClass("ls-curtiles").appendTo(J.transitions.slide.$wrapper),this.$nextTiles=ie("<div>").addClass("ls-nexttiles").appendTo(J.transitions.slide.$wrapper));for(var b=0;b<l*d;b++){var S,x=(b+1)%l==0?r:0,T=(d-1)*l-1<b?o:0,k=ie("<div>").addClass("ls-slide-transition-tile").css({width:i+x,height:s+T}).data("style",{width:i+x,height:s+T}).appendTo(J.transitions.slide.$wrapper),u=(c[b],b%l==0?u+1:u),h=b%l==0?1:h+1;if("3d"==e){k.addClass("ls-3d-container");var C,O,P=i+x,L=s+T,I=new ee.TimelineMax,$=Math.abs(Math.abs(h-l/2-.5)-l/2-.5)*Math.abs(Math.abs(u-d/2-.5)-d/2-.5);k.css({zIndex:$}),C=P/2,O=L/2,T=($="horizontal"==n.animation.direction?90<Math.abs(n.animation.transition.rotateY)&&"large"!=n.tile.depth?Math.floor(P/7)+x:P:90<Math.abs(n.animation.transition.rotateX)&&"large"!=n.tile.depth?Math.floor(L/7)+T:L)/2,this.createCuboids("ls-3d-box",k,0,0,0,0,-T,0,0,C+"px "+O+"px 0px"),this.createCuboids("ls-3d-front",k.find(".ls-3d-box"),P,L,0,0,T,0,0),"vertical"==n.animation.direction&&90<Math.abs(n.animation.transition.rotateX)?this.createCuboids("ls-3d-back",k.find(".ls-3d-box"),P,L,0,0,-T,180,0):this.createCuboids("ls-3d-back",k.find(".ls-3d-box"),P,L,0,0,-T,0,180),this.createCuboids("ls-3d-left",k.find(".ls-3d-box"),$,L,-T,0,0,0,-90),this.createCuboids("ls-3d-right",k.find(".ls-3d-box"),$,L,P-T,0,0,0,90),this.createCuboids("ls-3d-top",k.find(".ls-3d-box"),P,$,0,-T,0,90,0),this.createCuboids("ls-3d-bottom",k.find(".ls-3d-box"),P,$,0,L-T,0,-90,0),P=k.find(".ls-3d-front"),$="horizontal"==n.animation.direction?90<Math.abs(n.animation.transition.rotateY)?k.find(".ls-3d-back"):0<n.animation.transition.rotateY?k.find(".ls-3d-left"):k.find(".ls-3d-right"):90<Math.abs(n.animation.transition.rotateX)?k.find(".ls-3d-back"):0<n.animation.transition.rotateX?k.find(".ls-3d-bottom"):k.find(".ls-3d-top"),L=c[b]*n.tile.delay,T=J.transitions.slide.$wrapper.find(".ls-3d-container:eq( "+b+" ) .ls-3d-box"),n.before&&n.before.transition?(n.before.transition.delay=n.before.transition.delay?(n.before.transition.delay+L)/1e3:L/1e3,I.to(T[0],n.before.duration/1e3,J.functions.convert.transition(n.before.transition,n.before.easing))):n.animation.transition.delay=n.animation.transition.delay?(n.animation.transition.delay+L)/1e3:L/1e3,I.to(T[0],n.animation.duration/1e3,J.functions.convert.transition(n.animation.transition,n.animation.easing)),n.after&&(n.after.transition||(n.after.transition={}),I.to(T[0],n.after.duration/1e3,J.functions.convert.transition(n.after.transition,n.after.easing,"after"))),J.transitions._slideTransition.add(I,0)}else{var B,M,W,_,A,F,z,D,V,R="auto",E="auto",N="auto",Y="auto",X=1,H=1,K="50% 50%",U="50% 50%",j=0,G=100,q={},Q=n.transition.intensity||2,Z="random"==n.transition.direction?(z="scale"==n.transition.type?["top","bottom","middle","right","left","center"]:["top","bottom","right","left"])[Math.floor(Math.random()*z.length)]:n.transition.direction;switch(-1!=n.name.toLowerCase().indexOf("mirror")&&b%2==0&&(p="prev"==p?"next":"prev"),"prev"==p&&(Z={top:"bottom",bottom:"top",middle:"middle",left:"right",right:"left",center:"center",topleft:"bottomright",topright:"bottomleft",bottomleft:"topright",bottomright:"topleft",none:"none"}[Z]),Z){case"top":R=N=-k.data("style").height,E=Y=0;break;case"bottom":R=N=k.data("style").height,E=Y=0;break;case"left":R=N=0,E=Y=-k.data("style").width;break;case"right":R=N=0,E=Y=k.data("style").width;break;case"topleft":R=k.data("style").height,N=0,E=k.data("style").width,Y=0;break;case"topright":R=k.data("style").height,N=0,E=-k.data("style").width,Y=0;break;case"bottomleft":R=-k.data("style").height,N=0,E=k.data("style").width,Y=0;break;case"bottomright":R=-k.data("style").height,N=0,E=-k.data("style").width,Y=0;break;case"none":Y=E=N=R=0}switch(this.scale2D=void 0!==n.transition.scale?n.transition.scale:1,1==y&&1!=this.scale2D&&(R/=2,N/=2,E/=2,Y/=2),(n.transition.rotate||n.transition.rotateX||n.transition.rotateY||1!=this.scale2D)&&"slide"!=n.transition.type?k.css({overflow:"visible"}):k.css({overflow:"hidden"}),1==y?this.$curTiles.css({overflow:"visible"}):this.$curTiles.css({overflow:"hidden"}),!0===v||"slide"==n.transition.type||"scale"==n.transition.type||!0===y||n.transition.hasOwnProperty("opacity")?(D=k.appendTo(this.$curTiles),A=k.clone().appendTo(this.$nextTiles),P=ie("<div>").addClass("ls-curtile").appendTo(D)):A=k.appendTo(this.$nextTiles),$=ie("<div>").addClass("ls-nexttile").appendTo(A),F=c[b]*n.tile.delay/1e3,I=n.transition.rotate||0,z=n.transition.rotateX||0,D=n.transition.rotateY||0,"prev"==p&&(I=-I,z=-z,D=-D),n.transition.type){case"fade":X=R=N=E=Y=0,H=1;break;case"mixed":X=0,(H=1)==this.scale2D&&(N=Y=0),B=void 0!==n.transition.scaleX?n.transition.scaleX:1,M=void 0!==n.transition.scaleY?n.transition.scaleY:1;break;case"scale":switch(X=R=N=E=Y=0,M=B=H=1,Z){case"left":case"right":B=1+c[b]/(50/Q);break;case"top":case"bottom":M=1+c[b]/(50/Q);break;case"center":B=1+c[b]/(50/Q);break;case"middle":M=1+c[b]/(50/Q)}switch("mirror"===n.tile.sequence&&l*d/2<b&&(j=100,G=0),Z){case"left":K=j+"% 50%",U=G+"% 0";break;case"right":K=G+"% 50%",U=j+"% 50%";break;case"center":case"middle":_=W=1;break;case"top":K="50% "+j+"%",U="50% "+G+"%";break;case"bottom":K="50% "+G+"%",U="50% "+j+"%"}}J.transitions._slideTransition.fromTo($[0],n.transition.duration/1e3,{immediateRender:!1,autoCSS:!1,css:{x:-E,y:-R,display:"block",opacity:X,rotation:I,rotationX:z,rotationY:D,borderRadius:n.transition.borderRadius||0,scaleX:void 0!==B?B:this.scale2D,scaleY:void 0!==M?M:this.scale2D,transformOrigin:K}},{autoCSS:!1,css:{x:0,y:0,opacity:H,rotation:0,rotationX:0,rotationY:0,borderRadius:0,scaleX:1,scaleY:1},ease:J.functions.convert.easing(n.transition.easing)},F),1==v&&(void 0===J.transitions.nextSlide.data.$background||void 0!==J.transitions.nextSlide.data.$background&&(-1!=J.transitions.nextSlide.data.$background.attr("src").toLowerCase().indexOf("png")||J.transitions.nextSlide.data.$background.width()<J.slider.width||J.transitions.nextSlide.data.$background.height()<J.slider.height))&&(q.opacity=0),"slide"!=n.transition.type&&1!=y||-1!=n.name.toLowerCase().indexOf("mirror")?"scale"==n.transition.type&&(q.scaleX=W||B,q.scaleY=_||M,q.transformOrigin=U):(V=0!==I?-I:0,q.x=Y,q.y=N,q.rotation=V,q.scale=this.scale2D,q.opacity=X),n.transition.hasOwnProperty("opacity")&&(q.opacity=n.transition.opacity),void 0!==P&&J.transitions._slideTransition.to(P[0],n.transition.duration/1e3,{autoCSS:!1,css:q,ease:J.functions.convert.easing(n.transition.easing)},F)}V=b%l*i,q=Math.floor(b/l)*s,void 0!==J.transitions.curSlide.data.$background&&(S=J.transitions.curSlide.data.$background.data(J.defaults.init.dataKey),"3d"===e||"2d"===e&&(!0===v||"slide"===n.transition.type||"scale"===n.transition.type||!0===y||n.transition.hasOwnProperty("opacity"))?P.append(ie('<div style="position: absolute;">').css({width:J.slider.width,height:J.slider.height,left:-V,top:-q,transform:S.responsive.kbRotation+S.responsive.kbScale}).append(ie("<img>").attr("src",m).css({width:S.responsive.width,height:S.responsive.height,filter:S.responsive.filter,transform:"translateX("+S.responsive.x+"px) translateY("+S.responsive.y+"px)"}))):0===this.$curTiles.children().length&&this.$curTiles.append(ie('<div style="position: absolute;">').css({width:J.slider.width,height:J.slider.height,left:-V,top:-q,transform:S.responsive.kbRotation+S.responsive.kbScale}).append(ie("<img>").attr("src",m).css({width:S.responsive.width,height:S.responsive.height,filter:S.responsive.filter,transform:"translateX("+S.responsive.x+"px) translateY("+S.responsive.y+"px)"})))),"transparent"===J.transitions.curSlide.data.backgroundColor||J.transitions.curSlide.data.$backgroundVideo.length||("3d"===e||"2d"===e&&(!0===v||"slide"===n.transition.type||!0===y)?P:this.$curTiles).css("background-color",J.transitions.curSlide.data.backgroundColor),void 0!==J.transitions.nextSlide.data.$background&&(S=(F=J.transitions.nextSlide.data.$background.data(J.defaults.init.dataKey)).kenBurns[g],$.append(ie('<div style="position: absolute;">').css({width:J.slider.width,height:J.slider.height,left:-V,top:-q,transform:"rotate("+S.rotation+"deg) scale("+S.scale+")"}).append(ie("<img>").attr("src",f).css({width:F.responsive.width,height:F.responsive.height,filter:J.transitions.nextSlide.filter.from||"none",transform:"translateX("+F.responsive.x+"px) translateY("+F.responsive.y+"px)"})))),"transparent"===J.transitions.nextSlide.data.backgroundColor||J.transitions.nextSlide.data.$backgroundVideo.length||$.css("background-color",J.transitions.nextSlide.data.backgroundColor)}J.transitions.slide.$wrapper.prependTo(J.o.preferBlendMode?J.slider.$layersWrapper:J.slider.$innerWrapper),J.transitions.slide.start()},createCuboids:function(e,t,i,s,a,r,o,n,l,d){o="translate3d( "+a+"px, "+r+"px, "+o+"px)";0!==n&&(o+="rotateX( "+n+"deg)"),0!==l&&(o+="rotateY( "+l+"deg)");o={width:i,height:s,transform:o,"-ms-transform":o,"-webkit-transform":o};d&&(o["transform-origin"]=d,o["-ms-transform-origin"]=d,o["-webkit-transform-origin"]=d),ie("<div>").addClass(e).css(o).appendTo(t)}}},layers:{in:{onStart:function(e){e.data(J.defaults.init.dataKey).hover.enabled&&J.transitions.layers.hover.enable(e),J.layers.set.dataAttribute("add",e,"animating-in")},onComplete:function(e){J.media.functions.playIfAllowed(e),J.layers.set.dataAttribute("remove",e,"animating-in"),J.layers.set.dataAttribute("add",e,"active")}},out:{forced:function(){var a,r,o,n,e,t,i;J.transitions._forceLayersOut&&(J.transitions._slideTimeline&&(a=new ee.TimelineMax({paused:!0,autoRemoveChildren:!0}),n=[],e=J.layers.get("current, in, static, active").add(J.layers.get("current, out, static, active")),i=J.layers.get("current, out, notstatic, active"),t=J.layers.get("current, out, active"),i=ie().add(e).add(i),i.each(function(){var e,t=ie(this).data(J.defaults.init.dataKey);if(t.loop._timeline&&(J.transitions._slideTimeline.remove(t.loop._timeline),t.loop._timeline.play()),t.is.static){r=[t.elements.$wrapper[0]],t.elements.$clipWrapper&&(r=r.concat(t.elements.$clipWrapper[0])),t.textIn.nodes&&(r=r.concat(t.textIn.nodes));for(var i=0;i<r.length;i++)n=n.concat(J.transitions._slideTimeline.getTweensOf(r[i],!0),J.transitions._slideTimelineAlternate.getTweensOf(r[i],!0));for(var s=0;s<n.length;s++)n[s].duration&&0!==n[s].duration()&&(o=n[s],e=o,a.add(e,100-e.duration()*e.progress()))}}),t.each(function(){ie(this).data(J.defaults.init.dataKey).should.reset=!0}),a.play().seek(100),J.transitions._slideTimeline.eventCallback("onStart",null),J.transitions._slideTimeline.eventCallback("onComplete",null),J.transitions._slideTimeline.eventCallback("onReverseComplete",null),J.transitions._slideTimeline.eventCallback("onUpdate",null),J.transitions._slideTimeline.stop().clear(),J.transitions._slideTimelineAlternate.stop().clear()),("prev"===J.navigation.direction?J.transitions._forceLayersOutMirror:J.transitions._forceLayersOut).play(),J.slideshow.forceFastChange&&(J.transitions._forceLayersOut.progress(1),J.transitions._forceLayersOutMirror.progress(1))),J.slider.$layersWrapper.find(".ls-link").css({display:"none"})},onStart:function(e){J.layers.set.dataAttribute("add",e,"animating-out")},onComplete:function(e){var t=e.data(J.defaults.init.dataKey);!J.slider.state.changingSlides&&t.settings.slideOut===J.slides.current.index||J.transitions.layers.reset(e,t),t.hover.enabled&&J.transitions.layers.hover.disable(e),J.layers.set.dataAttribute("remove",e,"animating-out"),J.layers.set.dataAttribute("add",e,"hidden")}},reset:function(e,t){t.loop._timeline&&(t.loop._timeline.stop().clear(),delete t.loop._timeline,ee.TweenMax.set(t.elements.$loopWrapper[0],t.reset.loopWrapperOnSlideChange)),ee.TweenMax.set(t.elements.$wrapper[0],t.reset.wrapperOnSlideChange),ee.TweenMax.set(e[0],{"-webkit-filter":t.original.filter,filter:t.original.filter}),t.should.update&&(t.textInNodesFrom.random={},t.textOutNodesTo.random={},J.layers.update.data(e)),t.should.reset=!1},timeline:{shouldRestart:!1,create:function(e){var t,i,s,a=e?"current":"next";if(J.transitions.curNext=a,J.o.allowRestartOnResize||(J.transitions.layers.timeline.shouldRestart=!1),J.transitions.layers.timeline.resetStates(),J.transitions.timelines.set("layers",function(e,t){e.pause().progress(0).kill().clear(!0),e=null}),J.transitions._slideTimeline=new ee.TimelineMax({paused:!0,onStart:function(){J.api.hasEvent("slideTimelineDidStart")&&J.api.triggerEvent("slideTimelineDidStart",J.api.eventData())},onComplete:function(){J.o.playByScroll&&J.o.playByScrollSkipSlideBreaks&&("next"===J.slideshow.direction?J.transitions.layers.timeline.scrollForward(!0):J.transitions.layers.timeline.scrollBackwards(!0,!0))},onReverseComplete:function(){J.api.hasEvent("slideTimelineDidReverseComplete")&&J.api.triggerEvent("slideTimelineDidReverseComplete",J.api.eventData()),J.transitions.layers.timeline.shouldReplay&&(J.transitions.layers.timeline.shouldRestart=!1,J.transitions._slideTimeline.play()),J.o.playByScroll&&J.o.playByScrollSkipSlideBreaks&&J.transitions.layers.timeline.scrollBackwards(!0,!1)},onUpdate:function(e){J.api.hasEvent("slideTimelineDidUpdate")&&J.api.triggerEvent("slideTimelineDidUpdate",e)},onUpdateParams:["{self}"]}),J.transitions._slideTimelineAlternate=new ee.TimelineMax({paused:!0}),this.totalDuration=0,this.progress=1,J.transitions.timelines.set("prevforce",function(e,t){e.progress(1).kill().clear(!0),e=null}),J.transitions._forceLayersOut&&(J.transitions._forceLayersOutPrevious=J.transitions._forceLayersOut),J.transitions._forceLayersOutMirror&&(J.transitions._forceLayersOutMirrorPrevious=J.transitions._forceLayersOutMirror),J.transitions._forceLayersOut=new ee.TimelineMax({paused:!0,autoRemoveChildren:!0}),J.transitions._forceLayersOutMirror=new ee.TimelineMax({paused:!0,autoRemoveChildren:!0}),t=J.layers.get(a+", in, notactive"),i=J.layers.get(a+", out, notstatic").add(J.layers.get(a+", out, active, static")),e=J.layers.get(a+", in, bgonly, notactive"),s=ie().add(t).add(i).add(e),this.addLayers(t,"in",J.transitions._slideTimeline,J.transitions._forceLayersOut,J.transitions._slideTimelineAlternate,J.transitions._forceLayersOutMirror),this.addLayers(i,"out",J.transitions._slideTimeline,J.transitions._forceLayersOut,J.transitions._slideTimelineAlternate,J.transitions._forceLayersOutMirror),J.slides[a].data&&-1!==J.slides[a].data.duration&&J.slides[a].data.duration<this.totalDuration?(this.progress=J.slides[a].data.duration/this.totalDuration,J.debugMode&&J.debug.add("warn","slideTimeline.duration",[J.slides[a].data.duration,this.totalDuration])):J.transitions._slideTimeline.duration()>this.totalDuration&&(this.progress=this.totalDuration/J.transitions._slideTimeline.duration()),-1===J.slides[a].data.duration?(J.o.slideDuration&&ie.isNumeric(J.o.slideDuration)&&-1<J.o.slideDuration?this.totalDuration=J.o.slideDuration/1e3:0===this.totalDuration&&(this.totalDuration=J.o.slideDurationWithoutLayers/1e3),J.o.inLayerPreview&&(J.o.hasInfiniteLoop&&"loop-transition"===J.o.layerPreviewPresetType?this.totalDuration+=5:"ending-transition"===J.o.layerPreviewPresetType?this.totalDuration+=.25:"hover-transition"!==J.o.layerPreviewPresetType&&(this.totalDuration+=.5)),J.slides[a].data.duration=this.totalDuration,J.slides[J.slides[a].index].data.duration=this.totalDuration):this.totalDuration=J.slides[a].data.duration,!J.functions.getData("slideDuration",this.totalDuration))return!1;J.slider.isScrollScene&&(J.o.sceneDuration||(J.o.sceneDuration=this.totalDuration,J.resize.scene()),J.slider.$spacingWrapper.attr("data-scene-duration",J.o.sceneDuration)),this.addLayers(e,"in",J.transitions._slideTimeline,J.transitions._forceLayersOut,J.transitions._slideTimelineAlternate),!0===J.transitions.layers.timeline.shouldRestart&&J.debugMode&&J.debug.add("warn","slideTimeline.restart",J.o.allowRestartOnResize?"enabled":"disabled");for(var r,o=0;o<s.length;o++)ie(s[o]).data(J.defaults.init.dataKey).parallax.enabled&&ie(s[o]).data(J.defaults.init.dataKey).elements.$parallaxWrapper.attr("data-ls-parallax","active");J.transitions.layers.parallax.trigger(),J.transitions.layers.scroll.reset(),J.transitions.layers.scroll.trigger(),J.api.hasEvent("slideTimelineDidCreate")&&J.api.triggerEvent("slideTimelineDidCreate",{slideTimeline:J.transitions._slideTimeline,layersOnSlideTimeline:s,slideTimelineDuration:this.totalDuration}),J.transitions.timers.create(),J.transitions.timers.bar._transition&&J.transitions._slideTimeline.add(J.transitions.timers.bar._transition.play(),0),J.transitions.timers.circle._transition&&J.transitions._slideTimeline.add(J.transitions.timers.circle._transition.play(),0),J.transitions.timers.slidebar._transition&&J.transitions._slideTimeline.add(J.transitions.timers.slidebar._transition.play(),0),J.transitions._slideTimeline.call(function(){if(!J.transitions._slideTimeline.reversed()){var e;if(J.api.hasEvent("slideTimelineDidComplete"))if(J.o.inLayerPreview&&J.o.hasInfiniteLoop&&J.layers.get("current, in").each(function(){(e=ie(this).data(J.defaults.init.dataKey)).loop&&e.loop._timeline&&e.loop._timeline.stop().progress(0)}),!1===J.api.triggerEvent("slideTimelineDidComplete",J.api.eventData()))return;J.functions.setStates(J.transitions.layers.timeline,{finished:!0}),!J.slideshow.isPaused()&&J.slideshow.state.running?J.slideshow.changeTo(J.slides.next.index):J.slideshow.state.pausedByLastCycle&&J.transitions.timers.reverse()}},[],this,J.slides[a].data.duration),J.slides.next.data.$link&&J.slides.next.data.$link.css({display:"block"}),(!J.o.startInViewport||"inside"!==J.slider.position.toViewport&&!J.o.playByScrollStart&&J.slider.state.waitForGettingInViewport)&&J.o.startInViewport||!(J.slider.isPopup&&J.slider.state.popupIsVisible&&J.slider.state.popupShouldStart)&&J.slider.isPopup||(J.o.pauseLayers&&J.slideshow.isPaused()&&J.transitions._slideTimeline.timeScale(0),J.slider.isScrollScene||J.transitions.layers.timeline.play(),J.o.playByScroll&&"up"===J.device.scroll.directionAtSlideTransitionStart&&J.transitions._slideTimeline.progress(1)),J.transitions._slideTimelineAlternate.play(),J.slider.isScrollScene&&J.slider.set.offset(),$.trigger("mouseleave.globalhover"+B),$.off("mouseenter.globalhover"+B+" mouseleave.globalhover"+B+" mousemove.globalhover"+B),J.slides[a].data.globalhover&&(r=J.layers.get(a+",in,notactive").add(J.layers.get("static,active")),$.on("mouseenter.globalhover"+B,function(){r.each(function(){J.transitions.layers.hover.mouseEnter(ie(this),ie(this).data(J.defaults.init.dataKey))})}),$.on("mouseleave.globalhover"+B,function(){r.each(function(){J.transitions.layers.hover.mouseLeave(ie(this),ie(this).data(J.defaults.init.dataKey))})}),$.on("mousemove.globalhover"+B,function(){r.each(function(){J.transitions.layers.hover.mouseMove(ie(this),ie(this).data(J.defaults.init.dataKey))})}))},prepare:function(){J.slides.next.data.overflow&&"hidden"!==J.slides.next.data.overflow?(J.slider.$layersWrapper.addClass("ls-visible"),J.slider.$slideBGWrapper.addClass("ls-visible")):(J.slider.$layersWrapper.removeClass("ls-visible"),J.slider.$slideBGWrapper.removeClass("ls-visible")),this.create()},getTiming:function(e,t,i,s){if("number"==typeof t)return t;t=t.toLowerCase();var a,r,o,n,l,d=J.defaults.layer.timelineHierarchy,c=0;if(-1!==t.indexOf("*")&&(l="*"),-1!==t.indexOf("/")&&(l="/"),-1!==t.indexOf("+")&&(l="+"),-1!==t.indexOf("-")&&(l="-"),l)if(n=t.split(l),a=ie.trim(n[0]),o=parseInt(ie.trim(n[1])),d[a]&&-1!==d[i][1].indexOf(d[a][0])){if(!e.timeline[a]&&1<d[a][0]){var p,u,h=d[a][0]-1||1;for(u in d)d[u][0]===h&&(p=u);a=p}if(r="number"==typeof e.timeline[a]?e.timeline[a]:e.timeline[a](e),s)c=o/1e3;else switch(l){case"*":c=r*o;break;case"/":c=r/o;break;case"+":c=r+o/1e3;break;case"-":c=r-o/1e3}}else J.debugMode&&(d[a]||J.debug.add("warn","layerTransition.timing1",a),-1===d[i][1].indexOf(d[a][0])&&J.debug.add("warn","layerTransition.timing3",[a,d[a],i,d[i]])),"+"!==l&&!s||(c=o/1e3);else d[a=ie.trim(t)]&&-1!==d[i][1].indexOf(d[a][0])?c=s?0:"number"==typeof e.timeline[a]?e.timeline[a]:e.timeline[a](e):J.debugMode&&(d[a]?-1===d[i][1].indexOf(d[a][0])&&J.debug.add("warn","layerTransition.timing3",[a,d[a],i,d[i]]):J.debug.add("warn","layerTransition.timing1",a));return(c!=c||c<0)&&(J.debugMode&&J.debug.add("warn","layerTransition.timing2",[i,a,c]),c=0),c},addLayers:function(e,t,i,s,a,r){for(var o=0,n=e.length;o<n;o++){var l,d,c,p,u=e[o],h=ie(u),m=h.data(J.defaults.init.dataKey),f=m.elements.$wrapper,g=m.elements.$clipWrapper,y=m.elements.$loopWrapper,v=m.elements.$parallaxWrapper,w=(m.elements.$scrollWrapper,m.elements.$scrollTransformWrapper,m.settings.skipViewport&&J.slideshow.state.changed<1?a:i),b="loop"==m.settings.skipViewport&&J.slideshow.state.changed<1?a:i,S=ie.extend(!0,{},m.inLayerFrom),x=S.css,T=ie.extend({},m.inLayerShouldBeConverted),k=ie.extend(!0,{},m.outLayerTo),C=k.css,O=ie.extend({},m.outLayerShouldBeConverted),P=ie.extend(!0,{},m.textInNodesFrom),L=ie.extend(!0,{},m.textInShouldBeConverted),I=ie.extend(!0,{},m.textOutNodesTo),$=ie.extend(!0,{},m.textOutShouldBeConverted);if(m.should.reset&&J.transitions.layers.reset(h,m),h.hasClass("ls-bg"))m.kenBurns.zoom&&i.fromTo(h.closest(".ls-bg-wrap"),J.transitions.nextSlide.data.duration+J.transitions.nextSlide.data.calculatedTimeShift,{autoCSS:!1,css:m.kenBurns.from},{autoCSS:!1,css:m.kenBurns.to,ease:ee.Quad.easeInOut},-J.transitions.nextSlide.data.calculatedTimeShift),ie.isEmptyObject(m.filter.values.bgFrom)&&ie.isEmptyObject(m.filter.values.bgTo)||(m.filter.transitions.bg||(m.filter.transitions.bg=J.transitions.layers.filters.createTransition(m,"bg",m.filter.values.bgFrom,m.filter.values.bgTo)),w.to([{p:0},u],J.transitions.nextSlide.data.duration,{p:1,autoCSS:!1,ease:ee.Sine.easeInOut,onUpdate:J.transitions.layers.filters.animate,onUpdateParams:["{self}",m.filter.transitions.bg]},0));else switch(t){case"in":if(m.in.enabled?(m.settings.timelineIsCalculated||("number"!=typeof m.in.startAt&&(m.in.startAt=0),m.timeline.transitioninstart=m.in.startAt,m.timeline.transitioninend=m.timeline.transitioninstart+m.in.duration),J.resize.performTransformOperations(m.inLayerToCSS,x),m.in.mirror&&"prev"===J.navigation.direction&&J.resize.mirrorTransitionProperties({transitionProperties:x,transitionPropertiesShouldBeConverted:T,transitionType:"normal",mirrorProperties:m.in.mirror}),J.resize.transformProperties(h,m,x,T),J.resize.styleProperties(m,m.inLayerStyleFromCSS,m.inLayerStyleShouldBeConvertedFrom),J.resize.styleProperties(m,m.inLayerStyleToCSS,m.inLayerStyleShouldBeConvertedTo),x.transformPerspective=m.transformPerspective.layer*m.settings.calculatedratio,m.clip.enabled&&(m.original.clip||(m.original.clip=m.clip.min,m.original.clipShouldBeConverted=!0),m.inClipShouldBeConverted.clip?(m.inClipFromCSS.clip=J.resize.clip(h,m,m.inClipShouldBeConverted.clip,!0),m.inClipToCSS.clip=J.resize.clip(h,m,m.original.clip,m.original.clipShouldBeConverted),w.fromTo(g[0],m.in.duration,m.inClipFrom,m.inClipTo,m.timeline.transitioninstart)):ee.TweenMax.set(g[0],{clip:J.resize.clip(h,m,m.original.clip,m.original.clipShouldBeConverted)}),J.transitions.layers.timeline.shouldRestart=!0),ie.isEmptyObject(m.filter.values.in)?ie.isEmptyObject(m.filter.values.out)||h.css("filter",m.original.filter):(m.filter.transitions.in||(m.filter.transitions.in=J.transitions.layers.filters.createTransition(m,"in",m.filter.values.in,m.filter.values.style)),w.to([{p:0},u],m.in.duration,{p:1,autoCSS:!1,ease:m.inLayerTo.ease,onUpdate:J.transitions.layers.filters.animate,onUpdateParams:["{self}",m.filter.transitions.in]},m.timeline.transitioninstart)),m.is.smartBG&&-1!==m.styleSettings.smartbg.indexOf("in")&&(m.inLayerStyleFrom.css["--x"]=parseInt(m.responsive["--x"])-x.x+"px",m.inLayerStyleTo.css["--x"]=parseInt(m.responsive["--x"])+"px",m.inLayerStyleFrom.css["--y"]=parseInt(m.responsive["--y"])-x.y+"px",m.inLayerStyleTo.css["--y"]=parseInt(m.responsive["--y"])+"px"),0===m.timeline.transitioninstart&&0===m.in.duration?(m.inLayerTo.css.transformOrigin=S.css.transformOrigin,m.inLayerTo.css.transformPerspective=S.css.transformPerspective,w.set(f[0],m.inLayerTo,m.timeline.transitioninstart),w.set(u,m.inLayerStyleTo,m.timeline.transitioninstart)):(w.fromTo(f[0],m.in.duration,S,m.inLayerTo,m.timeline.transitioninstart),w.fromTo(u,m.in.duration,m.inLayerStyleFrom,m.inLayerStyleTo,m.timeline.transitioninstart))):(m.timeline.transitioninstart=0,m.timeline.transitioninend=0),m.is.textLayer&&((m.textIn.type||m.textOut.type)&&J.transitions.layers.splitType.resetNodes(h,m),m.textIn.enabled&&(B=!(!m.textIn.mirror||"prev"!==J.navigation.direction),m.in.enabled||w.to(f[0],0,ie.extend(!0,{},m.inLayerTo,m.init.wrapper),m.timeline.textinstart),d=J.transitions.layers.splitType.setNodesSequence(m.textIn.type.split("_"),m.textIn.ns),m.textIn.nodes=B?d[1]:d[0],B&&J.resize.mirrorTransitionProperties({transitionProperties:P,transitionPropertiesShouldBeConverted:L,transitionType:"text",mirrorProperties:m.textIn.mirror}),J.resize.transformProperties(h,m,P,L,!1,m.textIn.nodes),P.transformPerspective=m.transformPerspective.text*m.settings.calculatedratio,ie.isEmptyObject(L.random)||J.transitions.layers.splitType.setRandomProperties(m,L.random,P,"In"),ie.isEmptyObject(P.random)||J.transitions.layers.splitType.setRandomProperties(m,P.random,P,"In"),delete P.random,m.settings.timelineIsCalculated||(m.timeline.textinstart=this.getTiming(m,m.textIn.startAt,"textinstart"),m.timeline.textinend=m.timeline.textinstart+(m.textIn.nodes.length-1)*m.textIn.shiftNodes+m.textIn.duration),P.color?m.textInNodesToCSS.color=m.original.color:m.textOutNodesTo.color&&(P.color=m.original.color),w.set(u,m.textIn.layerStyle,m.timeline.textinstart),window.getSelection&&J.browser.isSafari&&w.addCallback(function(e){window.getSelection().setBaseAndExtent(e,0,e,1e3),window.getSelection().removeAllRanges()},m.timeline.textinstart+.001,[u]),w.staggerFromTo(m.textIn.nodes,m.textIn.duration,P,m.textInNodesTo,m.textIn.shiftNodes,m.timeline.textinstart,function(e){J.transitions.layers.in.onComplete(e)},[h]))),m.is.keyframe&&J.o.playByScroll&&i.addPause(m.timeline.allinend(),function(){setTimeout(function(){delete J.timeouts.scroll,J.transitions.layers.timeline.timeScaleModifier=0,J.device.scroll.timeout=250},500)}),m.parallax.enabled&&"auto"==m.parallax.event){J.transitions.layers.parallax.auto();var B=new ee.TimelineMax({paused:!0}),M={repeat:-1==m.parallax.count?-1:m.parallax.count-1,ease:ee.Linear.easeNone};switch(m.settings.timelineIsCalculated&&!m.is.static||(m.timeline.autoparallaxstart=this.getTiming(m,m.parallax.startAt,"autoparallaxstart"),m.timeline.autoparallaxend=-1!==m.parallax.count&&m.timeline.autoparallaxstart+m.parallax.duration*m.parallax.count),m.parallax._timeline=B,m.parallax.dummy={x:0,y:-10},m.parallax.path){default:case"circle":M.bezier={curviness:1.5,values:[{x:10,y:0},{x:0,y:10},{x:-10,y:0},{x:0,y:-10}]};break;case"oval-h":M.bezier={type:"thru",curviness:1,values:[{x:20,y:0},{x:0,y:10},{x:-20,y:0},{x:0,y:-10}]};break;case"oval-v":m.parallax.dummy={x:0,y:-20},M.bezier={type:"thru",curviness:1,values:[{x:10,y:0},{x:0,y:20},{x:-10,y:0},{x:0,y:-20}]};break;case"infinity":m.parallax.dummy={x:0,y:0},M.bezier={type:"thru",curviness:1,values:[{x:20,y:-10},{x:40,y:0},{x:20,y:10},{x:0,y:0},{x:-20,y:-10},{x:-40,y:0},{x:-20,y:10},{x:0,y:0}]};break;case"linear-h":m.parallax.dummy={x:-10,y:0},M.x=10,M.ease=ee.Quad.easeInOut,M.yoyo=!0,M.repeat=-1==m.parallax.count?-1:2*m.parallax.count-1;break;case"linear-v":m.parallax.dummy={x:0,y:-10},M.y=10,M.ease=ee.Quad.easeInOut,M.yoyo=!0,M.repeat=-1==m.parallax.count?-1:2*m.parallax.count-1}M.onUpdate=function(e,t,i,s,a,r,o){ee.TweenMax.set(i,{x:-t.x*(s/50)*parseInt(a),y:-t.y*(s/50)*parseInt(a),rotationX:"3d"==r?t.y/(100/o):0,rotationY:"3d"==r?-t.x/(100/o):0})},M.onUpdateParams=["{self}",m.parallax.dummy,v[0],m.parallax.distance,m.parallax.level,m.parallax.type,m.parallax.rotation],B.to(m.parallax.dummy,-1==m.parallax.path.indexOf("linear")?m.parallax.duration:m.parallax.duration/2,M),i.addCallback(function(e){e.play()},m.timeline.autoparallaxstart,[B])}m.loop.enabled&&(c=new ee.TimelineMax({repeat:m.loop.repeat,repeatDelay:m.loop.repeatDelay,yoyo:m.loop.yoyo,paused:!0}),m.settings.timelineIsCalculated&&!m.is.static||(m.timeline.loopstart=this.getTiming(m,m.loop.startAt,"loopstart"),m.timeline.loopend=-1!==m.loop.count&&m.timeline.loopstart+(m.loop.repeat+1)*m.loop.duration+m.loop.repeat*m.loop.repeatDelay),m.loop._timeline=c,J.resize.transformProperties(h,m,m.loopToCSS,{x:m.loopLayerShouldBeConverted.x,y:m.loopLayerShouldBeConverted.y}),(m.loopToCSS.x&&0!==m.loopToCSS.x||m.loopToCSS.y&&0!==m.loopToCSS.y)&&(J.transitions.layers.timeline.shouldRestart=!0),m.loopFromCSS.transformOrigin=J.functions.convert.transformOrigin(m.loopLayerShouldBeConverted.transformOrigin,h,m,h.data(J.defaults.init.dataKey).elements.$outerStyleWrapper),m.loopFromCSS.transformPerspective=m.transformPerspective.loop*m.settings.calculatedratio,ie.isEmptyObject(m.filter.values.loop)||(m.filter.transitions.loop||(m.filter.transitions.loop=J.transitions.layers.filters.createTransition(m,"loop",ie.isEmptyObject(m.filter.values.afterIn)?m.filter.values.style:m.filter.values.afterIn,m.filter.values.loop)),c.to([{p:0},u],m.loop.duration,{p:1,autoCSS:!1,ease:m.loopTo.ease,onUpdate:J.transitions.layers.filters.animate,onUpdateParams:["{self}",m.filter.transitions.loop]},0)),c.fromTo(y[0],m.loop.duration,m.loopFrom,m.loopTo,0),m.is.smartBG&&-1!==m.styleSettings.smartbg.indexOf("loop")&&c.fromTo(u,m.loop.duration,{"--lx":"0px","--ly":"0px"},{ease:m.loopTo.ease,"--lx":-m.loopTo.css.x+"px","--ly":-m.loopTo.css.y+"px"},0),m.loopClipShouldBeConverted.clip&&(m.loopClipToCSS.clip=J.resize.clip(h,m,m.loopClipShouldBeConverted.clip,!0),c.to(g[0],m.loop.duration,m.loopClipTo,0),J.transitions.layers.timeline.shouldRestart=!0),-1!==m.loop.repeat&&("looplayers"===J.o.pauseOnHover||J.gui.timers.slidebar.$element||J.o.playByScroll)?(b.add(c,m.timeline.loopstart),c.play()):b.addCallback(function(e){e.play()},m.timeline.loopstart,[c])),m.is.static&&(m.timeline.staticfrom=m.timeline.transitioninend,m.timeline.staticto="100%",m.settings.timelineIsCalculated||(l=Math.max(m.timeline.allinandloopend(),0),this.totalDuration=Math.max(this.totalDuration,l)));break;case"out":m.is.textLayer&&m.textOut.enabled&&(c=J.transitions.layers.splitType.setNodesSequence(m.textOut.type.split("_"),m.textOut.ns),m.textOut.nodes=c[0],J.resize.transformProperties(h,m,m.textOutNodesTo,m.textOutShouldBeConverted,m.textOutNodesFrom,m.textOut.nodes),m.textOut.mirror?(m.textOut.nodesMirror=c[1],J.resize.mirrorTransitionProperties({transitionProperties:I,transitionPropertiesShouldBeConverted:$,transitionType:"text",mirrorProperties:m.textOut.mirror}),J.resize.transformProperties(h,m,I,$,m.textOutNodesFrom,m.textOut.nodes)):m.textOut.nodesMirror=c[0],m.textOutNodesFrom.transformPerspective=m.transformPerspective.text*m.settings.calculatedratio,ie.isEmptyObject(m.textOutShouldBeConverted.random)||J.transitions.layers.splitType.setRandomProperties(m,m.textOutShouldBeConverted.random,m.textOutNodesTo,"Out"),ie.isEmptyObject(m.textOutNodesTo.random)||J.transitions.layers.splitType.setRandomProperties(m,m.textOutNodesTo.random,m.textOutNodesTo,"Out"),delete m.textOutNodesTo.random,m.textOut.mirror&&(ie.isEmptyObject($.random)||J.transitions.layers.splitType.setRandomProperties(m,$.random,I,"Out"),ie.isEmptyObject(I.random)||J.transitions.layers.splitType.setRandomProperties(m,I.random,I,"Out"),delete I.random),m.settings.timelineIsCalculated||(m.timeline.textoutstart=this.getTiming(m,m.textOut.startAt,"textoutstart"),m.timeline.textoutend=m.timeline.textoutstart+(m.textOut.nodes.length-1)*m.textOut.shiftNodes+m.textOut.duration),m.clip.enabled&&(void 0===m.outClipShouldBeConverted.clip&&i.to(g[0],0,{immediateRender:!1,css:{clip:J.resize.clip(h,m,m.clip.max)}},m.timeline.textoutstart),J.transitions.layers.timeline.shouldRestart=!0),m.textOutNodesTo.color&&(m.textOutNodesFrom.color=m.original.color),-1!==m.textOut.startAt.indexOf("slidechangeonly")&&(!m.is.static||m.is.static&&m.settings.slideOut===J.slides.next.index)?(s.set(u,m.textOut.layerStyle,0),r.set(u,m.textOut.layerStyle,0),(p=new ee.TimelineMax).staggerFromTo(m.textOut.nodes,m.textOut.duration,m.textOutNodesFrom,m.textOutNodesTo,m.textOut.shiftNodes,0),p.timeScale(p.duration()/J.o.forceLayersOutDuration),s.add(p,0),s.to(f[0],0,m.reset.wrapperOnTimelineEnd,J.o.forceLayersOutDuration),(p=new ee.TimelineMax).staggerFromTo(m.textOut.nodesMirror,m.textOut.duration,m.textOutNodesFrom,I,m.textOut.shiftNodes,0),p.timeScale(p.duration()/J.o.forceLayersOutDuration),r.add(p,0)):(i.set(u,m.textOut.layerStyle,m.timeline.textoutstart),i.staggerFromTo(m.textOut.nodes,m.textOut.duration,m.textOutNodesFrom,m.textOutNodesTo,m.textOut.shiftNodes,m.timeline.textoutstart),s.to(f[0],J.o.forceLayersOutDuration,{opacity:0},0),r.to(f[0],J.o.forceLayersOutDuration,{opacity:0},0),s.to(f[0],0,m.reset.wrapperOnTimelineEnd,J.o.forceLayersOutDuration)),r.to(f[0],0,m.reset.wrapperOnTimelineEnd,J.o.forceLayersOutDuration)),m.out.enabled&&(J.resize.performTransformOperations(m.inLayerToCSS,m.outLayerToCSS),J.resize.transformProperties(h,m,m.outLayerToCSS,m.outLayerShouldBeConverted,m.outLayerFromCSS),J.resize.styleProperties(m,m.outLayerStyleFromCSS,m.outLayerStyleShouldBeConvertedFrom),J.resize.styleProperties(m,m.outLayerStyleToCSS,m.outLayerStyleShouldBeConvertedTo),m.outLayerFromCSS.transformPerspective=m.transformPerspective.layer*m.settings.calculatedratio,m.out.mirror&&(J.resize.performTransformOperations(m.inLayerToCSS,C),J.resize.mirrorTransitionProperties({transitionProperties:C,transitionPropertiesShouldBeConverted:O,transitionType:"normal",mirrorProperties:m.out.mirror}),J.resize.transformProperties(h,m,C,O,m.outLayerFromCSS)),m.is.smartBG&&-1!==m.styleSettings.smartbg.indexOf("out")&&(m.outLayerStyleFrom.css["--x"]=parseInt(m.responsive["--x"])+"px",m.outLayerStyleTo.css["--x"]=parseInt(m.responsive["--x"])-m.outLayerToCSS.x+"px",m.outLayerStyleFrom.css["--y"]=parseInt(m.responsive["--y"])+"px",m.outLayerStyleTo.css["--y"]=parseInt(m.responsive["--y"])-m.outLayerToCSS.y+"px"),ie.isEmptyObject(m.filter.values.out)||m.filter.transitions.out||(m.filter.transitions.out=J.transitions.layers.filters.createTransition(m,"out",ie.isEmptyObject(m.filter.values.afterLoop)?ie.isEmptyObject(m.filter.values.afterIn)?m.filter.values.style:m.filter.values.afterIn:m.filter.values.afterLoop,m.filter.values.out)),"slidechangeonly"!==m.out.startAt?(m.settings.timelineIsCalculated&&!m.is.static||(m.is.static?(m.timeline.staticfrom=0,m.timeline.transitionoutstart=this.getTiming(m,m.out.startAt,"transitionoutstart",!0),m.timeline.staticto=m.timeline.transitionoutstart):m.timeline.transitionoutstart=Math.max(this.getTiming(m,m.out.startAt,"transitionoutstart"),m.timeline.transitioninend),m.timeline.transitionoutend=m.timeline.transitionoutstart+m.out.duration),m.clip.enabled&&(void 0===m.outClipShouldBeConverted.clip?i.to(g[0],0,{immediateRender:!1,css:{clip:J.resize.clip(h,m,m.clip.max)}},m.timeline.transitionoutstart):(m.outClipToCSS.clip=J.resize.clip(h,m,m.outClipShouldBeConverted.clip,!0),i.to(g[0],m.out.duration,m.outClipTo,m.timeline.transitionoutstart)),J.transitions.layers.timeline.shouldRestart=!0),ie.isEmptyObject(m.filter.values.out)||i.to([{p:0},u],m.out.duration,{p:1,autoCSS:!1,ease:m.outLayerTo.ease,onUpdate:J.transitions.layers.filters.animate,onUpdateParams:["{self}",m.filter.transitions.out]},m.timeline.transitionoutstart),m.outLayerStyleTo.onComplete=function(e,t){t.is.mediaLayer&&t.mediaProperties.$media[0].hasAttribute("data-ls-playing")&&J.media.functions.stopSingleMedia(e,t)},m.outLayerStyleTo.onCompleteParams=[h,m],i.fromTo(f[0],m.out.duration,m.outLayerFrom,m.outLayerTo,m.timeline.transitionoutstart),i.fromTo(u,m.out.duration,m.outLayerStyleFrom,m.outLayerStyleTo,m.timeline.transitionoutstart),i.fromTo(f[0],0,m.init.wrapper,m.reset.wrapperOnTimelineEnd,m.timeline.transitionoutend)):(m.timeline.staticfrom=0,m.timeline.staticto="100%"),p=Math.min(J.o.forceLayersOutDuration,m.out.duration),(!m.is.static||m.is.static&&m.settings.slideOut===J.slides.next.index)&&(s.fromTo(f[0],p,m.outLayerFrom,m.outLayerTo,0),s.fromTo(u,p,m.outLayerStyleFrom,m.outLayerStyleTo,0),r.fromTo(f[0],p,m.outLayerFrom,m.out.mirror?k:m.outLayerTo,0),r.fromTo(u,p,m.outLayerStyleFrom,m.outLayerStyleTo,0),m.clip.enabled&&void 0!==m.outClipShouldBeConverted.clip&&(m.outClipToCSS.clip=J.resize.clip(h,m,m.outClipShouldBeConverted.clip,!0),s.to(g[0],p,m.outClipTo,0),r.to(g[0],p,m.outClipTo,0)),ie.isEmptyObject(m.filter.values.out)||(s.to([{p:0},u],m.out.duration,{p:1,autoCSS:!1,ease:m.outLayerTo.ease,onUpdate:J.transitions.layers.filters.animate,onUpdateParams:["{self}",m.filter.transitions.out]},0),r.to([{p:0},u],m.out.duration,{p:1,autoCSS:!1,ease:m.outLayerTo.ease,onUpdate:J.transitions.layers.filters.animate,onUpdateParams:["{self}",m.filter.transitions.out]},0)))),l=Math.max(m.timeline.alloutandloopend(),0),this.totalDuration=Math.max(this.totalDuration,l),m.settings.timelineIsCalculated=!0}}},play:function(){J.transitions._slideTimeline&&(J.transitions._slideTimeline.play(),J.functions.setStates(this,{started:!0,running:!0,stopped:!1,paused:!1}))},pause:function(e){e=ie.isNumeric(e)?e:.75;J.transitions._slideTimeline&&(ee.TweenMax.to(J.transitions._slideTimeline,e,{timeScale:0}),J.functions.setStates(this,{paused:!0,stopped:!1}))},resume:function(){J.transitions._slideTimeline&&(ee.TweenMax.to(J.transitions._slideTimeline,.75,{timeScale:1}),J.functions.setStates(this,{paused:!1,stopped:!1}))},reverse:function(){J.transitions._slideTimeline&&J.transitions._slideTimeline.reverse()},scrollForward:function(e){e||(this.play(),this.modifyTimeScale()),J.transitions._slideTimeline&&(J.slider.isBusy()||0!==J.transitions._slideTimeline.totalDuration()&&1!==J.transitions._slideTimeline.progress()||"down"!==J.device.scroll.direction||(J.slideshow.direction="next",(e=J.slideshow.sequence.normalized).indexOf(J.slides.current.index)===e.length-1?(J.slider.positionToViewport="under",J.device.scroll.enable(),J.slideshow.direction="prev"):J.navigation.next()))},scrollBackwards:function(e,t){e&&!t||(this.reverse(),this.modifyTimeScale()),J.transitions._slideTimeline&&(J.slider.isBusy()||0!==J.transitions._slideTimeline.totalDuration()&&0!==J.transitions._slideTimeline.progress()||"up"!==J.device.scroll.direction||(J.slideshow.direction="prev",0===J.slideshow.sequence.normalized.indexOf(J.slides.current.index)?(J.slider.positionToViewport="over",J.device.scroll.enable(),J.slideshow.direction="next"):J.navigation.prev()))},modifyTimeScale:function(){J.transitions._slideTimeline&&ee.TweenMax.to(J.transitions._slideTimeline,.25,{timeScale:1+this.timeScaleModifier})},resetStates:function(){this.state={started:!1,running:!1,paused:!1,stopped:!1,finished:!1}}},hover:{enable:function(e){e.attr("data-ls-canhover","1")},disable:function(e){e.attr("data-ls-canhover","0")},set:function(e,t){t.elements.$wrapper.on("mouseenter."+B,function(){J.transitions.layers.hover.mouseEnter(e,t)}),t.elements.$wrapper.on("mouseleave."+B,function(){J.transitions.layers.hover.mouseLeave(e,t)}),t.elements.$wrapper.on("mousemove."+B,function(){J.transitions.layers.hover.mouseMove(e,t)})},createTimeline:function(e,t){var i,s,a;t.hover._timeline=new ee.TimelineMax({paused:!0,onReverseComplete:function(e,t){t.hover._timeline._reversed&&(t.hover._timeline.stop().clear(),delete t.hover._timeline)},onReverseCompleteParams:[e,t]}),J.resize.transformProperties(e,t,t.hoverToCSS,t.hoverShouldBeConverted,t.hoverFromCSS),J.resize.styleProperties(t,t.hoverToCSS,t.hoverShouldBeConverted),t.hoverFromCSS.transformPerspective=t.transformPerspective.hover*t.settings.calculatedratio,t.hover._tween=ee.TweenMax.fromTo(e[0],t.hover.durationIn,t.hoverFrom,t.hoverTo),t.hover._timeline.add(t.hover._tween,0),e.next().is(".ls-layer-link")?(i=e.next(),s=ie.extend(!0,{},t.hoverFrom,{css:{opacity:1,color:"transparent",background:"transparent",z:0}}),a=ie.extend(!0,{},t.hoverTo,{css:{opacity:1,color:"transparent",background:"transparent",z:0}}),t.hover._linkTween=ee.TweenMax.fromTo(i[0],t.hover.durationIn,s,a),t.hover._timeline.add(t.hover._linkTween,0)):t.hover._linkTween=null,t.hover.alwaysOnTop&&(a={zIndex:9999},J.browser.isSafari&&(a.transform="translateZ(999999px)"),t.hover._timeline.to(t.elements.$outerWrapper[0],t.hover.durationIn,{autoCSS:!1,css:a},0)),t.hover.reverseTimeScale=t.hover.durationIn/t.hover.durationOut==1?1:t.hover.durationIn/t.hover.durationOut,this.hoverIn(e,t)},mouseEnter:function(e,t){"1"===e.attr("data-ls-canhover")&&(e.attr("data-ls-hovered",1),t.elements.$wrapper.off("mousemove."+B),t.hover._timeline?(t.hover._timeline.play().stop().progress(0),this.hoverIn(e,t)):this.createTimeline(e,t))},mouseLeave:function(e,t){t.hover._timeline&&(t.hover._timeline.stop().progress(1),this.hoverOut(e,t)),e.removeAttr("data-ls-hovered")},mouseMove:function(e,t){e.attr("data-ls-hovered")||this.mouseEnter(e,t)},hoverIn:function(e,t){t.hover._tween.updateTo({ease:t.hover.easeIn}),t.hover._linkTween&&t.hover._linkTween.updateTo({ease:t.hover.easeIn}),t.hover._timeline.play().timeScale(1)},hoverOut:function(e,t){t.hover._tween.updateTo({ease:t.hover.easeOut}),t.hover._linkTween&&t.hover._linkTween.updateTo({ease:t.hover.easeOut}),t.hover._timeline.reverse().timeScale(t.hover.reverseTimeScale)}},parallax:{defaultProperties:{type:"2d",event:"cursor",path:"circle",direction:"clockwise",duration:5,count:-1,startAt:"slidestart",x:!0,y:!0,rotation:10,distance:10,durationMove:1.5,durationLeave:1.2,transformOrigin:"slidercenter slidermiddle 0",transformPerspective:500},defaults:{scrollModifier:5,centerLayers:"center",centerDegree:40,sensitive:10},state:{enabled:!1,ready:!1},wrappers:{cursor:{$2d:ie(),$3d:ie()},scroll:{$2d:ie(),$3d:ie()},auto:{$2d:ie(),$3d:ie()}},init:function(){var t=this;$.on("mouseenter."+B,function(){(t.wrappers.cursor.$2d.length||t.wrappers.cursor.$3d.length)&&t.calculateTransformProperties()}),$.on("mousemove."+B,function(e){(t.wrappers.cursor.$2d.length||t.wrappers.cursor.$3d.length)&&t.mouseMove(e)}),$.on("mouseleave."+B,function(){(t.wrappers.cursor.$2d.length||t.wrappers.cursor.$3d.length)&&t.reset()}),M.on("scroll.parallax"+B+" touchmove.parallax"+B,function(){(t.wrappers.scroll.$2d.length||t.wrappers.scroll.$3d.length)&&(t.state.paused||t.scroll())}),M.on("resize.parallax"+B,function(){(t.wrappers.auto.$2d.length||t.wrappers.auto.$3d.length||t.wrappers.scroll.$2d.length||t.wrappers.scroll.$3d.length||t.wrappers.cursor.$2d.length||t.wrappers.cursor.$3d.length)&&t.calculateTransformProperties()}),t.defaults.scrollModifier*=J.o.parallaxScrollReverse?-1:1},addLayer:function(e,t,i,s){switch(this.state.enabled||(J.functions.setStates(this,{enabled:!0}),this.init()),ie.extend(!0,t,this.defaultProperties,J.slides[s].parallax,i.parallax),i.transformPerspective.parallax?t.transformPerspective=i.transformPerspective.parallax:i.transformPerspective.parallax=t.transformPerspective,t.event.match(/(cursor|scroll|auto)/)||(t.event="cursor"),t.path.match(/(circle|oval-h|oval-v|infinity|linear-h|linear-v)/)||(t.path="circle"),t.direction.match(/(clockwise|counterclockwise)/)||(t.direction="clockwise"),t.type.match(/(2d,3d)/)&&(t.type="2d"),(i.parallax=t).axis){case"none":t.x=!1,t.y=!1;break;case"x":t.y=!1;break;case"y":t.x=!1}this.wrappers[t.event]["$"+t.type]=this.wrappers[t.event]["$"+t.type].add(e)},addShadow:function(){var e,t,i,s=J.gui.shadow.$element,a=(J.slides.current&&J.slides.current.parallax?J.slides.current:J.slides.next).index;J.slides[a].data.$background&&J.slides[a].data.$background.data(J.defaults.init.dataKey).parallax.enabled&&J.slides[a].data.overflow&&"hidden"!==J.slides[a].data.overflow&&(e="50% -"+.25*J.slider.height+"px 0",i=void 0!==(t=J.slides[a].data.$background.data(J.defaults.init.dataKey).parallax).rotation?2*t.rotation:void 0!==J.slides[a].parallax.rotation?2*J.slides[a].parallax.rotation:2*this.defaultProperties.rotation,s.data(J.defaults.init.dataKey,{parallax:ie.extend(!0,{},this.defaultProperties,J.slides[a].parallax,{level:t.level,transformOrigin:e,rotation:i})}),s.attr("data-ls-parallax","active"),ee.TweenMax.set(s[0],{transformOrigin:e,transformPerspective:s.data(J.defaults.init.dataKey).parallax.transformPerspective*J.resize.ratio}),"3d"===J.slides[a].parallax.type||"3d"===t.type?this.wrappers.cursor.$3d=this.wrappers.cursor.$3d.add(s):this.wrappers.cursor.$2d=this.wrappers.cursor.$2d.add(s)),this.shadowIsChecked=!0},removeShadow:function(){var e=J.gui.shadow.$element;this.wrappers.cursor.$2d=this.wrappers.cursor.$2d.not(e),this.wrappers.cursor.$3d=this.wrappers.cursor.$3d.not(e),e.attr("data-ls-parallax","disabled"),this.shadowIsChecked=!1},calculateTransformProperties:function(){ie().add(this.wrappers.cursor.$2d).add(this.wrappers.cursor.$3d).add(this.wrappers.scroll.$2d).add(this.wrappers.scroll.$3d).add(this.wrappers.auto.$2d).add(this.wrappers.auto.$3d).each(function(){var e=ie(this),t=e.data(J.defaults.init.dataKey).parallax,i=e.find(".ls-layer"),s=i.data(J.defaults.init.dataKey);ee.TweenMax.set(ie(this)[0],{transformOrigin:J.functions.convert.transformOrigin(t.transformOrigin,i.data(J.defaults.init.dataKey).elements.$wrapper,s,e),transformPerspective:t.transformPerspective*s.settings.calculatedratio})}),this.transformPropertiesCalculated=!0},trigger:function(){M.trigger("scroll.parallax"+B),M.trigger("touchmove.parallax"+B)},auto:function(){this.transformPropertiesCalculated||this.calculateTransformProperties()},scroll:function(){var e=(("top"===this.defaults.centerLayers?te.scroll.top:te.scroll.top+(te.viewport.height-J.slider.height)/2)-J.slider.offset.top)*J.resize.ratio*this.defaults.scrollModifier;J.slider.state.inFullscreen&&(e=0),this.transformPropertiesCalculated||this.calculateTransformProperties(),this.animate2D(0,e,"scroll"),this.animate3D(0,e,"scroll")},mouseMove:function(e){var t,i;this.transformPropertiesCalculated?(J.slider.state.animatingSlides||this.shadowIsChecked||!J.gui.shadow.$element||this.addShadow(),t=J.slider.offset.left+J.slider.width/2,i=J.slider.offset.top+J.slider.height/2,t=e.pageX-t,i=e.pageY-i,this.animate2D(t,i,"cursor"),this.animate3D(t,i,"cursor")):this.calculateTransformProperties()},animate2D:function(a,r,e){this.wrappers[e].$2d.each(function(){var e,t,i,s=ie(this);"active"===s.attr("data-ls-parallax")&&(t=(e=s.data(J.defaults.init.dataKey).parallax).x?-a*(e.distance/2e3)*parseInt(e.level):0,i=e.y?-r*(e.distance/2e3)*parseInt(e.level):0,ee.TweenMax.to(s[0],e.durationMove,{x:t,y:i}))})},animate3D:function(o,n,e){this.wrappers[e].$3d.each(function(){var e,t,i,s,a,r=ie(this);"active"===r.attr("data-ls-parallax")&&(s=(e=r.data(J.defaults.init.dataKey).parallax).x?(i=-o/(4e3/e.rotation),-o*(e.distance/2e3)*parseInt(e.level)):i=0,a=e.y?(t=n/(4e3/e.rotation),-n*(e.distance/2e3)*parseInt(e.level)):t=0,ee.TweenMax.to(r[0],e.durationMove,{rotationX:t,rotationY:i,x:s,y:a}))})},reset:function(){ie().add(this.wrappers.cursor.$2d).add(this.wrappers.cursor.$3d).each(function(){var e=ie(this);e.find(".ls-layer[data-ls-hidden]").length&&ee.TweenMax.set(e[0],{x:0,y:0,rotationX:0,rotationY:0})}),J.gui.shadow.$element&&this.removeShadow(),this.transformPropertiesCalculated=!1}},scroll:{defaultProperties:{shouldBeConverted:{transformOrigin:"50% 50% 0"},transformPerspective:500,duration:.5,ease:"easeOutQuart"},defaults:{centerLayers:"center"},state:{enabled:!1},$wrappers:ie(),init:function(){var e=this;M.on("scroll.scroll"+B+" touchmove.scroll"+B,function(){e.$wrappers.length&&e.scroll()}),M.on("resize.scroll"+B,function(){e.$wrappers.length&&e.calculateTransformProperties()})},addLayer:function(e,t,i,s){this.state.enabled||(J.functions.setStates(this,{enabled:!0}),this.init()),ie.extend(!0,t,this.defaultProperties,i.scroll),i.transformPerspective.scroll?t.transformPerspective=i.transformPerspective.scroll:i.transformPerspective.scroll=t.transformPerspective,i.settings.skipViewport&&(t.skipViewport=!0),t.shouldBeConverted.transformOriginAlt||(t.shouldBeConverted.transformOriginAlt=t.shouldBeConverted.transformOrigin),t.ease=J.functions.convert.easing(t.ease),t.easeRev=J.functions.convert.easing(t.easeRev||t.ease),t.durationRev=t.durationRev||t.duration,i.scroll=t,this.$wrappers=this.$wrappers.add(e)},getCenter:function(e,t){var i="project";switch(((J.slider.isScrollScene||J.slider.isSticky)&&"scene"===t||"document"===t)&&(i=t),e){case"top":switch(i){case"scene":e=J.slider.wrapperPosition.top-(te.viewport.height-J.slider.height)/2;break;case"document":default:e=te.scroll.top}break;case"center":switch(i){case"scene":e=J.slider.wrapperPosition.middleForScrollTransition;break;case"document":e=te.scroll.top;break;default:e=te.scroll.top+(te.viewport.height-J.slider.height)/2}break;case"bottom":switch(i){case"scene":e=J.slider.wrapperPosition.top+J.slider.wrapperOffset.height-te.viewport.height+(te.viewport.height-J.slider.height)/2;break;case"document":e=te.scroll.top;break;default:e=te.scroll.top+te.viewport.height-J.slider.height}}return e},setCenter:function(e,t){return"project"!==e.getPosition||e.center&&this.defaults.centerLayers!==e.center?this.getCenter(e.center||this.defaults.centerLayers,e.getPosition):t},setY:function(e,t){return(J.slider.isScrollScene||J.slider.isSticky)&&"scene"===e.getPosition?-t:"document"===e.getPosition?t:J.slider.state.inFullscreen?0:t-J.slider.offset.top},scroll:function(o){var n=this,l=this.getCenter(this.defaults.centerLayers);this.transformPropertiesCalculated||this.calculateTransformProperties(),this.$wrappers.each(function(){var e,t,i,s=ie(this),a=s.find(".ls-scroll-transform"),r=s.data(J.defaults.init.dataKey).scroll;(-1!==J.slider.position.toViewportYForSkipViewportLayers.indexOf("inside")&&r.skipViewport||!n.state.paused)&&(i=n.setCenter(r,l),t={overwrite:"all",c:e=n.setY(r,i),ease:"down"===te.scroll.direction?r.ease:r.easeRev,onUpdate:function(e,t){e=e.target.style.c<=0?"+":"-";r.layerPositionToCenter!==e&&n.setTransformProperties(ie(t),r,e),r.layerPositionToCenter=e},onUpdateParams:["{self}",this,r]},i={overwrite:"all",ease:"down"===te.scroll.direction?r.ease:r.easeRev},r.x&&(i.x=n.calculateTransformations(-e*r.x/20,"x",r,-e)),r.y&&(i.y=n.calculateTransformations(-e*r.y/20,"y",r,-e)),r.rotation&&(i.rotation=n.calculateTransformations(e*r.rotation/40,"rotation",r,-e)),r.rotationX&&(i.rotationX=n.calculateTransformations(e*r.rotationX/40,"rotationX",r,-e)),r.rotationY&&(i.rotationY=n.calculateTransformations(e*r.rotationY/40,"rotationY",r,-e)),r.skewX&&(i.skewX=n.calculateTransformations(-e*r.skewX/40,"skewX",r,-e)),r.skewY&&(i.skewY=n.calculateTransformations(-e*r.skewY/40,"skewY",r,-e)),r.scaleX&&(i.scaleX=n.calculateTransformations(1-e*r.scaleX/-4e3,"scaleX",r,e)),r.scaleY&&(i.scaleY=n.calculateTransformations(1-e*r.scaleY/-4e3,"scaleY",r,e)),r.opacity&&(i.opacity=n.calculateTransformations(1-e*(r.opacityyoyo?Math.abs(r.opacity):r.opacity)/1e3,"opacity",r,e)),e="down"===te.scroll.direction?r.duration:r.durationRev,o||0==e?(ee.TweenMax.set(s[0],t),ee.TweenMax.set(a[0],i)):(ee.TweenMax.to(s[0],e,t),ee.TweenMax.to(a[0],e,i)))})},calculateTransformations:function(e,t,i,s){if(i[t+"yoyo"])switch(t){case"scaleX":case"scaleY":s<0&&(e=1-(e-1));break;case"opacity":s<1&&(e=1-(e-1));break;default:s<1&&(e=-e)}return"opacity"==t&&i.opacityinvert&&(e=1-e),void 0!==i[t+"min"]&&e<i[t+"min"]&&(e=i[t+"min"]),void 0!==i[t+"max"]&&e>i[t+"max"]&&(e=i[t+"max"]),("x"===t&&i.xresponsive||"y"===t&&i.yresponsive)&&(e*=J.resize.ratio),e},calculateTransformProperties:function(){var s=this;this.$wrappers.each(function(){var e=ie(this),t=e.data(J.defaults.init.dataKey).scroll,i=(e.find(".ls-layer").data(J.defaults.init.dataKey),s.setCenter(t,s.getCenter(s.defaults.centerLayers))),i=s.setY(t,i)<=0?"+":"-";s.setTransformProperties(e,t,i)}),this.transformPropertiesCalculated=!0},setTransformProperties:function(e,t,i){var s=e.find(".ls-layer"),a=s.data(J.defaults.init.dataKey);ee.TweenMax.set(e.find(".ls-scroll-transform")[0],{transformOrigin:J.functions.convert.transformOrigin("+"===i?t.shouldBeConverted.transformOrigin:t.shouldBeConverted.transformOriginAlt,e,a,s),transformPerspective:t.transformPerspective*a.settings.calculatedratio})},trigger:function(){this.scroll(!0)},reset:function(){this.transformPropertiesCalculated=!1}},filters:{createTransition:function(e,t,i,s){var a,r=new J.defaults.layer.properties.filter,o={};for(a in r)switch(t){case"in":o[a]=[r[a],r[a]],o[a][0]=(i.hasOwnProperty(a)?i:s.hasOwnProperty(a)?s:r)[a],o[a][1]=(s.hasOwnProperty(a)?s:r)[a],e.filter.values.afterIn[a]=o[a][1];break;case"hover":case"loop":case"out":o[a]=[],o[a][0]=(i.hasOwnProperty(a)?i:r)[a],o[a][1]=(s.hasOwnProperty(a)?s:i.hasOwnProperty(a)&&i[a]!==r[a]?i:r)[a],"loop"===t&&!0!==e.loop.yoyo&&-1!==e.loop.count&&(e.filter.values.afterLoop[a]=o[a][1]);break;case"bg":o[a]=[r[a],r[a]],i.hasOwnProperty(a)&&(o[a][0]=i[a]),s.hasOwnProperty(a)&&(o[a][1]=s[a])}return o},convert:function(e){for(var t,i,s={},a=/(blur|brightness|contrast|grayscale|hue-rotate|invert|saturate|sepia)/i,r=0,o=(e=e.split(" ")).length;r<o;r++)(t=(i=e[r].split("("))[0]).match(a)&&(i=parseInt(i[1]),s[t]=i);return s},animate:function(e,t){var i=100*e.target[0].p;if("object"==typeof t){var s,a="";for(s in t)if("object"==typeof t[s]&&2===t[s].length)switch(s){case"blur":a+=" blur( "+(t[s][0]<t[s][1]?t[s][0]+Math.abs(t[s][0]-t[s][1])/100*i:t[s][0]-Math.abs(t[s][0]-t[s][1])/100*i)+"px )";break;case"hue-rotate":a+=" hue-rotate( "+(t[s][0]<t[s][1]?t[s][0]+Math.abs(t[s][0]-t[s][1])/100*i:t[s][0]-Math.abs(t[s][0]-t[s][1])/100*i)+"deg )";break;default:a+=" "+s+"( "+(t[s][0]<t[s][1]?t[s][0]+Math.abs(t[s][0]-t[s][1])/100*i:t[s][0]-Math.abs(t[s][0]-t[s][1])/100*i)+"% )"}ee.TweenMax.set(e.target,{"-webkit-filter":a,filter:a})}}},splitType:{setNodesSequence:function(e,o){function t(e,t){if("desc"==t)e=o.slice(0).reverse();else if("rand"==t)e=o.slice(0).sort(function(){return.5-Math.random()});else if("center"==t){var i,s=Math.floor(o.length/2);for(e=[o[s]],i=1;i<=s;i++)e.push(o[s-i],o[s+i]);e.length=o.length}else if("edge"==t){var a,r=Math.floor(o.length/2);for(e=[o[0]],a=1;a<=r;a++)e.push(o[o.length-a],o[a]);e.length=o.length}return e||o}var i=t(o,e[1]),e={asc:"desc",desc:"asc"}[e[1]]||e[1];return[i,t(o,e)]},resetNodes:function(e,t){ie(".char, .word, .line",e).add(t.elements.$wrapper).css({transform:"none",opacity:1}).each(function(){delete this._gsTransform})},setRandomProperties:function(e,t,i,s){for(var a in t){for(var r=[],o=0,n=e["text"+s].nodes.length;o<n;o++)r[o]=J.functions.convert.randomProperties(t[a],a);delete i[a],i.cycle[a]=r}t=null}}},media:{defaults:{delay:500,fadeIn:500,fadeOut:750},changeBackgroundVideo:function(e,t){var i,s,a,r;J.slides.current.index&&J.slides.current.data.$backgroundVideo.length&&(r=(i=J.slides.current.data.$backgroundVideo).data(J.defaults.init.dataKey).elements.$bgWrapper,t&&(i.data(J.defaults.init.dataKey).mediaProperties.willBePaused=!0,r.fadeOut(J.transitions.media.defaults.fadeOut,function(){i.trigger("stopBackgroundVideo"),i.data(J.defaults.init.dataKey).mediaProperties.willBePaused=!1}))),J.slides.next.data.$backgroundVideo.length&&(a=(s=J.slides.next.data.$backgroundVideo).data(J.defaults.init.dataKey).elements.$bgWrapper,r=s.data(J.defaults.init.dataKey).elements.$bgOuterWrapper,te.isMobile&&($.hasClass("ls-device-is-phone")&&r.hasClass("ls-hide-on-phone")||$.hasClass("ls-device-is-tablet")&&r.hasClass("ls-hide-on-tablet"))||setTimeout(function(){s.trigger("playBackgroundVideo")},e?50:0),e||t?a.fadeIn(J.transitions.media.defaults.fadeOut):a.css({display:"block"}),s.data(J.defaults.init.dataKey).mediaProperties.isPreloaded=!0)}},timers:{defaults:{fadeInDuration:.35,reverseDuration:.3},create:function(e){this.curNext=e||"next",this.reset(),J.gui.timers.bar.$element&&this.bar.createTransition(),J.gui.timers.circle.$element&&this.circle.createTransition(),J.gui.timers.slidebar.$element&&this.slidebar.createTransition()},reverse:function(){var e;J.slides.current&&J.slides.current.data&&J.transitions._slideTimeline&&(e=J.transitions._slideTimeline.progress(),e=J.slides.current.data.duration*e/this.defaults.reverseDuration,J.gui.timers.bar.$element&&this.bar._transition&&(J.transitions._slideTimeline.remove(J.transitions.timers.bar._transition),this.bar._transition.reverse().timeScale(e)),J.gui.timers.circle.$element&&this.circle._transition&&(J.transitions._slideTimeline.remove(J.transitions.timers.circle._transition),this.circle._transition.reverse().timeScale(e)),J.gui.timers.slidebar.$element&&this.slidebar._transition&&(J.transitions._slideTimeline.remove(J.transitions.timers.slidebar._transition),this.slidebar._transition.reverse().timeScale(e)))},reset:function(){J.gui.timers.bar.$element&&this.bar._transition&&this.bar.reset(),J.gui.timers.circle.$element&&this.circle._transition&&this.circle.reset(),J.gui.timers.slidebar.$element&&this.slidebar._transition&&this.slidebar.reset()},bar:{reset:function(){this._transition&&(this._transition.kill(),this._transition=!1)},createTransition:function(){this._transition=ee.TweenMax.fromTo(J.gui.timers.bar.$element[0],J.slides[J.transitions.curNext].data.duration,{autoCSS:!1,paused:!0,css:{width:0}},{autoCSS:!1,css:{},ease:ee.Linear.easeNone,onReverseComplete:function(){J.transitions.timers.bar._transition=!1},onComplete:function(e){e.target.style.width="100%",e.target.style.width="calc( 100% - "+J.slider.initial.skinWidth+"px )"},onCompleteParams:["{self}"],onUpdate:function(e){e.target.style.width=Math.min(J.slider.width,J.slider.width*e.progress())+"px"},onUpdateParams:["{self}"]})}},circle:{reset:function(){this._transition&&(J.gui.timers.circle.$element.stop(!0,!0),this._transition.kill(),this._transition=!1)},createTransition:function(){var e=J.gui.timers.circle.$element.find(".ls-ct-right .ls-ct-rotate")[0],t=J.gui.timers.circle.$element.find(".ls-ct-left .ls-ct-rotate")[0],i=J.slides[J.transitions.curNext].data.duration;this._transition=new ee.TimelineMax({paused:!0}).fromTo(J.gui.timers.circle.$element[0],J.transitions.timers.defaults.fadeInDuration,{autoCSS:!1,immediateRender:!0,css:{opacity:0,display:"block"}},{autoCSS:!1,css:{opacity:J.gui.timers.circle.$element.data("original").opacity}}).fromTo(e,i/2,{autoCSS:!1,css:{rotation:0}},{autoCSS:!1,css:{rotation:180},ease:ee.Linear.easeNone},0).fromTo(t,i/2,{autoCSS:!1,css:{rotation:0}},{autoCSS:!1,css:{rotation:180},ease:ee.Linear.easeNone},i/2)}},slidebar:{reset:function(){this._transition&&(this._transition.kill(),this._transition=!1)},createTransition:function(){var i=this;i._transition=new ee.TimelineMax({paused:!0,onReverseComplete:function(){J.transitions.timers.slidebar._transition=!1}}),ie.each(J.gui.timers.slidebar.$sliderContainerElement,function(t,e){i._transition.add(ee.TweenMax.fromTo(J.gui.timers.slidebar.$sliderContainerElement[t][0],J.slides[J.transitions.curNext].data.duration,{autoCSS:!1,css:{left:0}},{autoCSS:!1,css:{},ease:ee.Linear.easeNone,onComplete:function(e){e.target.style.left="calc( 100% - "+J.gui.timers.slidebar.sliderContainerElementWidth[t]+"px )"},onCompleteParams:["{self}"],onUpdate:function(e){e.target.style.left=(J.gui.timers.slidebar.containerElementWidth[t]-J.gui.timers.slidebar.sliderContainerElementWidth[t])*e.progress()+"px"},onUpdateParams:["{self}"]}),0),i._transition.add(ee.TweenMax.fromTo(J.gui.timers.slidebar.$progressBarElement[t][0],J.slides[J.transitions.curNext].data.duration,{autoCSS:!1,css:{width:0}},{autoCSS:!1,css:{},ease:ee.Linear.easeNone,onComplete:function(e){e.target.style.width="100%"},onCompleteParams:["{self}"],onUpdate:function(e){e.target.style.width=J.gui.timers.slidebar.elementWidth[t]*e.progress()+"px"},onUpdateParams:["{self}"]}),0)})}}},scrollscene:{animate:function(e){var t,i;J.transitions._slideTimeline&&(t=J.slider.wrapperOffset.height-J.slider.height,i=te.scroll.top+this.stickLimit-J.slider.wrapperOffset.top,e=Math.max(1e-4,J.o.sceneDuration/t*i),t=ee.Quart.easeOut,i=this.initialized&&!this.immediateRender?J.o.smoothScrollDuration/1e3:0,J.transitions._slideTimeline.tweenTo(e,{ease:t}).duration(i),this.initialized=!0,this.immediateRender=!1)}}},J.plugins={load:function(){var e,s;J.o.plugins&&0!==J.o.plugins.length?(e=J.o.plugins[0],s="object"==typeof e?e.namespace:e,window._layerSlider.plugins[s]?(J.plugins.init(s,e,!0),J.plugins.load()):J.browser.usesFileProtocol||"object"!=typeof e?(J.browser.usesFileProtocol?window.console&&(console.error(J.defaults.slider.errorText,"Cannot load plugins on file:// protocol."),console.info("Please include the plugin files manually.")):window.console&&(console.error(J.defaults.slider.errorText,"Plugin files are missing!"),console.info('Plugin "'+s+'" has been added in slider init options, but the source files are not found on page.')),J.o.plugins.splice(0,1),J.plugins.load()):-1===window._layerSlider.pluginsBeingLoaded.indexOf(s)?-1===window._layerSlider.pluginsLoaded.indexOf(s)&&-1===window._layerSlider.pluginsNotLoaded.indexOf(s)?(window._layerSlider.pluginsBeingLoaded.push(s),ie.ajax({url:-1===e.js.indexOf("http://")&&-1===e.js.indexOf("https://")?(window._layerSlider.pluginsPath||window._layerSlider.scriptPath+"/../plugins/")+e.js:e.js,dataType:"script",success:function(){J.plugins.init(e.namespace,e,!0),window._layerSlider.pluginsLoaded.push(s)},error:function(e,t,i){window.console&&(console.error(J.defaults.slider.errorText,s,"plugin has not been loaded!"),console.error("Additional error info:",i)),window._layerSlider.pluginsNotLoaded.push(s)},complete:function(){window._layerSlider.pluginsBeingLoaded.splice(window._layerSlider.pluginsBeingLoaded.indexOf(s),1),J.plugins.load()}})):(J[s]||-1!==window._layerSlider.pluginsNotLoaded.indexOf(s)?J.o.plugins.splice(0,1):J.plugins.init(s,e),J.plugins.load()):J.plugins.checkLoaded(s)):J.slider.check.initialized()},init:function(e,t,i){J.initializedPlugins[e]=new window._layerSlider.plugins[e](J,$,B,t.settings),window._layerSlider.checkVersions(J.initializedPlugins[e].pluginData.requiredLSVersion,J.plugin.version)?(t.css&&i&&ie('<link rel="stylesheet" href="'+(-1===t.css.indexOf("http://")&&-1===t.css.indexOf("https://")?(window._layerSlider.pluginsPath||window._layerSlider.scriptPath+"/../plugins/")+t.css:t.css)+'">').appendTo("head"),J.initializedPlugins[e].init&&J.initializedPlugins[e].init()):window.console&&console.error(J.defaults.slider.errorText,e,"plugin has not been loaded! Required LayerSlider version:",J.initializedPlugins[e].pluginData.requiredLSVersion,"(you have:",J.plugin.version+")"),J.o.plugins.splice(0,1)},checkLoaded:function(e){J.intervals.pluginLoaded=setInterval(function(){-1===window._layerSlider.pluginsLoaded.indexOf(e)&&-1===window._layerSlider.pluginsNotLoaded.indexOf(e)||-1!==window._layerSlider.pluginsBeingLoaded.indexOf(e)||(clearInterval(J.intervals.pluginLoaded),delete J.intervals.pluginLoaded,J.plugins.load())},100)}},J.performance={},J.slider={shouldResize:!0,thumbnails:[],state:{isHidden:!1,isPaused:!1,preloadingImages:!1,changingSlides:!1,animatingSlides:!1},offset:{},position:{},isBusy:function(){return this.state.preloadingImages||this.state.changingSlides||this.state.animatingSlides},load:function(){if(!document.body.contains(I))return!1;J.api.hasEvent("sliderWillLoad")&&J.api.triggerEvent("sliderWillLoad"),J.slider.set.global()},set:{global:function(){var e;J.originalMarkup=$[0].outerHTML,J.userInitOptions=J.functions.convert.properties(J.functions.convert.oldProperties(i)),J.meta={},J.o=ie.extend(!0,{},J.defaults.init.options,J.userInitOptions),J.o.forceLayersOutDuration/=1e3,J.o.forceLayersOutDuration=0<J.o.forceLayersOutDuration?J.o.forceLayersOutDuration:.75,J.o.sliderFadeInDuration/=1e3,window.console&&!0!==J.o.hideWelcomeMessage&&!0!==window._layerSlider.hideWelcomeMessage&&(window._layerSlider.hideWelcomeMessage=!0,t=window.console.info?"info":"log",e=window.LS_Meta&&window.LS_Meta.v?" | WP Plugin: "+window.LS_Meta.v:"",console[t]("LayerSlider initialized | core: "+J.plugin.version+"-"+J.plugin.release+e),console[t]("Find updates and docs @ https://layerslider.com/"));var t={namespace:"debug",js:"debug/layerslider.debug.js",css:"debug/layerslider.debug.css"};-1!==document.location.hash.indexOf("debug")&&window.console&&(-1!==document.location.hash.indexOf("url=")&&(window._layerSlider.pluginsPath=document.location.hash.split("url=")[1].split("&")[0],t.js=window._layerSlider.pluginsPath+"debug/layerslider.debug.js",t.css=window._layerSlider.pluginsPath+"debug/layerslider.debug.css"),"object"==typeof J.o.plugins?J.o.plugins.push(t):J.o.plugins=[t]),(window._layerSlider.currentScript||window._layerSlider.lsScript)&&(window._layerSlider.scriptPath=(window._layerSlider.currentScript||window._layerSlider.lsScript).src.replace(/\\/g,"/").replace(/\/[^\/]*$/,"")),J.o.silentMode&&(J.slider.$silentWrapper=ie("<ls-silent-wrapper></ls-silent-wrapper>"),J.slider.$silentWrapper.append($).prependTo("body")),"string"==typeof J.o.getData&&(J.o.getData=[J.o.getData]),"object"==typeof J.o.plugins?J.plugins.load():J.slider.check.initialized()},styles:function(){var e,t,i,s,a,r,o,n,l,d,c,p,u,h,m,f,g,y,v=J.slider,w=$.parent(),b=I.style,S=window.getComputedStyle(I,null),x=parseInt(I.clientWidth),T=parseInt(I.clientHeight),k=parseInt(w.width()),C=parseInt(w.height()),O=J.o.layersContainerWidth,P=J.o.layersContainerHeight,L=J.o.type.toLowerCase();switch(J.debugMode&&J.debug.add("group","sliderInit.style"),J.o.width?e=-1==J.o.width.indexOf("%")?parseInt(J.o.width):J.o.width:b.width?e=-1==b.width.indexOf("%")?parseInt(b.width):b.width:0<O?(e=O,J.debugMode&&J.debug.add("warn","sliderInit.noWidth",O)):(e=x,J.debugMode&&J.debug.add("warn","sliderInit.noWidth2",x)),i=e,J.o.height?t=-1==J.o.height.indexOf("%")?parseInt(J.o.height):J.o.height:b.height?t=-1==b.height.indexOf("%")?parseInt(b.height):b.height:0<P?(t=P,J.debugMode&&J.debug.add("warn","sliderInit.noHeight",P)):(t=T,J.debugMode&&J.debug.add("warn","sliderInit.noHeight2",C)),s=t,a=""!==b.maxWidth?-1!==b.maxWidth.indexOf("px")?parseInt(b.maxWidth):b.maxWidth:0,void 0===J.userInitOptions.type&&(0<O&&0<P||"100%"===e&&"100%"===t?L="fullsize":O<=0&&P<=0&&(J.o.responsiveUnder<=0||0<J.o.responsiveUnder&&J.o.sliderVersion)?L=void 0!==J.o.responsive&&!1===J.o.responsive?"fixedsize":"responsive":0<J.o.responsiveUnder&&(L="fullwidth")),L){case"fullwidth":-1!==e.indexOf("%")&&(J.debugMode&&J.debug.add("warn","sliderInit.percWidth",[L,e,x]),e=x),O<=0&&(O=e,J.debugMode&&J.debug.add("warn","sliderInit.conWidth",[L,e])),J.o.responsiveUnder<=0&&(J.o.responsiveUnder=O,J.debugMode&&J.debug.add("warn","sliderInit.fullwidth",O)),-1!==t.indexOf("%")&&(o=C/(100/parseInt(t)),J.debugMode&&J.debug.add("warn","sliderInit.fullwidth2",[L,t,o]),t=o),P<=0&&(P=t);break;case"fullsize":-1!==e.indexOf("%")&&(r=0<O?O:k,J.debugMode&&J.debug.add("warn","sliderInit.fullsize",[L,e,r,k,O]),e=r),O<=0&&(O=e,J.debugMode&&J.debug.add("warn","sliderInit.conWidth",[L,e])),-1!==t.indexOf("%")&&(o=0<P?P:M.height()/(100/parseInt(t)),J.debugMode&&J.debug.add("warn","sliderInit.fullsize2",[L,t,o,M.height(),P]),t=o),P<=0&&(P=t,J.debugMode&&J.debug.add("warn","sliderInit.conHeight",[L,t]));break;case"fixedsize":break;default:J.userInitOptions.type=J.o.type=L="responsive",(J.o.responsiveUnder=-1)!==e.indexOf("%")&&(e=x,J.debugMode&&J.debug.add("warn","sliderInit.percWidth",[L,e,x])),-1!==t.indexOf("%")&&(e=T,J.debugMode&&J.debug.add("warn","sliderInit.responsive",[L,t,T])),J.debugMode&&0<O&&J.debug.add("warn","sliderInit.conWidth2",[L,O]),J.debugMode&&0<P&&J.debug.add("warn","sliderInit.conHeight2",[L,P])}$.addClass("ls-container ls-"+L),$.parent().addClass("ls-direction-fix"),J.userInitOptions.slideBGSize||"responsive"!==L||!J.userInitOptions.hasOwnProperty("sliderVersion")||J.userInitOptions.sliderVersion||(J.o.slideBGSize="auto",J.debugMode&&J.debug.add("warn","sliderInit.bgCover",L)),J.o.slideBGSize=J.o.slideBGSize.replace("100% 100%","stretch"),n=0<O?O:e,l=0<P?P:t,(d="auto"===(y=I.style.marginLeft)?"auto":""===y?parseInt(S.getPropertyValue("margin-left")):parseInt(I.style.marginLeft))===(c="auto"===(g=I.style.marginRight)?"auto":""===g?parseInt(S.getPropertyValue("margin-right")):parseInt(I.style.marginRight))&&(""===y&&""===g&&(p=d,c=d="auto"),$.css({marginLeft:"auto",marginRight:"auto"})),u=""!==b.paddingLeft?parseInt(b.paddingLeft):parseInt($.css("padding-left")),m=""!==b.paddingRight?parseInt(b.paddingRight):parseInt($.css("padding-right")),h=""!==b.paddingTop?parseInt(b.paddingTop):parseInt($.css("padding-top")),f=""!==b.paddingBottom?parseInt(b.paddingBottom):parseInt($.css("padding-bottom")),w=""!==b.borderLeftWidth?parseInt(b.borderLeftWidth):parseInt($.css("border-left-width")),y=""!==b.borderRightWidth?parseInt(b.borderRightWidth):parseInt($.css("border-right-width")),g=""!==b.borderTopWidth?parseInt(b.borderTopWidth):parseInt($.css("border-top-width")),b=""!==b.borderBottomWidth?parseInt(b.borderBottomWidth):parseInt($.css("border-bottom-width")),v.initial={type:L,width:e,height:t,originalWidth:i,originalHeight:s,percW:e/100,percH:t/100,layersWidth:O,layersHeight:P,ratio:n/l,maxWidth:a,marginLeft:d,marginRight:c,marginTop:J.o.marginTop,marginBottom:J.o.marginBottom,paddingLeft:u,paddingTop:h,paddingRight:m,paddingBottom:f,borderLeftWidth:w,borderTopWidth:g,borderRightWidth:y,borderBottomWidth:b,skinWidth:u+m+w+y,skinHeight:h+f+g+b},J.debugMode&&(J.debug.add("log","sliderInit.style",[e,t,i,s,O,P,parseInt(n/l*100)/100,0<a?a:void 0,[d,c]]),p&&J.debug.add("warn","sliderInit.margin",p)),ie("html").attr("id")?ie("body").attr("id")||ie("body").attr("id","ls-global"):ie("html").attr("id","ls-global"),"static"!==S.getPropertyValue("position")&&"absolute"!==S.getPropertyValue("position")&&(I.style.position="relative"),J.o.insertSelector&&$[J.o.insertMethod](J.o.insertSelector),J.slider.$hiddenWrapper=ie('<div class="ls-wp-container fitvidsignore ls-hidden" data-layerslider-uid="'+B+'"></div>').addClass($.attr("class")).prependTo("body"),J.slider.$innerWrapper=ie('<div class="ls-inner"></div>'),J.slider.$slideBGColorWrapper=ie('<div class="ls-slide-bgcolor"></div>').appendTo(J.slider.$innerWrapper),J.slider.$layersWrapper=ie('<div class="ls-layers"></div>').appendTo(J.slider.$innerWrapper),J.slider.$bgVideosWrapper=ie('<div class="ls-background-videos"></div>').appendTo(J.slider.$layersWrapper),J.slider.$slideBGWrapper=ie('<div class="ls-slide-backgrounds"></div>').appendTo(J.slider.$layersWrapper),J.slider.$innerWrapper.appendTo($),!0===J.o.hideOnMobile&&te.isMobile?($.addClass("ls-forcehide"),$.closest(".ls-wp-fullwidth-container").addClass("ls-forcehide"),J.o.autoStart=!1):J.slider.check.showHide();S=!1;if(-1==J.o.globalBGColor.indexOf("gradient")?J.slider.$innerWrapper.css({backgroundColor:J.o.globalBGColor}):(S=J.o.globalBGColor,J.o.globalBGColor="transparent"),J.o.globalBGImage?J.slider.$innerWrapper.css({backgroundImage:"url( "+J.o.globalBGImage+" )"+(S?", "+S:""),backgroundRepeat:J.o.globalBGRepeat,backgroundAttachment:J.o.globalBGAttachment,backgroundSize:J.o.globalBGSize,backgroundPosition:J.o.globalBGPosition}):S&&J.slider.$innerWrapper.css({backgroundImage:S}),"transparent"!=J.o.globalBGColor||!1!==J.o.globalBGImage||S||J.slider.$innerWrapper.css({background:"none transparent"}),"sticky"===J.o.scene||"scroll"===J.o.scene){if(J.o.scene)switch(J.slider.isScene=!0,J.o.scene){case"scroll":J.slider.isScrollScene=!0;case"sticky":J.slider.isSticky=!0}$.parent().is("ls-scene-wrapper")?$.parent().attr("data-scene",J.o.scene).attr("data-layerslider-uid",B):$.wrap('<ls-scene-wrapper data-scene="'+J.o.scene+'" data-layerslider-uid="'+B+'"></ls-scene-wrapper>'),J.slider.$spacingWrapper=ie('ls-scene-wrapper[data-layerslider-uid="'+B+'"]').css("max-width",$.css("max-width")),$.attr("data-scene",J.o.scene)}else J.slider.$spacingWrapper=$;(J.o.preventSliderClip&&J.o.fitScreenWidth&&("fullwidth"===L||"fullsize"===L&&"fitheight"!==J.o.fullSizeMode)||J.slider.isScrollScene||J.slider.isSticky)&&$.parents(":not(body, html)").each(function(){ie(this).addClass("ls-overflow-visible")})},options:function(){var t,i,s,a,r,e;ie("html").find('meta[content*="WordPress"]').length&&(J.meta.wpVersion=ie("html").find('meta[content*="WordPress"]').attr("content").split("WordPress")[1]),window.LS_Meta&&window.LS_Meta.v?J.meta.lswpVersion=window.LS_Meta.v:ie("html").find('script[src*="layerslider"]').length&&-1!=ie("html").find('script[src*="layerslider"]').attr("src").indexOf("?")&&(J.meta.lswpVersion=ie("html").find('script[src*="layerslider"]').attr("src").split("?")[1].split("=")[1]),"undefined"!=typeof layerSliderTransitions&&(J.t=ie.extend({},layerSliderTransitions)),"undefined"!=typeof layerSliderCustomTransitions&&(J.ct=ie.extend({},layerSliderCustomTransitions)),J.debugMode&&("undefined"!=typeof layerCustomSliderTransitions?(J.debug.add("log","sliderInit.customTransitions",!1),"undefined"==typeof layerSliderTransitions&&J.debug.add("warn","sliderInit.slideTransitions")):"undefined"==typeof layerSliderTransitions&&J.debug.add("warn","sliderInit.noSlideTransitions")),"number"==typeof J.o.parallaxCenterDegree&&(J.transitions.layers.parallax.defaults.centerDegree=J.o.parallaxCenterDegree),"number"==typeof J.o.parallaxSensitivity&&(J.transitions.layers.parallax.defaults.sensitive=J.o.parallaxSensitivity),J.o.parallaxCenterLayers&&(J.transitions.layers.parallax.defaults.centerLayers=J.o.parallaxCenterLayers),J.o.scrollCenterLayers&&(J.transitions.layers.scroll.defaults.centerLayers=J.o.scrollCenterLayers),J.slider.isSticky&&(ie.extend(J.o,{allowFullscreen:!1,playByScroll:!1}),J.slider.isScrollScene&&ie.extend(J.o,{autoPauseSlideshow:!1,autoStart:!1,pauseLayers:!1,pauseOnHover:!1,startInViewport:!1})),J.o.playByScroll&&ie.extend(J.o,{cycles:-1,startInViewport:!0,pauseOnHover:!1,autoStart:!1}),te.isMobile&&(J.o.pauseOnHover=!1),J.o.startInViewport&&(J.slider.state.waitForGettingInViewport=!0,J.o.playByScroll&&(J.slider.positionToViewport=te.scroll.top>J.slider.offset.top-(te.viewport.height-J.slider.height)/2?"under":"over",t=!0,i=4*J.o.playByScrollSpeed,J.device.scroll.timeout=250,J.transitions.layers.timeline.timeScaleModifier=0,ie(document).on("wheel."+B+" touchmove."+B,function(e){te.isMobile?(s=e.originalEvent.touches[0].clientY,a<s?J.device.scroll.direction="up":s<a&&(J.device.scroll.direction="down"),r=a-s,a=s):(0<e.originalEvent.deltaY?J.device.scroll.direction="down":J.device.scroll.direction="up",r=e.originalEvent.deltaY),0!==Math.abs(r)&&(J.device.scroll.lastDirection?J.device.scroll.lastDirection!==J.device.scroll.direction&&(J.device.scroll.lastDirection=J.device.scroll.direction,J.transitions.layers.timeline.timeScaleModifier=0):J.device.scroll.lastDirection=J.device.scroll.direction,"inside"===J.slider.positionToViewport&&(J.resize.viewport(),0<=r?J.transitions.layers.timeline.scrollForward():J.transitions.layers.timeline.scrollBackwards(),t&&(clearTimeout(J.timeouts.scroll),t=!1,J.transitions.layers.timeline.timeScaleModifier=J.transitions.layers.timeline.timeScaleModifier<i?J.transitions.layers.timeline.timeScaleModifier+.25:i,J.timeouts.scroll2=setTimeout(function(){delete J.timeouts.scroll2,t=!0,J.device.scroll.timeout=50<J.device.scroll.timeout?J.device.scroll.timeout-50:50},J.device.scroll.timeout))),J.slider.check.positionToViewport(),J.timeouts.checkPosition=setTimeout(function(){J.slider.check.positionToViewport()},25))}))),J.slider.canShow=!0,te.automaticFontSizeRatio||(e=ie('<ls-dummy style="font-size: 100px; width: 0; height: 0; opacity: 0; position: absolute; overflow: hidden; pointer-events: none;">Lorem</ls-dummy>').appendTo("body"),te.automaticFontSizeRatio=parseFloat(e.css("font-size"))/parseFloat(e[0].style.fontSize)||1,e.remove())},events:function(){M.on("scroll."+B,function(){J.slider.set.offset()}),M.on("touchmove."+B,function(e){e=e.touches||e.originalEvent.touches;1==e.length&&(self.touchX=e[0].clientX)}),M.on("resize."+B,function(){J.slider.check.showHide(),J.transitions.scrollscene.immediateRender=!0,"inside"===J.slider.positionToViewport&&J.o.playByScroll&&J.resize.viewport(),J.slider.shouldResize&&(!te.isMobile||te.isMobile&&te.viewport.width!==te.viewport.lastWidth||J.slider.isPopup)&&J.resize.all(),J.slider.set.offset(),J.slider.isScene&&J.resize.scene(),J.slider.isPopup||(J.timeouts.resize&&clearTimeout(J.timeouts.resize),J.resize.once?J.resize.once=!1:J.timeouts.resize=setTimeout(function(){J.resize.once=!0,M.trigger("resize."+B),J.api.methods("resetScroll")},100))}),J.debugMode&&(M.off(".debug"+B),M.on("resize.debug"+B,function(){J.debug.add("log","resize.window",te.viewport.width,!0)})),M.on("hashchange."+B,function(){document.location.hash&&J.slides.deeplink(document.location.hash)}),J.slider.set.offset(),M.trigger("resize."+B),J.o.refreshWaypoint&&window.Waypoint&&Waypoint.refreshAll()},offset:function(){if("none"!==$.css("display")){var e=I.getBoundingClientRect(),t=J.slider.position.toViewportForPerformance;J.slider.position.toViewport;if(J.slider.get.offset(e),J.slider.get.position(e),0<J.slider.position.left-te.viewport.width?J.slider.position.left-te.viewport.width>J.performance.threshold?J.slider.position.toViewportX="after":J.slider.position.toViewportX="insideLimit":J.slider.position.right<0?J.slider.position.right<-J.performance.threshold?J.slider.position.toViewportX="before":J.slider.position.toViewportX="insideLimit":J.slider.position.toViewportX="inside",0<J.slider.position.top-te.viewport.height?J.slider.position.top-te.viewport.height>J.performance.threshold?J.slider.position.toViewportY="below":J.slider.position.toViewportY="insideLimit":J.slider.position.bottom<0?J.slider.position.bottom<-J.performance.threshold?J.slider.position.toViewportY="above":J.slider.position.toViewportY="insideLimit":J.slider.position.toViewportY="inside",J.slider.position.toViewportYForSkipViewportLayers=J.slider.position.toViewportY,J.slider.state.waitForGettingInViewport&&(J.slider.position.middle<te.viewport.height&&0<J.slider.position.middle?(J.slider.position.toViewportY="inside",J.slider.state.waitForGettingInViewport=!1,J.transitions._slideTimeline&&J.transitions._slideTimeline.play(),J.debugMode&&J.debug.add("log","slideshow.inviewport",!1)):J.slider.position.toViewportY="outside"),-1!==J.slider.position.toViewportX.indexOf("inside")&&"insideLimit"==J.slider.position.toViewportY||-1!==J.slider.position.toViewportY.indexOf("inside")&&"insideLimit"==J.slider.position.toViewportX?(J.slider.position.toViewport="insideLimit",J.slider.position.toViewportForPerformance="inside"):"inside"==J.slider.position.toViewportX&&"inside"==J.slider.position.toViewportY?(J.slider.position.toViewport="inside",J.slider.position.toViewportForPerformance="inside"):(J.slider.position.toViewport="outside",J.slider.position.toViewportForPerformance="outside"),J.o.performanceMode&&t!==J.slider.position.toViewportForPerformance&&("inside"===J.slider.position.toViewportForPerformance?(J.performance.sliderIsInviewport=!0,J.api.methods("resumeSlider","performanceMode")):(J.performance.sliderIsInviewport=!1,J.api.methods("pauseSlider","performanceMode"))),(J.slider.isScrollScene||J.slider.isSticky)&&!J.slider.$spacingWrapper.is("[data-disabled-scene]")){var t=J.slider.$spacingWrapper[0].getBoundingClientRect(),i=(te.viewport.height-J.slider.height)/2,s=0;switch(J.o.stickTo||"center"){case"top":break;case"center":s=i;break;case"bottom":s=2*i}J.transitions.scrollscene.stickLimit=s,J.slider.wrapperPosition={left:t.left,top:t.top,middleForScrollTransition:t.top+t.height/2-te.viewport.height/2},J.slider.wrapperOffset={left:t.left+te.scroll.left,right:t.left+J.slider.width+te.scroll.left,top:t.top+te.scroll.top,bottom:t.bottom+J.slider.height+te.scroll.top,width:t.width,height:t.height},J.slider.state.shouldAnimateScrollSnene=!1,t.top>s?("disabled"!==J.slider.state.sticky||J.slider.isScrollScene&&!J.transitions.scrollscene.initialized)&&(J.slider.state.sticky="disabled",J.slider.state.shouldAnimateScrollSnene=!0):t.bottom-J.slider.height-s<0?("over"!==J.slider.state.sticky||J.slider.isScrollScene&&!J.transitions.scrollscene.initialized)&&(J.slider.state.sticky="over",J.slider.state.shouldAnimateScrollSnene=!0):t.top<=s&&t.bottom>-s&&("enabled"!==J.slider.state.sticky&&(J.slider.state.sticky="enabled"),J.slider.state.shouldAnimateScrollSnene=!0),J.slider.isScrollScene&&J.transitions._slideTimeline&&J.slider.state.shouldAnimateScrollSnene&&J.transitions.scrollscene.animate()}J.slider.state.isNotDisplayed&&(J.slider.state.isNotDisplayed=!1,J.resize.all(),J.slider.check.positionToViewport(),M.trigger("scroll"))}else J.slider.state.isNotDisplayed=!0},attributes:function(){$.attr("data-current-slide",J.slides.current.index)}},get:{offset:function(e){e=e||I.getBoundingClientRect(),J.slider.offset={left:e.left+te.scroll.left,right:e.left+J.slider.width+te.scroll.left,top:e.top+te.scroll.top,bottom:e.bottom+J.slider.height+te.scroll.top}},position:function(e){e=e||I.getBoundingClientRect(),J.slider.position={left:e.left,center:e.left+J.slider.width/2,right:e.right,top:e.top,middle:e.top+J.slider.height/2,bottom:e.bottom}}},check:{initialized:function(){J.debugMode&&J.debug.add("log","sliderInit.info",[J.plugin.version,J.plugin.releaseDate,J.userInitOptions.sliderVersion||"n/a or slider version is pre 6.0.0",$.attr("id"),B,ie.fn.jquery,J.meta.lswpVersion,J.meta.wpVersion],!0),J.slider.initialized||(J.slider.initialized=!0,this.skins())},skins:function(){J.o.skin&&""!==J.o.skin&&J.o.skinsPath&&""!==J.o.skinsPath?J.gui.skin.load():J.slider.init()},showHide:function(){te.isMobile&&!1!==J.o.hideOnMobile||(te.viewport.width<J.o.hideUnder||te.viewport.width>J.o.hideOver&&0<J.o.hideOver?J.slider.hide():J.slider.show())},visibility:function(){!!J.slider.$innerWrapper.width()?J.slider.state.isHidden&&(J.slider.state.isHidden=!1,J.resize.all({forceToGetParentWidth:!0})):J.slider.state.isHidden=!0},positionToViewport:function(){var e;delete J.timeouts.checkPosition,J.o.playByScroll&&J.device.scroll.direction&&(e="down"===J.device.scroll.direction?te.scroll.top:J.slider.offset.top-(te.viewport.height-J.slider.height)/2,(("down"===J.device.scroll.direction?J.slider.offset.top-(te.viewport.height-J.slider.height)/2:te.scroll.top)<e&&("up"===J.device.scroll.direction&&"under"===J.slider.positionToViewport||"down"===J.device.scroll.direction&&"over"===J.slider.positionToViewport)||te.document.height<=te.viewport.height||J.slider.height<te.viewport.height&&("up"===J.device.scroll.direction&&te.scroll.top<=0&&J.slider.offset.top+J.slider.height/2<te.viewport.height/2||"down"===J.device.scroll.direction&&te.scroll.top>=te.document.height-te.viewport.height&&J.slider.offset.top+J.slider.height/2>te.scroll.top+te.viewport.height/2))&&(J.slider.positionToViewport="inside",J.resize.viewport(),J.device.scroll.disable()))}},init:function(){clearTimeout(J.timeouts.skinLoad1),clearTimeout(J.timeouts.skinLoad2),clearTimeout(J.timeouts.skinLoad3),clearTimeout(J.timeouts.skinLoad4),J.slider.set.styles(),J.slider.set.options(),J.slides.init(),J.device.fullscreen.set(),J.media.init(),J.gui.timers.init(),J.gui.loadingIndicator.init(),J.preload.init(),J.gui.shadow.init(),J.navigation.init(),J.slideshow.init(),J.slides.set.firstSlide(),J.gui.navigation.init(),J.gui.media.init(),J.resize.slider(),J.yourLogo.init(),J.slider.set.events(),J.api.hasEvent("sliderDidLoad")&&J.api.triggerEvent("sliderDidLoad",J.api.eventData()),J.functions.setStates(J.slider,{isLoaded:!0}),J.slider.state.shouldBeDestroyed?J.api.methods("destroy"):(J.intervals.checkSliderVisibility=setInterval(function(){J.slider.check.visibility()},500),J.slideshow.changeTo(J.slides.first.index))},hide:function(){$.addClass("ls-forcehide"),$.closest(".ls-wp-fullwidth-container").addClass("ls-forcehide"),$.closest(".ls-popup").addClass("ls-forcehide"),$.closest(".ls-popup").prev(".ls-popup-overlay").addClass("ls-forcehide")},show:function(){$.removeClass("ls-forcehide"),$.closest(".ls-wp-fullwidth-container").removeClass("ls-forcehide"),$.closest(".ls-popup").removeClass("ls-forcehide"),$.closest(".ls-popup").prev(".ls-popup-overlay").removeClass("ls-forcehide")}},J.functions={getData:function(e,t){return!J.o.getData||-1===J.o.getData.indexOf(e)||(J.api.triggerEvent("getData",{property:e,value:t}),!J.o.destroyAfter)||(J.api.methods("destroy",!0),!1)},convert:{transformOrigin:function(e,t,i,s){for(var a=(d=ie.trim(e)).split(" "),r=s[0].style,o="",n=["Left","Top"],l=[J.slider.width,J.slider.height],d=d.replace("sliderleft","0").replace("sliderright","100%").replace("slidercenter","50%").replace("slidermiddle","50%").replace("slidertop","0").replace("sliderbottom","100%").replace("left","0").replace("right","100%").replace("center","50%").replace("middle","50%").replace("top","0").replace("bottom","100%").split(" "),c=0;c<d.length;c++)-1!==a[c].indexOf("slider")?(J.transitions.layers.timeline.shouldRestart=!0,o+=c<2?l[c]/(100/parseInt(d[c]))-parseInt(r[n[c].toLowerCase()])-parseInt(r["margin"+n[c]])+"px ":"0px"):-1!==d[c].indexOf("%")?o+=d[c]+" ":-1!==d[c].indexOf("em")?o+=parseFloat(d[c])*parseInt(t.css("font-size"))+"px ":o+=parseInt(d[c])*i.settings.calculatedratio+"px ";return ie.trim(o)},specialValuesOfTransformOrigin:function(e){return e=e.replace("sliderleft","0").replace("sliderright","100%").replace("slidercenter","50%").replace("slidermiddle","50%").replace("slidertop","0").replace("sliderbottom","100%").replace("left","0").replace("right","100%").replace("center","50%").replace("middle","50%").replace("top","0").replace("bottom","100%").split(" ")},nodesTransformOrigin:function(e,d,c,t){for(var i="object"==typeof e,p=(d.length,[]),u=t[0].style,h=["left","top"],s=function(e,t){for(var t=ie(d[t]),i=parseInt(t.css("font-size")),s=t.position(),a=(n=ie.trim(e)).split(" "),r="",o=[J.slider.width,J.slider.height],n=J.functions.convert.specialValuesOfTransformOrigin(n),l=0;l<n.length;l++)-1!==a[l].indexOf("slider")?(J.transitions.layers.timeline.shouldRestart=!0,r+=l<2?o[l]/(100/parseInt(n[l]))-parseInt(s[h[l]])-parseInt(u[h[l].toLowerCase()])+"px ":"0px"):-1!==n[l].indexOf("%")?r+=n[l]+" ":-1!==n[l].indexOf("em")?r+=parseFloat(n[l])*i+"px ":r+=parseInt(n[l])*c.settings.calculatedratio+"px ";p.push(ie.trim(r))},a=0,r=i&&e.length,o=0;o<d.length;o++)i?(s(e[a],o),++a==r&&(a=0)):s(e,o);return p},easing:function(e,t){return"string"!=typeof e?e:(-1!==(e=e.toLowerCase()).indexOf("swing")||-1!==e.indexOf("linear")?i=ee.Linear.easeNone:(s=e.match(/(easeinout|easein|easeout)(.+)/)[2],s=ee[s.charAt(0).toUpperCase()+s.slice(1)],-1!==e.indexOf("easeinout")?i=s.easeInOut:-1!==e.indexOf("easeout")?i=t?s.easeIn:s.easeOut:-1!==e.indexOf("easein")&&(i=t?s.easeOut:s.easeIn)),i);var i,s},transition:function(e,t,i,s){var a=ie.extend({},e);return ie.each({de:"delay",rotate:"rotation",rotateX:"rotationX",rotateY:"rotationY"},function(e,t){e in a&&(a[t]=a[e],delete a[e])}),"after"===i?a.scaleX=a.scaleY=a.scaleZ=1:a.scale3d!==s&&(a.scaleX=a.scaleY=a.scaleZ=a.scale3d,delete a.scale3d),a.delay&&(a.delay="after"===i?a.delay/1e3:a.delay),void 0===t&&(t="easeInOutQuart"),a.ease=J.functions.convert.easing(t),a},randomProperties:function(e,t){-1!==e.indexOf("random")&&-1!==e.indexOf("(")&&-1!==e.indexOf(",")&&-1!==e.indexOf(")")?e=e.split("(")[1].split(")")[0].replace(",",J.defaults.init.rangeSplitChar):e.charAt(0)===J.defaults.init.openingBracket&&e.charAt(e.length-1)===J.defaults.init.closingBracket&&(e=e.substring(1,e.length-1)),e=e.replace(/,/g,".").replace(/٫/g,".");var i,s=-1===t.indexOf("scale")&&-1===t.indexOf("opacity")?1:100,a=e;return-1!==e.indexOf(J.defaults.init.randomSplitChar)?a=(a=(i=e.split(J.defaults.init.randomSplitChar))[Math.floor(Math.random()*i.length)].trim()).charAt(0)===J.defaults.init.openingBracket&&a.charAt(a.length-1)===J.defaults.init.closingBracket?J.functions.convert.randomProperties(a,t):parseFloat(a):-1!==e.indexOf(J.defaults.init.rangeSplitChar)&&((i=e.split(J.defaults.init.rangeSplitChar)).sort(function(e,t){return parseFloat(e)-parseFloat(t)}),i[0]=parseFloat(i[0]*s),i[1]=parseFloat(i[1]*s),a=Math.floor(Math.random()*(i[1]-i[0]+1)+i[0])/s),a},properties:function(e,t){if("string"==typeof e)return J.functions.convert._properties(e,t);if("object"!=typeof e)return e;for(var i in e)e[i]=J.functions.convert._properties(e[i],t);return e},_properties:function(e,t){if(-1!==["enable","enabled","true"].indexOf(e))return!0;if(-1!==["disable","disabled","false","undefined","null"].indexOf(e))return!1;if("string"!=typeof e||-1===e.indexOf(J.defaults.init.staggerSplitChar)||e.charAt(0)===J.defaults.init.openingBracket)return t?""+parseInt(e)=="NaN"?0:parseInt(e):ie.isNumeric(e)?parseFloat(e):e;for(var i=e.split(J.defaults.init.staggerSplitChar),s=[],a=0;a<i.length;a++)s[a]=ie.isNumeric(i[a])?parseFloat(ie.trim(i[a])):ie.trim(i[a]);return s},oldProperties:function(i){return ie.each({firstLayer:"firstSlide",loops:"cycles",forceLoopNum:"forceCycles",layersContainer:"layersContainerWidth",sublayerContainer:"layersContainerWidth",randomSlideshow:"shuffleSlideshow"},function(e,t){e in i&&(i[t]=i[e],delete i[e])}),i}},getSliderClosestParentElementWithNumericValueOfProperty:function(e){for(var t,i=$.parents().not(".ls-fullscreen-wrapper"),s=i.length,a=100,r=0;r<s;r++)if("auto"!==(t=window.getComputedStyle(i[r]).getPropertyValue(e))){if(-1!==t.indexOf("px")&&(0<parseInt(t)||J.slider.isPopup))return J.slider.$parentWithNumericWidthValue=ie(i[r]),ie(i[r]);-1!==t.indexOf("%")&&(a=a/100*parseInt(t),J.slider.$parentWithNumericWidthValuePercent=a)}},sortArray:function(e,t,i){var s,a,r,o,n,l,d,c=[],p=e*t;switch(i){case"forward":for(s=0;s<e;s++)for(a=0;a<t;a++)c.push(s+a*e);break;case"reverse":for(s=e-1;-1<s;s--)for(a=t-1;-1<a;a--)c.push(s+a*e);break;case"center":for(n=Math.floor(p/2),r=0;r<n;r++)c.push(r);for(o=n;0<=o;o--)c.push(o);break;case"edge":case"mirror":for(r=n=Math.floor(p/2);0<r;r--)c.push(r);for(o=0;o<=n;o++)c.push(o);break;case"radial-out":for(l=e/2,d=t/2,s=0;s<e;s++)for(a=0;a<t;a++)c.push(Math.floor(Math.abs(d-a-.5))+Math.floor(Math.abs(l-s-.5)));break;case"radial-in":for(l=e/2,d=t/2,s=0;s<e;s++)for(a=0;a<t;a++)c.push(Math.floor(d-Math.ceil(Math.abs(d-a-.5)))+Math.floor(l-Math.ceil(Math.abs(l-s-.5))))}return c},shuffleArray:function(e){for(var t,i,s=e.length;0!==s;)i=Math.floor(Math.random()*s),t=e[--s],e[s]=e[i],e[i]=t;return e},countProp:function(e){var t,i=0;for(t in e)e.hasOwnProperty(t)&&++i;return i},getURL:function(e){return e[0].currentSrc||(e.data("src")?e.data("src"):e.attr("src"))},getALT:function(e){return!!e.attr("alt")&&e.attr("alt")},setStates:function(e,t,i){if(e&&e.state){var s=J.slideshow.isPaused();if(i)e.state[t]=i;else for(var a in t)e.state[a]=t[a];i=J.slideshow.isPaused();e==J.slideshow&&(J.api.hasEvent("slideshowStateDidChange")&&J.api.triggerEvent("slideshowStateDidChange",J.api.eventData()),i!=s&&(i?J.api.hasEvent("slideshowDidPause")&&J.api.triggerEvent("slideshowDidPause",J.api.eventData()):(J.slideshow.start(),J.api.hasEvent("slideshowDidResume")&&J.api.triggerEvent("slideshowDidResume",J.api.eventData()))))}},clearTimers:function(){for(var e in J.timeouts)clearTimeout(J.timeouts[e]),delete J.timeouts[e];for(var t in J.intervals)clearInterval(J.intervals[t]),delete J.intervals[t]},clearTimelines:function(){J.transitions.timelines.set("all",function(e,t){e.pause().clear().kill(),delete J.transitions[t]}),ee.TweenMax.killTweensOf($.find(".ls-bg, .ls-layer, .ls-wrapper, .ls-curtile, .ls-nexttile").get())},resetSlideTimelines:function(){J.transitions.timelines.set("layers",function(e,t){e.pause().progress(0).clear().kill(),delete J.transitions[t]}),J.transitions.timelines.set("allforce",function(e,t){e.pause().progress(1).clear().kill(),delete J.transitions[t]}),$.find(".ls-layer:not(.ls-bg-video)").each(function(){var e=ie(this);if(void 0!==e.attr("data-ls-active")&&!1!==e.attr("data-ls-active")&&void 0!==e.attr("data-ls-static")&&!1!==e.attr("data-ls-static")&&parseInt(e.attr("data-ls-slidein"))!==J.slides.current.index)return!0;e=e.data(J.defaults.init.dataKey);e.loop._timeline&&(e.loop._timeline.stop().clear(),delete e.loop._timeline,ee.TweenMax.set(e.elements.$loopWrapper[0],e.reset.loopWrapperOnSlideChange)),ee.TweenMax.set(e.elements.$wrapper[0],e.reset.wrapperOnSlideChange)})},clearEvents:function(){M.add("body").add(document).add($).add($.find("*")).add("."+B).off("."+B+" .debug"+B+" .parallax"+B+" .scroll"+B),$.off()}},J.device={scroll:{keys:[32,33,34,35,36,37,38,39,40],disable:function(){window.addEventListener("scroll",this.preventDefault,{passive:!1,capture:!0}),window.addEventListener("wheel",this.preventDefault,{passive:!1,capture:!0}),window.addEventListener("mousewheel",this.preventDefault,{passive:!1,capture:!0}),window.addEventListener("touchmove",this.preventDefault,{passive:!1,capture:!0}),window.addEventListener("keydown",this.preventDefaultForScrollKeys,{capture:!0})},enable:function(){window.removeEventListener("scroll",this.preventDefault,{passive:!1,capture:!0}),window.removeEventListener("wheel",this.preventDefault,{passive:!1,capture:!0}),window.removeEventListener("mousewheel",this.preventDefault,{passive:!1,capture:!0}),window.removeEventListener("touchmove",this.preventDefault,{passive:!1,capture:!0}),window.removeEventListener("keydown",this.preventDefaultForScrollKeys,{capture:!0})},preventDefault:function(e){(e=e||window.event).preventDefault&&e.preventDefault(),e.returnValue=!1},preventDefaultForScrollKeys:function(e){if(-1!==J.device.scroll.keys.indexOf(e.keyCode))return J.device.scroll.preventDefault(e),!1}},removeSelection:function(){window.getSelection?window.getSelection().empty?window.getSelection().empty():window.getSelection().removeAllRanges&&window.getSelection().removeAllRanges():document.selection&&document.selection.empty()},fullscreen:{enter:function(){J.functions.setStates(J.slider,{inFullscreen:!0}),ie("body, html").addClass("ls-fullscreen"),J.slider.fullscreenWrapper.requestFullscreen(),$.trigger("mouseleave"),J.device.removeSelection()},exit:function(){J.functions.setStates(J.slider,{inFullscreen:!1}),J.resize.all(),ie("body, html").removeClass("ls-fullscreen"),J.device.removeSelection()},toggle:function(){J.device.fullscreen.element()?(J.device.fullscreen.exit(),document.exitFullscreen()):J.device.fullscreen.enter()},set:function(){J.o.allowFullscreen&&(document.fullscreenEnabled||document.webkitFullscreenEnabled||document.mozFullScreenEnabled||document.msFullscreenEnabled)&&($.wrap('<div class="ls-fullscreen-wrapper"></div>'),J.slider.$fullscreenWrapper=$.closest(".ls-fullscreen-wrapper"),J.slider.fullscreenWrapper=J.slider.$fullscreenWrapper[0],J.slider.$spacingWrapper=J.slider.$fullscreenWrapper,J.slider.fullscreenWrapper.requestFullscreen=J.slider.fullscreenWrapper.requestFullscreen||J.slider.fullscreenWrapper.webkitRequestFullscreen||J.slider.fullscreenWrapper.mozRequestFullScreen||J.slider.fullscreenWrapper.msRequestFullscreen,document.exitFullscreen=document.exitFullscreen||document.webkitExitFullscreen||document.mozCancelFullScreen||document.msExitFullscreen,ie(document).on("fullscreenchange."+B+" webkitfullscreenchange."+B+" mozfullscreenchange."+B+" msfullscreenchange."+B,function(){J.device.fullscreen.element()||J.device.fullscreen.exit()}),J.slider.$fullscreenWrapper.on("dblclick."+B,function(){J.device.fullscreen.toggle()}))},element:function(){return document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement}}},J.actions={do:function(t){var e,i,s=!1,a="";switch(t.action){case"scrollBelowProject":case"scrollToNextProject":case"scrollToPrevProject":case"scrollToElement":case"scrollToSelf":case"scrollToScenePosition":J.slider.isScene||$.addClass("ls-action-trigger");var r,o,n,l,d=ie(".ls-wp-container:not(.ls-hidden):not([data-scene]), ls-scene-wrapper"),c=ie("ls-scene-wrapper, .ls-action-trigger"),p=ie([]),u=J.slider.isScene?J.slider.$spacingWrapper:$,h=c.length,m=c.index(u);if(J.slider.isScene||$.removeClass("ls-action-trigger"),"scrollToSelf"===t.action)g=J.slider.$spacingWrapper.offset().top+(t.offset||0);else if("scrollBelowProject"===t.action)g=J.slider.$spacingWrapper.offset().top+J.slider.$spacingWrapper.height()+(t.offset||0);else if("scrollToPrevProject"===t.action)0!==d.index(u)?(n=(p=d.eq(d.index(u)-1)).is("ls-scene-wrapper")?p.find(".ls-container"):p,g=parseFloat(p.offset().top)-parseFloat(n.css("top"))+(t.offset||0)):s="There’s no previous project to scroll to.";else if("scrollToNextProject"===t.action)d.index(u)<d.length-1?(n=(p=d.eq(d.index(u)+1)).is("ls-scene-wrapper")?p.find(".ls-container"):p,g=parseFloat(p.offset().top)-parseFloat(n.css("top"))+(t.offset||0)):s="There’s no next project to scroll to.";else if("scrollToElement"===t.action){try{p=ie(t.selector.toString()).not(".ls-wp-container.ls-hidden")}catch(e){a=e}p.length&&p.size()?g=parseFloat(p.offset().top)+(t.offset||0):s='Couldn’t find the scroll target element "'+t.selector+'". Please verify the selector you’ve entered.'}else if("scrollToScenePosition"===t.action){switch(t.target){case"currentScene":J.slider.isScene?p=u:s="Current project is not a scene.";break;case"nextScene":m+1<h?p=ie(c[m+1]):s="There are no next scenes in the DOM.";break;case"previousScene":0<=m-1?p=ie(c[m-1]):s="There are no previous scenes in the DOM."}p.length&&(r=parseFloat(p.attr("data-scene-duration")),o=p.height(),d=(n=p.find(".ls-container")).height(),t.position=t.position||"0ms",g=p.is('[data-scene="scroll"]')?(l=-1!==t.position.indexOf("%")||-1===t.position.indexOf("ms")?r*(Math.min(100,Math.max(0,parseFloat(t.position)))/100):Math.min(Math.max(0,parseFloat(t.position)/1e3),r),Math.round(parseFloat(p.offset().top)-parseFloat(n.css("top"))+l/r*(o-d))):(l=Math.min(100,Math.max(0,parseFloat(t.position)))/100,Math.round(parseFloat(p.offset().top)-parseFloat(n.css("top"))+(o-d)*l)))}s||(t.duration=ie.isNumeric(t.duration)?t.duration:1e3,ee.TweenMax.to("html, body",t.duration/1e3,{scrollTop:g,ease:J.functions.convert.easing(t.easing)}));break;case"switchSlide":J.slideshow.changeTo(t.slide,!0,!0);break;case"nextSlide":case"prevSlide":case"lastSlide":case"firstSlide":case"stopSlideshow":case"startSlideshow":"nextSlide"===t.action&&(y="next"),"prevSlide"===t.action&&(y="prev"),"lastSlide"===t.action&&(y="last"),"firstSlide"===t.action&&(y="first"),"stopSlideshow"===t.action&&(y="stop"),"startSlideshow"===t.action&&(y="start"),J.navigation[y]("clicked");break;case"replaySlide":J.api.methods("replay");break;case"reverseSlide":J.api.methods("reverse",t.replay);break;case"resetSlide":J.api.methods("resetSlide");break;case"pauseProject":J.api.methods("pauseSlider");break;case"resumeProject":J.api.methods("resumeSlider");break;case"toggleProject":J.api.methods("toggleSlider");break;case"playMedia":J.media.functions.playActiveMedia();break;case"pauseMedia":J.media.functions.pauseActiveMedia();break;case"unmuteMedia":J.media.unmute.multipleMediaElements();break;case"openPopup":var f,g=ie("[id^=layerslider_"+t.popup+"]").first(),y=g.data("lsSliderUID");g.length?((f=window._layerSliders[y].initializedPlugins.popup).plugin.settings.showOnce=!1,"opened"==f.state.is?t.toggle&&f.events.hide():t.slide?g.layerSlider("fastChangeTo",t.slide,function(){f.events.show()}):f.events.show()):(g={action:"ls_get_popup_markup",id:t.popup,slide:t.slide},ie.get(J.o.ajaxURL||window.ajaxurl||"/wp-admin/admin-ajax.php",g,function(e){ie(e).appendTo("body")}));break;case"launchPopups":for(i in window._layerSliders)(e=window._layerSliders[i]).initializedPlugins.popup&&e.api.methods("openPopup");break;case"closePopup":J.api.methods("closePopup");break;case"closeAllPopups":J.api.methods("closeAllPopups");break;case"jsFunction":try{window[t.function]()}catch(e){a=e,s="The browser thrown the following error after calling "+t.function+"() JavaScript function."}}s&&console.error('LayerSlider: Error while calling layer action "'+t.action+'". '+s+(""!==a?"\n\r\n\r":""),a)}},J.api={hasEvent:function(e,t){t=ie._data(t||I,"events");return!(!t||!t[e])},methods:function(e,t,i,s){if(!J.slider.isBusy())if("number"==typeof e)0<e&&e<J.slides.count+1&&e!=J.slides.current.index&&J.slideshow.changeTo(e,!0,!0);else switch(e){case"touchPrev":J.device.touchPrev=!0;case"previousSlide":case"prev":J.navigation.prev();break;case"touchNext":J.device.touchNext=!0;case"nextSlide":case"next":J.navigation.next();break;case"startSlideshow":case"start":J.navigation.start()}switch(e){case"openPopup":J.initializedPlugins.popup&&(t&&ie.isNumeric(t)?$.layerSlider("fastChangeTo",t,function(){J.initializedPlugins.popup.events.show()}):J.initializedPlugins.popup.events.show());break;case"launchPopups":J.actions.do("launchPopups");break;case"fastChangeTo":t&&ie.isNumeric(t)&&(J.slides.current.index!==t?(J.slideshow.forceFastChange=!0,i&&"function"==typeof i&&(J.slideshow.forceFastChangeCallback=i),J.slideshow.changeTo(t,!0,!0)):i&&i());break;case"resetScroll":J.slider.set.offset(),M.trigger("scroll.scroll"+B).trigger("touchmove.scroll"+B).trigger("scroll.parallax"+B).trigger("touchmove.parallax"+B);break;case"enableScene":J.slider.isScene&&(J.slider.$spacingWrapper.removeAttr("data-disabled-scene"),J.api.methods("resetScroll"));break;case"disableScene":J.slider.isScene&&(J.slider.$spacingWrapper.attr("data-disabled-scene",""),$.css({top:"auto",bottom:"auto"}),J.transitions.scrollscene.animate("start"),J.api.methods("resetScroll"));break;case"closePopup":J.initializedPlugins.popup&&J.initializedPlugins.popup.events.hide();break;case"closeAllPopups":ie('<div class="ls-close-all-popups-button"></div>').css("display","none").appendTo("body").trigger("click").remove();break;case"updateLayerData":t&&J.layers.update.data(t,i,s);break;case"redrawSlider":case"redraw":J.resize.all(),J.api.methods("resetScroll");break;case"replaySlide":case"replay":J.transitions._slideTimeline&&J.transitions._slideTimeline.restart();break;case"reverseSlide":case"reverse":J.transitions._slideTimeline&&(J.transitions._slideTimeline.reversed()?J.transitions._slideTimeline.play():J.transitions._slideTimeline.reverse(),t&&(J.transitions.layers.timeline.shouldReplay=!0));break;case"unmute":case"unmuteMedia":J.media.unmute.multipleMediaElements();break;case"stopSlideshow":case"stop":J.navigation.stop();break;case"pauseSlider":case"pause":t&&"performanceMode"===t&&J.functions.setStates(J.slideshow,{pausedByPerformance:!0}),J.transitions._slideTimeline&&!J.slider.isScrollScene&&J.transitions._slideTimeline.stop(),J.layers.get("active").each(function(){var e=ie(this).data(J.defaults.init.dataKey);e.loop._timeline&&e.loop._timeline.stop()}),J.transitions.layers.parallax.state.paused=!0,J.transitions.layers.scroll.state.paused=!0,J.transitions._slideTransition&&J.transitions._slideTransition.stop(),J.media.functions.pauseActiveMedia(!0);break;case"resumePopup":J.layers.get("active").each(function(){J.media.functions.playIfAllowed(ie(this))}),J.transitions._slideTimeline&&(J.transitions._slideTimeline.timeScale()<.001&&J.transitions.layers.timeline.resume(),J.transitions._slideTimeline.play()),J.transitions._slideTransition&&J.transitions._slideTransition.play();break;case"resumeSlider":case"resume":J.transitions._slideTimeline&&(J.transitions._slideTimeline.timeScale()<.001&&J.transitions.layers.timeline.resume(),J.slider.isScrollScene||J.transitions._slideTimeline.play()),J.media.functions.playActiveMedia(!0),J.layers.get("active").each(function(){var e=ie(this).data(J.defaults.init.dataKey);e.loop._timeline&&e.loop._timeline.play()}),J.transitions.layers.parallax.state.paused=!1,J.transitions.layers.scroll.state.paused=!1,J.transitions._slideTransition&&J.transitions._slideTransition.play(),t&&"performanceMode"===t&&J.functions.setStates(J.slideshow,{pausedByPerformance:!1});break;case"playMedia":J.media.functions.playActiveMedia();break;case"pauseMedia":J.media.functions.pauseActiveMedia();break;case"toggleSlider":case"toggle":J.slider.state.isPaused?($.layerSlider("resume"),J.slider.state.isPaused=!1):($.layerSlider("pause"),J.slider.state.isPaused=!0);break;case"reset":case"resetSlider":break;case"resetSlide":case"resetCurrentSlide":J.transitions.timelines.set("layers",function(e,t){e.progress(0),e.stop()}),J.media.functions.stop(!0);break;case"destroy":case"kill":if(J.slider.state.isLoaded){if(J.functions.clearTimers(),J.functions.clearTimelines(),J.layers.$all.removeData(),J.api.hasEvent("sliderDidDestroy")&&J.api.triggerEvent("sliderDidDestroy"),J.slider.state.sholudBeRemoved||t){if(J.slider.$hiddenWrapper.remove(),J.gui.timers.slidebar.$containerElement)for(var a=0;a<J.gui.timers.slidebar.$containerElement.length;a++)J.gui.timers.slidebar.$containerElement[a]instanceof jQuery&&J.gui.timers.slidebar.$containerElement[a].remove();J.api.hasEvent("sliderDidRemove")&&J.api.triggerEvent("sliderDidRemove");var r=J.slider.$spacingWrapper;r.closest(".ls-popup").length&&(r=r.closest(".ls-popup")).prev(".ls-popup-overlay").remove(),r.remove(),J.slider.$silentWrapper&&J.slider.$silentWrapper.remove()}J.functions.clearEvents(),window._layerSlider.removeSlider(B)}else J.functions.setStates(J.slider,{shouldBeDestroyed:!0,sholudBeRemoved:t||!1});J.slider.positionToViewport="under",J.device.scroll.enable()}},eventData:function(){return{data:J,userData:J.o,uid:B,target:I,slider:$,state:J.slider.state,isBusy:J.slider.isBusy(),event:{target:I},api:function(e,t,i,s){$.layerSlider(e,t,i,s)},navigation:{direction:J.navigation.direction},slides:{first:{index:J.slides.first.index,deeplink:J.slides.get.deeplink(J.slides.first.index),data:J.slides.first.data},prev:{index:J.slides.prev.index,deeplink:J.slides.get.deeplink(J.slides.prev.index),data:J.slides.prev.data},current:{index:J.slides.current.index||J.slides.first.index,deeplink:J.slides.get.deeplink(J.slides.current.index),layersIn:J.layers.get("current,in"),layersOut:J.layers.get("current,out"),timeline:J.transitions._slideTimeline,data:J.slides.current.data},next:{index:J.slides.next.index,deeplink:J.slides.get.deeplink(J.slides.next.index),layersIn:J.layers.get("next,in"),layersOut:J.layers.get("next,out"),data:J.slides.next.data},count:J.slides.count},slideChangeTimeline:J.transitions._slideTransition,slideshow:{state:J.slideshow.state,sequence:J.slideshow.sequence,direction:J.slideshow.direction,isPaused:J.slideshow.isPaused()},cycles:{max:J.o.cycles,current:J.slideshow.curCycle}}},triggerEvent:function(t,e){var i,s;try{i=e?(s=$.triggerHandler(t+".layerSlider",e),$.triggerHandler(t+".$",e)):(s=$.triggerHandler(t+".layerSlider"),$.triggerHandler(t+".$"))}catch(e){console.error('LayerSlider: Error while calling event "'+t+'":\n\r\n\r',e)}return null!=s?s:"undefinded"!=typeof i&&null!==i?i:void 0}},J.browser={isSafari:!!navigator.userAgent.match(/(iPhone|iPod|iPad|Safari)/i)&&!navigator.userAgent.match(/(Opera|Chrome|Edge)/i),isChrome:function(){var e=window.chrome,t=window.navigator,i=t.vendor,s=void 0!==window.opr,a=-1<t.userAgent.indexOf("Edge"),a=!!t.userAgent.match("CriOS")||null!=e&&"Google Inc."===i&&!1==s&&!1==a;return a},usesFileProtocol:-1!==document.location.href.indexOf("file://"),supports3D:function(){for(var e=ie("<div>"),t=!1,i=!1,s=["perspective","OPerspective","msPerspective","MozPerspective","WebkitPerspective"],a=["transformStyle","OTransformStyle","msTransformStyle","MozTransformStyle","WebkitTransformStyle"],r=s.length-1;0<=r;r--)t=t||void 0!==e[0].style[s[r]];for(var o=a.length-1;0<=o;o--)e.css("transform-style","preserve-3d"),i=i||"preserve-3d"==e[0].style[a[o]];return t&&void 0!==e[0].style[s[4]]&&(e.attr("id","ls-test3d").appendTo($),t=3===e[0].offsetHeight&&9===e[0].offsetLeft,e.remove()),t&&i},isOld:-1!==navigator.userAgent.indexOf("rident/5")},J.initializedPlugins={},J.timeouts={},J.intervals={},J.debug={options:{}},J.plugin={version:"7.8.0",release:"stable",releaseDate:"2023. 08. 11."},J.slider.load()}}(jQuery);
// source --> https://ermafa-passage.de/wp-content/plugins/LayerSlider/assets/static/layerslider/js/layerslider.transitions.js?ver=7.8.0 

/*
	* 2D & 3D Transitions for LayerSlider
	*
	* (c) 2011-2023 George Krupa, John Gera & Kreatura Media
	*
	* LayerSlider home:		https://layerslider.com/
	* Licensing:			https://layerslider.com/licensing/
*/



var layerSliderTransitions={t2d:[{n:"a b c",r:1,c:1,t:{de:0,sq:"fw"},tr:{tp:"sl",ea:"e5",du:1e3,di:"l"}},{n:"a b d",r:1,c:1,t:{de:0,sq:"fw"},tr:{tp:"sl",ea:"e5",du:1e3,di:"r"}},{n:"a b e",r:1,c:1,t:{de:0,sq:"fw"},tr:{tp:"sl",ea:"e5",du:1e3,di:"t"}},{n:"a b f",r:1,c:1,t:{de:0,sq:"fw"},tr:{tp:"sl",ea:"e5",du:1e3,di:"b"}},{n:"g",r:1,c:1,t:{de:0,sq:"fw"},tr:{tp:"f",ea:"e5",du:1e3,di:"l"}},{n:"h i j",r:[2,4],c:[4,7],t:{de:30,sq:"fw"},tr:{tp:"f",ea:"e10",du:1e3,di:"l"}},{n:"h i k",r:[2,4],c:[4,7],t:{de:30,sq:"rv"},tr:{tp:"f",ea:"e10",du:1e3,di:"l"}},{n:"h i l",r:[2,4],c:[4,7],t:{de:30,sq:"cf"},tr:{tp:"f",ea:"e10",du:1e3,di:"l"}},{n:"h i m",r:[2,4],c:[4,7],t:{de:30,sq:"cr"},tr:{tp:"f",ea:"e10",du:1e3,di:"l"}},{n:"h i n",r:[2,4],c:[4,7],t:{de:30,sq:"rnd"},tr:{tp:"f",ea:"e10",du:1e3,di:"l"}},{n:"o h b c",r:1,c:35,t:{de:25,sq:"rv"},tr:{tp:"f",ea:"e1",du:750,di:"l"}},{n:"o h b d",r:1,c:35,t:{de:25,sq:"fw"},tr:{tp:"f",ea:"e11",du:750,di:"l"}},{n:"o h b e",r:35,c:1,t:{de:25,sq:"cr"},tr:{tp:"f",ea:"e11",du:750,di:"l"}},{n:"o h b f",r:35,c:1,t:{de:25,sq:"cf"},tr:{tp:"f",ea:"e11",du:750,di:"l"}},{n:"o a b c",r:1,c:25,t:{de:30,sq:"rv"},tr:{tp:"sl",ea:"e11",du:350,di:"l"}},{n:"o a b d",r:1,c:25,t:{de:30,sq:"fw"},tr:{tp:"sl",ea:"e11",du:350,di:"r"}},{n:"o p b e",r:25,c:1,t:{de:30,sq:"cr"},tr:{tp:"sl",ea:"e11",du:350,di:"t"}},{n:"o a b f",r:25,c:1,t:{de:30,sq:"cf"},tr:{tp:"sl",ea:"e11",du:350,di:"b"}},{n:"a i q c n",r:[2,4],c:[4,7],t:{de:50,sq:"rnd"},tr:{tp:"sl",ea:"e10",du:500,di:"r"}},{n:"a i q d n",r:[2,4],c:[4,7],t:{de:50,sq:"rnd"},tr:{tp:"sl",ea:"e10",du:500,di:"l"}},{n:"a i q e n",r:[2,4],c:[4,7],t:{de:50,sq:"rnd"},tr:{tp:"sl",ea:"e10",du:500,di:"b"}},{n:"a i q f n",r:[2,4],c:[4,7],t:{de:50,sq:"rnd"},tr:{tp:"sl",ea:"e10",du:500,di:"t"}},{n:"a r i q r s",r:[2,4],c:[4,7],t:{de:50,sq:"rnd"},tr:{tp:"sl",ea:"e10",du:500,di:"rnd"}},{n:"a t q c u",r:[7,11],c:1,t:{de:100,sq:"fw"},tr:{tp:"sl",ea:"e11",du:600,di:"r"}},{n:"a t q c v",r:[7,11],c:1,t:{de:100,sq:"rv"},tr:{tp:"sl",ea:"e11",du:600,di:"r"}},{n:"a t q c n",r:[7,11],c:1,t:{de:100,sq:"rnd"},tr:{tp:"sl",ea:"e11",du:600,di:"r"}},{n:"a t q d u",r:[7,11],c:1,t:{de:100,sq:"fw"},tr:{tp:"sl",ea:"e11",du:600,di:"l"}},{n:"a t q d v",r:[7,11],c:1,t:{de:100,sq:"rv"},tr:{tp:"sl",ea:"e11",du:600,di:"l"}},{n:"a t q d n",r:[7,11],c:1,t:{de:100,sq:"rnd"},tr:{tp:"sl",ea:"e11",du:600,di:"l"}},{n:"a t b f q e u",r:[7,11],c:1,t:{de:100,sq:"fw"},tr:{tp:"sl",ea:"e11",du:600,di:"b"}},{n:"a t b f q e n",r:[7,11],c:1,t:{de:100,sq:"rnd"},tr:{tp:"sl",ea:"e11",du:600,di:"b"}},{n:"a t b e q f v",r:[7,11],c:1,t:{de:100,sq:"rv"},tr:{tp:"sl",ea:"e11",du:600,di:"t"}},{n:"a t b e q f n",r:[7,11],c:1,t:{de:100,sq:"rnd"},tr:{tp:"sl",ea:"e11",du:600,di:"t"}},{n:"a w q e u",r:1,c:[12,16],t:{de:75,sq:"fw"},tr:{tp:"sl",ea:"e11",du:600,di:"b"}},{n:"a w q e v",r:1,c:[12,16],t:{de:75,sq:"rv"},tr:{tp:"sl",ea:"e11",du:600,di:"b"}},{n:"a w q e n",r:1,c:[12,16],t:{de:75,sq:"rnd"},tr:{tp:"sl",ea:"e11",du:600,di:"b"}},{n:"a w q f u",r:1,c:[12,16],t:{de:75,sq:"fw"},tr:{tp:"sl",ea:"e11",du:600,di:"t"}},{n:"a w q f v",r:1,c:[12,16],t:{de:75,sq:"rv"},tr:{tp:"sl",ea:"e11",du:600,di:"t"}},{n:"a w q f n",r:1,c:[12,16],t:{de:75,sq:"rnd"},tr:{tp:"sl",ea:"e11",du:600,di:"t"}},{n:"a w b d q c u",r:1,c:[12,16],t:{de:75,sq:"fw"},tr:{tp:"sl",ea:"e11",du:600,di:"r"}},{n:"a w b d q c n",r:1,c:[12,16],t:{de:75,sq:"rnd"},tr:{tp:"sl",ea:"e11",du:600,di:"r"}},{n:"a w b c q d v",r:1,c:[12,16],t:{de:75,sq:"rv"},tr:{tp:"sl",ea:"e11",du:600,di:"l"}},{n:"a w b c q d n",r:1,c:[12,16],t:{de:75,sq:"rnd"},tr:{tp:"sl",ea:"e11",du:600,di:"l"}},{n:"h x a i q c n",r:[2,4],c:[4,7],t:{de:50,sq:"rnd"},tr:{tp:"mx",ea:"e10",du:500,di:"r"}},{n:"h x a i q d n",r:[2,4],c:[4,7],t:{de:50,sq:"rnd"},tr:{tp:"mx",ea:"e10",du:500,di:"l"}},{n:"h x a i q e n",r:[2,4],c:[4,7],t:{de:50,sq:"rnd"},tr:{tp:"mx",ea:"e10",du:500,di:"b"}},{n:"h x a i q f n",r:[2,4],c:[4,7],t:{de:50,sq:"rnd"},tr:{tp:"mx",ea:"e10",du:500,di:"t"}},{n:"h x a r i q r s",r:[2,4],c:[4,7],t:{de:50,sq:"rnd"},tr:{tp:"mx",ea:"e10",du:500,di:"rnd"}},{n:"h x a i b y u",r:[2,4],c:[4,7],t:{de:50,sq:"fw"},tr:{tp:"mx",ea:"e10",du:500,di:"tl"}},{n:"h x a i b z v",r:[2,4],c:[4,7],t:{de:50,sq:"rv"},tr:{tp:"mx",ea:"e10",du:500,di:"br"}},{n:"h x a i b A n",r:[2,4],c:[4,7],t:{de:50,sq:"rnd"},tr:{tp:"mx",ea:"e10",du:500,di:"tr"}},{n:"h x a i b B n",r:[2,4],c:[4,7],t:{de:50,sq:"rnd"},tr:{tp:"mx",ea:"e10",du:500,di:"bl"}},{n:"h x a t q c u",r:[7,11],c:1,t:{de:100,sq:"fw"},tr:{tp:"mx",ea:"e11",du:600,di:"r"}},{n:"h x a t q c v",r:[7,11],c:1,t:{de:100,sq:"rv"},tr:{tp:"mx",ea:"e11",du:600,di:"r"}},{n:"h x a t q c n",r:[7,11],c:1,t:{de:100,sq:"rnd"},tr:{tp:"mx",ea:"e11",du:600,di:"r"}},{n:"h x a t q d u",r:[7,11],c:1,t:{de:100,sq:"fw"},tr:{tp:"mx",ea:"e11",du:600,di:"l"}},{n:"h x a t q d v",r:[7,11],c:1,t:{de:100,sq:"rv"},tr:{tp:"mx",ea:"e11",du:600,di:"l"}},{n:"h x a t q d n",r:[7,11],c:1,t:{de:100,sq:"rnd"},tr:{tp:"mx",ea:"e11",du:600,di:"l"}},{n:"h x a t b f q e u",r:[7,11],c:1,t:{de:100,sq:"fw"},tr:{tp:"mx",ea:"e11",du:600,di:"b"}},{n:"h x a t b f q e n",r:[7,11],c:1,t:{de:100,sq:"rnd"},tr:{tp:"mx",ea:"e11",du:600,di:"b"}},{n:"h x a t b e q f v",r:[7,11],c:1,t:{de:100,sq:"rv"},tr:{tp:"mx",ea:"e11",du:600,di:"t"}},{n:"h x a t b e q f n",r:[7,11],c:1,t:{de:100,sq:"rnd"},tr:{tp:"mx",ea:"e11",du:600,di:"t"}},{n:"h x a w q e u",r:1,c:[12,16],t:{de:75,sq:"fw"},tr:{tp:"mx",ea:"e11",du:600,di:"b"}},{n:"h x a w q e v",r:1,c:[12,16],t:{de:75,sq:"rv"},tr:{tp:"mx",ea:"e11",du:600,di:"b"}},{n:"h x a w q e n",r:1,c:[12,16],t:{de:75,sq:"rnd"},tr:{tp:"mx",ea:"e11",du:600,di:"b"}},{n:"h x a w q f u",r:1,c:[12,16],t:{de:75,sq:"fw"},tr:{tp:"mx",ea:"e11",du:600,di:"t"}},{n:"h x a w q f v",r:1,c:[12,16],t:{de:75,sq:"rv"},tr:{tp:"mx",ea:"e11",du:600,di:"t"}},{n:"h x a w q f n",r:1,c:[12,16],t:{de:75,sq:"rnd"},tr:{tp:"mx",ea:"e11",du:600,di:"t"}},{n:"h x a w b d q c u",r:1,c:[12,16],t:{de:75,sq:"fw"},tr:{tp:"mx",ea:"e11",du:600,di:"r"}},{n:"h x a w b d q c n",r:1,c:[12,16],t:{de:75,sq:"rnd"},tr:{tp:"mx",ea:"e11",du:600,di:"r"}},{n:"h x a w b c q d v",r:1,c:[12,16],t:{de:75,sq:"rv"},tr:{tp:"mx",ea:"e11",du:600,di:"l"}},{n:"h x a w b c q d n",r:1,c:[12,16],t:{de:75,sq:"rnd"},tr:{tp:"mx",ea:"e11",du:600,di:"l"}},{n:"C",r:1,c:1,t:{de:0,sq:"fw"},tr:{tp:"mx",ea:"e5",du:750,di:"l",_s:.5}},{n:"C t",r:4,c:1,t:{de:50,sq:"fw"},tr:{tp:"mx",ea:"e5",du:750,di:"l",_s:.5}},{n:"C D",r:1,c:4,t:{de:50,sq:"fw"},tr:{tp:"mx",ea:"e5",du:750,di:"l",_s:.5}},{n:"C i E",r:3,c:4,t:{de:35,sq:"fw"},tr:{tp:"mx",ea:"e5",du:750,di:"l",_s:.5,_rY:90}},{n:"C i F",r:3,c:4,t:{de:35,sq:"fw"},tr:{tp:"mx",ea:"e5",du:750,di:"t",_s:.5,_rX:-90}},{n:"G i E",r:3,c:4,t:{de:15,sq:"fw"},tr:{tp:"mx",ea:"e5",du:750,di:"l",_s:.5,_rY:90}},{n:"G i F",r:3,c:4,t:{de:15,sq:"fw"},tr:{tp:"mx",ea:"e5",du:750,di:"t",_s:.5,_rX:-90}},{n:"C H t",r:4,c:1,t:{de:50,sq:"fw"},tr:{tp:"mx",ea:"e5",du:750,di:"r",_s:.5}},{n:"C H D",r:1,c:4,t:{de:50,sq:"fw"},tr:{tp:"mx",ea:"e5",du:750,di:"l",_s:.5}},{n:"I J b d",r:1,c:1,t:{de:0,sq:"fw"},tr:{tp:"sl",ea:"e10",du:750,di:"r",_rY:90}},{n:"I J b c",r:1,c:1,t:{de:0,sq:"fw"},tr:{tp:"sl",ea:"e10",du:750,di:"l",_rY:-90}},{n:"I J b f",r:1,c:1,t:{de:0,sq:"fw"},tr:{tp:"sl",ea:"e10",du:750,di:"b",_rX:-90}},{n:"I J b e",r:1,c:1,t:{de:0,sq:"fw"},tr:{tp:"sl",ea:"e10",du:750,di:"t",_rX:90}},{n:"I i b d",r:[3,4],c:[3,4],t:{de:55,sq:"fw"},tr:{tp:"f",ea:"e10",du:750,di:"l",_rY:90}},{n:"I i b c",r:[3,4],c:[3,4],t:{de:55,sq:"rv"},tr:{tp:"f",ea:"e10",du:750,di:"l",_rY:-90}},{n:"I i b f",r:[3,4],c:[3,4],t:{de:55,sq:"fw"},tr:{tp:"f",ea:"e10",du:750,di:"l",_rX:-90}},{n:"I i b e",r:[3,4],c:[3,4],t:{de:55,sq:"rv"},tr:{tp:"f",ea:"e10",du:750,di:"l",_rX:90}},{n:"I t b f",r:[6,12],c:1,t:{de:55,sq:"fw"},tr:{tp:"f",ea:"e10",du:750,di:"l",_rX:90}},{n:"I t b e",r:[6,12],c:1,t:{de:55,sq:"rv"},tr:{tp:"f",ea:"e10",du:750,di:"l",_rX:-90}},{n:"I D b d",r:1,c:[6,12],t:{de:55,sq:"fw"},tr:{tp:"f",ea:"e10",du:750,di:"l",_rY:-90}},{n:"I D b c",r:1,c:[6,12],t:{de:55,sq:"rv"},tr:{tp:"f",ea:"e10",du:750,di:"l",_rY:90}},{n:"K t b d",r:[3,10],c:1,t:{de:55,sq:"fw"},tr:{tp:"f",ea:"e10",du:750,di:"l",_rY:90}},{n:"K t b c",r:[3,10],c:1,t:{de:55,sq:"rv"},tr:{tp:"f",ea:"e10",du:750,di:"l",_rY:-90}},{n:"K D b f",r:1,c:[3,10],t:{de:55,sq:"fw"},tr:{tp:"f",ea:"e10",du:750,di:"l",_rX:-90}},{n:"K D b e",r:1,c:[3,10],t:{de:55,sq:"rv"},tr:{tp:"f",ea:"e10",du:750,di:"l",_rX:90}},{n:"K x L J b d",r:1,c:1,t:{de:75,sq:"fw"},tr:{tp:"mx",ea:"e10",du:750,di:"r",_s:.1,_r:-90,_rY:90}},{n:"K x L J b c",r:1,c:1,t:{de:75,sq:"fw"},tr:{tp:"mx",ea:"e10",du:750,di:"l",_s:.1,_r:90,_rY:-90}},{n:"K x L i b d",r:[3,4],c:[3,4],t:{de:55,sq:"fw"},tr:{tp:"mx",ea:"e10",du:750,di:"r",_r:-45}},{n:"K x L i b c",r:[3,4],c:[3,4],t:{de:55,sq:"fw"},tr:{tp:"mx",ea:"e10",du:750,di:"l",_r:-45}},{n:"K x L i b r",r:[3,4],c:[3,4],t:{de:55,sq:"rnd"},tr:{tp:"mx",ea:"e10",du:750,di:"rnd",_r:-45}},{n:"M J N",r:1,c:1,t:{de:0,sq:"fw"},tr:{tp:"f",ea:"e10",du:1500,di:"l",_s:.8}},{n:"M J b O",r:1,c:1,t:{de:0,sq:"fw"},tr:{tp:"f",ea:"e11",du:1500,di:"l",_s:1.2}},{n:"M i r",r:[3,4],c:[3,4],t:{de:35,sq:"rnd"},tr:{tp:"f",ea:"e10",du:750,di:"l",_s:.1}},{n:"M i b O r",r:[3,4],c:[3,4],t:{de:35,sq:"rnd"},tr:{tp:"f",ea:"e10",du:750,di:"l",_s:2}},{n:"M N x L i r",r:[3,4],c:[3,4],t:{de:35,sq:"rnd"},tr:{tp:"f",ea:"e10",du:750,di:"l",_s:.1,_r:90}},{n:"M x L i b O r",r:[3,4],c:[3,4],t:{de:35,sq:"rnd"},tr:{tp:"f",ea:"e10",du:750,di:"l",_s:2,_r:-90}},{n:"P i Q",r:3,c:4,t:{de:15,sq:"fw"},tr:{tp:"sl",ea:"e11",du:850,di:"tr"}},{n:"P t E",r:6,c:1,t:{de:0,sq:"fw"},tr:{tp:"mx",ea:"e10",du:750,di:"l"}},{n:"P t F",r:6,c:1,t:{de:0,sq:"fw"},tr:{tp:"mx",ea:"e10",du:750,di:"t"}},{n:"P D E",r:1,c:8,t:{de:0,sq:"fw"},tr:{tp:"mx",ea:"e10",du:750,di:"l"}},{n:"P D F",r:1,c:8,t:{de:0,sq:"fw"},tr:{tp:"mx",ea:"e10",du:750,di:"t"}},{n:"r R q d",r:10,c:1,t:{de:10,sq:"rnd"},tr:{du:1500,ea:"e11",tp:"sl",di:"l"}},{n:"r R q c",r:10,c:1,t:{de:10,sq:"rnd"},tr:{du:1500,ea:"e11",tp:"sl",di:"r"}},{n:"r R q e",r:1,c:15,t:{de:10,sq:"rnd"},tr:{du:1500,ea:"e11",tp:"sl",di:"b"}},{n:"r R q f",r:1,c:15,t:{de:10,sq:"rnd"},tr:{du:1500,ea:"e11",tp:"sl",di:"t"}},{n:"S b d",r:25,c:1,t:{de:0,sq:"rv"},tr:{tp:"sc",ea:"e11",du:2e3,di:"r"}},{n:"S b c",r:25,c:1,t:{de:0,sq:"rv"},tr:{tp:"sc",ea:"e11",du:2e3,di:"l"}},{n:"S b T",r:25,c:1,t:{de:0,sq:"rv"},tr:{tp:"sc",ea:"e11",du:2e3,di:"c"}},{n:"U b d",r:25,c:1,t:{de:0,sq:"fw"},tr:{tp:"sc",ea:"e11",du:2e3,di:"r"}},{n:"U b c",r:25,c:1,t:{de:0,sq:"fw"},tr:{tp:"sc",ea:"e11",du:2e3,di:"l"}},{n:"U b T",r:25,c:1,t:{de:0,sq:"fw"},tr:{tp:"sc",ea:"e11",du:2e3,di:"c"}},{n:"V b d",r:25,c:1,t:{de:0,sq:"c"},tr:{tp:"sc",ea:"e11",du:2e3,di:"r"}},{n:"V b c",r:25,c:1,t:{de:0,sq:"c"},tr:{tp:"sc",ea:"e11",du:2e3,di:"l"}},{n:"V b T",r:25,c:1,t:{de:0,sq:"c"},tr:{tp:"sc",ea:"e11",du:2e3,di:"c"}},{n:"W b d",r:25,c:1,t:{de:0,sq:"e"},tr:{tp:"sc",ea:"e11",du:2e3,di:"r"}},{n:"W b c",r:25,c:1,t:{de:0,sq:"e"},tr:{tp:"sc",ea:"e11",du:2e3,di:"l"}},{n:"W b T",r:25,c:1,t:{de:0,sq:"e"},tr:{tp:"sc",ea:"e11",du:2e3,di:"c"}},{n:"X b f",r:1,c:25,t:{de:0,sq:"rv"},tr:{tp:"sc",ea:"e11",du:2e3,di:"b"}},{n:"X b e",r:1,c:25,t:{de:0,sq:"rv"},tr:{tp:"sc",ea:"e11",du:2e3,di:"t"}},{n:"X b Y",r:1,c:25,t:{de:0,sq:"rv"},tr:{tp:"sc",ea:"e11",du:2e3,di:"m"}},{n:"Z b f",r:1,c:25,t:{de:0,sq:"fw"},tr:{tp:"sc",ea:"e11",du:2e3,di:"b"}},{n:"Z b e",r:1,c:25,t:{de:0,sq:"fw"},tr:{tp:"sc",ea:"e11",du:2e3,di:"t"}},{n:"Z b Y",r:1,c:25,t:{de:0,sq:"fw"},tr:{tp:"sc",ea:"e11",du:2e3,di:"m"}},{n:"0 b f",r:1,c:25,t:{de:0,sq:"c"},tr:{tp:"sc",ea:"e11",du:2e3,di:"b"}},{n:"0 b e",r:1,c:25,t:{de:0,sq:"c"},tr:{tp:"sc",ea:"e11",du:2e3,di:"t"}},{n:"0 b Y",r:1,c:25,t:{de:0,sq:"c"},tr:{tp:"sc",ea:"e11",du:2e3,di:"m"}},{n:"W b f",r:1,c:25,t:{de:0,sq:"e"},tr:{tp:"sc",ea:"e11",du:2e3,di:"b"}},{n:"W b e",r:1,c:25,t:{de:0,sq:"e"},tr:{tp:"sc",ea:"e11",du:2e3,di:"t"}},{n:"W b Y",r:1,c:25,t:{de:0,sq:"e"},tr:{tp:"sc",ea:"e11",du:2e3,di:"m"}},{n:"W E d q c",r:25,c:1,t:{de:0,sq:"mr"},tr:{tp:"sc",ea:"e11",du:2e3,di:"l"}},{n:"W E c q d",r:25,c:1,t:{de:0,sq:"mr"},tr:{tp:"sc",ea:"e11",du:2e3,di:"r"}},{n:"W F f q e",r:1,c:25,t:{de:0,sq:"mr"},tr:{tp:"sc",ea:"e11",du:2e3,di:"t"}},{n:"W F e q f",r:1,c:25,t:{de:0,sq:"mr"},tr:{tp:"sc",ea:"e11",du:2e3,di:"b"}},{n:"1 2 3 a b c",r:100,c:1,t:{de:3,sq:"c"},tr:{tp:"sl",ea:"e14",du:1e3,di:"l"}},{n:"1 2 3 a b d",r:100,c:1,t:{de:3,sq:"c"},tr:{tp:"sl",ea:"e14",du:1e3,di:"r"}},{n:"1 2 3 a b e",r:1,c:100,t:{de:3,sq:"c"},tr:{tp:"sl",ea:"e14",du:1e3,di:"t"}},{n:"1 2 3 a b f",r:1,c:100,t:{de:3,sq:"c"},tr:{tp:"sl",ea:"e14",du:1e3,di:"b"}},{n:"1 2 4 a b c",r:100,c:1,t:{de:3,sq:"e"},tr:{tp:"sl",ea:"e14",du:1e3,di:"l"}},{n:"1 2 4 a b d",r:100,c:1,t:{de:3,sq:"e"},tr:{tp:"sl",ea:"e14",du:1e3,di:"r"}},{n:"1 2 4 a b e",r:1,c:100,t:{de:3,sq:"e"},tr:{tp:"sl",ea:"e14",du:1e3,di:"t"}},{n:"1 2 4 a b f",r:1,c:100,t:{de:3,sq:"e"},tr:{tp:"sl",ea:"e14",du:1e3,di:"b"}},{n:"5 6 E",r:50,c:1,t:{de:5,sq:"c"},tr:{tp:"sl",ea:"e14",du:1e3,di:"rnd"}},{n:"5 6 F",r:1,c:50,t:{de:5,sq:"c"},tr:{tp:"sl",ea:"e14",du:1e3,di:"rnd"}},{n:"5 7 F",r:1,c:75,t:{de:3,sq:"rnd"},tr:{du:1e3,ea:"e13",tp:"sl",di:"b",_rX:0,_rY:0,_r:10,_s:1}},{rc:10,n:"5 i N",t:{de:50,sq:"ri"},tr:{tp:"sc",ea:"e4",du:500,di:"rnd",_s:0,_o:0}},{rc:10,n:"5 i O",t:{de:50,sq:"ro"},tr:{tp:"sc",ea:"e4",du:500,di:"rnd",_s:0,_o:0}},{rc:"150px",n:"5 i L",t:{de:10,sq:"e"},tr:{tp:"mx",ea:"e28",du:650,di:"rnd",_o:0,_r:20,_br:150}},{rc:"150px",n:"5 8 N 9",t:{de:5,sq:"rnd"},tr:{tp:"f",ea:"e25",du:1e3,di:"n",_s:0,_br:400,_o:0}},{rc:"100px",n:"5 aa i",t:{de:20,sq:"ri"},tr:{tp:"sl",ea:"e25",du:1e3,di:"rnd",_o:0,_s:0}},{n:"ba M q T E",r:1,c:70,t:{de:10,sq:"c"},tr:{tp:"mx",ea:"e13",du:1e3,di:"n",_sY:1.5,_o:0}},{n:"ba M q ca E",r:1,c:70,t:{de:10,sq:"e"},tr:{tp:"mx",ea:"e13",du:1e3,di:"n",_sY:1.5,_o:0}},{n:"ba M q T F",r:70,c:1,t:{de:10,sq:"c"},tr:{tp:"mx",ea:"e13",du:1e3,di:"n",_sX:1.5,_o:0}},{n:"ba M q ca F",r:70,c:1,t:{de:10,sq:"e"},tr:{tp:"mx",ea:"e13",du:1e3,di:"n",_sX:1.5,_o:0}},{n:"da q d",r:50,c:1,t:{de:5,sq:"fw"},tr:{du:1500,ea:"e11",tp:"sl",di:"l",_rX:0,_rY:0,_r:90,_s:1}},{n:"da q c",r:50,c:1,t:{de:5,sq:"fw"},tr:{du:1500,ea:"e11",tp:"sl",di:"r",_rX:0,_rY:0,_r:90,_s:1}},{n:"ea b c",r:50,c:1,t:{de:5,sq:"rnd"},tr:{du:1500,ea:"e26",tp:"sl",di:"l",_rX:0,_rY:0,_r:0,_s:1}},{n:"ea b d",r:50,c:1,t:{de:5,sq:"rnd"},tr:{du:1500,ea:"e26",tp:"sl",di:"r",_rX:0,_rY:0,_r:0,_s:1}},{n:"ea b f",r:1,c:50,t:{de:5,sq:"rnd"},tr:{du:1500,ea:"e26",tp:"sl",di:"b",_rX:0,_rY:0,_r:0,_s:1}},{n:"ea b e",r:1,c:50,t:{de:5,sq:"rnd"},tr:{du:1500,ea:"e26",tp:"sl",di:"t",_rX:0,_rY:0,_r:0,_s:1}},{n:"fa b c",r:50,c:1,t:{de:5,sq:"fw"},tr:{du:1500,ea:"e31",tp:"sl",di:"l",_rX:0,_rY:0,_r:0,_s:1}},{n:"fa b d",r:50,c:1,t:{de:5,sq:"fw"},tr:{du:1500,ea:"e31",tp:"sl",di:"r",_rX:0,_rY:0,_r:0,_s:1}},{n:"fa b f",r:1,c:50,t:{de:5,sq:"fw"},tr:{du:1500,ea:"e31",tp:"sl",di:"b",_rX:0,_rY:0,_r:0,_s:1}},{n:"fa b e",r:1,c:50,t:{de:5,sq:"fw"},tr:{du:1500,ea:"e31",tp:"sl",di:"t",_rX:0,_rY:0,_r:0,_s:1}}],t3d:[{n:"ga J q c ha",r:1,c:1,t:{de:75,sq:"fw"},an:{tr:{_rY:91},ea:"e9",du:1e3,di:"h"},af:{tr:{_rY:180},ea:"e10",du:1e3,di:"h"}},{n:"ga J q d ha",r:1,c:1,t:{de:75,sq:"fw"},an:{tr:{_rY:-91},ea:"e9",du:1e3,di:"h"},af:{tr:{_rY:-180},ea:"e10",du:1e3,di:"h"}},{n:"ga J q e ha",r:1,c:1,t:{de:75,sq:"fw"},an:{tr:{_rX:-91},ea:"e9",du:800,di:"v"},af:{tr:{_rX:-180},ea:"e10",du:800,di:"v"}},{n:"ga J q f ha",r:1,c:1,t:{de:75,sq:"fw"},an:{tr:{_rX:91},ea:"e9",du:800,di:"v"},af:{tr:{_rX:180},ea:"e10",du:800,di:"v"}},{n:"ga i q c ha",r:[2,4],c:[4,7],t:{de:75,sq:"fw"},an:{tr:{_rY:180},ea:"e11",du:1e3,di:"h"}},{n:"ga i q d ha",r:[2,4],c:[4,7],t:{de:75,sq:"rv"},an:{tr:{_rY:-180},ea:"e11",du:1e3,di:"h"}},{n:"ga i q e ha",r:[2,4],c:[4,7],t:{de:75,sq:"cf"},an:{tr:{_rX:-180},ea:"e11",du:1e3,di:"v"}},{n:"ga i q f ha",r:[2,4],c:[4,7],t:{de:75,sq:"cr"},an:{tr:{_rX:180},ea:"e11",du:1e3,di:"v"}},{n:"E ga i r ha",r:[2,4],c:[4,7],t:{de:75,sq:"rnd"},an:{tr:{_rY:180},ea:"e11",du:1300,di:"h"}},{n:"F ga i r ha",r:[2,4],c:[4,7],t:{de:75,sq:"rnd"},an:{tr:{_rX:180},ea:"e11",du:1300,di:"v"}},{n:"M x ga i q c ha",r:[2,4],c:[4,7],t:{de:75,sq:"fw"},be:{tr:{_s3:.95},du:450,ea:"e14"},an:{tr:{_rY:180},ea:"e29",du:1e3,di:"h"},af:{du:350,ea:"e29"}},{n:"M x ga i q d ha",r:[2,4],c:[4,7],t:{de:75,sq:"rv"},be:{tr:{_s3:.95},du:450,ea:"e14"},an:{tr:{_rY:-180},ea:"e29",du:1e3,di:"h"},af:{du:350,ea:"e29"}},{n:"M x ga i q e ha",r:[2,4],c:[4,7],t:{de:75,sq:"cf"},be:{tr:{_s3:.95},du:450,ea:"e14"},an:{tr:{_rX:-180},ea:"e29",du:1e3,di:"v"},af:{du:350,ea:"e29"}},{n:"M x ga i q f ha",r:[2,4],c:[4,7],t:{de:75,sq:"cr"},be:{tr:{_s3:.95},du:450,ea:"e14"},an:{tr:{_rX:180},ea:"e29",du:1e3,di:"v"},af:{du:350,ea:"e29"}},{n:"M x E ga i r ha",r:[2,4],c:[4,7],t:{de:75,sq:"rnd"},be:{tr:{_s3:.95,_rX:30},du:450,ea:"e14"},an:{tr:{_rY:180,_rX:-30},ea:"e29",du:1300,di:"h"},af:{tr:{_rX:0},du:350,ea:"e29"}},{n:"M x F ga i r ha",r:[2,4],c:[4,7],t:{de:75,sq:"rnd"},be:{tr:{_s3:.95,_rY:-15},du:450,ea:"e14"},an:{tr:{_rX:180,_rY:15},ea:"e29",du:1300,di:"v"},af:{tr:{_rY:0},du:350,ea:"e29"}},{n:"ga t q c ha",r:[5,9],c:1,t:{de:75,sq:"fw"},an:{tr:{_rY:180},ea:"e11",du:1500,di:"h"}},{n:"ga t q d ha",r:[5,9],c:1,t:{de:75,sq:"fw"},an:{tr:{_rY:-180},ea:"e11",du:1500,di:"h"}},{n:"ga t q e ha",r:[5,9],c:1,t:{de:75,sq:"fw"},an:{tr:{_rX:-180},ea:"e11",du:1e3,di:"v"}},{n:"ga t q f ha",r:[5,9],c:1,t:{de:75,sq:"rv"},an:{tr:{_rX:180},ea:"e11",du:1e3,di:"v"}},{n:"E ga t r ha",r:[5,9],c:1,t:{de:75,sq:"rnd"},an:{tr:{_rY:180},ea:"e11",du:1500,di:"h"}},{n:"F ga t r ha",r:[5,9],c:1,t:{de:75,sq:"rnd"},an:{tr:{_rX:-180},ea:"e11",du:1500,di:"v"}},{n:"F ga t r ia",r:[3,7],c:1,t:{de:150,sq:"rnd"},an:{tr:{_rX:-540},ea:"e11",du:2e3,di:"v"}},{n:"M x ga t q c ha",r:[5,9],c:1,t:{de:55,sq:"fw"},be:{tr:{_s3:.85},du:600,ea:"e28"},an:{tr:{_rY:180},ea:"e29",du:1200,di:"h"},af:{tr:{de:200},ea:"e28",du:600}},{n:"M x ga t q d ha",r:[5,9],c:1,t:{de:55,sq:"rv"},be:{tr:{_s3:.85},du:600,ea:"e28"},an:{tr:{_rY:-180},ea:"e29",du:1200,di:"h"},af:{tr:{de:200},ea:"e28",du:600}},{n:"M x ga t q e ha",r:[5,9],c:1,t:{de:55,sq:"fw"},be:{tr:{_s3:.85},du:600,ea:"e28"},an:{tr:{_rX:-180},ea:"e11",du:600,di:"v"},af:{tr:{de:200},ea:"e28",du:600}},{n:"M x ga t q f ha",r:[5,9],c:1,t:{de:55,sq:"rv"},be:{tr:{_s3:.85},du:600,ea:"e28"},an:{tr:{_rX:180},ea:"e11",du:600,di:"v"},af:{tr:{de:200},ea:"e28",du:600}},{n:"M x E ga t r ha",r:[5,9],c:1,t:{de:55,sq:"rnd"},be:{tr:{_s3:.85},du:600,ea:"e28"},an:{tr:{_rY:180},ea:"e29",du:1200,di:"h"},af:{tr:{de:200},ea:"e28",du:600}},{n:"M x F ga t r ha",r:[5,9],c:1,t:{de:55,sq:"rnd"},be:{tr:{_s3:.85},du:600,ea:"e28"},an:{tr:{_rX:-180},ea:"e29",du:600,di:"v"},af:{tr:{de:200},ea:"e28",du:600}},{n:"ga w q c ha",r:1,c:[5,9],t:{de:75,sq:"fw"},an:{tr:{_rY:180},ea:"e11",du:1500,di:"h"}},{n:"ga w q d ha",r:1,c:[5,9],t:{de:75,sq:"fw"},an:{tr:{_rY:-180},ea:"e11",du:1500,di:"h"}},{n:"ga w q e ha",r:1,c:[5,9],t:{de:75,sq:"fw"},an:{tr:{_rX:-180},ea:"e11",du:1e3,di:"v"}},{n:"ga w q f ha",r:1,c:[5,9],t:{de:75,sq:"rv"},an:{tr:{_rX:180},ea:"e11",du:1e3,di:"v"}},{n:"E ga w r ha",r:1,c:[5,9],t:{de:75,sq:"rnd"},an:{tr:{_rY:180},ea:"e11",du:1500,di:"h"}},{n:"F ga w r ha",r:1,c:[5,9],t:{de:75,sq:"rnd"},an:{tr:{_rX:-180},ea:"e11",du:1500,di:"v"}},{n:"E ga w r ia",r:1,c:[4,9],t:{de:150,sq:"rnd"},an:{tr:{_rY:540},ea:"e11",du:2e3,di:"h"}},{n:"M x ga w q c ha",r:1,c:[7,11],t:{de:55,sq:"fw"},be:{tr:{_s3:.85},du:600,ea:"e28"},an:{tr:{_rY:180},ea:"e11",du:600,di:"h"},af:{tr:{de:200},ea:"e28",du:600}},{n:"M x ga w q d ha",r:1,c:[7,11],t:{de:55,sq:"rv"},be:{tr:{_s3:.85},du:600,ea:"e28"},an:{tr:{_rY:-180},ea:"e11",du:600,di:"h"},af:{tr:{de:200},ea:"e28",du:600}},{n:"M x ga w q e ha",r:1,c:[7,11],t:{de:55,sq:"fw"},be:{tr:{_s3:.85},du:600,ea:"e28"},an:{tr:{_rX:-180},ea:"e29",du:1200,di:"v"},af:{tr:{de:200},ea:"e28",du:600}},{n:"M x ga w q f ha",r:1,c:[7,11],t:{de:75,sq:"rv"},be:{tr:{_s3:.85},du:600,ea:"e28"},an:{tr:{_rX:180},ea:"e29",du:1200,di:"v"},af:{tr:{de:200},ea:"e28",du:600}},{n:"M x E ga w r ha",r:1,c:[7,11],t:{de:75,sq:"rnd"},be:{tr:{_s3:.85},du:600,ea:"e28"},an:{tr:{_rY:180},ea:"e29",du:600,di:"h"},af:{tr:{de:200},ea:"e28",du:600}},{n:"M x F ga w r ha",r:1,c:[7,11],t:{de:75,sq:"rnd"},be:{tr:{_s3:.85},du:600,ea:"e28"},an:{tr:{_rX:-180},ea:"e29",du:1200,di:"v"},af:{tr:{de:200},ea:"e28",du:600}},{n:"ja ka M x ga q c ha",r:1,c:[7,11],t:{de:75,sq:"fw"},be:{tr:{_s3:.85,_rX:-30},du:600,ea:"e10"},an:{tr:{_rX:-30,_rY:180},ea:"e11",du:1e3,di:"h"},af:{tr:{_rX:0,de:200},ea:"e10",du:600}},{n:"ja ka M x ga q d ha",r:1,c:[7,11],t:{de:75,sq:"rv"},be:{tr:{_s3:.85,_rX:-30},du:600,ea:"e10"},an:{tr:{_rX:30,_rY:-180},ea:"e11",du:1e3,di:"h"},af:{tr:{_rX:0,de:200},ea:"e10",du:600}},{n:"I la q c ma",r:1,c:1,t:{de:75,sq:"fw"},an:{tr:{_rY:90},ea:"e11",du:1500,di:"h"}},{n:"I la q d ma",r:1,c:1,t:{de:75,sq:"fw"},an:{tr:{_rY:-90},ea:"e11",du:1500,di:"h"}},{n:"I la q e ma",r:1,c:1,t:{de:75,sq:"fw"},an:{tr:{_rX:-90},ea:"e11",du:1500,di:"v"}},{n:"I la q f ma",r:1,c:1,t:{de:75,sq:"fw"},an:{tr:{_rX:90},ea:"e11",du:1500,di:"v"}},{n:"M x I la q c ma",r:1,c:1,t:{de:75,sq:"rnd"},an:{tr:{_s3:.8,_r:7,_rX:10,_rY:45},ea:"e5",du:800,di:"h"},af:{tr:{_r:0,_rX:0,_rY:90},du:800,ea:"e5"}},{n:"M x I la q d ma",r:1,c:1,t:{de:75,sq:"rnd"},an:{tr:{_s3:.8,_r:-7,_rX:10,_rY:-45},ea:"e5",du:800,di:"h"},af:{tr:{_r:0,_rX:0,_rY:-90},du:800,ea:"e5"}},{n:"M x I na q c ma",r:[2,4],c:[4,7],t:{de:75,sq:"fw"},be:{tr:{_s3:.85},du:450,ea:"e14"},an:{tr:{_rY:90},ea:"e29",du:1e3,di:"h"},af:{du:350,ea:"e29"}},{n:"M x I na q d ma",r:[2,4],c:[4,7],t:{de:75,sq:"rv"},be:{tr:{_s3:.85},du:450,ea:"e14"},an:{tr:{_rY:-90},ea:"e29",du:1e3,di:"h"},af:{du:350,ea:"e29"}},{n:"M x I na q e ma",r:[2,4],c:[4,7],t:{de:75,sq:"cf"},be:{tr:{_s3:.85},du:450,ea:"e14"},an:{tr:{_rX:-90},ea:"e29",du:1e3,di:"v"},af:{du:350,ea:"e29"}},{n:"M x I na q f ma",r:[2,4],c:[4,7],t:{de:75,sq:"cr"},be:{tr:{_s3:.85},du:450,ea:"e14"},an:{tr:{_rX:90},ea:"e29",du:1e3,di:"v"},af:{du:350,ea:"e29"}},{n:"M x E I na r ma",r:[2,4],c:[4,7],t:{de:75,sq:"rnd"},be:{tr:{_s3:.75,_rX:-15},du:700,ea:"e14"},an:{tr:{_rY:75,_rX:15},ea:"e29",du:700,di:"h"},af:{tr:{_rY:90,_rX:0},du:700,ea:"e29"}},{n:"M x F I na r ma",r:[2,4],c:[4,7],t:{de:75,sq:"rnd"},be:{tr:{_s3:.75,_rY:15},du:700,ea:"e14"},an:{tr:{_rX:75,_rY:-15},ea:"e29",du:700,di:"v"},af:{tr:{_rX:90,_rY:0},du:700,ea:"e29"}},{n:"I t q c ma",r:[5,9],c:1,t:{de:75,sq:"fw"},an:{tr:{_rY:90},ea:"e11",du:1500,di:"h"}},{n:"I t q d ma",r:[5,9],c:1,t:{de:75,sq:"fw"},an:{tr:{_rY:-90},ea:"e11",du:1500,di:"h"}},{n:"E I t r ma",r:[5,9],c:1,t:{de:75,sq:"rnd"},an:{tr:{_rY:90},ea:"e11",du:1500,di:"h"}},{n:"M x I t q c ma",r:[5,9],c:1,t:{de:75,sq:"fw"},be:{tr:{_s3:.85},du:600,ea:"e28"},an:{tr:{_rY:87},ea:"e29",du:1e3,di:"h"},af:{tr:{de:200,_rY:90},ea:"e28",du:600}},{n:"M x I t q d ma",r:[5,9],c:1,t:{de:75,sq:"rv"},be:{tr:{_s3:.85},du:600,ea:"e28"},an:{tr:{_rY:-90},ea:"e29",du:1e3,di:"h"},af:{tr:{de:200},ea:"e28",du:600}},{n:"M x I t q e ma",r:[5,9],c:1,t:{de:75,sq:"fw"},be:{tr:{_s3:.85},du:600,ea:"e28"},an:{tr:{_rX:-90},ea:"e29",du:1e3,di:"v"},af:{tr:{de:200},ea:"e28",du:600}},{n:"M x I t q f ma",r:[5,9],c:1,t:{de:75,sq:"rv"},be:{tr:{_s3:.85},du:600,ea:"e28"},an:{tr:{_rX:90},ea:"e29",du:1e3,di:"v"},af:{tr:{de:200},ea:"e28",du:600}},{n:"M x E I t r ma",r:[5,9],c:1,t:{de:75,sq:"rnd"},be:{tr:{_s3:.85},du:600,ea:"e28"},an:{tr:{_rY:90},ea:"e29",du:1e3,di:"h"},af:{tr:{de:200},ea:"e28",du:600}},{n:"M x F I t r ma",r:[5,9],c:1,t:{de:75,sq:"rnd"},be:{tr:{_s3:.85},du:600,ea:"e28"},an:{tr:{_rX:-90},ea:"e29",du:1e3,di:"v"},af:{tr:{de:200},ea:"e28",du:600}},{n:"M x E I ja t q c ma",r:[7,11],c:1,t:{de:75,sq:"fw"},an:{tr:{_s3:.85,_rY:45},ea:"e14",du:1e3,di:"h"},af:{tr:{_rY:90},ea:"e14",du:1e3}},{n:"M x E I ja t q d ma",r:[7,11],c:1,t:{de:75,sq:"rv"},an:{tr:{_s3:.85,_rY:-45},ea:"e14",du:1e3,di:"h"},af:{tr:{_rY:-90},ea:"e14",du:1e3}},{n:"I w q e ma",r:1,c:[5,9],t:{de:75,sq:"fw"},an:{tr:{_rX:-90},ea:"e11",du:1e3,di:"v"}},{n:"I w q f ma",r:1,c:[5,9],t:{de:75,sq:"rv"},an:{tr:{_rX:90},ea:"e11",du:1e3,di:"v"}},{n:"F I w r ma",r:1,c:[5,9],t:{de:75,sq:"rnd"},an:{tr:{_rX:-90},ea:"e11",du:1e3,di:"v"}},{n:"M x I w q e ma",r:1,c:[7,11],t:{de:75,sq:"fw"},be:{tr:{_s3:.85},du:600,ea:"e28"},an:{tr:{_rX:-90},ea:"e29",du:1e3,di:"v"},af:{tr:{de:200},ea:"e28",du:600}},{n:"M x I w q f ma",r:1,c:[7,11],t:{de:75,sq:"rv"},be:{tr:{_s3:.85},du:600,ea:"e28"},an:{tr:{_rX:90},ea:"e29",du:1e3,di:"v"},af:{tr:{de:200},ea:"e28",du:600}},{n:"M x I w q c ma",r:1,c:[7,11],t:{de:75,sq:"fw"},be:{tr:{_s3:.85},du:600,ea:"e28"},an:{tr:{_rY:90},ea:"e29",du:1e3,di:"h"},af:{tr:{de:200},ea:"e28",du:600}},{n:"M x I w q d ma",r:1,c:[7,11],t:{de:75,sq:"rv"},be:{tr:{_s3:.85},du:600,ea:"e28"},an:{tr:{_rY:-90},ea:"e29",du:1e3,di:"h"},af:{tr:{de:200},ea:"e28",du:600}},{n:"M x E I w r ma",r:1,c:[7,11],t:{de:75,sq:"rnd"},be:{tr:{_s3:.85},du:600,ea:"e28"},an:{tr:{_rY:90},ea:"e29",du:1e3,di:"h"},af:{tr:{de:200},ea:"e28",du:600}},{n:"M x F I w r ma",r:1,c:[7,11],t:{de:75,sq:"rnd"},be:{tr:{_s3:.85},du:600,ea:"e28"},an:{tr:{_rX:-90},ea:"e29",du:1e3,di:"v"},af:{tr:{de:200},ea:"e28",du:600}},{n:"M x F I ja w q c ma",r:1,c:[7,11],t:{de:75,sq:"fw"},an:{tr:{_s3:.85,_rX:45},ea:"e14",du:1e3,di:"v"},af:{tr:{_rX:90},ea:"e14",du:1e3}},{n:"M x F I ja w q d ma",r:1,c:[7,11],t:{de:75,sq:"rv"},an:{tr:{_s3:.85,_rX:-45},ea:"e14",du:1e3,di:"v"},af:{tr:{_rX:-90},ea:"e14",du:1e3}},{n:"ga la q c oa pa qa",r:1,c:1,t:{de:75,sq:"fw",d:"la"},an:{tr:{_rY:180},ea:"e11",du:1500,di:"h"}},{n:"ga la q d oa pa qa",r:1,c:1,t:{de:75,sq:"fw",d:"la"},an:{tr:{_rY:-180},ea:"e11",du:1500,di:"h"}},{n:"ga la q e oa pa qa",r:1,c:1,t:{de:75,sq:"fw",d:"la"},an:{tr:{_rX:-180},ea:"e11",du:1500,di:"v"}},{n:"ga la q f oa pa qa",r:1,c:1,t:{de:75,sq:"fw",d:"la"},an:{tr:{_rX:180},ea:"e11",du:1500,di:"v"}},{n:"M x ga na q c oa pa qa",r:[2,4],c:[4,7],t:{de:75,sq:"fw",d:"la"},be:{tr:{_s3:.85},du:450,ea:"e14"},an:{tr:{_rY:180},ea:"e29",du:1e3,di:"h"},af:{du:350,ea:"e29"}},{n:"M x ga na q d oa pa qa",r:[2,4],c:[4,7],t:{de:75,sq:"rv",d:"la"},be:{tr:{_s3:.85},du:450,ea:"e14"},an:{tr:{_rY:-180},ea:"e29",du:1e3,di:"h"},af:{du:350,ea:"e29"}},{n:"M x ga na q e oa pa qa",r:[2,4],c:[4,7],t:{de:75,sq:"cf",d:"la"},be:{tr:{_s3:.85},du:450,ea:"e14"},an:{tr:{_rX:-180},ea:"e29",du:1e3,di:"v"},af:{du:350,ea:"e29"}},{n:"M x ga na q f oa pa qa",r:[2,4],c:[4,7],t:{de:75,sq:"cr",d:"la"},be:{tr:{_s3:.85},du:450,ea:"e14"},an:{tr:{_rX:180},ea:"e29",du:1e3,di:"v"},af:{du:350,ea:"e29"}},{n:"M x E ga na r oa pa qa",r:[2,4],c:[4,7],t:{de:75,sq:"rnd",d:"la"},be:{tr:{_s3:.65},du:700,ea:"e14"},an:{tr:{_rY:180},ea:"e29",du:700,di:"h"},af:{du:700,ea:"e29"}},{n:"M x F ga na r oa pa qa",r:[2,4],c:[4,7],t:{de:75,sq:"rnd",d:"la"},be:{tr:{_s3:.65},du:700,ea:"e14"},an:{tr:{_rX:180},ea:"e29",du:700,di:"v"},af:{du:700,ea:"e29"}},{n:"M x ga t q c oa pa qa",r:[5,9],c:1,t:{de:65,sq:"fw",d:"la"},be:{tr:{_s3:.85},du:600,ea:"e28"},an:{tr:{_rY:180},ea:"e11",du:1200,di:"h"},af:{tr:{de:200},ea:"e10",du:400}},{n:"M x ga t q d oa pa qa",r:[5,9],c:1,t:{de:65,sq:"rv",d:"la"},be:{tr:{_s3:.85},du:600,ea:"e28"},an:{tr:{_rY:-180},ea:"e11",du:1200,di:"h"},af:{tr:{de:200},ea:"e10",du:400}},{n:"M x ga t q e oa pa qa",r:[5,9],c:1,t:{de:65,sq:"fw",d:"la"},be:{tr:{_s3:.85},du:600,ea:"e28"},an:{tr:{_rX:-180},ea:"e29",du:1e3,di:"v"},af:{tr:{de:200},ea:"e10",du:400}},{n:"M x ga t q f oa pa qa",r:[5,9],c:1,t:{de:65,sq:"rv",d:"la"},be:{tr:{_s3:.85},du:600,ea:"e28"},an:{tr:{_rX:180},ea:"e29",du:1e3,di:"v"},af:{tr:{de:200},ea:"e10",du:400}},{n:"M x E ga t r oa pa qa",r:[5,9],c:1,t:{de:65,sq:"rnd",d:"la"},be:{tr:{_s3:.85},du:600,ea:"e28"},an:{tr:{_rY:180},ea:"e11",du:1200,di:"h"},af:{tr:{de:200},ea:"e10",du:400}},{n:"M x F ga t r oa pa qa",r:[5,9],c:1,t:{de:65,sq:"rnd",d:"la"},be:{tr:{_s3:.85},du:600,ea:"e28"},an:{tr:{_rX:-180},ea:"e29",du:1e3,di:"v"},af:{tr:{de:200},ea:"e10",du:400}},{n:"M x ga w q e oa pa qa",r:1,c:[7,11],t:{de:65,sq:"fw",d:"la"},be:{tr:{_s3:.85},du:600,ea:"e28"},an:{tr:{_rX:-180},ea:"e11",du:1200,di:"v"},af:{tr:{de:200},ea:"e10",du:400}},{n:"M x ga w q f oa pa qa",r:1,c:[7,11],t:{de:65,sq:"rv",d:"la"},be:{tr:{_s3:.85},du:600,ea:"e28"},an:{tr:{_rX:180},ea:"e11",du:1200,di:"v"},af:{tr:{de:200},ea:"e10",du:400}},{n:"M x ga w q c oa pa qa",r:1,c:[7,11],t:{de:65,sq:"fw",d:"la"},be:{tr:{_s3:.85},du:600,ea:"e28"},an:{tr:{_rY:180},ea:"e29",du:1e3,di:"h"},af:{tr:{de:200},ea:"e10",du:400}},{n:"M x ga w q d oa pa qa",r:1,c:[7,11],t:{de:65,sq:"rv",d:"la"},be:{tr:{_s3:.85},du:600,ea:"e28"},an:{tr:{_rY:-180},ea:"e29",du:1e3,di:"h"},af:{tr:{de:200},ea:"e10",du:400}},{n:"M x E ga w r oa pa qa",r:1,c:[7,11],t:{de:65,sq:"rnd",d:"la"},be:{tr:{_s3:.85},du:600,ea:"e28"},an:{tr:{_rY:180},ea:"e29",du:1e3,di:"h"},af:{tr:{de:200},ea:"e10",du:400}},{n:"M x F ga w r oa pa qa",r:1,c:[7,11],t:{de:65,sq:"rnd",d:"la"},be:{tr:{_s3:.85},du:600,ea:"e28"},an:{tr:{_rX:-180},ea:"e11",du:1200,di:"v"},af:{tr:{de:200},ea:"e10",du:400}},{n:"ra L x h sa",r:1,c:1,t:{de:1,sq:"fw",d:"la"},be:{tr:{_s3:.65,_rY:-270},du:1500,ea:"e9"},an:{tr:{_s3:1,_rY:-540},ea:"e10",du:1500,di:"h"}},{n:"ta L x h sa",r:1,c:1,t:{de:1,sq:"fw",d:"la"},be:{tr:{_s3:.65,_rX:-270},du:1500,ea:"e9"},an:{tr:{_s3:1,_rX:-540},ea:"e10",du:1500,di:"v"}},{n:"ra L x h na",r:[2,3],c:[3,5],t:{de:50,sq:"rnd"},be:{tr:{_s3:.75},du:350,ea:"e9"},an:{tr:{_rY:-45,_rX:180},ea:"e11",du:1,di:"v"},af:{tr:{_rY:0},ea:"e10",du:1200}},{n:"ta L x h na",r:[2,3],c:[3,5],t:{de:50,sq:"rnd"},be:{tr:{_s3:.75},du:350,ea:"e9"},an:{tr:{_rX:-45,_rY:180},ea:"e11",du:1,di:"h"},af:{tr:{_rX:0},ea:"e10",du:1200}}]},_lsSwapObj=function(e){for(var r in e)e[e[r]]=r,delete e[r]},_lsConvTrProp=function(e,r){var d,a,t={af:"after",an:"animation",be:"before",c:"cols",d:"depth",de:"delay",di:"direction",du:"duration",ea:"easing",n:"name",r:"rows",sq:"sequence",t:"tile",tp:"type",tr:"transition",_br:"borderRadius",_o:"opacity",_r:"rotate",_rX:"rotateX",_rY:"rotateY",_s:"scale",_s3:"scale3d",_sX:"scaleX",_sY:"scaleY",_skX:"skewX",_skY:"skewY"},n={b:"bottom",bl:"bottomleft",br:"bottomright",c:"center",cf:"col-forward",cr:"col-reverse",e:"edge",f:"fade",fw:"forward",h:"horizontal",l:"left",la:"large",m:"middle",mr:"mirror",mx:"mixed",n:"none",r:"right",ri:"radial-in",rnd:"random",ro:"radial-out",rv:"reverse",sc:"scale",sl:"slide",t:"top",tl:"topleft",tr:"topright",v:"vertical",e1:"linear",e2:"swing",e3:"easeInQuad",e4:"easeOutQuad",e5:"easeInOutQuad",e6:"easeInCubic",e7:"easeOutCubic",e8:"easeInOutCubic",e9:"easeInQuart",e10:"easeOutQuart",e11:"easeInOutQuart",e12:"easeInQuint",e13:"easeOutQuint",e14:"easeInOutQuint",e15:"easeInSine",e16:"easeOutSine",e17:"easeInOutSine",e18:"easeInExpo",e19:"easeOutExpo",e20:"easeInOutExpo",e21:"easeInCirc",e22:"easeOutCirc",e23:"easeInOutCirc",e24:"easeInElastic",e25:"easeOutElastic",e26:"easeInOutElastic",e27:"easeInBack",e28:"easeOutBack",e29:"easeInOutBack",e30:"easeInBounce",e31:"easeOutBounce",e32:"easeInOutBounce"},s=function(e){for(var r in e)"object"==typeof e[r]&&s(e[r]),t[r]&&(d=t[r],a=e[r],n[e[r]]&&(a=n[e[r]]),e[d]=a,delete e[r])};return r?(_lsSwapObj(t),_lsSwapObj(n)):_lsConvTrNames(e),s(e),e},_lsConvTrNames=function(e,t){var n,s,u,c={sliding:"a",from:"b",right:"c",left:"d",bottom:"e",top:"f",crossfading:"g",fading:"h",tiles:"i",forward:"j",reverse:"k","col-forward":"l","col-reverse":"m","(random)":"n",smooth:"o",sliging:"p",to:"q",random:"r",directions:"s",rows:"t","(forward)":"u","(reverse)":"v",columns:"w",and:"x","top-left":"y","bottom-right":"z","top-right":"A","bottom-left":"B",carousel:"C",cols:"D",horizontal:"E",vertical:"F","carousel-mirror":"G",mirror:"H",turning:"I",tile:"J",flying:"K",rotating:"L",scaling:"M",in:"N",out:"O","mirror-sliding":"P",diagonal:"Q",slices:"R","top-scaling":"S",center:"T","bottom-scaling":"U","middle-scaling":"V","edge-scaling":"W","left-scaling":"X",middle:"Y","right-scaling":"Z","center-scaling":"0",pinched:"1",at:"2","edges,":"3","center,":"4",glitch:"5",slide:"6",spikes:"7",popping:"8",elastic:"9",mosaic:"aa",liquid:"ba",edges:"ca",tornado:"da",fluid:"ea",bounce:"fa",spinning:"ga","(180°)":"ha","(540°)":"ia",drunk:"ja",colums:"ka",cuboid:"la","(90°)":"ma",cuboids:"na","(180°,":"oa",large:"pa","depth)":"qa",horizontally:"ra",cube:"sa",vertically:"ta"},i=charSet2="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789".split(""),q=0,_=-1,f=i.length,l=function(e){for(var r in e)if("object"==typeof e[r]&&l(e[r]),"n"===r)if(s=n="",t){for(var d in u=e[r].toLowerCase().split(" "))c[u[d]]?s+=c[u[d]]+" ":(n=i[q]+(-1<_?charSet2[_]:""),c[u[d]]=n,q===f-1?(q=0,_++):q++,s+=n+" ");e[r]=s.trim()}else{for(var a in u=e[r].split(" "))n+=c[u[a]]+" ";e[r]=(n.charAt(0).toUpperCase()+n.slice(1)).trim()}};if(t||_lsSwapObj(c),l(e),t)return c};
// source --> https://ermafa-passage.de/wp-content/plugins/the-events-calendar/common/build/js/tribe-common.js?ver=9c44e11f3503a33e9540 
String.prototype.className=function(){return"string"!=typeof this&&!this instanceof String||"function"!=typeof this.replace?this:this.replace(".","")},String.prototype.varName=function(){return"string"!=typeof this&&!this instanceof String||"function"!=typeof this.replace?this:this.replace("-","_")},function(){const t=new URL(window.location.href).hash;if(!t||!t.match("#(tribe|tec)"))return;let e=!0;const n=new MutationObserver((function(){e=!0}));n.observe(window.document,{attributes:!0,childList:!0,characterData:!0,subtree:!0});const i=function(){if(e)e=!1,setTimeout(i,250);else{n.takeRecords(),n.disconnect();const e=document.getElementById(t.substring(1));e&&e.scrollIntoView()}};i()}(),window.tribe=window.tribe||{},window.tec=window.tec||{},window.tec=window.tec||{},window.tec.common=window.tec.common||{},window.tec.common.tribeCommon={};
// source --> https://ermafa-passage.de/wp-content/plugins/the-events-calendar/build/js/views/breakpoints.js?ver=4208de2df2852e0b91ec 
tribe.events=tribe.events||{},tribe.events.views=tribe.events.views||{},tribe.events.views.breakpoints={},function(e,t){"use strict";const n=e(document);t.selectors={container:'[data-js="tribe-events-view"]',dataScript:'[data-js="tribe-events-view-data"]',breakpointClassPrefix:"tribe-common--breakpoint-"},t.breakpoints={},t.setContainerClasses=function(e,n){Object.keys(n.breakpoints).forEach((function(i){const s=t.selectors.breakpointClassPrefix+i;t.breakpoints[i]=n.breakpoints[i],e.outerWidth()<n.breakpoints[i]?e.removeClass(s):e.addClass(s)}))},t.handleResize=function(e){t.setContainerClasses(e.data.container,e.data.data)},t.unbindEvents=function(e){e.off("resize.tribeEvents",t.handleResize).off("beforeAjaxSuccess.tribeEvents",t.deinit)},t.bindEvents=function(e,n){e.on("resize.tribeEvents",{container:e,data:n},t.handleResize).on("beforeAjaxSuccess.tribeEvents",{container:e},t.deinit)},t.deinit=function(e,n,i){t.unbindEvents(e.data.container)},t.initTasks=function(n,i){n instanceof jQuery||(n=e(n)),t.bindEvents(n,i),t.setContainerClasses(n,i),n.data("tribeEventsBreakpoints",{initialized:!0})},t.init=function(n,i,s,a){s instanceof jQuery||(s=e(s));const o=s.data("tribeEventsBreakpoints");o&&o.initialized||t.initTasks(s,a)},t.setup=function(n){const i=e(n);if(!i.is(t.selectors.container))return;const s=i.find(t.selectors.dataScript);let a={};s.length&&(a=JSON.parse(s.text().trim())),t.initTasks(i,a)},t.ready=function(){n.on("afterSetup.tribeEvents",t.selectors.container,t.init)},e(t.ready)}(jQuery,tribe.events.views.breakpoints),window.tec=window.tec||{},window.tec.events=window.tec.events||{},window.tec.events.views=window.tec.events.views||{},window.tec.events.views.breakpoints={};
// source --> https://ermafa-passage.de/wp-content/plugins/osm/js/OL/2.13.1/OpenLayers.js?ver=6.9.4 
/*

  OpenLayers.js -- OpenLayers Map Viewer Library

  Copyright (c) 2006-2013 by OpenLayers Contributors
  Published under the 2-clause BSD license.
  See http://openlayers.org/dev/license.txt for the full text of the license, and http://openlayers.org/dev/authors.txt for full list of contributors.

  Includes compressed code under the following licenses:

  (For uncompressed versions of the code used, please see the
  OpenLayers Github repository: <https://github.com/openlayers/openlayers>)

*/

/**
 * Contains XMLHttpRequest.js <http://code.google.com/p/xmlhttprequest/>
 * Copyright 2007 Sergey Ilinsky (http://www.ilinsky.com)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * http://www.apache.org/licenses/LICENSE-2.0
 */

/**
 * OpenLayers.Util.pagePosition is based on Yahoo's getXY method, which is
 * Copyright (c) 2006, Yahoo! Inc.
 * All rights reserved.
 * 
 * Redistribution and use of this software in source and binary forms, with or
 * without modification, are permitted provided that the following conditions
 * are met:
 * 
 * * Redistributions of source code must retain the above copyright notice,
 *   this list of conditions and the following disclaimer.
 * 
 * * Redistributions in binary form must reproduce the above copyright notice,
 *   this list of conditions and the following disclaimer in the documentation
 *   and/or other materials provided with the distribution.
 * 
 * * Neither the name of Yahoo! Inc. nor the names of its contributors may be
 *   used to endorse or promote products derived from this software without
 *   specific prior written permission of Yahoo! Inc.
 * 
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
 * POSSIBILITY OF SUCH DAMAGE.
 */
var OpenLayers={VERSION_NUMBER:"Release 2.13.1",singleFile:!0,_getScriptLocation:function(){for(var a=/(^|(.*?\/))(OpenLayers[^\/]*?\.js)(\?|$)/,b=document.getElementsByTagName("script"),c,d="",e=0,f=b.length;e<f;e++)if(c=b[e].getAttribute("src"))if(c=c.match(a)){d=c[1];break}return function(){return d}}(),ImgPath:""};OpenLayers.Class=function(){var a=arguments.length,b=arguments[0],c=arguments[a-1],d="function"==typeof c.initialize?c.initialize:function(){b.prototype.initialize.apply(this,arguments)};1<a?(a=[d,b].concat(Array.prototype.slice.call(arguments).slice(1,a-1),c),OpenLayers.inherit.apply(null,a)):d.prototype=c;return d};
OpenLayers.inherit=function(a,b){var c=function(){};c.prototype=b.prototype;a.prototype=new c;var d,e,c=2;for(d=arguments.length;c<d;c++)e=arguments[c],"function"===typeof e&&(e=e.prototype),OpenLayers.Util.extend(a.prototype,e)};OpenLayers.Util=OpenLayers.Util||{};OpenLayers.Util.extend=function(a,b){a=a||{};if(b){for(var c in b){var d=b[c];void 0!==d&&(a[c]=d)}"function"==typeof window.Event&&b instanceof window.Event||(!b.hasOwnProperty||!b.hasOwnProperty("toString"))||(a.toString=b.toString)}return a};OpenLayers.String={startsWith:function(a,b){return 0==a.indexOf(b)},contains:function(a,b){return-1!=a.indexOf(b)},trim:function(a){return a.replace(/^\s\s*/,"").replace(/\s\s*$/,"")},camelize:function(a){a=a.split("-");for(var b=a[0],c=1,d=a.length;c<d;c++)var e=a[c],b=b+(e.charAt(0).toUpperCase()+e.substring(1));return b},format:function(a,b,c){b||(b=window);return a.replace(OpenLayers.String.tokenRegEx,function(a,e){for(var f,g=e.split(/\.+/),h=0;h<g.length;h++){0==h&&(f=b);if(void 0===f)break;
f=f[g[h]]}"function"==typeof f&&(f=c?f.apply(null,c):f());return"undefined"==typeof f?"undefined":f})},tokenRegEx:/\$\{([\w.]+?)\}/g,numberRegEx:/^([+-]?)(?=\d|\.\d)\d*(\.\d*)?([Ee]([+-]?\d+))?$/,isNumeric:function(a){return OpenLayers.String.numberRegEx.test(a)},numericIf:function(a,b){var c=a;!0===b&&(null!=a&&a.replace)&&(a=a.replace(/^\s*|\s*$/g,""));return OpenLayers.String.isNumeric(a)?parseFloat(a):c}};
OpenLayers.Number={decimalSeparator:".",thousandsSeparator:",",limitSigDigs:function(a,b){var c=0;0<b&&(c=parseFloat(a.toPrecision(b)));return c},format:function(a,b,c,d){b="undefined"!=typeof b?b:0;c="undefined"!=typeof c?c:OpenLayers.Number.thousandsSeparator;d="undefined"!=typeof d?d:OpenLayers.Number.decimalSeparator;null!=b&&(a=parseFloat(a.toFixed(b)));var e=a.toString().split(".");1==e.length&&null==b&&(b=0);a=e[0];if(c)for(var f=/(-?[0-9]+)([0-9]{3})/;f.test(a);)a=a.replace(f,"$1"+c+"$2");
0==b?b=a:(c=1<e.length?e[1]:"0",null!=b&&(c+=Array(b-c.length+1).join("0")),b=a+d+c);return b},zeroPad:function(a,b,c){for(a=a.toString(c||10);a.length<b;)a="0"+a;return a}};
OpenLayers.Function={bind:function(a,b){var c=Array.prototype.slice.apply(arguments,[2]);return function(){var d=c.concat(Array.prototype.slice.apply(arguments,[0]));return a.apply(b,d)}},bindAsEventListener:function(a,b){return function(c){return a.call(b,c||window.event)}},False:function(){return!1},True:function(){return!0},Void:function(){}};
OpenLayers.Array={filter:function(a,b,c){var d=[];if(Array.prototype.filter)d=a.filter(b,c);else{var e=a.length;if("function"!=typeof b)throw new TypeError;for(var f=0;f<e;f++)if(f in a){var g=a[f];b.call(c,g,f,a)&&d.push(g)}}return d}};OpenLayers.Bounds=OpenLayers.Class({left:null,bottom:null,right:null,top:null,centerLonLat:null,initialize:function(a,b,c,d){OpenLayers.Util.isArray(a)&&(d=a[3],c=a[2],b=a[1],a=a[0]);null!=a&&(this.left=OpenLayers.Util.toFloat(a));null!=b&&(this.bottom=OpenLayers.Util.toFloat(b));null!=c&&(this.right=OpenLayers.Util.toFloat(c));null!=d&&(this.top=OpenLayers.Util.toFloat(d))},clone:function(){return new OpenLayers.Bounds(this.left,this.bottom,this.right,this.top)},equals:function(a){var b=!1;null!=
a&&(b=this.left==a.left&&this.right==a.right&&this.top==a.top&&this.bottom==a.bottom);return b},toString:function(){return[this.left,this.bottom,this.right,this.top].join()},toArray:function(a){return!0===a?[this.bottom,this.left,this.top,this.right]:[this.left,this.bottom,this.right,this.top]},toBBOX:function(a,b){null==a&&(a=6);var c=Math.pow(10,a),d=Math.round(this.left*c)/c,e=Math.round(this.bottom*c)/c,f=Math.round(this.right*c)/c,c=Math.round(this.top*c)/c;return!0===b?e+","+d+","+c+","+f:d+
","+e+","+f+","+c},toGeometry:function(){return new OpenLayers.Geometry.Polygon([new OpenLayers.Geometry.LinearRing([new OpenLayers.Geometry.Point(this.left,this.bottom),new OpenLayers.Geometry.Point(this.right,this.bottom),new OpenLayers.Geometry.Point(this.right,this.top),new OpenLayers.Geometry.Point(this.left,this.top)])])},getWidth:function(){return this.right-this.left},getHeight:function(){return this.top-this.bottom},getSize:function(){return new OpenLayers.Size(this.getWidth(),this.getHeight())},
getCenterPixel:function(){return new OpenLayers.Pixel((this.left+this.right)/2,(this.bottom+this.top)/2)},getCenterLonLat:function(){this.centerLonLat||(this.centerLonLat=new OpenLayers.LonLat((this.left+this.right)/2,(this.bottom+this.top)/2));return this.centerLonLat},scale:function(a,b){null==b&&(b=this.getCenterLonLat());var c,d;"OpenLayers.LonLat"==b.CLASS_NAME?(c=b.lon,d=b.lat):(c=b.x,d=b.y);return new OpenLayers.Bounds((this.left-c)*a+c,(this.bottom-d)*a+d,(this.right-c)*a+c,(this.top-d)*a+
d)},add:function(a,b){if(null==a||null==b)throw new TypeError("Bounds.add cannot receive null values");return new OpenLayers.Bounds(this.left+a,this.bottom+b,this.right+a,this.top+b)},extend:function(a){if(a)switch(a.CLASS_NAME){case "OpenLayers.LonLat":this.extendXY(a.lon,a.lat);break;case "OpenLayers.Geometry.Point":this.extendXY(a.x,a.y);break;case "OpenLayers.Bounds":this.centerLonLat=null;if(null==this.left||a.left<this.left)this.left=a.left;if(null==this.bottom||a.bottom<this.bottom)this.bottom=
a.bottom;if(null==this.right||a.right>this.right)this.right=a.right;if(null==this.top||a.top>this.top)this.top=a.top}},extendXY:function(a,b){this.centerLonLat=null;if(null==this.left||a<this.left)this.left=a;if(null==this.bottom||b<this.bottom)this.bottom=b;if(null==this.right||a>this.right)this.right=a;if(null==this.top||b>this.top)this.top=b},containsLonLat:function(a,b){"boolean"===typeof b&&(b={inclusive:b});b=b||{};var c=this.contains(a.lon,a.lat,b.inclusive),d=b.worldBounds;d&&!c&&(c=d.getWidth(),
d=Math.round((a.lon-(d.left+d.right)/2)/c),c=this.containsLonLat({lon:a.lon-d*c,lat:a.lat},{inclusive:b.inclusive}));return c},containsPixel:function(a,b){return this.contains(a.x,a.y,b)},contains:function(a,b,c){null==c&&(c=!0);if(null==a||null==b)return!1;a=OpenLayers.Util.toFloat(a);b=OpenLayers.Util.toFloat(b);var d=!1;return d=c?a>=this.left&&a<=this.right&&b>=this.bottom&&b<=this.top:a>this.left&&a<this.right&&b>this.bottom&&b<this.top},intersectsBounds:function(a,b){"boolean"===typeof b&&(b=
{inclusive:b});b=b||{};if(b.worldBounds){var c=this.wrapDateLine(b.worldBounds);a=a.wrapDateLine(b.worldBounds)}else c=this;null==b.inclusive&&(b.inclusive=!0);var d=!1,e=c.left==a.right||c.right==a.left||c.top==a.bottom||c.bottom==a.top;if(b.inclusive||!e)var d=a.top>=c.bottom&&a.top<=c.top||c.top>a.bottom&&c.top<a.top,e=a.left>=c.left&&a.left<=c.right||c.left>=a.left&&c.left<=a.right,f=a.right>=c.left&&a.right<=c.right||c.right>=a.left&&c.right<=a.right,d=(a.bottom>=c.bottom&&a.bottom<=c.top||c.bottom>=
a.bottom&&c.bottom<=a.top||d)&&(e||f);if(b.worldBounds&&!d){var g=b.worldBounds,e=g.getWidth(),f=!g.containsBounds(c),g=!g.containsBounds(a);f&&!g?(a=a.add(-e,0),d=c.intersectsBounds(a,{inclusive:b.inclusive})):g&&!f&&(c=c.add(-e,0),d=a.intersectsBounds(c,{inclusive:b.inclusive}))}return d},containsBounds:function(a,b,c){null==b&&(b=!1);null==c&&(c=!0);var d=this.contains(a.left,a.bottom,c),e=this.contains(a.right,a.bottom,c),f=this.contains(a.left,a.top,c);a=this.contains(a.right,a.top,c);return b?
d||e||f||a:d&&e&&f&&a},determineQuadrant:function(a){var b="",c=this.getCenterLonLat(),b=b+(a.lat<c.lat?"b":"t");return b+=a.lon<c.lon?"l":"r"},transform:function(a,b){this.centerLonLat=null;var c=OpenLayers.Projection.transform({x:this.left,y:this.bottom},a,b),d=OpenLayers.Projection.transform({x:this.right,y:this.bottom},a,b),e=OpenLayers.Projection.transform({x:this.left,y:this.top},a,b),f=OpenLayers.Projection.transform({x:this.right,y:this.top},a,b);this.left=Math.min(c.x,e.x);this.bottom=Math.min(c.y,
d.y);this.right=Math.max(d.x,f.x);this.top=Math.max(e.y,f.y);return this},wrapDateLine:function(a,b){b=b||{};var c=b.leftTolerance||0,d=b.rightTolerance||0,e=this.clone();if(a){for(var f=a.getWidth();e.left<a.left&&e.right-d<=a.left;)e=e.add(f,0);for(;e.left+c>=a.right&&e.right>a.right;)e=e.add(-f,0);c=e.left+c;c<a.right&&(c>a.left&&e.right-d>a.right)&&(e=e.add(-f,0))}return e},CLASS_NAME:"OpenLayers.Bounds"});
OpenLayers.Bounds.fromString=function(a,b){var c=a.split(",");return OpenLayers.Bounds.fromArray(c,b)};OpenLayers.Bounds.fromArray=function(a,b){return!0===b?new OpenLayers.Bounds(a[1],a[0],a[3],a[2]):new OpenLayers.Bounds(a[0],a[1],a[2],a[3])};OpenLayers.Bounds.fromSize=function(a){return new OpenLayers.Bounds(0,a.h,a.w,0)};OpenLayers.Bounds.oppositeQuadrant=function(a){var b;b=""+("t"==a.charAt(0)?"b":"t");return b+="l"==a.charAt(1)?"r":"l"};OpenLayers.Element={visible:function(a){return"none"!=OpenLayers.Util.getElement(a).style.display},toggle:function(){for(var a=0,b=arguments.length;a<b;a++){var c=OpenLayers.Util.getElement(arguments[a]),d=OpenLayers.Element.visible(c)?"none":"";c.style.display=d}},remove:function(a){a=OpenLayers.Util.getElement(a);a.parentNode.removeChild(a)},getHeight:function(a){a=OpenLayers.Util.getElement(a);return a.offsetHeight},hasClass:function(a,b){var c=a.className;return!!c&&RegExp("(^|\\s)"+b+"(\\s|$)").test(c)},
addClass:function(a,b){OpenLayers.Element.hasClass(a,b)||(a.className+=(a.className?" ":"")+b);return a},removeClass:function(a,b){var c=a.className;c&&(a.className=OpenLayers.String.trim(c.replace(RegExp("(^|\\s+)"+b+"(\\s+|$)")," ")));return a},toggleClass:function(a,b){OpenLayers.Element.hasClass(a,b)?OpenLayers.Element.removeClass(a,b):OpenLayers.Element.addClass(a,b);return a},getStyle:function(a,b){a=OpenLayers.Util.getElement(a);var c=null;if(a&&a.style){c=a.style[OpenLayers.String.camelize(b)];
c||(document.defaultView&&document.defaultView.getComputedStyle?c=(c=document.defaultView.getComputedStyle(a,null))?c.getPropertyValue(b):null:a.currentStyle&&(c=a.currentStyle[OpenLayers.String.camelize(b)]));var d=["left","top","right","bottom"];window.opera&&(-1!=OpenLayers.Util.indexOf(d,b)&&"static"==OpenLayers.Element.getStyle(a,"position"))&&(c="auto")}return"auto"==c?null:c}};OpenLayers.LonLat=OpenLayers.Class({lon:0,lat:0,initialize:function(a,b){OpenLayers.Util.isArray(a)&&(b=a[1],a=a[0]);this.lon=OpenLayers.Util.toFloat(a);this.lat=OpenLayers.Util.toFloat(b)},toString:function(){return"lon="+this.lon+",lat="+this.lat},toShortString:function(){return this.lon+", "+this.lat},clone:function(){return new OpenLayers.LonLat(this.lon,this.lat)},add:function(a,b){if(null==a||null==b)throw new TypeError("LonLat.add cannot receive null values");return new OpenLayers.LonLat(this.lon+
OpenLayers.Util.toFloat(a),this.lat+OpenLayers.Util.toFloat(b))},equals:function(a){var b=!1;null!=a&&(b=this.lon==a.lon&&this.lat==a.lat||isNaN(this.lon)&&isNaN(this.lat)&&isNaN(a.lon)&&isNaN(a.lat));return b},transform:function(a,b){var c=OpenLayers.Projection.transform({x:this.lon,y:this.lat},a,b);this.lon=c.x;this.lat=c.y;return this},wrapDateLine:function(a){var b=this.clone();if(a){for(;b.lon<a.left;)b.lon+=a.getWidth();for(;b.lon>a.right;)b.lon-=a.getWidth()}return b},CLASS_NAME:"OpenLayers.LonLat"});
OpenLayers.LonLat.fromString=function(a){a=a.split(",");return new OpenLayers.LonLat(a[0],a[1])};OpenLayers.LonLat.fromArray=function(a){var b=OpenLayers.Util.isArray(a);return new OpenLayers.LonLat(b&&a[0],b&&a[1])};OpenLayers.Pixel=OpenLayers.Class({x:0,y:0,initialize:function(a,b){this.x=parseFloat(a);this.y=parseFloat(b)},toString:function(){return"x="+this.x+",y="+this.y},clone:function(){return new OpenLayers.Pixel(this.x,this.y)},equals:function(a){var b=!1;null!=a&&(b=this.x==a.x&&this.y==a.y||isNaN(this.x)&&isNaN(this.y)&&isNaN(a.x)&&isNaN(a.y));return b},distanceTo:function(a){return Math.sqrt(Math.pow(this.x-a.x,2)+Math.pow(this.y-a.y,2))},add:function(a,b){if(null==a||null==b)throw new TypeError("Pixel.add cannot receive null values");
return new OpenLayers.Pixel(this.x+a,this.y+b)},offset:function(a){var b=this.clone();a&&(b=this.add(a.x,a.y));return b},CLASS_NAME:"OpenLayers.Pixel"});OpenLayers.Size=OpenLayers.Class({w:0,h:0,initialize:function(a,b){this.w=parseFloat(a);this.h=parseFloat(b)},toString:function(){return"w="+this.w+",h="+this.h},clone:function(){return new OpenLayers.Size(this.w,this.h)},equals:function(a){var b=!1;null!=a&&(b=this.w==a.w&&this.h==a.h||isNaN(this.w)&&isNaN(this.h)&&isNaN(a.w)&&isNaN(a.h));return b},CLASS_NAME:"OpenLayers.Size"});OpenLayers.Console={log:function(){},debug:function(){},info:function(){},warn:function(){},error:function(){},userError:function(a){alert(a)},assert:function(){},dir:function(){},dirxml:function(){},trace:function(){},group:function(){},groupEnd:function(){},time:function(){},timeEnd:function(){},profile:function(){},profileEnd:function(){},count:function(){},CLASS_NAME:"OpenLayers.Console"};
(function(){for(var a=document.getElementsByTagName("script"),b=0,c=a.length;b<c;++b)if(-1!=a[b].src.indexOf("firebug.js")&&console){OpenLayers.Util.extend(OpenLayers.Console,console);break}})();OpenLayers.Lang={code:null,defaultCode:"en",getCode:function(){OpenLayers.Lang.code||OpenLayers.Lang.setCode();return OpenLayers.Lang.code},setCode:function(a){var b;a||(a="msie"==OpenLayers.BROWSER_NAME?navigator.userLanguage:navigator.language);a=a.split("-");a[0]=a[0].toLowerCase();"object"==typeof OpenLayers.Lang[a[0]]&&(b=a[0]);if(a[1]){var c=a[0]+"-"+a[1].toUpperCase();"object"==typeof OpenLayers.Lang[c]&&(b=c)}b||(OpenLayers.Console.warn("Failed to find OpenLayers.Lang."+a.join("-")+" dictionary, falling back to default language"),
b=OpenLayers.Lang.defaultCode);OpenLayers.Lang.code=b},translate:function(a,b){var c=OpenLayers.Lang[OpenLayers.Lang.getCode()];(c=c&&c[a])||(c=a);b&&(c=OpenLayers.String.format(c,b));return c}};OpenLayers.i18n=OpenLayers.Lang.translate;OpenLayers.Util=OpenLayers.Util||{};OpenLayers.Util.getElement=function(){for(var a=[],b=0,c=arguments.length;b<c;b++){var d=arguments[b];"string"==typeof d&&(d=document.getElementById(d));if(1==arguments.length)return d;a.push(d)}return a};OpenLayers.Util.isElement=function(a){return!(!a||1!==a.nodeType)};OpenLayers.Util.isArray=function(a){return"[object Array]"===Object.prototype.toString.call(a)};OpenLayers.Util.removeItem=function(a,b){for(var c=a.length-1;0<=c;c--)a[c]==b&&a.splice(c,1);return a};
OpenLayers.Util.indexOf=function(a,b){if("function"==typeof a.indexOf)return a.indexOf(b);for(var c=0,d=a.length;c<d;c++)if(a[c]==b)return c;return-1};OpenLayers.Util.dotless=/\./g;
OpenLayers.Util.modifyDOMElement=function(a,b,c,d,e,f,g,h){b&&(a.id=b.replace(OpenLayers.Util.dotless,"_"));c&&(a.style.left=c.x+"px",a.style.top=c.y+"px");d&&(a.style.width=d.w+"px",a.style.height=d.h+"px");e&&(a.style.position=e);f&&(a.style.border=f);g&&(a.style.overflow=g);0<=parseFloat(h)&&1>parseFloat(h)?(a.style.filter="alpha(opacity="+100*h+")",a.style.opacity=h):1==parseFloat(h)&&(a.style.filter="",a.style.opacity="")};
OpenLayers.Util.createDiv=function(a,b,c,d,e,f,g,h){var k=document.createElement("div");d&&(k.style.backgroundImage="url("+d+")");a||(a=OpenLayers.Util.createUniqueID("OpenLayersDiv"));e||(e="absolute");OpenLayers.Util.modifyDOMElement(k,a,b,c,e,f,g,h);return k};
OpenLayers.Util.createImage=function(a,b,c,d,e,f,g,h){var k=document.createElement("img");a||(a=OpenLayers.Util.createUniqueID("OpenLayersDiv"));e||(e="relative");OpenLayers.Util.modifyDOMElement(k,a,b,c,e,f,null,g);h&&(k.style.display="none",b=function(){k.style.display="";OpenLayers.Event.stopObservingElement(k)},OpenLayers.Event.observe(k,"load",b),OpenLayers.Event.observe(k,"error",b));k.style.alt=a;k.galleryImg="no";d&&(k.src=d);return k};OpenLayers.IMAGE_RELOAD_ATTEMPTS=0;
OpenLayers.Util.alphaHackNeeded=null;OpenLayers.Util.alphaHack=function(){if(null==OpenLayers.Util.alphaHackNeeded){var a=navigator.appVersion.split("MSIE"),a=parseFloat(a[1]),b=!1;try{b=!!document.body.filters}catch(c){}OpenLayers.Util.alphaHackNeeded=b&&5.5<=a&&7>a}return OpenLayers.Util.alphaHackNeeded};
OpenLayers.Util.modifyAlphaImageDiv=function(a,b,c,d,e,f,g,h,k){OpenLayers.Util.modifyDOMElement(a,b,c,d,f,null,null,k);b=a.childNodes[0];e&&(b.src=e);OpenLayers.Util.modifyDOMElement(b,a.id+"_innerImage",null,d,"relative",g);OpenLayers.Util.alphaHack()&&("none"!=a.style.display&&(a.style.display="inline-block"),null==h&&(h="scale"),a.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+b.src+"', sizingMethod='"+h+"')",0<=parseFloat(a.style.opacity)&&1>parseFloat(a.style.opacity)&&
(a.style.filter+=" alpha(opacity="+100*a.style.opacity+")"),b.style.filter="alpha(opacity=0)")};OpenLayers.Util.createAlphaImageDiv=function(a,b,c,d,e,f,g,h,k){var l=OpenLayers.Util.createDiv();k=OpenLayers.Util.createImage(null,null,null,null,null,null,null,k);k.className="olAlphaImg";l.appendChild(k);OpenLayers.Util.modifyAlphaImageDiv(l,a,b,c,d,e,f,g,h);return l};OpenLayers.Util.upperCaseObject=function(a){var b={},c;for(c in a)b[c.toUpperCase()]=a[c];return b};
OpenLayers.Util.applyDefaults=function(a,b){a=a||{};var c="function"==typeof window.Event&&b instanceof window.Event,d;for(d in b)if(void 0===a[d]||!c&&b.hasOwnProperty&&b.hasOwnProperty(d)&&!a.hasOwnProperty(d))a[d]=b[d];!c&&(b&&b.hasOwnProperty&&b.hasOwnProperty("toString")&&!a.hasOwnProperty("toString"))&&(a.toString=b.toString);return a};
OpenLayers.Util.getParameterString=function(a){var b=[],c;for(c in a){var d=a[c];if(null!=d&&"function"!=typeof d){if("object"==typeof d&&d.constructor==Array){for(var e=[],f,g=0,h=d.length;g<h;g++)f=d[g],e.push(encodeURIComponent(null===f||void 0===f?"":f));d=e.join(",")}else d=encodeURIComponent(d);b.push(encodeURIComponent(c)+"="+d)}}return b.join("&")};OpenLayers.Util.urlAppend=function(a,b){var c=a;if(b)var d=(a+" ").split(/[?&]/),c=c+(" "===d.pop()?b:d.length?"&"+b:"?"+b);return c};
OpenLayers.Util.getImagesLocation=function(){return OpenLayers.ImgPath||OpenLayers._getScriptLocation()+"img/"};OpenLayers.Util.getImageLocation=function(a){return OpenLayers.Util.getImagesLocation()+a};OpenLayers.Util.Try=function(){for(var a=null,b=0,c=arguments.length;b<c;b++){var d=arguments[b];try{a=d();break}catch(e){}}return a};
OpenLayers.Util.getXmlNodeValue=function(a){var b=null;OpenLayers.Util.Try(function(){b=a.text;b||(b=a.textContent);b||(b=a.firstChild.nodeValue)},function(){b=a.textContent});return b};OpenLayers.Util.mouseLeft=function(a,b){for(var c=a.relatedTarget?a.relatedTarget:a.toElement;c!=b&&null!=c;)c=c.parentNode;return c!=b};OpenLayers.Util.DEFAULT_PRECISION=14;OpenLayers.Util.toFloat=function(a,b){null==b&&(b=OpenLayers.Util.DEFAULT_PRECISION);"number"!==typeof a&&(a=parseFloat(a));return 0===b?a:parseFloat(a.toPrecision(b))};
OpenLayers.Util.rad=function(a){return a*Math.PI/180};OpenLayers.Util.deg=function(a){return 180*a/Math.PI};OpenLayers.Util.VincentyConstants={a:6378137,b:6356752.3142,f:1/298.257223563};
OpenLayers.Util.distVincenty=function(a,b){for(var c=OpenLayers.Util.VincentyConstants,d=c.a,e=c.b,c=c.f,f=OpenLayers.Util.rad(b.lon-a.lon),g=Math.atan((1-c)*Math.tan(OpenLayers.Util.rad(a.lat))),h=Math.atan((1-c)*Math.tan(OpenLayers.Util.rad(b.lat))),k=Math.sin(g),g=Math.cos(g),l=Math.sin(h),h=Math.cos(h),m=f,n=2*Math.PI,p=20;1E-12<Math.abs(m-n)&&0<--p;){var q=Math.sin(m),r=Math.cos(m),s=Math.sqrt(h*q*h*q+(g*l-k*h*r)*(g*l-k*h*r));if(0==s)return 0;var r=k*l+g*h*r,t=Math.atan2(s,r),u=Math.asin(g*h*
q/s),v=Math.cos(u)*Math.cos(u),q=r-2*k*l/v,w=c/16*v*(4+c*(4-3*v)),n=m,m=f+(1-w)*c*Math.sin(u)*(t+w*s*(q+w*r*(-1+2*q*q)))}if(0==p)return NaN;d=v*(d*d-e*e)/(e*e);c=d/1024*(256+d*(-128+d*(74-47*d)));return(e*(1+d/16384*(4096+d*(-768+d*(320-175*d))))*(t-c*s*(q+c/4*(r*(-1+2*q*q)-c/6*q*(-3+4*s*s)*(-3+4*q*q))))).toFixed(3)/1E3};
OpenLayers.Util.destinationVincenty=function(a,b,c){var d=OpenLayers.Util,e=d.VincentyConstants,f=e.a,g=e.b,h=e.f,e=a.lon;a=a.lat;var k=d.rad(b);b=Math.sin(k);k=Math.cos(k);a=(1-h)*Math.tan(d.rad(a));var l=1/Math.sqrt(1+a*a),m=a*l,n=Math.atan2(a,k);a=l*b;for(var p=1-a*a,f=p*(f*f-g*g)/(g*g),q=1+f/16384*(4096+f*(-768+f*(320-175*f))),r=f/1024*(256+f*(-128+f*(74-47*f))),f=c/(g*q),s=2*Math.PI;1E-12<Math.abs(f-s);)var t=Math.cos(2*n+f),u=Math.sin(f),v=Math.cos(f),w=r*u*(t+r/4*(v*(-1+2*t*t)-r/6*t*(-3+4*
u*u)*(-3+4*t*t))),s=f,f=c/(g*q)+w;c=m*u-l*v*k;g=Math.atan2(m*v+l*u*k,(1-h)*Math.sqrt(a*a+c*c));b=Math.atan2(u*b,l*v-m*u*k);k=h/16*p*(4+h*(4-3*p));t=b-(1-k)*h*a*(f+k*u*(t+k*v*(-1+2*t*t)));Math.atan2(a,-c);return new OpenLayers.LonLat(e+d.deg(t),d.deg(g))};
OpenLayers.Util.getParameters=function(a,b){b=b||{};a=null===a||void 0===a?window.location.href:a;var c="";if(OpenLayers.String.contains(a,"?"))var d=a.indexOf("?")+1,c=OpenLayers.String.contains(a,"#")?a.indexOf("#"):a.length,c=a.substring(d,c);for(var d={},c=c.split(/[&;]/),e=0,f=c.length;e<f;++e){var g=c[e].split("=");if(g[0]){var h=g[0];try{h=decodeURIComponent(h)}catch(k){h=unescape(h)}g=(g[1]||"").replace(/\+/g," ");try{g=decodeURIComponent(g)}catch(l){g=unescape(g)}!1!==b.splitArgs&&(g=g.split(","));
1==g.length&&(g=g[0]);d[h]=g}}return d};OpenLayers.Util.lastSeqID=0;OpenLayers.Util.createUniqueID=function(a){a=null==a?"id_":a.replace(OpenLayers.Util.dotless,"_");OpenLayers.Util.lastSeqID+=1;return a+OpenLayers.Util.lastSeqID};OpenLayers.INCHES_PER_UNIT={inches:1,ft:12,mi:63360,m:39.37,km:39370,dd:4374754,yd:36};OpenLayers.INCHES_PER_UNIT["in"]=OpenLayers.INCHES_PER_UNIT.inches;OpenLayers.INCHES_PER_UNIT.degrees=OpenLayers.INCHES_PER_UNIT.dd;OpenLayers.INCHES_PER_UNIT.nmi=1852*OpenLayers.INCHES_PER_UNIT.m;
OpenLayers.METERS_PER_INCH=0.0254000508001016;
OpenLayers.Util.extend(OpenLayers.INCHES_PER_UNIT,{Inch:OpenLayers.INCHES_PER_UNIT.inches,Meter:1/OpenLayers.METERS_PER_INCH,Foot:0.3048006096012192/OpenLayers.METERS_PER_INCH,IFoot:0.3048/OpenLayers.METERS_PER_INCH,ClarkeFoot:0.3047972651151/OpenLayers.METERS_PER_INCH,SearsFoot:0.30479947153867626/OpenLayers.METERS_PER_INCH,GoldCoastFoot:0.3047997101815088/OpenLayers.METERS_PER_INCH,IInch:0.0254/OpenLayers.METERS_PER_INCH,MicroInch:2.54E-5/OpenLayers.METERS_PER_INCH,Mil:2.54E-8/OpenLayers.METERS_PER_INCH,
Centimeter:0.01/OpenLayers.METERS_PER_INCH,Kilometer:1E3/OpenLayers.METERS_PER_INCH,Yard:0.9144018288036576/OpenLayers.METERS_PER_INCH,SearsYard:0.914398414616029/OpenLayers.METERS_PER_INCH,IndianYard:0.9143985307444408/OpenLayers.METERS_PER_INCH,IndianYd37:0.91439523/OpenLayers.METERS_PER_INCH,IndianYd62:0.9143988/OpenLayers.METERS_PER_INCH,IndianYd75:0.9143985/OpenLayers.METERS_PER_INCH,IndianFoot:0.30479951/OpenLayers.METERS_PER_INCH,IndianFt37:0.30479841/OpenLayers.METERS_PER_INCH,IndianFt62:0.3047996/
OpenLayers.METERS_PER_INCH,IndianFt75:0.3047995/OpenLayers.METERS_PER_INCH,Mile:1609.3472186944373/OpenLayers.METERS_PER_INCH,IYard:0.9144/OpenLayers.METERS_PER_INCH,IMile:1609.344/OpenLayers.METERS_PER_INCH,NautM:1852/OpenLayers.METERS_PER_INCH,"Lat-66":110943.31648893273/OpenLayers.METERS_PER_INCH,"Lat-83":110946.25736872235/OpenLayers.METERS_PER_INCH,Decimeter:0.1/OpenLayers.METERS_PER_INCH,Millimeter:0.001/OpenLayers.METERS_PER_INCH,Dekameter:10/OpenLayers.METERS_PER_INCH,Decameter:10/OpenLayers.METERS_PER_INCH,
Hectometer:100/OpenLayers.METERS_PER_INCH,GermanMeter:1.0000135965/OpenLayers.METERS_PER_INCH,CaGrid:0.999738/OpenLayers.METERS_PER_INCH,ClarkeChain:20.1166194976/OpenLayers.METERS_PER_INCH,GunterChain:20.11684023368047/OpenLayers.METERS_PER_INCH,BenoitChain:20.116782494375872/OpenLayers.METERS_PER_INCH,SearsChain:20.11676512155/OpenLayers.METERS_PER_INCH,ClarkeLink:0.201166194976/OpenLayers.METERS_PER_INCH,GunterLink:0.2011684023368047/OpenLayers.METERS_PER_INCH,BenoitLink:0.20116782494375873/OpenLayers.METERS_PER_INCH,
SearsLink:0.2011676512155/OpenLayers.METERS_PER_INCH,Rod:5.02921005842012/OpenLayers.METERS_PER_INCH,IntnlChain:20.1168/OpenLayers.METERS_PER_INCH,IntnlLink:0.201168/OpenLayers.METERS_PER_INCH,Perch:5.02921005842012/OpenLayers.METERS_PER_INCH,Pole:5.02921005842012/OpenLayers.METERS_PER_INCH,Furlong:201.1684023368046/OpenLayers.METERS_PER_INCH,Rood:3.778266898/OpenLayers.METERS_PER_INCH,CapeFoot:0.3047972615/OpenLayers.METERS_PER_INCH,Brealey:375/OpenLayers.METERS_PER_INCH,ModAmFt:0.304812252984506/
OpenLayers.METERS_PER_INCH,Fathom:1.8288/OpenLayers.METERS_PER_INCH,"NautM-UK":1853.184/OpenLayers.METERS_PER_INCH,"50kilometers":5E4/OpenLayers.METERS_PER_INCH,"150kilometers":15E4/OpenLayers.METERS_PER_INCH});
OpenLayers.Util.extend(OpenLayers.INCHES_PER_UNIT,{mm:OpenLayers.INCHES_PER_UNIT.Meter/1E3,cm:OpenLayers.INCHES_PER_UNIT.Meter/100,dm:100*OpenLayers.INCHES_PER_UNIT.Meter,km:1E3*OpenLayers.INCHES_PER_UNIT.Meter,kmi:OpenLayers.INCHES_PER_UNIT.nmi,fath:OpenLayers.INCHES_PER_UNIT.Fathom,ch:OpenLayers.INCHES_PER_UNIT.IntnlChain,link:OpenLayers.INCHES_PER_UNIT.IntnlLink,"us-in":OpenLayers.INCHES_PER_UNIT.inches,"us-ft":OpenLayers.INCHES_PER_UNIT.Foot,"us-yd":OpenLayers.INCHES_PER_UNIT.Yard,"us-ch":OpenLayers.INCHES_PER_UNIT.GunterChain,
"us-mi":OpenLayers.INCHES_PER_UNIT.Mile,"ind-yd":OpenLayers.INCHES_PER_UNIT.IndianYd37,"ind-ft":OpenLayers.INCHES_PER_UNIT.IndianFt37,"ind-ch":20.11669506/OpenLayers.METERS_PER_INCH});OpenLayers.DOTS_PER_INCH=72;OpenLayers.Util.normalizeScale=function(a){return 1<a?1/a:a};OpenLayers.Util.getResolutionFromScale=function(a,b){var c;a&&(null==b&&(b="degrees"),c=1/(OpenLayers.Util.normalizeScale(a)*OpenLayers.INCHES_PER_UNIT[b]*OpenLayers.DOTS_PER_INCH));return c};
OpenLayers.Util.getScaleFromResolution=function(a,b){null==b&&(b="degrees");return a*OpenLayers.INCHES_PER_UNIT[b]*OpenLayers.DOTS_PER_INCH};
OpenLayers.Util.pagePosition=function(a){var b=[0,0],c=OpenLayers.Util.getViewportElement();if(!a||a==window||a==c)return b;var d=OpenLayers.IS_GECKO&&document.getBoxObjectFor&&"absolute"==OpenLayers.Element.getStyle(a,"position")&&(""==a.style.top||""==a.style.left),e=null;if(a.getBoundingClientRect)a=a.getBoundingClientRect(),e=window.pageYOffset||c.scrollTop,b[0]=a.left+(window.pageXOffset||c.scrollLeft),b[1]=a.top+e;else if(document.getBoxObjectFor&&!d)a=document.getBoxObjectFor(a),c=document.getBoxObjectFor(c),
b[0]=a.screenX-c.screenX,b[1]=a.screenY-c.screenY;else{b[0]=a.offsetLeft;b[1]=a.offsetTop;e=a.offsetParent;if(e!=a)for(;e;)b[0]+=e.offsetLeft,b[1]+=e.offsetTop,e=e.offsetParent;c=OpenLayers.BROWSER_NAME;if("opera"==c||"safari"==c&&"absolute"==OpenLayers.Element.getStyle(a,"position"))b[1]-=document.body.offsetTop;for(e=a.offsetParent;e&&e!=document.body;){b[0]-=e.scrollLeft;if("opera"!=c||"TR"!=e.tagName)b[1]-=e.scrollTop;e=e.offsetParent}}return b};
OpenLayers.Util.getViewportElement=function(){var a=arguments.callee.viewportElement;void 0==a&&(a="msie"==OpenLayers.BROWSER_NAME&&"CSS1Compat"!=document.compatMode?document.body:document.documentElement,arguments.callee.viewportElement=a);return a};
OpenLayers.Util.isEquivalentUrl=function(a,b,c){c=c||{};OpenLayers.Util.applyDefaults(c,{ignoreCase:!0,ignorePort80:!0,ignoreHash:!0,splitArgs:!1});a=OpenLayers.Util.createUrlObject(a,c);b=OpenLayers.Util.createUrlObject(b,c);for(var d in a)if("args"!==d&&a[d]!=b[d])return!1;for(d in a.args){if(a.args[d]!=b.args[d])return!1;delete b.args[d]}for(d in b.args)return!1;return!0};
OpenLayers.Util.createUrlObject=function(a,b){b=b||{};if(!/^\w+:\/\//.test(a)){var c=window.location,d=c.port?":"+c.port:"",d=c.protocol+"//"+c.host.split(":").shift()+d;0===a.indexOf("/")?a=d+a:(c=c.pathname.split("/"),c.pop(),a=d+c.join("/")+"/"+a)}b.ignoreCase&&(a=a.toLowerCase());c=document.createElement("a");c.href=a;d={};d.host=c.host.split(":").shift();d.protocol=c.protocol;d.port=b.ignorePort80?"80"==c.port||"0"==c.port?"":c.port:""==c.port||"0"==c.port?"80":c.port;d.hash=b.ignoreHash||"#"===
c.hash?"":c.hash;var e=c.search;e||(e=a.indexOf("?"),e=-1!=e?a.substr(e):"");d.args=OpenLayers.Util.getParameters(e,{splitArgs:b.splitArgs});d.pathname="/"==c.pathname.charAt(0)?c.pathname:"/"+c.pathname;return d};OpenLayers.Util.removeTail=function(a){var b=null,b=a.indexOf("?"),c=a.indexOf("#");return b=-1==b?-1!=c?a.substr(0,c):a:-1!=c?a.substr(0,Math.min(b,c)):a.substr(0,b)};OpenLayers.IS_GECKO=function(){var a=navigator.userAgent.toLowerCase();return-1==a.indexOf("webkit")&&-1!=a.indexOf("gecko")}();
OpenLayers.CANVAS_SUPPORTED=function(){var a=document.createElement("canvas");return!(!a.getContext||!a.getContext("2d"))}();OpenLayers.BROWSER_NAME=function(){var a="",b=navigator.userAgent.toLowerCase();-1!=b.indexOf("opera")?a="opera":-1!=b.indexOf("msie")?a="msie":-1!=b.indexOf("safari")?a="safari":-1!=b.indexOf("mozilla")&&(a=-1!=b.indexOf("firefox")?"firefox":"mozilla");return a}();OpenLayers.Util.getBrowserName=function(){return OpenLayers.BROWSER_NAME};
OpenLayers.Util.getRenderedDimensions=function(a,b,c){var d,e,f=document.createElement("div");f.style.visibility="hidden";for(var g=c&&c.containerElement?c.containerElement:document.body,h=!1,k=null,l=g;l&&"body"!=l.tagName.toLowerCase();){var m=OpenLayers.Element.getStyle(l,"position");if("absolute"==m){h=!0;break}else if(m&&"static"!=m)break;l=l.parentNode}!h||0!==g.clientHeight&&0!==g.clientWidth||(k=document.createElement("div"),k.style.visibility="hidden",k.style.position="absolute",k.style.overflow=
"visible",k.style.width=document.body.clientWidth+"px",k.style.height=document.body.clientHeight+"px",k.appendChild(f));f.style.position="absolute";b&&(b.w?(d=b.w,f.style.width=d+"px"):b.h&&(e=b.h,f.style.height=e+"px"));c&&c.displayClass&&(f.className=c.displayClass);b=document.createElement("div");b.innerHTML=a;b.style.overflow="visible";if(b.childNodes)for(a=0,c=b.childNodes.length;a<c;a++)b.childNodes[a].style&&(b.childNodes[a].style.overflow="visible");f.appendChild(b);k?g.appendChild(k):g.appendChild(f);
d||(d=parseInt(b.scrollWidth),f.style.width=d+"px");e||(e=parseInt(b.scrollHeight));f.removeChild(b);k?(k.removeChild(f),g.removeChild(k)):g.removeChild(f);return new OpenLayers.Size(d,e)};
OpenLayers.Util.getScrollbarWidth=function(){var a=OpenLayers.Util._scrollbarWidth;if(null==a){var b=null,c=null,b=a=0,b=document.createElement("div");b.style.position="absolute";b.style.top="-1000px";b.style.left="-1000px";b.style.width="100px";b.style.height="50px";b.style.overflow="hidden";c=document.createElement("div");c.style.width="100%";c.style.height="200px";b.appendChild(c);document.body.appendChild(b);a=c.offsetWidth;b.style.overflow="scroll";b=c.offsetWidth;document.body.removeChild(document.body.lastChild);
OpenLayers.Util._scrollbarWidth=a-b;a=OpenLayers.Util._scrollbarWidth}return a};
OpenLayers.Util.getFormattedLonLat=function(a,b,c){c||(c="dms");a=(a+540)%360-180;var d=Math.abs(a),e=Math.floor(d),f=d=(d-e)/(1/60),d=Math.floor(d),f=Math.round(10*((f-d)/(1/60))),f=f/10;60<=f&&(f-=60,d+=1,60<=d&&(d-=60,e+=1));10>e&&(e="0"+e);e+="\u00b0";0<=c.indexOf("dm")&&(10>d&&(d="0"+d),e+=d+"'",0<=c.indexOf("dms")&&(10>f&&(f="0"+f),e+=f+'"'));return e="lon"==b?e+(0>a?OpenLayers.i18n("W"):OpenLayers.i18n("E")):e+(0>a?OpenLayers.i18n("S"):OpenLayers.i18n("N"))};OpenLayers.Format=OpenLayers.Class({options:null,externalProjection:null,internalProjection:null,data:null,keepData:!1,initialize:function(a){OpenLayers.Util.extend(this,a);this.options=a},destroy:function(){},read:function(a){throw Error("Read not implemented.");},write:function(a){throw Error("Write not implemented.");},CLASS_NAME:"OpenLayers.Format"});OpenLayers.Format.CSWGetRecords=function(a){a=OpenLayers.Util.applyDefaults(a,OpenLayers.Format.CSWGetRecords.DEFAULTS);var b=OpenLayers.Format.CSWGetRecords["v"+a.version.replace(/\./g,"_")];if(!b)throw"Unsupported CSWGetRecords version: "+a.version;return new b(a)};OpenLayers.Format.CSWGetRecords.DEFAULTS={version:"2.0.2"};OpenLayers.Control=OpenLayers.Class({id:null,map:null,div:null,type:null,allowSelection:!1,displayClass:"",title:"",autoActivate:!1,active:null,handlerOptions:null,handler:null,eventListeners:null,events:null,initialize:function(a){this.displayClass=this.CLASS_NAME.replace("OpenLayers.","ol").replace(/\./g,"");OpenLayers.Util.extend(this,a);this.events=new OpenLayers.Events(this);if(this.eventListeners instanceof Object)this.events.on(this.eventListeners);null==this.id&&(this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+
"_"))},destroy:function(){this.events&&(this.eventListeners&&this.events.un(this.eventListeners),this.events.destroy(),this.events=null);this.eventListeners=null;this.handler&&(this.handler.destroy(),this.handler=null);if(this.handlers){for(var a in this.handlers)this.handlers.hasOwnProperty(a)&&"function"==typeof this.handlers[a].destroy&&this.handlers[a].destroy();this.handlers=null}this.map&&(this.map.removeControl(this),this.map=null);this.div=null},setMap:function(a){this.map=a;this.handler&&
this.handler.setMap(a)},draw:function(a){null==this.div&&(this.div=OpenLayers.Util.createDiv(this.id),this.div.className=this.displayClass,this.allowSelection||(this.div.className+=" olControlNoSelect",this.div.setAttribute("unselectable","on",0),this.div.onselectstart=OpenLayers.Function.False),""!=this.title&&(this.div.title=this.title));null!=a&&(this.position=a.clone());this.moveTo(this.position);return this.div},moveTo:function(a){null!=a&&null!=this.div&&(this.div.style.left=a.x+"px",this.div.style.top=
a.y+"px")},activate:function(){if(this.active)return!1;this.handler&&this.handler.activate();this.active=!0;this.map&&OpenLayers.Element.addClass(this.map.viewPortDiv,this.displayClass.replace(/ /g,"")+"Active");this.events.triggerEvent("activate");return!0},deactivate:function(){return this.active?(this.handler&&this.handler.deactivate(),this.active=!1,this.map&&OpenLayers.Element.removeClass(this.map.viewPortDiv,this.displayClass.replace(/ /g,"")+"Active"),this.events.triggerEvent("deactivate"),
!0):!1},CLASS_NAME:"OpenLayers.Control"});OpenLayers.Control.TYPE_BUTTON=1;OpenLayers.Control.TYPE_TOGGLE=2;OpenLayers.Control.TYPE_TOOL=3;OpenLayers.Event={observers:!1,KEY_SPACE:32,KEY_BACKSPACE:8,KEY_TAB:9,KEY_RETURN:13,KEY_ESC:27,KEY_LEFT:37,KEY_UP:38,KEY_RIGHT:39,KEY_DOWN:40,KEY_DELETE:46,element:function(a){return a.target||a.srcElement},isSingleTouch:function(a){return a.touches&&1==a.touches.length},isMultiTouch:function(a){return a.touches&&1<a.touches.length},isLeftClick:function(a){return a.which&&1==a.which||a.button&&1==a.button},isRightClick:function(a){return a.which&&3==a.which||a.button&&2==a.button},stop:function(a,
b){b||OpenLayers.Event.preventDefault(a);a.stopPropagation?a.stopPropagation():a.cancelBubble=!0},preventDefault:function(a){a.preventDefault?a.preventDefault():a.returnValue=!1},findElement:function(a,b){for(var c=OpenLayers.Event.element(a);c.parentNode&&(!c.tagName||c.tagName.toUpperCase()!=b.toUpperCase());)c=c.parentNode;return c},observe:function(a,b,c,d){a=OpenLayers.Util.getElement(a);d=d||!1;"keypress"==b&&(navigator.appVersion.match(/Konqueror|Safari|KHTML/)||a.attachEvent)&&(b="keydown");
this.observers||(this.observers={});if(!a._eventCacheID){var e="eventCacheID_";a.id&&(e=a.id+"_"+e);a._eventCacheID=OpenLayers.Util.createUniqueID(e)}e=a._eventCacheID;this.observers[e]||(this.observers[e]=[]);this.observers[e].push({element:a,name:b,observer:c,useCapture:d});a.addEventListener?a.addEventListener(b,c,d):a.attachEvent&&a.attachEvent("on"+b,c)},stopObservingElement:function(a){a=OpenLayers.Util.getElement(a)._eventCacheID;this._removeElementObservers(OpenLayers.Event.observers[a])},
_removeElementObservers:function(a){if(a)for(var b=a.length-1;0<=b;b--){var c=a[b];OpenLayers.Event.stopObserving.apply(this,[c.element,c.name,c.observer,c.useCapture])}},stopObserving:function(a,b,c,d){d=d||!1;a=OpenLayers.Util.getElement(a);var e=a._eventCacheID;"keypress"==b&&(navigator.appVersion.match(/Konqueror|Safari|KHTML/)||a.detachEvent)&&(b="keydown");var f=!1,g=OpenLayers.Event.observers[e];if(g)for(var h=0;!f&&h<g.length;){var k=g[h];if(k.name==b&&k.observer==c&&k.useCapture==d){g.splice(h,
1);0==g.length&&delete OpenLayers.Event.observers[e];f=!0;break}h++}f&&(a.removeEventListener?a.removeEventListener(b,c,d):a&&a.detachEvent&&a.detachEvent("on"+b,c));return f},unloadCache:function(){if(OpenLayers.Event&&OpenLayers.Event.observers){for(var a in OpenLayers.Event.observers)OpenLayers.Event._removeElementObservers.apply(this,[OpenLayers.Event.observers[a]]);OpenLayers.Event.observers=!1}},CLASS_NAME:"OpenLayers.Event"};
OpenLayers.Event.observe(window,"unload",OpenLayers.Event.unloadCache,!1);
OpenLayers.Events=OpenLayers.Class({BROWSER_EVENTS:"mouseover mouseout mousedown mouseup mousemove click dblclick rightclick dblrightclick resize focus blur touchstart touchmove touchend keydown".split(" "),listeners:null,object:null,element:null,eventHandler:null,fallThrough:null,includeXY:!1,extensions:null,extensionCount:null,clearMouseListener:null,initialize:function(a,b,c,d,e){OpenLayers.Util.extend(this,e);this.object=a;this.fallThrough=d;this.listeners={};this.extensions={};this.extensionCount=
{};this._msTouches=[];null!=b&&this.attachToElement(b)},destroy:function(){for(var a in this.extensions)"boolean"!==typeof this.extensions[a]&&this.extensions[a].destroy();this.extensions=null;this.element&&(OpenLayers.Event.stopObservingElement(this.element),this.element.hasScrollEvent&&OpenLayers.Event.stopObserving(window,"scroll",this.clearMouseListener));this.eventHandler=this.fallThrough=this.object=this.listeners=this.element=null},addEventType:function(a){},attachToElement:function(a){this.element?
OpenLayers.Event.stopObservingElement(this.element):(this.eventHandler=OpenLayers.Function.bindAsEventListener(this.handleBrowserEvent,this),this.clearMouseListener=OpenLayers.Function.bind(this.clearMouseCache,this));this.element=a;for(var b=!!window.navigator.msMaxTouchPoints,c,d=0,e=this.BROWSER_EVENTS.length;d<e;d++)c=this.BROWSER_EVENTS[d],OpenLayers.Event.observe(a,c,this.eventHandler),b&&0===c.indexOf("touch")&&this.addMsTouchListener(a,c,this.eventHandler);OpenLayers.Event.observe(a,"dragstart",
OpenLayers.Event.stop)},on:function(a){for(var b in a)"scope"!=b&&a.hasOwnProperty(b)&&this.register(b,a.scope,a[b])},register:function(a,b,c,d){a in OpenLayers.Events&&!this.extensions[a]&&(this.extensions[a]=new OpenLayers.Events[a](this));if(null!=c){null==b&&(b=this.object);var e=this.listeners[a];e||(e=[],this.listeners[a]=e,this.extensionCount[a]=0);b={obj:b,func:c};d?(e.splice(this.extensionCount[a],0,b),"object"===typeof d&&d.extension&&this.extensionCount[a]++):e.push(b)}},registerPriority:function(a,
b,c){this.register(a,b,c,!0)},un:function(a){for(var b in a)"scope"!=b&&a.hasOwnProperty(b)&&this.unregister(b,a.scope,a[b])},unregister:function(a,b,c){null==b&&(b=this.object);a=this.listeners[a];if(null!=a)for(var d=0,e=a.length;d<e;d++)if(a[d].obj==b&&a[d].func==c){a.splice(d,1);break}},remove:function(a){null!=this.listeners[a]&&(this.listeners[a]=[])},triggerEvent:function(a,b){var c=this.listeners[a];if(c&&0!=c.length){null==b&&(b={});b.object=this.object;b.element=this.element;b.type||(b.type=
a);for(var c=c.slice(),d,e=0,f=c.length;e<f&&(d=c[e],d=d.func.apply(d.obj,[b]),void 0==d||!1!=d);e++);this.fallThrough||OpenLayers.Event.stop(b,!0);return d}},handleBrowserEvent:function(a){var b=a.type,c=this.listeners[b];if(c&&0!=c.length){if((c=a.touches)&&c[0]){for(var d=0,e=0,f=c.length,g,h=0;h<f;++h)g=this.getTouchClientXY(c[h]),d+=g.clientX,e+=g.clientY;a.clientX=d/f;a.clientY=e/f}this.includeXY&&(a.xy=this.getMousePosition(a));this.triggerEvent(b,a)}},getTouchClientXY:function(a){var b=window.olMockWin||
window,c=b.pageXOffset,b=b.pageYOffset,d=a.clientX,e=a.clientY;if(0===a.pageY&&Math.floor(e)>Math.floor(a.pageY)||0===a.pageX&&Math.floor(d)>Math.floor(a.pageX))d-=c,e-=b;else if(e<a.pageY-b||d<a.pageX-c)d=a.pageX-c,e=a.pageY-b;a.olClientX=d;a.olClientY=e;return{clientX:d,clientY:e}},clearMouseCache:function(){this.element.scrolls=null;this.element.lefttop=null;this.element.offsets=null},getMousePosition:function(a){this.includeXY?this.element.hasScrollEvent||(OpenLayers.Event.observe(window,"scroll",
this.clearMouseListener),this.element.hasScrollEvent=!0):this.clearMouseCache();if(!this.element.scrolls){var b=OpenLayers.Util.getViewportElement();this.element.scrolls=[window.pageXOffset||b.scrollLeft,window.pageYOffset||b.scrollTop]}this.element.lefttop||(this.element.lefttop=[document.documentElement.clientLeft||0,document.documentElement.clientTop||0]);this.element.offsets||(this.element.offsets=OpenLayers.Util.pagePosition(this.element));return new OpenLayers.Pixel(a.clientX+this.element.scrolls[0]-
this.element.offsets[0]-this.element.lefttop[0],a.clientY+this.element.scrolls[1]-this.element.offsets[1]-this.element.lefttop[1])},addMsTouchListener:function(a,b,c){function d(a){c(OpenLayers.Util.applyDefaults({stopPropagation:function(){for(var a=e.length-1;0<=a;--a)e[a].stopPropagation()},preventDefault:function(){for(var a=e.length-1;0<=a;--a)e[a].preventDefault()},type:b},a))}var e=this._msTouches;switch(b){case "touchstart":return this.addMsTouchListenerStart(a,b,d);case "touchend":return this.addMsTouchListenerEnd(a,
b,d);case "touchmove":return this.addMsTouchListenerMove(a,b,d);default:throw"Unknown touch event type";}},addMsTouchListenerStart:function(a,b,c){var d=this._msTouches;OpenLayers.Event.observe(a,"MSPointerDown",function(a){for(var b=!1,g=0,h=d.length;g<h;++g)if(d[g].pointerId==a.pointerId){b=!0;break}b||d.push(a);a.touches=d.slice();c(a)});OpenLayers.Event.observe(a,"MSPointerUp",function(a){for(var b=0,c=d.length;b<c;++b)if(d[b].pointerId==a.pointerId){d.splice(b,1);break}})},addMsTouchListenerMove:function(a,
b,c){var d=this._msTouches;OpenLayers.Event.observe(a,"MSPointerMove",function(a){if(a.pointerType!=a.MSPOINTER_TYPE_MOUSE||0!=a.buttons)if(1!=d.length||d[0].pageX!=a.pageX||d[0].pageY!=a.pageY){for(var b=0,g=d.length;b<g;++b)if(d[b].pointerId==a.pointerId){d[b]=a;break}a.touches=d.slice();c(a)}})},addMsTouchListenerEnd:function(a,b,c){var d=this._msTouches;OpenLayers.Event.observe(a,"MSPointerUp",function(a){for(var b=0,g=d.length;b<g;++b)if(d[b].pointerId==a.pointerId){d.splice(b,1);break}a.touches=
d.slice();c(a)})},CLASS_NAME:"OpenLayers.Events"});OpenLayers.Events.buttonclick=OpenLayers.Class({target:null,events:"mousedown mouseup click dblclick touchstart touchmove touchend keydown".split(" "),startRegEx:/^mousedown|touchstart$/,cancelRegEx:/^touchmove$/,completeRegEx:/^mouseup|touchend$/,initialize:function(a){this.target=a;for(a=this.events.length-1;0<=a;--a)this.target.register(this.events[a],this,this.buttonClick,{extension:!0})},destroy:function(){for(var a=this.events.length-1;0<=a;--a)this.target.unregister(this.events[a],this,this.buttonClick);
delete this.target},getPressedButton:function(a){var b=3,c;do{if(OpenLayers.Element.hasClass(a,"olButton")){c=a;break}a=a.parentNode}while(0<--b&&a);return c},ignore:function(a){var b=3,c=!1;do{if("a"===a.nodeName.toLowerCase()){c=!0;break}a=a.parentNode}while(0<--b&&a);return c},buttonClick:function(a){var b=!0,c=OpenLayers.Event.element(a);if(c&&(OpenLayers.Event.isLeftClick(a)||!~a.type.indexOf("mouse")))if(c=this.getPressedButton(c)){if("keydown"===a.type)switch(a.keyCode){case OpenLayers.Event.KEY_RETURN:case OpenLayers.Event.KEY_SPACE:this.target.triggerEvent("buttonclick",
{buttonElement:c}),OpenLayers.Event.stop(a),b=!1}else if(this.startEvt){if(this.completeRegEx.test(a.type)){var b=OpenLayers.Util.pagePosition(c),d=OpenLayers.Util.getViewportElement(),e=window.pageYOffset||d.scrollTop;b[0]-=window.pageXOffset||d.scrollLeft;b[1]-=e;this.target.triggerEvent("buttonclick",{buttonElement:c,buttonXY:{x:this.startEvt.clientX-b[0],y:this.startEvt.clientY-b[1]}})}this.cancelRegEx.test(a.type)&&delete this.startEvt;OpenLayers.Event.stop(a);b=!1}this.startRegEx.test(a.type)&&
(this.startEvt=a,OpenLayers.Event.stop(a),b=!1)}else b=!this.ignore(OpenLayers.Event.element(a)),delete this.startEvt;return b}});OpenLayers.Util=OpenLayers.Util||{};
OpenLayers.Util.vendorPrefix=function(){function a(a){return a?a.replace(/([A-Z])/g,function(a){return"-"+a.toLowerCase()}).replace(/^ms-/,"-ms-"):null}function b(a,b){if(void 0===g[b]){var c,e=0,f=d.length,p="undefined"!==typeof a.cssText;for(g[b]=null;e<f;e++)if((c=d[e])?(p||(c=c.toLowerCase()),c=c+b.charAt(0).toUpperCase()+b.slice(1)):c=b,void 0!==a[c]){g[b]=c;break}}return g[b]}function c(a){return b(e,a)}var d=["","O","ms","Moz","Webkit"],e=document.createElement("div").style,f={},g={};return{css:function(b){if(void 0===
f[b]){var d=b.replace(/(-[\s\S])/g,function(a){return a.charAt(1).toUpperCase()}),d=c(d);f[b]=a(d)}return f[b]},js:b,style:c,cssCache:f,jsCache:g}}();OpenLayers.Animation=function(a){var b=OpenLayers.Util.vendorPrefix.js(a,"requestAnimationFrame"),c=!!b,d=function(){var c=a[b]||function(b,c){a.setTimeout(b,16)};return function(b,d){c.apply(a,[b,d])}}(),e=0,f={};return{isNative:c,requestFrame:d,start:function(a,b,c){b=0<b?b:Number.POSITIVE_INFINITY;var l=++e,m=+new Date;f[l]=function(){f[l]&&+new Date-m<=b?(a(),f[l]&&d(f[l],c)):delete f[l]};d(f[l],c);return l},stop:function(a){delete f[a]}}}(window);OpenLayers.Tween=OpenLayers.Class({easing:null,begin:null,finish:null,duration:null,callbacks:null,time:null,minFrameRate:null,startTime:null,animationId:null,playing:!1,initialize:function(a){this.easing=a?a:OpenLayers.Easing.Expo.easeOut},start:function(a,b,c,d){this.playing=!0;this.begin=a;this.finish=b;this.duration=c;this.callbacks=d.callbacks;this.minFrameRate=d.minFrameRate||30;this.time=0;this.startTime=(new Date).getTime();OpenLayers.Animation.stop(this.animationId);this.animationId=null;
this.callbacks&&this.callbacks.start&&this.callbacks.start.call(this,this.begin);this.animationId=OpenLayers.Animation.start(OpenLayers.Function.bind(this.play,this))},stop:function(){this.playing&&(this.callbacks&&this.callbacks.done&&this.callbacks.done.call(this,this.finish),OpenLayers.Animation.stop(this.animationId),this.animationId=null,this.playing=!1)},play:function(){var a={},b;for(b in this.begin){var c=this.begin[b],d=this.finish[b];if(null==c||null==d||isNaN(c)||isNaN(d))throw new TypeError("invalid value for Tween");
a[b]=this.easing.apply(this,[this.time,c,d-c,this.duration])}this.time++;this.callbacks&&this.callbacks.eachStep&&((new Date).getTime()-this.startTime)/this.time<=1E3/this.minFrameRate&&this.callbacks.eachStep.call(this,a);this.time>this.duration&&this.stop()},CLASS_NAME:"OpenLayers.Tween"});OpenLayers.Easing={CLASS_NAME:"OpenLayers.Easing"};OpenLayers.Easing.Linear={easeIn:function(a,b,c,d){return c*a/d+b},easeOut:function(a,b,c,d){return c*a/d+b},easeInOut:function(a,b,c,d){return c*a/d+b},CLASS_NAME:"OpenLayers.Easing.Linear"};
OpenLayers.Easing.Expo={easeIn:function(a,b,c,d){return 0==a?b:c*Math.pow(2,10*(a/d-1))+b},easeOut:function(a,b,c,d){return a==d?b+c:c*(-Math.pow(2,-10*a/d)+1)+b},easeInOut:function(a,b,c,d){return 0==a?b:a==d?b+c:1>(a/=d/2)?c/2*Math.pow(2,10*(a-1))+b:c/2*(-Math.pow(2,-10*--a)+2)+b},CLASS_NAME:"OpenLayers.Easing.Expo"};
OpenLayers.Easing.Quad={easeIn:function(a,b,c,d){return c*(a/=d)*a+b},easeOut:function(a,b,c,d){return-c*(a/=d)*(a-2)+b},easeInOut:function(a,b,c,d){return 1>(a/=d/2)?c/2*a*a+b:-c/2*(--a*(a-2)-1)+b},CLASS_NAME:"OpenLayers.Easing.Quad"};OpenLayers.Projection=OpenLayers.Class({proj:null,projCode:null,titleRegEx:/\+title=[^\+]*/,initialize:function(a,b){OpenLayers.Util.extend(this,b);this.projCode=a;"object"==typeof Proj4js&&(this.proj=new Proj4js.Proj(a))},getCode:function(){return this.proj?this.proj.srsCode:this.projCode},getUnits:function(){return this.proj?this.proj.units:null},toString:function(){return this.getCode()},equals:function(a){var b=!1;a&&(a instanceof OpenLayers.Projection||(a=new OpenLayers.Projection(a)),"object"==
typeof Proj4js&&this.proj.defData&&a.proj.defData?b=this.proj.defData.replace(this.titleRegEx,"")==a.proj.defData.replace(this.titleRegEx,""):a.getCode&&(b=this.getCode(),a=a.getCode(),b=b==a||!!OpenLayers.Projection.transforms[b]&&OpenLayers.Projection.transforms[b][a]===OpenLayers.Projection.nullTransform));return b},destroy:function(){delete this.proj;delete this.projCode},CLASS_NAME:"OpenLayers.Projection"});OpenLayers.Projection.transforms={};
OpenLayers.Projection.defaults={"EPSG:4326":{units:"degrees",maxExtent:[-180,-90,180,90],yx:!0},"CRS:84":{units:"degrees",maxExtent:[-180,-90,180,90]},"EPSG:900913":{units:"m",maxExtent:[-2.003750834E7,-2.003750834E7,2.003750834E7,2.003750834E7]}};
OpenLayers.Projection.addTransform=function(a,b,c){if(c===OpenLayers.Projection.nullTransform){var d=OpenLayers.Projection.defaults[a];d&&!OpenLayers.Projection.defaults[b]&&(OpenLayers.Projection.defaults[b]=d)}OpenLayers.Projection.transforms[a]||(OpenLayers.Projection.transforms[a]={});OpenLayers.Projection.transforms[a][b]=c};
OpenLayers.Projection.transform=function(a,b,c){if(b&&c)if(b instanceof OpenLayers.Projection||(b=new OpenLayers.Projection(b)),c instanceof OpenLayers.Projection||(c=new OpenLayers.Projection(c)),b.proj&&c.proj)a=Proj4js.transform(b.proj,c.proj,a);else{b=b.getCode();c=c.getCode();var d=OpenLayers.Projection.transforms;if(d[b]&&d[b][c])d[b][c](a)}return a};OpenLayers.Projection.nullTransform=function(a){return a};
(function(){function a(a){a.x=180*a.x/d;a.y=180/Math.PI*(2*Math.atan(Math.exp(a.y/d*Math.PI))-Math.PI/2);return a}function b(a){a.x=a.x*d/180;var b=Math.log(Math.tan((90+a.y)*Math.PI/360))/Math.PI*d;a.y=Math.max(-2.003750834E7,Math.min(b,2.003750834E7));return a}function c(c,d){var e=OpenLayers.Projection.addTransform,f=OpenLayers.Projection.nullTransform,g,p,q,r,s;g=0;for(p=d.length;g<p;++g)for(q=d[g],e(c,q,b),e(q,c,a),s=g+1;s<p;++s)r=d[s],e(q,r,f),e(r,q,f)}var d=2.003750834E7,e=["EPSG:900913","EPSG:3857",
"EPSG:102113","EPSG:102100"],f=["CRS:84","urn:ogc:def:crs:EPSG:6.6:4326","EPSG:4326"],g;for(g=e.length-1;0<=g;--g)c(e[g],f);for(g=f.length-1;0<=g;--g)c(f[g],e)})();OpenLayers.Map=OpenLayers.Class({Z_INDEX_BASE:{BaseLayer:100,Overlay:325,Feature:725,Popup:750,Control:1E3},id:null,fractionalZoom:!1,events:null,allOverlays:!1,div:null,dragging:!1,size:null,viewPortDiv:null,layerContainerOrigin:null,layerContainerDiv:null,layers:null,controls:null,popups:null,baseLayer:null,center:null,resolution:null,zoom:0,panRatio:1.5,options:null,tileSize:null,projection:"EPSG:4326",units:null,resolutions:null,maxResolution:null,minResolution:null,maxScale:null,minScale:null,
maxExtent:null,minExtent:null,restrictedExtent:null,numZoomLevels:16,theme:null,displayProjection:null,fallThrough:!1,autoUpdateSize:!0,eventListeners:null,panTween:null,panMethod:OpenLayers.Easing.Expo.easeOut,panDuration:50,zoomTween:null,zoomMethod:OpenLayers.Easing.Quad.easeOut,zoomDuration:20,paddingForPopups:null,layerContainerOriginPx:null,minPx:null,maxPx:null,initialize:function(a,b){1===arguments.length&&"object"===typeof a&&(a=(b=a)&&b.div);this.tileSize=new OpenLayers.Size(OpenLayers.Map.TILE_WIDTH,
OpenLayers.Map.TILE_HEIGHT);this.paddingForPopups=new OpenLayers.Bounds(15,15,15,15);this.theme=OpenLayers._getScriptLocation()+"theme/default/style.css";this.options=OpenLayers.Util.extend({},b);OpenLayers.Util.extend(this,b);OpenLayers.Util.applyDefaults(this,OpenLayers.Projection.defaults[this.projection instanceof OpenLayers.Projection?this.projection.projCode:this.projection]);!this.maxExtent||this.maxExtent instanceof OpenLayers.Bounds||(this.maxExtent=new OpenLayers.Bounds(this.maxExtent));
!this.minExtent||this.minExtent instanceof OpenLayers.Bounds||(this.minExtent=new OpenLayers.Bounds(this.minExtent));!this.restrictedExtent||this.restrictedExtent instanceof OpenLayers.Bounds||(this.restrictedExtent=new OpenLayers.Bounds(this.restrictedExtent));!this.center||this.center instanceof OpenLayers.LonLat||(this.center=new OpenLayers.LonLat(this.center));this.layers=[];this.id=OpenLayers.Util.createUniqueID("OpenLayers.Map_");this.div=OpenLayers.Util.getElement(a);this.div||(this.div=document.createElement("div"),
this.div.style.height="1px",this.div.style.width="1px");OpenLayers.Element.addClass(this.div,"olMap");var c=this.id+"_OpenLayers_ViewPort";this.viewPortDiv=OpenLayers.Util.createDiv(c,null,null,null,"relative",null,"hidden");this.viewPortDiv.style.width="100%";this.viewPortDiv.style.height="100%";this.viewPortDiv.className="olMapViewport";this.div.appendChild(this.viewPortDiv);this.events=new OpenLayers.Events(this,this.viewPortDiv,null,this.fallThrough,{includeXY:!0});OpenLayers.TileManager&&null!==
this.tileManager&&(this.tileManager instanceof OpenLayers.TileManager||(this.tileManager=new OpenLayers.TileManager(this.tileManager)),this.tileManager.addMap(this));c=this.id+"_OpenLayers_Container";this.layerContainerDiv=OpenLayers.Util.createDiv(c);this.layerContainerDiv.style.zIndex=this.Z_INDEX_BASE.Popup-1;this.layerContainerOriginPx={x:0,y:0};this.applyTransform();this.viewPortDiv.appendChild(this.layerContainerDiv);this.updateSize();if(this.eventListeners instanceof Object)this.events.on(this.eventListeners);
!0===this.autoUpdateSize&&(this.updateSizeDestroy=OpenLayers.Function.bind(this.updateSize,this),OpenLayers.Event.observe(window,"resize",this.updateSizeDestroy));if(this.theme){for(var c=!0,d=document.getElementsByTagName("link"),e=0,f=d.length;e<f;++e)if(OpenLayers.Util.isEquivalentUrl(d.item(e).href,this.theme)){c=!1;break}c&&(c=document.createElement("link"),c.setAttribute("rel","stylesheet"),c.setAttribute("type","text/css"),c.setAttribute("href",this.theme),document.getElementsByTagName("head")[0].appendChild(c))}null==
this.controls&&(this.controls=[],null!=OpenLayers.Control&&(OpenLayers.Control.Navigation?this.controls.push(new OpenLayers.Control.Navigation):OpenLayers.Control.TouchNavigation&&this.controls.push(new OpenLayers.Control.TouchNavigation),OpenLayers.Control.Zoom?this.controls.push(new OpenLayers.Control.Zoom):OpenLayers.Control.PanZoom&&this.controls.push(new OpenLayers.Control.PanZoom),OpenLayers.Control.ArgParser&&this.controls.push(new OpenLayers.Control.ArgParser),OpenLayers.Control.Attribution&&
this.controls.push(new OpenLayers.Control.Attribution)));e=0;for(f=this.controls.length;e<f;e++)this.addControlToMap(this.controls[e]);this.popups=[];this.unloadDestroy=OpenLayers.Function.bind(this.destroy,this);OpenLayers.Event.observe(window,"unload",this.unloadDestroy);b&&b.layers&&(delete this.center,delete this.zoom,this.addLayers(b.layers),b.center&&!this.getCenter()&&this.setCenter(b.center,b.zoom));this.panMethod&&(this.panTween=new OpenLayers.Tween(this.panMethod));this.zoomMethod&&this.applyTransform.transform&&
(this.zoomTween=new OpenLayers.Tween(this.zoomMethod))},getViewport:function(){return this.viewPortDiv},render:function(a){this.div=OpenLayers.Util.getElement(a);OpenLayers.Element.addClass(this.div,"olMap");this.viewPortDiv.parentNode.removeChild(this.viewPortDiv);this.div.appendChild(this.viewPortDiv);this.updateSize()},unloadDestroy:null,updateSizeDestroy:null,destroy:function(){if(!this.unloadDestroy)return!1;this.panTween&&(this.panTween.stop(),this.panTween=null);this.zoomTween&&(this.zoomTween.stop(),
this.zoomTween=null);OpenLayers.Event.stopObserving(window,"unload",this.unloadDestroy);this.unloadDestroy=null;this.updateSizeDestroy&&OpenLayers.Event.stopObserving(window,"resize",this.updateSizeDestroy);this.paddingForPopups=null;if(null!=this.controls){for(var a=this.controls.length-1;0<=a;--a)this.controls[a].destroy();this.controls=null}if(null!=this.layers){for(a=this.layers.length-1;0<=a;--a)this.layers[a].destroy(!1);this.layers=null}this.viewPortDiv&&this.viewPortDiv.parentNode&&this.viewPortDiv.parentNode.removeChild(this.viewPortDiv);
this.viewPortDiv=null;this.tileManager&&(this.tileManager.removeMap(this),this.tileManager=null);this.eventListeners&&(this.events.un(this.eventListeners),this.eventListeners=null);this.events.destroy();this.options=this.events=null},setOptions:function(a){var b=this.minPx&&a.restrictedExtent!=this.restrictedExtent;OpenLayers.Util.extend(this,a);b&&this.moveTo(this.getCachedCenter(),this.zoom,{forceZoomChange:!0})},getTileSize:function(){return this.tileSize},getBy:function(a,b,c){var d="function"==
typeof c.test;return OpenLayers.Array.filter(this[a],function(a){return a[b]==c||d&&c.test(a[b])})},getLayersBy:function(a,b){return this.getBy("layers",a,b)},getLayersByName:function(a){return this.getLayersBy("name",a)},getLayersByClass:function(a){return this.getLayersBy("CLASS_NAME",a)},getControlsBy:function(a,b){return this.getBy("controls",a,b)},getControlsByClass:function(a){return this.getControlsBy("CLASS_NAME",a)},getLayer:function(a){for(var b=null,c=0,d=this.layers.length;c<d;c++){var e=
this.layers[c];if(e.id==a){b=e;break}}return b},setLayerZIndex:function(a,b){a.setZIndex(this.Z_INDEX_BASE[a.isBaseLayer?"BaseLayer":"Overlay"]+5*b)},resetLayersZIndex:function(){for(var a=0,b=this.layers.length;a<b;a++)this.setLayerZIndex(this.layers[a],a)},addLayer:function(a){for(var b=0,c=this.layers.length;b<c;b++)if(this.layers[b]==a)return!1;if(!1===this.events.triggerEvent("preaddlayer",{layer:a}))return!1;this.allOverlays&&(a.isBaseLayer=!1);a.div.className="olLayerDiv";a.div.style.overflow=
"";this.setLayerZIndex(a,this.layers.length);a.isFixed?this.viewPortDiv.appendChild(a.div):this.layerContainerDiv.appendChild(a.div);this.layers.push(a);a.setMap(this);a.isBaseLayer||this.allOverlays&&!this.baseLayer?null==this.baseLayer?this.setBaseLayer(a):a.setVisibility(!1):a.redraw();this.events.triggerEvent("addlayer",{layer:a});a.events.triggerEvent("added",{map:this,layer:a});a.afterAdd();return!0},addLayers:function(a){for(var b=0,c=a.length;b<c;b++)this.addLayer(a[b])},removeLayer:function(a,
b){if(!1!==this.events.triggerEvent("preremovelayer",{layer:a})){null==b&&(b=!0);a.isFixed?this.viewPortDiv.removeChild(a.div):this.layerContainerDiv.removeChild(a.div);OpenLayers.Util.removeItem(this.layers,a);a.removeMap(this);a.map=null;if(this.baseLayer==a&&(this.baseLayer=null,b))for(var c=0,d=this.layers.length;c<d;c++){var e=this.layers[c];if(e.isBaseLayer||this.allOverlays){this.setBaseLayer(e);break}}this.resetLayersZIndex();this.events.triggerEvent("removelayer",{layer:a});a.events.triggerEvent("removed",
{map:this,layer:a})}},getNumLayers:function(){return this.layers.length},getLayerIndex:function(a){return OpenLayers.Util.indexOf(this.layers,a)},setLayerIndex:function(a,b){var c=this.getLayerIndex(a);0>b?b=0:b>this.layers.length&&(b=this.layers.length);if(c!=b){this.layers.splice(c,1);this.layers.splice(b,0,a);for(var c=0,d=this.layers.length;c<d;c++)this.setLayerZIndex(this.layers[c],c);this.events.triggerEvent("changelayer",{layer:a,property:"order"});this.allOverlays&&(0===b?this.setBaseLayer(a):
this.baseLayer!==this.layers[0]&&this.setBaseLayer(this.layers[0]))}},raiseLayer:function(a,b){var c=this.getLayerIndex(a)+b;this.setLayerIndex(a,c)},setBaseLayer:function(a){if(a!=this.baseLayer&&-1!=OpenLayers.Util.indexOf(this.layers,a)){var b=this.getCachedCenter(),c=OpenLayers.Util.getResolutionFromScale(this.getScale(),a.units);null==this.baseLayer||this.allOverlays||this.baseLayer.setVisibility(!1);this.baseLayer=a;if(!this.allOverlays||this.baseLayer.visibility)this.baseLayer.setVisibility(!0),
!1===this.baseLayer.inRange&&this.baseLayer.redraw();null!=b&&(a=this.getZoomForResolution(c||this.resolution,!0),this.setCenter(b,a,!1,!0));this.events.triggerEvent("changebaselayer",{layer:this.baseLayer})}},addControl:function(a,b){this.controls.push(a);this.addControlToMap(a,b)},addControls:function(a,b){for(var c=1===arguments.length?[]:b,d=0,e=a.length;d<e;d++)this.addControl(a[d],c[d]?c[d]:null)},addControlToMap:function(a,b){a.outsideViewport=null!=a.div;this.displayProjection&&!a.displayProjection&&
(a.displayProjection=this.displayProjection);a.setMap(this);var c=a.draw(b);c&&!a.outsideViewport&&(c.style.zIndex=this.Z_INDEX_BASE.Control+this.controls.length,this.viewPortDiv.appendChild(c));a.autoActivate&&a.activate()},getControl:function(a){for(var b=null,c=0,d=this.controls.length;c<d;c++){var e=this.controls[c];if(e.id==a){b=e;break}}return b},removeControl:function(a){a&&a==this.getControl(a.id)&&(a.div&&a.div.parentNode==this.viewPortDiv&&this.viewPortDiv.removeChild(a.div),OpenLayers.Util.removeItem(this.controls,
a))},addPopup:function(a,b){if(b)for(var c=this.popups.length-1;0<=c;--c)this.removePopup(this.popups[c]);a.map=this;this.popups.push(a);if(c=a.draw())c.style.zIndex=this.Z_INDEX_BASE.Popup+this.popups.length,this.layerContainerDiv.appendChild(c)},removePopup:function(a){OpenLayers.Util.removeItem(this.popups,a);if(a.div)try{this.layerContainerDiv.removeChild(a.div)}catch(b){}a.map=null},getSize:function(){var a=null;null!=this.size&&(a=this.size.clone());return a},updateSize:function(){var a=this.getCurrentSize();
if(a&&!isNaN(a.h)&&!isNaN(a.w)){this.events.clearMouseCache();var b=this.getSize();null==b&&(this.size=b=a);if(!a.equals(b)){this.size=a;a=0;for(b=this.layers.length;a<b;a++)this.layers[a].onMapResize();a=this.getCachedCenter();null!=this.baseLayer&&null!=a&&(b=this.getZoom(),this.zoom=null,this.setCenter(a,b))}}this.events.triggerEvent("updatesize")},getCurrentSize:function(){var a=new OpenLayers.Size(this.div.clientWidth,this.div.clientHeight);if(0==a.w&&0==a.h||isNaN(a.w)&&isNaN(a.h))a.w=this.div.offsetWidth,
a.h=this.div.offsetHeight;if(0==a.w&&0==a.h||isNaN(a.w)&&isNaN(a.h))a.w=parseInt(this.div.style.width),a.h=parseInt(this.div.style.height);return a},calculateBounds:function(a,b){var c=null;null==a&&(a=this.getCachedCenter());null==b&&(b=this.getResolution());if(null!=a&&null!=b)var c=this.size.w*b/2,d=this.size.h*b/2,c=new OpenLayers.Bounds(a.lon-c,a.lat-d,a.lon+c,a.lat+d);return c},getCenter:function(){var a=null,b=this.getCachedCenter();b&&(a=b.clone());return a},getCachedCenter:function(){!this.center&&
this.size&&(this.center=this.getLonLatFromViewPortPx({x:this.size.w/2,y:this.size.h/2}));return this.center},getZoom:function(){return this.zoom},pan:function(a,b,c){c=OpenLayers.Util.applyDefaults(c,{animate:!0,dragging:!1});if(c.dragging)0==a&&0==b||this.moveByPx(a,b);else{var d=this.getViewPortPxFromLonLat(this.getCachedCenter());a=d.add(a,b);if(this.dragging||!a.equals(d))d=this.getLonLatFromViewPortPx(a),c.animate?this.panTo(d):(this.moveTo(d),this.dragging&&(this.dragging=!1,this.events.triggerEvent("moveend")))}},
panTo:function(a){if(this.panTween&&this.getExtent().scale(this.panRatio).containsLonLat(a)){var b=this.getCachedCenter();if(!a.equals(b)){var b=this.getPixelFromLonLat(b),c=this.getPixelFromLonLat(a),d=0,e=0;this.panTween.start({x:0,y:0},{x:c.x-b.x,y:c.y-b.y},this.panDuration,{callbacks:{eachStep:OpenLayers.Function.bind(function(a){this.moveByPx(a.x-d,a.y-e);d=Math.round(a.x);e=Math.round(a.y)},this),done:OpenLayers.Function.bind(function(b){this.moveTo(a);this.dragging=!1;this.events.triggerEvent("moveend")},
this)}})}}else this.setCenter(a)},setCenter:function(a,b,c,d){this.panTween&&this.panTween.stop();this.zoomTween&&this.zoomTween.stop();this.moveTo(a,b,{dragging:c,forceZoomChange:d})},moveByPx:function(a,b){var c=this.size.w/2,d=this.size.h/2,e=c+a,f=d+b,g=this.baseLayer.wrapDateLine,h=0,k=0;this.restrictedExtent&&(h=c,k=d,g=!1);a=g||e<=this.maxPx.x-h&&e>=this.minPx.x+h?Math.round(a):0;b=f<=this.maxPx.y-k&&f>=this.minPx.y+k?Math.round(b):0;if(a||b){this.dragging||(this.dragging=!0,this.events.triggerEvent("movestart"));
this.center=null;a&&(this.layerContainerOriginPx.x-=a,this.minPx.x-=a,this.maxPx.x-=a);b&&(this.layerContainerOriginPx.y-=b,this.minPx.y-=b,this.maxPx.y-=b);this.applyTransform();d=0;for(e=this.layers.length;d<e;++d)c=this.layers[d],c.visibility&&(c===this.baseLayer||c.inRange)&&(c.moveByPx(a,b),c.events.triggerEvent("move"));this.events.triggerEvent("move")}},adjustZoom:function(a){if(this.baseLayer&&this.baseLayer.wrapDateLine){var b=this.baseLayer.resolutions,c=this.getMaxExtent().getWidth()/this.size.w;
if(this.getResolutionForZoom(a)>c)if(this.fractionalZoom)a=this.getZoomForResolution(c);else for(var d=a|0,e=b.length;d<e;++d)if(b[d]<=c){a=d;break}}return a},getMinZoom:function(){return this.adjustZoom(0)},moveTo:function(a,b,c){null==a||a instanceof OpenLayers.LonLat||(a=new OpenLayers.LonLat(a));c||(c={});null!=b&&(b=parseFloat(b),this.fractionalZoom||(b=Math.round(b)));var d=b;b=this.adjustZoom(b);b!==d&&(a=this.getCenter());var d=c.dragging||this.dragging,e=c.forceZoomChange;this.getCachedCenter()||
this.isValidLonLat(a)||(a=this.maxExtent.getCenterLonLat(),this.center=a.clone());if(null!=this.restrictedExtent){null==a&&(a=this.center);null==b&&(b=this.getZoom());var f=this.getResolutionForZoom(b),f=this.calculateBounds(a,f);if(!this.restrictedExtent.containsBounds(f)){var g=this.restrictedExtent.getCenterLonLat();f.getWidth()>this.restrictedExtent.getWidth()?a=new OpenLayers.LonLat(g.lon,a.lat):f.left<this.restrictedExtent.left?a=a.add(this.restrictedExtent.left-f.left,0):f.right>this.restrictedExtent.right&&
(a=a.add(this.restrictedExtent.right-f.right,0));f.getHeight()>this.restrictedExtent.getHeight()?a=new OpenLayers.LonLat(a.lon,g.lat):f.bottom<this.restrictedExtent.bottom?a=a.add(0,this.restrictedExtent.bottom-f.bottom):f.top>this.restrictedExtent.top&&(a=a.add(0,this.restrictedExtent.top-f.top))}}e=e||this.isValidZoomLevel(b)&&b!=this.getZoom();f=this.isValidLonLat(a)&&!a.equals(this.center);if(e||f||d){d||this.events.triggerEvent("movestart",{zoomChanged:e});f&&(!e&&this.center&&this.centerLayerContainer(a),
this.center=a.clone());a=e?this.getResolutionForZoom(b):this.getResolution();if(e||null==this.layerContainerOrigin){this.layerContainerOrigin=this.getCachedCenter();this.layerContainerOriginPx.x=0;this.layerContainerOriginPx.y=0;this.applyTransform();var f=this.getMaxExtent({restricted:!0}),h=f.getCenterLonLat(),g=this.center.lon-h.lon,h=h.lat-this.center.lat,k=Math.round(f.getWidth()/a),l=Math.round(f.getHeight()/a);this.minPx={x:(this.size.w-k)/2-g/a,y:(this.size.h-l)/2-h/a};this.maxPx={x:this.minPx.x+
Math.round(f.getWidth()/a),y:this.minPx.y+Math.round(f.getHeight()/a)}}e&&(this.zoom=b,this.resolution=a);a=this.getExtent();this.baseLayer.visibility&&(this.baseLayer.moveTo(a,e,c.dragging),c.dragging||this.baseLayer.events.triggerEvent("moveend",{zoomChanged:e}));a=this.baseLayer.getExtent();for(b=this.layers.length-1;0<=b;--b)f=this.layers[b],f===this.baseLayer||f.isBaseLayer||(g=f.calculateInRange(),f.inRange!=g&&((f.inRange=g)||f.display(!1),this.events.triggerEvent("changelayer",{layer:f,property:"visibility"})),
g&&f.visibility&&(f.moveTo(a,e,c.dragging),c.dragging||f.events.triggerEvent("moveend",{zoomChanged:e})));this.events.triggerEvent("move");d||this.events.triggerEvent("moveend");if(e){b=0;for(c=this.popups.length;b<c;b++)this.popups[b].updatePosition();this.events.triggerEvent("zoomend")}}},centerLayerContainer:function(a){var b=this.getViewPortPxFromLonLat(this.layerContainerOrigin),c=this.getViewPortPxFromLonLat(a);if(null!=b&&null!=c){var d=this.layerContainerOriginPx.x;a=this.layerContainerOriginPx.y;
var e=Math.round(b.x-c.x),b=Math.round(b.y-c.y);this.applyTransform(this.layerContainerOriginPx.x=e,this.layerContainerOriginPx.y=b);d-=e;a-=b;this.minPx.x-=d;this.maxPx.x-=d;this.minPx.y-=a;this.maxPx.y-=a}},isValidZoomLevel:function(a){return null!=a&&0<=a&&a<this.getNumZoomLevels()},isValidLonLat:function(a){var b=!1;null!=a&&(b=this.getMaxExtent(),b=b.containsLonLat(a,{worldBounds:this.baseLayer.wrapDateLine&&b}));return b},getProjection:function(){var a=this.getProjectionObject();return a?a.getCode():
null},getProjectionObject:function(){var a=null;null!=this.baseLayer&&(a=this.baseLayer.projection);return a},getMaxResolution:function(){var a=null;null!=this.baseLayer&&(a=this.baseLayer.maxResolution);return a},getMaxExtent:function(a){var b=null;a&&a.restricted&&this.restrictedExtent?b=this.restrictedExtent:null!=this.baseLayer&&(b=this.baseLayer.maxExtent);return b},getNumZoomLevels:function(){var a=null;null!=this.baseLayer&&(a=this.baseLayer.numZoomLevels);return a},getExtent:function(){var a=
null;null!=this.baseLayer&&(a=this.baseLayer.getExtent());return a},getResolution:function(){var a=null;null!=this.baseLayer?a=this.baseLayer.getResolution():!0===this.allOverlays&&0<this.layers.length&&(a=this.layers[0].getResolution());return a},getUnits:function(){var a=null;null!=this.baseLayer&&(a=this.baseLayer.units);return a},getScale:function(){var a=null;null!=this.baseLayer&&(a=this.getResolution(),a=OpenLayers.Util.getScaleFromResolution(a,this.baseLayer.units));return a},getZoomForExtent:function(a,
b){var c=null;null!=this.baseLayer&&(c=this.baseLayer.getZoomForExtent(a,b));return c},getResolutionForZoom:function(a){var b=null;this.baseLayer&&(b=this.baseLayer.getResolutionForZoom(a));return b},getZoomForResolution:function(a,b){var c=null;null!=this.baseLayer&&(c=this.baseLayer.getZoomForResolution(a,b));return c},zoomTo:function(a,b){var c=this;if(c.isValidZoomLevel(a))if(c.baseLayer.wrapDateLine&&(a=c.adjustZoom(a)),c.zoomTween){var d=c.getResolution(),e=c.getResolutionForZoom(a),f={scale:1},
d={scale:d/e};c.zoomTween.playing&&c.zoomTween.duration<3*c.zoomDuration?c.zoomTween.finish={scale:c.zoomTween.finish.scale*d.scale}:(b||(e=c.getSize(),b={x:e.w/2,y:e.h/2}),c.zoomTween.start(f,d,c.zoomDuration,{minFrameRate:50,callbacks:{eachStep:function(a){var d=c.layerContainerOriginPx;a=a.scale;c.applyTransform(d.x+((a-1)*(d.x-b.x)|0),d.y+((a-1)*(d.y-b.y)|0),a)},done:function(a){c.applyTransform();a=c.getResolution()/a.scale;var d=c.getZoomForResolution(a,!0);c.moveTo(c.getZoomTargetCenter(b,
a),d,!0)}}}))}else f=b?c.getZoomTargetCenter(b,c.getResolutionForZoom(a)):null,c.setCenter(f,a)},zoomIn:function(){this.zoomTo(this.getZoom()+1)},zoomOut:function(){this.zoomTo(this.getZoom()-1)},zoomToExtent:function(a,b){a instanceof OpenLayers.Bounds||(a=new OpenLayers.Bounds(a));var c=a.getCenterLonLat();if(this.baseLayer.wrapDateLine){c=this.getMaxExtent();for(a=a.clone();a.right<a.left;)a.right+=c.getWidth();c=a.getCenterLonLat().wrapDateLine(c)}this.setCenter(c,this.getZoomForExtent(a,b))},
zoomToMaxExtent:function(a){a=this.getMaxExtent({restricted:a?a.restricted:!0});this.zoomToExtent(a)},zoomToScale:function(a,b){var c=OpenLayers.Util.getResolutionFromScale(a,this.baseLayer.units),d=this.size.w*c/2,c=this.size.h*c/2,e=this.getCachedCenter(),d=new OpenLayers.Bounds(e.lon-d,e.lat-c,e.lon+d,e.lat+c);this.zoomToExtent(d,b)},getLonLatFromViewPortPx:function(a){var b=null;null!=this.baseLayer&&(b=this.baseLayer.getLonLatFromViewPortPx(a));return b},getViewPortPxFromLonLat:function(a){var b=
null;null!=this.baseLayer&&(b=this.baseLayer.getViewPortPxFromLonLat(a));return b},getZoomTargetCenter:function(a,b){var c=null,d=this.getSize(),e=d.w/2-a.x,d=a.y-d.h/2,f=this.getLonLatFromPixel(a);f&&(c=new OpenLayers.LonLat(f.lon+e*b,f.lat+d*b));return c},getLonLatFromPixel:function(a){return this.getLonLatFromViewPortPx(a)},getPixelFromLonLat:function(a){a=this.getViewPortPxFromLonLat(a);a.x=Math.round(a.x);a.y=Math.round(a.y);return a},getGeodesicPixelSize:function(a){var b=a?this.getLonLatFromPixel(a):
this.getCachedCenter()||new OpenLayers.LonLat(0,0),c=this.getResolution();a=b.add(-c/2,0);var d=b.add(c/2,0),e=b.add(0,-c/2),b=b.add(0,c/2),c=new OpenLayers.Projection("EPSG:4326"),f=this.getProjectionObject()||c;f.equals(c)||(a.transform(f,c),d.transform(f,c),e.transform(f,c),b.transform(f,c));return new OpenLayers.Size(OpenLayers.Util.distVincenty(a,d),OpenLayers.Util.distVincenty(e,b))},getViewPortPxFromLayerPx:function(a){var b=null;null!=a&&(b=a.add(this.layerContainerOriginPx.x,this.layerContainerOriginPx.y));
return b},getLayerPxFromViewPortPx:function(a){var b=null;null!=a&&(b=a.add(-this.layerContainerOriginPx.x,-this.layerContainerOriginPx.y),isNaN(b.x)||isNaN(b.y))&&(b=null);return b},getLonLatFromLayerPx:function(a){a=this.getViewPortPxFromLayerPx(a);return this.getLonLatFromViewPortPx(a)},getLayerPxFromLonLat:function(a){a=this.getPixelFromLonLat(a);return this.getLayerPxFromViewPortPx(a)},applyTransform:function(a,b,c){c=c||1;var d=this.layerContainerOriginPx,e=1!==c;a=a||d.x;b=b||d.y;var f=this.layerContainerDiv.style,
g=this.applyTransform.transform,h=this.applyTransform.template;if(void 0===g&&(g=OpenLayers.Util.vendorPrefix.style("transform"),this.applyTransform.transform=g)){var k=OpenLayers.Element.getStyle(this.viewPortDiv,OpenLayers.Util.vendorPrefix.css("transform"));k&&"none"===k||(h=["translate3d(",",0) ","scale3d(",",1)"],f[g]=[h[0],"0,0",h[1]].join(""));h&&~f[g].indexOf(h[0])||(h=["translate(",") ","scale(",")"]);this.applyTransform.template=h}null===g||"translate3d("!==h[0]&&!0!==e?(f.left=a+"px",f.top=
b+"px",null!==g&&(f[g]="")):(!0===e&&"translate("===h[0]&&(a-=d.x,b-=d.y,f.left=d.x+"px",f.top=d.y+"px"),f[g]=[h[0],a,"px,",b,"px",h[1],h[2],c,",",c,h[3]].join(""))},CLASS_NAME:"OpenLayers.Map"});OpenLayers.Map.TILE_WIDTH=256;OpenLayers.Map.TILE_HEIGHT=256;OpenLayers.Handler=OpenLayers.Class({id:null,control:null,map:null,keyMask:null,active:!1,evt:null,touch:!1,initialize:function(a,b,c){OpenLayers.Util.extend(this,c);this.control=a;this.callbacks=b;(a=this.map||a.map)&&this.setMap(a);this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_")},setMap:function(a){this.map=a},checkModifiers:function(a){return null==this.keyMask?!0:((a.shiftKey?OpenLayers.Handler.MOD_SHIFT:0)|(a.ctrlKey?OpenLayers.Handler.MOD_CTRL:0)|(a.altKey?OpenLayers.Handler.MOD_ALT:
0)|(a.metaKey?OpenLayers.Handler.MOD_META:0))==this.keyMask},activate:function(){if(this.active)return!1;for(var a=OpenLayers.Events.prototype.BROWSER_EVENTS,b=0,c=a.length;b<c;b++)this[a[b]]&&this.register(a[b],this[a[b]]);return this.active=!0},deactivate:function(){if(!this.active)return!1;for(var a=OpenLayers.Events.prototype.BROWSER_EVENTS,b=0,c=a.length;b<c;b++)this[a[b]]&&this.unregister(a[b],this[a[b]]);this.active=this.touch=!1;return!0},startTouch:function(){if(!this.touch){this.touch=!0;
for(var a="mousedown mouseup mousemove click dblclick mouseout".split(" "),b=0,c=a.length;b<c;b++)this[a[b]]&&this.unregister(a[b],this[a[b]])}},callback:function(a,b){a&&this.callbacks[a]&&this.callbacks[a].apply(this.control,b)},register:function(a,b){this.map.events.registerPriority(a,this,b);this.map.events.registerPriority(a,this,this.setEvent)},unregister:function(a,b){this.map.events.unregister(a,this,b);this.map.events.unregister(a,this,this.setEvent)},setEvent:function(a){this.evt=a;return!0},
destroy:function(){this.deactivate();this.control=this.map=null},CLASS_NAME:"OpenLayers.Handler"});OpenLayers.Handler.MOD_NONE=0;OpenLayers.Handler.MOD_SHIFT=1;OpenLayers.Handler.MOD_CTRL=2;OpenLayers.Handler.MOD_ALT=4;OpenLayers.Handler.MOD_META=8;OpenLayers.Handler.Click=OpenLayers.Class(OpenLayers.Handler,{delay:300,single:!0,"double":!1,pixelTolerance:0,dblclickTolerance:13,stopSingle:!1,stopDouble:!1,timerId:null,down:null,last:null,first:null,rightclickTimerId:null,touchstart:function(a){this.startTouch();this.down=this.getEventInfo(a);this.last=this.getEventInfo(a);return!0},touchmove:function(a){this.last=this.getEventInfo(a);return!0},touchend:function(a){this.down&&(a.xy=this.last.xy,a.lastTouches=this.last.touches,this.handleSingle(a),
this.down=null);return!0},mousedown:function(a){this.down=this.getEventInfo(a);this.last=this.getEventInfo(a);return!0},mouseup:function(a){var b=!0;this.checkModifiers(a)&&(this.control.handleRightClicks&&OpenLayers.Event.isRightClick(a))&&(b=this.rightclick(a));return b},rightclick:function(a){if(this.passesTolerance(a)){if(null!=this.rightclickTimerId)return this.clearTimer(),this.callback("dblrightclick",[a]),!this.stopDouble;a=this["double"]?OpenLayers.Util.extend({},a):this.callback("rightclick",
[a]);a=OpenLayers.Function.bind(this.delayedRightCall,this,a);this.rightclickTimerId=window.setTimeout(a,this.delay)}return!this.stopSingle},delayedRightCall:function(a){this.rightclickTimerId=null;a&&this.callback("rightclick",[a])},click:function(a){this.last||(this.last=this.getEventInfo(a));this.handleSingle(a);return!this.stopSingle},dblclick:function(a){this.handleDouble(a);return!this.stopDouble},handleDouble:function(a){this.passesDblclickTolerance(a)&&(this["double"]&&this.callback("dblclick",
[a]),this.clearTimer())},handleSingle:function(a){this.passesTolerance(a)&&(null!=this.timerId?(this.last.touches&&1===this.last.touches.length&&(this["double"]&&OpenLayers.Event.preventDefault(a),this.handleDouble(a)),this.last.touches&&2===this.last.touches.length||this.clearTimer()):(this.first=this.getEventInfo(a),a=this.single?OpenLayers.Util.extend({},a):null,this.queuePotentialClick(a)))},queuePotentialClick:function(a){this.timerId=window.setTimeout(OpenLayers.Function.bind(this.delayedCall,
this,a),this.delay)},passesTolerance:function(a){var b=!0;if(null!=this.pixelTolerance&&this.down&&this.down.xy&&(b=this.pixelTolerance>=this.down.xy.distanceTo(a.xy))&&this.touch&&this.down.touches.length===this.last.touches.length){a=0;for(var c=this.down.touches.length;a<c;++a)if(this.getTouchDistance(this.down.touches[a],this.last.touches[a])>this.pixelTolerance){b=!1;break}}return b},getTouchDistance:function(a,b){return Math.sqrt(Math.pow(a.clientX-b.clientX,2)+Math.pow(a.clientY-b.clientY,
2))},passesDblclickTolerance:function(a){a=!0;this.down&&this.first&&(a=this.down.xy.distanceTo(this.first.xy)<=this.dblclickTolerance);return a},clearTimer:function(){null!=this.timerId&&(window.clearTimeout(this.timerId),this.timerId=null);null!=this.rightclickTimerId&&(window.clearTimeout(this.rightclickTimerId),this.rightclickTimerId=null)},delayedCall:function(a){this.timerId=null;a&&this.callback("click",[a])},getEventInfo:function(a){var b;if(a.touches){var c=a.touches.length;b=Array(c);for(var d,
e=0;e<c;e++)d=a.touches[e],b[e]={clientX:d.olClientX,clientY:d.olClientY}}return{xy:a.xy,touches:b}},deactivate:function(){var a=!1;OpenLayers.Handler.prototype.deactivate.apply(this,arguments)&&(this.clearTimer(),this.last=this.first=this.down=null,a=!0);return a},CLASS_NAME:"OpenLayers.Handler.Click"});OpenLayers.Handler.Drag=OpenLayers.Class(OpenLayers.Handler,{started:!1,stopDown:!0,dragging:!1,last:null,start:null,lastMoveEvt:null,oldOnselectstart:null,interval:0,timeoutId:null,documentDrag:!1,documentEvents:null,initialize:function(a,b,c){OpenLayers.Handler.prototype.initialize.apply(this,arguments);if(!0===this.documentDrag){var d=this;this._docMove=function(a){d.mousemove({xy:{x:a.clientX,y:a.clientY},element:document})};this._docUp=function(a){d.mouseup({xy:{x:a.clientX,y:a.clientY}})}}},
dragstart:function(a){var b=!0;this.dragging=!1;this.checkModifiers(a)&&(OpenLayers.Event.isLeftClick(a)||OpenLayers.Event.isSingleTouch(a))?(this.started=!0,this.last=this.start=a.xy,OpenLayers.Element.addClass(this.map.viewPortDiv,"olDragDown"),this.down(a),this.callback("down",[a.xy]),OpenLayers.Event.preventDefault(a),this.oldOnselectstart||(this.oldOnselectstart=document.onselectstart?document.onselectstart:OpenLayers.Function.True),document.onselectstart=OpenLayers.Function.False,b=!this.stopDown):
(this.started=!1,this.last=this.start=null);return b},dragmove:function(a){this.lastMoveEvt=a;!this.started||(this.timeoutId||a.xy.x==this.last.x&&a.xy.y==this.last.y)||(!0===this.documentDrag&&this.documentEvents&&(a.element===document?(this.adjustXY(a),this.setEvent(a)):this.removeDocumentEvents()),0<this.interval&&(this.timeoutId=setTimeout(OpenLayers.Function.bind(this.removeTimeout,this),this.interval)),this.dragging=!0,this.move(a),this.callback("move",[a.xy]),this.oldOnselectstart||(this.oldOnselectstart=
document.onselectstart,document.onselectstart=OpenLayers.Function.False),this.last=a.xy);return!0},dragend:function(a){if(this.started){!0===this.documentDrag&&this.documentEvents&&(this.adjustXY(a),this.removeDocumentEvents());var b=this.start!=this.last;this.dragging=this.started=!1;OpenLayers.Element.removeClass(this.map.viewPortDiv,"olDragDown");this.up(a);this.callback("up",[a.xy]);b&&this.callback("done",[a.xy]);document.onselectstart=this.oldOnselectstart}return!0},down:function(a){},move:function(a){},
up:function(a){},out:function(a){},mousedown:function(a){return this.dragstart(a)},touchstart:function(a){this.startTouch();return this.dragstart(a)},mousemove:function(a){return this.dragmove(a)},touchmove:function(a){return this.dragmove(a)},removeTimeout:function(){this.timeoutId=null;this.dragging&&this.mousemove(this.lastMoveEvt)},mouseup:function(a){return this.dragend(a)},touchend:function(a){a.xy=this.last;return this.dragend(a)},mouseout:function(a){if(this.started&&OpenLayers.Util.mouseLeft(a,
this.map.viewPortDiv))if(!0===this.documentDrag)this.addDocumentEvents();else{var b=this.start!=this.last;this.dragging=this.started=!1;OpenLayers.Element.removeClass(this.map.viewPortDiv,"olDragDown");this.out(a);this.callback("out",[]);b&&this.callback("done",[a.xy]);document.onselectstart&&(document.onselectstart=this.oldOnselectstart)}return!0},click:function(a){return this.start==this.last},activate:function(){var a=!1;OpenLayers.Handler.prototype.activate.apply(this,arguments)&&(this.dragging=
!1,a=!0);return a},deactivate:function(){var a=!1;OpenLayers.Handler.prototype.deactivate.apply(this,arguments)&&(this.dragging=this.started=!1,this.last=this.start=null,a=!0,OpenLayers.Element.removeClass(this.map.viewPortDiv,"olDragDown"));return a},adjustXY:function(a){var b=OpenLayers.Util.pagePosition(this.map.viewPortDiv);a.xy.x-=b[0];a.xy.y-=b[1]},addDocumentEvents:function(){OpenLayers.Element.addClass(document.body,"olDragDown");this.documentEvents=!0;OpenLayers.Event.observe(document,"mousemove",
this._docMove);OpenLayers.Event.observe(document,"mouseup",this._docUp)},removeDocumentEvents:function(){OpenLayers.Element.removeClass(document.body,"olDragDown");this.documentEvents=!1;OpenLayers.Event.stopObserving(document,"mousemove",this._docMove);OpenLayers.Event.stopObserving(document,"mouseup",this._docUp)},CLASS_NAME:"OpenLayers.Handler.Drag"});OpenLayers.Control.OverviewMap=OpenLayers.Class(OpenLayers.Control,{element:null,ovmap:null,size:{w:180,h:90},layers:null,minRectSize:15,minRectDisplayClass:"RectReplacement",minRatio:8,maxRatio:32,mapOptions:null,autoPan:!1,handlers:null,resolutionFactor:1,maximized:!1,maximizeTitle:"",minimizeTitle:"",initialize:function(a){this.layers=[];this.handlers={};OpenLayers.Control.prototype.initialize.apply(this,[a])},destroy:function(){this.mapDiv&&(this.handlers.click&&this.handlers.click.destroy(),
this.handlers.drag&&this.handlers.drag.destroy(),this.ovmap&&this.ovmap.viewPortDiv.removeChild(this.extentRectangle),this.extentRectangle=null,this.rectEvents&&(this.rectEvents.destroy(),this.rectEvents=null),this.ovmap&&(this.ovmap.destroy(),this.ovmap=null),this.element.removeChild(this.mapDiv),this.mapDiv=null,this.div.removeChild(this.element),this.element=null,this.maximizeDiv&&(this.div.removeChild(this.maximizeDiv),this.maximizeDiv=null),this.minimizeDiv&&(this.div.removeChild(this.minimizeDiv),
this.minimizeDiv=null),this.map.events.un({buttonclick:this.onButtonClick,moveend:this.update,changebaselayer:this.baseLayerDraw,scope:this}),OpenLayers.Control.prototype.destroy.apply(this,arguments))},draw:function(){OpenLayers.Control.prototype.draw.apply(this,arguments);if(0===this.layers.length)if(this.map.baseLayer)this.layers=[this.map.baseLayer.clone()];else return this.map.events.register("changebaselayer",this,this.baseLayerDraw),this.div;this.element=document.createElement("div");this.element.className=
this.displayClass+"Element";this.element.style.display="none";this.mapDiv=document.createElement("div");this.mapDiv.style.width=this.size.w+"px";this.mapDiv.style.height=this.size.h+"px";this.mapDiv.style.position="relative";this.mapDiv.style.overflow="hidden";this.mapDiv.id=OpenLayers.Util.createUniqueID("overviewMap");this.extentRectangle=document.createElement("div");this.extentRectangle.style.position="absolute";this.extentRectangle.style.zIndex=1E3;this.extentRectangle.className=this.displayClass+
"ExtentRectangle";this.element.appendChild(this.mapDiv);this.div.appendChild(this.element);if(this.outsideViewport)this.element.style.display="";else{this.div.className+=" "+this.displayClass+"Container";var a=OpenLayers.Util.getImageLocation("layer-switcher-maximize.png");this.maximizeDiv=OpenLayers.Util.createAlphaImageDiv(this.displayClass+"MaximizeButton",null,null,a,"absolute");this.maximizeDiv.style.display="none";this.maximizeDiv.className=this.displayClass+"MaximizeButton olButton";this.maximizeTitle&&
(this.maximizeDiv.title=this.maximizeTitle);this.div.appendChild(this.maximizeDiv);a=OpenLayers.Util.getImageLocation("layer-switcher-minimize.png");this.minimizeDiv=OpenLayers.Util.createAlphaImageDiv("OpenLayers_Control_minimizeDiv",null,null,a,"absolute");this.minimizeDiv.style.display="none";this.minimizeDiv.className=this.displayClass+"MinimizeButton olButton";this.minimizeTitle&&(this.minimizeDiv.title=this.minimizeTitle);this.div.appendChild(this.minimizeDiv);this.minimizeControl()}this.map.getExtent()&&
this.update();this.map.events.on({buttonclick:this.onButtonClick,moveend:this.update,scope:this});this.maximized&&this.maximizeControl();return this.div},baseLayerDraw:function(){this.draw();this.map.events.unregister("changebaselayer",this,this.baseLayerDraw)},rectDrag:function(a){var b=this.handlers.drag.last.x-a.x,c=this.handlers.drag.last.y-a.y;if(0!=b||0!=c){var d=this.rectPxBounds.top,e=this.rectPxBounds.left;a=Math.abs(this.rectPxBounds.getHeight());var f=this.rectPxBounds.getWidth(),c=Math.max(0,
d-c),c=Math.min(c,this.ovmap.size.h-this.hComp-a),b=Math.max(0,e-b),b=Math.min(b,this.ovmap.size.w-this.wComp-f);this.setRectPxBounds(new OpenLayers.Bounds(b,c+a,b+f,c))}},mapDivClick:function(a){var b=this.rectPxBounds.getCenterPixel(),c=a.xy.x-b.x,d=a.xy.y-b.y,e=this.rectPxBounds.top,f=this.rectPxBounds.left;a=Math.abs(this.rectPxBounds.getHeight());b=this.rectPxBounds.getWidth();d=Math.max(0,e+d);d=Math.min(d,this.ovmap.size.h-a);c=Math.max(0,f+c);c=Math.min(c,this.ovmap.size.w-b);this.setRectPxBounds(new OpenLayers.Bounds(c,
d+a,c+b,d));this.updateMapToRect()},onButtonClick:function(a){a.buttonElement===this.minimizeDiv?this.minimizeControl():a.buttonElement===this.maximizeDiv&&this.maximizeControl()},maximizeControl:function(a){this.element.style.display="";this.showToggle(!1);null!=a&&OpenLayers.Event.stop(a)},minimizeControl:function(a){this.element.style.display="none";this.showToggle(!0);null!=a&&OpenLayers.Event.stop(a)},showToggle:function(a){this.maximizeDiv&&(this.maximizeDiv.style.display=a?"":"none");this.minimizeDiv&&
(this.minimizeDiv.style.display=a?"none":"")},update:function(){null==this.ovmap&&this.createMap();!this.autoPan&&this.isSuitableOverview()||this.updateOverview();this.updateRectToMap()},isSuitableOverview:function(){var a=this.map.getExtent(),b=this.map.getMaxExtent(),a=new OpenLayers.Bounds(Math.max(a.left,b.left),Math.max(a.bottom,b.bottom),Math.min(a.right,b.right),Math.min(a.top,b.top));this.ovmap.getProjection()!=this.map.getProjection()&&(a=a.transform(this.map.getProjectionObject(),this.ovmap.getProjectionObject()));
b=this.ovmap.getResolution()/this.map.getResolution();return b>this.minRatio&&b<=this.maxRatio&&this.ovmap.getExtent().containsBounds(a)},updateOverview:function(){var a=this.map.getResolution(),b=this.ovmap.getResolution(),c=b/a;c>this.maxRatio?b=this.minRatio*a:c<=this.minRatio&&(b=this.maxRatio*a);this.ovmap.getProjection()!=this.map.getProjection()?(a=this.map.center.clone(),a.transform(this.map.getProjectionObject(),this.ovmap.getProjectionObject())):a=this.map.center;this.ovmap.setCenter(a,
this.ovmap.getZoomForResolution(b*this.resolutionFactor));this.updateRectToMap()},createMap:function(){var a=OpenLayers.Util.extend({controls:[],maxResolution:"auto",fallThrough:!1},this.mapOptions);this.ovmap=new OpenLayers.Map(this.mapDiv,a);this.ovmap.viewPortDiv.appendChild(this.extentRectangle);OpenLayers.Event.stopObserving(window,"unload",this.ovmap.unloadDestroy);this.ovmap.addLayers(this.layers);this.ovmap.zoomToMaxExtent();this.wComp=(this.wComp=parseInt(OpenLayers.Element.getStyle(this.extentRectangle,
"border-left-width"))+parseInt(OpenLayers.Element.getStyle(this.extentRectangle,"border-right-width")))?this.wComp:2;this.hComp=(this.hComp=parseInt(OpenLayers.Element.getStyle(this.extentRectangle,"border-top-width"))+parseInt(OpenLayers.Element.getStyle(this.extentRectangle,"border-bottom-width")))?this.hComp:2;this.handlers.drag=new OpenLayers.Handler.Drag(this,{move:this.rectDrag,done:this.updateMapToRect},{map:this.ovmap});this.handlers.click=new OpenLayers.Handler.Click(this,{click:this.mapDivClick},
{single:!0,"double":!1,stopSingle:!0,stopDouble:!0,pixelTolerance:1,map:this.ovmap});this.handlers.click.activate();this.rectEvents=new OpenLayers.Events(this,this.extentRectangle,null,!0);this.rectEvents.register("mouseover",this,function(a){this.handlers.drag.active||this.map.dragging||this.handlers.drag.activate()});this.rectEvents.register("mouseout",this,function(a){this.handlers.drag.dragging||this.handlers.drag.deactivate()});if(this.ovmap.getProjection()!=this.map.getProjection()){var a=this.map.getProjectionObject().getUnits()||
this.map.units||this.map.baseLayer.units,b=this.ovmap.getProjectionObject().getUnits()||this.ovmap.units||this.ovmap.baseLayer.units;this.resolutionFactor=a&&b?OpenLayers.INCHES_PER_UNIT[a]/OpenLayers.INCHES_PER_UNIT[b]:1}},updateRectToMap:function(){var a;a=this.ovmap.getProjection()!=this.map.getProjection()?this.map.getExtent().transform(this.map.getProjectionObject(),this.ovmap.getProjectionObject()):this.map.getExtent();(a=this.getRectBoundsFromMapBounds(a))&&this.setRectPxBounds(a)},updateMapToRect:function(){var a=
this.getMapBoundsFromRectBounds(this.rectPxBounds);this.ovmap.getProjection()!=this.map.getProjection()&&(a=a.transform(this.ovmap.getProjectionObject(),this.map.getProjectionObject()));this.map.panTo(a.getCenterLonLat())},setRectPxBounds:function(a){var b=Math.max(a.top,0),c=Math.max(a.left,0),d=Math.min(a.top+Math.abs(a.getHeight()),this.ovmap.size.h-this.hComp);a=Math.min(a.left+a.getWidth(),this.ovmap.size.w-this.wComp);var e=Math.max(a-c,0),f=Math.max(d-b,0);e<this.minRectSize||f<this.minRectSize?
(this.extentRectangle.className=this.displayClass+this.minRectDisplayClass,e=c+e/2-this.minRectSize/2,this.extentRectangle.style.top=Math.round(b+f/2-this.minRectSize/2)+"px",this.extentRectangle.style.left=Math.round(e)+"px",this.extentRectangle.style.height=this.minRectSize+"px",this.extentRectangle.style.width=this.minRectSize+"px"):(this.extentRectangle.className=this.displayClass+"ExtentRectangle",this.extentRectangle.style.top=Math.round(b)+"px",this.extentRectangle.style.left=Math.round(c)+
"px",this.extentRectangle.style.height=Math.round(f)+"px",this.extentRectangle.style.width=Math.round(e)+"px");this.rectPxBounds=new OpenLayers.Bounds(Math.round(c),Math.round(d),Math.round(a),Math.round(b))},getRectBoundsFromMapBounds:function(a){var b=this.getOverviewPxFromLonLat({lon:a.left,lat:a.bottom});a=this.getOverviewPxFromLonLat({lon:a.right,lat:a.top});var c=null;b&&a&&(c=new OpenLayers.Bounds(b.x,b.y,a.x,a.y));return c},getMapBoundsFromRectBounds:function(a){var b=this.getLonLatFromOverviewPx({x:a.left,
y:a.bottom});a=this.getLonLatFromOverviewPx({x:a.right,y:a.top});return new OpenLayers.Bounds(b.lon,b.lat,a.lon,a.lat)},getLonLatFromOverviewPx:function(a){var b=this.ovmap.size,c=this.ovmap.getResolution(),d=this.ovmap.getExtent().getCenterLonLat();return{lon:d.lon+(a.x-b.w/2)*c,lat:d.lat-(a.y-b.h/2)*c}},getOverviewPxFromLonLat:function(a){var b=this.ovmap.getResolution(),c=this.ovmap.getExtent();if(c)return{x:Math.round(1/b*(a.lon-c.left)),y:Math.round(1/b*(c.top-a.lat))}},CLASS_NAME:"OpenLayers.Control.OverviewMap"});OpenLayers.Layer=OpenLayers.Class({id:null,name:null,div:null,opacity:1,alwaysInRange:null,RESOLUTION_PROPERTIES:"scales resolutions maxScale minScale maxResolution minResolution numZoomLevels maxZoomLevel".split(" "),events:null,map:null,isBaseLayer:!1,alpha:!1,displayInLayerSwitcher:!0,visibility:!0,attribution:null,inRange:!1,imageSize:null,options:null,eventListeners:null,gutter:0,projection:null,units:null,scales:null,resolutions:null,maxExtent:null,minExtent:null,maxResolution:null,minResolution:null,
numZoomLevels:null,minScale:null,maxScale:null,displayOutsideMaxExtent:!1,wrapDateLine:!1,metadata:null,initialize:function(a,b){this.metadata={};b=OpenLayers.Util.extend({},b);null!=this.alwaysInRange&&(b.alwaysInRange=this.alwaysInRange);this.addOptions(b);this.name=a;if(null==this.id&&(this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_"),this.div=OpenLayers.Util.createDiv(this.id),this.div.style.width="100%",this.div.style.height="100%",this.div.dir="ltr",this.events=new OpenLayers.Events(this,
this.div),this.eventListeners instanceof Object))this.events.on(this.eventListeners)},destroy:function(a){null==a&&(a=!0);null!=this.map&&this.map.removeLayer(this,a);this.options=this.div=this.name=this.map=this.projection=null;this.events&&(this.eventListeners&&this.events.un(this.eventListeners),this.events.destroy());this.events=this.eventListeners=null},clone:function(a){null==a&&(a=new OpenLayers.Layer(this.name,this.getOptions()));OpenLayers.Util.applyDefaults(a,this);a.map=null;return a},
getOptions:function(){var a={},b;for(b in this.options)a[b]=this[b];return a},setName:function(a){a!=this.name&&(this.name=a,null!=this.map&&this.map.events.triggerEvent("changelayer",{layer:this,property:"name"}))},addOptions:function(a,b){null==this.options&&(this.options={});a&&("string"==typeof a.projection&&(a.projection=new OpenLayers.Projection(a.projection)),a.projection&&OpenLayers.Util.applyDefaults(a,OpenLayers.Projection.defaults[a.projection.getCode()]),!a.maxExtent||a.maxExtent instanceof
OpenLayers.Bounds||(a.maxExtent=new OpenLayers.Bounds(a.maxExtent)),!a.minExtent||a.minExtent instanceof OpenLayers.Bounds||(a.minExtent=new OpenLayers.Bounds(a.minExtent)));OpenLayers.Util.extend(this.options,a);OpenLayers.Util.extend(this,a);this.projection&&this.projection.getUnits()&&(this.units=this.projection.getUnits());if(this.map){var c=this.map.getResolution(),d=this.RESOLUTION_PROPERTIES.concat(["projection","units","minExtent","maxExtent"]),e;for(e in a)if(a.hasOwnProperty(e)&&0<=OpenLayers.Util.indexOf(d,
e)){this.initResolutions();b&&this.map.baseLayer===this&&(this.map.setCenter(this.map.getCenter(),this.map.getZoomForResolution(c),!1,!0),this.map.events.triggerEvent("changebaselayer",{layer:this}));break}}},onMapResize:function(){},redraw:function(){var a=!1;if(this.map){this.inRange=this.calculateInRange();var b=this.getExtent();b&&(this.inRange&&this.visibility)&&(this.moveTo(b,!0,!1),this.events.triggerEvent("moveend",{zoomChanged:!0}),a=!0)}return a},moveTo:function(a,b,c){a=this.visibility;
this.isBaseLayer||(a=a&&this.inRange);this.display(a)},moveByPx:function(a,b){},setMap:function(a){null==this.map&&(this.map=a,this.maxExtent=this.maxExtent||this.map.maxExtent,this.minExtent=this.minExtent||this.map.minExtent,this.projection=this.projection||this.map.projection,"string"==typeof this.projection&&(this.projection=new OpenLayers.Projection(this.projection)),this.units=this.projection.getUnits()||this.units||this.map.units,this.initResolutions(),this.isBaseLayer||(this.inRange=this.calculateInRange(),
this.div.style.display=this.visibility&&this.inRange?"":"none"),this.setTileSize())},afterAdd:function(){},removeMap:function(a){},getImageSize:function(a){return this.imageSize||this.tileSize},setTileSize:function(a){this.tileSize=a=a?a:this.tileSize?this.tileSize:this.map.getTileSize();this.gutter&&(this.imageSize=new OpenLayers.Size(a.w+2*this.gutter,a.h+2*this.gutter))},getVisibility:function(){return this.visibility},setVisibility:function(a){a!=this.visibility&&(this.visibility=a,this.display(a),
this.redraw(),null!=this.map&&this.map.events.triggerEvent("changelayer",{layer:this,property:"visibility"}),this.events.triggerEvent("visibilitychanged"))},display:function(a){a!=("none"!=this.div.style.display)&&(this.div.style.display=a&&this.calculateInRange()?"block":"none")},calculateInRange:function(){var a=!1;this.alwaysInRange?a=!0:this.map&&(a=this.map.getResolution(),a=a>=this.minResolution&&a<=this.maxResolution);return a},setIsBaseLayer:function(a){a!=this.isBaseLayer&&(this.isBaseLayer=
a,null!=this.map&&this.map.events.triggerEvent("changebaselayer",{layer:this}))},initResolutions:function(){var a,b,c,d={},e=!0;a=0;for(b=this.RESOLUTION_PROPERTIES.length;a<b;a++)c=this.RESOLUTION_PROPERTIES[a],d[c]=this.options[c],e&&this.options[c]&&(e=!1);null==this.options.alwaysInRange&&(this.alwaysInRange=e);null==d.resolutions&&(d.resolutions=this.resolutionsFromScales(d.scales));null==d.resolutions&&(d.resolutions=this.calculateResolutions(d));if(null==d.resolutions){a=0;for(b=this.RESOLUTION_PROPERTIES.length;a<
b;a++)c=this.RESOLUTION_PROPERTIES[a],d[c]=null!=this.options[c]?this.options[c]:this.map[c];null==d.resolutions&&(d.resolutions=this.resolutionsFromScales(d.scales));null==d.resolutions&&(d.resolutions=this.calculateResolutions(d))}var f;this.options.maxResolution&&"auto"!==this.options.maxResolution&&(f=this.options.maxResolution);this.options.minScale&&(f=OpenLayers.Util.getResolutionFromScale(this.options.minScale,this.units));var g;this.options.minResolution&&"auto"!==this.options.minResolution&&
(g=this.options.minResolution);this.options.maxScale&&(g=OpenLayers.Util.getResolutionFromScale(this.options.maxScale,this.units));d.resolutions&&(d.resolutions.sort(function(a,b){return b-a}),f||(f=d.resolutions[0]),g||(g=d.resolutions[d.resolutions.length-1]));if(this.resolutions=d.resolutions){b=this.resolutions.length;this.scales=Array(b);for(a=0;a<b;a++)this.scales[a]=OpenLayers.Util.getScaleFromResolution(this.resolutions[a],this.units);this.numZoomLevels=b}if(this.minResolution=g)this.maxScale=
OpenLayers.Util.getScaleFromResolution(g,this.units);if(this.maxResolution=f)this.minScale=OpenLayers.Util.getScaleFromResolution(f,this.units)},resolutionsFromScales:function(a){if(null!=a){var b,c,d;d=a.length;b=Array(d);for(c=0;c<d;c++)b[c]=OpenLayers.Util.getResolutionFromScale(a[c],this.units);return b}},calculateResolutions:function(a){var b,c,d=a.maxResolution;null!=a.minScale?d=OpenLayers.Util.getResolutionFromScale(a.minScale,this.units):"auto"==d&&null!=this.maxExtent&&(b=this.map.getSize(),
c=this.maxExtent.getWidth()/b.w,b=this.maxExtent.getHeight()/b.h,d=Math.max(c,b));c=a.minResolution;null!=a.maxScale?c=OpenLayers.Util.getResolutionFromScale(a.maxScale,this.units):"auto"==a.minResolution&&null!=this.minExtent&&(b=this.map.getSize(),c=this.minExtent.getWidth()/b.w,b=this.minExtent.getHeight()/b.h,c=Math.max(c,b));"number"!==typeof d&&("number"!==typeof c&&null!=this.maxExtent)&&(d=this.map.getTileSize(),d=Math.max(this.maxExtent.getWidth()/d.w,this.maxExtent.getHeight()/d.h));b=a.maxZoomLevel;
a=a.numZoomLevels;"number"===typeof c&&"number"===typeof d&&void 0===a?a=Math.floor(Math.log(d/c)/Math.log(2))+1:void 0===a&&null!=b&&(a=b+1);if(!("number"!==typeof a||0>=a||"number"!==typeof d&&"number"!==typeof c)){b=Array(a);var e=2;"number"==typeof c&&"number"==typeof d&&(e=Math.pow(d/c,1/(a-1)));var f;if("number"===typeof d)for(f=0;f<a;f++)b[f]=d/Math.pow(e,f);else for(f=0;f<a;f++)b[a-1-f]=c*Math.pow(e,f);return b}},getResolution:function(){var a=this.map.getZoom();return this.getResolutionForZoom(a)},
getExtent:function(){return this.map.calculateBounds()},getZoomForExtent:function(a,b){var c=this.map.getSize(),c=Math.max(a.getWidth()/c.w,a.getHeight()/c.h);return this.getZoomForResolution(c,b)},getDataExtent:function(){},getResolutionForZoom:function(a){a=Math.max(0,Math.min(a,this.resolutions.length-1));if(this.map.fractionalZoom){var b=Math.floor(a),c=Math.ceil(a);a=this.resolutions[b]-(a-b)*(this.resolutions[b]-this.resolutions[c])}else a=this.resolutions[Math.round(a)];return a},getZoomForResolution:function(a,
b){var c,d;if(this.map.fractionalZoom){var e=0,f=this.resolutions[e],g=this.resolutions[this.resolutions.length-1],h;c=0;for(d=this.resolutions.length;c<d;++c)if(h=this.resolutions[c],h>=a&&(f=h,e=c),h<=a){g=h;break}c=f-g;c=0<c?e+(f-a)/c:e}else{f=Number.POSITIVE_INFINITY;c=0;for(d=this.resolutions.length;c<d;c++)if(b){e=Math.abs(this.resolutions[c]-a);if(e>f)break;f=e}else if(this.resolutions[c]<a)break;c=Math.max(0,c-1)}return c},getLonLatFromViewPortPx:function(a){var b=null,c=this.map;if(null!=
a&&c.minPx){var b=c.getResolution(),d=c.getMaxExtent({restricted:!0}),b=new OpenLayers.LonLat((a.x-c.minPx.x)*b+d.left,(c.minPx.y-a.y)*b+d.top);this.wrapDateLine&&(b=b.wrapDateLine(this.maxExtent))}return b},getViewPortPxFromLonLat:function(a,b){var c=null;null!=a&&(b=b||this.map.getResolution(),c=this.map.calculateBounds(null,b),c=new OpenLayers.Pixel(1/b*(a.lon-c.left),1/b*(c.top-a.lat)));return c},setOpacity:function(a){if(a!=this.opacity){this.opacity=a;for(var b=this.div.childNodes,c=0,d=b.length;c<
d;++c){var e=b[c].firstChild||b[c],f=b[c].lastChild;f&&"iframe"===f.nodeName.toLowerCase()&&(e=f.parentNode);OpenLayers.Util.modifyDOMElement(e,null,null,null,null,null,null,a)}null!=this.map&&this.map.events.triggerEvent("changelayer",{layer:this,property:"opacity"})}},getZIndex:function(){return this.div.style.zIndex},setZIndex:function(a){this.div.style.zIndex=a},adjustBounds:function(a){if(this.gutter){var b=this.gutter*this.map.getResolution();a=new OpenLayers.Bounds(a.left-b,a.bottom-b,a.right+
b,a.top+b)}this.wrapDateLine&&(b={rightTolerance:this.getResolution(),leftTolerance:this.getResolution()},a=a.wrapDateLine(this.maxExtent,b));return a},CLASS_NAME:"OpenLayers.Layer"});OpenLayers.Layer.SphericalMercator={getExtent:function(){var a=null;return a=this.sphericalMercator?this.map.calculateBounds():OpenLayers.Layer.FixedZoomLevels.prototype.getExtent.apply(this)},getLonLatFromViewPortPx:function(a){return OpenLayers.Layer.prototype.getLonLatFromViewPortPx.apply(this,arguments)},getViewPortPxFromLonLat:function(a){return OpenLayers.Layer.prototype.getViewPortPxFromLonLat.apply(this,arguments)},initMercatorParameters:function(){this.RESOLUTIONS=[];for(var a=0;a<=this.MAX_ZOOM_LEVEL;++a)this.RESOLUTIONS[a]=
156543.03390625/Math.pow(2,a);this.units="m";this.projection=this.projection||"EPSG:900913"},forwardMercator:function(){var a=new OpenLayers.Projection("EPSG:4326"),b=new OpenLayers.Projection("EPSG:900913");return function(c,d){var e=OpenLayers.Projection.transform({x:c,y:d},a,b);return new OpenLayers.LonLat(e.x,e.y)}}(),inverseMercator:function(){var a=new OpenLayers.Projection("EPSG:4326"),b=new OpenLayers.Projection("EPSG:900913");return function(c,d){var e=OpenLayers.Projection.transform({x:c,
y:d},b,a);return new OpenLayers.LonLat(e.x,e.y)}}()};OpenLayers.Layer.EventPane=OpenLayers.Class(OpenLayers.Layer,{smoothDragPan:!0,isBaseLayer:!0,isFixed:!0,pane:null,mapObject:null,initialize:function(a,b){OpenLayers.Layer.prototype.initialize.apply(this,arguments);null==this.pane&&(this.pane=OpenLayers.Util.createDiv(this.div.id+"_EventPane"))},destroy:function(){this.pane=this.mapObject=null;OpenLayers.Layer.prototype.destroy.apply(this,arguments)},setMap:function(a){OpenLayers.Layer.prototype.setMap.apply(this,arguments);this.pane.style.zIndex=
parseInt(this.div.style.zIndex)+1;this.pane.style.display=this.div.style.display;this.pane.style.width="100%";this.pane.style.height="100%";"msie"==OpenLayers.BROWSER_NAME&&(this.pane.style.background="url("+OpenLayers.Util.getImageLocation("blank.gif")+")");this.isFixed?this.map.viewPortDiv.appendChild(this.pane):this.map.layerContainerDiv.appendChild(this.pane);this.loadMapObject();null==this.mapObject&&this.loadWarningMessage()},removeMap:function(a){this.pane&&this.pane.parentNode&&this.pane.parentNode.removeChild(this.pane);
OpenLayers.Layer.prototype.removeMap.apply(this,arguments)},loadWarningMessage:function(){this.div.style.backgroundColor="darkblue";var a=this.map.getSize(),b=Math.min(a.w,300),c=Math.min(a.h,200),b=new OpenLayers.Size(b,c),a=(new OpenLayers.Pixel(a.w/2,a.h/2)).add(-b.w/2,-b.h/2),a=OpenLayers.Util.createDiv(this.name+"_warning",a,b,null,null,null,"auto");a.style.padding="7px";a.style.backgroundColor="yellow";a.innerHTML=this.getWarningHTML();this.div.appendChild(a)},getWarningHTML:function(){return""},
display:function(a){OpenLayers.Layer.prototype.display.apply(this,arguments);this.pane.style.display=this.div.style.display},setZIndex:function(a){OpenLayers.Layer.prototype.setZIndex.apply(this,arguments);this.pane.style.zIndex=parseInt(this.div.style.zIndex)+1},moveByPx:function(a,b){OpenLayers.Layer.prototype.moveByPx.apply(this,arguments);this.dragPanMapObject?this.dragPanMapObject(a,-b):this.moveTo(this.map.getCachedCenter())},moveTo:function(a,b,c){OpenLayers.Layer.prototype.moveTo.apply(this,
arguments);if(null!=this.mapObject){var d=this.map.getCenter(),e=this.map.getZoom();if(null!=d){var f=this.getMapObjectCenter(),f=this.getOLLonLatFromMapObjectLonLat(f),g=this.getMapObjectZoom(),g=this.getOLZoomFromMapObjectZoom(g);d.equals(f)&&e==g||(!b&&f&&this.dragPanMapObject&&this.smoothDragPan?(e=this.map.getViewPortPxFromLonLat(f),d=this.map.getViewPortPxFromLonLat(d),this.dragPanMapObject(d.x-e.x,e.y-d.y)):(d=this.getMapObjectLonLatFromOLLonLat(d),e=this.getMapObjectZoomFromOLZoom(e),this.setMapObjectCenter(d,
e,c)))}}},getLonLatFromViewPortPx:function(a){var b=null;null!=this.mapObject&&null!=this.getMapObjectCenter()&&(a=this.getMapObjectPixelFromOLPixel(a),a=this.getMapObjectLonLatFromMapObjectPixel(a),b=this.getOLLonLatFromMapObjectLonLat(a));return b},getViewPortPxFromLonLat:function(a){var b=null;null!=this.mapObject&&null!=this.getMapObjectCenter()&&(a=this.getMapObjectLonLatFromOLLonLat(a),a=this.getMapObjectPixelFromMapObjectLonLat(a),b=this.getOLPixelFromMapObjectPixel(a));return b},getOLLonLatFromMapObjectLonLat:function(a){var b=
null;null!=a&&(b=this.getLongitudeFromMapObjectLonLat(a),a=this.getLatitudeFromMapObjectLonLat(a),b=new OpenLayers.LonLat(b,a));return b},getMapObjectLonLatFromOLLonLat:function(a){var b=null;null!=a&&(b=this.getMapObjectLonLatFromLonLat(a.lon,a.lat));return b},getOLPixelFromMapObjectPixel:function(a){var b=null;null!=a&&(b=this.getXFromMapObjectPixel(a),a=this.getYFromMapObjectPixel(a),b=new OpenLayers.Pixel(b,a));return b},getMapObjectPixelFromOLPixel:function(a){var b=null;null!=a&&(b=this.getMapObjectPixelFromXY(a.x,
a.y));return b},CLASS_NAME:"OpenLayers.Layer.EventPane"});OpenLayers.Layer.FixedZoomLevels=OpenLayers.Class({initialize:function(){},initResolutions:function(){for(var a=["minZoomLevel","maxZoomLevel","numZoomLevels"],b=0,c=a.length;b<c;b++){var d=a[b];this[d]=null!=this.options[d]?this.options[d]:this.map[d]}if(null==this.minZoomLevel||this.minZoomLevel<this.MIN_ZOOM_LEVEL)this.minZoomLevel=this.MIN_ZOOM_LEVEL;a=this.MAX_ZOOM_LEVEL-this.minZoomLevel+1;b=null==this.options.numZoomLevels&&null!=this.options.maxZoomLevel||null==this.numZoomLevels&&null!=this.maxZoomLevel?
this.maxZoomLevel-this.minZoomLevel+1:this.numZoomLevels;this.numZoomLevels=null!=b?Math.min(b,a):a;this.maxZoomLevel=this.minZoomLevel+this.numZoomLevels-1;if(null!=this.RESOLUTIONS){a=0;this.resolutions=[];for(b=this.minZoomLevel;b<=this.maxZoomLevel;b++)this.resolutions[a++]=this.RESOLUTIONS[b];this.maxResolution=this.resolutions[0];this.minResolution=this.resolutions[this.resolutions.length-1]}},getResolution:function(){if(null!=this.resolutions)return OpenLayers.Layer.prototype.getResolution.apply(this,
arguments);var a=null,b=this.map.getSize(),c=this.getExtent();null!=b&&null!=c&&(a=Math.max(c.getWidth()/b.w,c.getHeight()/b.h));return a},getExtent:function(){var a=this.map.getSize(),b=this.getLonLatFromViewPortPx({x:0,y:0}),a=this.getLonLatFromViewPortPx({x:a.w,y:a.h});return null!=b&&null!=a?new OpenLayers.Bounds(b.lon,a.lat,a.lon,b.lat):null},getZoomForResolution:function(a){if(null!=this.resolutions)return OpenLayers.Layer.prototype.getZoomForResolution.apply(this,arguments);var b=OpenLayers.Layer.prototype.getExtent.apply(this,
[]);return this.getZoomForExtent(b)},getOLZoomFromMapObjectZoom:function(a){var b=null;null!=a&&(b=a-this.minZoomLevel,this.map.baseLayer!==this&&(b=this.map.baseLayer.getZoomForResolution(this.getResolutionForZoom(b))));return b},getMapObjectZoomFromOLZoom:function(a){var b=null;null!=a&&(b=a+this.minZoomLevel,this.map.baseLayer!==this&&(b=this.getZoomForResolution(this.map.baseLayer.getResolutionForZoom(b))));return b},CLASS_NAME:"OpenLayers.Layer.FixedZoomLevels"});OpenLayers.Layer.Google=OpenLayers.Class(OpenLayers.Layer.EventPane,OpenLayers.Layer.FixedZoomLevels,{MIN_ZOOM_LEVEL:0,MAX_ZOOM_LEVEL:21,RESOLUTIONS:[1.40625,0.703125,0.3515625,0.17578125,0.087890625,0.0439453125,0.02197265625,0.010986328125,0.0054931640625,0.00274658203125,0.001373291015625,6.866455078125E-4,3.4332275390625E-4,1.71661376953125E-4,8.58306884765625E-5,4.291534423828125E-5,2.145767211914062E-5,1.072883605957031E-5,5.36441802978515E-6,2.68220901489257E-6,1.341104507446289E-6,6.705522537231445E-7],
type:null,wrapDateLine:!0,sphericalMercator:!1,version:null,initialize:function(a,b){b=b||{};b.version||(b.version="function"===typeof GMap2?"2":"3");var c=OpenLayers.Layer.Google["v"+b.version.replace(/\./g,"_")];if(c)OpenLayers.Util.applyDefaults(b,c);else throw"Unsupported Google Maps API version: "+b.version;OpenLayers.Util.applyDefaults(b,c.DEFAULTS);b.maxExtent&&(b.maxExtent=b.maxExtent.clone());OpenLayers.Layer.EventPane.prototype.initialize.apply(this,[a,b]);OpenLayers.Layer.FixedZoomLevels.prototype.initialize.apply(this,
[a,b]);this.sphericalMercator&&(OpenLayers.Util.extend(this,OpenLayers.Layer.SphericalMercator),this.initMercatorParameters())},clone:function(){return new OpenLayers.Layer.Google(this.name,this.getOptions())},setVisibility:function(a){var b=null==this.opacity?1:this.opacity;OpenLayers.Layer.EventPane.prototype.setVisibility.apply(this,arguments);this.setOpacity(b)},display:function(a){this._dragging||this.setGMapVisibility(a);OpenLayers.Layer.EventPane.prototype.display.apply(this,arguments)},moveTo:function(a,
b,c){this._dragging=c;OpenLayers.Layer.EventPane.prototype.moveTo.apply(this,arguments);delete this._dragging},setOpacity:function(a){a!==this.opacity&&(null!=this.map&&this.map.events.triggerEvent("changelayer",{layer:this,property:"opacity"}),this.opacity=a);if(this.getVisibility()){var b=this.getMapContainer();OpenLayers.Util.modifyDOMElement(b,null,null,null,null,null,null,a)}},destroy:function(){if(this.map){this.setGMapVisibility(!1);var a=OpenLayers.Layer.Google.cache[this.map.id];a&&1>=a.count&&
this.removeGMapElements()}OpenLayers.Layer.EventPane.prototype.destroy.apply(this,arguments)},removeGMapElements:function(){var a=OpenLayers.Layer.Google.cache[this.map.id];if(a){var b=this.mapObject&&this.getMapContainer();b&&b.parentNode&&b.parentNode.removeChild(b);(b=a.termsOfUse)&&b.parentNode&&b.parentNode.removeChild(b);(a=a.poweredBy)&&a.parentNode&&a.parentNode.removeChild(a);this.mapObject&&(window.google&&google.maps&&google.maps.event&&google.maps.event.clearListeners)&&google.maps.event.clearListeners(this.mapObject,
"tilesloaded")}},removeMap:function(a){this.visibility&&this.mapObject&&this.setGMapVisibility(!1);var b=OpenLayers.Layer.Google.cache[a.id];b&&(1>=b.count?(this.removeGMapElements(),delete OpenLayers.Layer.Google.cache[a.id]):--b.count);delete this.termsOfUse;delete this.poweredBy;delete this.mapObject;delete this.dragObject;OpenLayers.Layer.EventPane.prototype.removeMap.apply(this,arguments)},getOLBoundsFromMapObjectBounds:function(a){var b=null;null!=a&&(b=a.getSouthWest(),a=a.getNorthEast(),this.sphericalMercator?
(b=this.forwardMercator(b.lng(),b.lat()),a=this.forwardMercator(a.lng(),a.lat())):(b=new OpenLayers.LonLat(b.lng(),b.lat()),a=new OpenLayers.LonLat(a.lng(),a.lat())),b=new OpenLayers.Bounds(b.lon,b.lat,a.lon,a.lat));return b},getWarningHTML:function(){return OpenLayers.i18n("googleWarning")},getMapObjectCenter:function(){return this.mapObject.getCenter()},getMapObjectZoom:function(){return this.mapObject.getZoom()},getLongitudeFromMapObjectLonLat:function(a){return this.sphericalMercator?this.forwardMercator(a.lng(),
a.lat()).lon:a.lng()},getLatitudeFromMapObjectLonLat:function(a){return this.sphericalMercator?this.forwardMercator(a.lng(),a.lat()).lat:a.lat()},getXFromMapObjectPixel:function(a){return a.x},getYFromMapObjectPixel:function(a){return a.y},CLASS_NAME:"OpenLayers.Layer.Google"});OpenLayers.Layer.Google.cache={};
OpenLayers.Layer.Google.v2={termsOfUse:null,poweredBy:null,dragObject:null,loadMapObject:function(){this.type||(this.type=G_NORMAL_MAP);var a,b,c,d=OpenLayers.Layer.Google.cache[this.map.id];if(d)a=d.mapObject,b=d.termsOfUse,c=d.poweredBy,++d.count;else{var d=this.map.viewPortDiv,e=document.createElement("div");e.id=this.map.id+"_GMap2Container";e.style.position="absolute";e.style.width="100%";e.style.height="100%";d.appendChild(e);try{a=new GMap2(e),b=e.lastChild,d.appendChild(b),b.style.zIndex=
"1100",b.style.right="",b.style.bottom="",b.className="olLayerGoogleCopyright",c=e.lastChild,d.appendChild(c),c.style.zIndex="1100",c.style.right="",c.style.bottom="",c.className="olLayerGooglePoweredBy gmnoprint"}catch(f){throw f;}OpenLayers.Layer.Google.cache[this.map.id]={mapObject:a,termsOfUse:b,poweredBy:c,count:1}}this.mapObject=a;this.termsOfUse=b;this.poweredBy=c;-1===OpenLayers.Util.indexOf(this.mapObject.getMapTypes(),this.type)&&this.mapObject.addMapType(this.type);"function"==typeof a.getDragObject?
this.dragObject=a.getDragObject():this.dragPanMapObject=null;!1===this.isBaseLayer&&this.setGMapVisibility("none"!==this.div.style.display)},onMapResize:function(){if(this.visibility&&this.mapObject.isLoaded())this.mapObject.checkResize();else{if(!this._resized)var a=this,b=GEvent.addListener(this.mapObject,"load",function(){GEvent.removeListener(b);delete a._resized;a.mapObject.checkResize();a.moveTo(a.map.getCenter(),a.map.getZoom())});this._resized=!0}},setGMapVisibility:function(a){var b=OpenLayers.Layer.Google.cache[this.map.id];
if(b){var c=this.mapObject.getContainer();!0===a?(this.mapObject.setMapType(this.type),c.style.display="",this.termsOfUse.style.left="",this.termsOfUse.style.display="",this.poweredBy.style.display="",b.displayed=this.id):(b.displayed===this.id&&delete b.displayed,b.displayed||(c.style.display="none",this.termsOfUse.style.display="none",this.termsOfUse.style.left="-9999px",this.poweredBy.style.display="none"))}},getMapContainer:function(){return this.mapObject.getContainer()},getMapObjectBoundsFromOLBounds:function(a){var b=
null;null!=a&&(b=this.sphericalMercator?this.inverseMercator(a.bottom,a.left):new OpenLayers.LonLat(a.bottom,a.left),a=this.sphericalMercator?this.inverseMercator(a.top,a.right):new OpenLayers.LonLat(a.top,a.right),b=new GLatLngBounds(new GLatLng(b.lat,b.lon),new GLatLng(a.lat,a.lon)));return b},setMapObjectCenter:function(a,b){this.mapObject.setCenter(a,b)},dragPanMapObject:function(a,b){this.dragObject.moveBy(new GSize(-a,b))},getMapObjectLonLatFromMapObjectPixel:function(a){return this.mapObject.fromContainerPixelToLatLng(a)},
getMapObjectPixelFromMapObjectLonLat:function(a){return this.mapObject.fromLatLngToContainerPixel(a)},getMapObjectZoomFromMapObjectBounds:function(a){return this.mapObject.getBoundsZoomLevel(a)},getMapObjectLonLatFromLonLat:function(a,b){var c;this.sphericalMercator?(c=this.inverseMercator(a,b),c=new GLatLng(c.lat,c.lon)):c=new GLatLng(b,a);return c},getMapObjectPixelFromXY:function(a,b){return new GPoint(a,b)}};OpenLayers.Format.XML=OpenLayers.Class(OpenLayers.Format,{namespaces:null,namespaceAlias:null,defaultPrefix:null,readers:{},writers:{},xmldom:null,initialize:function(a){window.ActiveXObject&&(this.xmldom=new ActiveXObject("Microsoft.XMLDOM"));OpenLayers.Format.prototype.initialize.apply(this,[a]);this.namespaces=OpenLayers.Util.extend({},this.namespaces);this.namespaceAlias={};for(var b in this.namespaces)this.namespaceAlias[this.namespaces[b]]=b},destroy:function(){this.xmldom=null;OpenLayers.Format.prototype.destroy.apply(this,
arguments)},setNamespace:function(a,b){this.namespaces[a]=b;this.namespaceAlias[b]=a},read:function(a){var b=a.indexOf("<");0<b&&(a=a.substring(b));b=OpenLayers.Util.Try(OpenLayers.Function.bind(function(){var b;b=window.ActiveXObject&&!this.xmldom?new ActiveXObject("Microsoft.XMLDOM"):this.xmldom;b.loadXML(a);return b},this),function(){return(new DOMParser).parseFromString(a,"text/xml")},function(){var b=new XMLHttpRequest;b.open("GET","data:text/xml;charset=utf-8,"+encodeURIComponent(a),!1);b.overrideMimeType&&
b.overrideMimeType("text/xml");b.send(null);return b.responseXML});this.keepData&&(this.data=b);return b},write:function(a){if(this.xmldom)a=a.xml;else{var b=new XMLSerializer;if(1==a.nodeType){var c=document.implementation.createDocument("","",null);c.importNode&&(a=c.importNode(a,!0));c.appendChild(a);a=b.serializeToString(c)}else a=b.serializeToString(a)}return a},createElementNS:function(a,b){return this.xmldom?"string"==typeof a?this.xmldom.createNode(1,b,a):this.xmldom.createNode(1,b,""):document.createElementNS(a,
b)},createDocumentFragment:function(){return this.xmldom?this.xmldom.createDocumentFragment():document.createDocumentFragment()},createTextNode:function(a){"string"!==typeof a&&(a=String(a));return this.xmldom?this.xmldom.createTextNode(a):document.createTextNode(a)},getElementsByTagNameNS:function(a,b,c){var d=[];if(a.getElementsByTagNameNS)d=a.getElementsByTagNameNS(b,c);else{a=a.getElementsByTagName("*");for(var e,f,g=0,h=a.length;g<h;++g)if(e=a[g],f=e.prefix?e.prefix+":"+c:c,"*"==c||f==e.nodeName)"*"!=
b&&b!=e.namespaceURI||d.push(e)}return d},getAttributeNodeNS:function(a,b,c){var d=null;if(a.getAttributeNodeNS)d=a.getAttributeNodeNS(b,c);else{a=a.attributes;for(var e,f,g=0,h=a.length;g<h;++g)if(e=a[g],e.namespaceURI==b&&(f=e.prefix?e.prefix+":"+c:c,f==e.nodeName)){d=e;break}}return d},getAttributeNS:function(a,b,c){var d="";if(a.getAttributeNS)d=a.getAttributeNS(b,c)||"";else if(a=this.getAttributeNodeNS(a,b,c))d=a.nodeValue;return d},getChildValue:function(a,b){var c=b||"";if(a)for(var d=a.firstChild;d;d=
d.nextSibling)switch(d.nodeType){case 3:case 4:c+=d.nodeValue}return c},isSimpleContent:function(a){var b=!0;for(a=a.firstChild;a;a=a.nextSibling)if(1===a.nodeType){b=!1;break}return b},contentType:function(a){var b=!1,c=!1,d=OpenLayers.Format.XML.CONTENT_TYPE.EMPTY;for(a=a.firstChild;a;a=a.nextSibling){switch(a.nodeType){case 1:c=!0;break;case 8:break;default:b=!0}if(c&&b)break}if(c&&b)d=OpenLayers.Format.XML.CONTENT_TYPE.MIXED;else{if(c)return OpenLayers.Format.XML.CONTENT_TYPE.COMPLEX;if(b)return OpenLayers.Format.XML.CONTENT_TYPE.SIMPLE}return d},
hasAttributeNS:function(a,b,c){var d=!1;return d=a.hasAttributeNS?a.hasAttributeNS(b,c):!!this.getAttributeNodeNS(a,b,c)},setAttributeNS:function(a,b,c,d){if(a.setAttributeNS)a.setAttributeNS(b,c,d);else if(this.xmldom)b?(b=a.ownerDocument.createNode(2,c,b),b.nodeValue=d,a.setAttributeNode(b)):a.setAttribute(c,d);else throw"setAttributeNS not implemented";},createElementNSPlus:function(a,b){b=b||{};var c=b.uri||this.namespaces[b.prefix];c||(c=a.indexOf(":"),c=this.namespaces[a.substring(0,c)]);c||
(c=this.namespaces[this.defaultPrefix]);c=this.createElementNS(c,a);b.attributes&&this.setAttributes(c,b.attributes);var d=b.value;null!=d&&c.appendChild(this.createTextNode(d));return c},setAttributes:function(a,b){var c,d,e;for(e in b)null!=b[e]&&b[e].toString&&(c=b[e].toString(),d=this.namespaces[e.substring(0,e.indexOf(":"))]||null,this.setAttributeNS(a,d,e,c))},readNode:function(a,b){b||(b={});var c=this.readers[a.namespaceURI?this.namespaceAlias[a.namespaceURI]:this.defaultPrefix];if(c){var d=
a.localName||a.nodeName.split(":").pop();(c=c[d]||c["*"])&&c.apply(this,[a,b])}return b},readChildNodes:function(a,b){b||(b={});for(var c=a.childNodes,d,e=0,f=c.length;e<f;++e)d=c[e],1==d.nodeType&&this.readNode(d,b);return b},writeNode:function(a,b,c){var d,e=a.indexOf(":");0<e?(d=a.substring(0,e),a=a.substring(e+1)):d=c?this.namespaceAlias[c.namespaceURI]:this.defaultPrefix;b=this.writers[d][a].apply(this,[b]);c&&c.appendChild(b);return b},getChildEl:function(a,b,c){return a&&this.getThisOrNextEl(a.firstChild,
b,c)},getNextEl:function(a,b,c){return a&&this.getThisOrNextEl(a.nextSibling,b,c)},getThisOrNextEl:function(a,b,c){a:for(;a;a=a.nextSibling)switch(a.nodeType){case 1:if(!(b&&b!==(a.localName||a.nodeName.split(":").pop())||c&&c!==a.namespaceURI))break a;a=null;break a;case 3:if(/^\s*$/.test(a.nodeValue))break;case 4:case 6:case 12:case 10:case 11:a=null;break a}return a||null},lookupNamespaceURI:function(a,b){var c=null;if(a)if(a.lookupNamespaceURI)c=a.lookupNamespaceURI(b);else a:switch(a.nodeType){case 1:if(null!==
a.namespaceURI&&a.prefix===b){c=a.namespaceURI;break a}if(c=a.attributes.length)for(var d,e=0;e<c;++e)if(d=a.attributes[e],"xmlns"===d.prefix&&d.name==="xmlns:"+b){c=d.value||null;break a}else if("xmlns"===d.name&&null===b){c=d.value||null;break a}c=this.lookupNamespaceURI(a.parentNode,b);break a;case 2:c=this.lookupNamespaceURI(a.ownerElement,b);break a;case 9:c=this.lookupNamespaceURI(a.documentElement,b);break a;case 6:case 12:case 10:case 11:break a;default:c=this.lookupNamespaceURI(a.parentNode,
b)}return c},getXMLDoc:function(){OpenLayers.Format.XML.document||this.xmldom||(document.implementation&&document.implementation.createDocument?OpenLayers.Format.XML.document=document.implementation.createDocument("","",null):!this.xmldom&&window.ActiveXObject&&(this.xmldom=new ActiveXObject("Microsoft.XMLDOM")));return OpenLayers.Format.XML.document||this.xmldom},CLASS_NAME:"OpenLayers.Format.XML"});OpenLayers.Format.XML.CONTENT_TYPE={EMPTY:0,SIMPLE:1,COMPLEX:2,MIXED:3};
OpenLayers.Format.XML.lookupNamespaceURI=OpenLayers.Function.bind(OpenLayers.Format.XML.prototype.lookupNamespaceURI,OpenLayers.Format.XML.prototype);OpenLayers.Format.XML.document=null;OpenLayers.Format.WFST=function(a){a=OpenLayers.Util.applyDefaults(a,OpenLayers.Format.WFST.DEFAULTS);var b=OpenLayers.Format.WFST["v"+a.version.replace(/\./g,"_")];if(!b)throw"Unsupported WFST version: "+a.version;return new b(a)};OpenLayers.Format.WFST.DEFAULTS={version:"1.0.0"};OpenLayers.Feature=OpenLayers.Class({layer:null,id:null,lonlat:null,data:null,marker:null,popupClass:null,popup:null,initialize:function(a,b,c){this.layer=a;this.lonlat=b;this.data=null!=c?c:{};this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_")},destroy:function(){null!=this.layer&&null!=this.layer.map&&null!=this.popup&&this.layer.map.removePopup(this.popup);null!=this.layer&&null!=this.marker&&this.layer.removeMarker(this.marker);this.data=this.lonlat=this.id=this.layer=null;null!=this.marker&&
(this.destroyMarker(this.marker),this.marker=null);null!=this.popup&&(this.destroyPopup(this.popup),this.popup=null)},onScreen:function(){var a=!1;null!=this.layer&&null!=this.layer.map&&(a=this.layer.map.getExtent().containsLonLat(this.lonlat));return a},createMarker:function(){null!=this.lonlat&&(this.marker=new OpenLayers.Marker(this.lonlat,this.data.icon));return this.marker},destroyMarker:function(){this.marker.destroy()},createPopup:function(a){null!=this.lonlat&&(this.popup||(this.popup=new (this.popupClass?
this.popupClass:OpenLayers.Popup.Anchored)(this.id+"_popup",this.lonlat,this.data.popupSize,this.data.popupContentHTML,this.marker?this.marker.icon:null,a)),null!=this.data.overflow&&(this.popup.contentDiv.style.overflow=this.data.overflow),this.popup.feature=this);return this.popup},destroyPopup:function(){this.popup&&(this.popup.feature=null,this.popup.destroy(),this.popup=null)},CLASS_NAME:"OpenLayers.Feature"});OpenLayers.State={UNKNOWN:"Unknown",INSERT:"Insert",UPDATE:"Update",DELETE:"Delete"};
OpenLayers.Feature.Vector=OpenLayers.Class(OpenLayers.Feature,{fid:null,geometry:null,attributes:null,bounds:null,state:null,style:null,url:null,renderIntent:"default",modified:null,initialize:function(a,b,c){OpenLayers.Feature.prototype.initialize.apply(this,[null,null,b]);this.lonlat=null;this.geometry=a?a:null;this.state=null;this.attributes={};b&&(this.attributes=OpenLayers.Util.extend(this.attributes,b));this.style=c?c:null},destroy:function(){this.layer&&(this.layer.removeFeatures(this),this.layer=
null);this.modified=this.geometry=null;OpenLayers.Feature.prototype.destroy.apply(this,arguments)},clone:function(){return new OpenLayers.Feature.Vector(this.geometry?this.geometry.clone():null,this.attributes,this.style)},onScreen:function(a){var b=!1;this.layer&&this.layer.map&&(b=this.layer.map.getExtent(),a?(a=this.geometry.getBounds(),b=b.intersectsBounds(a)):b=b.toGeometry().intersects(this.geometry));return b},getVisibility:function(){return!(this.style&&"none"==this.style.display||!this.layer||
this.layer&&this.layer.styleMap&&"none"==this.layer.styleMap.createSymbolizer(this,this.renderIntent).display||this.layer&&!this.layer.getVisibility())},createMarker:function(){return null},destroyMarker:function(){},createPopup:function(){return null},atPoint:function(a,b,c){var d=!1;this.geometry&&(d=this.geometry.atPoint(a,b,c));return d},destroyPopup:function(){},move:function(a){if(this.layer&&this.geometry.move){a="OpenLayers.LonLat"==a.CLASS_NAME?this.layer.getViewPortPxFromLonLat(a):a;var b=
this.layer.getViewPortPxFromLonLat(this.geometry.getBounds().getCenterLonLat()),c=this.layer.map.getResolution();this.geometry.move(c*(a.x-b.x),c*(b.y-a.y));this.layer.drawFeature(this);return b}},toState:function(a){if(a==OpenLayers.State.UPDATE)switch(this.state){case OpenLayers.State.UNKNOWN:case OpenLayers.State.DELETE:this.state=a}else if(a==OpenLayers.State.INSERT)switch(this.state){case OpenLayers.State.UNKNOWN:break;default:this.state=a}else if(a==OpenLayers.State.DELETE)switch(this.state){case OpenLayers.State.UNKNOWN:case OpenLayers.State.UPDATE:this.state=
a}else a==OpenLayers.State.UNKNOWN&&(this.state=a)},CLASS_NAME:"OpenLayers.Feature.Vector"});
OpenLayers.Feature.Vector.style={"default":{fillColor:"#ee9900",fillOpacity:0.4,hoverFillColor:"white",hoverFillOpacity:0.8,strokeColor:"#ee9900",strokeOpacity:1,strokeWidth:1,strokeLinecap:"round",strokeDashstyle:"solid",hoverStrokeColor:"red",hoverStrokeOpacity:1,hoverStrokeWidth:0.2,pointRadius:6,hoverPointRadius:1,hoverPointUnit:"%",pointerEvents:"visiblePainted",cursor:"inherit",fontColor:"#000000",labelAlign:"cm",labelOutlineColor:"white",labelOutlineWidth:3},select:{fillColor:"blue",fillOpacity:0.4,
hoverFillColor:"white",hoverFillOpacity:0.8,strokeColor:"blue",strokeOpacity:1,strokeWidth:2,strokeLinecap:"round",strokeDashstyle:"solid",hoverStrokeColor:"red",hoverStrokeOpacity:1,hoverStrokeWidth:0.2,pointRadius:6,hoverPointRadius:1,hoverPointUnit:"%",pointerEvents:"visiblePainted",cursor:"pointer",fontColor:"#000000",labelAlign:"cm",labelOutlineColor:"white",labelOutlineWidth:3},temporary:{fillColor:"#66cccc",fillOpacity:0.2,hoverFillColor:"white",hoverFillOpacity:0.8,strokeColor:"#66cccc",strokeOpacity:1,
strokeLinecap:"round",strokeWidth:2,strokeDashstyle:"solid",hoverStrokeColor:"red",hoverStrokeOpacity:1,hoverStrokeWidth:0.2,pointRadius:6,hoverPointRadius:1,hoverPointUnit:"%",pointerEvents:"visiblePainted",cursor:"inherit",fontColor:"#000000",labelAlign:"cm",labelOutlineColor:"white",labelOutlineWidth:3},"delete":{display:"none"}};OpenLayers.Style=OpenLayers.Class({id:null,name:null,title:null,description:null,layerName:null,isDefault:!1,rules:null,context:null,defaultStyle:null,defaultsPerSymbolizer:!1,propertyStyles:null,initialize:function(a,b){OpenLayers.Util.extend(this,b);this.rules=[];b&&b.rules&&this.addRules(b.rules);this.setDefaultStyle(a||OpenLayers.Feature.Vector.style["default"]);this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_")},destroy:function(){for(var a=0,b=this.rules.length;a<b;a++)this.rules[a].destroy(),
this.rules[a]=null;this.defaultStyle=this.rules=null},createSymbolizer:function(a){for(var b=this.defaultsPerSymbolizer?{}:this.createLiterals(OpenLayers.Util.extend({},this.defaultStyle),a),c=this.rules,d,e=[],f=!1,g=0,h=c.length;g<h;g++)d=c[g],d.evaluate(a)&&(d instanceof OpenLayers.Rule&&d.elseFilter?e.push(d):(f=!0,this.applySymbolizer(d,b,a)));if(!1==f&&0<e.length)for(f=!0,g=0,h=e.length;g<h;g++)this.applySymbolizer(e[g],b,a);0<c.length&&!1==f&&(b.display="none");null!=b.label&&"string"!==typeof b.label&&
(b.label=String(b.label));return b},applySymbolizer:function(a,b,c){var d=c.geometry?this.getSymbolizerPrefix(c.geometry):OpenLayers.Style.SYMBOLIZER_PREFIXES[0];a=a.symbolizer[d]||a.symbolizer;!0===this.defaultsPerSymbolizer&&(d=this.defaultStyle,OpenLayers.Util.applyDefaults(a,{pointRadius:d.pointRadius}),!0!==a.stroke&&!0!==a.graphic||OpenLayers.Util.applyDefaults(a,{strokeWidth:d.strokeWidth,strokeColor:d.strokeColor,strokeOpacity:d.strokeOpacity,strokeDashstyle:d.strokeDashstyle,strokeLinecap:d.strokeLinecap}),
!0!==a.fill&&!0!==a.graphic||OpenLayers.Util.applyDefaults(a,{fillColor:d.fillColor,fillOpacity:d.fillOpacity}),!0===a.graphic&&OpenLayers.Util.applyDefaults(a,{pointRadius:this.defaultStyle.pointRadius,externalGraphic:this.defaultStyle.externalGraphic,graphicName:this.defaultStyle.graphicName,graphicOpacity:this.defaultStyle.graphicOpacity,graphicWidth:this.defaultStyle.graphicWidth,graphicHeight:this.defaultStyle.graphicHeight,graphicXOffset:this.defaultStyle.graphicXOffset,graphicYOffset:this.defaultStyle.graphicYOffset}));
return this.createLiterals(OpenLayers.Util.extend(b,a),c)},createLiterals:function(a,b){var c=OpenLayers.Util.extend({},b.attributes||b.data);OpenLayers.Util.extend(c,this.context);for(var d in this.propertyStyles)a[d]=OpenLayers.Style.createLiteral(a[d],c,b,d);return a},findPropertyStyles:function(){var a={};this.addPropertyStyles(a,this.defaultStyle);for(var b=this.rules,c,d,e=0,f=b.length;e<f;e++){c=b[e].symbolizer;for(var g in c)if(d=c[g],"object"==typeof d)this.addPropertyStyles(a,d);else{this.addPropertyStyles(a,
c);break}}return a},addPropertyStyles:function(a,b){var c,d;for(d in b)c=b[d],"string"==typeof c&&c.match(/\$\{\w+\}/)&&(a[d]=!0);return a},addRules:function(a){Array.prototype.push.apply(this.rules,a);this.propertyStyles=this.findPropertyStyles()},setDefaultStyle:function(a){this.defaultStyle=a;this.propertyStyles=this.findPropertyStyles()},getSymbolizerPrefix:function(a){for(var b=OpenLayers.Style.SYMBOLIZER_PREFIXES,c=0,d=b.length;c<d;c++)if(-1!=a.CLASS_NAME.indexOf(b[c]))return b[c]},clone:function(){var a=
OpenLayers.Util.extend({},this);if(this.rules){a.rules=[];for(var b=0,c=this.rules.length;b<c;++b)a.rules.push(this.rules[b].clone())}a.context=this.context&&OpenLayers.Util.extend({},this.context);b=OpenLayers.Util.extend({},this.defaultStyle);return new OpenLayers.Style(b,a)},CLASS_NAME:"OpenLayers.Style"});OpenLayers.Style.createLiteral=function(a,b,c,d){"string"==typeof a&&-1!=a.indexOf("${")&&(a=OpenLayers.String.format(a,b,[c,d]),a=isNaN(a)||!a?a:parseFloat(a));return a};
OpenLayers.Style.SYMBOLIZER_PREFIXES=["Point","Line","Polygon","Text","Raster"];OpenLayers.Filter=OpenLayers.Class({initialize:function(a){OpenLayers.Util.extend(this,a)},destroy:function(){},evaluate:function(a){return!0},clone:function(){return null},toString:function(){return OpenLayers.Format&&OpenLayers.Format.CQL?OpenLayers.Format.CQL.prototype.write(this):Object.prototype.toString.call(this)},CLASS_NAME:"OpenLayers.Filter"});OpenLayers.Filter.Spatial=OpenLayers.Class(OpenLayers.Filter,{type:null,property:null,value:null,distance:null,distanceUnits:null,evaluate:function(a){var b=!1;switch(this.type){case OpenLayers.Filter.Spatial.BBOX:case OpenLayers.Filter.Spatial.INTERSECTS:if(a.geometry){var c=this.value;"OpenLayers.Bounds"==this.value.CLASS_NAME&&(c=this.value.toGeometry());a.geometry.intersects(c)&&(b=!0)}break;default:throw Error("evaluate is not implemented for this filter type.");}return b},clone:function(){var a=
OpenLayers.Util.applyDefaults({value:this.value&&this.value.clone&&this.value.clone()},this);return new OpenLayers.Filter.Spatial(a)},CLASS_NAME:"OpenLayers.Filter.Spatial"});OpenLayers.Filter.Spatial.BBOX="BBOX";OpenLayers.Filter.Spatial.INTERSECTS="INTERSECTS";OpenLayers.Filter.Spatial.DWITHIN="DWITHIN";OpenLayers.Filter.Spatial.WITHIN="WITHIN";OpenLayers.Filter.Spatial.CONTAINS="CONTAINS";OpenLayers.Filter.FeatureId=OpenLayers.Class(OpenLayers.Filter,{fids:null,type:"FID",initialize:function(a){this.fids=[];OpenLayers.Filter.prototype.initialize.apply(this,[a])},evaluate:function(a){for(var b=0,c=this.fids.length;b<c;b++)if((a.fid||a.id)==this.fids[b])return!0;return!1},clone:function(){var a=new OpenLayers.Filter.FeatureId;OpenLayers.Util.extend(a,this);a.fids=this.fids.slice();return a},CLASS_NAME:"OpenLayers.Filter.FeatureId"});OpenLayers.Format.WFST.v1=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance",wfs:"http://www.opengis.net/wfs",gml:"http://www.opengis.net/gml",ogc:"http://www.opengis.net/ogc",ows:"http://www.opengis.net/ows"},defaultPrefix:"wfs",version:null,schemaLocations:null,srsName:null,extractAttributes:!0,xy:!0,stateName:null,initialize:function(a){this.stateName={};this.stateName[OpenLayers.State.INSERT]="wfs:Insert";this.stateName[OpenLayers.State.UPDATE]=
"wfs:Update";this.stateName[OpenLayers.State.DELETE]="wfs:Delete";OpenLayers.Format.XML.prototype.initialize.apply(this,[a])},getSrsName:function(a,b){var c=b&&b.srsName;c||(c=a&&a.layer?a.layer.projection.getCode():this.srsName);return c},read:function(a,b){b=b||{};OpenLayers.Util.applyDefaults(b,{output:"features"});"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));a&&9==a.nodeType&&(a=a.documentElement);var c={};a&&this.readNode(a,c,!0);c.features&&"features"===b.output&&
(c=c.features);return c},readers:{wfs:{FeatureCollection:function(a,b){b.features=[];this.readChildNodes(a,b)}}},write:function(a,b){var c=this.writeNode("wfs:Transaction",{features:a,options:b}),d=this.schemaLocationAttr();d&&this.setAttributeNS(c,this.namespaces.xsi,"xsi:schemaLocation",d);return OpenLayers.Format.XML.prototype.write.apply(this,[c])},writers:{wfs:{GetFeature:function(a){var b=this.createElementNSPlus("wfs:GetFeature",{attributes:{service:"WFS",version:this.version,handle:a&&a.handle,
outputFormat:a&&a.outputFormat,maxFeatures:a&&a.maxFeatures,"xsi:schemaLocation":this.schemaLocationAttr(a)}});if("string"==typeof this.featureType)this.writeNode("Query",a,b);else for(var c=0,d=this.featureType.length;c<d;c++)a.featureType=this.featureType[c],this.writeNode("Query",a,b);return b},Transaction:function(a){a=a||{};var b=a.options||{},c=this.createElementNSPlus("wfs:Transaction",{attributes:{service:"WFS",version:this.version,handle:b.handle}}),d,e=a.features;if(e){!0===b.multi&&OpenLayers.Util.extend(this.geometryTypes,
{"OpenLayers.Geometry.Point":"MultiPoint","OpenLayers.Geometry.LineString":!0===this.multiCurve?"MultiCurve":"MultiLineString","OpenLayers.Geometry.Polygon":!0===this.multiSurface?"MultiSurface":"MultiPolygon"});var f,g;a=0;for(d=e.length;a<d;++a)g=e[a],(f=this.stateName[g.state])&&this.writeNode(f,{feature:g,options:b},c);!0===b.multi&&this.setGeometryTypes()}if(b.nativeElements)for(a=0,d=b.nativeElements.length;a<d;++a)this.writeNode("wfs:Native",b.nativeElements[a],c);return c},Native:function(a){return this.createElementNSPlus("wfs:Native",
{attributes:{vendorId:a.vendorId,safeToIgnore:a.safeToIgnore},value:a.value})},Insert:function(a){var b=a.feature;a=a.options;a=this.createElementNSPlus("wfs:Insert",{attributes:{handle:a&&a.handle}});this.srsName=this.getSrsName(b);this.writeNode("feature:_typeName",b,a);return a},Update:function(a){var b=a.feature;a=a.options;a=this.createElementNSPlus("wfs:Update",{attributes:{handle:a&&a.handle,typeName:(this.featureNS?this.featurePrefix+":":"")+this.featureType}});this.featureNS&&a.setAttribute("xmlns:"+
this.featurePrefix,this.featureNS);var c=b.modified;null===this.geometryName||c&&void 0===c.geometry||(this.srsName=this.getSrsName(b),this.writeNode("Property",{name:this.geometryName,value:b.geometry},a));for(var d in b.attributes)void 0===b.attributes[d]||c&&c.attributes&&(!c.attributes||void 0===c.attributes[d])||this.writeNode("Property",{name:d,value:b.attributes[d]},a);this.writeNode("ogc:Filter",new OpenLayers.Filter.FeatureId({fids:[b.fid]}),a);return a},Property:function(a){var b=this.createElementNSPlus("wfs:Property");
this.writeNode("Name",a.name,b);null!==a.value&&this.writeNode("Value",a.value,b);return b},Name:function(a){return this.createElementNSPlus("wfs:Name",{value:a})},Value:function(a){var b;a instanceof OpenLayers.Geometry?(b=this.createElementNSPlus("wfs:Value"),a=this.writeNode("feature:_geometry",a).firstChild,b.appendChild(a)):b=this.createElementNSPlus("wfs:Value",{value:a});return b},Delete:function(a){var b=a.feature;a=a.options;a=this.createElementNSPlus("wfs:Delete",{attributes:{handle:a&&
a.handle,typeName:(this.featureNS?this.featurePrefix+":":"")+this.featureType}});this.featureNS&&a.setAttribute("xmlns:"+this.featurePrefix,this.featureNS);this.writeNode("ogc:Filter",new OpenLayers.Filter.FeatureId({fids:[b.fid]}),a);return a}}},schemaLocationAttr:function(a){a=OpenLayers.Util.extend({featurePrefix:this.featurePrefix,schema:this.schema},a);var b=OpenLayers.Util.extend({},this.schemaLocations);a.schema&&(b[a.featurePrefix]=a.schema);a=[];var c,d;for(d in b)(c=this.namespaces[d])&&
a.push(c+" "+b[d]);return a.join(" ")||void 0},setFilterProperty:function(a){if(a.filters)for(var b=0,c=a.filters.length;b<c;++b)OpenLayers.Format.WFST.v1.prototype.setFilterProperty.call(this,a.filters[b]);else a instanceof OpenLayers.Filter.Spatial&&!a.property&&(a.property=this.geometryName)},CLASS_NAME:"OpenLayers.Format.WFST.v1"});OpenLayers.Format.OGCExceptionReport=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{ogc:"http://www.opengis.net/ogc"},regExes:{trimSpace:/^\s*|\s*$/g,removeSpace:/\s*/g,splitSpace:/\s+/,trimComma:/\s*,\s*/g},defaultPrefix:"ogc",read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));var b={exceptionReport:null};a.documentElement&&(this.readChildNodes(a,b),null===b.exceptionReport&&(b=(new OpenLayers.Format.OWSCommon).read(a)));return b},readers:{ogc:{ServiceExceptionReport:function(a,
b){b.exceptionReport={exceptions:[]};this.readChildNodes(a,b.exceptionReport)},ServiceException:function(a,b){var c={code:a.getAttribute("code"),locator:a.getAttribute("locator"),text:this.getChildValue(a)};b.exceptions.push(c)}}},CLASS_NAME:"OpenLayers.Format.OGCExceptionReport"});OpenLayers.Format.XML.VersionedOGC=OpenLayers.Class(OpenLayers.Format.XML,{defaultVersion:null,version:null,profile:null,allowFallback:!1,name:null,stringifyOutput:!1,parser:null,initialize:function(a){OpenLayers.Format.XML.prototype.initialize.apply(this,[a]);a=this.CLASS_NAME;this.name=a.substring(a.lastIndexOf(".")+1)},getVersion:function(a,b){var c;a?(c=this.version,c||(c=a.getAttribute("version"),c||(c=this.defaultVersion))):c=b&&b.version||this.version||this.defaultVersion;return c},getParser:function(a){a=
a||this.defaultVersion;var b=this.profile?"_"+this.profile:"";if(!this.parser||this.parser.VERSION!=a){var c=OpenLayers.Format[this.name]["v"+a.replace(/\./g,"_")+b];if(!c&&(""!==b&&this.allowFallback&&(b="",c=OpenLayers.Format[this.name]["v"+a.replace(/\./g,"_")]),!c))throw"Can't find a "+this.name+" parser for version "+a+b;this.parser=new c(this.options)}return this.parser},write:function(a,b){var c=this.getVersion(null,b);this.parser=this.getParser(c);c=this.parser.write(a,b);return!1===this.stringifyOutput?
c:OpenLayers.Format.XML.prototype.write.apply(this,[c])},read:function(a,b){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));var c=this.getVersion(a.documentElement);this.parser=this.getParser(c);var d=this.parser.read(a,b),e=this.parser.errorProperty||null;null!==e&&void 0===d[e]&&(e=new OpenLayers.Format.OGCExceptionReport,d.error=e.read(a));d.version=c;return d},CLASS_NAME:"OpenLayers.Format.XML.VersionedOGC"});OpenLayers.Filter.Logical=OpenLayers.Class(OpenLayers.Filter,{filters:null,type:null,initialize:function(a){this.filters=[];OpenLayers.Filter.prototype.initialize.apply(this,[a])},destroy:function(){this.filters=null;OpenLayers.Filter.prototype.destroy.apply(this)},evaluate:function(a){var b,c;switch(this.type){case OpenLayers.Filter.Logical.AND:b=0;for(c=this.filters.length;b<c;b++)if(!1==this.filters[b].evaluate(a))return!1;return!0;case OpenLayers.Filter.Logical.OR:b=0;for(c=this.filters.length;b<
c;b++)if(!0==this.filters[b].evaluate(a))return!0;return!1;case OpenLayers.Filter.Logical.NOT:return!this.filters[0].evaluate(a)}},clone:function(){for(var a=[],b=0,c=this.filters.length;b<c;++b)a.push(this.filters[b].clone());return new OpenLayers.Filter.Logical({type:this.type,filters:a})},CLASS_NAME:"OpenLayers.Filter.Logical"});OpenLayers.Filter.Logical.AND="&&";OpenLayers.Filter.Logical.OR="||";OpenLayers.Filter.Logical.NOT="!";OpenLayers.Filter.Comparison=OpenLayers.Class(OpenLayers.Filter,{type:null,property:null,value:null,matchCase:!0,lowerBoundary:null,upperBoundary:null,initialize:function(a){OpenLayers.Filter.prototype.initialize.apply(this,[a]);this.type===OpenLayers.Filter.Comparison.LIKE&&void 0===a.matchCase&&(this.matchCase=null)},evaluate:function(a){a instanceof OpenLayers.Feature.Vector&&(a=a.attributes);var b=!1;a=a[this.property];switch(this.type){case OpenLayers.Filter.Comparison.EQUAL_TO:b=this.value;
b=this.matchCase||"string"!=typeof a||"string"!=typeof b?a==b:a.toUpperCase()==b.toUpperCase();break;case OpenLayers.Filter.Comparison.NOT_EQUAL_TO:b=this.value;b=this.matchCase||"string"!=typeof a||"string"!=typeof b?a!=b:a.toUpperCase()!=b.toUpperCase();break;case OpenLayers.Filter.Comparison.LESS_THAN:b=a<this.value;break;case OpenLayers.Filter.Comparison.GREATER_THAN:b=a>this.value;break;case OpenLayers.Filter.Comparison.LESS_THAN_OR_EQUAL_TO:b=a<=this.value;break;case OpenLayers.Filter.Comparison.GREATER_THAN_OR_EQUAL_TO:b=
a>=this.value;break;case OpenLayers.Filter.Comparison.BETWEEN:b=a>=this.lowerBoundary&&a<=this.upperBoundary;break;case OpenLayers.Filter.Comparison.LIKE:b=RegExp(this.value,"gi").test(a);break;case OpenLayers.Filter.Comparison.IS_NULL:b=null===a}return b},value2regex:function(a,b,c){if("."==a)throw Error("'.' is an unsupported wildCard character for OpenLayers.Filter.Comparison");a=a?a:"*";b=b?b:".";this.value=this.value.replace(RegExp("\\"+(c?c:"!")+"(.|$)","g"),"\\$1");this.value=this.value.replace(RegExp("\\"+
b,"g"),".");this.value=this.value.replace(RegExp("\\"+a,"g"),".*");this.value=this.value.replace(RegExp("\\\\.\\*","g"),"\\"+a);return this.value=this.value.replace(RegExp("\\\\\\.","g"),"\\"+b)},regex2value:function(){var a=this.value,a=a.replace(/!/g,"!!"),a=a.replace(/(\\)?\\\./g,function(a,c){return c?a:"!."}),a=a.replace(/(\\)?\\\*/g,function(a,c){return c?a:"!*"}),a=a.replace(/\\\\/g,"\\");return a=a.replace(/\.\*/g,"*")},clone:function(){return OpenLayers.Util.extend(new OpenLayers.Filter.Comparison,
this)},CLASS_NAME:"OpenLayers.Filter.Comparison"});OpenLayers.Filter.Comparison.EQUAL_TO="==";OpenLayers.Filter.Comparison.NOT_EQUAL_TO="!=";OpenLayers.Filter.Comparison.LESS_THAN="<";OpenLayers.Filter.Comparison.GREATER_THAN=">";OpenLayers.Filter.Comparison.LESS_THAN_OR_EQUAL_TO="<=";OpenLayers.Filter.Comparison.GREATER_THAN_OR_EQUAL_TO=">=";OpenLayers.Filter.Comparison.BETWEEN="..";OpenLayers.Filter.Comparison.LIKE="~";OpenLayers.Filter.Comparison.IS_NULL="NULL";OpenLayers.Format.Filter=OpenLayers.Class(OpenLayers.Format.XML.VersionedOGC,{defaultVersion:"1.0.0",CLASS_NAME:"OpenLayers.Format.Filter"});OpenLayers.Filter.Function=OpenLayers.Class(OpenLayers.Filter,{name:null,params:null,CLASS_NAME:"OpenLayers.Filter.Function"});OpenLayers.Date={dateRegEx:/^(?:(\d{4})(?:-(\d{2})(?:-(\d{2}))?)?)?(?:(?:T(\d{1,2}):(\d{2}):(\d{2}(?:\.\d+)?)(Z|(?:[+-]\d{1,2}(?::(\d{2}))?)))|Z)?$/,toISOString:function(){return"toISOString"in Date.prototype?function(a){return a.toISOString()}:function(a){return isNaN(a.getTime())?"Invalid Date":a.getUTCFullYear()+"-"+OpenLayers.Number.zeroPad(a.getUTCMonth()+1,2)+"-"+OpenLayers.Number.zeroPad(a.getUTCDate(),2)+"T"+OpenLayers.Number.zeroPad(a.getUTCHours(),2)+":"+OpenLayers.Number.zeroPad(a.getUTCMinutes(),
2)+":"+OpenLayers.Number.zeroPad(a.getUTCSeconds(),2)+"."+OpenLayers.Number.zeroPad(a.getUTCMilliseconds(),3)+"Z"}}(),parse:function(a){var b;if((a=a.match(this.dateRegEx))&&(a[1]||a[7])){b=parseInt(a[1],10)||0;var c=parseInt(a[2],10)-1||0,d=parseInt(a[3],10)||1;b=new Date(Date.UTC(b,c,d));if(c=a[7]){var d=parseInt(a[4],10),e=parseInt(a[5],10),f=parseFloat(a[6]),g=f|0,f=Math.round(1E3*(f-g));b.setUTCHours(d,e,g,f);"Z"!==c&&(c=parseInt(c,10),a=parseInt(a[8],10)||0,a=-1E3*(60*60*c+60*a),b=new Date(b.getTime()+
a))}}else b=new Date("invalid");return b}};OpenLayers.Format.Filter.v1=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{ogc:"http://www.opengis.net/ogc",gml:"http://www.opengis.net/gml",xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance"},defaultPrefix:"ogc",schemaLocation:null,initialize:function(a){OpenLayers.Format.XML.prototype.initialize.apply(this,[a])},read:function(a){var b={};this.readers.ogc.Filter.apply(this,[a,b]);return b.filter},readers:{ogc:{_expression:function(a){for(var b="",c=a.firstChild;c;c=
c.nextSibling)switch(c.nodeType){case 1:a=this.readNode(c);a.property?b+="${"+a.property+"}":void 0!==a.value&&(b+=a.value);break;case 3:case 4:b+=c.nodeValue}return b},Filter:function(a,b){var c={fids:[],filters:[]};this.readChildNodes(a,c);0<c.fids.length?b.filter=new OpenLayers.Filter.FeatureId({fids:c.fids}):0<c.filters.length&&(b.filter=c.filters[0])},FeatureId:function(a,b){var c=a.getAttribute("fid");c&&b.fids.push(c)},And:function(a,b){var c=new OpenLayers.Filter.Logical({type:OpenLayers.Filter.Logical.AND});
this.readChildNodes(a,c);b.filters.push(c)},Or:function(a,b){var c=new OpenLayers.Filter.Logical({type:OpenLayers.Filter.Logical.OR});this.readChildNodes(a,c);b.filters.push(c)},Not:function(a,b){var c=new OpenLayers.Filter.Logical({type:OpenLayers.Filter.Logical.NOT});this.readChildNodes(a,c);b.filters.push(c)},PropertyIsLessThan:function(a,b){var c=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.LESS_THAN});this.readChildNodes(a,c);b.filters.push(c)},PropertyIsGreaterThan:function(a,
b){var c=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.GREATER_THAN});this.readChildNodes(a,c);b.filters.push(c)},PropertyIsLessThanOrEqualTo:function(a,b){var c=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.LESS_THAN_OR_EQUAL_TO});this.readChildNodes(a,c);b.filters.push(c)},PropertyIsGreaterThanOrEqualTo:function(a,b){var c=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.GREATER_THAN_OR_EQUAL_TO});this.readChildNodes(a,c);b.filters.push(c)},
PropertyIsBetween:function(a,b){var c=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.BETWEEN});this.readChildNodes(a,c);b.filters.push(c)},Literal:function(a,b){b.value=OpenLayers.String.numericIf(this.getChildValue(a),!0)},PropertyName:function(a,b){b.property=this.getChildValue(a)},LowerBoundary:function(a,b){b.lowerBoundary=OpenLayers.String.numericIf(this.readers.ogc._expression.call(this,a),!0)},UpperBoundary:function(a,b){b.upperBoundary=OpenLayers.String.numericIf(this.readers.ogc._expression.call(this,
a),!0)},Intersects:function(a,b){this.readSpatial(a,b,OpenLayers.Filter.Spatial.INTERSECTS)},Within:function(a,b){this.readSpatial(a,b,OpenLayers.Filter.Spatial.WITHIN)},Contains:function(a,b){this.readSpatial(a,b,OpenLayers.Filter.Spatial.CONTAINS)},DWithin:function(a,b){this.readSpatial(a,b,OpenLayers.Filter.Spatial.DWITHIN)},Distance:function(a,b){b.distance=parseInt(this.getChildValue(a));b.distanceUnits=a.getAttribute("units")},Function:function(a,b){},PropertyIsNull:function(a,b){var c=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.IS_NULL});
this.readChildNodes(a,c);b.filters.push(c)}}},readSpatial:function(a,b,c){c=new OpenLayers.Filter.Spatial({type:c});this.readChildNodes(a,c);c.value=c.components[0];delete c.components;b.filters.push(c)},encodeLiteral:function(a){a instanceof Date&&(a=OpenLayers.Date.toISOString(a));return a},writeOgcExpression:function(a,b){a instanceof OpenLayers.Filter.Function?this.writeNode("Function",a,b):this.writeNode("Literal",a,b);return b},write:function(a){return this.writers.ogc.Filter.apply(this,[a])},
writers:{ogc:{Filter:function(a){var b=this.createElementNSPlus("ogc:Filter");this.writeNode(this.getFilterType(a),a,b);return b},_featureIds:function(a){for(var b=this.createDocumentFragment(),c=0,d=a.fids.length;c<d;++c)this.writeNode("ogc:FeatureId",a.fids[c],b);return b},FeatureId:function(a){return this.createElementNSPlus("ogc:FeatureId",{attributes:{fid:a}})},And:function(a){for(var b=this.createElementNSPlus("ogc:And"),c,d=0,e=a.filters.length;d<e;++d)c=a.filters[d],this.writeNode(this.getFilterType(c),
c,b);return b},Or:function(a){for(var b=this.createElementNSPlus("ogc:Or"),c,d=0,e=a.filters.length;d<e;++d)c=a.filters[d],this.writeNode(this.getFilterType(c),c,b);return b},Not:function(a){var b=this.createElementNSPlus("ogc:Not");a=a.filters[0];this.writeNode(this.getFilterType(a),a,b);return b},PropertyIsLessThan:function(a){var b=this.createElementNSPlus("ogc:PropertyIsLessThan");this.writeNode("PropertyName",a,b);this.writeOgcExpression(a.value,b);return b},PropertyIsGreaterThan:function(a){var b=
this.createElementNSPlus("ogc:PropertyIsGreaterThan");this.writeNode("PropertyName",a,b);this.writeOgcExpression(a.value,b);return b},PropertyIsLessThanOrEqualTo:function(a){var b=this.createElementNSPlus("ogc:PropertyIsLessThanOrEqualTo");this.writeNode("PropertyName",a,b);this.writeOgcExpression(a.value,b);return b},PropertyIsGreaterThanOrEqualTo:function(a){var b=this.createElementNSPlus("ogc:PropertyIsGreaterThanOrEqualTo");this.writeNode("PropertyName",a,b);this.writeOgcExpression(a.value,b);
return b},PropertyIsBetween:function(a){var b=this.createElementNSPlus("ogc:PropertyIsBetween");this.writeNode("PropertyName",a,b);this.writeNode("LowerBoundary",a,b);this.writeNode("UpperBoundary",a,b);return b},PropertyName:function(a){return this.createElementNSPlus("ogc:PropertyName",{value:a.property})},Literal:function(a){return this.createElementNSPlus("ogc:Literal",{value:(this.encodeLiteral||OpenLayers.Format.Filter.v1.prototype.encodeLiteral)(a)})},LowerBoundary:function(a){var b=this.createElementNSPlus("ogc:LowerBoundary");
this.writeOgcExpression(a.lowerBoundary,b);return b},UpperBoundary:function(a){var b=this.createElementNSPlus("ogc:UpperBoundary");this.writeNode("Literal",a.upperBoundary,b);return b},INTERSECTS:function(a){return this.writeSpatial(a,"Intersects")},WITHIN:function(a){return this.writeSpatial(a,"Within")},CONTAINS:function(a){return this.writeSpatial(a,"Contains")},DWITHIN:function(a){var b=this.writeSpatial(a,"DWithin");this.writeNode("Distance",a,b);return b},Distance:function(a){return this.createElementNSPlus("ogc:Distance",
{attributes:{units:a.distanceUnits},value:a.distance})},Function:function(a){var b=this.createElementNSPlus("ogc:Function",{attributes:{name:a.name}});a=a.params;for(var c=0,d=a.length;c<d;c++)this.writeOgcExpression(a[c],b);return b},PropertyIsNull:function(a){var b=this.createElementNSPlus("ogc:PropertyIsNull");this.writeNode("PropertyName",a,b);return b}}},getFilterType:function(a){var b=this.filterMap[a.type];if(!b)throw"Filter writing not supported for rule type: "+a.type;return b},filterMap:{"&&":"And",
"||":"Or","!":"Not","==":"PropertyIsEqualTo","!=":"PropertyIsNotEqualTo","<":"PropertyIsLessThan",">":"PropertyIsGreaterThan","<=":"PropertyIsLessThanOrEqualTo",">=":"PropertyIsGreaterThanOrEqualTo","..":"PropertyIsBetween","~":"PropertyIsLike",NULL:"PropertyIsNull",BBOX:"BBOX",DWITHIN:"DWITHIN",WITHIN:"WITHIN",CONTAINS:"CONTAINS",INTERSECTS:"INTERSECTS",FID:"_featureIds"},CLASS_NAME:"OpenLayers.Format.Filter.v1"});OpenLayers.Geometry=OpenLayers.Class({id:null,parent:null,bounds:null,initialize:function(){this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_")},destroy:function(){this.bounds=this.id=null},clone:function(){return new OpenLayers.Geometry},setBounds:function(a){a&&(this.bounds=a.clone())},clearBounds:function(){this.bounds=null;this.parent&&this.parent.clearBounds()},extendBounds:function(a){this.getBounds()?this.bounds.extend(a):this.setBounds(a)},getBounds:function(){null==this.bounds&&this.calculateBounds();
return this.bounds},calculateBounds:function(){},distanceTo:function(a,b){},getVertices:function(a){},atPoint:function(a,b,c){var d=!1;null!=this.getBounds()&&null!=a&&(b=null!=b?b:0,c=null!=c?c:0,d=(new OpenLayers.Bounds(this.bounds.left-b,this.bounds.bottom-c,this.bounds.right+b,this.bounds.top+c)).containsLonLat(a));return d},getLength:function(){return 0},getArea:function(){return 0},getCentroid:function(){return null},toString:function(){return OpenLayers.Format&&OpenLayers.Format.WKT?OpenLayers.Format.WKT.prototype.write(new OpenLayers.Feature.Vector(this)):
Object.prototype.toString.call(this)},CLASS_NAME:"OpenLayers.Geometry"});OpenLayers.Geometry.fromWKT=function(a){var b;if(OpenLayers.Format&&OpenLayers.Format.WKT){var c=OpenLayers.Geometry.fromWKT.format;c||(c=new OpenLayers.Format.WKT,OpenLayers.Geometry.fromWKT.format=c);a=c.read(a);if(a instanceof OpenLayers.Feature.Vector)b=a.geometry;else if(OpenLayers.Util.isArray(a)){b=a.length;for(var c=Array(b),d=0;d<b;++d)c[d]=a[d].geometry;b=new OpenLayers.Geometry.Collection(c)}}return b};
OpenLayers.Geometry.segmentsIntersect=function(a,b,c){var d=c&&c.point;c=c&&c.tolerance;var e=!1,f=a.x1-b.x1,g=a.y1-b.y1,h=a.x2-a.x1,k=a.y2-a.y1,l=b.y2-b.y1,m=b.x2-b.x1,n=l*h-m*k,l=m*g-l*f,g=h*g-k*f;0==n?0==l&&0==g&&(e=!0):(f=l/n,n=g/n,0<=f&&(1>=f&&0<=n&&1>=n)&&(d?(h=a.x1+f*h,n=a.y1+f*k,e=new OpenLayers.Geometry.Point(h,n)):e=!0));if(c)if(e){if(d)a:for(a=[a,b],b=0;2>b;++b)for(f=a[b],k=1;3>k;++k)if(h=f["x"+k],n=f["y"+k],d=Math.sqrt(Math.pow(h-e.x,2)+Math.pow(n-e.y,2)),d<c){e.x=h;e.y=n;break a}}else a:for(a=
[a,b],b=0;2>b;++b)for(h=a[b],n=a[(b+1)%2],k=1;3>k;++k)if(f={x:h["x"+k],y:h["y"+k]},g=OpenLayers.Geometry.distanceToSegment(f,n),g.distance<c){e=d?new OpenLayers.Geometry.Point(f.x,f.y):!0;break a}return e};OpenLayers.Geometry.distanceToSegment=function(a,b){var c=OpenLayers.Geometry.distanceSquaredToSegment(a,b);c.distance=Math.sqrt(c.distance);return c};
OpenLayers.Geometry.distanceSquaredToSegment=function(a,b){var c=a.x,d=a.y,e=b.x1,f=b.y1,g=b.x2,h=b.y2,k=g-e,l=h-f,m=(k*(c-e)+l*(d-f))/(Math.pow(k,2)+Math.pow(l,2));0>=m||(1<=m?(e=g,f=h):(e+=m*k,f+=m*l));return{distance:Math.pow(e-c,2)+Math.pow(f-d,2),x:e,y:f,along:m}};OpenLayers.Geometry.Point=OpenLayers.Class(OpenLayers.Geometry,{x:null,y:null,initialize:function(a,b){OpenLayers.Geometry.prototype.initialize.apply(this,arguments);this.x=parseFloat(a);this.y=parseFloat(b)},clone:function(a){null==a&&(a=new OpenLayers.Geometry.Point(this.x,this.y));OpenLayers.Util.applyDefaults(a,this);return a},calculateBounds:function(){this.bounds=new OpenLayers.Bounds(this.x,this.y,this.x,this.y)},distanceTo:function(a,b){var c=!(b&&!1===b.edge)&&b&&b.details,d,e,f,g,h;a instanceof
OpenLayers.Geometry.Point?(e=this.x,f=this.y,g=a.x,h=a.y,d=Math.sqrt(Math.pow(e-g,2)+Math.pow(f-h,2)),d=c?{x0:e,y0:f,x1:g,y1:h,distance:d}:d):(d=a.distanceTo(this,b),c&&(d={x0:d.x1,y0:d.y1,x1:d.x0,y1:d.y0,distance:d.distance}));return d},equals:function(a){var b=!1;null!=a&&(b=this.x==a.x&&this.y==a.y||isNaN(this.x)&&isNaN(this.y)&&isNaN(a.x)&&isNaN(a.y));return b},toShortString:function(){return this.x+", "+this.y},move:function(a,b){this.x+=a;this.y+=b;this.clearBounds()},rotate:function(a,b){a*=
Math.PI/180;var c=this.distanceTo(b),d=a+Math.atan2(this.y-b.y,this.x-b.x);this.x=b.x+c*Math.cos(d);this.y=b.y+c*Math.sin(d);this.clearBounds()},getCentroid:function(){return new OpenLayers.Geometry.Point(this.x,this.y)},resize:function(a,b,c){this.x=b.x+a*(void 0==c?1:c)*(this.x-b.x);this.y=b.y+a*(this.y-b.y);this.clearBounds();return this},intersects:function(a){var b=!1;return b="OpenLayers.Geometry.Point"==a.CLASS_NAME?this.equals(a):a.intersects(this)},transform:function(a,b){a&&b&&(OpenLayers.Projection.transform(this,
a,b),this.bounds=null);return this},getVertices:function(a){return[this]},CLASS_NAME:"OpenLayers.Geometry.Point"});OpenLayers.Geometry.Collection=OpenLayers.Class(OpenLayers.Geometry,{components:null,componentTypes:null,initialize:function(a){OpenLayers.Geometry.prototype.initialize.apply(this,arguments);this.components=[];null!=a&&this.addComponents(a)},destroy:function(){this.components.length=0;this.components=null;OpenLayers.Geometry.prototype.destroy.apply(this,arguments)},clone:function(){for(var a=eval("new "+this.CLASS_NAME+"()"),b=0,c=this.components.length;b<c;b++)a.addComponent(this.components[b].clone());
OpenLayers.Util.applyDefaults(a,this);return a},getComponentsString:function(){for(var a=[],b=0,c=this.components.length;b<c;b++)a.push(this.components[b].toShortString());return a.join(",")},calculateBounds:function(){this.bounds=null;var a=new OpenLayers.Bounds,b=this.components;if(b)for(var c=0,d=b.length;c<d;c++)a.extend(b[c].getBounds());null!=a.left&&(null!=a.bottom&&null!=a.right&&null!=a.top)&&this.setBounds(a)},addComponents:function(a){OpenLayers.Util.isArray(a)||(a=[a]);for(var b=0,c=a.length;b<
c;b++)this.addComponent(a[b])},addComponent:function(a,b){var c=!1;if(a&&(null==this.componentTypes||-1<OpenLayers.Util.indexOf(this.componentTypes,a.CLASS_NAME))){if(null!=b&&b<this.components.length){var c=this.components.slice(0,b),d=this.components.slice(b,this.components.length);c.push(a);this.components=c.concat(d)}else this.components.push(a);a.parent=this;this.clearBounds();c=!0}return c},removeComponents:function(a){var b=!1;OpenLayers.Util.isArray(a)||(a=[a]);for(var c=a.length-1;0<=c;--c)b=
this.removeComponent(a[c])||b;return b},removeComponent:function(a){OpenLayers.Util.removeItem(this.components,a);this.clearBounds();return!0},getLength:function(){for(var a=0,b=0,c=this.components.length;b<c;b++)a+=this.components[b].getLength();return a},getArea:function(){for(var a=0,b=0,c=this.components.length;b<c;b++)a+=this.components[b].getArea();return a},getGeodesicArea:function(a){for(var b=0,c=0,d=this.components.length;c<d;c++)b+=this.components[c].getGeodesicArea(a);return b},getCentroid:function(a){if(!a)return this.components.length&&
this.components[0].getCentroid();a=this.components.length;if(!a)return!1;for(var b=[],c=[],d=0,e=Number.MAX_VALUE,f,g=0;g<a;++g){f=this.components[g];var h=f.getArea();f=f.getCentroid(!0);isNaN(h)||(isNaN(f.x)||isNaN(f.y))||(b.push(h),d+=h,e=h<e&&0<h?h:e,c.push(f))}a=b.length;if(0===d){for(g=0;g<a;++g)b[g]=1;d=b.length}else{for(g=0;g<a;++g)b[g]/=e;d/=e}for(var k=e=0,g=0;g<a;++g)f=c[g],h=b[g],e+=f.x*h,k+=f.y*h;return new OpenLayers.Geometry.Point(e/d,k/d)},getGeodesicLength:function(a){for(var b=0,
c=0,d=this.components.length;c<d;c++)b+=this.components[c].getGeodesicLength(a);return b},move:function(a,b){for(var c=0,d=this.components.length;c<d;c++)this.components[c].move(a,b)},rotate:function(a,b){for(var c=0,d=this.components.length;c<d;++c)this.components[c].rotate(a,b)},resize:function(a,b,c){for(var d=0;d<this.components.length;++d)this.components[d].resize(a,b,c);return this},distanceTo:function(a,b){for(var c=!(b&&!1===b.edge)&&b&&b.details,d,e,f,g=Number.POSITIVE_INFINITY,h=0,k=this.components.length;h<
k&&!(d=this.components[h].distanceTo(a,b),f=c?d.distance:d,f<g&&(g=f,e=d,0==g));++h);return e},equals:function(a){var b=!0;if(a&&a.CLASS_NAME&&this.CLASS_NAME==a.CLASS_NAME)if(OpenLayers.Util.isArray(a.components)&&a.components.length==this.components.length)for(var c=0,d=this.components.length;c<d;++c){if(!this.components[c].equals(a.components[c])){b=!1;break}}else b=!1;else b=!1;return b},transform:function(a,b){if(a&&b){for(var c=0,d=this.components.length;c<d;c++)this.components[c].transform(a,
b);this.bounds=null}return this},intersects:function(a){for(var b=!1,c=0,d=this.components.length;c<d&&!(b=a.intersects(this.components[c]));++c);return b},getVertices:function(a){for(var b=[],c=0,d=this.components.length;c<d;++c)Array.prototype.push.apply(b,this.components[c].getVertices(a));return b},CLASS_NAME:"OpenLayers.Geometry.Collection"});OpenLayers.Geometry.MultiPoint=OpenLayers.Class(OpenLayers.Geometry.Collection,{componentTypes:["OpenLayers.Geometry.Point"],addPoint:function(a,b){this.addComponent(a,b)},removePoint:function(a){this.removeComponent(a)},CLASS_NAME:"OpenLayers.Geometry.MultiPoint"});OpenLayers.Geometry.Curve=OpenLayers.Class(OpenLayers.Geometry.MultiPoint,{componentTypes:["OpenLayers.Geometry.Point"],getLength:function(){var a=0;if(this.components&&1<this.components.length)for(var b=1,c=this.components.length;b<c;b++)a+=this.components[b-1].distanceTo(this.components[b]);return a},getGeodesicLength:function(a){var b=this;if(a){var c=new OpenLayers.Projection("EPSG:4326");c.equals(a)||(b=this.clone().transform(a,c))}a=0;if(b.components&&1<b.components.length)for(var d,e=1,f=b.components.length;e<
f;e++)c=b.components[e-1],d=b.components[e],a+=OpenLayers.Util.distVincenty({lon:c.x,lat:c.y},{lon:d.x,lat:d.y});return 1E3*a},CLASS_NAME:"OpenLayers.Geometry.Curve"});OpenLayers.Geometry.LineString=OpenLayers.Class(OpenLayers.Geometry.Curve,{removeComponent:function(a){var b=this.components&&2<this.components.length;b&&OpenLayers.Geometry.Collection.prototype.removeComponent.apply(this,arguments);return b},intersects:function(a){var b=!1,c=a.CLASS_NAME;if("OpenLayers.Geometry.LineString"==c||"OpenLayers.Geometry.LinearRing"==c||"OpenLayers.Geometry.Point"==c){var d=this.getSortedSegments();a="OpenLayers.Geometry.Point"==c?[{x1:a.x,y1:a.y,x2:a.x,y2:a.y}]:a.getSortedSegments();
var e,f,g,h,k,l,m,n=0,p=d.length;a:for(;n<p;++n){c=d[n];e=c.x1;f=c.x2;g=c.y1;h=c.y2;var q=0,r=a.length;for(;q<r;++q){k=a[q];if(k.x1>f)break;if(!(k.x2<e||(l=k.y1,m=k.y2,Math.min(l,m)>Math.max(g,h)||Math.max(l,m)<Math.min(g,h)||!OpenLayers.Geometry.segmentsIntersect(c,k)))){b=!0;break a}}}}else b=a.intersects(this);return b},getSortedSegments:function(){for(var a=this.components.length-1,b=Array(a),c,d,e=0;e<a;++e)c=this.components[e],d=this.components[e+1],b[e]=c.x<d.x?{x1:c.x,y1:c.y,x2:d.x,y2:d.y}:
{x1:d.x,y1:d.y,x2:c.x,y2:c.y};return b.sort(function(a,b){return a.x1-b.x1})},splitWithSegment:function(a,b){for(var c=!(b&&!1===b.edge),d=b&&b.tolerance,e=[],f=this.getVertices(),g=[],h=[],k=!1,l,m,n,p={point:!0,tolerance:d},q=null,r=0,s=f.length-2;r<=s;++r)if(d=f[r],g.push(d.clone()),l=f[r+1],m={x1:d.x,y1:d.y,x2:l.x,y2:l.y},m=OpenLayers.Geometry.segmentsIntersect(a,m,p),m instanceof OpenLayers.Geometry.Point&&((n=m.x===a.x1&&m.y===a.y1||m.x===a.x2&&m.y===a.y2||m.equals(d)||m.equals(l)?!0:!1)||c))m.equals(h[h.length-
1])||h.push(m.clone()),0===r&&m.equals(d)||m.equals(l)||(k=!0,m.equals(d)||g.push(m),e.push(new OpenLayers.Geometry.LineString(g)),g=[m.clone()]);k&&(g.push(l.clone()),e.push(new OpenLayers.Geometry.LineString(g)));if(0<h.length)var t=a.x1<a.x2?1:-1,u=a.y1<a.y2?1:-1,q={lines:e,points:h.sort(function(a,b){return t*a.x-t*b.x||u*a.y-u*b.y})};return q},split:function(a,b){var c=null,d=b&&b.mutual,e,f,g,h;if(a instanceof OpenLayers.Geometry.LineString){var k=this.getVertices(),l,m,n,p,q,r=[];g=[];for(var s=
0,t=k.length-2;s<=t;++s){l=k[s];m=k[s+1];n={x1:l.x,y1:l.y,x2:m.x,y2:m.y};h=h||[a];d&&r.push(l.clone());for(var u=0;u<h.length;++u)if(p=h[u].splitWithSegment(n,b))if(q=p.lines,0<q.length&&(q.unshift(u,1),Array.prototype.splice.apply(h,q),u+=q.length-2),d)for(var v=0,w=p.points.length;v<w;++v)q=p.points[v],q.equals(l)||(r.push(q),g.push(new OpenLayers.Geometry.LineString(r)),r=q.equals(m)?[]:[q.clone()])}d&&(0<g.length&&0<r.length)&&(r.push(m.clone()),g.push(new OpenLayers.Geometry.LineString(r)))}else c=
a.splitWith(this,b);h&&1<h.length?f=!0:h=[];g&&1<g.length?e=!0:g=[];if(f||e)c=d?[g,h]:h;return c},splitWith:function(a,b){return a.split(this,b)},getVertices:function(a){return!0===a?[this.components[0],this.components[this.components.length-1]]:!1===a?this.components.slice(1,this.components.length-1):this.components.slice()},distanceTo:function(a,b){var c=!(b&&!1===b.edge)&&b&&b.details,d,e={},f=Number.POSITIVE_INFINITY;if(a instanceof OpenLayers.Geometry.Point){for(var g=this.getSortedSegments(),
h=a.x,k=a.y,l,m=0,n=g.length;m<n;++m)if(l=g[m],d=OpenLayers.Geometry.distanceToSegment(a,l),d.distance<f){if(f=d.distance,e=d,0===f)break}else if(l.x2>h&&(k>l.y1&&k<l.y2||k<l.y1&&k>l.y2))break;e=c?{distance:e.distance,x0:e.x,y0:e.y,x1:h,y1:k}:e.distance}else if(a instanceof OpenLayers.Geometry.LineString){var g=this.getSortedSegments(),h=a.getSortedSegments(),p,q,r=h.length,s={point:!0},m=0,n=g.length;a:for(;m<n;++m){k=g[m];l=k.x1;q=k.y1;for(var t=0;t<r;++t)if(d=h[t],p=OpenLayers.Geometry.segmentsIntersect(k,
d,s)){f=0;e={distance:0,x0:p.x,y0:p.y,x1:p.x,y1:p.y};break a}else d=OpenLayers.Geometry.distanceToSegment({x:l,y:q},d),d.distance<f&&(f=d.distance,e={distance:f,x0:l,y0:q,x1:d.x,y1:d.y})}c||(e=e.distance);0!==f&&k&&(d=a.distanceTo(new OpenLayers.Geometry.Point(k.x2,k.y2),b),m=c?d.distance:d,m<f&&(e=c?{distance:f,x0:d.x1,y0:d.y1,x1:d.x0,y1:d.y0}:m))}else e=a.distanceTo(this,b),c&&(e={distance:e.distance,x0:e.x1,y0:e.y1,x1:e.x0,y1:e.y0});return e},simplify:function(a){if(this&&null!==this){var b=this.getVertices();
if(3>b.length)return this;var c=function(a,b,d,k){for(var l=0,m=0,n=b,p;n<d;n++){p=a[b];var q=a[d],r=a[n],r=Math.abs(0.5*(p.x*q.y+q.x*r.y+r.x*p.y-q.x*p.y-r.x*q.y-p.x*r.y));p=Math.sqrt(Math.pow(p.x-q.x,2)+Math.pow(p.y-q.y,2));p=2*(r/p);p>l&&(l=p,m=n)}l>k&&m!=b&&(e.push(m),c(a,b,m,k),c(a,m,d,k))},d=b.length-1,e=[];e.push(0);for(e.push(d);b[0].equals(b[d]);)d--,e.push(d);c(b,0,d,a);a=[];e.sort(function(a,b){return a-b});for(d=0;d<e.length;d++)a.push(b[e[d]]);return new OpenLayers.Geometry.LineString(a)}return this},
CLASS_NAME:"OpenLayers.Geometry.LineString"});OpenLayers.Geometry.MultiLineString=OpenLayers.Class(OpenLayers.Geometry.Collection,{componentTypes:["OpenLayers.Geometry.LineString"],split:function(a,b){for(var c=null,d=b&&b.mutual,e,f,g,h,k=[],l=[a],m=0,n=this.components.length;m<n;++m){f=this.components[m];g=!1;for(var p=0;p<l.length;++p)if(e=f.split(l[p],b)){if(d){g=e[0];for(var q=0,r=g.length;q<r;++q)0===q&&k.length?k[k.length-1].addComponent(g[q]):k.push(new OpenLayers.Geometry.MultiLineString([g[q]]));g=!0;e=e[1]}if(e.length){e.unshift(p,
1);Array.prototype.splice.apply(l,e);break}}g||(k.length?k[k.length-1].addComponent(f.clone()):k=[new OpenLayers.Geometry.MultiLineString(f.clone())])}k&&1<k.length?g=!0:k=[];l&&1<l.length?h=!0:l=[];if(g||h)c=d?[k,l]:l;return c},splitWith:function(a,b){var c=null,d=b&&b.mutual,e,f,g,h,k,l;if(a instanceof OpenLayers.Geometry.LineString){l=[];k=[a];for(var m=0,n=this.components.length;m<n;++m){g=!1;f=this.components[m];for(var p=0;p<k.length;++p)if(e=k[p].split(f,b)){d&&(g=e[0],g.length&&(g.unshift(p,
1),Array.prototype.splice.apply(k,g),p+=g.length-2),e=e[1],0===e.length&&(e=[f.clone()]));g=0;for(var q=e.length;g<q;++g)0===g&&l.length?l[l.length-1].addComponent(e[g]):l.push(new OpenLayers.Geometry.MultiLineString([e[g]]));g=!0}g||(l.length?l[l.length-1].addComponent(f.clone()):l=[new OpenLayers.Geometry.MultiLineString([f.clone()])])}}else c=a.split(this);k&&1<k.length?h=!0:k=[];l&&1<l.length?g=!0:l=[];if(h||g)c=d?[k,l]:l;return c},CLASS_NAME:"OpenLayers.Geometry.MultiLineString"});OpenLayers.Geometry.LinearRing=OpenLayers.Class(OpenLayers.Geometry.LineString,{componentTypes:["OpenLayers.Geometry.Point"],addComponent:function(a,b){var c=!1,d=this.components.pop();null==b&&a.equals(d)||(c=OpenLayers.Geometry.Collection.prototype.addComponent.apply(this,arguments));OpenLayers.Geometry.Collection.prototype.addComponent.apply(this,[this.components[0]]);return c},removeComponent:function(a){var b=this.components&&3<this.components.length;b&&(this.components.pop(),OpenLayers.Geometry.Collection.prototype.removeComponent.apply(this,
arguments),OpenLayers.Geometry.Collection.prototype.addComponent.apply(this,[this.components[0]]));return b},move:function(a,b){for(var c=0,d=this.components.length;c<d-1;c++)this.components[c].move(a,b)},rotate:function(a,b){for(var c=0,d=this.components.length;c<d-1;++c)this.components[c].rotate(a,b)},resize:function(a,b,c){for(var d=0,e=this.components.length;d<e-1;++d)this.components[d].resize(a,b,c);return this},transform:function(a,b){if(a&&b){for(var c=0,d=this.components.length;c<d-1;c++)this.components[c].transform(a,
b);this.bounds=null}return this},getCentroid:function(){if(this.components){var a=this.components.length;if(0<a&&2>=a)return this.components[0].clone();if(2<a){var b=0,c=0,d=this.components[0].x,e=this.components[0].y,f=-1*this.getArea();if(0!=f){for(var g=0;g<a-1;g++)var h=this.components[g],k=this.components[g+1],b=b+(h.x+k.x-2*d)*((h.x-d)*(k.y-e)-(k.x-d)*(h.y-e)),c=c+(h.y+k.y-2*e)*((h.x-d)*(k.y-e)-(k.x-d)*(h.y-e));b=d+b/(6*f);a=e+c/(6*f)}else{for(g=0;g<a-1;g++)b+=this.components[g].x,c+=this.components[g].y;
b/=a-1;a=c/(a-1)}return new OpenLayers.Geometry.Point(b,a)}return null}},getArea:function(){var a=0;if(this.components&&2<this.components.length){for(var b=a=0,c=this.components.length;b<c-1;b++)var d=this.components[b],e=this.components[b+1],a=a+(d.x+e.x)*(e.y-d.y);a=-a/2}return a},getGeodesicArea:function(a){var b=this;if(a){var c=new OpenLayers.Projection("EPSG:4326");c.equals(a)||(b=this.clone().transform(a,c))}a=0;c=b.components&&b.components.length;if(2<c){for(var d,e,f=0;f<c-1;f++)d=b.components[f],
e=b.components[f+1],a+=OpenLayers.Util.rad(e.x-d.x)*(2+Math.sin(OpenLayers.Util.rad(d.y))+Math.sin(OpenLayers.Util.rad(e.y)));a=40680631590769*a/2}return a},containsPoint:function(a){var b=OpenLayers.Number.limitSigDigs,c=b(a.x,14);a=b(a.y,14);for(var d=this.components.length-1,e,f,g,h,k,l=0,m=0;m<d;++m)if(e=this.components[m],g=b(e.x,14),e=b(e.y,14),f=this.components[m+1],h=b(f.x,14),f=b(f.y,14),e==f){if(a==e&&(g<=h&&c>=g&&c<=h||g>=h&&c<=g&&c>=h)){l=-1;break}}else{k=b((a-f)*((h-g)/(f-e))+h,14);if(k==
c&&(e<f&&a>=e&&a<=f||e>f&&a<=e&&a>=f)){l=-1;break}k<=c||g!=h&&(k<Math.min(g,h)||k>Math.max(g,h))||(e<f&&a>=e&&a<f||e>f&&a<e&&a>=f)&&++l}return-1==l?1:!!(l&1)},intersects:function(a){var b=!1;if("OpenLayers.Geometry.Point"==a.CLASS_NAME)b=this.containsPoint(a);else if("OpenLayers.Geometry.LineString"==a.CLASS_NAME)b=a.intersects(this);else if("OpenLayers.Geometry.LinearRing"==a.CLASS_NAME)b=OpenLayers.Geometry.LineString.prototype.intersects.apply(this,[a]);else for(var c=0,d=a.components.length;c<
d&&!(b=a.components[c].intersects(this));++c);return b},getVertices:function(a){return!0===a?[]:this.components.slice(0,this.components.length-1)},CLASS_NAME:"OpenLayers.Geometry.LinearRing"});OpenLayers.Geometry.Polygon=OpenLayers.Class(OpenLayers.Geometry.Collection,{componentTypes:["OpenLayers.Geometry.LinearRing"],getArea:function(){var a=0;if(this.components&&0<this.components.length)for(var a=a+Math.abs(this.components[0].getArea()),b=1,c=this.components.length;b<c;b++)a-=Math.abs(this.components[b].getArea());return a},getGeodesicArea:function(a){var b=0;if(this.components&&0<this.components.length)for(var b=b+Math.abs(this.components[0].getGeodesicArea(a)),c=1,d=this.components.length;c<
d;c++)b-=Math.abs(this.components[c].getGeodesicArea(a));return b},containsPoint:function(a){var b=this.components.length,c=!1;if(0<b&&(c=this.components[0].containsPoint(a),1!==c&&c&&1<b))for(var d,e=1;e<b;++e)if(d=this.components[e].containsPoint(a)){c=1===d?1:!1;break}return c},intersects:function(a){var b=!1,c,d;if("OpenLayers.Geometry.Point"==a.CLASS_NAME)b=this.containsPoint(a);else if("OpenLayers.Geometry.LineString"==a.CLASS_NAME||"OpenLayers.Geometry.LinearRing"==a.CLASS_NAME){c=0;for(d=
this.components.length;c<d&&!(b=a.intersects(this.components[c]));++c);if(!b)for(c=0,d=a.components.length;c<d&&!(b=this.containsPoint(a.components[c]));++c);}else for(c=0,d=a.components.length;c<d&&!(b=this.intersects(a.components[c]));++c);if(!b&&"OpenLayers.Geometry.Polygon"==a.CLASS_NAME){var e=this.components[0];c=0;for(d=e.components.length;c<d&&!(b=a.containsPoint(e.components[c]));++c);}return b},distanceTo:function(a,b){return b&&!1===b.edge&&this.intersects(a)?0:OpenLayers.Geometry.Collection.prototype.distanceTo.apply(this,
[a,b])},CLASS_NAME:"OpenLayers.Geometry.Polygon"});OpenLayers.Geometry.Polygon.createRegularPolygon=function(a,b,c,d){var e=Math.PI*(1/c-0.5);d&&(e+=d/180*Math.PI);for(var f,g=[],h=0;h<c;++h)f=e+2*h*Math.PI/c,d=a.x+b*Math.cos(f),f=a.y+b*Math.sin(f),g.push(new OpenLayers.Geometry.Point(d,f));a=new OpenLayers.Geometry.LinearRing(g);return new OpenLayers.Geometry.Polygon([a])};OpenLayers.Geometry.MultiPolygon=OpenLayers.Class(OpenLayers.Geometry.Collection,{componentTypes:["OpenLayers.Geometry.Polygon"],CLASS_NAME:"OpenLayers.Geometry.MultiPolygon"});OpenLayers.Format.GML=OpenLayers.Class(OpenLayers.Format.XML,{featureNS:"http://mapserver.gis.umn.edu/mapserver",featurePrefix:"feature",featureName:"featureMember",layerName:"features",geometryName:"geometry",collectionName:"FeatureCollection",gmlns:"http://www.opengis.net/gml",extractAttributes:!0,xy:!0,initialize:function(a){this.regExes={trimSpace:/^\s*|\s*$/g,removeSpace:/\s*/g,splitSpace:/\s+/,trimComma:/\s*,\s*/g};OpenLayers.Format.XML.prototype.initialize.apply(this,[a])},read:function(a){"string"==
typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));a=this.getElementsByTagNameNS(a.documentElement,this.gmlns,this.featureName);for(var b=[],c=0;c<a.length;c++){var d=this.parseFeature(a[c]);d&&b.push(d)}return b},parseFeature:function(a){for(var b="MultiPolygon Polygon MultiLineString LineString MultiPoint Point Envelope".split(" "),c,d,e,f=0;f<b.length;++f)if(c=b[f],d=this.getElementsByTagNameNS(a,this.gmlns,c),0<d.length){if(e=this.parseGeometry[c.toLowerCase()])e=e.apply(this,
[d[0]]),this.internalProjection&&this.externalProjection&&e.transform(this.externalProjection,this.internalProjection);else throw new TypeError("Unsupported geometry type: "+c);break}var g;c=this.getElementsByTagNameNS(a,this.gmlns,"Box");for(f=0;f<c.length;++f)b=c[f],d=this.parseGeometry.box.apply(this,[b]),b=b.parentNode,"boundedBy"===(b.localName||b.nodeName.split(":").pop())?g=d:e=d.toGeometry();var h;this.extractAttributes&&(h=this.parseAttributes(a));h=new OpenLayers.Feature.Vector(e,h);h.bounds=
g;h.gml={featureType:a.firstChild.nodeName.split(":")[1],featureNS:a.firstChild.namespaceURI,featureNSPrefix:a.firstChild.prefix};a=a.firstChild;for(var k;a&&(1!=a.nodeType||!(k=a.getAttribute("fid")||a.getAttribute("id")));)a=a.nextSibling;h.fid=k;return h},parseGeometry:{point:function(a){var b,c;c=[];b=this.getElementsByTagNameNS(a,this.gmlns,"pos");0<b.length&&(c=b[0].firstChild.nodeValue,c=c.replace(this.regExes.trimSpace,""),c=c.split(this.regExes.splitSpace));0==c.length&&(b=this.getElementsByTagNameNS(a,
this.gmlns,"coordinates"),0<b.length&&(c=b[0].firstChild.nodeValue,c=c.replace(this.regExes.removeSpace,""),c=c.split(",")));0==c.length&&(b=this.getElementsByTagNameNS(a,this.gmlns,"coord"),0<b.length&&(a=this.getElementsByTagNameNS(b[0],this.gmlns,"X"),b=this.getElementsByTagNameNS(b[0],this.gmlns,"Y"),0<a.length&&0<b.length&&(c=[a[0].firstChild.nodeValue,b[0].firstChild.nodeValue])));2==c.length&&(c[2]=null);return this.xy?new OpenLayers.Geometry.Point(c[0],c[1],c[2]):new OpenLayers.Geometry.Point(c[1],
c[0],c[2])},multipoint:function(a){a=this.getElementsByTagNameNS(a,this.gmlns,"Point");var b=[];if(0<a.length)for(var c,d=0;d<a.length;++d)(c=this.parseGeometry.point.apply(this,[a[d]]))&&b.push(c);return new OpenLayers.Geometry.MultiPoint(b)},linestring:function(a,b){var c,d;d=[];var e=[];c=this.getElementsByTagNameNS(a,this.gmlns,"posList");if(0<c.length){d=this.getChildValue(c[0]);d=d.replace(this.regExes.trimSpace,"");d=d.split(this.regExes.splitSpace);var f=parseInt(c[0].getAttribute("dimension")),
g,h,k;for(c=0;c<d.length/f;++c)g=c*f,h=d[g],k=d[g+1],g=2==f?null:d[g+2],this.xy?e.push(new OpenLayers.Geometry.Point(h,k,g)):e.push(new OpenLayers.Geometry.Point(k,h,g))}if(0==d.length&&(c=this.getElementsByTagNameNS(a,this.gmlns,"coordinates"),0<c.length))for(d=this.getChildValue(c[0]),d=d.replace(this.regExes.trimSpace,""),d=d.replace(this.regExes.trimComma,","),f=d.split(this.regExes.splitSpace),c=0;c<f.length;++c)d=f[c].split(","),2==d.length&&(d[2]=null),this.xy?e.push(new OpenLayers.Geometry.Point(d[0],
d[1],d[2])):e.push(new OpenLayers.Geometry.Point(d[1],d[0],d[2]));d=null;0!=e.length&&(d=b?new OpenLayers.Geometry.LinearRing(e):new OpenLayers.Geometry.LineString(e));return d},multilinestring:function(a){a=this.getElementsByTagNameNS(a,this.gmlns,"LineString");var b=[];if(0<a.length)for(var c,d=0;d<a.length;++d)(c=this.parseGeometry.linestring.apply(this,[a[d]]))&&b.push(c);return new OpenLayers.Geometry.MultiLineString(b)},polygon:function(a){a=this.getElementsByTagNameNS(a,this.gmlns,"LinearRing");
var b=[];if(0<a.length)for(var c,d=0;d<a.length;++d)(c=this.parseGeometry.linestring.apply(this,[a[d],!0]))&&b.push(c);return new OpenLayers.Geometry.Polygon(b)},multipolygon:function(a){a=this.getElementsByTagNameNS(a,this.gmlns,"Polygon");var b=[];if(0<a.length)for(var c,d=0;d<a.length;++d)(c=this.parseGeometry.polygon.apply(this,[a[d]]))&&b.push(c);return new OpenLayers.Geometry.MultiPolygon(b)},envelope:function(a){var b=[],c,d,e=this.getElementsByTagNameNS(a,this.gmlns,"lowerCorner");if(0<e.length){c=
[];0<e.length&&(c=e[0].firstChild.nodeValue,c=c.replace(this.regExes.trimSpace,""),c=c.split(this.regExes.splitSpace));2==c.length&&(c[2]=null);var f=this.xy?new OpenLayers.Geometry.Point(c[0],c[1],c[2]):new OpenLayers.Geometry.Point(c[1],c[0],c[2])}a=this.getElementsByTagNameNS(a,this.gmlns,"upperCorner");if(0<a.length){c=[];0<a.length&&(c=a[0].firstChild.nodeValue,c=c.replace(this.regExes.trimSpace,""),c=c.split(this.regExes.splitSpace));2==c.length&&(c[2]=null);var g=this.xy?new OpenLayers.Geometry.Point(c[0],
c[1],c[2]):new OpenLayers.Geometry.Point(c[1],c[0],c[2])}f&&g&&(b.push(new OpenLayers.Geometry.Point(f.x,f.y)),b.push(new OpenLayers.Geometry.Point(g.x,f.y)),b.push(new OpenLayers.Geometry.Point(g.x,g.y)),b.push(new OpenLayers.Geometry.Point(f.x,g.y)),b.push(new OpenLayers.Geometry.Point(f.x,f.y)),b=new OpenLayers.Geometry.LinearRing(b),d=new OpenLayers.Geometry.Polygon([b]));return d},box:function(a){var b=this.getElementsByTagNameNS(a,this.gmlns,"coordinates"),c=a=null;0<b.length&&(b=b[0].firstChild.nodeValue,
b=b.split(" "),2==b.length&&(a=b[0].split(","),c=b[1].split(",")));if(null!==a&&null!==c)return new OpenLayers.Bounds(parseFloat(a[0]),parseFloat(a[1]),parseFloat(c[0]),parseFloat(c[1]))}},parseAttributes:function(a){var b={};a=a.firstChild;for(var c,d,e;a;){if(1==a.nodeType){a=a.childNodes;for(c=0;c<a.length;++c)if(d=a[c],1==d.nodeType)if(e=d.childNodes,1==e.length){if(e=e[0],3==e.nodeType||4==e.nodeType)d=d.prefix?d.nodeName.split(":")[1]:d.nodeName,e=e.nodeValue.replace(this.regExes.trimSpace,
""),b[d]=e}else b[d.nodeName.split(":").pop()]=null;break}a=a.nextSibling}return b},write:function(a){OpenLayers.Util.isArray(a)||(a=[a]);for(var b=this.createElementNS("http://www.opengis.net/wfs","wfs:"+this.collectionName),c=0;c<a.length;c++)b.appendChild(this.createFeatureXML(a[c]));return OpenLayers.Format.XML.prototype.write.apply(this,[b])},createFeatureXML:function(a){var b=this.buildGeometryNode(a.geometry),c=this.createElementNS(this.featureNS,this.featurePrefix+":"+this.geometryName);c.appendChild(b);
var b=this.createElementNS(this.gmlns,"gml:"+this.featureName),d=this.createElementNS(this.featureNS,this.featurePrefix+":"+this.layerName);d.setAttribute("fid",a.fid||a.id);d.appendChild(c);for(var e in a.attributes){var c=this.createTextNode(a.attributes[e]),f=e.substring(e.lastIndexOf(":")+1),f=this.createElementNS(this.featureNS,this.featurePrefix+":"+f);f.appendChild(c);d.appendChild(f)}b.appendChild(d);return b},buildGeometryNode:function(a){this.externalProjection&&this.internalProjection&&
(a=a.clone(),a.transform(this.internalProjection,this.externalProjection));var b=a.CLASS_NAME,b=b.substring(b.lastIndexOf(".")+1);return this.buildGeometry[b.toLowerCase()].apply(this,[a])},buildGeometry:{point:function(a){var b=this.createElementNS(this.gmlns,"gml:Point");b.appendChild(this.buildCoordinatesNode(a));return b},multipoint:function(a){var b=this.createElementNS(this.gmlns,"gml:MultiPoint");a=a.components;for(var c,d,e=0;e<a.length;e++)c=this.createElementNS(this.gmlns,"gml:pointMember"),
d=this.buildGeometry.point.apply(this,[a[e]]),c.appendChild(d),b.appendChild(c);return b},linestring:function(a){var b=this.createElementNS(this.gmlns,"gml:LineString");b.appendChild(this.buildCoordinatesNode(a));return b},multilinestring:function(a){var b=this.createElementNS(this.gmlns,"gml:MultiLineString");a=a.components;for(var c,d,e=0;e<a.length;++e)c=this.createElementNS(this.gmlns,"gml:lineStringMember"),d=this.buildGeometry.linestring.apply(this,[a[e]]),c.appendChild(d),b.appendChild(c);
return b},linearring:function(a){var b=this.createElementNS(this.gmlns,"gml:LinearRing");b.appendChild(this.buildCoordinatesNode(a));return b},polygon:function(a){var b=this.createElementNS(this.gmlns,"gml:Polygon");a=a.components;for(var c,d,e=0;e<a.length;++e)c=0==e?"outerBoundaryIs":"innerBoundaryIs",c=this.createElementNS(this.gmlns,"gml:"+c),d=this.buildGeometry.linearring.apply(this,[a[e]]),c.appendChild(d),b.appendChild(c);return b},multipolygon:function(a){var b=this.createElementNS(this.gmlns,
"gml:MultiPolygon");a=a.components;for(var c,d,e=0;e<a.length;++e)c=this.createElementNS(this.gmlns,"gml:polygonMember"),d=this.buildGeometry.polygon.apply(this,[a[e]]),c.appendChild(d),b.appendChild(c);return b},bounds:function(a){var b=this.createElementNS(this.gmlns,"gml:Box");b.appendChild(this.buildCoordinatesNode(a));return b}},buildCoordinatesNode:function(a){var b=this.createElementNS(this.gmlns,"gml:coordinates");b.setAttribute("decimal",".");b.setAttribute("cs",",");b.setAttribute("ts",
" ");var c=[];if(a instanceof OpenLayers.Bounds)c.push(a.left+","+a.bottom),c.push(a.right+","+a.top);else{a=a.components?a.components:[a];for(var d=0;d<a.length;d++)c.push(a[d].x+","+a[d].y)}c=this.createTextNode(c.join(" "));b.appendChild(c);return b},CLASS_NAME:"OpenLayers.Format.GML"});OpenLayers.Format.GML||(OpenLayers.Format.GML={});
OpenLayers.Format.GML.Base=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{gml:"http://www.opengis.net/gml",xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance",wfs:"http://www.opengis.net/wfs"},defaultPrefix:"gml",schemaLocation:null,featureType:null,featureNS:null,geometryName:"geometry",extractAttributes:!0,srsName:null,xy:!0,geometryTypes:null,singleFeatureType:null,regExes:{trimSpace:/^\s*|\s*$/g,removeSpace:/\s*/g,splitSpace:/\s+/,trimComma:/\s*,\s*/g,featureMember:/^(.*:)?featureMembers?$/},
initialize:function(a){OpenLayers.Format.XML.prototype.initialize.apply(this,[a]);this.setGeometryTypes();a&&a.featureNS&&this.setNamespace("feature",a.featureNS);this.singleFeatureType=!a||"string"===typeof a.featureType},read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));a&&9==a.nodeType&&(a=a.documentElement);var b=[];this.readNode(a,{features:b},!0);if(0==b.length){var c=this.getElementsByTagNameNS(a,this.namespaces.gml,"featureMember");if(c.length){a=
0;for(var d=c.length;a<d;++a)this.readNode(c[a],{features:b},!0)}else c=this.getElementsByTagNameNS(a,this.namespaces.gml,"featureMembers"),c.length&&this.readNode(c[0],{features:b},!0)}return b},readNode:function(a,b,c){!0===c&&!0===this.autoConfig&&(this.featureType=null,delete this.namespaceAlias[this.featureNS],delete this.namespaces.feature,this.featureNS=null);this.featureNS||(a.prefix in this.namespaces||a.parentNode.namespaceURI!=this.namespaces.gml||!this.regExes.featureMember.test(a.parentNode.nodeName))||
(this.featureType=a.nodeName.split(":").pop(),this.setNamespace("feature",a.namespaceURI),this.featureNS=a.namespaceURI,this.autoConfig=!0);return OpenLayers.Format.XML.prototype.readNode.apply(this,[a,b])},readers:{gml:{_inherit:function(a,b,c){},featureMember:function(a,b){this.readChildNodes(a,b)},featureMembers:function(a,b){this.readChildNodes(a,b)},name:function(a,b){b.name=this.getChildValue(a)},boundedBy:function(a,b){var c={};this.readChildNodes(a,c);c.components&&0<c.components.length&&
(b.bounds=c.components[0])},Point:function(a,b){var c={points:[]};this.readChildNodes(a,c);b.components||(b.components=[]);b.components.push(c.points[0])},coordinates:function(a,b){for(var c=this.getChildValue(a).replace(this.regExes.trimSpace,""),c=c.replace(this.regExes.trimComma,","),c=c.split(this.regExes.splitSpace),d,e=c.length,f=Array(e),g=0;g<e;++g)d=c[g].split(","),f[g]=this.xy?new OpenLayers.Geometry.Point(d[0],d[1],d[2]):new OpenLayers.Geometry.Point(d[1],d[0],d[2]);b.points=f},coord:function(a,
b){var c={};this.readChildNodes(a,c);b.points||(b.points=[]);b.points.push(new OpenLayers.Geometry.Point(c.x,c.y,c.z))},X:function(a,b){b.x=this.getChildValue(a)},Y:function(a,b){b.y=this.getChildValue(a)},Z:function(a,b){b.z=this.getChildValue(a)},MultiPoint:function(a,b){var c={components:[]};this.readers.gml._inherit.apply(this,[a,c,b]);this.readChildNodes(a,c);b.components=[new OpenLayers.Geometry.MultiPoint(c.components)]},pointMember:function(a,b){this.readChildNodes(a,b)},LineString:function(a,
b){var c={};this.readers.gml._inherit.apply(this,[a,c,b]);this.readChildNodes(a,c);b.components||(b.components=[]);b.components.push(new OpenLayers.Geometry.LineString(c.points))},MultiLineString:function(a,b){var c={components:[]};this.readers.gml._inherit.apply(this,[a,c,b]);this.readChildNodes(a,c);b.components=[new OpenLayers.Geometry.MultiLineString(c.components)]},lineStringMember:function(a,b){this.readChildNodes(a,b)},Polygon:function(a,b){var c={outer:null,inner:[]};this.readers.gml._inherit.apply(this,
[a,c,b]);this.readChildNodes(a,c);c.inner.unshift(c.outer);b.components||(b.components=[]);b.components.push(new OpenLayers.Geometry.Polygon(c.inner))},LinearRing:function(a,b){var c={};this.readers.gml._inherit.apply(this,[a,c]);this.readChildNodes(a,c);b.components=[new OpenLayers.Geometry.LinearRing(c.points)]},MultiPolygon:function(a,b){var c={components:[]};this.readers.gml._inherit.apply(this,[a,c,b]);this.readChildNodes(a,c);b.components=[new OpenLayers.Geometry.MultiPolygon(c.components)]},
polygonMember:function(a,b){this.readChildNodes(a,b)},GeometryCollection:function(a,b){var c={components:[]};this.readers.gml._inherit.apply(this,[a,c,b]);this.readChildNodes(a,c);b.components=[new OpenLayers.Geometry.Collection(c.components)]},geometryMember:function(a,b){this.readChildNodes(a,b)}},feature:{"*":function(a,b){var c,d=a.localName||a.nodeName.split(":").pop();b.features?this.singleFeatureType||-1===OpenLayers.Util.indexOf(this.featureType,d)?d===this.featureType&&(c="_typeName"):c=
"_typeName":0==a.childNodes.length||1==a.childNodes.length&&3==a.firstChild.nodeType?this.extractAttributes&&(c="_attribute"):c="_geometry";c&&this.readers.feature[c].apply(this,[a,b])},_typeName:function(a,b){var c={components:[],attributes:{}};this.readChildNodes(a,c);c.name&&(c.attributes.name=c.name);var d=new OpenLayers.Feature.Vector(c.components[0],c.attributes);this.singleFeatureType||(d.type=a.nodeName.split(":").pop(),d.namespace=a.namespaceURI);var e=a.getAttribute("fid")||this.getAttributeNS(a,
this.namespaces.gml,"id");e&&(d.fid=e);this.internalProjection&&(this.externalProjection&&d.geometry)&&d.geometry.transform(this.externalProjection,this.internalProjection);c.bounds&&(d.bounds=c.bounds);b.features.push(d)},_geometry:function(a,b){this.geometryName||(this.geometryName=a.nodeName.split(":").pop());this.readChildNodes(a,b)},_attribute:function(a,b){var c=a.localName||a.nodeName.split(":").pop(),d=this.getChildValue(a);b.attributes[c]=d}},wfs:{FeatureCollection:function(a,b){this.readChildNodes(a,
b)}}},write:function(a){var b;b=OpenLayers.Util.isArray(a)?"featureMembers":"featureMember";a=this.writeNode("gml:"+b,a);this.setAttributeNS(a,this.namespaces.xsi,"xsi:schemaLocation",this.schemaLocation);return OpenLayers.Format.XML.prototype.write.apply(this,[a])},writers:{gml:{featureMember:function(a){var b=this.createElementNSPlus("gml:featureMember");this.writeNode("feature:_typeName",a,b);return b},MultiPoint:function(a){var b=this.createElementNSPlus("gml:MultiPoint");a=a.components||[a];
for(var c=0,d=a.length;c<d;++c)this.writeNode("pointMember",a[c],b);return b},pointMember:function(a){var b=this.createElementNSPlus("gml:pointMember");this.writeNode("Point",a,b);return b},MultiLineString:function(a){var b=this.createElementNSPlus("gml:MultiLineString");a=a.components||[a];for(var c=0,d=a.length;c<d;++c)this.writeNode("lineStringMember",a[c],b);return b},lineStringMember:function(a){var b=this.createElementNSPlus("gml:lineStringMember");this.writeNode("LineString",a,b);return b},
MultiPolygon:function(a){var b=this.createElementNSPlus("gml:MultiPolygon");a=a.components||[a];for(var c=0,d=a.length;c<d;++c)this.writeNode("polygonMember",a[c],b);return b},polygonMember:function(a){var b=this.createElementNSPlus("gml:polygonMember");this.writeNode("Polygon",a,b);return b},GeometryCollection:function(a){for(var b=this.createElementNSPlus("gml:GeometryCollection"),c=0,d=a.components.length;c<d;++c)this.writeNode("geometryMember",a.components[c],b);return b},geometryMember:function(a){var b=
this.createElementNSPlus("gml:geometryMember");a=this.writeNode("feature:_geometry",a);b.appendChild(a.firstChild);return b}},feature:{_typeName:function(a){var b=this.createElementNSPlus("feature:"+this.featureType,{attributes:{fid:a.fid}});a.geometry&&this.writeNode("feature:_geometry",a.geometry,b);for(var c in a.attributes){var d=a.attributes[c];null!=d&&this.writeNode("feature:_attribute",{name:c,value:d},b)}return b},_geometry:function(a){this.externalProjection&&this.internalProjection&&(a=
a.clone().transform(this.internalProjection,this.externalProjection));var b=this.createElementNSPlus("feature:"+this.geometryName);a=this.writeNode("gml:"+this.geometryTypes[a.CLASS_NAME],a,b);this.srsName&&a.setAttribute("srsName",this.srsName);return b},_attribute:function(a){return this.createElementNSPlus("feature:"+a.name,{value:a.value})}},wfs:{FeatureCollection:function(a){for(var b=this.createElementNSPlus("wfs:FeatureCollection"),c=0,d=a.length;c<d;++c)this.writeNode("gml:featureMember",
a[c],b);return b}}},setGeometryTypes:function(){this.geometryTypes={"OpenLayers.Geometry.Point":"Point","OpenLayers.Geometry.MultiPoint":"MultiPoint","OpenLayers.Geometry.LineString":"LineString","OpenLayers.Geometry.MultiLineString":"MultiLineString","OpenLayers.Geometry.Polygon":"Polygon","OpenLayers.Geometry.MultiPolygon":"MultiPolygon","OpenLayers.Geometry.Collection":"GeometryCollection"}},CLASS_NAME:"OpenLayers.Format.GML.Base"});OpenLayers.Format.GML.v3=OpenLayers.Class(OpenLayers.Format.GML.Base,{schemaLocation:"http://www.opengis.net/gml http://schemas.opengis.net/gml/3.1.1/profiles/gmlsfProfile/1.0.0/gmlsf.xsd",curve:!1,multiCurve:!0,surface:!1,multiSurface:!0,initialize:function(a){OpenLayers.Format.GML.Base.prototype.initialize.apply(this,[a])},readers:{gml:OpenLayers.Util.applyDefaults({_inherit:function(a,b,c){if(a=parseInt(a.getAttribute("srsDimension"),10)||c&&c.srsDimension)b.srsDimension=a},featureMembers:function(a,
b){this.readChildNodes(a,b)},Curve:function(a,b){var c={points:[]};this.readers.gml._inherit.apply(this,[a,c,b]);this.readChildNodes(a,c);b.components||(b.components=[]);b.components.push(new OpenLayers.Geometry.LineString(c.points))},segments:function(a,b){this.readChildNodes(a,b)},LineStringSegment:function(a,b){var c={};this.readChildNodes(a,c);c.points&&Array.prototype.push.apply(b.points,c.points)},pos:function(a,b){var c=this.getChildValue(a).replace(this.regExes.trimSpace,"").split(this.regExes.splitSpace),
c=this.xy?new OpenLayers.Geometry.Point(c[0],c[1],c[2]):new OpenLayers.Geometry.Point(c[1],c[0],c[2]);b.points=[c]},posList:function(a,b){for(var c=this.getChildValue(a).replace(this.regExes.trimSpace,"").split(this.regExes.splitSpace),d=b.srsDimension||parseInt(a.getAttribute("srsDimension")||a.getAttribute("dimension"),10)||2,e,f,g,h=Array(c.length/d),k=0,l=c.length;k<l;k+=d)e=c[k],f=c[k+1],g=2==d?void 0:c[k+2],h[k/d]=this.xy?new OpenLayers.Geometry.Point(e,f,g):new OpenLayers.Geometry.Point(f,
e,g);b.points=h},Surface:function(a,b){this.readChildNodes(a,b)},patches:function(a,b){this.readChildNodes(a,b)},PolygonPatch:function(a,b){this.readers.gml.Polygon.apply(this,[a,b])},exterior:function(a,b){var c={};this.readChildNodes(a,c);b.outer=c.components[0]},interior:function(a,b){var c={};this.readChildNodes(a,c);b.inner.push(c.components[0])},MultiCurve:function(a,b){var c={components:[]};this.readers.gml._inherit.apply(this,[a,c,b]);this.readChildNodes(a,c);0<c.components.length&&(b.components=
[new OpenLayers.Geometry.MultiLineString(c.components)])},curveMember:function(a,b){this.readChildNodes(a,b)},MultiSurface:function(a,b){var c={components:[]};this.readers.gml._inherit.apply(this,[a,c,b]);this.readChildNodes(a,c);0<c.components.length&&(b.components=[new OpenLayers.Geometry.MultiPolygon(c.components)])},surfaceMember:function(a,b){this.readChildNodes(a,b)},surfaceMembers:function(a,b){this.readChildNodes(a,b)},pointMembers:function(a,b){this.readChildNodes(a,b)},lineStringMembers:function(a,
b){this.readChildNodes(a,b)},polygonMembers:function(a,b){this.readChildNodes(a,b)},geometryMembers:function(a,b){this.readChildNodes(a,b)},Envelope:function(a,b){var c={points:Array(2)};this.readChildNodes(a,c);b.components||(b.components=[]);var d=c.points[0],c=c.points[1];b.components.push(new OpenLayers.Bounds(d.x,d.y,c.x,c.y))},lowerCorner:function(a,b){var c={};this.readers.gml.pos.apply(this,[a,c]);b.points[0]=c.points[0]},upperCorner:function(a,b){var c={};this.readers.gml.pos.apply(this,
[a,c]);b.points[1]=c.points[0]}},OpenLayers.Format.GML.Base.prototype.readers.gml),feature:OpenLayers.Format.GML.Base.prototype.readers.feature,wfs:OpenLayers.Format.GML.Base.prototype.readers.wfs},write:function(a){var b;b=OpenLayers.Util.isArray(a)?"featureMembers":"featureMember";a=this.writeNode("gml:"+b,a);this.setAttributeNS(a,this.namespaces.xsi,"xsi:schemaLocation",this.schemaLocation);return OpenLayers.Format.XML.prototype.write.apply(this,[a])},writers:{gml:OpenLayers.Util.applyDefaults({featureMembers:function(a){for(var b=
this.createElementNSPlus("gml:featureMembers"),c=0,d=a.length;c<d;++c)this.writeNode("feature:_typeName",a[c],b);return b},Point:function(a){var b=this.createElementNSPlus("gml:Point");this.writeNode("pos",a,b);return b},pos:function(a){return this.createElementNSPlus("gml:pos",{value:this.xy?a.x+" "+a.y:a.y+" "+a.x})},LineString:function(a){var b=this.createElementNSPlus("gml:LineString");this.writeNode("posList",a.components,b);return b},Curve:function(a){var b=this.createElementNSPlus("gml:Curve");
this.writeNode("segments",a,b);return b},segments:function(a){var b=this.createElementNSPlus("gml:segments");this.writeNode("LineStringSegment",a,b);return b},LineStringSegment:function(a){var b=this.createElementNSPlus("gml:LineStringSegment");this.writeNode("posList",a.components,b);return b},posList:function(a){for(var b=a.length,c=Array(b),d,e=0;e<b;++e)d=a[e],c[e]=this.xy?d.x+" "+d.y:d.y+" "+d.x;return this.createElementNSPlus("gml:posList",{value:c.join(" ")})},Surface:function(a){var b=this.createElementNSPlus("gml:Surface");
this.writeNode("patches",a,b);return b},patches:function(a){var b=this.createElementNSPlus("gml:patches");this.writeNode("PolygonPatch",a,b);return b},PolygonPatch:function(a){var b=this.createElementNSPlus("gml:PolygonPatch",{attributes:{interpolation:"planar"}});this.writeNode("exterior",a.components[0],b);for(var c=1,d=a.components.length;c<d;++c)this.writeNode("interior",a.components[c],b);return b},Polygon:function(a){var b=this.createElementNSPlus("gml:Polygon");this.writeNode("exterior",a.components[0],
b);for(var c=1,d=a.components.length;c<d;++c)this.writeNode("interior",a.components[c],b);return b},exterior:function(a){var b=this.createElementNSPlus("gml:exterior");this.writeNode("LinearRing",a,b);return b},interior:function(a){var b=this.createElementNSPlus("gml:interior");this.writeNode("LinearRing",a,b);return b},LinearRing:function(a){var b=this.createElementNSPlus("gml:LinearRing");this.writeNode("posList",a.components,b);return b},MultiCurve:function(a){var b=this.createElementNSPlus("gml:MultiCurve");
a=a.components||[a];for(var c=0,d=a.length;c<d;++c)this.writeNode("curveMember",a[c],b);return b},curveMember:function(a){var b=this.createElementNSPlus("gml:curveMember");this.curve?this.writeNode("Curve",a,b):this.writeNode("LineString",a,b);return b},MultiSurface:function(a){var b=this.createElementNSPlus("gml:MultiSurface");a=a.components||[a];for(var c=0,d=a.length;c<d;++c)this.writeNode("surfaceMember",a[c],b);return b},surfaceMember:function(a){var b=this.createElementNSPlus("gml:surfaceMember");
this.surface?this.writeNode("Surface",a,b):this.writeNode("Polygon",a,b);return b},Envelope:function(a){var b=this.createElementNSPlus("gml:Envelope");this.writeNode("lowerCorner",a,b);this.writeNode("upperCorner",a,b);this.srsName&&b.setAttribute("srsName",this.srsName);return b},lowerCorner:function(a){return this.createElementNSPlus("gml:lowerCorner",{value:this.xy?a.left+" "+a.bottom:a.bottom+" "+a.left})},upperCorner:function(a){return this.createElementNSPlus("gml:upperCorner",{value:this.xy?
a.right+" "+a.top:a.top+" "+a.right})}},OpenLayers.Format.GML.Base.prototype.writers.gml),feature:OpenLayers.Format.GML.Base.prototype.writers.feature,wfs:OpenLayers.Format.GML.Base.prototype.writers.wfs},setGeometryTypes:function(){this.geometryTypes={"OpenLayers.Geometry.Point":"Point","OpenLayers.Geometry.MultiPoint":"MultiPoint","OpenLayers.Geometry.LineString":!0===this.curve?"Curve":"LineString","OpenLayers.Geometry.MultiLineString":!1===this.multiCurve?"MultiLineString":"MultiCurve","OpenLayers.Geometry.Polygon":!0===
this.surface?"Surface":"Polygon","OpenLayers.Geometry.MultiPolygon":!1===this.multiSurface?"MultiPolygon":"MultiSurface","OpenLayers.Geometry.Collection":"GeometryCollection"}},CLASS_NAME:"OpenLayers.Format.GML.v3"});OpenLayers.Format.Filter.v1_1_0=OpenLayers.Class(OpenLayers.Format.GML.v3,OpenLayers.Format.Filter.v1,{VERSION:"1.1.0",schemaLocation:"http://www.opengis.net/ogc/filter/1.1.0/filter.xsd",initialize:function(a){OpenLayers.Format.GML.v3.prototype.initialize.apply(this,[a])},readers:{ogc:OpenLayers.Util.applyDefaults({PropertyIsEqualTo:function(a,b){var c=a.getAttribute("matchCase"),c=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.EQUAL_TO,matchCase:!("false"===c||"0"===c)});this.readChildNodes(a,
c);b.filters.push(c)},PropertyIsNotEqualTo:function(a,b){var c=a.getAttribute("matchCase"),c=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.NOT_EQUAL_TO,matchCase:!("false"===c||"0"===c)});this.readChildNodes(a,c);b.filters.push(c)},PropertyIsLike:function(a,b){var c=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.LIKE});this.readChildNodes(a,c);var d=a.getAttribute("wildCard"),e=a.getAttribute("singleChar"),f=a.getAttribute("escapeChar");c.value2regex(d,e,
f);b.filters.push(c)}},OpenLayers.Format.Filter.v1.prototype.readers.ogc),gml:OpenLayers.Format.GML.v3.prototype.readers.gml,feature:OpenLayers.Format.GML.v3.prototype.readers.feature},writers:{ogc:OpenLayers.Util.applyDefaults({PropertyIsEqualTo:function(a){var b=this.createElementNSPlus("ogc:PropertyIsEqualTo",{attributes:{matchCase:a.matchCase}});this.writeNode("PropertyName",a,b);this.writeOgcExpression(a.value,b);return b},PropertyIsNotEqualTo:function(a){var b=this.createElementNSPlus("ogc:PropertyIsNotEqualTo",
{attributes:{matchCase:a.matchCase}});this.writeNode("PropertyName",a,b);this.writeOgcExpression(a.value,b);return b},PropertyIsLike:function(a){var b=this.createElementNSPlus("ogc:PropertyIsLike",{attributes:{matchCase:a.matchCase,wildCard:"*",singleChar:".",escapeChar:"!"}});this.writeNode("PropertyName",a,b);this.writeNode("Literal",a.regex2value(),b);return b},BBOX:function(a){var b=this.createElementNSPlus("ogc:BBOX");a.property&&this.writeNode("PropertyName",a,b);var c=this.writeNode("gml:Envelope",
a.value);a.projection&&c.setAttribute("srsName",a.projection);b.appendChild(c);return b},SortBy:function(a){for(var b=this.createElementNSPlus("ogc:SortBy"),c=0,d=a.length;c<d;c++)this.writeNode("ogc:SortProperty",a[c],b);return b},SortProperty:function(a){var b=this.createElementNSPlus("ogc:SortProperty");this.writeNode("ogc:PropertyName",a,b);this.writeNode("ogc:SortOrder","DESC"==a.order?"DESC":"ASC",b);return b},SortOrder:function(a){return this.createElementNSPlus("ogc:SortOrder",{value:a})}},
OpenLayers.Format.Filter.v1.prototype.writers.ogc),gml:OpenLayers.Format.GML.v3.prototype.writers.gml,feature:OpenLayers.Format.GML.v3.prototype.writers.feature},writeSpatial:function(a,b){var c=this.createElementNSPlus("ogc:"+b);this.writeNode("PropertyName",a,c);if(a.value instanceof OpenLayers.Filter.Function)this.writeNode("Function",a.value,c);else{var d;d=a.value instanceof OpenLayers.Geometry?this.writeNode("feature:_geometry",a.value).firstChild:this.writeNode("gml:Envelope",a.value);a.projection&&
d.setAttribute("srsName",a.projection);c.appendChild(d)}return c},CLASS_NAME:"OpenLayers.Format.Filter.v1_1_0"});OpenLayers.Format.OWSCommon=OpenLayers.Class(OpenLayers.Format.XML.VersionedOGC,{defaultVersion:"1.0.0",getVersion:function(a,b){var c=this.version;if(!c){var d=a.getAttribute("xmlns:ows");d&&"1.1"===d.substring(d.lastIndexOf("/")+1)&&(c="1.1.0");c||(c=this.defaultVersion)}return c},CLASS_NAME:"OpenLayers.Format.OWSCommon"});OpenLayers.Format.OWSCommon.v1=OpenLayers.Class(OpenLayers.Format.XML,{regExes:{trimSpace:/^\s*|\s*$/g,removeSpace:/\s*/g,splitSpace:/\s+/,trimComma:/\s*,\s*/g},read:function(a,b){OpenLayers.Util.applyDefaults(b,this.options);var c={};this.readChildNodes(a,c);return c},readers:{ows:{Exception:function(a,b){var c={code:a.getAttribute("exceptionCode"),locator:a.getAttribute("locator"),texts:[]};b.exceptions.push(c);this.readChildNodes(a,c)},ExceptionText:function(a,b){var c=this.getChildValue(a);b.texts.push(c)},
ServiceIdentification:function(a,b){b.serviceIdentification={};this.readChildNodes(a,b.serviceIdentification)},Title:function(a,b){b.title=this.getChildValue(a)},Abstract:function(a,b){b["abstract"]=this.getChildValue(a)},Keywords:function(a,b){b.keywords={};this.readChildNodes(a,b.keywords)},Keyword:function(a,b){b[this.getChildValue(a)]=!0},ServiceType:function(a,b){b.serviceType={codeSpace:a.getAttribute("codeSpace"),value:this.getChildValue(a)}},ServiceTypeVersion:function(a,b){b.serviceTypeVersion=
this.getChildValue(a)},Fees:function(a,b){b.fees=this.getChildValue(a)},AccessConstraints:function(a,b){b.accessConstraints=this.getChildValue(a)},ServiceProvider:function(a,b){b.serviceProvider={};this.readChildNodes(a,b.serviceProvider)},ProviderName:function(a,b){b.providerName=this.getChildValue(a)},ProviderSite:function(a,b){b.providerSite=this.getAttributeNS(a,this.namespaces.xlink,"href")},ServiceContact:function(a,b){b.serviceContact={};this.readChildNodes(a,b.serviceContact)},IndividualName:function(a,
b){b.individualName=this.getChildValue(a)},PositionName:function(a,b){b.positionName=this.getChildValue(a)},ContactInfo:function(a,b){b.contactInfo={};this.readChildNodes(a,b.contactInfo)},Phone:function(a,b){b.phone={};this.readChildNodes(a,b.phone)},Voice:function(a,b){b.voice=this.getChildValue(a)},Address:function(a,b){b.address={};this.readChildNodes(a,b.address)},DeliveryPoint:function(a,b){b.deliveryPoint=this.getChildValue(a)},City:function(a,b){b.city=this.getChildValue(a)},AdministrativeArea:function(a,
b){b.administrativeArea=this.getChildValue(a)},PostalCode:function(a,b){b.postalCode=this.getChildValue(a)},Country:function(a,b){b.country=this.getChildValue(a)},ElectronicMailAddress:function(a,b){b.electronicMailAddress=this.getChildValue(a)},Role:function(a,b){b.role=this.getChildValue(a)},OperationsMetadata:function(a,b){b.operationsMetadata={};this.readChildNodes(a,b.operationsMetadata)},Operation:function(a,b){var c=a.getAttribute("name");b[c]={};this.readChildNodes(a,b[c])},DCP:function(a,
b){b.dcp={};this.readChildNodes(a,b.dcp)},HTTP:function(a,b){b.http={};this.readChildNodes(a,b.http)},Get:function(a,b){b.get||(b.get=[]);var c={url:this.getAttributeNS(a,this.namespaces.xlink,"href")};this.readChildNodes(a,c);b.get.push(c)},Post:function(a,b){b.post||(b.post=[]);var c={url:this.getAttributeNS(a,this.namespaces.xlink,"href")};this.readChildNodes(a,c);b.post.push(c)},Parameter:function(a,b){b.parameters||(b.parameters={});var c=a.getAttribute("name");b.parameters[c]={};this.readChildNodes(a,
b.parameters[c])},Constraint:function(a,b){b.constraints||(b.constraints={});var c=a.getAttribute("name");b.constraints[c]={};this.readChildNodes(a,b.constraints[c])},Value:function(a,b){b[this.getChildValue(a)]=!0},OutputFormat:function(a,b){b.formats.push({value:this.getChildValue(a)});this.readChildNodes(a,b)},WGS84BoundingBox:function(a,b){var c={};c.crs=a.getAttribute("crs");b.BoundingBox?b.BoundingBox.push(c):(b.projection=c.crs,c=b);this.readChildNodes(a,c)},BoundingBox:function(a,b){this.readers.ows.WGS84BoundingBox.apply(this,
[a,b])},LowerCorner:function(a,b){var c=this.getChildValue(a).replace(this.regExes.trimSpace,""),c=c.replace(this.regExes.trimComma,","),c=c.split(this.regExes.splitSpace);b.left=c[0];b.bottom=c[1]},UpperCorner:function(a,b){var c=this.getChildValue(a).replace(this.regExes.trimSpace,""),c=c.replace(this.regExes.trimComma,","),c=c.split(this.regExes.splitSpace);b.right=c[0];b.top=c[1];b.bounds=new OpenLayers.Bounds(b.left,b.bottom,b.right,b.top);delete b.left;delete b.bottom;delete b.right;delete b.top},
Language:function(a,b){b.language=this.getChildValue(a)}}},writers:{ows:{BoundingBox:function(a,b){var c=this.createElementNSPlus(b||"ows:BoundingBox",{attributes:{crs:a.projection}});this.writeNode("ows:LowerCorner",a,c);this.writeNode("ows:UpperCorner",a,c);return c},LowerCorner:function(a){return this.createElementNSPlus("ows:LowerCorner",{value:a.bounds.left+" "+a.bounds.bottom})},UpperCorner:function(a){return this.createElementNSPlus("ows:UpperCorner",{value:a.bounds.right+" "+a.bounds.top})},
Identifier:function(a){return this.createElementNSPlus("ows:Identifier",{value:a})},Title:function(a){return this.createElementNSPlus("ows:Title",{value:a})},Abstract:function(a){return this.createElementNSPlus("ows:Abstract",{value:a})},OutputFormat:function(a){return this.createElementNSPlus("ows:OutputFormat",{value:a})}}},CLASS_NAME:"OpenLayers.Format.OWSCommon.v1"});OpenLayers.Format.OWSCommon.v1_0_0=OpenLayers.Class(OpenLayers.Format.OWSCommon.v1,{namespaces:{ows:"http://www.opengis.net/ows",xlink:"http://www.w3.org/1999/xlink"},readers:{ows:OpenLayers.Util.applyDefaults({ExceptionReport:function(a,b){b.success=!1;b.exceptionReport={version:a.getAttribute("version"),language:a.getAttribute("language"),exceptions:[]};this.readChildNodes(a,b.exceptionReport)}},OpenLayers.Format.OWSCommon.v1.prototype.readers.ows)},writers:{ows:OpenLayers.Format.OWSCommon.v1.prototype.writers.ows},
CLASS_NAME:"OpenLayers.Format.OWSCommon.v1_0_0"});OpenLayers.Format.WFST.v1_1_0=OpenLayers.Class(OpenLayers.Format.Filter.v1_1_0,OpenLayers.Format.WFST.v1,{version:"1.1.0",schemaLocations:{wfs:"http://schemas.opengis.net/wfs/1.1.0/wfs.xsd"},initialize:function(a){OpenLayers.Format.Filter.v1_1_0.prototype.initialize.apply(this,[a]);OpenLayers.Format.WFST.v1.prototype.initialize.apply(this,[a])},readNode:function(a,b,c){return OpenLayers.Format.GML.v3.prototype.readNode.apply(this,arguments)},readers:{wfs:OpenLayers.Util.applyDefaults({FeatureCollection:function(a,
b){b.numberOfFeatures=parseInt(a.getAttribute("numberOfFeatures"));OpenLayers.Format.WFST.v1.prototype.readers.wfs.FeatureCollection.apply(this,arguments)},TransactionResponse:function(a,b){b.insertIds=[];b.success=!1;this.readChildNodes(a,b)},TransactionSummary:function(a,b){b.success=!0},InsertResults:function(a,b){this.readChildNodes(a,b)},Feature:function(a,b){var c={fids:[]};this.readChildNodes(a,c);b.insertIds.push(c.fids[0])}},OpenLayers.Format.WFST.v1.prototype.readers.wfs),gml:OpenLayers.Format.GML.v3.prototype.readers.gml,
feature:OpenLayers.Format.GML.v3.prototype.readers.feature,ogc:OpenLayers.Format.Filter.v1_1_0.prototype.readers.ogc,ows:OpenLayers.Format.OWSCommon.v1_0_0.prototype.readers.ows},writers:{wfs:OpenLayers.Util.applyDefaults({GetFeature:function(a){var b=OpenLayers.Format.WFST.v1.prototype.writers.wfs.GetFeature.apply(this,arguments);a&&this.setAttributes(b,{resultType:a.resultType,startIndex:a.startIndex,count:a.count});return b},Query:function(a){a=OpenLayers.Util.extend({featureNS:this.featureNS,
featurePrefix:this.featurePrefix,featureType:this.featureType,srsName:this.srsName},a);var b=a.featurePrefix,c=this.createElementNSPlus("wfs:Query",{attributes:{typeName:(b?b+":":"")+a.featureType,srsName:a.srsName}});a.featureNS&&c.setAttribute("xmlns:"+b,a.featureNS);if(a.propertyNames)for(var b=0,d=a.propertyNames.length;b<d;b++)this.writeNode("wfs:PropertyName",{property:a.propertyNames[b]},c);a.filter&&(OpenLayers.Format.WFST.v1_1_0.prototype.setFilterProperty.call(this,a.filter),this.writeNode("ogc:Filter",
a.filter,c));return c},PropertyName:function(a){return this.createElementNSPlus("wfs:PropertyName",{value:a.property})}},OpenLayers.Format.WFST.v1.prototype.writers.wfs),gml:OpenLayers.Format.GML.v3.prototype.writers.gml,feature:OpenLayers.Format.GML.v3.prototype.writers.feature,ogc:OpenLayers.Format.Filter.v1_1_0.prototype.writers.ogc},CLASS_NAME:"OpenLayers.Format.WFST.v1_1_0"});OpenLayers.Protocol=OpenLayers.Class({format:null,options:null,autoDestroy:!0,defaultFilter:null,initialize:function(a){a=a||{};OpenLayers.Util.extend(this,a);this.options=a},mergeWithDefaultFilter:function(a){return a&&this.defaultFilter?new OpenLayers.Filter.Logical({type:OpenLayers.Filter.Logical.AND,filters:[this.defaultFilter,a]}):a||this.defaultFilter||void 0},destroy:function(){this.format=this.options=null},read:function(a){a=a||{};a.filter=this.mergeWithDefaultFilter(a.filter)},create:function(){},
update:function(){},"delete":function(){},commit:function(){},abort:function(a){},createCallback:function(a,b,c){return OpenLayers.Function.bind(function(){a.apply(this,[b,c])},this)},CLASS_NAME:"OpenLayers.Protocol"});OpenLayers.Protocol.Response=OpenLayers.Class({code:null,requestType:null,last:!0,features:null,data:null,reqFeatures:null,priv:null,error:null,initialize:function(a){OpenLayers.Util.extend(this,a)},success:function(){return 0<this.code},CLASS_NAME:"OpenLayers.Protocol.Response"});
OpenLayers.Protocol.Response.SUCCESS=1;OpenLayers.Protocol.Response.FAILURE=0;OpenLayers.Format.JSON=OpenLayers.Class(OpenLayers.Format,{indent:"    ",space:" ",newline:"\n",level:0,pretty:!1,nativeJSON:function(){return!(!window.JSON||"function"!=typeof JSON.parse||"function"!=typeof JSON.stringify)}(),read:function(a,b){var c;if(this.nativeJSON)c=JSON.parse(a,b);else try{if(/^[\],:{}\s]*$/.test(a.replace(/\\["\\\/bfnrtu]/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,""))&&(c=eval("("+a+")"),"function"===
typeof b)){var d=function(a,c){if(c&&"object"===typeof c)for(var e in c)c.hasOwnProperty(e)&&(c[e]=d(e,c[e]));return b(a,c)};c=d("",c)}}catch(e){}this.keepData&&(this.data=c);return c},write:function(a,b){this.pretty=!!b;var c=null,d=typeof a;if(this.serialize[d])try{c=!this.pretty&&this.nativeJSON?JSON.stringify(a):this.serialize[d].apply(this,[a])}catch(e){OpenLayers.Console.error("Trouble serializing: "+e)}return c},writeIndent:function(){var a=[];if(this.pretty)for(var b=0;b<this.level;++b)a.push(this.indent);
return a.join("")},writeNewline:function(){return this.pretty?this.newline:""},writeSpace:function(){return this.pretty?this.space:""},serialize:{object:function(a){if(null==a)return"null";if(a.constructor==Date)return this.serialize.date.apply(this,[a]);if(a.constructor==Array)return this.serialize.array.apply(this,[a]);var b=["{"];this.level+=1;var c,d,e,f=!1;for(c in a)a.hasOwnProperty(c)&&(d=OpenLayers.Format.JSON.prototype.write.apply(this,[c,this.pretty]),e=OpenLayers.Format.JSON.prototype.write.apply(this,
[a[c],this.pretty]),null!=d&&null!=e&&(f&&b.push(","),b.push(this.writeNewline(),this.writeIndent(),d,":",this.writeSpace(),e),f=!0));this.level-=1;b.push(this.writeNewline(),this.writeIndent(),"}");return b.join("")},array:function(a){var b,c=["["];this.level+=1;for(var d=0,e=a.length;d<e;++d)b=OpenLayers.Format.JSON.prototype.write.apply(this,[a[d],this.pretty]),null!=b&&(0<d&&c.push(","),c.push(this.writeNewline(),this.writeIndent(),b));this.level-=1;c.push(this.writeNewline(),this.writeIndent(),
"]");return c.join("")},string:function(a){var b={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"};return/["\\\x00-\x1f]/.test(a)?'"'+a.replace(/([\x00-\x1f\\"])/g,function(a,d){var e=b[d];if(e)return e;e=d.charCodeAt();return"\\u00"+Math.floor(e/16).toString(16)+(e%16).toString(16)})+'"':'"'+a+'"'},number:function(a){return isFinite(a)?String(a):"null"},"boolean":function(a){return String(a)},date:function(a){function b(a){return 10>a?"0"+a:a}return'"'+a.getFullYear()+
"-"+b(a.getMonth()+1)+"-"+b(a.getDate())+"T"+b(a.getHours())+":"+b(a.getMinutes())+":"+b(a.getSeconds())+'"'}},CLASS_NAME:"OpenLayers.Format.JSON"});OpenLayers.Format.GeoJSON=OpenLayers.Class(OpenLayers.Format.JSON,{ignoreExtraDims:!1,read:function(a,b,c){b=b?b:"FeatureCollection";var d=null,e=null,e="string"==typeof a?OpenLayers.Format.JSON.prototype.read.apply(this,[a,c]):a;if(!e)OpenLayers.Console.error("Bad JSON: "+a);else if("string"!=typeof e.type)OpenLayers.Console.error("Bad GeoJSON - no type: "+a);else if(this.isValidType(e,b))switch(b){case "Geometry":try{d=this.parseGeometry(e)}catch(f){OpenLayers.Console.error(f)}break;case "Feature":try{d=
this.parseFeature(e),d.type="Feature"}catch(g){OpenLayers.Console.error(g)}break;case "FeatureCollection":switch(d=[],e.type){case "Feature":try{d.push(this.parseFeature(e))}catch(h){d=null,OpenLayers.Console.error(h)}break;case "FeatureCollection":a=0;for(b=e.features.length;a<b;++a)try{d.push(this.parseFeature(e.features[a]))}catch(k){d=null,OpenLayers.Console.error(k)}break;default:try{var l=this.parseGeometry(e);d.push(new OpenLayers.Feature.Vector(l))}catch(m){d=null,OpenLayers.Console.error(m)}}}return d},
isValidType:function(a,b){var c=!1;switch(b){case "Geometry":-1==OpenLayers.Util.indexOf("Point MultiPoint LineString MultiLineString Polygon MultiPolygon Box GeometryCollection".split(" "),a.type)?OpenLayers.Console.error("Unsupported geometry type: "+a.type):c=!0;break;case "FeatureCollection":c=!0;break;default:a.type==b?c=!0:OpenLayers.Console.error("Cannot convert types from "+a.type+" to "+b)}return c},parseFeature:function(a){var b,c,d;c=a.properties?a.properties:{};d=a.geometry&&a.geometry.bbox||
a.bbox;try{b=this.parseGeometry(a.geometry)}catch(e){throw e;}b=new OpenLayers.Feature.Vector(b,c);d&&(b.bounds=OpenLayers.Bounds.fromArray(d));a.id&&(b.fid=a.id);return b},parseGeometry:function(a){if(null==a)return null;var b,c=!1;if("GeometryCollection"==a.type){if(!OpenLayers.Util.isArray(a.geometries))throw"GeometryCollection must have geometries array: "+a;b=a.geometries.length;for(var c=Array(b),d=0;d<b;++d)c[d]=this.parseGeometry.apply(this,[a.geometries[d]]);b=new OpenLayers.Geometry.Collection(c);
c=!0}else{if(!OpenLayers.Util.isArray(a.coordinates))throw"Geometry must have coordinates array: "+a;if(!this.parseCoords[a.type.toLowerCase()])throw"Unsupported geometry type: "+a.type;try{b=this.parseCoords[a.type.toLowerCase()].apply(this,[a.coordinates])}catch(e){throw e;}}this.internalProjection&&(this.externalProjection&&!c)&&b.transform(this.externalProjection,this.internalProjection);return b},parseCoords:{point:function(a){if(!1==this.ignoreExtraDims&&2!=a.length)throw"Only 2D points are supported: "+
a;return new OpenLayers.Geometry.Point(a[0],a[1])},multipoint:function(a){for(var b=[],c=null,d=0,e=a.length;d<e;++d){try{c=this.parseCoords.point.apply(this,[a[d]])}catch(f){throw f;}b.push(c)}return new OpenLayers.Geometry.MultiPoint(b)},linestring:function(a){for(var b=[],c=null,d=0,e=a.length;d<e;++d){try{c=this.parseCoords.point.apply(this,[a[d]])}catch(f){throw f;}b.push(c)}return new OpenLayers.Geometry.LineString(b)},multilinestring:function(a){for(var b=[],c=null,d=0,e=a.length;d<e;++d){try{c=
this.parseCoords.linestring.apply(this,[a[d]])}catch(f){throw f;}b.push(c)}return new OpenLayers.Geometry.MultiLineString(b)},polygon:function(a){for(var b=[],c,d,e=0,f=a.length;e<f;++e){try{d=this.parseCoords.linestring.apply(this,[a[e]])}catch(g){throw g;}c=new OpenLayers.Geometry.LinearRing(d.components);b.push(c)}return new OpenLayers.Geometry.Polygon(b)},multipolygon:function(a){for(var b=[],c=null,d=0,e=a.length;d<e;++d){try{c=this.parseCoords.polygon.apply(this,[a[d]])}catch(f){throw f;}b.push(c)}return new OpenLayers.Geometry.MultiPolygon(b)},
box:function(a){if(2!=a.length)throw"GeoJSON box coordinates must have 2 elements";return new OpenLayers.Geometry.Polygon([new OpenLayers.Geometry.LinearRing([new OpenLayers.Geometry.Point(a[0][0],a[0][1]),new OpenLayers.Geometry.Point(a[1][0],a[0][1]),new OpenLayers.Geometry.Point(a[1][0],a[1][1]),new OpenLayers.Geometry.Point(a[0][0],a[1][1]),new OpenLayers.Geometry.Point(a[0][0],a[0][1])])])}},write:function(a,b){var c={type:null};if(OpenLayers.Util.isArray(a)){c.type="FeatureCollection";var d=
a.length;c.features=Array(d);for(var e=0;e<d;++e){var f=a[e];if(!f instanceof OpenLayers.Feature.Vector)throw"FeatureCollection only supports collections of features: "+f;c.features[e]=this.extract.feature.apply(this,[f])}}else 0==a.CLASS_NAME.indexOf("OpenLayers.Geometry")?c=this.extract.geometry.apply(this,[a]):a instanceof OpenLayers.Feature.Vector&&(c=this.extract.feature.apply(this,[a]),a.layer&&a.layer.projection&&(c.crs=this.createCRSObject(a)));return OpenLayers.Format.JSON.prototype.write.apply(this,
[c,b])},createCRSObject:function(a){a=a.layer.projection.toString();var b={};a.match(/epsg:/i)&&(a=parseInt(a.substring(a.indexOf(":")+1)),b=4326==a?{type:"name",properties:{name:"urn:ogc:def:crs:OGC:1.3:CRS84"}}:{type:"name",properties:{name:"EPSG:"+a}});return b},extract:{feature:function(a){var b=this.extract.geometry.apply(this,[a.geometry]),b={type:"Feature",properties:a.attributes,geometry:b};null!=a.fid&&(b.id=a.fid);return b},geometry:function(a){if(null==a)return null;this.internalProjection&&
this.externalProjection&&(a=a.clone(),a.transform(this.internalProjection,this.externalProjection));var b=a.CLASS_NAME.split(".")[2];a=this.extract[b.toLowerCase()].apply(this,[a]);return"Collection"==b?{type:"GeometryCollection",geometries:a}:{type:b,coordinates:a}},point:function(a){return[a.x,a.y]},multipoint:function(a){for(var b=[],c=0,d=a.components.length;c<d;++c)b.push(this.extract.point.apply(this,[a.components[c]]));return b},linestring:function(a){for(var b=[],c=0,d=a.components.length;c<
d;++c)b.push(this.extract.point.apply(this,[a.components[c]]));return b},multilinestring:function(a){for(var b=[],c=0,d=a.components.length;c<d;++c)b.push(this.extract.linestring.apply(this,[a.components[c]]));return b},polygon:function(a){for(var b=[],c=0,d=a.components.length;c<d;++c)b.push(this.extract.linestring.apply(this,[a.components[c]]));return b},multipolygon:function(a){for(var b=[],c=0,d=a.components.length;c<d;++c)b.push(this.extract.polygon.apply(this,[a.components[c]]));return b},collection:function(a){for(var b=
a.components.length,c=Array(b),d=0;d<b;++d)c[d]=this.extract.geometry.apply(this,[a.components[d]]);return c}},CLASS_NAME:"OpenLayers.Format.GeoJSON"});OpenLayers.Protocol.Script=OpenLayers.Class(OpenLayers.Protocol,{url:null,params:null,callback:null,callbackTemplate:"OpenLayers.Protocol.Script.registry.${id}",callbackKey:"callback",callbackPrefix:"",scope:null,format:null,pendingRequests:null,srsInBBOX:!1,initialize:function(a){a=a||{};this.params={};this.pendingRequests={};OpenLayers.Protocol.prototype.initialize.apply(this,arguments);this.format||(this.format=new OpenLayers.Format.GeoJSON);if(!this.filterToParams&&OpenLayers.Format.QueryStringFilter){var b=
new OpenLayers.Format.QueryStringFilter({srsInBBOX:this.srsInBBOX});this.filterToParams=function(a,d){return b.write(a,d)}}},read:function(a){OpenLayers.Protocol.prototype.read.apply(this,arguments);a=OpenLayers.Util.applyDefaults(a,this.options);a.params=OpenLayers.Util.applyDefaults(a.params,this.options.params);a.filter&&this.filterToParams&&(a.params=this.filterToParams(a.filter,a.params));var b=new OpenLayers.Protocol.Response({requestType:"read"}),c=this.createRequest(a.url,a.params,OpenLayers.Function.bind(function(c){b.data=
c;this.handleRead(b,a)},this));b.priv=c;return b},createRequest:function(a,b,c){c=OpenLayers.Protocol.Script.register(c);var d=OpenLayers.String.format(this.callbackTemplate,{id:c});b=OpenLayers.Util.extend({},b);b[this.callbackKey]=this.callbackPrefix+d;a=OpenLayers.Util.urlAppend(a,OpenLayers.Util.getParameterString(b));b=document.createElement("script");b.type="text/javascript";b.src=a;b.id="OpenLayers_Protocol_Script_"+c;this.pendingRequests[b.id]=b;document.getElementsByTagName("head")[0].appendChild(b);
return b},destroyRequest:function(a){OpenLayers.Protocol.Script.unregister(a.id.split("_").pop());delete this.pendingRequests[a.id];a.parentNode&&a.parentNode.removeChild(a)},handleRead:function(a,b){this.handleResponse(a,b)},handleResponse:function(a,b){b.callback&&(a.data?(a.features=this.parseFeatures(a.data),a.code=OpenLayers.Protocol.Response.SUCCESS):a.code=OpenLayers.Protocol.Response.FAILURE,this.destroyRequest(a.priv),b.callback.call(b.scope,a))},parseFeatures:function(a){return this.format.read(a)},
abort:function(a){if(a)this.destroyRequest(a.priv);else for(var b in this.pendingRequests)this.destroyRequest(this.pendingRequests[b])},destroy:function(){this.abort();delete this.params;delete this.format;OpenLayers.Protocol.prototype.destroy.apply(this)},CLASS_NAME:"OpenLayers.Protocol.Script"});(function(){var a=OpenLayers.Protocol.Script,b=0;a.registry={};a.register=function(c){var d="c"+ ++b;a.registry[d]=function(){c.apply(this,arguments)};return d};a.unregister=function(b){delete a.registry[b]}})();OpenLayers.Format.EncodedPolyline=OpenLayers.Class(OpenLayers.Format,{geometryType:"linestring",initialize:function(a){OpenLayers.Format.prototype.initialize.apply(this,[a])},read:function(a){var b;if("linestring"==this.geometryType)b=OpenLayers.Geometry.LineString;else if("linearring"==this.geometryType)b=OpenLayers.Geometry.LinearRing;else if("multipoint"==this.geometryType)b=OpenLayers.Geometry.MultiPoint;else if("point"!=this.geometryType&&"polygon"!=this.geometryType)return null;a=this.decodeDeltas(a,
2);for(var c=a.length,d=[],e=0;e+1<c;){var f=a[e++],g=a[e++];d.push(new OpenLayers.Geometry.Point(g,f))}return"point"==this.geometryType?new OpenLayers.Feature.Vector(d[0]):"polygon"==this.geometryType?new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Polygon([new OpenLayers.Geometry.LinearRing(d)])):new OpenLayers.Feature.Vector(new b(d))},decode:function(a,b,c){a=this.decodeDeltas(a,b,c||1E5);c=a.length;for(var d=[],e=0;e+(b-1)<c;){for(var f=[],g=0;g<b;++g)f.push(a[e++]);d.push(f)}return d},
write:function(a){a=(a.constructor==Array?a[0]:a).geometry;var b=a.CLASS_NAME.split(".")[2].toLowerCase();if("point"==b)a=Array(a);else if("linestring"==b||"linearring"==b||"multipoint"==b)a=a.components;else if("polygon"==b)a=a.components[0].components;else return null;for(var b=[],c=a.length,d=0;d<c;++d){var e=a[d];b.push(e.y);b.push(e.x)}return this.encodeDeltas(b,2)},encode:function(a,b,c){c=c||1E5;for(var d=[],e=a.length,f=0;f<e;++f)for(var g=a[f],h=0;h<b;++h)d.push(g[h]);return this.encodeDeltas(d,
b,c)},encodeDeltas:function(a,b,c){var d,e=Array(b);for(d=0;d<b;++d)e[d]=0;for(var f=a.length,g=0;g<f;)for(d=0;d<b;++d,++g){var h=a[g],k=h-e[d];e[d]=h;a[g]=k}return this.encodeFloats(a,c||1E5)},decodeDeltas:function(a,b,c){var d,e=Array(b);for(d=0;d<b;++d)e[d]=0;a=this.decodeFloats(a,c||1E5);c=a.length;for(var f=0;f<c;)for(d=0;d<b;++d,++f)e[d]+=a[f],a[f]=e[d];return a},encodeFloats:function(a,b){for(var c=b||1E5,d=a.length,e=0;e<d;++e)a[e]=Math.round(a[e]*c);return this.encodeSignedIntegers(a)},decodeFloats:function(a,
b){for(var c=b||1E5,d=this.decodeSignedIntegers(a),e=d.length,f=0;f<e;++f)d[f]/=c;return d},encodeSignedIntegers:function(a){for(var b=a.length,c=0;c<b;++c){var d=a[c],e=d<<1;0>d&&(e=~e);a[c]=e}return this.encodeUnsignedIntegers(a)},decodeSignedIntegers:function(a){a=this.decodeUnsignedIntegers(a);for(var b=a.length,c=0;c<b;++c){var d=a[c];a[c]=d&1?~(d>>1):d>>1}return a},encodeUnsignedIntegers:function(a){for(var b="",c=a.length,d=0;d<c;++d)b+=this.encodeUnsignedInteger(a[d]);return b},decodeUnsignedIntegers:function(a){for(var b=
[],c=0,d=0,e=a.length,f=0;f<e;++f){var g=a.charCodeAt(f)-63,c=c|(g&31)<<d;32>g?(b.push(c),d=c=0):d+=5}return b},encodeFloat:function(a,b){a=Math.round(a*(b||1E5));return this.encodeSignedInteger(a)},decodeFloat:function(a,b){return this.decodeSignedInteger(a)/(b||1E5)},encodeSignedInteger:function(a){var b=a<<1;0>a&&(b=~b);return this.encodeUnsignedInteger(b)},decodeSignedInteger:function(a){a=this.decodeUnsignedInteger(a);return a&1?~(a>>1):a>>1},encodeUnsignedInteger:function(a){for(var b,c="";32<=
a;)b=(32|a&31)+63,c+=String.fromCharCode(b),a>>=5;return c+=String.fromCharCode(a+63)},decodeUnsignedInteger:function(a){for(var b=0,c=0,d=a.length,e=0;e<d;++e){var f=a.charCodeAt(e)-63,b=b|(f&31)<<c;if(32>f)break;c+=5}return b},CLASS_NAME:"OpenLayers.Format.EncodedPolyline"});OpenLayers.Control.Panel=OpenLayers.Class(OpenLayers.Control,{controls:null,autoActivate:!0,defaultControl:null,saveState:!1,allowDepress:!1,activeState:null,initialize:function(a){OpenLayers.Control.prototype.initialize.apply(this,[a]);this.controls=[];this.activeState={}},destroy:function(){this.map&&this.map.events.unregister("buttonclick",this,this.onButtonClick);OpenLayers.Control.prototype.destroy.apply(this,arguments);for(var a,b=this.controls.length-1;0<=b;b--)a=this.controls[b],a.events&&
a.events.un({activate:this.iconOn,deactivate:this.iconOff}),a.panel_div=null;this.activeState=null},activate:function(){if(OpenLayers.Control.prototype.activate.apply(this,arguments)){for(var a,b=0,c=this.controls.length;b<c;b++)a=this.controls[b],(a===this.defaultControl||this.saveState&&this.activeState[a.id])&&a.activate();!0===this.saveState&&(this.defaultControl=null);this.redraw();return!0}return!1},deactivate:function(){if(OpenLayers.Control.prototype.deactivate.apply(this,arguments)){for(var a,
b=0,c=this.controls.length;b<c;b++)a=this.controls[b],this.activeState[a.id]=a.deactivate();this.redraw();return!0}return!1},draw:function(){OpenLayers.Control.prototype.draw.apply(this,arguments);this.outsideViewport?(this.events.attachToElement(this.div),this.events.register("buttonclick",this,this.onButtonClick)):this.map.events.register("buttonclick",this,this.onButtonClick);this.addControlsToMap(this.controls);return this.div},redraw:function(){for(var a=this.div.childNodes.length-1;0<=a;a--)this.div.removeChild(this.div.childNodes[a]);
this.div.innerHTML="";if(this.active)for(var a=0,b=this.controls.length;a<b;a++)this.div.appendChild(this.controls[a].panel_div)},activateControl:function(a){if(!this.active)return!1;if(a.type==OpenLayers.Control.TYPE_BUTTON)a.trigger();else if(a.type==OpenLayers.Control.TYPE_TOGGLE)a.active?a.deactivate():a.activate();else if(this.allowDepress&&a.active)a.deactivate();else{for(var b,c=0,d=this.controls.length;c<d;c++)b=this.controls[c],b==a||b.type!==OpenLayers.Control.TYPE_TOOL&&null!=b.type||b.deactivate();
a.activate()}},addControls:function(a){OpenLayers.Util.isArray(a)||(a=[a]);this.controls=this.controls.concat(a);for(var b=0,c=a.length;b<c;b++){var d=a[b],e=this.createControlMarkup(d);OpenLayers.Element.addClass(e,d.displayClass+"ItemInactive");OpenLayers.Element.addClass(e,"olButton");""==d.title||e.title||(e.title=d.title);d.panel_div=e}this.map&&(this.addControlsToMap(a),this.redraw())},createControlMarkup:function(a){return document.createElement("div")},addControlsToMap:function(a){for(var b,
c=0,d=a.length;c<d;c++)b=a[c],!0===b.autoActivate?(b.autoActivate=!1,this.map.addControl(b),b.autoActivate=!0):(this.map.addControl(b),b.deactivate()),b.events.on({activate:this.iconOn,deactivate:this.iconOff})},iconOn:function(){var a=this.panel_div;a.className=a.className.replace(RegExp("\\b("+this.displayClass+"Item)Inactive\\b"),"$1Active")},iconOff:function(){var a=this.panel_div;a.className=a.className.replace(RegExp("\\b("+this.displayClass+"Item)Active\\b"),"$1Inactive")},onButtonClick:function(a){var b=
this.controls;a=a.buttonElement;for(var c=b.length-1;0<=c;--c)if(b[c].panel_div===a){this.activateControl(b[c]);break}},getControlsBy:function(a,b){var c="function"==typeof b.test;return OpenLayers.Array.filter(this.controls,function(d){return d[a]==b||c&&b.test(d[a])})},getControlsByName:function(a){return this.getControlsBy("name",a)},getControlsByClass:function(a){return this.getControlsBy("CLASS_NAME",a)},CLASS_NAME:"OpenLayers.Control.Panel"});OpenLayers.Control.Button=OpenLayers.Class(OpenLayers.Control,{type:OpenLayers.Control.TYPE_BUTTON,trigger:function(){},CLASS_NAME:"OpenLayers.Control.Button"});OpenLayers.Control.ZoomIn=OpenLayers.Class(OpenLayers.Control.Button,{trigger:function(){this.map&&this.map.zoomIn()},CLASS_NAME:"OpenLayers.Control.ZoomIn"});OpenLayers.Control.ZoomOut=OpenLayers.Class(OpenLayers.Control.Button,{trigger:function(){this.map&&this.map.zoomOut()},CLASS_NAME:"OpenLayers.Control.ZoomOut"});OpenLayers.Control.ZoomToMaxExtent=OpenLayers.Class(OpenLayers.Control.Button,{trigger:function(){this.map&&this.map.zoomToMaxExtent()},CLASS_NAME:"OpenLayers.Control.ZoomToMaxExtent"});OpenLayers.Control.ZoomPanel=OpenLayers.Class(OpenLayers.Control.Panel,{initialize:function(a){OpenLayers.Control.Panel.prototype.initialize.apply(this,[a]);this.addControls([new OpenLayers.Control.ZoomIn,new OpenLayers.Control.ZoomToMaxExtent,new OpenLayers.Control.ZoomOut])},CLASS_NAME:"OpenLayers.Control.ZoomPanel"});OpenLayers.Layer.HTTPRequest=OpenLayers.Class(OpenLayers.Layer,{URL_HASH_FACTOR:(Math.sqrt(5)-1)/2,url:null,params:null,reproject:!1,initialize:function(a,b,c,d){OpenLayers.Layer.prototype.initialize.apply(this,[a,d]);this.url=b;this.params||(this.params=OpenLayers.Util.extend({},c))},destroy:function(){this.params=this.url=null;OpenLayers.Layer.prototype.destroy.apply(this,arguments)},clone:function(a){null==a&&(a=new OpenLayers.Layer.HTTPRequest(this.name,this.url,this.params,this.getOptions()));
return a=OpenLayers.Layer.prototype.clone.apply(this,[a])},setUrl:function(a){this.url=a},mergeNewParams:function(a){this.params=OpenLayers.Util.extend(this.params,a);a=this.redraw();null!=this.map&&this.map.events.triggerEvent("changelayer",{layer:this,property:"params"});return a},redraw:function(a){return a?this.mergeNewParams({_olSalt:Math.random()}):OpenLayers.Layer.prototype.redraw.apply(this,[])},selectUrl:function(a,b){for(var c=1,d=0,e=a.length;d<e;d++)c*=a.charCodeAt(d)*this.URL_HASH_FACTOR,
c-=Math.floor(c);return b[Math.floor(c*b.length)]},getFullRequestString:function(a,b){var c=b||this.url,d=OpenLayers.Util.extend({},this.params),d=OpenLayers.Util.extend(d,a),e=OpenLayers.Util.getParameterString(d);OpenLayers.Util.isArray(c)&&(c=this.selectUrl(e,c));var e=OpenLayers.Util.upperCaseObject(OpenLayers.Util.getParameters(c)),f;for(f in d)f.toUpperCase()in e&&delete d[f];e=OpenLayers.Util.getParameterString(d);return OpenLayers.Util.urlAppend(c,e)},CLASS_NAME:"OpenLayers.Layer.HTTPRequest"});OpenLayers.Tile=OpenLayers.Class({events:null,eventListeners:null,id:null,layer:null,url:null,bounds:null,size:null,position:null,isLoading:!1,initialize:function(a,b,c,d,e,f){this.layer=a;this.position=b.clone();this.setBounds(c);this.url=d;e&&(this.size=e.clone());this.id=OpenLayers.Util.createUniqueID("Tile_");OpenLayers.Util.extend(this,f);this.events=new OpenLayers.Events(this);if(this.eventListeners instanceof Object)this.events.on(this.eventListeners)},unload:function(){this.isLoading&&(this.isLoading=
!1,this.events.triggerEvent("unload"))},destroy:function(){this.position=this.size=this.bounds=this.layer=null;this.eventListeners&&this.events.un(this.eventListeners);this.events.destroy();this.events=this.eventListeners=null},draw:function(a){a||this.clear();var b=this.shouldDraw();b&&(!a&&!1===this.events.triggerEvent("beforedraw"))&&(b=null);return b},shouldDraw:function(){var a=!1,b=this.layer.maxExtent;if(b){var c=this.layer.map,c=c.baseLayer.wrapDateLine&&c.getMaxExtent();this.bounds.intersectsBounds(b,
{inclusive:!1,worldBounds:c})&&(a=!0)}return a||this.layer.displayOutsideMaxExtent},setBounds:function(a){a=a.clone();if(this.layer.map.baseLayer.wrapDateLine){var b=this.layer.map.getMaxExtent(),c=this.layer.map.getResolution();a=a.wrapDateLine(b,{leftTolerance:c,rightTolerance:c})}this.bounds=a},moveTo:function(a,b,c){null==c&&(c=!0);this.setBounds(a);this.position=b.clone();c&&this.draw()},clear:function(a){},CLASS_NAME:"OpenLayers.Tile"});OpenLayers.Tile.Image=OpenLayers.Class(OpenLayers.Tile,{url:null,imgDiv:null,frame:null,imageReloadAttempts:null,layerAlphaHack:null,asyncRequestId:null,maxGetUrlLength:null,canvasContext:null,crossOriginKeyword:null,initialize:function(a,b,c,d,e,f){OpenLayers.Tile.prototype.initialize.apply(this,arguments);this.url=d;this.layerAlphaHack=this.layer.alpha&&OpenLayers.Util.alphaHack();if(null!=this.maxGetUrlLength||this.layer.gutter||this.layerAlphaHack)this.frame=document.createElement("div"),this.frame.style.position=
"absolute",this.frame.style.overflow="hidden";null!=this.maxGetUrlLength&&OpenLayers.Util.extend(this,OpenLayers.Tile.Image.IFrame)},destroy:function(){this.imgDiv&&(this.clear(),this.frame=this.imgDiv=null);this.asyncRequestId=null;OpenLayers.Tile.prototype.destroy.apply(this,arguments)},draw:function(){var a=OpenLayers.Tile.prototype.draw.apply(this,arguments);a?(this.layer!=this.layer.map.baseLayer&&this.layer.reproject&&(this.bounds=this.getBoundsFromBaseLayer(this.position)),this.isLoading?this._loadEvent=
"reload":(this.isLoading=!0,this._loadEvent="loadstart"),this.renderTile(),this.positionTile()):!1===a&&this.unload();return a},renderTile:function(){if(this.layer.async){var a=this.asyncRequestId=(this.asyncRequestId||0)+1;this.layer.getURLasync(this.bounds,function(b){a==this.asyncRequestId&&(this.url=b,this.initImage())},this)}else this.url=this.layer.getURL(this.bounds),this.initImage()},positionTile:function(){var a=this.getTile().style,b=this.frame?this.size:this.layer.getImageSize(this.bounds),
c=1;this.layer instanceof OpenLayers.Layer.Grid&&(c=this.layer.getServerResolution()/this.layer.map.getResolution());a.left=this.position.x+"px";a.top=this.position.y+"px";a.width=Math.round(c*b.w)+"px";a.height=Math.round(c*b.h)+"px"},clear:function(){OpenLayers.Tile.prototype.clear.apply(this,arguments);var a=this.imgDiv;if(a){var b=this.getTile();b.parentNode===this.layer.div&&this.layer.div.removeChild(b);this.setImgSrc();!0===this.layerAlphaHack&&(a.style.filter="");OpenLayers.Element.removeClass(a,
"olImageLoadError")}this.canvasContext=null},getImage:function(){if(!this.imgDiv){this.imgDiv=OpenLayers.Tile.Image.IMAGE.cloneNode(!1);var a=this.imgDiv.style;if(this.frame){var b=0,c=0;this.layer.gutter&&(b=100*(this.layer.gutter/this.layer.tileSize.w),c=100*(this.layer.gutter/this.layer.tileSize.h));a.left=-b+"%";a.top=-c+"%";a.width=2*b+100+"%";a.height=2*c+100+"%"}a.visibility="hidden";a.opacity=0;1>this.layer.opacity&&(a.filter="alpha(opacity="+100*this.layer.opacity+")");a.position="absolute";
this.layerAlphaHack&&(a.paddingTop=a.height,a.height="0",a.width="100%");this.frame&&this.frame.appendChild(this.imgDiv)}return this.imgDiv},setImage:function(a){this.imgDiv=a},initImage:function(){if(this.url||this.imgDiv){this.events.triggerEvent("beforeload");this.layer.div.appendChild(this.getTile());this.events.triggerEvent(this._loadEvent);var a=this.getImage(),b=a.getAttribute("src")||"";this.url&&OpenLayers.Util.isEquivalentUrl(b,this.url)?this._loadTimeout=window.setTimeout(OpenLayers.Function.bind(this.onImageLoad,
this),0):(this.stopLoading(),this.crossOriginKeyword&&a.removeAttribute("crossorigin"),OpenLayers.Event.observe(a,"load",OpenLayers.Function.bind(this.onImageLoad,this)),OpenLayers.Event.observe(a,"error",OpenLayers.Function.bind(this.onImageError,this)),this.imageReloadAttempts=0,this.setImgSrc(this.url))}else this.isLoading=!1},setImgSrc:function(a){var b=this.imgDiv;a?(b.style.visibility="hidden",b.style.opacity=0,this.crossOriginKeyword&&("data:"!==a.substr(0,5)?b.setAttribute("crossorigin",this.crossOriginKeyword):
b.removeAttribute("crossorigin")),b.src=a):(this.stopLoading(),this.imgDiv=null,b.parentNode&&b.parentNode.removeChild(b))},getTile:function(){return this.frame?this.frame:this.getImage()},createBackBuffer:function(){if(this.imgDiv&&!this.isLoading){var a;this.frame?(a=this.frame.cloneNode(!1),a.appendChild(this.imgDiv)):a=this.imgDiv;this.imgDiv=null;return a}},onImageLoad:function(){var a=this.imgDiv;this.stopLoading();a.style.visibility="inherit";a.style.opacity=this.layer.opacity;this.isLoading=
!1;this.canvasContext=null;this.events.triggerEvent("loadend");!0===this.layerAlphaHack&&(a.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+a.src+"', sizingMethod='scale')")},onImageError:function(){var a=this.imgDiv;null!=a.src&&(this.imageReloadAttempts++,this.imageReloadAttempts<=OpenLayers.IMAGE_RELOAD_ATTEMPTS?this.setImgSrc(this.layer.getURL(this.bounds)):(OpenLayers.Element.addClass(a,"olImageLoadError"),this.events.triggerEvent("loaderror"),this.onImageLoad()))},stopLoading:function(){OpenLayers.Event.stopObservingElement(this.imgDiv);
window.clearTimeout(this._loadTimeout);delete this._loadTimeout},getCanvasContext:function(){if(OpenLayers.CANVAS_SUPPORTED&&this.imgDiv&&!this.isLoading){if(!this.canvasContext){var a=document.createElement("canvas");a.width=this.size.w;a.height=this.size.h;this.canvasContext=a.getContext("2d");this.canvasContext.drawImage(this.imgDiv,0,0)}return this.canvasContext}},CLASS_NAME:"OpenLayers.Tile.Image"});
OpenLayers.Tile.Image.IMAGE=function(){var a=new Image;a.className="olTileImage";a.galleryImg="no";return a}();OpenLayers.Layer.Grid=OpenLayers.Class(OpenLayers.Layer.HTTPRequest,{tileSize:null,tileOriginCorner:"bl",tileOrigin:null,tileOptions:null,tileClass:OpenLayers.Tile.Image,grid:null,singleTile:!1,ratio:1.5,buffer:0,transitionEffect:"resize",numLoadingTiles:0,serverResolutions:null,loading:!1,backBuffer:null,gridResolution:null,backBufferResolution:null,backBufferLonLat:null,backBufferTimerId:null,removeBackBufferDelay:null,className:null,gridLayout:null,rowSign:null,transitionendEvents:["transitionend",
"webkitTransitionEnd","otransitionend","oTransitionEnd"],initialize:function(a,b,c,d){OpenLayers.Layer.HTTPRequest.prototype.initialize.apply(this,arguments);this.grid=[];this._removeBackBuffer=OpenLayers.Function.bind(this.removeBackBuffer,this);this.initProperties();this.rowSign="t"===this.tileOriginCorner.substr(0,1)?1:-1},initProperties:function(){void 0===this.options.removeBackBufferDelay&&(this.removeBackBufferDelay=this.singleTile?0:2500);void 0===this.options.className&&(this.className=this.singleTile?
"olLayerGridSingleTile":"olLayerGrid")},setMap:function(a){OpenLayers.Layer.HTTPRequest.prototype.setMap.call(this,a);OpenLayers.Element.addClass(this.div,this.className)},removeMap:function(a){this.removeBackBuffer()},destroy:function(){this.removeBackBuffer();this.clearGrid();this.tileSize=this.grid=null;OpenLayers.Layer.HTTPRequest.prototype.destroy.apply(this,arguments)},clearGrid:function(){if(this.grid){for(var a=0,b=this.grid.length;a<b;a++)for(var c=this.grid[a],d=0,e=c.length;d<e;d++)this.destroyTile(c[d]);
this.grid=[];this.gridLayout=this.gridResolution=null}},addOptions:function(a,b){var c=void 0!==a.singleTile&&a.singleTile!==this.singleTile;OpenLayers.Layer.HTTPRequest.prototype.addOptions.apply(this,arguments);this.map&&c&&(this.initProperties(),this.clearGrid(),this.tileSize=this.options.tileSize,this.setTileSize(),this.moveTo(null,!0))},clone:function(a){null==a&&(a=new OpenLayers.Layer.Grid(this.name,this.url,this.params,this.getOptions()));a=OpenLayers.Layer.HTTPRequest.prototype.clone.apply(this,
[a]);null!=this.tileSize&&(a.tileSize=this.tileSize.clone());a.grid=[];a.gridResolution=null;a.backBuffer=null;a.backBufferTimerId=null;a.loading=!1;a.numLoadingTiles=0;return a},moveTo:function(a,b,c){OpenLayers.Layer.HTTPRequest.prototype.moveTo.apply(this,arguments);a=a||this.map.getExtent();if(null!=a){var d=!this.grid.length||b,e=this.getTilesBounds(),f=this.map.getResolution();this.getServerResolution(f);if(this.singleTile){if(d||!c&&!e.containsBounds(a))b&&"resize"!==this.transitionEffect&&
this.removeBackBuffer(),b&&"resize"!==this.transitionEffect||this.applyBackBuffer(f),this.initSingleTile(a)}else(d=d||!e.intersectsBounds(a,{worldBounds:this.map.baseLayer.wrapDateLine&&this.map.getMaxExtent()}))?(!b||"resize"!==this.transitionEffect&&this.gridResolution!==f||this.applyBackBuffer(f),this.initGriddedTiles(a)):this.moveGriddedTiles()}},getTileData:function(a){var b=null,c=a.lon,d=a.lat,e=this.grid.length;if(this.map&&e){var f=this.map.getResolution();a=this.tileSize.w;var g=this.tileSize.h,
h=this.grid[0][0].bounds,k=h.left,h=h.top;if(c<k&&this.map.baseLayer.wrapDateLine)var l=this.map.getMaxExtent().getWidth(),m=Math.ceil((k-c)/l),c=c+l*m;c=(c-k)/(f*a);d=(h-d)/(f*g);f=Math.floor(c);k=Math.floor(d);0<=k&&k<e&&(e=this.grid[k][f])&&(b={tile:e,i:Math.floor((c-f)*a),j:Math.floor((d-k)*g)})}return b},destroyTile:function(a){this.removeTileMonitoringHooks(a);a.destroy()},getServerResolution:function(a){var b=Number.POSITIVE_INFINITY;a=a||this.map.getResolution();if(this.serverResolutions&&
-1===OpenLayers.Util.indexOf(this.serverResolutions,a)){var c,d,e,f;for(c=this.serverResolutions.length-1;0<=c;c--){e=this.serverResolutions[c];d=Math.abs(e-a);if(d>b)break;b=d;f=e}a=f}return a},getServerZoom:function(){var a=this.getServerResolution();return this.serverResolutions?OpenLayers.Util.indexOf(this.serverResolutions,a):this.map.getZoomForResolution(a)+(this.zoomOffset||0)},applyBackBuffer:function(a){null!==this.backBufferTimerId&&this.removeBackBuffer();var b=this.backBuffer;if(!b){b=
this.createBackBuffer();if(!b)return;a===this.gridResolution?this.div.insertBefore(b,this.div.firstChild):this.map.baseLayer.div.parentNode.insertBefore(b,this.map.baseLayer.div);this.backBuffer=b;var c=this.grid[0][0].bounds;this.backBufferLonLat={lon:c.left,lat:c.top};this.backBufferResolution=this.gridResolution}for(var c=this.backBufferResolution/a,d=b.childNodes,e,f=d.length-1;0<=f;--f)e=d[f],e.style.top=(c*e._i*e._h|0)+"px",e.style.left=(c*e._j*e._w|0)+"px",e.style.width=Math.round(c*e._w)+
"px",e.style.height=Math.round(c*e._h)+"px";a=this.getViewPortPxFromLonLat(this.backBufferLonLat,a);c=this.map.layerContainerOriginPx.y;b.style.left=Math.round(a.x-this.map.layerContainerOriginPx.x)+"px";b.style.top=Math.round(a.y-c)+"px"},createBackBuffer:function(){var a;if(0<this.grid.length){a=document.createElement("div");a.id=this.div.id+"_bb";a.className="olBackBuffer";a.style.position="absolute";var b=this.map;a.style.zIndex="resize"===this.transitionEffect?this.getZIndex()-1:b.Z_INDEX_BASE.BaseLayer-
(b.getNumLayers()-b.getLayerIndex(this));for(var b=0,c=this.grid.length;b<c;b++)for(var d=0,e=this.grid[b].length;d<e;d++){var f=this.grid[b][d],g=this.grid[b][d].createBackBuffer();g&&(g._i=b,g._j=d,g._w=f.size.w,g._h=f.size.h,g.id=f.id+"_bb",a.appendChild(g))}}return a},removeBackBuffer:function(){if(this._transitionElement){for(var a=this.transitionendEvents.length-1;0<=a;--a)OpenLayers.Event.stopObserving(this._transitionElement,this.transitionendEvents[a],this._removeBackBuffer);delete this._transitionElement}this.backBuffer&&
(this.backBuffer.parentNode&&this.backBuffer.parentNode.removeChild(this.backBuffer),this.backBufferResolution=this.backBuffer=null,null!==this.backBufferTimerId&&(window.clearTimeout(this.backBufferTimerId),this.backBufferTimerId=null))},moveByPx:function(a,b){this.singleTile||this.moveGriddedTiles()},setTileSize:function(a){this.singleTile&&(a=this.map.getSize(),a.h=parseInt(a.h*this.ratio,10),a.w=parseInt(a.w*this.ratio,10));OpenLayers.Layer.HTTPRequest.prototype.setTileSize.apply(this,[a])},getTilesBounds:function(){var a=
null,b=this.grid.length;if(b)var a=this.grid[b-1][0].bounds,b=this.grid[0].length*a.getWidth(),c=this.grid.length*a.getHeight(),a=new OpenLayers.Bounds(a.left,a.bottom,a.left+b,a.bottom+c);return a},initSingleTile:function(a){this.events.triggerEvent("retile");var b=a.getCenterLonLat(),c=a.getWidth()*this.ratio;a=a.getHeight()*this.ratio;b=new OpenLayers.Bounds(b.lon-c/2,b.lat-a/2,b.lon+c/2,b.lat+a/2);c=this.map.getLayerPxFromLonLat({lon:b.left,lat:b.top});this.grid.length||(this.grid[0]=[]);(a=this.grid[0][0])?
a.moveTo(b,c):(a=this.addTile(b,c),this.addTileMonitoringHooks(a),a.draw(),this.grid[0][0]=a);this.removeExcessTiles(1,1);this.gridResolution=this.getServerResolution()},calculateGridLayout:function(a,b,c){var d=c*this.tileSize.w;c*=this.tileSize.h;var e=Math.floor((a.left-b.lon)/d)-this.buffer,f=this.rowSign;a=Math[~f?"floor":"ceil"](f*(b.lat-a.top+c)/c)-this.buffer*f;return{tilelon:d,tilelat:c,startcol:e,startrow:a}},getTileOrigin:function(){var a=this.tileOrigin;if(!a)var a=this.getMaxExtent(),
b={tl:["left","top"],tr:["right","top"],bl:["left","bottom"],br:["right","bottom"]}[this.tileOriginCorner],a=new OpenLayers.LonLat(a[b[0]],a[b[1]]);return a},getTileBoundsForGridIndex:function(a,b){var c=this.getTileOrigin(),d=this.gridLayout,e=d.tilelon,f=d.tilelat,g=d.startcol,d=d.startrow,h=this.rowSign;return new OpenLayers.Bounds(c.lon+(g+b)*e,c.lat-(d+a*h)*f*h,c.lon+(g+b+1)*e,c.lat-(d+(a-1)*h)*f*h)},initGriddedTiles:function(a){this.events.triggerEvent("retile");var b=this.map.getSize(),c=this.getTileOrigin(),
d=this.map.getResolution(),e=this.getServerResolution(),f=d/e,d=this.tileSize.w/f,f=this.tileSize.h/f,g=Math.ceil(b.h/f)+2*this.buffer+1,b=Math.ceil(b.w/d)+2*this.buffer+1;this.gridLayout=e=this.calculateGridLayout(a,c,e);var c=e.tilelon,h=e.tilelat,e=this.map.layerContainerOriginPx.x,k=this.map.layerContainerOriginPx.y,l=this.getTileBoundsForGridIndex(0,0),m=this.map.getViewPortPxFromLonLat(new OpenLayers.LonLat(l.left,l.top));m.x=Math.round(m.x)-e;m.y=Math.round(m.y)-k;var e=[],k=this.map.getCenter(),
n=0;do{var p=this.grid[n];p||(p=[],this.grid.push(p));var q=0;do{var l=this.getTileBoundsForGridIndex(n,q),r=m.clone();r.x+=q*Math.round(d);r.y+=n*Math.round(f);var s=p[q];s?s.moveTo(l,r,!1):(s=this.addTile(l,r),this.addTileMonitoringHooks(s),p.push(s));r=l.getCenterLonLat();e.push({tile:s,distance:Math.pow(r.lon-k.lon,2)+Math.pow(r.lat-k.lat,2)});q+=1}while(l.right<=a.right+c*this.buffer||q<b);n+=1}while(l.bottom>=a.bottom-h*this.buffer||n<g);this.removeExcessTiles(n,q);this.gridResolution=d=this.getServerResolution();
e.sort(function(a,b){return a.distance-b.distance});a=0;for(d=e.length;a<d;++a)e[a].tile.draw()},getMaxExtent:function(){return this.maxExtent},addTile:function(a,b){var c=new this.tileClass(this,b,a,null,this.tileSize,this.tileOptions);this.events.triggerEvent("addtile",{tile:c});return c},addTileMonitoringHooks:function(a){a.onLoadStart=function(){!1===this.loading&&(this.loading=!0,this.events.triggerEvent("loadstart"));this.events.triggerEvent("tileloadstart",{tile:a});this.numLoadingTiles++;
!this.singleTile&&(this.backBuffer&&this.gridResolution===this.backBufferResolution)&&OpenLayers.Element.addClass(a.getTile(),"olTileReplacing")};a.onLoadEnd=function(b){this.numLoadingTiles--;b="unload"===b.type;this.events.triggerEvent("tileloaded",{tile:a,aborted:b});if(!this.singleTile&&!b&&this.backBuffer&&this.gridResolution===this.backBufferResolution){var c=a.getTile();if("none"===OpenLayers.Element.getStyle(c,"display")){var d=document.getElementById(a.id+"_bb");d&&d.parentNode.removeChild(d)}OpenLayers.Element.removeClass(c,
"olTileReplacing")}if(0===this.numLoadingTiles){if(this.backBuffer)if(0===this.backBuffer.childNodes.length)this.removeBackBuffer();else{this._transitionElement=b?this.div.lastChild:a.imgDiv;b=this.transitionendEvents;for(c=b.length-1;0<=c;--c)OpenLayers.Event.observe(this._transitionElement,b[c],this._removeBackBuffer);this.backBufferTimerId=window.setTimeout(this._removeBackBuffer,this.removeBackBufferDelay)}this.loading=!1;this.events.triggerEvent("loadend")}};a.onLoadError=function(){this.events.triggerEvent("tileerror",
{tile:a})};a.events.on({loadstart:a.onLoadStart,loadend:a.onLoadEnd,unload:a.onLoadEnd,loaderror:a.onLoadError,scope:this})},removeTileMonitoringHooks:function(a){a.unload();a.events.un({loadstart:a.onLoadStart,loadend:a.onLoadEnd,unload:a.onLoadEnd,loaderror:a.onLoadError,scope:this})},moveGriddedTiles:function(){for(var a=this.buffer+1;;){var b=this.grid[0][0],c=b.position.x+this.map.layerContainerOriginPx.x,b=b.position.y+this.map.layerContainerOriginPx.y,d=this.getServerResolution()/this.map.getResolution(),
d={w:Math.round(this.tileSize.w*d),h:Math.round(this.tileSize.h*d)};if(c>-d.w*(a-1))this.shiftColumn(!0,d);else if(c<-d.w*a)this.shiftColumn(!1,d);else if(b>-d.h*(a-1))this.shiftRow(!0,d);else if(b<-d.h*a)this.shiftRow(!1,d);else break}},shiftRow:function(a,b){var c=this.grid,d=a?0:c.length-1,e=a?-1:1;this.gridLayout.startrow+=e*this.rowSign;for(var f=c[d],g=c[a?"pop":"shift"](),h=0,k=g.length;h<k;h++){var l=g[h],m=f[h].position.clone();m.y+=b.h*e;l.moveTo(this.getTileBoundsForGridIndex(d,h),m)}c[a?
"unshift":"push"](g)},shiftColumn:function(a,b){var c=this.grid,d=a?0:c[0].length-1,e=a?-1:1;this.gridLayout.startcol+=e;for(var f=0,g=c.length;f<g;f++){var h=c[f],k=h[d].position.clone(),l=h[a?"pop":"shift"]();k.x+=b.w*e;l.moveTo(this.getTileBoundsForGridIndex(f,d),k);h[a?"unshift":"push"](l)}},removeExcessTiles:function(a,b){for(var c,d;this.grid.length>a;){var e=this.grid.pop();c=0;for(d=e.length;c<d;c++){var f=e[c];this.destroyTile(f)}}c=0;for(d=this.grid.length;c<d;c++)for(;this.grid[c].length>
b;)e=this.grid[c],f=e.pop(),this.destroyTile(f)},onMapResize:function(){this.singleTile&&(this.clearGrid(),this.setTileSize())},getTileBounds:function(a){var b=this.maxExtent,c=this.getResolution(),d=c*this.tileSize.w,c=c*this.tileSize.h,e=this.getLonLatFromViewPortPx(a);a=b.left+d*Math.floor((e.lon-b.left)/d);b=b.bottom+c*Math.floor((e.lat-b.bottom)/c);return new OpenLayers.Bounds(a,b,a+d,b+c)},CLASS_NAME:"OpenLayers.Layer.Grid"});OpenLayers.Format.ArcXML=OpenLayers.Class(OpenLayers.Format.XML,{fontStyleKeys:"antialiasing blockout font fontcolor fontsize fontstyle glowing interval outline printmode shadow transparency".split(" "),request:null,response:null,initialize:function(a){this.request=new OpenLayers.Format.ArcXML.Request;this.response=new OpenLayers.Format.ArcXML.Response;if(a)if("feature"==a.requesttype){this.request.get_image=null;var b=this.request.get_feature.query;this.addCoordSys(b.featurecoordsys,a.featureCoordSys);
this.addCoordSys(b.filtercoordsys,a.filterCoordSys);a.polygon?(b.isspatial=!0,b.spatialfilter.polygon=a.polygon):a.envelope&&(b.isspatial=!0,b.spatialfilter.envelope={minx:0,miny:0,maxx:0,maxy:0},this.parseEnvelope(b.spatialfilter.envelope,a.envelope))}else"image"==a.requesttype?(this.request.get_feature=null,b=this.request.get_image.properties,this.parseEnvelope(b.envelope,a.envelope),this.addLayers(b.layerlist,a.layers),this.addImageSize(b.imagesize,a.tileSize),this.addCoordSys(b.featurecoordsys,
a.featureCoordSys),this.addCoordSys(b.filtercoordsys,a.filterCoordSys)):this.request=null;OpenLayers.Format.XML.prototype.initialize.apply(this,[a])},parseEnvelope:function(a,b){b&&4==b.length&&(a.minx=b[0],a.miny=b[1],a.maxx=b[2],a.maxy=b[3])},addLayers:function(a,b){for(var c=0,d=b.length;c<d;c++)a.push(b[c])},addImageSize:function(a,b){null!==b&&(a.width=b.w,a.height=b.h,a.printwidth=b.w,a.printheight=b.h)},addCoordSys:function(a,b){"string"==typeof b?(a.id=parseInt(b),a.string=b):"object"==typeof b&&
null!==b.proj&&(a.id=b.proj.srsProjNumber,a.string=b.proj.srsCode)},iserror:function(a){var b=null;a?(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]),a=a.documentElement.getElementsByTagName("ERROR"),b=null!==a&&0<a.length):b=""!==this.response.error;return b},read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));var b=null;a&&a.documentElement&&(b="ARCXML"==a.documentElement.nodeName?a.documentElement:a.documentElement.getElementsByTagName("ARCXML")[0]);
if(!b||"parsererror"===b.firstChild.nodeName){var c,d;try{c=a.firstChild.nodeValue,d=a.firstChild.childNodes[1].firstChild.nodeValue}catch(e){}throw{message:"Error parsing the ArcXML request",error:c,source:d};}return this.parseResponse(b)},write:function(a){a||(a=this.request);var b=this.createElementNS("","ARCXML");b.setAttribute("version","1.1");var c=this.createElementNS("","REQUEST");if(null!=a.get_image){var d=this.createElementNS("","GET_IMAGE");c.appendChild(d);var e=this.createElementNS("",
"PROPERTIES");d.appendChild(e);a=a.get_image.properties;null!=a.featurecoordsys&&(d=this.createElementNS("","FEATURECOORDSYS"),e.appendChild(d),0===a.featurecoordsys.id?d.setAttribute("string",a.featurecoordsys.string):d.setAttribute("id",a.featurecoordsys.id));null!=a.filtercoordsys&&(d=this.createElementNS("","FILTERCOORDSYS"),e.appendChild(d),0===a.filtercoordsys.id?d.setAttribute("string",a.filtercoordsys.string):d.setAttribute("id",a.filtercoordsys.id));null!=a.envelope&&(d=this.createElementNS("",
"ENVELOPE"),e.appendChild(d),d.setAttribute("minx",a.envelope.minx),d.setAttribute("miny",a.envelope.miny),d.setAttribute("maxx",a.envelope.maxx),d.setAttribute("maxy",a.envelope.maxy));d=this.createElementNS("","IMAGESIZE");e.appendChild(d);d.setAttribute("height",a.imagesize.height);d.setAttribute("width",a.imagesize.width);if(a.imagesize.height!=a.imagesize.printheight||a.imagesize.width!=a.imagesize.printwidth)d.setAttribute("printheight",a.imagesize.printheight),d.setArrtibute("printwidth",a.imagesize.printwidth);
null!=a.background&&(d=this.createElementNS("","BACKGROUND"),e.appendChild(d),d.setAttribute("color",a.background.color.r+","+a.background.color.g+","+a.background.color.b),null!==a.background.transcolor&&d.setAttribute("transcolor",a.background.transcolor.r+","+a.background.transcolor.g+","+a.background.transcolor.b));if(null!=a.layerlist&&0<a.layerlist.length)for(d=this.createElementNS("","LAYERLIST"),e.appendChild(d),e=0;e<a.layerlist.length;e++){var f=this.createElementNS("","LAYERDEF");d.appendChild(f);
f.setAttribute("id",a.layerlist[e].id);f.setAttribute("visible",a.layerlist[e].visible);if("object"==typeof a.layerlist[e].query){var g=a.layerlist[e].query;if(0>g.where.length)continue;var h=null,h="boolean"==typeof g.spatialfilter&&g.spatialfilter?this.createElementNS("","SPATIALQUERY"):this.createElementNS("","QUERY");h.setAttribute("where",g.where);"number"==typeof g.accuracy&&0<g.accuracy&&h.setAttribute("accuracy",g.accuracy);"number"==typeof g.featurelimit&&2E3>g.featurelimit&&h.setAttribute("featurelimit",
g.featurelimit);"string"==typeof g.subfields&&"#ALL#"!=g.subfields&&h.setAttribute("subfields",g.subfields);"string"==typeof g.joinexpression&&0<g.joinexpression.length&&h.setAttribute("joinexpression",g.joinexpression);"string"==typeof g.jointables&&0<g.jointables.length&&h.setAttribute("jointables",g.jointables);f.appendChild(h)}"object"==typeof a.layerlist[e].renderer&&this.addRenderer(f,a.layerlist[e].renderer)}}else null!=a.get_feature&&(d=this.createElementNS("","GET_FEATURES"),d.setAttribute("outputmode",
"newxml"),d.setAttribute("checkesc","true"),a.get_feature.geometry?d.setAttribute("geometry",a.get_feature.geometry):d.setAttribute("geometry","false"),a.get_feature.compact&&d.setAttribute("compact",a.get_feature.compact),"number"==a.get_feature.featurelimit&&d.setAttribute("featurelimit",a.get_feature.featurelimit),d.setAttribute("globalenvelope","true"),c.appendChild(d),null!=a.get_feature.layer&&0<a.get_feature.layer.length&&(e=this.createElementNS("","LAYER"),e.setAttribute("id",a.get_feature.layer),
d.appendChild(e)),a=a.get_feature.query,null!=a&&(e=null,e=a.isspatial?this.createElementNS("","SPATIALQUERY"):this.createElementNS("","QUERY"),d.appendChild(e),"number"==typeof a.accuracy&&e.setAttribute("accuracy",a.accuracy),null!=a.featurecoordsys&&(d=this.createElementNS("","FEATURECOORDSYS"),0==a.featurecoordsys.id?d.setAttribute("string",a.featurecoordsys.string):d.setAttribute("id",a.featurecoordsys.id),e.appendChild(d)),null!=a.filtercoordsys&&(d=this.createElementNS("","FILTERCOORDSYS"),
0===a.filtercoordsys.id?d.setAttribute("string",a.filtercoordsys.string):d.setAttribute("id",a.filtercoordsys.id),e.appendChild(d)),0<a.buffer&&(d=this.createElementNS("","BUFFER"),d.setAttribute("distance",a.buffer),e.appendChild(d)),a.isspatial&&(d=this.createElementNS("","SPATIALFILTER"),d.setAttribute("relation",a.spatialfilter.relation),e.appendChild(d),a.spatialfilter.envelope?(f=this.createElementNS("","ENVELOPE"),f.setAttribute("minx",a.spatialfilter.envelope.minx),f.setAttribute("miny",a.spatialfilter.envelope.miny),
f.setAttribute("maxx",a.spatialfilter.envelope.maxx),f.setAttribute("maxy",a.spatialfilter.envelope.maxy),d.appendChild(f)):"object"==typeof a.spatialfilter.polygon&&d.appendChild(this.writePolygonGeometry(a.spatialfilter.polygon))),null!=a.where&&0<a.where.length&&e.setAttribute("where",a.where)));b.appendChild(c);return OpenLayers.Format.XML.prototype.write.apply(this,[b])},addGroupRenderer:function(a,b){var c=this.createElementNS("","GROUPRENDERER");a.appendChild(c);for(var d=0;d<b.length;d++)this.addRenderer(c,
b[d])},addRenderer:function(a,b){if(OpenLayers.Util.isArray(b))this.addGroupRenderer(a,b);else{var c=this.createElementNS("",b.type.toUpperCase()+"RENDERER");a.appendChild(c);"VALUEMAPRENDERER"==c.tagName?this.addValueMapRenderer(c,b):"VALUEMAPLABELRENDERER"==c.tagName?this.addValueMapLabelRenderer(c,b):"SIMPLELABELRENDERER"==c.tagName?this.addSimpleLabelRenderer(c,b):"SCALEDEPENDENTRENDERER"==c.tagName&&this.addScaleDependentRenderer(c,b)}},addScaleDependentRenderer:function(a,b){"string"!=typeof b.lower&&
"number"!=typeof b.lower||a.setAttribute("lower",b.lower);"string"!=typeof b.upper&&"number"!=typeof b.upper||a.setAttribute("upper",b.upper);this.addRenderer(a,b.renderer)},addValueMapLabelRenderer:function(a,b){a.setAttribute("lookupfield",b.lookupfield);a.setAttribute("labelfield",b.labelfield);if("object"==typeof b.exacts)for(var c=0,d=b.exacts.length;c<d;c++){var e=b.exacts[c],f=this.createElementNS("","EXACT");"string"==typeof e.value&&f.setAttribute("value",e.value);"string"==typeof e.label&&
f.setAttribute("label",e.label);"string"==typeof e.method&&f.setAttribute("method",e.method);a.appendChild(f);if("object"==typeof e.symbol){var g=null;"text"==e.symbol.type&&(g=this.createElementNS("","TEXTSYMBOL"));if(null!=g){for(var h=this.fontStyleKeys,k=0,l=h.length;k<l;k++){var m=h[k];e.symbol[m]&&g.setAttribute(m,e.symbol[m])}f.appendChild(g)}}}},addValueMapRenderer:function(a,b){a.setAttribute("lookupfield",b.lookupfield);if("object"==typeof b.ranges)for(var c=0,d=b.ranges.length;c<d;c++){var e=
b.ranges[c],f=this.createElementNS("","RANGE");f.setAttribute("lower",e.lower);f.setAttribute("upper",e.upper);a.appendChild(f);if("object"==typeof e.symbol){var g=null;"simplepolygon"==e.symbol.type&&(g=this.createElementNS("","SIMPLEPOLYGONSYMBOL"));null!=g&&("string"==typeof e.symbol.boundarycolor&&g.setAttribute("boundarycolor",e.symbol.boundarycolor),"string"==typeof e.symbol.fillcolor&&g.setAttribute("fillcolor",e.symbol.fillcolor),"number"==typeof e.symbol.filltransparency&&g.setAttribute("filltransparency",
e.symbol.filltransparency),f.appendChild(g))}}else if("object"==typeof b.exacts)for(c=0,d=b.exacts.length;c<d;c++)e=b.exacts[c],f=this.createElementNS("","EXACT"),"string"==typeof e.value&&f.setAttribute("value",e.value),"string"==typeof e.label&&f.setAttribute("label",e.label),"string"==typeof e.method&&f.setAttribute("method",e.method),a.appendChild(f),"object"==typeof e.symbol&&(g=null,"simplemarker"==e.symbol.type&&(g=this.createElementNS("","SIMPLEMARKERSYMBOL")),null!=g&&("string"==typeof e.symbol.antialiasing&&
g.setAttribute("antialiasing",e.symbol.antialiasing),"string"==typeof e.symbol.color&&g.setAttribute("color",e.symbol.color),"string"==typeof e.symbol.outline&&g.setAttribute("outline",e.symbol.outline),"string"==typeof e.symbol.overlap&&g.setAttribute("overlap",e.symbol.overlap),"string"==typeof e.symbol.shadow&&g.setAttribute("shadow",e.symbol.shadow),"number"==typeof e.symbol.transparency&&g.setAttribute("transparency",e.symbol.transparency),"string"==typeof e.symbol.usecentroid&&g.setAttribute("usecentroid",
e.symbol.usecentroid),"number"==typeof e.symbol.width&&g.setAttribute("width",e.symbol.width),f.appendChild(g)))},addSimpleLabelRenderer:function(a,b){a.setAttribute("field",b.field);for(var c="featureweight howmanylabels labelbufferratio labelpriorities labelweight linelabelposition rotationalangles".split(" "),d=0,e=c.length;d<e;d++){var f=c[d];b[f]&&a.setAttribute(f,b[f])}if("text"==b.symbol.type){var g=b.symbol,h=this.createElementNS("","TEXTSYMBOL");a.appendChild(h);c=this.fontStyleKeys;d=0;
for(e=c.length;d<e;d++)f=c[d],g[f]&&h.setAttribute(f,b[f])}},writePolygonGeometry:function(a){if(!(a instanceof OpenLayers.Geometry.Polygon))throw{message:"Cannot write polygon geometry to ArcXML with an "+a.CLASS_NAME+" object.",geometry:a};for(var b=this.createElementNS("","POLYGON"),c=0,d=a.components.length;c<d;c++){for(var e=a.components[c],f=this.createElementNS("","RING"),g=0,h=e.components.length;g<h;g++){var k=e.components[g],l=this.createElementNS("","POINT");l.setAttribute("x",k.x);l.setAttribute("y",
k.y);f.appendChild(l)}b.appendChild(f)}return b},parseResponse:function(a){"string"==typeof a&&(a=(new OpenLayers.Format.XML).read(a));var b=new OpenLayers.Format.ArcXML.Response,c=a.getElementsByTagName("ERROR");if(null!=c&&0<c.length)b.error=this.getChildValue(c,"Unknown error.");else{c=a.getElementsByTagName("RESPONSE");if(null==c||0==c.length)return b.error="No RESPONSE tag found in ArcXML response.",b;var d=c[0].firstChild.nodeName;"#text"==d&&(d=c[0].firstChild.nextSibling.nodeName);if("IMAGE"==
d)c=a.getElementsByTagName("ENVELOPE"),a=a.getElementsByTagName("OUTPUT"),null==c||0==c.length?b.error="No ENVELOPE tag found in ArcXML response.":null==a||0==a.length?b.error="No OUTPUT tag found in ArcXML response.":(c=this.parseAttributes(c[0]),d=this.parseAttributes(a[0]),b.image="string"==typeof d.type?{envelope:c,output:{type:d.type,data:this.getChildValue(a[0])}}:{envelope:c,output:d});else if("FEATURES"==d){if(a=c[0].getElementsByTagName("FEATURES"),c=a[0].getElementsByTagName("FEATURECOUNT"),
b.features.featurecount=c[0].getAttribute("count"),0<b.features.featurecount)for(c=a[0].getElementsByTagName("ENVELOPE"),b.features.envelope=this.parseAttributes(c[0],"number"),a=a[0].getElementsByTagName("FEATURE"),c=0;c<a.length;c++){for(var d=new OpenLayers.Feature.Vector,e=a[c].getElementsByTagName("FIELD"),f=0;f<e.length;f++){var g=e[f].getAttribute("name"),h=e[f].getAttribute("value");d.attributes[g]=h}e=a[c].getElementsByTagName("POLYGON");if(0<e.length){e=e[0].getElementsByTagName("RING");
f=[];for(g=0;g<e.length;g++){h=[];h.push(this.parsePointGeometry(e[g]));for(var k=e[g].getElementsByTagName("HOLE"),l=0;l<k.length;l++)h.push(this.parsePointGeometry(k[l]));f.push(new OpenLayers.Geometry.Polygon(h))}d.geometry=1==f.length?f[0]:new OpenLayers.Geometry.MultiPolygon(f)}b.features.feature.push(d)}}else b.error="Unidentified response type."}return b},parseAttributes:function(a,b){for(var c={},d=0;d<a.attributes.length;d++)c[a.attributes[d].nodeName]="number"==b?parseFloat(a.attributes[d].nodeValue):
a.attributes[d].nodeValue;return c},parsePointGeometry:function(a){var b=[],c=a.getElementsByTagName("COORDS");if(0<c.length)for(a=this.getChildValue(c[0]),a=a.split(/;/),c=0;c<a.length;c++){var d=a[c].split(/ /);b.push(new OpenLayers.Geometry.Point(d[0],d[1]))}else if(a=a.getElementsByTagName("POINT"),0<a.length)for(c=0;c<a.length;c++)b.push(new OpenLayers.Geometry.Point(parseFloat(a[c].getAttribute("x")),parseFloat(a[c].getAttribute("y"))));return new OpenLayers.Geometry.LinearRing(b)},CLASS_NAME:"OpenLayers.Format.ArcXML"});
OpenLayers.Format.ArcXML.Request=OpenLayers.Class({initialize:function(a){return OpenLayers.Util.extend(this,{get_image:{properties:{background:null,draw:!0,envelope:{minx:0,miny:0,maxx:0,maxy:0},featurecoordsys:{id:0,string:"",datumtransformid:0,datumtransformstring:""},filtercoordsys:{id:0,string:"",datumtransformid:0,datumtransformstring:""},imagesize:{height:0,width:0,dpi:96,printheight:0,printwidth:0,scalesymbols:!1},layerlist:[],output:{baseurl:"",legendbaseurl:"",legendname:"",legendpath:"",
legendurl:"",name:"",path:"",type:"jpg",url:""}}},get_feature:{layer:"",query:{isspatial:!1,featurecoordsys:{id:0,string:"",datumtransformid:0,datumtransformstring:""},filtercoordsys:{id:0,string:"",datumtransformid:0,datumtransformstring:""},buffer:0,where:"",spatialfilter:{relation:"envelope_intersection",envelope:null}}},environment:{separators:{cs:" ",ts:";"}},layer:[],workspaces:[]})},CLASS_NAME:"OpenLayers.Format.ArcXML.Request"});
OpenLayers.Format.ArcXML.Response=OpenLayers.Class({initialize:function(a){return OpenLayers.Util.extend(this,{image:{envelope:null,output:""},features:{featurecount:0,envelope:null,feature:[]},error:""})},CLASS_NAME:"OpenLayers.Format.ArcXML.Response"});(function(){function a(){this._object=f&&!k?new f:new window.ActiveXObject("Microsoft.XMLHTTP");this._listeners=[]}function b(){return new a}function c(a){b.onreadystatechange&&b.onreadystatechange.apply(a);a.dispatchEvent({type:"readystatechange",bubbles:!1,cancelable:!1,timeStamp:new Date+0})}function d(a){try{a.responseText=a._object.responseText}catch(b){}try{var c;var d=a._object,e=d.responseXML,f=d.responseText;h&&(f&&e&&!e.documentElement&&d.getResponseHeader("Content-Type").match(/[^\/]+\/[^\+]+\+xml/))&&
(e=new window.ActiveXObject("Microsoft.XMLDOM"),e.async=!1,e.validateOnParse=!1,e.loadXML(f));c=e&&(h&&0!=e.parseError||!e.documentElement||e.documentElement&&"parsererror"==e.documentElement.tagName)?null:e;a.responseXML=c}catch(g){}try{a.status=a._object.status}catch(k){}try{a.statusText=a._object.statusText}catch(u){}}function e(a){a._object.onreadystatechange=new window.Function}var f=window.XMLHttpRequest,g=!!window.controllers,h=window.document.all&&!window.opera,k=h&&window.navigator.userAgent.match(/MSIE 7.0/);
b.prototype=a.prototype;g&&f.wrapped&&(b.wrapped=f.wrapped);b.UNSENT=0;b.OPENED=1;b.HEADERS_RECEIVED=2;b.LOADING=3;b.DONE=4;b.prototype.readyState=b.UNSENT;b.prototype.responseText="";b.prototype.responseXML=null;b.prototype.status=0;b.prototype.statusText="";b.prototype.priority="NORMAL";b.prototype.onreadystatechange=null;b.onreadystatechange=null;b.onopen=null;b.onsend=null;b.onabort=null;b.prototype.open=function(a,f,k,p,q){delete this._headers;3>arguments.length&&(k=!0);this._async=k;var r=this,
s=this.readyState,t;h&&k&&(t=function(){s!=b.DONE&&(e(r),r.abort())},window.attachEvent("onunload",t));b.onopen&&b.onopen.apply(this,arguments);4<arguments.length?this._object.open(a,f,k,p,q):3<arguments.length?this._object.open(a,f,k,p):this._object.open(a,f,k);this.readyState=b.OPENED;c(this);this._object.onreadystatechange=function(){if(!g||k)r.readyState=r._object.readyState,d(r),r._aborted?r.readyState=b.UNSENT:(r.readyState==b.DONE&&(delete r._data,e(r),h&&k&&window.detachEvent("onunload",t)),
s!=r.readyState&&c(r),s=r.readyState)}};b.prototype.send=function(a){b.onsend&&b.onsend.apply(this,arguments);arguments.length||(a=null);a&&a.nodeType&&(a=window.XMLSerializer?(new window.XMLSerializer).serializeToString(a):a.xml,this._headers["Content-Type"]||this._object.setRequestHeader("Content-Type","application/xml"));this._data=a;a:if(this._object.send(this._data),g&&!this._async)for(this.readyState=b.OPENED,d(this);this.readyState<b.DONE;)if(this.readyState++,c(this),this._aborted)break a};
b.prototype.abort=function(){b.onabort&&b.onabort.apply(this,arguments);this.readyState>b.UNSENT&&(this._aborted=!0);this._object.abort();e(this);this.readyState=b.UNSENT;delete this._data};b.prototype.getAllResponseHeaders=function(){return this._object.getAllResponseHeaders()};b.prototype.getResponseHeader=function(a){return this._object.getResponseHeader(a)};b.prototype.setRequestHeader=function(a,b){this._headers||(this._headers={});this._headers[a]=b;return this._object.setRequestHeader(a,b)};
b.prototype.addEventListener=function(a,b,c){for(var d=0,e;e=this._listeners[d];d++)if(e[0]==a&&e[1]==b&&e[2]==c)return;this._listeners.push([a,b,c])};b.prototype.removeEventListener=function(a,b,c){for(var d=0,e;(e=this._listeners[d])&&(e[0]!=a||e[1]!=b||e[2]!=c);d++);e&&this._listeners.splice(d,1)};b.prototype.dispatchEvent=function(a){a={type:a.type,target:this,currentTarget:this,eventPhase:2,bubbles:a.bubbles,cancelable:a.cancelable,timeStamp:a.timeStamp,stopPropagation:function(){},preventDefault:function(){},
initEvent:function(){}};"readystatechange"==a.type&&this.onreadystatechange&&(this.onreadystatechange.handleEvent||this.onreadystatechange).apply(this,[a]);for(var b=0,c;c=this._listeners[b];b++)c[0]!=a.type||c[2]||(c[1].handleEvent||c[1]).apply(this,[a])};b.prototype.toString=function(){return"[object XMLHttpRequest]"};b.toString=function(){return"[XMLHttpRequest]"};window.Function.prototype.apply||(window.Function.prototype.apply=function(a,b){b||(b=[]);a.__func=this;a.__func(b[0],b[1],b[2],b[3],
b[4]);delete a.__func});OpenLayers.Request||(OpenLayers.Request={});OpenLayers.Request.XMLHttpRequest=b})();OpenLayers.ProxyHost="";OpenLayers.Request||(OpenLayers.Request={});
OpenLayers.Util.extend(OpenLayers.Request,{DEFAULT_CONFIG:{method:"GET",url:window.location.href,async:!0,user:void 0,password:void 0,params:null,proxy:OpenLayers.ProxyHost,headers:{},data:null,callback:function(){},success:null,failure:null,scope:null},URL_SPLIT_REGEX:/([^:]*:)\/\/([^:]*:?[^@]*@)?([^:\/\?]*):?([^\/\?]*)/,events:new OpenLayers.Events(this),makeSameOrigin:function(a,b){var c=0!==a.indexOf("http"),d=!c&&a.match(this.URL_SPLIT_REGEX);if(d){var e=window.location,c=d[1]==e.protocol&&d[3]==
e.hostname,d=d[4],e=e.port;if(80!=d&&""!=d||"80"!=e&&""!=e)c=c&&d==e}c||b&&(a="function"==typeof b?b(a):b+encodeURIComponent(a));return a},issue:function(a){var b=OpenLayers.Util.extend(this.DEFAULT_CONFIG,{proxy:OpenLayers.ProxyHost});a=a||{};a.headers=a.headers||{};a=OpenLayers.Util.applyDefaults(a,b);a.headers=OpenLayers.Util.applyDefaults(a.headers,b.headers);var b=!1,c;for(c in a.headers)a.headers.hasOwnProperty(c)&&"x-requested-with"===c.toLowerCase()&&(b=!0);!1===b&&(a.headers["X-Requested-With"]=
"XMLHttpRequest");var d=new OpenLayers.Request.XMLHttpRequest,e=OpenLayers.Util.urlAppend(a.url,OpenLayers.Util.getParameterString(a.params||{})),e=OpenLayers.Request.makeSameOrigin(e,a.proxy);d.open(a.method,e,a.async,a.user,a.password);for(var f in a.headers)d.setRequestHeader(f,a.headers[f]);var g=this.events,h=this;d.onreadystatechange=function(){d.readyState==OpenLayers.Request.XMLHttpRequest.DONE&&!1!==g.triggerEvent("complete",{request:d,config:a,requestUrl:e})&&h.runCallbacks({request:d,config:a,
requestUrl:e})};!1===a.async?d.send(a.data):window.setTimeout(function(){0!==d.readyState&&d.send(a.data)},0);return d},runCallbacks:function(a){var b=a.request,c=a.config,d=c.scope?OpenLayers.Function.bind(c.callback,c.scope):c.callback,e;c.success&&(e=c.scope?OpenLayers.Function.bind(c.success,c.scope):c.success);var f;c.failure&&(f=c.scope?OpenLayers.Function.bind(c.failure,c.scope):c.failure);"file:"==OpenLayers.Util.createUrlObject(c.url).protocol&&b.responseText&&(b.status=200);d(b);if(!b.status||
200<=b.status&&300>b.status)this.events.triggerEvent("success",a),e&&e(b);b.status&&(200>b.status||300<=b.status)&&(this.events.triggerEvent("failure",a),f&&f(b))},GET:function(a){a=OpenLayers.Util.extend(a,{method:"GET"});return OpenLayers.Request.issue(a)},POST:function(a){a=OpenLayers.Util.extend(a,{method:"POST"});a.headers=a.headers?a.headers:{};"CONTENT-TYPE"in OpenLayers.Util.upperCaseObject(a.headers)||(a.headers["Content-Type"]="application/xml");return OpenLayers.Request.issue(a)},PUT:function(a){a=
OpenLayers.Util.extend(a,{method:"PUT"});a.headers=a.headers?a.headers:{};"CONTENT-TYPE"in OpenLayers.Util.upperCaseObject(a.headers)||(a.headers["Content-Type"]="application/xml");return OpenLayers.Request.issue(a)},DELETE:function(a){a=OpenLayers.Util.extend(a,{method:"DELETE"});return OpenLayers.Request.issue(a)},HEAD:function(a){a=OpenLayers.Util.extend(a,{method:"HEAD"});return OpenLayers.Request.issue(a)},OPTIONS:function(a){a=OpenLayers.Util.extend(a,{method:"OPTIONS"});return OpenLayers.Request.issue(a)}});OpenLayers.Layer.ArcIMS=OpenLayers.Class(OpenLayers.Layer.Grid,{DEFAULT_PARAMS:{ClientVersion:"9.2",ServiceName:""},featureCoordSys:"4326",filterCoordSys:"4326",layers:null,async:!0,name:"ArcIMS",isBaseLayer:!0,DEFAULT_OPTIONS:{tileSize:new OpenLayers.Size(512,512),featureCoordSys:"4326",filterCoordSys:"4326",layers:null,isBaseLayer:!0,async:!0,name:"ArcIMS"},initialize:function(a,b,c){this.tileSize=new OpenLayers.Size(512,512);this.params=OpenLayers.Util.applyDefaults({ServiceName:c.serviceName},
this.DEFAULT_PARAMS);this.options=OpenLayers.Util.applyDefaults(c,this.DEFAULT_OPTIONS);OpenLayers.Layer.Grid.prototype.initialize.apply(this,[a,b,this.params,c]);this.transparent&&(this.isBaseLayer||(this.isBaseLayer=!1),"image/jpeg"==this.format&&(this.format=OpenLayers.Util.alphaHack()?"image/gif":"image/png"));null===this.options.layers&&(this.options.layers=[])},getURL:function(a){var b="";a=this.adjustBounds(a);a=new OpenLayers.Format.ArcXML(OpenLayers.Util.extend(this.options,{requesttype:"image",
envelope:a.toArray(),tileSize:this.tileSize}));a=new OpenLayers.Request.POST({url:this.getFullRequestString(),data:a.write(),async:!1});null!=a&&(b=a.responseXML,b&&b.documentElement||(b=a.responseText),b=(new OpenLayers.Format.ArcXML).read(b),b=this.getUrlOrImage(b.image.output));return b},getURLasync:function(a,b,c){a=this.adjustBounds(a);a=new OpenLayers.Format.ArcXML(OpenLayers.Util.extend(this.options,{requesttype:"image",envelope:a.toArray(),tileSize:this.tileSize}));OpenLayers.Request.POST({url:this.getFullRequestString(),
async:!0,data:a.write(),callback:function(a){var e=a.responseXML;e&&e.documentElement||(e=a.responseText);a=(new OpenLayers.Format.ArcXML).read(e);b.call(c,this.getUrlOrImage(a.image.output))},scope:this})},getUrlOrImage:function(a){var b="";a.url?b=a.url:a.data&&(b="data:image/"+a.type+";base64,"+a.data);return b},setLayerQuery:function(a,b){for(var c=0;c<this.options.layers.length;c++)if(a==this.options.layers[c].id){this.options.layers[c].query=b;return}this.options.layers.push({id:a,visible:!0,
query:b})},getFeatureInfo:function(a,b,c){var d=c.buffer||1,e=c.callback||function(){},f=c.scope||window,g={};OpenLayers.Util.extend(g,this.options);g.requesttype="feature";a instanceof OpenLayers.LonLat?(g.polygon=null,g.envelope=[a.lon-d,a.lat-d,a.lon+d,a.lat+d]):a instanceof OpenLayers.Geometry.Polygon&&(g.envelope=null,g.polygon=a);var h=new OpenLayers.Format.ArcXML(g);OpenLayers.Util.extend(h.request.get_feature,c);h.request.get_feature.layer=b.id;"number"==typeof b.query.accuracy?h.request.get_feature.query.accuracy=
b.query.accuracy:(a=this.map.getCenter(),c=this.map.getViewPortPxFromLonLat(a),c.x++,c=this.map.getLonLatFromPixel(c),h.request.get_feature.query.accuracy=c.lon-a.lon);h.request.get_feature.query.where=b.query.where;h.request.get_feature.query.spatialfilter.relation="area_intersection";OpenLayers.Request.POST({url:this.getFullRequestString({CustomService:"Query"}),data:h.write(),callback:function(a){a=h.parseResponse(a.responseText);h.iserror()?e.call(f,null):e.call(f,a.features)}})},clone:function(a){null==
a&&(a=new OpenLayers.Layer.ArcIMS(this.name,this.url,this.getOptions()));return a=OpenLayers.Layer.Grid.prototype.clone.apply(this,[a])},CLASS_NAME:"OpenLayers.Layer.ArcIMS"});OpenLayers.Control.PanZoom=OpenLayers.Class(OpenLayers.Control,{slideFactor:50,slideRatio:null,buttons:null,position:null,initialize:function(a){this.position=new OpenLayers.Pixel(OpenLayers.Control.PanZoom.X,OpenLayers.Control.PanZoom.Y);OpenLayers.Control.prototype.initialize.apply(this,arguments)},destroy:function(){this.map&&this.map.events.unregister("buttonclick",this,this.onButtonClick);this.removeButtons();this.position=this.buttons=null;OpenLayers.Control.prototype.destroy.apply(this,arguments)},
setMap:function(a){OpenLayers.Control.prototype.setMap.apply(this,arguments);this.map.events.register("buttonclick",this,this.onButtonClick)},draw:function(a){OpenLayers.Control.prototype.draw.apply(this,arguments);a=this.position;this.buttons=[];var b={w:18,h:18},c=new OpenLayers.Pixel(a.x+b.w/2,a.y);this._addButton("panup","north-mini.png",c,b);a.y=c.y+b.h;this._addButton("panleft","west-mini.png",a,b);this._addButton("panright","east-mini.png",a.add(b.w,0),b);this._addButton("pandown","south-mini.png",
c.add(0,2*b.h),b);this._addButton("zoomin","zoom-plus-mini.png",c.add(0,3*b.h+5),b);this._addButton("zoomworld","zoom-world-mini.png",c.add(0,4*b.h+5),b);this._addButton("zoomout","zoom-minus-mini.png",c.add(0,5*b.h+5),b);return this.div},_addButton:function(a,b,c,d){b=OpenLayers.Util.getImageLocation(b);c=OpenLayers.Util.createAlphaImageDiv(this.id+"_"+a,c,d,b,"absolute");c.style.cursor="pointer";this.div.appendChild(c);c.action=a;c.className="olButton";this.buttons.push(c);return c},_removeButton:function(a){this.div.removeChild(a);
OpenLayers.Util.removeItem(this.buttons,a)},removeButtons:function(){for(var a=this.buttons.length-1;0<=a;--a)this._removeButton(this.buttons[a])},onButtonClick:function(a){switch(a.buttonElement.action){case "panup":this.map.pan(0,-this.getSlideFactor("h"));break;case "pandown":this.map.pan(0,this.getSlideFactor("h"));break;case "panleft":this.map.pan(-this.getSlideFactor("w"),0);break;case "panright":this.map.pan(this.getSlideFactor("w"),0);break;case "zoomin":this.map.zoomIn();break;case "zoomout":this.map.zoomOut();
break;case "zoomworld":this.map.zoomToMaxExtent()}},getSlideFactor:function(a){return this.slideRatio?this.map.getSize()[a]*this.slideRatio:this.slideFactor},CLASS_NAME:"OpenLayers.Control.PanZoom"});OpenLayers.Control.PanZoom.X=4;OpenLayers.Control.PanZoom.Y=4;OpenLayers.Control.PanZoomBar=OpenLayers.Class(OpenLayers.Control.PanZoom,{zoomStopWidth:18,zoomStopHeight:11,slider:null,sliderEvents:null,zoombarDiv:null,zoomWorldIcon:!1,panIcons:!0,forceFixedZoomLevel:!1,mouseDragStart:null,deltaY:null,zoomStart:null,destroy:function(){this._removeZoomBar();this.map.events.un({changebaselayer:this.redraw,updatesize:this.redraw,scope:this});OpenLayers.Control.PanZoom.prototype.destroy.apply(this,arguments);delete this.mouseDragStart;delete this.zoomStart},setMap:function(a){OpenLayers.Control.PanZoom.prototype.setMap.apply(this,
arguments);this.map.events.on({changebaselayer:this.redraw,updatesize:this.redraw,scope:this})},redraw:function(){null!=this.div&&(this.removeButtons(),this._removeZoomBar());this.draw()},draw:function(a){OpenLayers.Control.prototype.draw.apply(this,arguments);a=this.position.clone();this.buttons=[];var b={w:18,h:18};if(this.panIcons){var c=new OpenLayers.Pixel(a.x+b.w/2,a.y),d=b.w;this.zoomWorldIcon&&(c=new OpenLayers.Pixel(a.x+b.w,a.y));this._addButton("panup","north-mini.png",c,b);a.y=c.y+b.h;
this._addButton("panleft","west-mini.png",a,b);this.zoomWorldIcon&&(this._addButton("zoomworld","zoom-world-mini.png",a.add(b.w,0),b),d*=2);this._addButton("panright","east-mini.png",a.add(d,0),b);this._addButton("pandown","south-mini.png",c.add(0,2*b.h),b);this._addButton("zoomin","zoom-plus-mini.png",c.add(0,3*b.h+5),b);c=this._addZoomBar(c.add(0,4*b.h+5));this._addButton("zoomout","zoom-minus-mini.png",c,b)}else this._addButton("zoomin","zoom-plus-mini.png",a,b),c=this._addZoomBar(a.add(0,b.h)),
this._addButton("zoomout","zoom-minus-mini.png",c,b),this.zoomWorldIcon&&(c=c.add(0,b.h+3),this._addButton("zoomworld","zoom-world-mini.png",c,b));return this.div},_addZoomBar:function(a){var b=OpenLayers.Util.getImageLocation("slider.png"),c=this.id+"_"+this.map.id,d=this.map.getMinZoom(),e=this.map.getNumZoomLevels()-1-this.map.getZoom(),e=OpenLayers.Util.createAlphaImageDiv(c,a.add(-1,e*this.zoomStopHeight),{w:20,h:9},b,"absolute");e.style.cursor="move";this.slider=e;this.sliderEvents=new OpenLayers.Events(this,
e,null,!0,{includeXY:!0});this.sliderEvents.on({touchstart:this.zoomBarDown,touchmove:this.zoomBarDrag,touchend:this.zoomBarUp,mousedown:this.zoomBarDown,mousemove:this.zoomBarDrag,mouseup:this.zoomBarUp});var f={w:this.zoomStopWidth,h:this.zoomStopHeight*(this.map.getNumZoomLevels()-d)},b=OpenLayers.Util.getImageLocation("zoombar.png"),c=null;OpenLayers.Util.alphaHack()?(c=this.id+"_"+this.map.id,c=OpenLayers.Util.createAlphaImageDiv(c,a,{w:f.w,h:this.zoomStopHeight},b,"absolute",null,"crop"),c.style.height=
f.h+"px"):c=OpenLayers.Util.createDiv("OpenLayers_Control_PanZoomBar_Zoombar"+this.map.id,a,f,b);c.style.cursor="pointer";c.className="olButton";this.zoombarDiv=c;this.div.appendChild(c);this.startTop=parseInt(c.style.top);this.div.appendChild(e);this.map.events.register("zoomend",this,this.moveZoomBar);return a=a.add(0,this.zoomStopHeight*(this.map.getNumZoomLevels()-d))},_removeZoomBar:function(){this.sliderEvents.un({touchstart:this.zoomBarDown,touchmove:this.zoomBarDrag,touchend:this.zoomBarUp,
mousedown:this.zoomBarDown,mousemove:this.zoomBarDrag,mouseup:this.zoomBarUp});this.sliderEvents.destroy();this.div.removeChild(this.zoombarDiv);this.zoombarDiv=null;this.div.removeChild(this.slider);this.slider=null;this.map.events.unregister("zoomend",this,this.moveZoomBar)},onButtonClick:function(a){OpenLayers.Control.PanZoom.prototype.onButtonClick.apply(this,arguments);if(a.buttonElement===this.zoombarDiv){var b=a.buttonXY.y/this.zoomStopHeight;if(this.forceFixedZoomLevel||!this.map.fractionalZoom)b=
Math.floor(b);b=this.map.getNumZoomLevels()-1-b;b=Math.min(Math.max(b,0),this.map.getNumZoomLevels()-1);this.map.zoomTo(b)}},passEventToSlider:function(a){this.sliderEvents.handleBrowserEvent(a)},zoomBarDown:function(a){if(OpenLayers.Event.isLeftClick(a)||OpenLayers.Event.isSingleTouch(a))this.map.events.on({touchmove:this.passEventToSlider,mousemove:this.passEventToSlider,mouseup:this.passEventToSlider,scope:this}),this.mouseDragStart=a.xy.clone(),this.zoomStart=a.xy.clone(),this.div.style.cursor=
"move",this.zoombarDiv.offsets=null,OpenLayers.Event.stop(a)},zoomBarDrag:function(a){if(null!=this.mouseDragStart){var b=this.mouseDragStart.y-a.xy.y,c=OpenLayers.Util.pagePosition(this.zoombarDiv);0<a.clientY-c[1]&&a.clientY-c[1]<parseInt(this.zoombarDiv.style.height)-2&&(b=parseInt(this.slider.style.top)-b,this.slider.style.top=b+"px",this.mouseDragStart=a.xy.clone());this.deltaY=this.zoomStart.y-a.xy.y;OpenLayers.Event.stop(a)}},zoomBarUp:function(a){if((OpenLayers.Event.isLeftClick(a)||"touchend"===
a.type)&&this.mouseDragStart){this.div.style.cursor="";this.map.events.un({touchmove:this.passEventToSlider,mouseup:this.passEventToSlider,mousemove:this.passEventToSlider,scope:this});var b=this.map.zoom;!this.forceFixedZoomLevel&&this.map.fractionalZoom?(b+=this.deltaY/this.zoomStopHeight,b=Math.min(Math.max(b,0),this.map.getNumZoomLevels()-1)):(b+=this.deltaY/this.zoomStopHeight,b=Math.max(Math.round(b),0));this.map.zoomTo(b);this.zoomStart=this.mouseDragStart=null;this.deltaY=0;OpenLayers.Event.stop(a)}},
moveZoomBar:function(){var a=(this.map.getNumZoomLevels()-1-this.map.getZoom())*this.zoomStopHeight+this.startTop+1;this.slider.style.top=a+"px"},CLASS_NAME:"OpenLayers.Control.PanZoomBar"});OpenLayers.Format.WFSCapabilities=OpenLayers.Class(OpenLayers.Format.XML.VersionedOGC,{defaultVersion:"1.1.0",CLASS_NAME:"OpenLayers.Format.WFSCapabilities"});OpenLayers.Format.WFSCapabilities.v1=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{wfs:"http://www.opengis.net/wfs",xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance",ows:"http://www.opengis.net/ows"},errorProperty:"featureTypeList",defaultPrefix:"wfs",read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));a&&9==a.nodeType&&(a=a.documentElement);var b={};this.readNode(a,b);return b},readers:{wfs:{WFS_Capabilities:function(a,
b){this.readChildNodes(a,b)},FeatureTypeList:function(a,b){b.featureTypeList={featureTypes:[]};this.readChildNodes(a,b.featureTypeList)},FeatureType:function(a,b){var c={};this.readChildNodes(a,c);b.featureTypes.push(c)},Name:function(a,b){var c=this.getChildValue(a);c&&(c=c.split(":"),b.name=c.pop(),0<c.length&&(b.featureNS=this.lookupNamespaceURI(a,c[0])))},Title:function(a,b){var c=this.getChildValue(a);c&&(b.title=c)},Abstract:function(a,b){var c=this.getChildValue(a);c&&(b["abstract"]=c)}}},
CLASS_NAME:"OpenLayers.Format.WFSCapabilities.v1"});OpenLayers.Format.WFSCapabilities.v1_1_0=OpenLayers.Class(OpenLayers.Format.WFSCapabilities.v1,{regExes:{trimSpace:/^\s*|\s*$/g,removeSpace:/\s*/g,splitSpace:/\s+/,trimComma:/\s*,\s*/g},readers:{wfs:OpenLayers.Util.applyDefaults({DefaultSRS:function(a,b){var c=this.getChildValue(a);c&&(b.srs=c)}},OpenLayers.Format.WFSCapabilities.v1.prototype.readers.wfs),ows:OpenLayers.Format.OWSCommon.v1.prototype.readers.ows},CLASS_NAME:"OpenLayers.Format.WFSCapabilities.v1_1_0"});OpenLayers.Layer.Image=OpenLayers.Class(OpenLayers.Layer,{isBaseLayer:!0,url:null,extent:null,size:null,tile:null,aspectRatio:null,initialize:function(a,b,c,d,e){this.url=b;this.maxExtent=this.extent=c;this.size=d;OpenLayers.Layer.prototype.initialize.apply(this,[a,e]);this.aspectRatio=this.extent.getHeight()/this.size.h/(this.extent.getWidth()/this.size.w)},destroy:function(){this.tile&&(this.removeTileMonitoringHooks(this.tile),this.tile.destroy(),this.tile=null);OpenLayers.Layer.prototype.destroy.apply(this,
arguments)},clone:function(a){null==a&&(a=new OpenLayers.Layer.Image(this.name,this.url,this.extent,this.size,this.getOptions()));return a=OpenLayers.Layer.prototype.clone.apply(this,[a])},setMap:function(a){null==this.options.maxResolution&&(this.options.maxResolution=this.aspectRatio*this.extent.getWidth()/this.size.w);OpenLayers.Layer.prototype.setMap.apply(this,arguments)},moveTo:function(a,b,c){OpenLayers.Layer.prototype.moveTo.apply(this,arguments);var d=null==this.tile;if(b||d){this.setTileSize();
var e=this.map.getLayerPxFromLonLat({lon:this.extent.left,lat:this.extent.top});d?(this.tile=new OpenLayers.Tile.Image(this,e,this.extent,null,this.tileSize),this.addTileMonitoringHooks(this.tile)):(this.tile.size=this.tileSize.clone(),this.tile.position=e.clone());this.tile.draw()}},setTileSize:function(){var a=this.extent.getWidth()/this.map.getResolution(),b=this.extent.getHeight()/this.map.getResolution();this.tileSize=new OpenLayers.Size(a,b)},addTileMonitoringHooks:function(a){a.onLoadStart=
function(){this.events.triggerEvent("loadstart")};a.events.register("loadstart",this,a.onLoadStart);a.onLoadEnd=function(){this.events.triggerEvent("loadend")};a.events.register("loadend",this,a.onLoadEnd);a.events.register("unload",this,a.onLoadEnd)},removeTileMonitoringHooks:function(a){a.unload();a.events.un({loadstart:a.onLoadStart,loadend:a.onLoadEnd,unload:a.onLoadEnd,scope:this})},setUrl:function(a){this.url=a;this.tile.draw()},getURL:function(a){return this.url},CLASS_NAME:"OpenLayers.Layer.Image"});OpenLayers.Strategy=OpenLayers.Class({layer:null,options:null,active:null,autoActivate:!0,autoDestroy:!0,initialize:function(a){OpenLayers.Util.extend(this,a);this.options=a;this.active=!1},destroy:function(){this.deactivate();this.options=this.layer=null},setLayer:function(a){this.layer=a},activate:function(){return this.active?!1:this.active=!0},deactivate:function(){return this.active?(this.active=!1,!0):!1},CLASS_NAME:"OpenLayers.Strategy"});OpenLayers.Strategy.Save=OpenLayers.Class(OpenLayers.Strategy,{events:null,auto:!1,timer:null,initialize:function(a){OpenLayers.Strategy.prototype.initialize.apply(this,[a]);this.events=new OpenLayers.Events(this)},activate:function(){var a=OpenLayers.Strategy.prototype.activate.call(this);if(a&&this.auto)if("number"===typeof this.auto)this.timer=window.setInterval(OpenLayers.Function.bind(this.save,this),1E3*this.auto);else this.layer.events.on({featureadded:this.triggerSave,afterfeaturemodified:this.triggerSave,
scope:this});return a},deactivate:function(){var a=OpenLayers.Strategy.prototype.deactivate.call(this);a&&this.auto&&("number"===typeof this.auto?window.clearInterval(this.timer):this.layer.events.un({featureadded:this.triggerSave,afterfeaturemodified:this.triggerSave,scope:this}));return a},triggerSave:function(a){var b=a.feature;b.state!==OpenLayers.State.INSERT&&b.state!==OpenLayers.State.UPDATE&&b.state!==OpenLayers.State.DELETE||this.save([a.feature])},save:function(a){a||(a=this.layer.features);
this.events.triggerEvent("start",{features:a});var b=this.layer.projection,c=this.layer.map.getProjectionObject();if(!c.equals(b)){for(var d=a.length,e=Array(d),f,g,h=0;h<d;++h)f=a[h],g=f.clone(),g.fid=f.fid,g.state=f.state,f.url&&(g.url=f.url),g._original=f,g.geometry.transform(c,b),e[h]=g;a=e}this.layer.protocol.commit(a,{callback:this.onCommit,scope:this})},onCommit:function(a){var b={response:a};if(a.success()){for(var c=a.reqFeatures,d,e=[],f=a.insertIds||[],g=0,h=0,k=c.length;h<k;++h)if(d=c[h],
d=d._original||d,a=d.state)a==OpenLayers.State.DELETE?e.push(d):a==OpenLayers.State.INSERT&&(d.fid=f[g],++g),d.state=null;0<e.length&&this.layer.destroyFeatures(e);this.events.triggerEvent("success",b)}else this.events.triggerEvent("fail",b)},CLASS_NAME:"OpenLayers.Strategy.Save"});OpenLayers.Events.featureclick=OpenLayers.Class({cache:null,map:null,provides:["featureclick","nofeatureclick","featureover","featureout"],initialize:function(a){this.target=a;if(a.object instanceof OpenLayers.Map)this.setMap(a.object);else if(a.object instanceof OpenLayers.Layer.Vector)a.object.map?this.setMap(a.object.map):a.object.events.register("added",this,function(b){this.setMap(a.object.map)});else throw"Listeners for '"+this.provides.join("', '")+"' events can only be registered for OpenLayers.Layer.Vector or OpenLayers.Map instances";
for(var b=this.provides.length-1;0<=b;--b)a.extensions[this.provides[b]]=!0},setMap:function(a){this.map=a;this.cache={};a.events.register("mousedown",this,this.start,{extension:!0});a.events.register("mouseup",this,this.onClick,{extension:!0});a.events.register("touchstart",this,this.start,{extension:!0});a.events.register("touchmove",this,this.cancel,{extension:!0});a.events.register("touchend",this,this.onClick,{extension:!0});a.events.register("mousemove",this,this.onMousemove,{extension:!0})},
start:function(a){this.startEvt=a},cancel:function(a){delete this.startEvt},onClick:function(a){if(this.startEvt&&("touchend"===a.type||OpenLayers.Event.isLeftClick(a))){a=this.getFeatures(this.startEvt);delete this.startEvt;for(var b,c,d={},e=0,f=a.length;e<f&&(b=a[e],c=b.layer,d[c.id]=!0,b=this.triggerEvent("featureclick",{feature:b}),!1!==b);++e);e=0;for(f=this.map.layers.length;e<f;++e)c=this.map.layers[e],c instanceof OpenLayers.Layer.Vector&&!d[c.id]&&this.triggerEvent("nofeatureclick",{layer:c})}},
onMousemove:function(a){delete this.startEvt;var b=this.getFeatures(a),c={};a=[];for(var d,e=0,f=b.length;e<f;++e)d=b[e],c[d.id]=d,this.cache[d.id]||a.push(d);var b=[],g;for(g in this.cache)d=this.cache[g],d.layer&&d.layer.map?c[d.id]||b.push(d):delete this.cache[g];e=0;for(f=a.length;e<f&&(d=a[e],this.cache[d.id]=d,g=this.triggerEvent("featureover",{feature:d}),!1!==g);++e);e=0;for(f=b.length;e<f&&(d=b[e],delete this.cache[d.id],g=this.triggerEvent("featureout",{feature:d}),!1!==g);++e);},triggerEvent:function(a,
b){var c=b.feature?b.feature.layer:b.layer,d=this.target.object;if(d instanceof OpenLayers.Map||d===c)return this.target.triggerEvent(a,b)},getFeatures:function(a){var b=a.clientX,c=a.clientY,d=[],e=[],f=[],g,h,k,l;for(l=this.map.layers.length-1;0<=l;--l)if(g=this.map.layers[l],"none"!==g.div.style.display)if(g.renderer instanceof OpenLayers.Renderer.Elements){if(g instanceof OpenLayers.Layer.Vector)for(h=document.elementFromPoint(b,c);h&&h._featureId;)(k=g.getFeatureById(h._featureId))?(d.push(k),
h.style.display="none",e.push(h),h=document.elementFromPoint(b,c)):h=!1;f.push(g);g.div.style.display="none"}else g.renderer instanceof OpenLayers.Renderer.Canvas&&(k=g.renderer.getFeatureIdFromEvent(a))&&(d.push(k),f.push(g));l=0;for(a=e.length;l<a;++l)e[l].style.display="";for(l=f.length-1;0<=l;--l)f[l].div.style.display="block";return d},destroy:function(){for(var a=this.provides.length-1;0<=a;--a)delete this.target.extensions[this.provides[a]];this.map.events.un({mousemove:this.onMousemove,mousedown:this.start,
mouseup:this.onClick,touchstart:this.start,touchmove:this.cancel,touchend:this.onClick,scope:this});delete this.cache;delete this.map;delete this.target}});OpenLayers.Events.nofeatureclick=OpenLayers.Events.featureclick;OpenLayers.Events.featureover=OpenLayers.Events.featureclick;OpenLayers.Events.featureout=OpenLayers.Events.featureclick;OpenLayers.Format.GPX=OpenLayers.Class(OpenLayers.Format.XML,{defaultDesc:"No description available",extractWaypoints:!0,extractTracks:!0,extractRoutes:!0,extractAttributes:!0,namespaces:{gpx:"http://www.topografix.com/GPX/1/1",xsi:"http://www.w3.org/2001/XMLSchema-instance"},schemaLocation:"http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd",creator:"OpenLayers",initialize:function(a){this.externalProjection=new OpenLayers.Projection("EPSG:4326");OpenLayers.Format.XML.prototype.initialize.apply(this,
[a])},read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));var b=[];if(this.extractTracks)for(var c=a.getElementsByTagName("trk"),d=0,e=c.length;d<e;d++){var f={};this.extractAttributes&&(f=this.parseAttributes(c[d]));for(var g=this.getElementsByTagNameNS(c[d],c[d].namespaceURI,"trkseg"),h=0,k=g.length;h<k;h++){var l=this.extractSegment(g[h],"trkpt");b.push(new OpenLayers.Feature.Vector(l,f))}}if(this.extractRoutes)for(e=a.getElementsByTagName("rte"),c=0,d=
e.length;c<d;c++)f={},this.extractAttributes&&(f=this.parseAttributes(e[c])),g=this.extractSegment(e[c],"rtept"),b.push(new OpenLayers.Feature.Vector(g,f));if(this.extractWaypoints)for(a=a.getElementsByTagName("wpt"),c=0,e=a.length;c<e;c++)f={},this.extractAttributes&&(f=this.parseAttributes(a[c])),d=new OpenLayers.Geometry.Point(a[c].getAttribute("lon"),a[c].getAttribute("lat")),b.push(new OpenLayers.Feature.Vector(d,f));if(this.internalProjection&&this.externalProjection)for(f=0,a=b.length;f<a;f++)b[f].geometry.transform(this.externalProjection,
this.internalProjection);return b},extractSegment:function(a,b){for(var c=this.getElementsByTagNameNS(a,a.namespaceURI,b),d=[],e=0,f=c.length;e<f;e++)d.push(new OpenLayers.Geometry.Point(c[e].getAttribute("lon"),c[e].getAttribute("lat")));return new OpenLayers.Geometry.LineString(d)},parseAttributes:function(a){var b={};a=a.firstChild;for(var c,d;a;)1==a.nodeType&&a.firstChild&&(c=a.firstChild,3==c.nodeType||4==c.nodeType)&&(d=a.prefix?a.nodeName.split(":")[1]:a.nodeName,"trkseg"!=d&&"rtept"!=d&&
(b[d]=c.nodeValue)),a=a.nextSibling;return b},write:function(a,b){a=OpenLayers.Util.isArray(a)?a:[a];var c=this.createElementNS(this.namespaces.gpx,"gpx");c.setAttribute("version","1.1");c.setAttribute("creator",this.creator);this.setAttributes(c,{"xsi:schemaLocation":this.schemaLocation});b&&"object"==typeof b&&c.appendChild(this.buildMetadataNode(b));for(var d=0,e=a.length;d<e;d++)c.appendChild(this.buildFeatureNode(a[d]));return OpenLayers.Format.XML.prototype.write.apply(this,[c])},buildMetadataNode:function(a){for(var b=
["name","desc","author"],c=this.createElementNS(this.namespaces.gpx,"metadata"),d=0;d<b.length;d++){var e=b[d];if(a[e]){var f=this.createElementNS(this.namespaces.gpx,e);f.appendChild(this.createTextNode(a[e]));c.appendChild(f)}}return c},buildFeatureNode:function(a){var b=a.geometry,b=b.clone();this.internalProjection&&this.externalProjection&&b.transform(this.internalProjection,this.externalProjection);if("OpenLayers.Geometry.Point"==b.CLASS_NAME){var c=this.buildWptNode(b);this.appendAttributesNode(c,
a);return c}c=this.createElementNS(this.namespaces.gpx,"trk");this.appendAttributesNode(c,a);a=this.buildTrkSegNode(b);a=OpenLayers.Util.isArray(a)?a:[a];for(var b=0,d=a.length;b<d;b++)c.appendChild(a[b]);return c},buildTrkSegNode:function(a){var b,c,d,e;if("OpenLayers.Geometry.LineString"==a.CLASS_NAME||"OpenLayers.Geometry.LinearRing"==a.CLASS_NAME){b=this.createElementNS(this.namespaces.gpx,"trkseg");c=0;for(d=a.components.length;c<d;c++)e=a.components[c],b.appendChild(this.buildTrkPtNode(e));
return b}b=[];c=0;for(d=a.components.length;c<d;c++)b.push(this.buildTrkSegNode(a.components[c]));return b},buildTrkPtNode:function(a){var b=this.createElementNS(this.namespaces.gpx,"trkpt");b.setAttribute("lon",a.x);b.setAttribute("lat",a.y);return b},buildWptNode:function(a){var b=this.createElementNS(this.namespaces.gpx,"wpt");b.setAttribute("lon",a.x);b.setAttribute("lat",a.y);return b},appendAttributesNode:function(a,b){var c=this.createElementNS(this.namespaces.gpx,"name");c.appendChild(this.createTextNode(b.attributes.name||
b.id));a.appendChild(c);c=this.createElementNS(this.namespaces.gpx,"desc");c.appendChild(this.createTextNode(b.attributes.description||this.defaultDesc));a.appendChild(c)},CLASS_NAME:"OpenLayers.Format.GPX"});OpenLayers.Format.WMSDescribeLayer=OpenLayers.Class(OpenLayers.Format.XML.VersionedOGC,{defaultVersion:"1.1.1",CLASS_NAME:"OpenLayers.Format.WMSDescribeLayer"});OpenLayers.Format.WMSDescribeLayer.v1_1_1=OpenLayers.Class(OpenLayers.Format.WMSDescribeLayer,{initialize:function(a){OpenLayers.Format.WMSDescribeLayer.prototype.initialize.apply(this,[a])},read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));for(var b=a.documentElement.childNodes,c={layerDescriptions:[]},d,e,f=0;f<b.length;++f)if(d=b[f],e=d.nodeName,"LayerDescription"==e){e=d.getAttribute("name");var g="",h="",k="";d.getAttribute("owsType")?(g=d.getAttribute("owsType"),
h=d.getAttribute("owsURL")):""!=d.getAttribute("wfs")?(g="WFS",h=d.getAttribute("wfs")):""!=d.getAttribute("wcs")&&(g="WCS",h=d.getAttribute("wcs"));d=d.getElementsByTagName("Query");0<d.length&&((k=d[0].getAttribute("typeName"))||(k=d[0].getAttribute("typename")));d={layerName:e,owsType:g,owsURL:h,typeName:k};c.layerDescriptions.push(d);c.length=c.layerDescriptions.length;c[c.length-1]=d}else if("ServiceException"==e)return{error:(new OpenLayers.Format.OGCExceptionReport).read(a)};return c},CLASS_NAME:"OpenLayers.Format.WMSDescribeLayer.v1_1_1"});
OpenLayers.Format.WMSDescribeLayer.v1_1_0=OpenLayers.Format.WMSDescribeLayer.v1_1_1;OpenLayers.Layer.XYZ=OpenLayers.Class(OpenLayers.Layer.Grid,{isBaseLayer:!0,sphericalMercator:!1,zoomOffset:0,serverResolutions:null,initialize:function(a,b,c){if(c&&c.sphericalMercator||this.sphericalMercator)c=OpenLayers.Util.extend({projection:"EPSG:900913",numZoomLevels:19},c);OpenLayers.Layer.Grid.prototype.initialize.apply(this,[a||this.name,b||this.url,{},c])},clone:function(a){null==a&&(a=new OpenLayers.Layer.XYZ(this.name,this.url,this.getOptions()));return a=OpenLayers.Layer.Grid.prototype.clone.apply(this,
[a])},getURL:function(a){a=this.getXYZ(a);var b=this.url;OpenLayers.Util.isArray(b)&&(b=this.selectUrl(""+a.x+a.y+a.z,b));return OpenLayers.String.format(b,a)},getXYZ:function(a){var b=this.getServerResolution(),c=Math.round((a.left-this.maxExtent.left)/(b*this.tileSize.w));a=Math.round((this.maxExtent.top-a.top)/(b*this.tileSize.h));b=this.getServerZoom();if(this.wrapDateLine)var d=Math.pow(2,b),c=(c%d+d)%d;return{x:c,y:a,z:b}},setMap:function(a){OpenLayers.Layer.Grid.prototype.setMap.apply(this,
arguments);this.tileOrigin||(this.tileOrigin=new OpenLayers.LonLat(this.maxExtent.left,this.maxExtent.bottom))},CLASS_NAME:"OpenLayers.Layer.XYZ"});OpenLayers.Layer.OSM=OpenLayers.Class(OpenLayers.Layer.XYZ,{name:"OpenStreetMap",url:["https://a.tile.openstreetmap.org/${z}/${x}/${y}.png","https://b.tile.openstreetmap.org/${z}/${x}/${y}.png","https://c.tile.openstreetmap.org/${z}/${x}/${y}.png"],attribution:"&copy; <a href='http://www.openstreetmap.org/copyright'>OpenStreetMap</a> contributors",sphericalMercator:!0,wrapDateLine:!0,tileOptions:null,initialize:function(a,b,c){OpenLayers.Layer.XYZ.prototype.initialize.apply(this,arguments);this.tileOptions=
OpenLayers.Util.extend({crossOriginKeyword:"anonymous"},this.options&&this.options.tileOptions)},clone:function(a){null==a&&(a=new OpenLayers.Layer.OSM(this.name,this.url,this.getOptions()));return a=OpenLayers.Layer.XYZ.prototype.clone.apply(this,[a])},CLASS_NAME:"OpenLayers.Layer.OSM"});OpenLayers.Renderer=OpenLayers.Class({container:null,root:null,extent:null,locked:!1,size:null,resolution:null,map:null,featureDx:0,initialize:function(a,b){this.container=OpenLayers.Util.getElement(a);OpenLayers.Util.extend(this,b)},destroy:function(){this.map=this.resolution=this.size=this.extent=this.container=null},supported:function(){return!1},setExtent:function(a,b){this.extent=a.clone();if(this.map.baseLayer&&this.map.baseLayer.wrapDateLine){var c=a.getWidth()/this.map.getExtent().getWidth();
a=a.scale(1/c);this.extent=a.wrapDateLine(this.map.getMaxExtent()).scale(c)}b&&(this.resolution=null);return!0},setSize:function(a){this.size=a.clone();this.resolution=null},getResolution:function(){return this.resolution=this.resolution||this.map.getResolution()},drawFeature:function(a,b){null==b&&(b=a.style);if(a.geometry){var c=a.geometry.getBounds();if(c){var d;this.map.baseLayer&&this.map.baseLayer.wrapDateLine&&(d=this.map.getMaxExtent());c.intersectsBounds(this.extent,{worldBounds:d})?this.calculateFeatureDx(c,
d):b={display:"none"};c=this.drawGeometry(a.geometry,b,a.id);if("none"!=b.display&&b.label&&!1!==c){d=a.geometry.getCentroid();if(b.labelXOffset||b.labelYOffset){var e=isNaN(b.labelXOffset)?0:b.labelXOffset,f=isNaN(b.labelYOffset)?0:b.labelYOffset,g=this.getResolution();d.move(e*g,f*g)}this.drawText(a.id,b,d)}else this.removeText(a.id);return c}}},calculateFeatureDx:function(a,b){this.featureDx=0;if(b){var c=b.getWidth();this.featureDx=Math.round(((a.left+a.right)/2-(this.extent.left+this.extent.right)/
2)/c)*c}},drawGeometry:function(a,b,c){},drawText:function(a,b,c){},removeText:function(a){},clear:function(){},getFeatureIdFromEvent:function(a){},eraseFeatures:function(a){OpenLayers.Util.isArray(a)||(a=[a]);for(var b=0,c=a.length;b<c;++b){var d=a[b];this.eraseGeometry(d.geometry,d.id);this.removeText(d.id)}},eraseGeometry:function(a,b){},moveRoot:function(a){},getRenderLayerId:function(){return this.container.id},applyDefaultSymbolizer:function(a){var b=OpenLayers.Util.extend({},OpenLayers.Renderer.defaultSymbolizer);
!1===a.stroke&&(delete b.strokeWidth,delete b.strokeColor);!1===a.fill&&delete b.fillColor;OpenLayers.Util.extend(b,a);return b},CLASS_NAME:"OpenLayers.Renderer"});OpenLayers.Renderer.defaultSymbolizer={fillColor:"#000000",strokeColor:"#000000",strokeWidth:2,fillOpacity:1,strokeOpacity:1,pointRadius:0,labelAlign:"cm"};
OpenLayers.Renderer.symbol={star:[350,75,379,161,469,161,397,215,423,301,350,250,277,301,303,215,231,161,321,161,350,75],cross:[4,0,6,0,6,4,10,4,10,6,6,6,6,10,4,10,4,6,0,6,0,4,4,4,4,0],x:[0,0,25,0,50,35,75,0,100,0,65,50,100,100,75,100,50,65,25,100,0,100,35,50,0,0],square:[0,0,0,1,1,1,1,0,0,0],triangle:[0,10,10,10,5,0,0,10]};OpenLayers.Renderer.Canvas=OpenLayers.Class(OpenLayers.Renderer,{hitDetection:!0,hitOverflow:0,canvas:null,features:null,pendingRedraw:!1,cachedSymbolBounds:{},initialize:function(a,b){OpenLayers.Renderer.prototype.initialize.apply(this,arguments);this.root=document.createElement("canvas");this.container.appendChild(this.root);this.canvas=this.root.getContext("2d");this.features={};this.hitDetection&&(this.hitCanvas=document.createElement("canvas"),this.hitContext=this.hitCanvas.getContext("2d"))},
setExtent:function(){OpenLayers.Renderer.prototype.setExtent.apply(this,arguments);return!1},eraseGeometry:function(a,b){this.eraseFeatures(this.features[b][0])},supported:function(){return OpenLayers.CANVAS_SUPPORTED},setSize:function(a){this.size=a.clone();var b=this.root;b.style.width=a.w+"px";b.style.height=a.h+"px";b.width=a.w;b.height=a.h;this.resolution=null;this.hitDetection&&(b=this.hitCanvas,b.style.width=a.w+"px",b.style.height=a.h+"px",b.width=a.w,b.height=a.h)},drawFeature:function(a,
b){var c;if(a.geometry){b=this.applyDefaultSymbolizer(b||a.style);c=a.geometry.getBounds();var d;this.map.baseLayer&&this.map.baseLayer.wrapDateLine&&(d=this.map.getMaxExtent());d=c&&c.intersectsBounds(this.extent,{worldBounds:d});(c="none"!==b.display&&!!c&&d)?this.features[a.id]=[a,b]:delete this.features[a.id];this.pendingRedraw=!0}this.pendingRedraw&&!this.locked&&(this.redraw(),this.pendingRedraw=!1);return c},drawGeometry:function(a,b,c){var d=a.CLASS_NAME;if("OpenLayers.Geometry.Collection"==
d||"OpenLayers.Geometry.MultiPoint"==d||"OpenLayers.Geometry.MultiLineString"==d||"OpenLayers.Geometry.MultiPolygon"==d)for(d=0;d<a.components.length;d++)this.drawGeometry(a.components[d],b,c);else switch(a.CLASS_NAME){case "OpenLayers.Geometry.Point":this.drawPoint(a,b,c);break;case "OpenLayers.Geometry.LineString":this.drawLineString(a,b,c);break;case "OpenLayers.Geometry.LinearRing":this.drawLinearRing(a,b,c);break;case "OpenLayers.Geometry.Polygon":this.drawPolygon(a,b,c)}},drawExternalGraphic:function(a,
b,c){var d=new Image,e=b.title||b.graphicTitle;e&&(d.title=e);var f=b.graphicWidth||b.graphicHeight,g=b.graphicHeight||b.graphicWidth,f=f?f:2*b.pointRadius,g=g?g:2*b.pointRadius,h=void 0!=b.graphicXOffset?b.graphicXOffset:-(0.5*f),k=void 0!=b.graphicYOffset?b.graphicYOffset:-(0.5*g),l=b.graphicOpacity||b.fillOpacity;d.onload=OpenLayers.Function.bind(function(){if(this.features[c]){var b=this.getLocalXY(a),e=b[0],b=b[1];if(!isNaN(e)&&!isNaN(b)){var e=e+h|0,b=b+k|0,p=this.canvas;p.globalAlpha=l;var q=
OpenLayers.Renderer.Canvas.drawImageScaleFactor||(OpenLayers.Renderer.Canvas.drawImageScaleFactor=/android 2.1/.test(navigator.userAgent.toLowerCase())?320/window.screen.width:1);p.drawImage(d,e*q,b*q,f*q,g*q);this.hitDetection&&(this.setHitContextStyle("fill",c),this.hitContext.fillRect(e,b,f,g))}}},this);d.src=b.externalGraphic},drawNamedSymbol:function(a,b,c){var d,e,f,g;f=Math.PI/180;var h=OpenLayers.Renderer.symbol[b.graphicName];if(!h)throw Error(b.graphicName+" is not a valid symbol name");
if(!(!h.length||2>h.length||(a=this.getLocalXY(a),e=a[0],g=a[1],isNaN(e)||isNaN(g)))){this.canvas.lineCap="round";this.canvas.lineJoin="round";this.hitDetection&&(this.hitContext.lineCap="round",this.hitContext.lineJoin="round");if(b.graphicName in this.cachedSymbolBounds)d=this.cachedSymbolBounds[b.graphicName];else{d=new OpenLayers.Bounds;for(a=0;a<h.length;a+=2)d.extend(new OpenLayers.LonLat(h[a],h[a+1]));this.cachedSymbolBounds[b.graphicName]=d}this.canvas.save();this.hitDetection&&this.hitContext.save();
this.canvas.translate(e,g);this.hitDetection&&this.hitContext.translate(e,g);a=f*b.rotation;isNaN(a)||(this.canvas.rotate(a),this.hitDetection&&this.hitContext.rotate(a));f=2*b.pointRadius/Math.max(d.getWidth(),d.getHeight());this.canvas.scale(f,f);this.hitDetection&&this.hitContext.scale(f,f);a=d.getCenterLonLat().lon;d=d.getCenterLonLat().lat;this.canvas.translate(-a,-d);this.hitDetection&&this.hitContext.translate(-a,-d);g=b.strokeWidth;b.strokeWidth=g/f;if(!1!==b.fill){this.setCanvasStyle("fill",
b);this.canvas.beginPath();for(a=0;a<h.length;a+=2)d=h[a],e=h[a+1],0==a&&this.canvas.moveTo(d,e),this.canvas.lineTo(d,e);this.canvas.closePath();this.canvas.fill();if(this.hitDetection){this.setHitContextStyle("fill",c,b);this.hitContext.beginPath();for(a=0;a<h.length;a+=2)d=h[a],e=h[a+1],0==a&&this.canvas.moveTo(d,e),this.hitContext.lineTo(d,e);this.hitContext.closePath();this.hitContext.fill()}}if(!1!==b.stroke){this.setCanvasStyle("stroke",b);this.canvas.beginPath();for(a=0;a<h.length;a+=2)d=h[a],
e=h[a+1],0==a&&this.canvas.moveTo(d,e),this.canvas.lineTo(d,e);this.canvas.closePath();this.canvas.stroke();if(this.hitDetection){this.setHitContextStyle("stroke",c,b,f);this.hitContext.beginPath();for(a=0;a<h.length;a+=2)d=h[a],e=h[a+1],0==a&&this.hitContext.moveTo(d,e),this.hitContext.lineTo(d,e);this.hitContext.closePath();this.hitContext.stroke()}}b.strokeWidth=g;this.canvas.restore();this.hitDetection&&this.hitContext.restore();this.setCanvasStyle("reset")}},setCanvasStyle:function(a,b){"fill"===
a?(this.canvas.globalAlpha=b.fillOpacity,this.canvas.fillStyle=b.fillColor):"stroke"===a?(this.canvas.globalAlpha=b.strokeOpacity,this.canvas.strokeStyle=b.strokeColor,this.canvas.lineWidth=b.strokeWidth):(this.canvas.globalAlpha=0,this.canvas.lineWidth=1)},featureIdToHex:function(a){a=Number(a.split("_").pop())+1;16777216<=a&&(this.hitOverflow=a-16777215,a=a%16777216+1);a="000000"+a.toString(16);var b=a.length;return a="#"+a.substring(b-6,b)},setHitContextStyle:function(a,b,c,d){b=this.featureIdToHex(b);
"fill"==a?(this.hitContext.globalAlpha=1,this.hitContext.fillStyle=b):"stroke"==a?(this.hitContext.globalAlpha=1,this.hitContext.strokeStyle=b,"undefined"===typeof d?this.hitContext.lineWidth=c.strokeWidth+2:isNaN(d)||(this.hitContext.lineWidth=c.strokeWidth+2/d)):(this.hitContext.globalAlpha=0,this.hitContext.lineWidth=1)},drawPoint:function(a,b,c){if(!1!==b.graphic)if(b.externalGraphic)this.drawExternalGraphic(a,b,c);else if(b.graphicName&&"circle"!=b.graphicName)this.drawNamedSymbol(a,b,c);else{var d=
this.getLocalXY(a);a=d[0];d=d[1];if(!isNaN(a)&&!isNaN(d)){var e=2*Math.PI,f=b.pointRadius;!1!==b.fill&&(this.setCanvasStyle("fill",b),this.canvas.beginPath(),this.canvas.arc(a,d,f,0,e,!0),this.canvas.fill(),this.hitDetection&&(this.setHitContextStyle("fill",c,b),this.hitContext.beginPath(),this.hitContext.arc(a,d,f,0,e,!0),this.hitContext.fill()));!1!==b.stroke&&(this.setCanvasStyle("stroke",b),this.canvas.beginPath(),this.canvas.arc(a,d,f,0,e,!0),this.canvas.stroke(),this.hitDetection&&(this.setHitContextStyle("stroke",
c,b),this.hitContext.beginPath(),this.hitContext.arc(a,d,f,0,e,!0),this.hitContext.stroke()),this.setCanvasStyle("reset"))}}},drawLineString:function(a,b,c){b=OpenLayers.Util.applyDefaults({fill:!1},b);this.drawLinearRing(a,b,c)},drawLinearRing:function(a,b,c){!1!==b.fill&&(this.setCanvasStyle("fill",b),this.renderPath(this.canvas,a,b,c,"fill"),this.hitDetection&&(this.setHitContextStyle("fill",c,b),this.renderPath(this.hitContext,a,b,c,"fill")));!1!==b.stroke&&(this.setCanvasStyle("stroke",b),this.renderPath(this.canvas,
a,b,c,"stroke"),this.hitDetection&&(this.setHitContextStyle("stroke",c,b),this.renderPath(this.hitContext,a,b,c,"stroke")));this.setCanvasStyle("reset")},renderPath:function(a,b,c,d,e){b=b.components;c=b.length;a.beginPath();d=this.getLocalXY(b[0]);var f=d[1];if(!isNaN(d[0])&&!isNaN(f)){a.moveTo(d[0],d[1]);for(d=1;d<c;++d)f=this.getLocalXY(b[d]),a.lineTo(f[0],f[1]);"fill"===e?a.fill():a.stroke()}},drawPolygon:function(a,b,c){a=a.components;var d=a.length;this.drawLinearRing(a[0],b,c);for(var e=1;e<
d;++e)this.canvas.globalCompositeOperation="destination-out",this.hitDetection&&(this.hitContext.globalCompositeOperation="destination-out"),this.drawLinearRing(a[e],OpenLayers.Util.applyDefaults({stroke:!1,fillOpacity:1},b),c),this.canvas.globalCompositeOperation="source-over",this.hitDetection&&(this.hitContext.globalCompositeOperation="source-over"),this.drawLinearRing(a[e],OpenLayers.Util.applyDefaults({fill:!1},b),c)},drawText:function(a,b){var c=this.getLocalXY(a);this.setCanvasStyle("reset");
this.canvas.fillStyle=b.fontColor;this.canvas.globalAlpha=b.fontOpacity||1;var d=[b.fontStyle?b.fontStyle:"normal","normal",b.fontWeight?b.fontWeight:"normal",b.fontSize?b.fontSize:"1em",b.fontFamily?b.fontFamily:"sans-serif"].join(" "),e=b.label.split("\n"),f=e.length;if(this.canvas.fillText){this.canvas.font=d;this.canvas.textAlign=OpenLayers.Renderer.Canvas.LABEL_ALIGN[b.labelAlign[0]]||"center";this.canvas.textBaseline=OpenLayers.Renderer.Canvas.LABEL_ALIGN[b.labelAlign[1]]||"middle";var g=OpenLayers.Renderer.Canvas.LABEL_FACTOR[b.labelAlign[1]];
null==g&&(g=-0.5);d=this.canvas.measureText("Mg").height||this.canvas.measureText("xx").width;c[1]+=d*g*(f-1);for(g=0;g<f;g++)b.labelOutlineWidth&&(this.canvas.save(),this.canvas.globalAlpha=b.labelOutlineOpacity||b.fontOpacity||1,this.canvas.strokeStyle=b.labelOutlineColor,this.canvas.lineWidth=b.labelOutlineWidth,this.canvas.strokeText(e[g],c[0],c[1]+d*g+1),this.canvas.restore()),this.canvas.fillText(e[g],c[0],c[1]+d*g)}else if(this.canvas.mozDrawText){this.canvas.mozTextStyle=d;var h=OpenLayers.Renderer.Canvas.LABEL_FACTOR[b.labelAlign[0]];
null==h&&(h=-0.5);g=OpenLayers.Renderer.Canvas.LABEL_FACTOR[b.labelAlign[1]];null==g&&(g=-0.5);d=this.canvas.mozMeasureText("xx");c[1]+=d*(1+g*f);for(g=0;g<f;g++){var k=c[0]+h*this.canvas.mozMeasureText(e[g]),l=c[1]+g*d;this.canvas.translate(k,l);this.canvas.mozDrawText(e[g]);this.canvas.translate(-k,-l)}}this.setCanvasStyle("reset")},getLocalXY:function(a){var b=this.getResolution(),c=this.extent;return[(a.x-this.featureDx)/b+-c.left/b,c.top/b-a.y/b]},clear:function(){var a=this.root.height,b=this.root.width;
this.canvas.clearRect(0,0,b,a);this.features={};this.hitDetection&&this.hitContext.clearRect(0,0,b,a)},getFeatureIdFromEvent:function(a){var b;if(this.hitDetection&&"none"!==this.root.style.display&&!this.map.dragging&&(a=a.xy,a=this.hitContext.getImageData(a.x|0,a.y|0,1,1).data,255===a[3]&&(a=a[2]+256*(a[1]+256*a[0])))){a="OpenLayers_Feature_Vector_"+(a-1+this.hitOverflow);try{b=this.features[a][0]}catch(c){}}return b},eraseFeatures:function(a){OpenLayers.Util.isArray(a)||(a=[a]);for(var b=0;b<a.length;++b)delete this.features[a[b].id];
this.redraw()},redraw:function(){if(!this.locked){var a=this.root.height,b=this.root.width;this.canvas.clearRect(0,0,b,a);this.hitDetection&&this.hitContext.clearRect(0,0,b,a);var a=[],c,d,e=this.map.baseLayer&&this.map.baseLayer.wrapDateLine&&this.map.getMaxExtent(),f;for(f in this.features)this.features.hasOwnProperty(f)&&(b=this.features[f][0],c=b.geometry,this.calculateFeatureDx(c.getBounds(),e),d=this.features[f][1],this.drawGeometry(c,d,b.id),d.label&&a.push([b,d]));b=0;for(c=a.length;b<c;++b)f=
a[b],this.drawText(f[0].geometry.getCentroid(),f[1])}},CLASS_NAME:"OpenLayers.Renderer.Canvas"});OpenLayers.Renderer.Canvas.LABEL_ALIGN={l:"left",r:"right",t:"top",b:"bottom"};OpenLayers.Renderer.Canvas.LABEL_FACTOR={l:0,r:-1,t:0,b:-1};OpenLayers.Renderer.Canvas.drawImageScaleFactor=null;OpenLayers.Format.OSM=OpenLayers.Class(OpenLayers.Format.XML,{checkTags:!1,interestingTagsExclude:null,areaTags:null,initialize:function(a){var b={interestingTagsExclude:"source source_ref source:ref history attribution created_by".split(" "),areaTags:"area building leisure tourism ruins historic landuse military natural sport".split(" ")},b=OpenLayers.Util.extend(b,a),c={};for(a=0;a<b.interestingTagsExclude.length;a++)c[b.interestingTagsExclude[a]]=!0;b.interestingTagsExclude=c;c={};for(a=0;a<b.areaTags.length;a++)c[b.areaTags[a]]=
!0;b.areaTags=c;this.externalProjection=new OpenLayers.Projection("EPSG:4326");OpenLayers.Format.XML.prototype.initialize.apply(this,[b])},read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));var b=this.getNodes(a),c=this.getWays(a);a=Array(c.length);for(var d=0;d<c.length;d++){for(var e=Array(c[d].nodes.length),f=this.isWayArea(c[d])?1:0,g=0;g<c[d].nodes.length;g++){var h=b[c[d].nodes[g]],k=new OpenLayers.Geometry.Point(h.lon,h.lat);k.osm_id=parseInt(c[d].nodes[g]);
e[g]=k;h.used=!0}h=null;h=f?new OpenLayers.Geometry.Polygon(new OpenLayers.Geometry.LinearRing(e)):new OpenLayers.Geometry.LineString(e);this.internalProjection&&this.externalProjection&&h.transform(this.externalProjection,this.internalProjection);e=new OpenLayers.Feature.Vector(h,c[d].tags);e.osm_id=parseInt(c[d].id);e.fid="way."+e.osm_id;a[d]=e}for(var l in b){h=b[l];if(!h.used||this.checkTags){c=null;if(this.checkTags){c=this.getTags(h.node,!0);if(h.used&&!c[1])continue;c=c[0]}else c=this.getTags(h.node);
e=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(h.lon,h.lat),c);this.internalProjection&&this.externalProjection&&e.geometry.transform(this.externalProjection,this.internalProjection);e.osm_id=parseInt(l);e.fid="node."+e.osm_id;a.push(e)}h.node=null}return a},getNodes:function(a){a=a.getElementsByTagName("node");for(var b={},c=0;c<a.length;c++){var d=a[c],e=d.getAttribute("id");b[e]={lat:d.getAttribute("lat"),lon:d.getAttribute("lon"),node:d}}return b},getWays:function(a){a=a.getElementsByTagName("way");
for(var b=[],c=0;c<a.length;c++){var d=a[c],e={id:d.getAttribute("id")};e.tags=this.getTags(d);d=d.getElementsByTagName("nd");e.nodes=Array(d.length);for(var f=0;f<d.length;f++)e.nodes[f]=d[f].getAttribute("ref");b.push(e)}return b},getTags:function(a,b){for(var c=a.getElementsByTagName("tag"),d={},e=!1,f=0;f<c.length;f++){var g=c[f].getAttribute("k");d[g]=c[f].getAttribute("v");b&&(this.interestingTagsExclude[g]||(e=!0))}return b?[d,e]:d},isWayArea:function(a){var b=!1,c=!1;a.nodes[0]==a.nodes[a.nodes.length-
1]&&(b=!0);if(this.checkTags)for(var d in a.tags)if(this.areaTags[d]){c=!0;break}return b&&(this.checkTags?c:!0)},write:function(a){OpenLayers.Util.isArray(a)||(a=[a]);this.osm_id=1;this.created_nodes={};var b=this.createElementNS(null,"osm");b.setAttribute("version","0.5");b.setAttribute("generator","OpenLayers "+OpenLayers.VERSION_NUMBER);for(var c=a.length-1;0<=c;c--)for(var d=this.createFeatureNodes(a[c]),e=0;e<d.length;e++)b.appendChild(d[e]);return OpenLayers.Format.XML.prototype.write.apply(this,
[b])},createFeatureNodes:function(a){var b=[],c=a.geometry.CLASS_NAME,c=c.substring(c.lastIndexOf(".")+1),c=c.toLowerCase();(c=this.createXML[c])&&(b=c.apply(this,[a]));return b},createXML:{point:function(a){var b=null,c=a.geometry?a.geometry:a;this.internalProjection&&this.externalProjection&&(c=c.clone(),c.transform(this.internalProjection,this.externalProjection));var d=!1;a.osm_id?(b=a.osm_id,this.created_nodes[b]&&(d=!0)):(b=-this.osm_id,this.osm_id++);var e=d?this.created_nodes[b]:this.createElementNS(null,
"node");this.created_nodes[b]=e;e.setAttribute("id",b);e.setAttribute("lon",c.x);e.setAttribute("lat",c.y);a.attributes&&this.serializeTags(a,e);this.setState(a,e);return d?[]:[e]},linestring:function(a){var b,c=[],d=a.geometry;a.osm_id?b=a.osm_id:(b=-this.osm_id,this.osm_id++);var e=this.createElementNS(null,"way");e.setAttribute("id",b);for(b=0;b<d.components.length;b++){var f=this.createXML.point.apply(this,[d.components[b]]);if(f.length){var f=f[0],g=f.getAttribute("id");c.push(f)}else g=d.components[b].osm_id,
f=this.created_nodes[g];this.setState(a,f);f=this.createElementNS(null,"nd");f.setAttribute("ref",g);e.appendChild(f)}this.serializeTags(a,e);c.push(e);return c},polygon:function(a){var b=OpenLayers.Util.extend({area:"yes"},a.attributes),b=new OpenLayers.Feature.Vector(a.geometry.components[0],b);b.osm_id=a.osm_id;return this.createXML.linestring.apply(this,[b])}},serializeTags:function(a,b){for(var c in a.attributes){var d=this.createElementNS(null,"tag");d.setAttribute("k",c);d.setAttribute("v",
a.attributes[c]);b.appendChild(d)}},setState:function(a,b){if(a.state){var c=null;switch(a.state){case OpenLayers.State.UPDATE:case OpenLayers.State.DELETE:c="delete"}c&&b.setAttribute("action",c)}},CLASS_NAME:"OpenLayers.Format.OSM"});OpenLayers.Handler.Keyboard=OpenLayers.Class(OpenLayers.Handler,{KEY_EVENTS:["keydown","keyup"],eventListener:null,observeElement:null,initialize:function(a,b,c){OpenLayers.Handler.prototype.initialize.apply(this,arguments);this.eventListener=OpenLayers.Function.bindAsEventListener(this.handleKeyEvent,this)},destroy:function(){this.deactivate();this.eventListener=null;OpenLayers.Handler.prototype.destroy.apply(this,arguments)},activate:function(){if(OpenLayers.Handler.prototype.activate.apply(this,
arguments)){this.observeElement=this.observeElement||document;for(var a=0,b=this.KEY_EVENTS.length;a<b;a++)OpenLayers.Event.observe(this.observeElement,this.KEY_EVENTS[a],this.eventListener);return!0}return!1},deactivate:function(){var a=!1;if(OpenLayers.Handler.prototype.deactivate.apply(this,arguments)){for(var a=0,b=this.KEY_EVENTS.length;a<b;a++)OpenLayers.Event.stopObserving(this.observeElement,this.KEY_EVENTS[a],this.eventListener);a=!0}return a},handleKeyEvent:function(a){this.checkModifiers(a)&&
this.callback(a.type,[a])},CLASS_NAME:"OpenLayers.Handler.Keyboard"});OpenLayers.Control.ModifyFeature=OpenLayers.Class(OpenLayers.Control,{documentDrag:!1,geometryTypes:null,clickout:!0,toggle:!0,standalone:!1,layer:null,feature:null,vertex:null,vertices:null,virtualVertices:null,handlers:null,deleteCodes:null,virtualStyle:null,vertexRenderIntent:null,mode:null,createVertices:!0,modified:!1,radiusHandle:null,dragHandle:null,onModificationStart:function(){},onModification:function(){},onModificationEnd:function(){},initialize:function(a,b){b=b||{};this.layer=a;this.vertices=
[];this.virtualVertices=[];this.virtualStyle=OpenLayers.Util.extend({},this.layer.style||this.layer.styleMap.createSymbolizer(null,b.vertexRenderIntent));this.virtualStyle.fillOpacity=0.3;this.virtualStyle.strokeOpacity=0.3;this.deleteCodes=[46,68];this.mode=OpenLayers.Control.ModifyFeature.RESHAPE;OpenLayers.Control.prototype.initialize.apply(this,[b]);OpenLayers.Util.isArray(this.deleteCodes)||(this.deleteCodes=[this.deleteCodes]);var c={documentDrag:this.documentDrag,stopDown:!1};this.handlers=
{keyboard:new OpenLayers.Handler.Keyboard(this,{keydown:this.handleKeypress}),drag:new OpenLayers.Handler.Drag(this,{down:function(a){this.vertex=null;(a=this.layer.getFeatureFromEvent(this.handlers.drag.evt))?this.dragStart(a):this.clickout&&(this._unselect=this.feature)},move:function(a){delete this._unselect;this.vertex&&this.dragVertex(this.vertex,a)},up:function(){this.handlers.drag.stopDown=!1;this._unselect&&(this.unselectFeature(this._unselect),delete this._unselect)},done:function(a){this.vertex&&
this.dragComplete(this.vertex)}},c)}},destroy:function(){this.map&&this.map.events.un({removelayer:this.handleMapEvents,changelayer:this.handleMapEvents,scope:this});this.layer=null;OpenLayers.Control.prototype.destroy.apply(this,[])},activate:function(){this.moveLayerToTop();this.map.events.on({removelayer:this.handleMapEvents,changelayer:this.handleMapEvents,scope:this});return this.handlers.keyboard.activate()&&this.handlers.drag.activate()&&OpenLayers.Control.prototype.activate.apply(this,arguments)},
deactivate:function(){var a=!1;OpenLayers.Control.prototype.deactivate.apply(this,arguments)&&(this.moveLayerBack(),this.map.events.un({removelayer:this.handleMapEvents,changelayer:this.handleMapEvents,scope:this}),this.layer.removeFeatures(this.vertices,{silent:!0}),this.layer.removeFeatures(this.virtualVertices,{silent:!0}),this.vertices=[],this.handlers.drag.deactivate(),this.handlers.keyboard.deactivate(),(a=this.feature)&&(a.geometry&&a.layer)&&this.unselectFeature(a),a=!0);return a},beforeSelectFeature:function(a){return this.layer.events.triggerEvent("beforefeaturemodified",
{feature:a})},selectFeature:function(a){if(!(this.feature===a||this.geometryTypes&&-1==OpenLayers.Util.indexOf(this.geometryTypes,a.geometry.CLASS_NAME))){!1!==this.beforeSelectFeature(a)&&(this.feature&&this.unselectFeature(this.feature),this.feature=a,this.layer.selectedFeatures.push(a),this.layer.drawFeature(a,"select"),this.modified=!1,this.resetVertices(),this.onModificationStart(this.feature));var b=a.modified;!a.geometry||b&&b.geometry||(this._originalGeometry=a.geometry.clone())}},unselectFeature:function(a){this.layer.removeFeatures(this.vertices,
{silent:!0});this.vertices=[];this.layer.destroyFeatures(this.virtualVertices,{silent:!0});this.virtualVertices=[];this.dragHandle&&(this.layer.destroyFeatures([this.dragHandle],{silent:!0}),delete this.dragHandle);this.radiusHandle&&(this.layer.destroyFeatures([this.radiusHandle],{silent:!0}),delete this.radiusHandle);this.layer.drawFeature(this.feature,"default");this.feature=null;OpenLayers.Util.removeItem(this.layer.selectedFeatures,a);this.onModificationEnd(a);this.layer.events.triggerEvent("afterfeaturemodified",
{feature:a,modified:this.modified});this.modified=!1},dragStart:function(a){var b="OpenLayers.Geometry.Point"==a.geometry.CLASS_NAME;this.standalone||(a._sketch||!b)&&a._sketch||(this.toggle&&this.feature===a&&(this._unselect=a),this.selectFeature(a));if(a._sketch||b)this.vertex=a,this.handlers.drag.stopDown=!0},dragVertex:function(a,b){var c=this.map.getLonLatFromViewPortPx(b),d=a.geometry;d.move(c.lon-d.x,c.lat-d.y);this.modified=!0;"OpenLayers.Geometry.Point"==this.feature.geometry.CLASS_NAME?
this.layer.events.triggerEvent("vertexmodified",{vertex:a.geometry,feature:this.feature,pixel:b}):(a._index?(a.geometry.parent.addComponent(a.geometry,a._index),delete a._index,OpenLayers.Util.removeItem(this.virtualVertices,a),this.vertices.push(a)):a==this.dragHandle?(this.layer.removeFeatures(this.vertices,{silent:!0}),this.vertices=[],this.radiusHandle&&(this.layer.destroyFeatures([this.radiusHandle],{silent:!0}),this.radiusHandle=null)):a!==this.radiusHandle&&this.layer.events.triggerEvent("vertexmodified",
{vertex:a.geometry,feature:this.feature,pixel:b}),0<this.virtualVertices.length&&(this.layer.destroyFeatures(this.virtualVertices,{silent:!0}),this.virtualVertices=[]),this.layer.drawFeature(this.feature,this.standalone?void 0:"select"));this.layer.drawFeature(a)},dragComplete:function(a){this.resetVertices();this.setFeatureState();this.onModification(this.feature);this.layer.events.triggerEvent("featuremodified",{feature:this.feature})},setFeatureState:function(){if(this.feature.state!=OpenLayers.State.INSERT&&
this.feature.state!=OpenLayers.State.DELETE&&(this.feature.state=OpenLayers.State.UPDATE,this.modified&&this._originalGeometry)){var a=this.feature;a.modified=OpenLayers.Util.extend(a.modified,{geometry:this._originalGeometry});delete this._originalGeometry}},resetVertices:function(){0<this.vertices.length&&(this.layer.removeFeatures(this.vertices,{silent:!0}),this.vertices=[]);0<this.virtualVertices.length&&(this.layer.removeFeatures(this.virtualVertices,{silent:!0}),this.virtualVertices=[]);this.dragHandle&&
(this.layer.destroyFeatures([this.dragHandle],{silent:!0}),this.dragHandle=null);this.radiusHandle&&(this.layer.destroyFeatures([this.radiusHandle],{silent:!0}),this.radiusHandle=null);this.feature&&"OpenLayers.Geometry.Point"!=this.feature.geometry.CLASS_NAME&&(this.mode&OpenLayers.Control.ModifyFeature.DRAG&&this.collectDragHandle(),this.mode&(OpenLayers.Control.ModifyFeature.ROTATE|OpenLayers.Control.ModifyFeature.RESIZE)&&this.collectRadiusHandle(),this.mode&OpenLayers.Control.ModifyFeature.RESHAPE&&
(this.mode&OpenLayers.Control.ModifyFeature.RESIZE||this.collectVertices()))},handleKeypress:function(a){var b=a.keyCode;this.feature&&-1!=OpenLayers.Util.indexOf(this.deleteCodes,b)&&(b=this.layer.getFeatureFromEvent(this.handlers.drag.evt))&&(-1!=OpenLayers.Util.indexOf(this.vertices,b)&&!this.handlers.drag.dragging&&b.geometry.parent)&&(b.geometry.parent.removeComponent(b.geometry),this.layer.events.triggerEvent("vertexremoved",{vertex:b.geometry,feature:this.feature,pixel:a.xy}),this.layer.drawFeature(this.feature,
this.standalone?void 0:"select"),this.modified=!0,this.resetVertices(),this.setFeatureState(),this.onModification(this.feature),this.layer.events.triggerEvent("featuremodified",{feature:this.feature}))},collectVertices:function(){function a(c){var d,e,f;if("OpenLayers.Geometry.Point"==c.CLASS_NAME)e=new OpenLayers.Feature.Vector(c),e._sketch=!0,e.renderIntent=b.vertexRenderIntent,b.vertices.push(e);else{f=c.components.length;"OpenLayers.Geometry.LinearRing"==c.CLASS_NAME&&(f-=1);for(d=0;d<f;++d)e=
c.components[d],"OpenLayers.Geometry.Point"==e.CLASS_NAME?(e=new OpenLayers.Feature.Vector(e),e._sketch=!0,e.renderIntent=b.vertexRenderIntent,b.vertices.push(e)):a(e);if(b.createVertices&&"OpenLayers.Geometry.MultiPoint"!=c.CLASS_NAME)for(d=0,f=c.components.length;d<f-1;++d){e=c.components[d];var g=c.components[d+1];"OpenLayers.Geometry.Point"==e.CLASS_NAME&&"OpenLayers.Geometry.Point"==g.CLASS_NAME&&(e=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point((e.x+g.x)/2,(e.y+g.y)/2),null,b.virtualStyle),
e.geometry.parent=c,e._index=d+1,e._sketch=!0,b.virtualVertices.push(e))}}}this.vertices=[];this.virtualVertices=[];var b=this;a.call(this,this.feature.geometry);this.layer.addFeatures(this.virtualVertices,{silent:!0});this.layer.addFeatures(this.vertices,{silent:!0})},collectDragHandle:function(){var a=this.feature.geometry,b=a.getBounds().getCenterLonLat(),b=new OpenLayers.Geometry.Point(b.lon,b.lat),c=new OpenLayers.Feature.Vector(b);b.move=function(b,c){OpenLayers.Geometry.Point.prototype.move.call(this,
b,c);a.move(b,c)};c._sketch=!0;this.dragHandle=c;this.dragHandle.renderIntent=this.vertexRenderIntent;this.layer.addFeatures([this.dragHandle],{silent:!0})},collectRadiusHandle:function(){var a=this.feature.geometry,b=a.getBounds(),c=b.getCenterLonLat(),d=new OpenLayers.Geometry.Point(c.lon,c.lat),b=new OpenLayers.Geometry.Point(b.right,b.bottom),c=new OpenLayers.Feature.Vector(b),e=this.mode&OpenLayers.Control.ModifyFeature.RESIZE,f=this.mode&OpenLayers.Control.ModifyFeature.RESHAPE,g=this.mode&
OpenLayers.Control.ModifyFeature.ROTATE;b.move=function(b,c){OpenLayers.Geometry.Point.prototype.move.call(this,b,c);var l=this.x-d.x,m=this.y-d.y,n=l-b,p=m-c;if(g){var q=Math.atan2(p,n),q=Math.atan2(m,l)-q,q=q*(180/Math.PI);a.rotate(q,d)}if(e){var r;f?(m/=p,r=l/n/m):(n=Math.sqrt(n*n+p*p),m=Math.sqrt(l*l+m*m)/n);a.resize(m,d,r)}};c._sketch=!0;this.radiusHandle=c;this.radiusHandle.renderIntent=this.vertexRenderIntent;this.layer.addFeatures([this.radiusHandle],{silent:!0})},setMap:function(a){this.handlers.drag.setMap(a);
OpenLayers.Control.prototype.setMap.apply(this,arguments)},handleMapEvents:function(a){"removelayer"!=a.type&&"order"!=a.property||this.moveLayerToTop()},moveLayerToTop:function(){var a=Math.max(this.map.Z_INDEX_BASE.Feature-1,this.layer.getZIndex())+1;this.layer.setZIndex(a)},moveLayerBack:function(){var a=this.layer.getZIndex()-1;a>=this.map.Z_INDEX_BASE.Feature?this.layer.setZIndex(a):this.map.setLayerZIndex(this.layer,this.map.getLayerIndex(this.layer))},CLASS_NAME:"OpenLayers.Control.ModifyFeature"});
OpenLayers.Control.ModifyFeature.RESHAPE=1;OpenLayers.Control.ModifyFeature.RESIZE=2;OpenLayers.Control.ModifyFeature.ROTATE=4;OpenLayers.Control.ModifyFeature.DRAG=8;OpenLayers.Layer.Bing=OpenLayers.Class(OpenLayers.Layer.XYZ,{key:null,serverResolutions:[156543.03390625,78271.516953125,39135.7584765625,19567.87923828125,9783.939619140625,4891.9698095703125,2445.9849047851562,1222.9924523925781,611.4962261962891,305.74811309814453,152.87405654907226,76.43702827453613,38.218514137268066,19.109257068634033,9.554628534317017,4.777314267158508,2.388657133579254,1.194328566789627,0.5971642833948135,0.29858214169740677,0.14929107084870338,0.07464553542435169],attributionTemplate:'<span class="olBingAttribution ${type}"><div><a target="_blank" href="http://www.bing.com/maps/"><img src="${logo}" /></a></div>${copyrights}<a style="white-space: nowrap" target="_blank" href="http://www.microsoft.com/maps/product/terms.html">Terms of Use</a></span>',
metadata:null,protocolRegex:/^http:/i,type:"Road",culture:"en-US",metadataParams:null,tileOptions:null,protocol:~window.location.href.indexOf("http")?"":"http:",initialize:function(a){a=OpenLayers.Util.applyDefaults({sphericalMercator:!0},a);OpenLayers.Layer.XYZ.prototype.initialize.apply(this,[a.name||"Bing "+(a.type||this.type),null,a]);this.tileOptions=OpenLayers.Util.extend({crossOriginKeyword:"anonymous"},this.options.tileOptions);this.loadMetadata()},loadMetadata:function(){this._callbackId=
"_callback_"+this.id.replace(/\./g,"_");window[this._callbackId]=OpenLayers.Function.bind(OpenLayers.Layer.Bing.processMetadata,this);var a=OpenLayers.Util.applyDefaults({key:this.key,jsonp:this._callbackId,include:"ImageryProviders"},this.metadataParams),a=this.protocol+"//dev.virtualearth.net/REST/v1/Imagery/Metadata/"+this.type+"?"+OpenLayers.Util.getParameterString(a),b=document.createElement("script");b.type="text/javascript";b.src=a;b.id=this._callbackId;document.getElementsByTagName("head")[0].appendChild(b)},
initLayer:function(){var a=this.metadata.resourceSets[0].resources[0],b=a.imageUrl.replace("{quadkey}","${quadkey}"),b=b.replace("{culture}",this.culture),b=b.replace(this.protocolRegex,this.protocol);this.url=[];for(var c=0;c<a.imageUrlSubdomains.length;++c)this.url.push(b.replace("{subdomain}",a.imageUrlSubdomains[c]));this.addOptions({maxResolution:Math.min(this.serverResolutions[a.zoomMin],this.maxResolution||Number.POSITIVE_INFINITY),numZoomLevels:Math.min(a.zoomMax+1-a.zoomMin,this.numZoomLevels)},
!0);this.isBaseLayer||this.redraw();this.updateAttribution()},getURL:function(a){if(this.url){var b=this.getXYZ(a);a=b.x;for(var c=b.y,b=b.z,d=[],e=b;0<e;--e){var f="0",g=1<<e-1;0!=(a&g)&&f++;0!=(c&g)&&(f++,f++);d.push(f)}d=d.join("");a=this.selectUrl(""+a+c+b,this.url);return OpenLayers.String.format(a,{quadkey:d})}},updateAttribution:function(){var a=this.metadata;if(a.resourceSets&&this.map&&this.map.center){var b=a.resourceSets[0].resources[0],c=this.map.getExtent().transform(this.map.getProjectionObject(),
new OpenLayers.Projection("EPSG:4326")),d=b.imageryProviders||[],e=OpenLayers.Util.indexOf(this.serverResolutions,this.getServerResolution()),b="",f,g,h,k,l,m,n;g=0;for(h=d.length;g<h;++g)for(f=d[g],k=0,l=f.coverageAreas.length;k<l;++k)n=f.coverageAreas[k],m=OpenLayers.Bounds.fromArray(n.bbox,!0),c.intersectsBounds(m)&&(e<=n.zoomMax&&e>=n.zoomMin)&&(b+=f.attribution+" ");a=a.brandLogoUri.replace(this.protocolRegex,this.protocol);this.attribution=OpenLayers.String.format(this.attributionTemplate,{type:this.type.toLowerCase(),
logo:a,copyrights:b});this.map&&this.map.events.triggerEvent("changelayer",{layer:this,property:"attribution"})}},setMap:function(){OpenLayers.Layer.XYZ.prototype.setMap.apply(this,arguments);this.map.events.register("moveend",this,this.updateAttribution)},clone:function(a){null==a&&(a=new OpenLayers.Layer.Bing(this.options));return a=OpenLayers.Layer.XYZ.prototype.clone.apply(this,[a])},destroy:function(){this.map&&this.map.events.unregister("moveend",this,this.updateAttribution);OpenLayers.Layer.XYZ.prototype.destroy.apply(this,
arguments)},CLASS_NAME:"OpenLayers.Layer.Bing"});OpenLayers.Layer.Bing.processMetadata=function(a){this.metadata=a;this.initLayer();a=document.getElementById(this._callbackId);a.parentNode.removeChild(a);window[this._callbackId]=void 0;delete this._callbackId};OpenLayers.StyleMap=OpenLayers.Class({styles:null,extendDefault:!0,initialize:function(a,b){this.styles={"default":new OpenLayers.Style(OpenLayers.Feature.Vector.style["default"]),select:new OpenLayers.Style(OpenLayers.Feature.Vector.style.select),temporary:new OpenLayers.Style(OpenLayers.Feature.Vector.style.temporary),"delete":new OpenLayers.Style(OpenLayers.Feature.Vector.style["delete"])};if(a instanceof OpenLayers.Style)this.styles["default"]=a,this.styles.select=a,this.styles.temporary=a,this.styles["delete"]=
a;else if("object"==typeof a)for(var c in a)if(a[c]instanceof OpenLayers.Style)this.styles[c]=a[c];else if("object"==typeof a[c])this.styles[c]=new OpenLayers.Style(a[c]);else{this.styles["default"]=new OpenLayers.Style(a);this.styles.select=new OpenLayers.Style(a);this.styles.temporary=new OpenLayers.Style(a);this.styles["delete"]=new OpenLayers.Style(a);break}OpenLayers.Util.extend(this,b)},destroy:function(){for(var a in this.styles)this.styles[a].destroy();this.styles=null},createSymbolizer:function(a,
b){a||(a=new OpenLayers.Feature.Vector);this.styles[b]||(b="default");a.renderIntent=b;var c={};this.extendDefault&&"default"!=b&&(c=this.styles["default"].createSymbolizer(a));return OpenLayers.Util.extend(c,this.styles[b].createSymbolizer(a))},addUniqueValueRules:function(a,b,c,d){var e=[],f;for(f in c)e.push(new OpenLayers.Rule({symbolizer:c[f],context:d,filter:new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.EQUAL_TO,property:b,value:f})}));this.styles[a].addRules(e)},CLASS_NAME:"OpenLayers.StyleMap"});OpenLayers.Layer.Vector=OpenLayers.Class(OpenLayers.Layer,{isBaseLayer:!1,isFixed:!1,features:null,filter:null,selectedFeatures:null,unrenderedFeatures:null,reportError:!0,style:null,styleMap:null,strategies:null,protocol:null,renderers:["SVG","VML","Canvas"],renderer:null,rendererOptions:null,geometryType:null,drawn:!1,ratio:1,initialize:function(a,b){OpenLayers.Layer.prototype.initialize.apply(this,arguments);this.renderer&&this.renderer.supported()||this.assignRenderer();this.renderer&&this.renderer.supported()||
(this.renderer=null,this.displayError());this.styleMap||(this.styleMap=new OpenLayers.StyleMap);this.features=[];this.selectedFeatures=[];this.unrenderedFeatures={};if(this.strategies)for(var c=0,d=this.strategies.length;c<d;c++)this.strategies[c].setLayer(this)},destroy:function(){if(this.strategies){var a,b,c;b=0;for(c=this.strategies.length;b<c;b++)a=this.strategies[b],a.autoDestroy&&a.destroy();this.strategies=null}this.protocol&&(this.protocol.autoDestroy&&this.protocol.destroy(),this.protocol=
null);this.destroyFeatures();this.unrenderedFeatures=this.selectedFeatures=this.features=null;this.renderer&&this.renderer.destroy();this.drawn=this.geometryType=this.renderer=null;OpenLayers.Layer.prototype.destroy.apply(this,arguments)},clone:function(a){null==a&&(a=new OpenLayers.Layer.Vector(this.name,this.getOptions()));a=OpenLayers.Layer.prototype.clone.apply(this,[a]);for(var b=this.features,c=b.length,d=Array(c),e=0;e<c;++e)d[e]=b[e].clone();a.features=d;return a},refresh:function(a){this.calculateInRange()&&
this.visibility&&this.events.triggerEvent("refresh",a)},assignRenderer:function(){for(var a=0,b=this.renderers.length;a<b;a++){var c=this.renderers[a];if((c="function"==typeof c?c:OpenLayers.Renderer[c])&&c.prototype.supported()){this.renderer=new c(this.div,this.rendererOptions);break}}},displayError:function(){this.reportError&&OpenLayers.Console.userError(OpenLayers.i18n("browserNotSupported",{renderers:this.renderers.join("\n")}))},setMap:function(a){OpenLayers.Layer.prototype.setMap.apply(this,
arguments);if(this.renderer){this.renderer.map=this.map;var b=this.map.getSize();b.w*=this.ratio;b.h*=this.ratio;this.renderer.setSize(b)}else this.map.removeLayer(this)},afterAdd:function(){if(this.strategies){var a,b,c;b=0;for(c=this.strategies.length;b<c;b++)a=this.strategies[b],a.autoActivate&&a.activate()}},removeMap:function(a){this.drawn=!1;if(this.strategies){var b,c;b=0;for(c=this.strategies.length;b<c;b++)a=this.strategies[b],a.autoActivate&&a.deactivate()}},onMapResize:function(){OpenLayers.Layer.prototype.onMapResize.apply(this,
arguments);var a=this.map.getSize();a.w*=this.ratio;a.h*=this.ratio;this.renderer.setSize(a)},moveTo:function(a,b,c){OpenLayers.Layer.prototype.moveTo.apply(this,arguments);var d=!0;if(!c){this.renderer.root.style.visibility="hidden";var d=this.map.getSize(),e=d.w,d=d.h,e=e/2*this.ratio-e/2,d=d/2*this.ratio-d/2,e=e+this.map.layerContainerOriginPx.x,e=-Math.round(e),d=d+this.map.layerContainerOriginPx.y,d=-Math.round(d);this.div.style.left=e+"px";this.div.style.top=d+"px";e=this.map.getExtent().scale(this.ratio);
d=this.renderer.setExtent(e,b);this.renderer.root.style.visibility="visible";!0===OpenLayers.IS_GECKO&&(this.div.scrollLeft=this.div.scrollLeft);if(!b&&d)for(var f in this.unrenderedFeatures)e=this.unrenderedFeatures[f],this.drawFeature(e)}if(!this.drawn||b||!d)for(this.drawn=!0,f=0,d=this.features.length;f<d;f++)this.renderer.locked=f!==d-1,e=this.features[f],this.drawFeature(e)},display:function(a){OpenLayers.Layer.prototype.display.apply(this,arguments);var b=this.div.style.display;b!=this.renderer.root.style.display&&
(this.renderer.root.style.display=b)},addFeatures:function(a,b){OpenLayers.Util.isArray(a)||(a=[a]);var c=!b||!b.silent;if(c){var d={features:a};if(!1===this.events.triggerEvent("beforefeaturesadded",d))return;a=d.features}for(var d=[],e=0,f=a.length;e<f;e++){this.renderer.locked=e!=a.length-1?!0:!1;var g=a[e];if(this.geometryType&&!(g.geometry instanceof this.geometryType))throw new TypeError("addFeatures: component should be an "+this.geometryType.prototype.CLASS_NAME);g.layer=this;!g.style&&this.style&&
(g.style=OpenLayers.Util.extend({},this.style));if(c){if(!1===this.events.triggerEvent("beforefeatureadded",{feature:g}))continue;this.preFeatureInsert(g)}d.push(g);this.features.push(g);this.drawFeature(g);c&&(this.events.triggerEvent("featureadded",{feature:g}),this.onFeatureInsert(g))}c&&this.events.triggerEvent("featuresadded",{features:d})},removeFeatures:function(a,b){if(a&&0!==a.length){if(a===this.features)return this.removeAllFeatures(b);OpenLayers.Util.isArray(a)||(a=[a]);a===this.selectedFeatures&&
(a=a.slice());var c=!b||!b.silent;c&&this.events.triggerEvent("beforefeaturesremoved",{features:a});for(var d=a.length-1;0<=d;d--){this.renderer.locked=0!=d&&a[d-1].geometry?!0:!1;var e=a[d];delete this.unrenderedFeatures[e.id];c&&this.events.triggerEvent("beforefeatureremoved",{feature:e});this.features=OpenLayers.Util.removeItem(this.features,e);e.layer=null;e.geometry&&this.renderer.eraseFeatures(e);-1!=OpenLayers.Util.indexOf(this.selectedFeatures,e)&&OpenLayers.Util.removeItem(this.selectedFeatures,
e);c&&this.events.triggerEvent("featureremoved",{feature:e})}c&&this.events.triggerEvent("featuresremoved",{features:a})}},removeAllFeatures:function(a){a=!a||!a.silent;var b=this.features;a&&this.events.triggerEvent("beforefeaturesremoved",{features:b});for(var c,d=b.length-1;0<=d;d--)c=b[d],a&&this.events.triggerEvent("beforefeatureremoved",{feature:c}),c.layer=null,a&&this.events.triggerEvent("featureremoved",{feature:c});this.renderer.clear();this.features=[];this.unrenderedFeatures={};this.selectedFeatures=
[];a&&this.events.triggerEvent("featuresremoved",{features:b})},destroyFeatures:function(a,b){void 0==a&&(a=this.features);if(a){this.removeFeatures(a,b);for(var c=a.length-1;0<=c;c--)a[c].destroy()}},drawFeature:function(a,b){if(this.drawn){if("object"!=typeof b){b||a.state!==OpenLayers.State.DELETE||(b="delete");var c=b||a.renderIntent;(b=a.style||this.style)||(b=this.styleMap.createSymbolizer(a,c))}c=this.renderer.drawFeature(a,b);!1===c||null===c?this.unrenderedFeatures[a.id]=a:delete this.unrenderedFeatures[a.id]}},
eraseFeatures:function(a){this.renderer.eraseFeatures(a)},getFeatureFromEvent:function(a){if(!this.renderer)throw Error("getFeatureFromEvent called on layer with no renderer. This usually means you destroyed a layer, but not some handler which is associated with it.");var b=null;(a=this.renderer.getFeatureIdFromEvent(a))&&(b="string"===typeof a?this.getFeatureById(a):a);return b},getFeatureBy:function(a,b){for(var c=null,d=0,e=this.features.length;d<e;++d)if(this.features[d][a]==b){c=this.features[d];
break}return c},getFeatureById:function(a){return this.getFeatureBy("id",a)},getFeatureByFid:function(a){return this.getFeatureBy("fid",a)},getFeaturesByAttribute:function(a,b){var c,d,e=this.features.length,f=[];for(c=0;c<e;c++)(d=this.features[c])&&d.attributes&&d.attributes[a]===b&&f.push(d);return f},onFeatureInsert:function(a){},preFeatureInsert:function(a){},getDataExtent:function(){var a=null,b=this.features;if(b&&0<b.length)for(var c=null,d=0,e=b.length;d<e;d++)if(c=b[d].geometry)null===a&&
(a=new OpenLayers.Bounds),a.extend(c.getBounds());return a},CLASS_NAME:"OpenLayers.Layer.Vector"});OpenLayers.Layer.PointGrid=OpenLayers.Class(OpenLayers.Layer.Vector,{dx:null,dy:null,ratio:1.5,maxFeatures:250,rotation:0,origin:null,gridBounds:null,initialize:function(a){a=a||{};OpenLayers.Layer.Vector.prototype.initialize.apply(this,[a.name,a])},setMap:function(a){OpenLayers.Layer.Vector.prototype.setMap.apply(this,arguments);a.events.register("moveend",this,this.onMoveEnd)},removeMap:function(a){a.events.unregister("moveend",this,this.onMoveEnd);OpenLayers.Layer.Vector.prototype.removeMap.apply(this,
arguments)},setRatio:function(a){this.ratio=a;this.updateGrid(!0)},setMaxFeatures:function(a){this.maxFeatures=a;this.updateGrid(!0)},setSpacing:function(a,b){this.dx=a;this.dy=b||a;this.updateGrid(!0)},setOrigin:function(a){this.origin=a;this.updateGrid(!0)},getOrigin:function(){this.origin||(this.origin=this.map.getExtent().getCenterLonLat());return this.origin},setRotation:function(a){this.rotation=a;this.updateGrid(!0)},onMoveEnd:function(){this.updateGrid()},getViewBounds:function(){var a=this.map.getExtent();
if(this.rotation){var b=this.getOrigin(),b=new OpenLayers.Geometry.Point(b.lon,b.lat),a=a.toGeometry();a.rotate(-this.rotation,b);a=a.getBounds()}return a},updateGrid:function(a){if(a||this.invalidBounds()){var b=this.getViewBounds(),c=this.getOrigin();a=new OpenLayers.Geometry.Point(c.lon,c.lat);var d=b.getWidth(),e=b.getHeight(),f=d/e,g=Math.sqrt(this.dx*this.dy*this.maxFeatures/f),d=Math.min(d*this.ratio,g*f),e=Math.min(e*this.ratio,g),b=b.getCenterLonLat();this.gridBounds=new OpenLayers.Bounds(b.lon-
d/2,b.lat-e/2,b.lon+d/2,b.lat+e/2);for(var b=Math.floor(e/this.dy),d=Math.floor(d/this.dx),e=c.lon+this.dx*Math.ceil((this.gridBounds.left-c.lon)/this.dx),c=c.lat+this.dy*Math.ceil((this.gridBounds.bottom-c.lat)/this.dy),g=Array(b*d),h,k=0;k<d;++k)for(var f=e+k*this.dx,l=0;l<b;++l)h=c+l*this.dy,h=new OpenLayers.Geometry.Point(f,h),this.rotation&&h.rotate(this.rotation,a),g[k*b+l]=new OpenLayers.Feature.Vector(h);this.destroyFeatures(this.features,{silent:!0});this.addFeatures(g,{silent:!0})}},invalidBounds:function(){return!this.gridBounds||
!this.gridBounds.containsBounds(this.getViewBounds())},CLASS_NAME:"OpenLayers.Layer.PointGrid"});OpenLayers.Handler.MouseWheel=OpenLayers.Class(OpenLayers.Handler,{wheelListener:null,interval:0,maxDelta:Number.POSITIVE_INFINITY,delta:0,cumulative:!0,initialize:function(a,b,c){OpenLayers.Handler.prototype.initialize.apply(this,arguments);this.wheelListener=OpenLayers.Function.bindAsEventListener(this.onWheelEvent,this)},destroy:function(){OpenLayers.Handler.prototype.destroy.apply(this,arguments);this.wheelListener=null},onWheelEvent:function(a){if(this.map&&this.checkModifiers(a)){for(var b=
!1,c=!1,d=!1,e=OpenLayers.Event.element(a);null!=e&&!d&&!b;){if(!b)try{var f,b=(f=e.currentStyle?e.currentStyle.overflow:document.defaultView.getComputedStyle(e,null).getPropertyValue("overflow"))&&"auto"==f||"scroll"==f}catch(g){}if(!c&&(c=OpenLayers.Element.hasClass(e,"olScrollable"),!c))for(var d=0,h=this.map.layers.length;d<h;d++){var k=this.map.layers[d];if(e==k.div||e==k.pane){c=!0;break}}d=e==this.map.div;e=e.parentNode}if(!b&&d){if(c)if(b=0,a.wheelDelta?(b=a.wheelDelta,0===b%160&&(b*=0.75),
b/=120):a.detail&&(b=-(a.detail/Math.abs(a.detail))),this.delta+=b,window.clearTimeout(this._timeoutId),this.interval&&Math.abs(this.delta)<this.maxDelta){var l=OpenLayers.Util.extend({},a);this._timeoutId=window.setTimeout(OpenLayers.Function.bind(function(){this.wheelZoom(l)},this),this.interval)}else this.wheelZoom(a);OpenLayers.Event.stop(a)}}},wheelZoom:function(a){var b=this.delta;this.delta=0;b&&(a.xy=this.map.events.getMousePosition(a),0>b?this.callback("down",[a,this.cumulative?Math.max(-this.maxDelta,
b):-1]):this.callback("up",[a,this.cumulative?Math.min(this.maxDelta,b):1]))},activate:function(a){if(OpenLayers.Handler.prototype.activate.apply(this,arguments)){var b=this.wheelListener;OpenLayers.Event.observe(window,"DOMMouseScroll",b);OpenLayers.Event.observe(window,"mousewheel",b);OpenLayers.Event.observe(document,"mousewheel",b);return!0}return!1},deactivate:function(a){if(OpenLayers.Handler.prototype.deactivate.apply(this,arguments)){var b=this.wheelListener;OpenLayers.Event.stopObserving(window,
"DOMMouseScroll",b);OpenLayers.Event.stopObserving(window,"mousewheel",b);OpenLayers.Event.stopObserving(document,"mousewheel",b);return!0}return!1},CLASS_NAME:"OpenLayers.Handler.MouseWheel"});OpenLayers.Symbolizer=OpenLayers.Class({zIndex:0,initialize:function(a){OpenLayers.Util.extend(this,a)},clone:function(){return new (eval(this.CLASS_NAME))(OpenLayers.Util.extend({},this))},CLASS_NAME:"OpenLayers.Symbolizer"});OpenLayers.Symbolizer.Raster=OpenLayers.Class(OpenLayers.Symbolizer,{initialize:function(a){OpenLayers.Symbolizer.prototype.initialize.apply(this,arguments)},CLASS_NAME:"OpenLayers.Symbolizer.Raster"});OpenLayers.Rule=OpenLayers.Class({id:null,name:null,title:null,description:null,context:null,filter:null,elseFilter:!1,symbolizer:null,symbolizers:null,minScaleDenominator:null,maxScaleDenominator:null,initialize:function(a){this.symbolizer={};OpenLayers.Util.extend(this,a);this.symbolizers&&delete this.symbolizer;this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_")},destroy:function(){for(var a in this.symbolizer)this.symbolizer[a]=null;this.symbolizer=null;delete this.symbolizers},evaluate:function(a){var b=
this.getContext(a),c=!0;if(this.minScaleDenominator||this.maxScaleDenominator)var d=a.layer.map.getScale();this.minScaleDenominator&&(c=d>=OpenLayers.Style.createLiteral(this.minScaleDenominator,b));c&&this.maxScaleDenominator&&(c=d<OpenLayers.Style.createLiteral(this.maxScaleDenominator,b));c&&this.filter&&(c="OpenLayers.Filter.FeatureId"==this.filter.CLASS_NAME?this.filter.evaluate(a):this.filter.evaluate(b));return c},getContext:function(a){var b=this.context;b||(b=a.attributes||a.data);"function"==
typeof this.context&&(b=this.context(a));return b},clone:function(){var a=OpenLayers.Util.extend({},this);if(this.symbolizers){var b=this.symbolizers.length;a.symbolizers=Array(b);for(var c=0;c<b;++c)a.symbolizers[c]=this.symbolizers[c].clone()}else{a.symbolizer={};for(var d in this.symbolizer)b=this.symbolizer[d],c=typeof b,"object"===c?a.symbolizer[d]=OpenLayers.Util.extend({},b):"string"===c&&(a.symbolizer[d]=b)}a.filter=this.filter&&this.filter.clone();a.context=this.context&&OpenLayers.Util.extend({},
this.context);return new OpenLayers.Rule(a)},CLASS_NAME:"OpenLayers.Rule"});OpenLayers.Format.SLD=OpenLayers.Class(OpenLayers.Format.XML.VersionedOGC,{profile:null,defaultVersion:"1.0.0",stringifyOutput:!0,namedLayersAsArray:!1,CLASS_NAME:"OpenLayers.Format.SLD"});OpenLayers.Symbolizer.Polygon=OpenLayers.Class(OpenLayers.Symbolizer,{initialize:function(a){OpenLayers.Symbolizer.prototype.initialize.apply(this,arguments)},CLASS_NAME:"OpenLayers.Symbolizer.Polygon"});OpenLayers.Format.GML.v2=OpenLayers.Class(OpenLayers.Format.GML.Base,{schemaLocation:"http://www.opengis.net/gml http://schemas.opengis.net/gml/2.1.2/feature.xsd",initialize:function(a){OpenLayers.Format.GML.Base.prototype.initialize.apply(this,[a])},readers:{gml:OpenLayers.Util.applyDefaults({outerBoundaryIs:function(a,b){var c={};this.readChildNodes(a,c);b.outer=c.components[0]},innerBoundaryIs:function(a,b){var c={};this.readChildNodes(a,c);b.inner.push(c.components[0])},Box:function(a,b){var c=
{};this.readChildNodes(a,c);b.components||(b.components=[]);var d=c.points[0],c=c.points[1];b.components.push(new OpenLayers.Bounds(d.x,d.y,c.x,c.y))}},OpenLayers.Format.GML.Base.prototype.readers.gml),feature:OpenLayers.Format.GML.Base.prototype.readers.feature,wfs:OpenLayers.Format.GML.Base.prototype.readers.wfs},write:function(a){var b;b=OpenLayers.Util.isArray(a)?"wfs:FeatureCollection":"gml:featureMember";a=this.writeNode(b,a);this.setAttributeNS(a,this.namespaces.xsi,"xsi:schemaLocation",this.schemaLocation);
return OpenLayers.Format.XML.prototype.write.apply(this,[a])},writers:{gml:OpenLayers.Util.applyDefaults({Point:function(a){var b=this.createElementNSPlus("gml:Point");this.writeNode("coordinates",[a],b);return b},coordinates:function(a){for(var b=a.length,c=Array(b),d,e=0;e<b;++e)d=a[e],c[e]=this.xy?d.x+","+d.y:d.y+","+d.x,void 0!=d.z&&(c[e]+=","+d.z);return this.createElementNSPlus("gml:coordinates",{attributes:{decimal:".",cs:",",ts:" "},value:1==b?c[0]:c.join(" ")})},LineString:function(a){var b=
this.createElementNSPlus("gml:LineString");this.writeNode("coordinates",a.components,b);return b},Polygon:function(a){var b=this.createElementNSPlus("gml:Polygon");this.writeNode("outerBoundaryIs",a.components[0],b);for(var c=1;c<a.components.length;++c)this.writeNode("innerBoundaryIs",a.components[c],b);return b},outerBoundaryIs:function(a){var b=this.createElementNSPlus("gml:outerBoundaryIs");this.writeNode("LinearRing",a,b);return b},innerBoundaryIs:function(a){var b=this.createElementNSPlus("gml:innerBoundaryIs");
this.writeNode("LinearRing",a,b);return b},LinearRing:function(a){var b=this.createElementNSPlus("gml:LinearRing");this.writeNode("coordinates",a.components,b);return b},Box:function(a){var b=this.createElementNSPlus("gml:Box");this.writeNode("coordinates",[{x:a.left,y:a.bottom},{x:a.right,y:a.top}],b);this.srsName&&b.setAttribute("srsName",this.srsName);return b}},OpenLayers.Format.GML.Base.prototype.writers.gml),feature:OpenLayers.Format.GML.Base.prototype.writers.feature,wfs:OpenLayers.Format.GML.Base.prototype.writers.wfs},
CLASS_NAME:"OpenLayers.Format.GML.v2"});OpenLayers.Format.Filter.v1_0_0=OpenLayers.Class(OpenLayers.Format.GML.v2,OpenLayers.Format.Filter.v1,{VERSION:"1.0.0",schemaLocation:"http://www.opengis.net/ogc/filter/1.0.0/filter.xsd",initialize:function(a){OpenLayers.Format.GML.v2.prototype.initialize.apply(this,[a])},readers:{ogc:OpenLayers.Util.applyDefaults({PropertyIsEqualTo:function(a,b){var c=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.EQUAL_TO});this.readChildNodes(a,c);b.filters.push(c)},PropertyIsNotEqualTo:function(a,
b){var c=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.NOT_EQUAL_TO});this.readChildNodes(a,c);b.filters.push(c)},PropertyIsLike:function(a,b){var c=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.LIKE});this.readChildNodes(a,c);var d=a.getAttribute("wildCard"),e=a.getAttribute("singleChar"),f=a.getAttribute("escape");c.value2regex(d,e,f);b.filters.push(c)}},OpenLayers.Format.Filter.v1.prototype.readers.ogc),gml:OpenLayers.Format.GML.v2.prototype.readers.gml,
feature:OpenLayers.Format.GML.v2.prototype.readers.feature},writers:{ogc:OpenLayers.Util.applyDefaults({PropertyIsEqualTo:function(a){var b=this.createElementNSPlus("ogc:PropertyIsEqualTo");this.writeNode("PropertyName",a,b);this.writeOgcExpression(a.value,b);return b},PropertyIsNotEqualTo:function(a){var b=this.createElementNSPlus("ogc:PropertyIsNotEqualTo");this.writeNode("PropertyName",a,b);this.writeOgcExpression(a.value,b);return b},PropertyIsLike:function(a){var b=this.createElementNSPlus("ogc:PropertyIsLike",
{attributes:{wildCard:"*",singleChar:".",escape:"!"}});this.writeNode("PropertyName",a,b);this.writeNode("Literal",a.regex2value(),b);return b},BBOX:function(a){var b=this.createElementNSPlus("ogc:BBOX");a.property&&this.writeNode("PropertyName",a,b);var c=this.writeNode("gml:Box",a.value,b);a.projection&&c.setAttribute("srsName",a.projection);return b}},OpenLayers.Format.Filter.v1.prototype.writers.ogc),gml:OpenLayers.Format.GML.v2.prototype.writers.gml,feature:OpenLayers.Format.GML.v2.prototype.writers.feature},
writeSpatial:function(a,b){var c=this.createElementNSPlus("ogc:"+b);this.writeNode("PropertyName",a,c);if(a.value instanceof OpenLayers.Filter.Function)this.writeNode("Function",a.value,c);else{var d;d=a.value instanceof OpenLayers.Geometry?this.writeNode("feature:_geometry",a.value).firstChild:this.writeNode("gml:Box",a.value);a.projection&&d.setAttribute("srsName",a.projection);c.appendChild(d)}return c},CLASS_NAME:"OpenLayers.Format.Filter.v1_0_0"});OpenLayers.Format.WFST.v1_0_0=OpenLayers.Class(OpenLayers.Format.Filter.v1_0_0,OpenLayers.Format.WFST.v1,{version:"1.0.0",srsNameInQuery:!1,schemaLocations:{wfs:"http://schemas.opengis.net/wfs/1.0.0/WFS-transaction.xsd"},initialize:function(a){OpenLayers.Format.Filter.v1_0_0.prototype.initialize.apply(this,[a]);OpenLayers.Format.WFST.v1.prototype.initialize.apply(this,[a])},readNode:function(a,b,c){return OpenLayers.Format.GML.v2.prototype.readNode.apply(this,arguments)},readers:{wfs:OpenLayers.Util.applyDefaults({WFS_TransactionResponse:function(a,
b){b.insertIds=[];b.success=!1;this.readChildNodes(a,b)},InsertResult:function(a,b){var c={fids:[]};this.readChildNodes(a,c);b.insertIds=b.insertIds.concat(c.fids)},TransactionResult:function(a,b){this.readChildNodes(a,b)},Status:function(a,b){this.readChildNodes(a,b)},SUCCESS:function(a,b){b.success=!0}},OpenLayers.Format.WFST.v1.prototype.readers.wfs),gml:OpenLayers.Format.GML.v2.prototype.readers.gml,feature:OpenLayers.Format.GML.v2.prototype.readers.feature,ogc:OpenLayers.Format.Filter.v1_0_0.prototype.readers.ogc},
writers:{wfs:OpenLayers.Util.applyDefaults({Query:function(a){a=OpenLayers.Util.extend({featureNS:this.featureNS,featurePrefix:this.featurePrefix,featureType:this.featureType,srsName:this.srsName,srsNameInQuery:this.srsNameInQuery},a);var b=a.featurePrefix,c=this.createElementNSPlus("wfs:Query",{attributes:{typeName:(b?b+":":"")+a.featureType}});a.srsNameInQuery&&a.srsName&&c.setAttribute("srsName",a.srsName);a.featureNS&&c.setAttribute("xmlns:"+b,a.featureNS);if(a.propertyNames)for(var b=0,d=a.propertyNames.length;b<
d;b++)this.writeNode("ogc:PropertyName",{property:a.propertyNames[b]},c);a.filter&&(this.setFilterProperty(a.filter),this.writeNode("ogc:Filter",a.filter,c));return c}},OpenLayers.Format.WFST.v1.prototype.writers.wfs),gml:OpenLayers.Format.GML.v2.prototype.writers.gml,feature:OpenLayers.Format.GML.v2.prototype.writers.feature,ogc:OpenLayers.Format.Filter.v1_0_0.prototype.writers.ogc},CLASS_NAME:"OpenLayers.Format.WFST.v1_0_0"});OpenLayers.ElementsIndexer=OpenLayers.Class({maxZIndex:null,order:null,indices:null,compare:null,initialize:function(a){this.compare=a?OpenLayers.ElementsIndexer.IndexingMethods.Z_ORDER_Y_ORDER:OpenLayers.ElementsIndexer.IndexingMethods.Z_ORDER_DRAWING_ORDER;this.clear()},insert:function(a){this.exists(a)&&this.remove(a);var b=a.id;this.determineZIndex(a);for(var c=-1,d=this.order.length,e;1<d-c;)e=parseInt((c+d)/2),0<this.compare(this,a,OpenLayers.Util.getElement(this.order[e]))?c=e:d=e;this.order.splice(d,
0,b);this.indices[b]=this.getZIndex(a);return this.getNextElement(d)},remove:function(a){a=a.id;var b=OpenLayers.Util.indexOf(this.order,a);0<=b&&(this.order.splice(b,1),delete this.indices[a],this.maxZIndex=0<this.order.length?this.indices[this.order[this.order.length-1]]:0)},clear:function(){this.order=[];this.indices={};this.maxZIndex=0},exists:function(a){return null!=this.indices[a.id]},getZIndex:function(a){return a._style.graphicZIndex},determineZIndex:function(a){var b=a._style.graphicZIndex;
null==b?(b=this.maxZIndex,a._style.graphicZIndex=b):b>this.maxZIndex&&(this.maxZIndex=b)},getNextElement:function(a){a+=1;if(a<this.order.length){var b=OpenLayers.Util.getElement(this.order[a]);void 0==b&&(b=this.getNextElement(a));return b}return null},CLASS_NAME:"OpenLayers.ElementsIndexer"});
OpenLayers.ElementsIndexer.IndexingMethods={Z_ORDER:function(a,b,c){b=a.getZIndex(b);var d=0;c&&(a=a.getZIndex(c),d=b-a);return d},Z_ORDER_DRAWING_ORDER:function(a,b,c){a=OpenLayers.ElementsIndexer.IndexingMethods.Z_ORDER(a,b,c);c&&0==a&&(a=1);return a},Z_ORDER_Y_ORDER:function(a,b,c){a=OpenLayers.ElementsIndexer.IndexingMethods.Z_ORDER(a,b,c);c&&0===a&&(b=c._boundsBottom-b._boundsBottom,a=0===b?1:b);return a}};
OpenLayers.Renderer.Elements=OpenLayers.Class(OpenLayers.Renderer,{rendererRoot:null,root:null,vectorRoot:null,textRoot:null,xmlns:null,xOffset:0,indexer:null,BACKGROUND_ID_SUFFIX:"_background",LABEL_ID_SUFFIX:"_label",LABEL_OUTLINE_SUFFIX:"_outline",initialize:function(a,b){OpenLayers.Renderer.prototype.initialize.apply(this,arguments);this.rendererRoot=this.createRenderRoot();this.root=this.createRoot("_root");this.vectorRoot=this.createRoot("_vroot");this.textRoot=this.createRoot("_troot");this.root.appendChild(this.vectorRoot);
this.root.appendChild(this.textRoot);this.rendererRoot.appendChild(this.root);this.container.appendChild(this.rendererRoot);b&&(b.zIndexing||b.yOrdering)&&(this.indexer=new OpenLayers.ElementsIndexer(b.yOrdering))},destroy:function(){this.clear();this.xmlns=this.root=this.rendererRoot=null;OpenLayers.Renderer.prototype.destroy.apply(this,arguments)},clear:function(){var a,b=this.vectorRoot;if(b)for(;a=b.firstChild;)b.removeChild(a);if(b=this.textRoot)for(;a=b.firstChild;)b.removeChild(a);this.indexer&&
this.indexer.clear()},setExtent:function(a,b){var c=OpenLayers.Renderer.prototype.setExtent.apply(this,arguments),d=this.getResolution();if(this.map.baseLayer&&this.map.baseLayer.wrapDateLine){var e,f=a.getWidth()/this.map.getExtent().getWidth();a=a.scale(1/f);f=this.map.getMaxExtent();f.right>a.left&&f.right<a.right?e=!0:f.left>a.left&&f.left<a.right&&(e=!1);if(e!==this.rightOfDateLine||b)c=!1,this.xOffset=!0===e?f.getWidth()/d:0;this.rightOfDateLine=e}return c},getNodeType:function(a,b){},drawGeometry:function(a,
b,c){var d=a.CLASS_NAME,e=!0;if("OpenLayers.Geometry.Collection"==d||"OpenLayers.Geometry.MultiPoint"==d||"OpenLayers.Geometry.MultiLineString"==d||"OpenLayers.Geometry.MultiPolygon"==d){for(var d=0,f=a.components.length;d<f;d++)e=this.drawGeometry(a.components[d],b,c)&&e;return e}d=e=!1;"none"!=b.display&&(b.backgroundGraphic?this.redrawBackgroundNode(a.id,a,b,c):d=!0,e=this.redrawNode(a.id,a,b,c));!1==e&&(b=document.getElementById(a.id))&&(b._style.backgroundGraphic&&(d=!0),b.parentNode.removeChild(b));
d&&(b=document.getElementById(a.id+this.BACKGROUND_ID_SUFFIX))&&b.parentNode.removeChild(b);return e},redrawNode:function(a,b,c,d){c=this.applyDefaultSymbolizer(c);a=this.nodeFactory(a,this.getNodeType(b,c));a._featureId=d;a._boundsBottom=b.getBounds().bottom;a._geometryClass=b.CLASS_NAME;a._style=c;b=this.drawGeometryNode(a,b,c);if(!1===b)return!1;a=b.node;this.indexer?(c=this.indexer.insert(a))?this.vectorRoot.insertBefore(a,c):this.vectorRoot.appendChild(a):a.parentNode!==this.vectorRoot&&this.vectorRoot.appendChild(a);
this.postDraw(a);return b.complete},redrawBackgroundNode:function(a,b,c,d){c=OpenLayers.Util.extend({},c);c.externalGraphic=c.backgroundGraphic;c.graphicXOffset=c.backgroundXOffset;c.graphicYOffset=c.backgroundYOffset;c.graphicZIndex=c.backgroundGraphicZIndex;c.graphicWidth=c.backgroundWidth||c.graphicWidth;c.graphicHeight=c.backgroundHeight||c.graphicHeight;c.backgroundGraphic=null;c.backgroundXOffset=null;c.backgroundYOffset=null;c.backgroundGraphicZIndex=null;return this.redrawNode(a+this.BACKGROUND_ID_SUFFIX,
b,c,null)},drawGeometryNode:function(a,b,c){c=c||a._style;var d={isFilled:void 0===c.fill?!0:c.fill,isStroked:void 0===c.stroke?!!c.strokeWidth:c.stroke},e;switch(b.CLASS_NAME){case "OpenLayers.Geometry.Point":!1===c.graphic&&(d.isFilled=!1,d.isStroked=!1);e=this.drawPoint(a,b);break;case "OpenLayers.Geometry.LineString":d.isFilled=!1;e=this.drawLineString(a,b);break;case "OpenLayers.Geometry.LinearRing":e=this.drawLinearRing(a,b);break;case "OpenLayers.Geometry.Polygon":e=this.drawPolygon(a,b);break;
case "OpenLayers.Geometry.Rectangle":e=this.drawRectangle(a,b)}a._options=d;return!1!=e?{node:this.setStyle(a,c,d,b),complete:e}:!1},postDraw:function(a){},drawPoint:function(a,b){},drawLineString:function(a,b){},drawLinearRing:function(a,b){},drawPolygon:function(a,b){},drawRectangle:function(a,b){},drawCircle:function(a,b){},removeText:function(a){var b=document.getElementById(a+this.LABEL_ID_SUFFIX);b&&this.textRoot.removeChild(b);(a=document.getElementById(a+this.LABEL_OUTLINE_SUFFIX))&&this.textRoot.removeChild(a)},
getFeatureIdFromEvent:function(a){var b=a.target,c=b&&b.correspondingUseElement;return(c?c:b||a.srcElement)._featureId},eraseGeometry:function(a,b){if("OpenLayers.Geometry.MultiPoint"==a.CLASS_NAME||"OpenLayers.Geometry.MultiLineString"==a.CLASS_NAME||"OpenLayers.Geometry.MultiPolygon"==a.CLASS_NAME||"OpenLayers.Geometry.Collection"==a.CLASS_NAME)for(var c=0,d=a.components.length;c<d;c++)this.eraseGeometry(a.components[c],b);else(c=OpenLayers.Util.getElement(a.id))&&c.parentNode&&(c.geometry&&(c.geometry.destroy(),
c.geometry=null),c.parentNode.removeChild(c),this.indexer&&this.indexer.remove(c),c._style.backgroundGraphic&&(c=OpenLayers.Util.getElement(a.id+this.BACKGROUND_ID_SUFFIX))&&c.parentNode&&c.parentNode.removeChild(c))},nodeFactory:function(a,b){var c=OpenLayers.Util.getElement(a);c?this.nodeTypeCompare(c,b)||(c.parentNode.removeChild(c),c=this.nodeFactory(a,b)):c=this.createNode(b,a);return c},nodeTypeCompare:function(a,b){},createNode:function(a,b){},moveRoot:function(a){var b=this.root;a.root.parentNode==
this.rendererRoot&&(b=a.root);b.parentNode.removeChild(b);a.rendererRoot.appendChild(b)},getRenderLayerId:function(){return this.root.parentNode.parentNode.id},isComplexSymbol:function(a){return"circle"!=a&&!!a},CLASS_NAME:"OpenLayers.Renderer.Elements"});OpenLayers.Control.ArgParser=OpenLayers.Class(OpenLayers.Control,{center:null,zoom:null,layers:null,displayProjection:null,getParameters:function(a){a=a||window.location.href;var b=OpenLayers.Util.getParameters(a),c=a.indexOf("#");0<c&&(a="?"+a.substring(c+1,a.length),OpenLayers.Util.extend(b,OpenLayers.Util.getParameters(a)));return b},setMap:function(a){OpenLayers.Control.prototype.setMap.apply(this,arguments);for(var b=0,c=this.map.controls.length;b<c;b++){var d=this.map.controls[b];if(d!=this&&
"OpenLayers.Control.ArgParser"==d.CLASS_NAME){d.displayProjection!=this.displayProjection&&(this.displayProjection=d.displayProjection);break}}b==this.map.controls.length&&(b=this.getParameters(),b.layers&&(this.layers=b.layers,this.map.events.register("addlayer",this,this.configureLayers),this.configureLayers()),b.lat&&b.lon&&(this.center=new OpenLayers.LonLat(parseFloat(b.lon),parseFloat(b.lat)),b.zoom&&(this.zoom=parseFloat(b.zoom)),this.map.events.register("changebaselayer",this,this.setCenter),
this.setCenter()))},setCenter:function(){this.map.baseLayer&&(this.map.events.unregister("changebaselayer",this,this.setCenter),this.displayProjection&&this.center.transform(this.displayProjection,this.map.getProjectionObject()),this.map.setCenter(this.center,this.zoom))},configureLayers:function(){if(this.layers.length==this.map.layers.length){this.map.events.unregister("addlayer",this,this.configureLayers);for(var a=0,b=this.layers.length;a<b;a++){var c=this.map.layers[a],d=this.layers.charAt(a);
"B"==d?this.map.setBaseLayer(c):"T"!=d&&"F"!=d||c.setVisibility("T"==d)}}},CLASS_NAME:"OpenLayers.Control.ArgParser"});OpenLayers.Control.Permalink=OpenLayers.Class(OpenLayers.Control,{argParserClass:OpenLayers.Control.ArgParser,element:null,anchor:!1,base:"",displayProjection:null,initialize:function(a,b,c){null===a||"object"!=typeof a||OpenLayers.Util.isElement(a)?(OpenLayers.Control.prototype.initialize.apply(this,[c]),this.element=OpenLayers.Util.getElement(a),this.base=b||document.location.href):(this.base=document.location.href,OpenLayers.Control.prototype.initialize.apply(this,[a]),null!=this.element&&(this.element=
OpenLayers.Util.getElement(this.element)))},destroy:function(){this.element&&this.element.parentNode==this.div&&(this.div.removeChild(this.element),this.element=null);this.map&&this.map.events.unregister("moveend",this,this.updateLink);OpenLayers.Control.prototype.destroy.apply(this,arguments)},setMap:function(a){OpenLayers.Control.prototype.setMap.apply(this,arguments);for(var b=0,c=this.map.controls.length;b<c;b++){var d=this.map.controls[b];if(d.CLASS_NAME==this.argParserClass.CLASS_NAME){d.displayProjection!=
this.displayProjection&&(this.displayProjection=d.displayProjection);break}}b==this.map.controls.length&&this.map.addControl(new this.argParserClass({displayProjection:this.displayProjection}))},draw:function(){OpenLayers.Control.prototype.draw.apply(this,arguments);this.element||this.anchor||(this.element=document.createElement("a"),this.element.innerHTML=OpenLayers.i18n("Permalink"),this.element.href="",this.div.appendChild(this.element));this.map.events.on({moveend:this.updateLink,changelayer:this.updateLink,
changebaselayer:this.updateLink,scope:this});this.updateLink();return this.div},updateLink:function(){var a=this.anchor?"#":"?",b=this.base,c=null;-1!=b.indexOf("#")&&!1==this.anchor&&(c=b.substring(b.indexOf("#"),b.length));-1!=b.indexOf(a)&&(b=b.substring(0,b.indexOf(a)));b=b.split("#")[0]+a+OpenLayers.Util.getParameterString(this.createParams());c&&(b+=c);this.anchor&&!this.element?window.location.href=b:this.element.href=b},createParams:function(a,b,c){a=a||this.map.getCenter();var d=OpenLayers.Util.getParameters(this.base);
if(a)for(d.zoom=b||this.map.getZoom(),b=a.lat,a=a.lon,this.displayProjection&&(b=OpenLayers.Projection.transform({x:a,y:b},this.map.getProjectionObject(),this.displayProjection),a=b.x,b=b.y),d.lat=Math.round(1E5*b)/1E5,d.lon=Math.round(1E5*a)/1E5,c=c||this.map.layers,d.layers="",a=0,b=c.length;a<b;a++){var e=c[a];d.layers=e.isBaseLayer?d.layers+(e==this.map.baseLayer?"B":"0"):d.layers+(e.getVisibility()?"T":"F")}return d},CLASS_NAME:"OpenLayers.Control.Permalink"});OpenLayers.Layer.TMS=OpenLayers.Class(OpenLayers.Layer.Grid,{serviceVersion:"1.0.0",layername:null,type:null,isBaseLayer:!0,tileOrigin:null,serverResolutions:null,zoomOffset:0,initialize:function(a,b,c){var d=[];d.push(a,b,{},c);OpenLayers.Layer.Grid.prototype.initialize.apply(this,d)},clone:function(a){null==a&&(a=new OpenLayers.Layer.TMS(this.name,this.url,this.getOptions()));return a=OpenLayers.Layer.Grid.prototype.clone.apply(this,[a])},getURL:function(a){a=this.adjustBounds(a);var b=this.getServerResolution(),
c=Math.round((a.left-this.tileOrigin.lon)/(b*this.tileSize.w));a=Math.round((a.bottom-this.tileOrigin.lat)/(b*this.tileSize.h));b=this.getServerZoom();c=this.serviceVersion+"/"+this.layername+"/"+b+"/"+c+"/"+a+"."+this.type;a=this.url;OpenLayers.Util.isArray(a)&&(a=this.selectUrl(c,a));return a+c},setMap:function(a){OpenLayers.Layer.Grid.prototype.setMap.apply(this,arguments);this.tileOrigin||(this.tileOrigin=new OpenLayers.LonLat(this.map.maxExtent.left,this.map.maxExtent.bottom))},CLASS_NAME:"OpenLayers.Layer.TMS"});OpenLayers.Format.WCSCapabilities=OpenLayers.Class(OpenLayers.Format.XML.VersionedOGC,{defaultVersion:"1.1.0",CLASS_NAME:"OpenLayers.Format.WCSCapabilities"});OpenLayers.Format.WCSCapabilities.v1=OpenLayers.Class(OpenLayers.Format.XML,{regExes:{trimSpace:/^\s*|\s*$/g,splitSpace:/\s+/},defaultPrefix:"wcs",read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));a&&9==a.nodeType&&(a=a.documentElement);var b={};this.readNode(a,b);return b},CLASS_NAME:"OpenLayers.Format.WCSCapabilities.v1"});OpenLayers.Format.WCSCapabilities.v1_0_0=OpenLayers.Class(OpenLayers.Format.WCSCapabilities.v1,{namespaces:{wcs:"http://www.opengis.net/wcs",xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance",ows:"http://www.opengis.net/ows"},errorProperty:"service",readers:{wcs:{WCS_Capabilities:function(a,b){this.readChildNodes(a,b)},Service:function(a,b){b.service={};this.readChildNodes(a,b.service)},name:function(a,b){b.name=this.getChildValue(a)},label:function(a,b){b.label=
this.getChildValue(a)},keywords:function(a,b){b.keywords=[];this.readChildNodes(a,b.keywords)},keyword:function(a,b){b.push(this.getChildValue(a))},responsibleParty:function(a,b){b.responsibleParty={};this.readChildNodes(a,b.responsibleParty)},individualName:function(a,b){b.individualName=this.getChildValue(a)},organisationName:function(a,b){b.organisationName=this.getChildValue(a)},positionName:function(a,b){b.positionName=this.getChildValue(a)},contactInfo:function(a,b){b.contactInfo={};this.readChildNodes(a,
b.contactInfo)},phone:function(a,b){b.phone={};this.readChildNodes(a,b.phone)},voice:function(a,b){b.voice=this.getChildValue(a)},facsimile:function(a,b){b.facsimile=this.getChildValue(a)},address:function(a,b){b.address={};this.readChildNodes(a,b.address)},deliveryPoint:function(a,b){b.deliveryPoint=this.getChildValue(a)},city:function(a,b){b.city=this.getChildValue(a)},postalCode:function(a,b){b.postalCode=this.getChildValue(a)},country:function(a,b){b.country=this.getChildValue(a)},electronicMailAddress:function(a,
b){b.electronicMailAddress=this.getChildValue(a)},fees:function(a,b){b.fees=this.getChildValue(a)},accessConstraints:function(a,b){b.accessConstraints=this.getChildValue(a)},ContentMetadata:function(a,b){b.contentMetadata=[];this.readChildNodes(a,b.contentMetadata)},CoverageOfferingBrief:function(a,b){var c={};this.readChildNodes(a,c);b.push(c)},name:function(a,b){b.name=this.getChildValue(a)},label:function(a,b){b.label=this.getChildValue(a)},lonLatEnvelope:function(a,b){var c=this.getElementsByTagNameNS(a,
"http://www.opengis.net/gml","pos");if(2==c.length){var d={},e={};OpenLayers.Format.GML.v3.prototype.readers.gml.pos.apply(this,[c[0],d]);OpenLayers.Format.GML.v3.prototype.readers.gml.pos.apply(this,[c[1],e]);b.lonLatEnvelope={};b.lonLatEnvelope.srsName=a.getAttribute("srsName");b.lonLatEnvelope.min=d.points[0];b.lonLatEnvelope.max=e.points[0]}}}},CLASS_NAME:"OpenLayers.Format.WCSCapabilities.v1_0_0"});OpenLayers.Strategy.Fixed=OpenLayers.Class(OpenLayers.Strategy,{preload:!1,activate:function(){var a=OpenLayers.Strategy.prototype.activate.apply(this,arguments);if(a)if(this.layer.events.on({refresh:this.load,scope:this}),!0==this.layer.visibility||this.preload)this.load();else this.layer.events.on({visibilitychanged:this.load,scope:this});return a},deactivate:function(){var a=OpenLayers.Strategy.prototype.deactivate.call(this);a&&this.layer.events.un({refresh:this.load,visibilitychanged:this.load,
scope:this});return a},load:function(a){var b=this.layer;b.events.triggerEvent("loadstart",{filter:b.filter});b.protocol.read(OpenLayers.Util.applyDefaults({callback:this.merge,filter:b.filter,scope:this},a));b.events.un({visibilitychanged:this.load,scope:this})},merge:function(a){var b=this.layer;b.destroyFeatures();var c=a.features;if(c&&0<c.length){var d=b.projection,e=b.map.getProjectionObject();if(!e.equals(d))for(var f,g=0,h=c.length;g<h;++g)(f=c[g].geometry)&&f.transform(d,e);b.addFeatures(c)}b.events.triggerEvent("loadend",
{response:a})},CLASS_NAME:"OpenLayers.Strategy.Fixed"});OpenLayers.Control.Zoom=OpenLayers.Class(OpenLayers.Control,{zoomInText:"+",zoomInId:"olZoomInLink",zoomOutText:"\u2212",zoomOutId:"olZoomOutLink",draw:function(){var a=OpenLayers.Control.prototype.draw.apply(this),b=this.getOrCreateLinks(a),c=b.zoomIn,b=b.zoomOut,d=this.map.events;b.parentNode!==a&&(d=this.events,d.attachToElement(b.parentNode));d.register("buttonclick",this,this.onZoomClick);this.zoomInLink=c;this.zoomOutLink=b;return a},getOrCreateLinks:function(a){var b=document.getElementById(this.zoomInId),
c=document.getElementById(this.zoomOutId);b||(b=document.createElement("a"),b.href="#zoomIn",b.appendChild(document.createTextNode(this.zoomInText)),b.className="olControlZoomIn",a.appendChild(b));OpenLayers.Element.addClass(b,"olButton");c||(c=document.createElement("a"),c.href="#zoomOut",c.appendChild(document.createTextNode(this.zoomOutText)),c.className="olControlZoomOut",a.appendChild(c));OpenLayers.Element.addClass(c,"olButton");return{zoomIn:b,zoomOut:c}},onZoomClick:function(a){a=a.buttonElement;
a===this.zoomInLink?this.map.zoomIn():a===this.zoomOutLink&&this.map.zoomOut()},destroy:function(){this.map&&this.map.events.unregister("buttonclick",this,this.onZoomClick);delete this.zoomInLink;delete this.zoomOutLink;OpenLayers.Control.prototype.destroy.apply(this)},CLASS_NAME:"OpenLayers.Control.Zoom"});OpenLayers.Layer.PointTrack=OpenLayers.Class(OpenLayers.Layer.Vector,{dataFrom:null,styleFrom:null,addNodes:function(a,b){if(2>a.length)throw Error("At least two point features have to be added to create a line from");for(var c=Array(a.length-1),d,e,f,g=0,h=a.length;g<h;g++){d=a[g];f=d.geometry;if(!f)f=d.lonlat,f=new OpenLayers.Geometry.Point(f.lon,f.lat);else if("OpenLayers.Geometry.Point"!=f.CLASS_NAME)throw new TypeError("Only features with point geometries are supported.");if(0<g){d=null!=this.dataFrom?
a[g+this.dataFrom].data||a[g+this.dataFrom].attributes:null;var k=null!=this.styleFrom?a[g+this.styleFrom].style:null;e=new OpenLayers.Geometry.LineString([e,f]);c[g-1]=new OpenLayers.Feature.Vector(e,d,k)}e=f}this.addFeatures(c,b)},CLASS_NAME:"OpenLayers.Layer.PointTrack"});OpenLayers.Layer.PointTrack.SOURCE_NODE=-1;OpenLayers.Layer.PointTrack.TARGET_NODE=0;OpenLayers.Layer.PointTrack.dataFrom={SOURCE_NODE:-1,TARGET_NODE:0};OpenLayers.Protocol.WFS=function(a){a=OpenLayers.Util.applyDefaults(a,OpenLayers.Protocol.WFS.DEFAULTS);var b=OpenLayers.Protocol.WFS["v"+a.version.replace(/\./g,"_")];if(!b)throw"Unsupported WFS version: "+a.version;return new b(a)};
OpenLayers.Protocol.WFS.fromWMSLayer=function(a,b){var c,d;c=a.params.LAYERS;c=(OpenLayers.Util.isArray(c)?c[0]:c).split(":");1<c.length&&(d=c[0]);c=c.pop();d={url:a.url,featureType:c,featurePrefix:d,srsName:a.projection&&a.projection.getCode()||a.map&&a.map.getProjectionObject().getCode(),version:"1.1.0"};return new OpenLayers.Protocol.WFS(OpenLayers.Util.applyDefaults(b,d))};OpenLayers.Protocol.WFS.DEFAULTS={version:"1.0.0"};OpenLayers.Layer.Markers=OpenLayers.Class(OpenLayers.Layer,{isBaseLayer:!1,markers:null,drawn:!1,initialize:function(a,b){OpenLayers.Layer.prototype.initialize.apply(this,arguments);this.markers=[]},destroy:function(){this.clearMarkers();this.markers=null;OpenLayers.Layer.prototype.destroy.apply(this,arguments)},setOpacity:function(a){if(a!=this.opacity){this.opacity=a;a=0;for(var b=this.markers.length;a<b;a++)this.markers[a].setOpacity(this.opacity)}},moveTo:function(a,b,c){OpenLayers.Layer.prototype.moveTo.apply(this,
arguments);if(b||!this.drawn){for(var d=0,e=this.markers.length;d<e;d++)this.drawMarker(this.markers[d]);this.drawn=!0}},addMarker:function(a){this.markers.push(a);1>this.opacity&&a.setOpacity(this.opacity);this.map&&this.map.getExtent()&&(a.map=this.map,this.drawMarker(a))},removeMarker:function(a){this.markers&&this.markers.length&&(OpenLayers.Util.removeItem(this.markers,a),a.erase())},clearMarkers:function(){if(null!=this.markers)for(;0<this.markers.length;)this.removeMarker(this.markers[0])},
drawMarker:function(a){var b=this.map.getLayerPxFromLonLat(a.lonlat);null==b?a.display(!1):a.isDrawn()?a.icon&&a.icon.moveTo(b):(a=a.draw(b),this.div.appendChild(a))},getDataExtent:function(){var a=null;if(this.markers&&0<this.markers.length)for(var a=new OpenLayers.Bounds,b=0,c=this.markers.length;b<c;b++)a.extend(this.markers[b].lonlat);return a},CLASS_NAME:"OpenLayers.Layer.Markers"});OpenLayers.Control.Pan=OpenLayers.Class(OpenLayers.Control.Button,{slideFactor:50,slideRatio:null,direction:null,initialize:function(a,b){this.direction=a;this.CLASS_NAME+=this.direction;OpenLayers.Control.prototype.initialize.apply(this,[b])},trigger:function(){if(this.map){var a=OpenLayers.Function.bind(function(a){return this.slideRatio?this.map.getSize()[a]*this.slideRatio:this.slideFactor},this);switch(this.direction){case OpenLayers.Control.Pan.NORTH:this.map.pan(0,-a("h"));break;case OpenLayers.Control.Pan.SOUTH:this.map.pan(0,
a("h"));break;case OpenLayers.Control.Pan.WEST:this.map.pan(-a("w"),0);break;case OpenLayers.Control.Pan.EAST:this.map.pan(a("w"),0)}}},CLASS_NAME:"OpenLayers.Control.Pan"});OpenLayers.Control.Pan.NORTH="North";OpenLayers.Control.Pan.SOUTH="South";OpenLayers.Control.Pan.EAST="East";OpenLayers.Control.Pan.WEST="West";OpenLayers.Format.CSWGetDomain=function(a){a=OpenLayers.Util.applyDefaults(a,OpenLayers.Format.CSWGetDomain.DEFAULTS);var b=OpenLayers.Format.CSWGetDomain["v"+a.version.replace(/\./g,"_")];if(!b)throw"Unsupported CSWGetDomain version: "+a.version;return new b(a)};OpenLayers.Format.CSWGetDomain.DEFAULTS={version:"2.0.2"};OpenLayers.Format.CSWGetDomain.v2_0_2=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance",csw:"http://www.opengis.net/cat/csw/2.0.2"},defaultPrefix:"csw",version:"2.0.2",schemaLocation:"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd",PropertyName:null,ParameterName:null,read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));a&&9==
a.nodeType&&(a=a.documentElement);var b={};this.readNode(a,b);return b},readers:{csw:{GetDomainResponse:function(a,b){this.readChildNodes(a,b)},DomainValues:function(a,b){OpenLayers.Util.isArray(b.DomainValues)||(b.DomainValues=[]);for(var c=a.attributes,d={},e=0,f=c.length;e<f;++e)d[c[e].name]=c[e].nodeValue;this.readChildNodes(a,d);b.DomainValues.push(d)},PropertyName:function(a,b){b.PropertyName=this.getChildValue(a)},ParameterName:function(a,b){b.ParameterName=this.getChildValue(a)},ListOfValues:function(a,
b){OpenLayers.Util.isArray(b.ListOfValues)||(b.ListOfValues=[]);this.readChildNodes(a,b.ListOfValues)},Value:function(a,b){for(var c=a.attributes,d={},e=0,f=c.length;e<f;++e)d[c[e].name]=c[e].nodeValue;d.value=this.getChildValue(a);b.push({Value:d})},ConceptualScheme:function(a,b){b.ConceptualScheme={};this.readChildNodes(a,b.ConceptualScheme)},Name:function(a,b){b.Name=this.getChildValue(a)},Document:function(a,b){b.Document=this.getChildValue(a)},Authority:function(a,b){b.Authority=this.getChildValue(a)},
RangeOfValues:function(a,b){b.RangeOfValues={};this.readChildNodes(a,b.RangeOfValues)},MinValue:function(a,b){for(var c=a.attributes,d={},e=0,f=c.length;e<f;++e)d[c[e].name]=c[e].nodeValue;d.value=this.getChildValue(a);b.MinValue=d},MaxValue:function(a,b){for(var c=a.attributes,d={},e=0,f=c.length;e<f;++e)d[c[e].name]=c[e].nodeValue;d.value=this.getChildValue(a);b.MaxValue=d}}},write:function(a){a=this.writeNode("csw:GetDomain",a);return OpenLayers.Format.XML.prototype.write.apply(this,[a])},writers:{csw:{GetDomain:function(a){var b=
this.createElementNSPlus("csw:GetDomain",{attributes:{service:"CSW",version:this.version}});a.PropertyName||this.PropertyName?this.writeNode("csw:PropertyName",a.PropertyName||this.PropertyName,b):(a.ParameterName||this.ParameterName)&&this.writeNode("csw:ParameterName",a.ParameterName||this.ParameterName,b);this.readChildNodes(b,a);return b},PropertyName:function(a){return this.createElementNSPlus("csw:PropertyName",{value:a})},ParameterName:function(a){return this.createElementNSPlus("csw:ParameterName",
{value:a})}}},CLASS_NAME:"OpenLayers.Format.CSWGetDomain.v2_0_2"});OpenLayers.Format.ArcXML.Features=OpenLayers.Class(OpenLayers.Format.XML,{read:function(a){return(new OpenLayers.Format.ArcXML).read(a).features.feature}});OpenLayers.Control.Snapping=OpenLayers.Class(OpenLayers.Control,{DEFAULTS:{tolerance:10,node:!0,edge:!0,vertex:!0},greedy:!0,precedence:["node","vertex","edge"],resolution:null,geoToleranceCache:null,layer:null,feature:null,point:null,initialize:function(a){OpenLayers.Control.prototype.initialize.apply(this,[a]);this.options=a||{};this.options.layer&&this.setLayer(this.options.layer);a=OpenLayers.Util.extend({},this.options.defaults);this.defaults=OpenLayers.Util.applyDefaults(a,this.DEFAULTS);this.setTargets(this.options.targets);
0===this.targets.length&&this.layer&&this.addTargetLayer(this.layer);this.geoToleranceCache={}},setLayer:function(a){this.active?(this.deactivate(),this.layer=a,this.activate()):this.layer=a},setTargets:function(a){this.targets=[];if(a&&a.length)for(var b,c=0,d=a.length;c<d;++c)b=a[c],b instanceof OpenLayers.Layer.Vector?this.addTargetLayer(b):this.addTarget(b)},addTargetLayer:function(a){this.addTarget({layer:a})},addTarget:function(a){a=OpenLayers.Util.applyDefaults(a,this.defaults);a.nodeTolerance=
a.nodeTolerance||a.tolerance;a.vertexTolerance=a.vertexTolerance||a.tolerance;a.edgeTolerance=a.edgeTolerance||a.tolerance;this.targets.push(a)},removeTargetLayer:function(a){for(var b,c=this.targets.length-1;0<=c;--c)b=this.targets[c],b.layer===a&&this.removeTarget(b)},removeTarget:function(a){return OpenLayers.Util.removeItem(this.targets,a)},activate:function(){var a=OpenLayers.Control.prototype.activate.call(this);if(a&&this.layer&&this.layer.events)this.layer.events.on({sketchstarted:this.onSketchModified,
sketchmodified:this.onSketchModified,vertexmodified:this.onVertexModified,scope:this});return a},deactivate:function(){var a=OpenLayers.Control.prototype.deactivate.call(this);a&&this.layer&&this.layer.events&&this.layer.events.un({sketchstarted:this.onSketchModified,sketchmodified:this.onSketchModified,vertexmodified:this.onVertexModified,scope:this});this.point=this.feature=null;return a},onSketchModified:function(a){this.feature=a.feature;this.considerSnapping(a.vertex,a.vertex)},onVertexModified:function(a){this.feature=
a.feature;var b=this.layer.map.getLonLatFromViewPortPx(a.pixel);this.considerSnapping(a.vertex,new OpenLayers.Geometry.Point(b.lon,b.lat))},considerSnapping:function(a,b){for(var c={rank:Number.POSITIVE_INFINITY,dist:Number.POSITIVE_INFINITY,x:null,y:null},d=!1,e,f,g=0,h=this.targets.length;g<h;++g)if(f=this.targets[g],e=this.testTarget(f,b))if(this.greedy){c=e;c.target=f;d=!0;break}else if(e.rank<c.rank||e.rank===c.rank&&e.dist<c.dist)c=e,c.target=f,d=!0;d&&(!1!==this.events.triggerEvent("beforesnap",
{point:a,x:c.x,y:c.y,distance:c.dist,layer:c.target.layer,snapType:this.precedence[c.rank]})?(a.x=c.x,a.y=c.y,this.point=a,this.events.triggerEvent("snap",{point:a,snapType:this.precedence[c.rank],layer:c.target.layer,distance:c.dist})):d=!1);this.point&&!d&&(a.x=b.x,a.y=b.y,this.point=null,this.events.triggerEvent("unsnap",{point:a}))},testTarget:function(a,b){var c=this.layer.map.getResolution();if("minResolution"in a&&c<a.minResolution||"maxResolution"in a&&c>=a.maxResolution)return null;for(var c=
{node:this.getGeoTolerance(a.nodeTolerance,c),vertex:this.getGeoTolerance(a.vertexTolerance,c),edge:this.getGeoTolerance(a.edgeTolerance,c)},d=Math.max(c.node,c.vertex,c.edge),e={rank:Number.POSITIVE_INFINITY,dist:Number.POSITIVE_INFINITY},f=!1,g=a.layer.features,h,k,l,m,n,p,q=this.precedence.length,r=new OpenLayers.LonLat(b.x,b.y),s=0,t=g.length;s<t;++s)if(h=g[s],h!==this.feature&&(!h._sketch&&h.state!==OpenLayers.State.DELETE&&(!a.filter||a.filter.evaluate(h)))&&h.atPoint(r,d,d))for(var u=0,v=Math.min(e.rank+
1,q);u<v;++u)if(k=this.precedence[u],a[k])if("edge"===k){if(l=h.geometry.distanceTo(b,{details:!0}),n=l.distance,n<=c[k]&&n<e.dist){e={rank:u,dist:n,x:l.x0,y:l.y0};f=!0;break}}else{l=h.geometry.getVertices("node"===k);p=!1;for(var w=0,x=l.length;w<x;++w)m=l[w],n=m.distanceTo(b),n<=c[k]&&(u<e.rank||u===e.rank&&n<e.dist)&&(e={rank:u,dist:n,x:m.x,y:m.y},p=f=!0);if(p)break}return f?e:null},getGeoTolerance:function(a,b){b!==this.resolution&&(this.resolution=b,this.geoToleranceCache={});var c=this.geoToleranceCache[a];
void 0===c&&(c=a*b,this.geoToleranceCache[a]=c);return c},destroy:function(){this.active&&this.deactivate();delete this.layer;delete this.targets;OpenLayers.Control.prototype.destroy.call(this)},CLASS_NAME:"OpenLayers.Control.Snapping"});OpenLayers.Format.OWSCommon.v1_1_0=OpenLayers.Class(OpenLayers.Format.OWSCommon.v1,{namespaces:{ows:"http://www.opengis.net/ows/1.1",xlink:"http://www.w3.org/1999/xlink"},readers:{ows:OpenLayers.Util.applyDefaults({ExceptionReport:function(a,b){b.exceptionReport={version:a.getAttribute("version"),language:a.getAttribute("xml:lang"),exceptions:[]};this.readChildNodes(a,b.exceptionReport)},AllowedValues:function(a,b){b.allowedValues={};this.readChildNodes(a,b.allowedValues)},AnyValue:function(a,b){b.anyValue=
!0},DataType:function(a,b){b.dataType=this.getChildValue(a)},Range:function(a,b){b.range={};this.readChildNodes(a,b.range)},MinimumValue:function(a,b){b.minValue=this.getChildValue(a)},MaximumValue:function(a,b){b.maxValue=this.getChildValue(a)},Identifier:function(a,b){b.identifier=this.getChildValue(a)},SupportedCRS:function(a,b){b.supportedCRS=this.getChildValue(a)}},OpenLayers.Format.OWSCommon.v1.prototype.readers.ows)},writers:{ows:OpenLayers.Util.applyDefaults({Range:function(a){var b=this.createElementNSPlus("ows:Range",
{attributes:{"ows:rangeClosure":a.closure}});this.writeNode("ows:MinimumValue",a.minValue,b);this.writeNode("ows:MaximumValue",a.maxValue,b);return b},MinimumValue:function(a){return this.createElementNSPlus("ows:MinimumValue",{value:a})},MaximumValue:function(a){return this.createElementNSPlus("ows:MaximumValue",{value:a})},Value:function(a){return this.createElementNSPlus("ows:Value",{value:a})}},OpenLayers.Format.OWSCommon.v1.prototype.writers.ows)},CLASS_NAME:"OpenLayers.Format.OWSCommon.v1_1_0"});OpenLayers.Format.WCSGetCoverage=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{ows:"http://www.opengis.net/ows/1.1",wcs:"http://www.opengis.net/wcs/1.1",xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance"},regExes:{trimSpace:/^\s*|\s*$/g,removeSpace:/\s*/g,splitSpace:/\s+/,trimComma:/\s*,\s*/g},VERSION:"1.1.2",schemaLocation:"http://www.opengis.net/wcs/1.1 http://schemas.opengis.net/wcs/1.1/wcsGetCoverage.xsd",write:function(a){a=this.writeNode("wcs:GetCoverage",
a);this.setAttributeNS(a,this.namespaces.xsi,"xsi:schemaLocation",this.schemaLocation);return OpenLayers.Format.XML.prototype.write.apply(this,[a])},writers:{wcs:{GetCoverage:function(a){var b=this.createElementNSPlus("wcs:GetCoverage",{attributes:{version:a.version||this.VERSION,service:"WCS"}});this.writeNode("ows:Identifier",a.identifier,b);this.writeNode("wcs:DomainSubset",a.domainSubset,b);this.writeNode("wcs:Output",a.output,b);return b},DomainSubset:function(a){var b=this.createElementNSPlus("wcs:DomainSubset",
{});this.writeNode("ows:BoundingBox",a.boundingBox,b);a.temporalSubset&&this.writeNode("wcs:TemporalSubset",a.temporalSubset,b);return b},TemporalSubset:function(a){for(var b=this.createElementNSPlus("wcs:TemporalSubset",{}),c=0,d=a.timePeriods.length;c<d;++c)this.writeNode("wcs:TimePeriod",a.timePeriods[c],b);return b},TimePeriod:function(a){var b=this.createElementNSPlus("wcs:TimePeriod",{});this.writeNode("wcs:BeginPosition",a.begin,b);this.writeNode("wcs:EndPosition",a.end,b);a.resolution&&this.writeNode("wcs:TimeResolution",
a.resolution,b);return b},BeginPosition:function(a){return this.createElementNSPlus("wcs:BeginPosition",{value:a})},EndPosition:function(a){return this.createElementNSPlus("wcs:EndPosition",{value:a})},TimeResolution:function(a){return this.createElementNSPlus("wcs:TimeResolution",{value:a})},Output:function(a){var b=this.createElementNSPlus("wcs:Output",{attributes:{format:a.format,store:a.store}});a.gridCRS&&this.writeNode("wcs:GridCRS",a.gridCRS,b);return b},GridCRS:function(a){var b=this.createElementNSPlus("wcs:GridCRS",
{});this.writeNode("wcs:GridBaseCRS",a.baseCRS,b);a.type&&this.writeNode("wcs:GridType",a.type,b);a.origin&&this.writeNode("wcs:GridOrigin",a.origin,b);this.writeNode("wcs:GridOffsets",a.offsets,b);a.CS&&this.writeNode("wcs:GridCS",a.CS,b);return b},GridBaseCRS:function(a){return this.createElementNSPlus("wcs:GridBaseCRS",{value:a})},GridOrigin:function(a){return this.createElementNSPlus("wcs:GridOrigin",{value:a})},GridType:function(a){return this.createElementNSPlus("wcs:GridType",{value:a})},GridOffsets:function(a){return this.createElementNSPlus("wcs:GridOffsets",
{value:a})},GridCS:function(a){return this.createElementNSPlus("wcs:GridCS",{value:a})}},ows:OpenLayers.Format.OWSCommon.v1_1_0.prototype.writers.ows},CLASS_NAME:"OpenLayers.Format.WCSGetCoverage"});OpenLayers.Format.KML=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{kml:"http://www.opengis.net/kml/2.2",gx:"http://www.google.com/kml/ext/2.2"},kmlns:"http://earth.google.com/kml/2.0",placemarksDesc:"No description available",foldersName:"OpenLayers export",foldersDesc:"Exported on "+new Date,extractAttributes:!0,kvpAttributes:!1,extractStyles:!1,extractTracks:!1,trackAttributes:null,internalns:null,features:null,styles:null,styleBaseUrl:"",fetched:null,maxDepth:0,initialize:function(a){this.regExes=
{trimSpace:/^\s*|\s*$/g,removeSpace:/\s*/g,splitSpace:/\s+/,trimComma:/\s*,\s*/g,kmlColor:/(\w{2})(\w{2})(\w{2})(\w{2})/,kmlIconPalette:/root:\/\/icons\/palette-(\d+)(\.\w+)/,straightBracket:/\$\[(.*?)\]/g};this.externalProjection=new OpenLayers.Projection("EPSG:4326");OpenLayers.Format.XML.prototype.initialize.apply(this,[a])},read:function(a){this.features=[];this.styles={};this.fetched={};return this.parseData(a,{depth:0,styleBaseUrl:this.styleBaseUrl})},parseData:function(a,b){"string"==typeof a&&
(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));for(var c=["Link","NetworkLink","Style","StyleMap","Placemark"],d=0,e=c.length;d<e;++d){var f=c[d],g=this.getElementsByTagNameNS(a,"*",f);if(0!=g.length)switch(f.toLowerCase()){case "link":case "networklink":this.parseLinks(g,b);break;case "style":this.extractStyles&&this.parseStyles(g,b);break;case "stylemap":this.extractStyles&&this.parseStyleMaps(g,b);break;case "placemark":this.parseFeatures(g,b)}}return this.features},parseLinks:function(a,
b){if(b.depth>=this.maxDepth)return!1;var c=OpenLayers.Util.extend({},b);c.depth++;for(var d=0,e=a.length;d<e;d++){var f=this.parseProperty(a[d],"*","href");f&&!this.fetched[f]&&(this.fetched[f]=!0,(f=this.fetchLink(f))&&this.parseData(f,c))}},fetchLink:function(a){if(a=OpenLayers.Request.GET({url:a,async:!1}))return a.responseText},parseStyles:function(a,b){for(var c=0,d=a.length;c<d;c++){var e=this.parseStyle(a[c]);e&&(this.styles[(b.styleBaseUrl||"")+"#"+e.id]=e)}},parseKmlColor:function(a){var b=
null;a&&(a=a.match(this.regExes.kmlColor))&&(b={color:"#"+a[4]+a[3]+a[2],opacity:parseInt(a[1],16)/255});return b},parseStyle:function(a){for(var b={},c=["LineStyle","PolyStyle","IconStyle","BalloonStyle","LabelStyle"],d,e,f=0,g=c.length;f<g;++f)if(d=c[f],e=this.getElementsByTagNameNS(a,"*",d)[0])switch(d.toLowerCase()){case "linestyle":d=this.parseProperty(e,"*","color");if(d=this.parseKmlColor(d))b.strokeColor=d.color,b.strokeOpacity=d.opacity;(d=this.parseProperty(e,"*","width"))&&(b.strokeWidth=
d);break;case "polystyle":d=this.parseProperty(e,"*","color");if(d=this.parseKmlColor(d))b.fillOpacity=d.opacity,b.fillColor=d.color;"0"==this.parseProperty(e,"*","fill")&&(b.fillColor="none");"0"==this.parseProperty(e,"*","outline")&&(b.strokeWidth="0");break;case "iconstyle":var h=parseFloat(this.parseProperty(e,"*","scale")||1);d=32*h;var k=32*h,l=this.getElementsByTagNameNS(e,"*","Icon")[0];if(l){var m=this.parseProperty(l,"*","href");if(m){var n=this.parseProperty(l,"*","w"),p=this.parseProperty(l,
"*","h");!OpenLayers.String.startsWith(m,"http://maps.google.com/mapfiles/kml")||(n||p)||(p=n=64,h/=2);n=n||p;p=p||n;n&&(d=parseInt(n)*h);p&&(k=parseInt(p)*h);if(p=m.match(this.regExes.kmlIconPalette))n=p[1],p=p[2],m=this.parseProperty(l,"*","x"),l=this.parseProperty(l,"*","y"),m="http://maps.google.com/mapfiles/kml/pal"+n+"/icon"+(8*(l?7-l/32:7)+(m?m/32:0))+p;b.graphicOpacity=1;b.externalGraphic=m}}if(e=this.getElementsByTagNameNS(e,"*","hotSpot")[0])m=parseFloat(e.getAttribute("x")),l=parseFloat(e.getAttribute("y")),
n=e.getAttribute("xunits"),"pixels"==n?b.graphicXOffset=-m*h:"insetPixels"==n?b.graphicXOffset=-d+m*h:"fraction"==n&&(b.graphicXOffset=-d*m),e=e.getAttribute("yunits"),"pixels"==e?b.graphicYOffset=-k+l*h+1:"insetPixels"==e?b.graphicYOffset=-(l*h)+1:"fraction"==e&&(b.graphicYOffset=-k*(1-l)+1);b.graphicWidth=d;b.graphicHeight=k;break;case "balloonstyle":(e=OpenLayers.Util.getXmlNodeValue(e))&&(b.balloonStyle=e.replace(this.regExes.straightBracket,"${$1}"));break;case "labelstyle":if(d=this.parseProperty(e,
"*","color"),d=this.parseKmlColor(d))b.fontColor=d.color,b.fontOpacity=d.opacity}!b.strokeColor&&b.fillColor&&(b.strokeColor=b.fillColor);(a=a.getAttribute("id"))&&b&&(b.id=a);return b},parseStyleMaps:function(a,b){for(var c=0,d=a.length;c<d;c++)for(var e=a[c],f=this.getElementsByTagNameNS(e,"*","Pair"),e=e.getAttribute("id"),g=0,h=f.length;g<h;g++){var k=f[g],l=this.parseProperty(k,"*","key");(k=this.parseProperty(k,"*","styleUrl"))&&"normal"==l&&(this.styles[(b.styleBaseUrl||"")+"#"+e]=this.styles[(b.styleBaseUrl||
"")+k])}},parseFeatures:function(a,b){for(var c=[],d=0,e=a.length;d<e;d++){var f=a[d],g=this.parseFeature.apply(this,[f]);if(g){this.extractStyles&&(g.attributes&&g.attributes.styleUrl)&&(g.style=this.getStyle(g.attributes.styleUrl,b));if(this.extractStyles){var h=this.getElementsByTagNameNS(f,"*","Style")[0];h&&(h=this.parseStyle(h))&&(g.style=OpenLayers.Util.extend(g.style,h))}this.extractTracks?(f=this.getElementsByTagNameNS(f,this.namespaces.gx,"Track"))&&0<f.length&&(g={features:[],feature:g},
this.readNode(f[0],g),0<g.features.length&&c.push.apply(c,g.features)):c.push(g)}else throw"Bad Placemark: "+d;}this.features=this.features.concat(c)},readers:{kml:{when:function(a,b){b.whens.push(OpenLayers.Date.parse(this.getChildValue(a)))},_trackPointAttribute:function(a,b){var c=a.nodeName.split(":").pop();b.attributes[c].push(this.getChildValue(a))}},gx:{Track:function(a,b){var c={whens:[],points:[],angles:[]};if(this.trackAttributes){var d;c.attributes={};for(var e=0,f=this.trackAttributes.length;e<
f;++e)d=this.trackAttributes[e],c.attributes[d]=[],d in this.readers.kml||(this.readers.kml[d]=this.readers.kml._trackPointAttribute)}this.readChildNodes(a,c);if(c.whens.length!==c.points.length)throw Error("gx:Track with unequal number of when ("+c.whens.length+") and gx:coord ("+c.points.length+") elements.");var g=0<c.angles.length;if(g&&c.whens.length!==c.angles.length)throw Error("gx:Track with unequal number of when ("+c.whens.length+") and gx:angles ("+c.angles.length+") elements.");for(var h,
e=0,f=c.whens.length;e<f;++e){h=b.feature.clone();h.fid=b.feature.fid||b.feature.id;d=c.points[e];h.geometry=d;"z"in d&&(h.attributes.altitude=d.z);this.internalProjection&&this.externalProjection&&h.geometry.transform(this.externalProjection,this.internalProjection);if(this.trackAttributes)for(var k=0,l=this.trackAttributes.length;k<l;++k)d=this.trackAttributes[k],h.attributes[d]=c.attributes[d][e];h.attributes.when=c.whens[e];h.attributes.trackId=b.feature.id;g&&(d=c.angles[e],h.attributes.heading=
parseFloat(d[0]),h.attributes.tilt=parseFloat(d[1]),h.attributes.roll=parseFloat(d[2]));b.features.push(h)}},coord:function(a,b){var c=this.getChildValue(a).replace(this.regExes.trimSpace,"").split(/\s+/),d=new OpenLayers.Geometry.Point(c[0],c[1]);2<c.length&&(d.z=parseFloat(c[2]));b.points.push(d)},angles:function(a,b){var c=this.getChildValue(a).replace(this.regExes.trimSpace,"").split(/\s+/);b.angles.push(c)}}},parseFeature:function(a){for(var b=["MultiGeometry","Polygon","LineString","Point"],
c,d,e,f=0,g=b.length;f<g;++f)if(c=b[f],this.internalns=a.namespaceURI?a.namespaceURI:this.kmlns,d=this.getElementsByTagNameNS(a,this.internalns,c),0<d.length){if(b=this.parseGeometry[c.toLowerCase()])e=b.apply(this,[d[0]]),this.internalProjection&&this.externalProjection&&e.transform(this.externalProjection,this.internalProjection);else throw new TypeError("Unsupported geometry type: "+c);break}var h;this.extractAttributes&&(h=this.parseAttributes(a));c=new OpenLayers.Feature.Vector(e,h);a=a.getAttribute("id")||
a.getAttribute("name");null!=a&&(c.fid=a);return c},getStyle:function(a,b){var c=OpenLayers.Util.removeTail(a),d=OpenLayers.Util.extend({},b);d.depth++;d.styleBaseUrl=c;!this.styles[a]&&!OpenLayers.String.startsWith(a,"#")&&d.depth<=this.maxDepth&&!this.fetched[c]&&(c=this.fetchLink(c))&&this.parseData(c,d);return OpenLayers.Util.extend({},this.styles[a])},parseGeometry:{point:function(a){var b=this.getElementsByTagNameNS(a,this.internalns,"coordinates");a=[];if(0<b.length){var c=b[0].firstChild.nodeValue,
c=c.replace(this.regExes.removeSpace,"");a=c.split(",")}b=null;if(1<a.length)2==a.length&&(a[2]=null),b=new OpenLayers.Geometry.Point(a[0],a[1],a[2]);else throw"Bad coordinate string: "+c;return b},linestring:function(a,b){var c=this.getElementsByTagNameNS(a,this.internalns,"coordinates"),d=null;if(0<c.length){for(var c=this.getChildValue(c[0]),c=c.replace(this.regExes.trimSpace,""),c=c.replace(this.regExes.trimComma,","),d=c.split(this.regExes.splitSpace),e=d.length,f=Array(e),g,h,k=0;k<e;++k)if(g=
d[k].split(","),h=g.length,1<h)2==g.length&&(g[2]=null),f[k]=new OpenLayers.Geometry.Point(g[0],g[1],g[2]);else throw"Bad LineString point coordinates: "+d[k];if(e)d=b?new OpenLayers.Geometry.LinearRing(f):new OpenLayers.Geometry.LineString(f);else throw"Bad LineString coordinates: "+c;}return d},polygon:function(a){a=this.getElementsByTagNameNS(a,this.internalns,"LinearRing");var b=a.length,c=Array(b);if(0<b)for(var d=0,e=a.length;d<e;++d)if(b=this.parseGeometry.linestring.apply(this,[a[d],!0]))c[d]=
b;else throw"Bad LinearRing geometry: "+d;return new OpenLayers.Geometry.Polygon(c)},multigeometry:function(a){for(var b,c=[],d=a.childNodes,e=0,f=d.length;e<f;++e)a=d[e],1==a.nodeType&&(b=a.prefix?a.nodeName.split(":")[1]:a.nodeName,(b=this.parseGeometry[b.toLowerCase()])&&c.push(b.apply(this,[a])));return new OpenLayers.Geometry.Collection(c)}},parseAttributes:function(a){var b={},c=a.getElementsByTagName("ExtendedData");c.length&&(b=this.parseExtendedData(c[0]));var d,e,f;a=a.childNodes;for(var c=
0,g=a.length;c<g;++c)if(d=a[c],1==d.nodeType&&(e=d.childNodes,1<=e.length&&3>=e.length)){switch(e.length){case 1:f=e[0];break;case 2:f=e[0];e=e[1];f=3==f.nodeType||4==f.nodeType?f:e;break;default:f=e[1]}if(3==f.nodeType||4==f.nodeType)if(d=d.prefix?d.nodeName.split(":")[1]:d.nodeName,f=OpenLayers.Util.getXmlNodeValue(f))f=f.replace(this.regExes.trimSpace,""),b[d]=f}return b},parseExtendedData:function(a){var b={},c,d,e,f,g=a.getElementsByTagName("Data");c=0;for(d=g.length;c<d;c++){e=g[c];f=e.getAttribute("name");
var h={},k=e.getElementsByTagName("value");k.length&&(h.value=this.getChildValue(k[0]));this.kvpAttributes?b[f]=h.value:(e=e.getElementsByTagName("displayName"),e.length&&(h.displayName=this.getChildValue(e[0])),b[f]=h)}a=a.getElementsByTagName("SimpleData");c=0;for(d=a.length;c<d;c++)h={},e=a[c],f=e.getAttribute("name"),h.value=this.getChildValue(e),this.kvpAttributes?b[f]=h.value:(h.displayName=f,b[f]=h);return b},parseProperty:function(a,b,c){var d;a=this.getElementsByTagNameNS(a,b,c);try{d=OpenLayers.Util.getXmlNodeValue(a[0])}catch(e){d=
null}return d},write:function(a){OpenLayers.Util.isArray(a)||(a=[a]);for(var b=this.createElementNS(this.kmlns,"kml"),c=this.createFolderXML(),d=0,e=a.length;d<e;++d)c.appendChild(this.createPlacemarkXML(a[d]));b.appendChild(c);return OpenLayers.Format.XML.prototype.write.apply(this,[b])},createFolderXML:function(){var a=this.createElementNS(this.kmlns,"Folder");if(this.foldersName){var b=this.createElementNS(this.kmlns,"name"),c=this.createTextNode(this.foldersName);b.appendChild(c);a.appendChild(b)}this.foldersDesc&&
(b=this.createElementNS(this.kmlns,"description"),c=this.createTextNode(this.foldersDesc),b.appendChild(c),a.appendChild(b));return a},createPlacemarkXML:function(a){var b=this.createElementNS(this.kmlns,"name"),c=a.style&&a.style.label?a.style.label:a.id;b.appendChild(this.createTextNode(a.attributes.name||c));var d=this.createElementNS(this.kmlns,"description");d.appendChild(this.createTextNode(a.attributes.description||this.placemarksDesc));c=this.createElementNS(this.kmlns,"Placemark");null!=
a.fid&&c.setAttribute("id",a.fid);c.appendChild(b);c.appendChild(d);b=this.buildGeometryNode(a.geometry);c.appendChild(b);a.attributes&&(a=this.buildExtendedData(a.attributes))&&c.appendChild(a);return c},buildGeometryNode:function(a){var b=a.CLASS_NAME,b=b.substring(b.lastIndexOf(".")+1),b=this.buildGeometry[b.toLowerCase()],c=null;b&&(c=b.apply(this,[a]));return c},buildGeometry:{point:function(a){var b=this.createElementNS(this.kmlns,"Point");b.appendChild(this.buildCoordinatesNode(a));return b},
multipoint:function(a){return this.buildGeometry.collection.apply(this,[a])},linestring:function(a){var b=this.createElementNS(this.kmlns,"LineString");b.appendChild(this.buildCoordinatesNode(a));return b},multilinestring:function(a){return this.buildGeometry.collection.apply(this,[a])},linearring:function(a){var b=this.createElementNS(this.kmlns,"LinearRing");b.appendChild(this.buildCoordinatesNode(a));return b},polygon:function(a){var b=this.createElementNS(this.kmlns,"Polygon");a=a.components;
for(var c,d,e=0,f=a.length;e<f;++e)c=0==e?"outerBoundaryIs":"innerBoundaryIs",c=this.createElementNS(this.kmlns,c),d=this.buildGeometry.linearring.apply(this,[a[e]]),c.appendChild(d),b.appendChild(c);return b},multipolygon:function(a){return this.buildGeometry.collection.apply(this,[a])},collection:function(a){for(var b=this.createElementNS(this.kmlns,"MultiGeometry"),c,d=0,e=a.components.length;d<e;++d)(c=this.buildGeometryNode.apply(this,[a.components[d]]))&&b.appendChild(c);return b}},buildCoordinatesNode:function(a){var b=
this.createElementNS(this.kmlns,"coordinates"),c;if(c=a.components){for(var d=c.length,e=Array(d),f=0;f<d;++f)a=c[f],e[f]=this.buildCoordinates(a);c=e.join(" ")}else c=this.buildCoordinates(a);c=this.createTextNode(c);b.appendChild(c);return b},buildCoordinates:function(a){this.internalProjection&&this.externalProjection&&(a=a.clone(),a.transform(this.internalProjection,this.externalProjection));return a.x+","+a.y},buildExtendedData:function(a){var b=this.createElementNS(this.kmlns,"ExtendedData"),
c;for(c in a)if(a[c]&&"name"!=c&&"description"!=c&&"styleUrl"!=c){var d=this.createElementNS(this.kmlns,"Data");d.setAttribute("name",c);var e=this.createElementNS(this.kmlns,"value");if("object"==typeof a[c]){if(a[c].value&&e.appendChild(this.createTextNode(a[c].value)),a[c].displayName){var f=this.createElementNS(this.kmlns,"displayName");f.appendChild(this.getXMLDoc().createCDATASection(a[c].displayName));d.appendChild(f)}}else e.appendChild(this.createTextNode(a[c]));d.appendChild(e);b.appendChild(d)}return this.isSimpleContent(b)?
null:b},CLASS_NAME:"OpenLayers.Format.KML"});OpenLayers.Format.WMSCapabilities=OpenLayers.Class(OpenLayers.Format.XML.VersionedOGC,{defaultVersion:"1.1.1",profile:null,CLASS_NAME:"OpenLayers.Format.WMSCapabilities"});OpenLayers.Format.WMSCapabilities.v1=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{wms:"http://www.opengis.net/wms",xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance"},defaultPrefix:"wms",read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));var b=a;a&&9==a.nodeType&&(a=a.documentElement);var c={};this.readNode(a,c);void 0===c.service&&(a=new OpenLayers.Format.OGCExceptionReport,c.error=a.read(b));return c},readers:{wms:{Service:function(a,
b){b.service={};this.readChildNodes(a,b.service)},Name:function(a,b){b.name=this.getChildValue(a)},Title:function(a,b){b.title=this.getChildValue(a)},Abstract:function(a,b){b["abstract"]=this.getChildValue(a)},BoundingBox:function(a,b){var c={};c.bbox=[parseFloat(a.getAttribute("minx")),parseFloat(a.getAttribute("miny")),parseFloat(a.getAttribute("maxx")),parseFloat(a.getAttribute("maxy"))];var d={x:parseFloat(a.getAttribute("resx")),y:parseFloat(a.getAttribute("resy"))};isNaN(d.x)&&isNaN(d.y)||(c.res=
d);return c},OnlineResource:function(a,b){b.href=this.getAttributeNS(a,this.namespaces.xlink,"href")},ContactInformation:function(a,b){b.contactInformation={};this.readChildNodes(a,b.contactInformation)},ContactPersonPrimary:function(a,b){b.personPrimary={};this.readChildNodes(a,b.personPrimary)},ContactPerson:function(a,b){b.person=this.getChildValue(a)},ContactOrganization:function(a,b){b.organization=this.getChildValue(a)},ContactPosition:function(a,b){b.position=this.getChildValue(a)},ContactAddress:function(a,
b){b.contactAddress={};this.readChildNodes(a,b.contactAddress)},AddressType:function(a,b){b.type=this.getChildValue(a)},Address:function(a,b){b.address=this.getChildValue(a)},City:function(a,b){b.city=this.getChildValue(a)},StateOrProvince:function(a,b){b.stateOrProvince=this.getChildValue(a)},PostCode:function(a,b){b.postcode=this.getChildValue(a)},Country:function(a,b){b.country=this.getChildValue(a)},ContactVoiceTelephone:function(a,b){b.phone=this.getChildValue(a)},ContactFacsimileTelephone:function(a,
b){b.fax=this.getChildValue(a)},ContactElectronicMailAddress:function(a,b){b.email=this.getChildValue(a)},Fees:function(a,b){var c=this.getChildValue(a);c&&"none"!=c.toLowerCase()&&(b.fees=c)},AccessConstraints:function(a,b){var c=this.getChildValue(a);c&&"none"!=c.toLowerCase()&&(b.accessConstraints=c)},Capability:function(a,b){b.capability={nestedLayers:[],layers:[]};this.readChildNodes(a,b.capability)},Request:function(a,b){b.request={};this.readChildNodes(a,b.request)},GetCapabilities:function(a,
b){b.getcapabilities={formats:[]};this.readChildNodes(a,b.getcapabilities)},Format:function(a,b){OpenLayers.Util.isArray(b.formats)?b.formats.push(this.getChildValue(a)):b.format=this.getChildValue(a)},DCPType:function(a,b){this.readChildNodes(a,b)},HTTP:function(a,b){this.readChildNodes(a,b)},Get:function(a,b){b.get={};this.readChildNodes(a,b.get);b.href||(b.href=b.get.href)},Post:function(a,b){b.post={};this.readChildNodes(a,b.post);b.href||(b.href=b.get.href)},GetMap:function(a,b){b.getmap={formats:[]};
this.readChildNodes(a,b.getmap)},GetFeatureInfo:function(a,b){b.getfeatureinfo={formats:[]};this.readChildNodes(a,b.getfeatureinfo)},Exception:function(a,b){b.exception={formats:[]};this.readChildNodes(a,b.exception)},Layer:function(a,b){var c,d;b.capability?(d=b.capability,c=b):d=b;var e=a.getAttributeNode("queryable"),f=e&&e.specified?a.getAttribute("queryable"):null,g=(e=a.getAttributeNode("cascaded"))&&e.specified?a.getAttribute("cascaded"):null,e=(e=a.getAttributeNode("opaque"))&&e.specified?
a.getAttribute("opaque"):null,h=a.getAttribute("noSubsets"),k=a.getAttribute("fixedWidth"),l=a.getAttribute("fixedHeight"),m=c||{},n=OpenLayers.Util.extend;c={nestedLayers:[],styles:c?[].concat(c.styles):[],srs:c?n({},m.srs):{},metadataURLs:[],bbox:c?n({},m.bbox):{},llbbox:m.llbbox,dimensions:c?n({},m.dimensions):{},authorityURLs:c?n({},m.authorityURLs):{},identifiers:{},keywords:[],queryable:f&&""!==f?"1"===f||"true"===f:m.queryable||!1,cascaded:null!==g?parseInt(g):m.cascaded||0,opaque:e?"1"===
e||"true"===e:m.opaque||!1,noSubsets:null!==h?"1"===h||"true"===h:m.noSubsets||!1,fixedWidth:null!=k?parseInt(k):m.fixedWidth||0,fixedHeight:null!=l?parseInt(l):m.fixedHeight||0,minScale:m.minScale,maxScale:m.maxScale,attribution:m.attribution};b.nestedLayers.push(c);c.capability=d;this.readChildNodes(a,c);delete c.capability;c.name&&(f=c.name.split(":"),g=d.request,e=g.getfeatureinfo,0<f.length&&(c.prefix=f[0]),d.layers.push(c),void 0===c.formats&&(c.formats=g.getmap.formats),void 0===c.infoFormats&&
e&&(c.infoFormats=e.formats))},Attribution:function(a,b){b.attribution={};this.readChildNodes(a,b.attribution)},LogoURL:function(a,b){b.logo={width:a.getAttribute("width"),height:a.getAttribute("height")};this.readChildNodes(a,b.logo)},Style:function(a,b){var c={};b.styles.push(c);this.readChildNodes(a,c)},LegendURL:function(a,b){var c={width:a.getAttribute("width"),height:a.getAttribute("height")};b.legend=c;this.readChildNodes(a,c)},MetadataURL:function(a,b){var c={type:a.getAttribute("type")};
b.metadataURLs.push(c);this.readChildNodes(a,c)},DataURL:function(a,b){b.dataURL={};this.readChildNodes(a,b.dataURL)},FeatureListURL:function(a,b){b.featureListURL={};this.readChildNodes(a,b.featureListURL)},AuthorityURL:function(a,b){var c=a.getAttribute("name"),d={};this.readChildNodes(a,d);b.authorityURLs[c]=d.href},Identifier:function(a,b){var c=a.getAttribute("authority");b.identifiers[c]=this.getChildValue(a)},KeywordList:function(a,b){this.readChildNodes(a,b)},SRS:function(a,b){b.srs[this.getChildValue(a)]=
!0}}},CLASS_NAME:"OpenLayers.Format.WMSCapabilities.v1"});OpenLayers.Format.WMSCapabilities.v1_1=OpenLayers.Class(OpenLayers.Format.WMSCapabilities.v1,{readers:{wms:OpenLayers.Util.applyDefaults({WMT_MS_Capabilities:function(a,b){this.readChildNodes(a,b)},Keyword:function(a,b){b.keywords&&b.keywords.push(this.getChildValue(a))},DescribeLayer:function(a,b){b.describelayer={formats:[]};this.readChildNodes(a,b.describelayer)},GetLegendGraphic:function(a,b){b.getlegendgraphic={formats:[]};this.readChildNodes(a,b.getlegendgraphic)},GetStyles:function(a,b){b.getstyles=
{formats:[]};this.readChildNodes(a,b.getstyles)},PutStyles:function(a,b){b.putstyles={formats:[]};this.readChildNodes(a,b.putstyles)},UserDefinedSymbolization:function(a,b){var c={supportSLD:1==parseInt(a.getAttribute("SupportSLD")),userLayer:1==parseInt(a.getAttribute("UserLayer")),userStyle:1==parseInt(a.getAttribute("UserStyle")),remoteWFS:1==parseInt(a.getAttribute("RemoteWFS"))};b.userSymbols=c},LatLonBoundingBox:function(a,b){b.llbbox=[parseFloat(a.getAttribute("minx")),parseFloat(a.getAttribute("miny")),
parseFloat(a.getAttribute("maxx")),parseFloat(a.getAttribute("maxy"))]},BoundingBox:function(a,b){var c=OpenLayers.Format.WMSCapabilities.v1.prototype.readers.wms.BoundingBox.apply(this,[a,b]);c.srs=a.getAttribute("SRS");b.bbox[c.srs]=c},ScaleHint:function(a,b){var c=a.getAttribute("min"),d=a.getAttribute("max"),e=Math.pow(2,0.5),f=OpenLayers.INCHES_PER_UNIT.m;0!=c&&(b.maxScale=parseFloat((c/e*f*OpenLayers.DOTS_PER_INCH).toPrecision(13)));d!=Number.POSITIVE_INFINITY&&(b.minScale=parseFloat((d/e*f*
OpenLayers.DOTS_PER_INCH).toPrecision(13)))},Dimension:function(a,b){var c={name:a.getAttribute("name").toLowerCase(),units:a.getAttribute("units"),unitsymbol:a.getAttribute("unitSymbol")};b.dimensions[c.name]=c},Extent:function(a,b){var c=a.getAttribute("name").toLowerCase();if(c in b.dimensions){c=b.dimensions[c];c.nearestVal="1"===a.getAttribute("nearestValue");c.multipleVal="1"===a.getAttribute("multipleValues");c.current="1"===a.getAttribute("current");c["default"]=a.getAttribute("default")||
"";var d=this.getChildValue(a);c.values=d.split(",")}}},OpenLayers.Format.WMSCapabilities.v1.prototype.readers.wms)},CLASS_NAME:"OpenLayers.Format.WMSCapabilities.v1_1"});OpenLayers.Format.WMSCapabilities.v1_1_0=OpenLayers.Class(OpenLayers.Format.WMSCapabilities.v1_1,{version:"1.1.0",readers:{wms:OpenLayers.Util.applyDefaults({SRS:function(a,b){for(var c=this.getChildValue(a).split(/ +/),d=0,e=c.length;d<e;d++)b.srs[c[d]]=!0}},OpenLayers.Format.WMSCapabilities.v1_1.prototype.readers.wms)},CLASS_NAME:"OpenLayers.Format.WMSCapabilities.v1_1_0"});OpenLayers.Protocol.WFS.v1=OpenLayers.Class(OpenLayers.Protocol,{version:null,srsName:"EPSG:4326",featureType:null,featureNS:null,geometryName:"the_geom",schema:null,featurePrefix:"feature",formatOptions:null,readFormat:null,readOptions:null,initialize:function(a){OpenLayers.Protocol.prototype.initialize.apply(this,[a]);a.format||(this.format=OpenLayers.Format.WFST(OpenLayers.Util.extend({version:this.version,featureType:this.featureType,featureNS:this.featureNS,featurePrefix:this.featurePrefix,geometryName:this.geometryName,
srsName:this.srsName,schema:this.schema},this.formatOptions)));!a.geometryName&&1<parseFloat(this.format.version)&&this.setGeometryName(null)},destroy:function(){this.options&&!this.options.format&&this.format.destroy();this.format=null;OpenLayers.Protocol.prototype.destroy.apply(this)},read:function(a){OpenLayers.Protocol.prototype.read.apply(this,arguments);a=OpenLayers.Util.extend({},a);OpenLayers.Util.applyDefaults(a,this.options||{});var b=new OpenLayers.Protocol.Response({requestType:"read"}),
c=OpenLayers.Format.XML.prototype.write.apply(this.format,[this.format.writeNode("wfs:GetFeature",a)]);b.priv=OpenLayers.Request.POST({url:a.url,callback:this.createCallback(this.handleRead,b,a),params:a.params,headers:a.headers,data:c});return b},setFeatureType:function(a){this.featureType=a;this.format.featureType=a},setGeometryName:function(a){this.geometryName=a;this.format.geometryName=a},handleRead:function(a,b){b=OpenLayers.Util.extend({},b);OpenLayers.Util.applyDefaults(b,this.options);if(b.callback){var c=
a.priv;200<=c.status&&300>c.status?(c=this.parseResponse(c,b.readOptions))&&!1!==c.success?(b.readOptions&&"object"==b.readOptions.output?OpenLayers.Util.extend(a,c):a.features=c,a.code=OpenLayers.Protocol.Response.SUCCESS):(a.code=OpenLayers.Protocol.Response.FAILURE,a.error=c):a.code=OpenLayers.Protocol.Response.FAILURE;b.callback.call(b.scope,a)}},parseResponse:function(a,b){var c=a.responseXML;c&&c.documentElement||(c=a.responseText);if(!c||0>=c.length)return null;c=null!==this.readFormat?this.readFormat.read(c):
this.format.read(c,b);if(!this.featureNS){var d=this.readFormat||this.format;this.featureNS=d.featureNS;d.autoConfig=!1;this.geometryName||this.setGeometryName(d.geometryName)}return c},commit:function(a,b){b=OpenLayers.Util.extend({},b);OpenLayers.Util.applyDefaults(b,this.options);var c=new OpenLayers.Protocol.Response({requestType:"commit",reqFeatures:a});c.priv=OpenLayers.Request.POST({url:b.url,headers:b.headers,data:this.format.write(a,b),callback:this.createCallback(this.handleCommit,c,b)});
return c},handleCommit:function(a,b){if(b.callback){var c=a.priv,d=c.responseXML;d&&d.documentElement||(d=c.responseText);c=this.format.read(d)||{};a.insertIds=c.insertIds||[];c.success?a.code=OpenLayers.Protocol.Response.SUCCESS:(a.code=OpenLayers.Protocol.Response.FAILURE,a.error=c);b.callback.call(b.scope,a)}},filterDelete:function(a,b){b=OpenLayers.Util.extend({},b);OpenLayers.Util.applyDefaults(b,this.options);new OpenLayers.Protocol.Response({requestType:"commit"});var c=this.format.createElementNSPlus("wfs:Transaction",
{attributes:{service:"WFS",version:this.version}}),d=this.format.createElementNSPlus("wfs:Delete",{attributes:{typeName:(b.featureNS?this.featurePrefix+":":"")+b.featureType}});b.featureNS&&d.setAttribute("xmlns:"+this.featurePrefix,b.featureNS);var e=this.format.writeNode("ogc:Filter",a);d.appendChild(e);c.appendChild(d);c=OpenLayers.Format.XML.prototype.write.apply(this.format,[c]);return OpenLayers.Request.POST({url:this.url,callback:b.callback||function(){},data:c})},abort:function(a){a&&a.priv.abort()},
CLASS_NAME:"OpenLayers.Protocol.WFS.v1"});OpenLayers.Handler.Feature=OpenLayers.Class(OpenLayers.Handler,{EVENTMAP:{click:{"in":"click",out:"clickout"},mousemove:{"in":"over",out:"out"},dblclick:{"in":"dblclick",out:null},mousedown:{"in":null,out:null},mouseup:{"in":null,out:null},touchstart:{"in":"click",out:"clickout"}},feature:null,lastFeature:null,down:null,up:null,clickTolerance:4,geometryTypes:null,stopClick:!0,stopDown:!0,stopUp:!1,initialize:function(a,b,c,d){OpenLayers.Handler.prototype.initialize.apply(this,[a,c,d]);this.layer=
b},touchstart:function(a){this.startTouch();return OpenLayers.Event.isMultiTouch(a)?!0:this.mousedown(a)},touchmove:function(a){OpenLayers.Event.preventDefault(a)},mousedown:function(a){if(OpenLayers.Event.isLeftClick(a)||OpenLayers.Event.isSingleTouch(a))this.down=a.xy;return this.handle(a)?!this.stopDown:!0},mouseup:function(a){this.up=a.xy;return this.handle(a)?!this.stopUp:!0},click:function(a){return this.handle(a)?!this.stopClick:!0},mousemove:function(a){if(!this.callbacks.over&&!this.callbacks.out)return!0;
this.handle(a);return!0},dblclick:function(a){return!this.handle(a)},geometryTypeMatches:function(a){return null==this.geometryTypes||-1<OpenLayers.Util.indexOf(this.geometryTypes,a.geometry.CLASS_NAME)},handle:function(a){this.feature&&!this.feature.layer&&(this.feature=null);var b=a.type,c=!1,d=!!this.feature,e="click"==b||"dblclick"==b||"touchstart"==b;(this.feature=this.layer.getFeatureFromEvent(a))&&!this.feature.layer&&(this.feature=null);this.lastFeature&&!this.lastFeature.layer&&(this.lastFeature=
null);this.feature?("touchstart"===b&&OpenLayers.Event.preventDefault(a),a=this.feature!=this.lastFeature,this.geometryTypeMatches(this.feature)?(d&&a?(this.lastFeature&&this.triggerCallback(b,"out",[this.lastFeature]),this.triggerCallback(b,"in",[this.feature])):d&&!e||this.triggerCallback(b,"in",[this.feature]),this.lastFeature=this.feature,c=!0):(this.lastFeature&&(d&&a||e)&&this.triggerCallback(b,"out",[this.lastFeature]),this.feature=null)):this.lastFeature&&(d||e)&&this.triggerCallback(b,"out",
[this.lastFeature]);return c},triggerCallback:function(a,b,c){if(b=this.EVENTMAP[a][b])"click"==a&&this.up&&this.down?(Math.sqrt(Math.pow(this.up.x-this.down.x,2)+Math.pow(this.up.y-this.down.y,2))<=this.clickTolerance&&this.callback(b,c),this.up=this.down=null):this.callback(b,c)},activate:function(){var a=!1;OpenLayers.Handler.prototype.activate.apply(this,arguments)&&(this.moveLayerToTop(),this.map.events.on({removelayer:this.handleMapEvents,changelayer:this.handleMapEvents,scope:this}),a=!0);
return a},deactivate:function(){var a=!1;OpenLayers.Handler.prototype.deactivate.apply(this,arguments)&&(this.moveLayerBack(),this.up=this.down=this.lastFeature=this.feature=null,this.map.events.un({removelayer:this.handleMapEvents,changelayer:this.handleMapEvents,scope:this}),a=!0);return a},handleMapEvents:function(a){"removelayer"!=a.type&&"order"!=a.property||this.moveLayerToTop()},moveLayerToTop:function(){var a=Math.max(this.map.Z_INDEX_BASE.Feature-1,this.layer.getZIndex())+1;this.layer.setZIndex(a)},
moveLayerBack:function(){var a=this.layer.getZIndex()-1;a>=this.map.Z_INDEX_BASE.Feature?this.layer.setZIndex(a):this.map.setLayerZIndex(this.layer,this.map.getLayerIndex(this.layer))},CLASS_NAME:"OpenLayers.Handler.Feature"});OpenLayers.Layer.Vector.RootContainer=OpenLayers.Class(OpenLayers.Layer.Vector,{displayInLayerSwitcher:!1,layers:null,display:function(){},getFeatureFromEvent:function(a){for(var b=this.layers,c,d=0;d<b.length;d++)if(c=b[d].getFeatureFromEvent(a))return c},setMap:function(a){OpenLayers.Layer.Vector.prototype.setMap.apply(this,arguments);this.collectRoots();a.events.register("changelayer",this,this.handleChangeLayer)},removeMap:function(a){a.events.unregister("changelayer",this,this.handleChangeLayer);
this.resetRoots();OpenLayers.Layer.Vector.prototype.removeMap.apply(this,arguments)},collectRoots:function(){for(var a,b=0;b<this.map.layers.length;++b)a=this.map.layers[b],-1!=OpenLayers.Util.indexOf(this.layers,a)&&a.renderer.moveRoot(this.renderer)},resetRoots:function(){for(var a,b=0;b<this.layers.length;++b)a=this.layers[b],this.renderer&&a.renderer.getRenderLayerId()==this.id&&this.renderer.moveRoot(a.renderer)},handleChangeLayer:function(a){var b=a.layer;"order"==a.property&&-1!=OpenLayers.Util.indexOf(this.layers,
b)&&(this.resetRoots(),this.collectRoots())},CLASS_NAME:"OpenLayers.Layer.Vector.RootContainer"});OpenLayers.Control.SelectFeature=OpenLayers.Class(OpenLayers.Control,{multipleKey:null,toggleKey:null,multiple:!1,clickout:!0,toggle:!1,hover:!1,highlightOnly:!1,box:!1,onBeforeSelect:function(){},onSelect:function(){},onUnselect:function(){},scope:null,geometryTypes:null,layer:null,layers:null,callbacks:null,selectStyle:null,renderIntent:"select",handlers:null,initialize:function(a,b){OpenLayers.Control.prototype.initialize.apply(this,[b]);null===this.scope&&(this.scope=this);this.initLayer(a);var c=
{click:this.clickFeature,clickout:this.clickoutFeature};this.hover&&(c.over=this.overFeature,c.out=this.outFeature);this.callbacks=OpenLayers.Util.extend(c,this.callbacks);this.handlers={feature:new OpenLayers.Handler.Feature(this,this.layer,this.callbacks,{geometryTypes:this.geometryTypes})};this.box&&(this.handlers.box=new OpenLayers.Handler.Box(this,{done:this.selectBox},{boxDivClassName:"olHandlerBoxSelectFeature"}))},initLayer:function(a){OpenLayers.Util.isArray(a)?(this.layers=a,this.layer=
new OpenLayers.Layer.Vector.RootContainer(this.id+"_container",{layers:a})):this.layer=a},destroy:function(){this.active&&this.layers&&this.map.removeLayer(this.layer);OpenLayers.Control.prototype.destroy.apply(this,arguments);this.layers&&this.layer.destroy()},activate:function(){this.active||(this.layers&&this.map.addLayer(this.layer),this.handlers.feature.activate(),this.box&&this.handlers.box&&this.handlers.box.activate());return OpenLayers.Control.prototype.activate.apply(this,arguments)},deactivate:function(){this.active&&
(this.handlers.feature.deactivate(),this.handlers.box&&this.handlers.box.deactivate(),this.layers&&this.map.removeLayer(this.layer));return OpenLayers.Control.prototype.deactivate.apply(this,arguments)},unselectAll:function(a){var b=this.layers||[this.layer],c,d,e,f;for(e=0;e<b.length;++e)if(c=b[e],f=0,null!=c.selectedFeatures)for(;c.selectedFeatures.length>f;)d=c.selectedFeatures[f],a&&a.except==d?++f:this.unselect(d)},clickFeature:function(a){this.hover||(-1<OpenLayers.Util.indexOf(a.layer.selectedFeatures,
a)?this.toggleSelect()?this.unselect(a):this.multipleSelect()||this.unselectAll({except:a}):(this.multipleSelect()||this.unselectAll({except:a}),this.select(a)))},multipleSelect:function(){return this.multiple||this.handlers.feature.evt&&this.handlers.feature.evt[this.multipleKey]},toggleSelect:function(){return this.toggle||this.handlers.feature.evt&&this.handlers.feature.evt[this.toggleKey]},clickoutFeature:function(a){!this.hover&&this.clickout&&this.unselectAll()},overFeature:function(a){var b=
a.layer;this.hover&&(this.highlightOnly?this.highlight(a):-1==OpenLayers.Util.indexOf(b.selectedFeatures,a)&&this.select(a))},outFeature:function(a){if(this.hover)if(this.highlightOnly){if(a._lastHighlighter==this.id)if(a._prevHighlighter&&a._prevHighlighter!=this.id){delete a._lastHighlighter;var b=this.map.getControl(a._prevHighlighter);b&&b.highlight(a)}else this.unhighlight(a)}else this.unselect(a)},highlight:function(a){var b=a.layer;!1!==this.events.triggerEvent("beforefeaturehighlighted",{feature:a})&&
(a._prevHighlighter=a._lastHighlighter,a._lastHighlighter=this.id,b.drawFeature(a,this.selectStyle||this.renderIntent),this.events.triggerEvent("featurehighlighted",{feature:a}))},unhighlight:function(a){var b=a.layer;void 0==a._prevHighlighter?delete a._lastHighlighter:(a._prevHighlighter!=this.id&&(a._lastHighlighter=a._prevHighlighter),delete a._prevHighlighter);b.drawFeature(a,a.style||a.layer.style||"default");this.events.triggerEvent("featureunhighlighted",{feature:a})},select:function(a){var b=
this.onBeforeSelect.call(this.scope,a),c=a.layer;!1!==b&&(b=c.events.triggerEvent("beforefeatureselected",{feature:a}),!1!==b&&(c.selectedFeatures.push(a),this.highlight(a),this.handlers.feature.lastFeature||(this.handlers.feature.lastFeature=c.selectedFeatures[0]),c.events.triggerEvent("featureselected",{feature:a}),this.onSelect.call(this.scope,a)))},unselect:function(a){var b=a.layer;this.unhighlight(a);OpenLayers.Util.removeItem(b.selectedFeatures,a);b.events.triggerEvent("featureunselected",
{feature:a});this.onUnselect.call(this.scope,a)},selectBox:function(a){if(a instanceof OpenLayers.Bounds){var b=this.map.getLonLatFromPixel({x:a.left,y:a.bottom});a=this.map.getLonLatFromPixel({x:a.right,y:a.top});b=new OpenLayers.Bounds(b.lon,b.lat,a.lon,a.lat);this.multipleSelect()||this.unselectAll();a=this.multiple;this.multiple=!0;var c=this.layers||[this.layer];this.events.triggerEvent("boxselectionstart",{layers:c});for(var d,e=0;e<c.length;++e){d=c[e];for(var f=0,g=d.features.length;f<g;++f){var h=
d.features[f];h.getVisibility()&&(null==this.geometryTypes||-1<OpenLayers.Util.indexOf(this.geometryTypes,h.geometry.CLASS_NAME))&&b.toGeometry().intersects(h.geometry)&&-1==OpenLayers.Util.indexOf(d.selectedFeatures,h)&&this.select(h)}}this.multiple=a;this.events.triggerEvent("boxselectionend",{layers:c})}},setMap:function(a){this.handlers.feature.setMap(a);this.box&&this.handlers.box.setMap(a);OpenLayers.Control.prototype.setMap.apply(this,arguments)},setLayer:function(a){var b=this.active;this.unselectAll();
this.deactivate();this.layers&&(this.layer.destroy(),this.layers=null);this.initLayer(a);this.handlers.feature.layer=this.layer;b&&this.activate()},CLASS_NAME:"OpenLayers.Control.SelectFeature"});OpenLayers.Handler.Point=OpenLayers.Class(OpenLayers.Handler,{point:null,layer:null,multi:!1,citeCompliant:!1,mouseDown:!1,stoppedDown:null,lastDown:null,lastUp:null,persist:!1,stopDown:!1,stopUp:!1,layerOptions:null,pixelTolerance:5,lastTouchPx:null,initialize:function(a,b,c){c&&c.layerOptions&&c.layerOptions.styleMap||(this.style=OpenLayers.Util.extend(OpenLayers.Feature.Vector.style["default"],{}));OpenLayers.Handler.prototype.initialize.apply(this,arguments)},activate:function(){if(!OpenLayers.Handler.prototype.activate.apply(this,
arguments))return!1;var a=OpenLayers.Util.extend({displayInLayerSwitcher:!1,calculateInRange:OpenLayers.Function.True,wrapDateLine:this.citeCompliant},this.layerOptions);this.layer=new OpenLayers.Layer.Vector(this.CLASS_NAME,a);this.map.addLayer(this.layer);return!0},createFeature:function(a){a=this.layer.getLonLatFromViewPortPx(a);a=new OpenLayers.Geometry.Point(a.lon,a.lat);this.point=new OpenLayers.Feature.Vector(a);this.callback("create",[this.point.geometry,this.point]);this.point.geometry.clearBounds();
this.layer.addFeatures([this.point],{silent:!0})},deactivate:function(){if(!OpenLayers.Handler.prototype.deactivate.apply(this,arguments))return!1;this.cancel();null!=this.layer.map&&(this.destroyFeature(!0),this.layer.destroy(!1));this.layer=null;return!0},destroyFeature:function(a){!this.layer||!a&&this.persist||this.layer.destroyFeatures();this.point=null},destroyPersistedFeature:function(){var a=this.layer;a&&1<a.features.length&&this.layer.features[0].destroy()},finalize:function(a){this.mouseDown=
!1;this.lastTouchPx=this.lastUp=this.lastDown=null;this.callback(a?"cancel":"done",[this.geometryClone()]);this.destroyFeature(a)},cancel:function(){this.finalize(!0)},click:function(a){OpenLayers.Event.stop(a);return!1},dblclick:function(a){OpenLayers.Event.stop(a);return!1},modifyFeature:function(a){this.point||this.createFeature(a);a=this.layer.getLonLatFromViewPortPx(a);this.point.geometry.x=a.lon;this.point.geometry.y=a.lat;this.callback("modify",[this.point.geometry,this.point,!1]);this.point.geometry.clearBounds();
this.drawFeature()},drawFeature:function(){this.layer.drawFeature(this.point,this.style)},getGeometry:function(){var a=this.point&&this.point.geometry;a&&this.multi&&(a=new OpenLayers.Geometry.MultiPoint([a]));return a},geometryClone:function(){var a=this.getGeometry();return a&&a.clone()},mousedown:function(a){return this.down(a)},touchstart:function(a){this.startTouch();this.lastTouchPx=a.xy;return this.down(a)},mousemove:function(a){return this.move(a)},touchmove:function(a){this.lastTouchPx=a.xy;
return this.move(a)},mouseup:function(a){return this.up(a)},touchend:function(a){a.xy=this.lastTouchPx;return this.up(a)},down:function(a){this.mouseDown=!0;this.lastDown=a.xy;this.touch||this.modifyFeature(a.xy);this.stoppedDown=this.stopDown;return!this.stopDown},move:function(a){this.touch||this.mouseDown&&!this.stoppedDown||this.modifyFeature(a.xy);return!0},up:function(a){this.mouseDown=!1;this.stoppedDown=this.stopDown;if(!this.checkModifiers(a)||this.lastUp&&this.lastUp.equals(a.xy)||!this.lastDown||
!this.passesTolerance(this.lastDown,a.xy,this.pixelTolerance))return!0;this.touch&&this.modifyFeature(a.xy);this.persist&&this.destroyPersistedFeature();this.lastUp=a.xy;this.finalize();return!this.stopUp},mouseout:function(a){OpenLayers.Util.mouseLeft(a,this.map.viewPortDiv)&&(this.stoppedDown=this.stopDown,this.mouseDown=!1)},passesTolerance:function(a,b,c){var d=!0;null!=c&&a&&b&&a.distanceTo(b)>c&&(d=!1);return d},CLASS_NAME:"OpenLayers.Handler.Point"});OpenLayers.Handler.Path=OpenLayers.Class(OpenLayers.Handler.Point,{line:null,maxVertices:null,doubleTouchTolerance:20,freehand:!1,freehandToggle:"shiftKey",timerId:null,redoStack:null,createFeature:function(a){a=this.layer.getLonLatFromViewPortPx(a);a=new OpenLayers.Geometry.Point(a.lon,a.lat);this.point=new OpenLayers.Feature.Vector(a);this.line=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.LineString([this.point.geometry]));this.callback("create",[this.point.geometry,this.getSketch()]);
this.point.geometry.clearBounds();this.layer.addFeatures([this.line,this.point],{silent:!0})},destroyFeature:function(a){OpenLayers.Handler.Point.prototype.destroyFeature.call(this,a);this.line=null},destroyPersistedFeature:function(){var a=this.layer;a&&2<a.features.length&&this.layer.features[0].destroy()},removePoint:function(){this.point&&this.layer.removeFeatures([this.point])},addPoint:function(a){this.layer.removeFeatures([this.point]);a=this.layer.getLonLatFromViewPortPx(a);this.point=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(a.lon,
a.lat));this.line.geometry.addComponent(this.point.geometry,this.line.geometry.components.length);this.layer.addFeatures([this.point]);this.callback("point",[this.point.geometry,this.getGeometry()]);this.callback("modify",[this.point.geometry,this.getSketch()]);this.drawFeature();delete this.redoStack},insertXY:function(a,b){this.line.geometry.addComponent(new OpenLayers.Geometry.Point(a,b),this.getCurrentPointIndex());this.drawFeature();delete this.redoStack},insertDeltaXY:function(a,b){var c=this.getCurrentPointIndex()-
1,c=this.line.geometry.components[c];!c||(isNaN(c.x)||isNaN(c.y))||this.insertXY(c.x+a,c.y+b)},insertDirectionLength:function(a,b){a*=Math.PI/180;var c=b*Math.cos(a),d=b*Math.sin(a);this.insertDeltaXY(c,d)},insertDeflectionLength:function(a,b){var c=this.getCurrentPointIndex()-1;if(0<c){var d=this.line.geometry.components[c],c=this.line.geometry.components[c-1],d=Math.atan2(d.y-c.y,d.x-c.x);this.insertDirectionLength(180*d/Math.PI+a,b)}},getCurrentPointIndex:function(){return this.line.geometry.components.length-
1},undo:function(){var a=this.line.geometry,b=a.components,c=this.getCurrentPointIndex()-1,d=b[c],e=a.removeComponent(d);e&&(this.touch&&0<c&&(b=a.components,a=b[c-1],c=this.getCurrentPointIndex(),b=b[c],b.x=a.x,b.y=a.y),this.redoStack||(this.redoStack=[]),this.redoStack.push(d),this.drawFeature());return e},redo:function(){var a=this.redoStack&&this.redoStack.pop();a&&(this.line.geometry.addComponent(a,this.getCurrentPointIndex()),this.drawFeature());return!!a},freehandMode:function(a){return this.freehandToggle&&
a[this.freehandToggle]?!this.freehand:this.freehand},modifyFeature:function(a,b){this.line||this.createFeature(a);var c=this.layer.getLonLatFromViewPortPx(a);this.point.geometry.x=c.lon;this.point.geometry.y=c.lat;this.callback("modify",[this.point.geometry,this.getSketch(),b]);this.point.geometry.clearBounds();this.drawFeature()},drawFeature:function(){this.layer.drawFeature(this.line,this.style);this.layer.drawFeature(this.point,this.style)},getSketch:function(){return this.line},getGeometry:function(){var a=
this.line&&this.line.geometry;a&&this.multi&&(a=new OpenLayers.Geometry.MultiLineString([a]));return a},touchstart:function(a){if(this.timerId&&this.passesTolerance(this.lastTouchPx,a.xy,this.doubleTouchTolerance))return this.finishGeometry(),window.clearTimeout(this.timerId),this.timerId=null,!1;this.timerId&&(window.clearTimeout(this.timerId),this.timerId=null);this.timerId=window.setTimeout(OpenLayers.Function.bind(function(){this.timerId=null},this),300);return OpenLayers.Handler.Point.prototype.touchstart.call(this,
a)},down:function(a){var b=this.stopDown;this.freehandMode(a)&&(b=!0,this.touch&&(this.modifyFeature(a.xy,!!this.lastUp),OpenLayers.Event.stop(a)));this.touch||this.lastDown&&this.passesTolerance(this.lastDown,a.xy,this.pixelTolerance)||this.modifyFeature(a.xy,!!this.lastUp);this.mouseDown=!0;this.lastDown=a.xy;this.stoppedDown=b;return!b},move:function(a){if(this.stoppedDown&&this.freehandMode(a))return this.persist&&this.destroyPersistedFeature(),this.maxVertices&&this.line&&this.line.geometry.components.length===
this.maxVertices?(this.removePoint(),this.finalize()):this.addPoint(a.xy),!1;this.touch||this.mouseDown&&!this.stoppedDown||this.modifyFeature(a.xy,!!this.lastUp);return!0},up:function(a){!this.mouseDown||this.lastUp&&this.lastUp.equals(a.xy)||(this.stoppedDown&&this.freehandMode(a)?(this.persist&&this.destroyPersistedFeature(),this.removePoint(),this.finalize()):this.passesTolerance(this.lastDown,a.xy,this.pixelTolerance)&&(this.touch&&this.modifyFeature(a.xy),null==this.lastUp&&this.persist&&this.destroyPersistedFeature(),
this.addPoint(a.xy),this.lastUp=a.xy,this.line.geometry.components.length===this.maxVertices+1&&this.finishGeometry()));this.stoppedDown=this.stopDown;this.mouseDown=!1;return!this.stopUp},finishGeometry:function(){this.line.geometry.removeComponent(this.line.geometry.components[this.line.geometry.components.length-1]);this.removePoint();this.finalize()},dblclick:function(a){this.freehandMode(a)||this.finishGeometry();return!1},CLASS_NAME:"OpenLayers.Handler.Path"});OpenLayers.Spherical=OpenLayers.Spherical||{};OpenLayers.Spherical.DEFAULT_RADIUS=6378137;OpenLayers.Spherical.computeDistanceBetween=function(a,b,c){c=c||OpenLayers.Spherical.DEFAULT_RADIUS;var d=Math.sin(Math.PI*(b.lon-a.lon)/360),e=Math.sin(Math.PI*(b.lat-a.lat)/360);a=e*e+d*d*Math.cos(Math.PI*a.lat/180)*Math.cos(Math.PI*b.lat/180);return 2*c*Math.atan2(Math.sqrt(a),Math.sqrt(1-a))};
OpenLayers.Spherical.computeHeading=function(a,b){var c=Math.sin(Math.PI*(a.lon-b.lon)/180)*Math.cos(Math.PI*b.lat/180),d=Math.cos(Math.PI*a.lat/180)*Math.sin(Math.PI*b.lat/180)-Math.sin(Math.PI*a.lat/180)*Math.cos(Math.PI*b.lat/180)*Math.cos(Math.PI*(a.lon-b.lon)/180);return 180*Math.atan2(c,d)/Math.PI};OpenLayers.Control.CacheWrite=OpenLayers.Class(OpenLayers.Control,{layers:null,imageFormat:"image/png",quotaRegEx:/quota/i,setMap:function(a){OpenLayers.Control.prototype.setMap.apply(this,arguments);var b,c=this.layers||a.layers;for(b=c.length-1;0<=b;--b)this.addLayer({layer:c[b]});if(!this.layers)a.events.on({addlayer:this.addLayer,removeLayer:this.removeLayer,scope:this})},addLayer:function(a){a.layer.events.on({tileloadstart:this.makeSameOrigin,tileloaded:this.onTileLoaded,scope:this})},removeLayer:function(a){a.layer.events.un({tileloadstart:this.makeSameOrigin,
tileloaded:this.onTileLoaded,scope:this})},makeSameOrigin:function(a){if(this.active&&(a=a.tile,a instanceof OpenLayers.Tile.Image&&!a.crossOriginKeyword&&"data:"!==a.url.substr(0,5))){var b=OpenLayers.Request.makeSameOrigin(a.url,OpenLayers.ProxyHost);OpenLayers.Control.CacheWrite.urlMap[b]=a.url;a.url=b}},onTileLoaded:function(a){this.active&&(!a.aborted&&a.tile instanceof OpenLayers.Tile.Image&&"data:"!==a.tile.url.substr(0,5))&&(this.cache({tile:a.tile}),delete OpenLayers.Control.CacheWrite.urlMap[a.tile.url])},
cache:function(a){if(window.localStorage){a=a.tile;try{var b=a.getCanvasContext();b&&window.localStorage.setItem("olCache_"+(OpenLayers.Control.CacheWrite.urlMap[a.url]||a.url),b.canvas.toDataURL(this.imageFormat))}catch(c){(b=c.name||c.message)&&this.quotaRegEx.test(b)?this.events.triggerEvent("cachefull",{tile:a}):OpenLayers.Console.error(c.toString())}}},destroy:function(){if(this.layers||this.map){var a,b=this.layers||this.map.layers;for(a=b.length-1;0<=a;--a)this.removeLayer({layer:b[a]})}this.map&&
this.map.events.un({addlayer:this.addLayer,removeLayer:this.removeLayer,scope:this});OpenLayers.Control.prototype.destroy.apply(this,arguments)},CLASS_NAME:"OpenLayers.Control.CacheWrite"});OpenLayers.Control.CacheWrite.clearCache=function(){if(window.localStorage){var a,b;for(a=window.localStorage.length-1;0<=a;--a)b=window.localStorage.key(a),"olCache_"===b.substr(0,8)&&window.localStorage.removeItem(b)}};OpenLayers.Control.CacheWrite.urlMap={};OpenLayers.Format.Context=OpenLayers.Class(OpenLayers.Format.XML.VersionedOGC,{layerOptions:null,layerParams:null,read:function(a,b){var c=OpenLayers.Format.XML.VersionedOGC.prototype.read.apply(this,arguments);if(b&&b.map)if(this.context=c,b.map instanceof OpenLayers.Map)c=this.mergeContextToMap(c,b.map);else{var d=b.map;if(OpenLayers.Util.isElement(d)||"string"==typeof d)d={div:d};c=this.contextToMap(c,d)}return c},getLayerFromContext:function(a){var b,c,d={queryable:a.queryable,visibility:a.visibility,
maxExtent:a.maxExtent,metadata:OpenLayers.Util.applyDefaults(a.metadata,{styles:a.styles,formats:a.formats,"abstract":a["abstract"],dataURL:a.dataURL}),numZoomLevels:a.numZoomLevels,units:a.units,isBaseLayer:a.isBaseLayer,opacity:a.opacity,displayInLayerSwitcher:a.displayInLayerSwitcher,singleTile:a.singleTile,tileSize:a.tileSize?new OpenLayers.Size(a.tileSize.width,a.tileSize.height):void 0,minScale:a.minScale||a.maxScaleDenominator,maxScale:a.maxScale||a.minScaleDenominator,srs:a.srs,dimensions:a.dimensions,
metadataURL:a.metadataURL};this.layerOptions&&OpenLayers.Util.applyDefaults(d,this.layerOptions);var e={layers:a.name,transparent:a.transparent,version:a.version};if(a.formats&&0<a.formats.length)for(e.format=a.formats[0].value,b=0,c=a.formats.length;b<c;b++){var f=a.formats[b];if(!0==f.current){e.format=f.value;break}}if(a.styles&&0<a.styles.length)for(b=0,c=a.styles.length;b<c;b++)if(f=a.styles[b],!0==f.current){f.href?e.sld=f.href:f.body?e.sld_body=f.body:e.styles=f.name;break}this.layerParams&&
OpenLayers.Util.applyDefaults(e,this.layerParams);b=null;c=a.service;c==OpenLayers.Format.Context.serviceTypes.WFS?(d.strategies=[new OpenLayers.Strategy.BBOX],d.protocol=new OpenLayers.Protocol.WFS({url:a.url,featurePrefix:a.name.split(":")[0],featureType:a.name.split(":").pop()}),b=new OpenLayers.Layer.Vector(a.title||a.name,d)):c==OpenLayers.Format.Context.serviceTypes.KML?(d.strategies=[new OpenLayers.Strategy.Fixed],d.protocol=new OpenLayers.Protocol.HTTP({url:a.url,format:new OpenLayers.Format.KML}),
b=new OpenLayers.Layer.Vector(a.title||a.name,d)):c==OpenLayers.Format.Context.serviceTypes.GML?(d.strategies=[new OpenLayers.Strategy.Fixed],d.protocol=new OpenLayers.Protocol.HTTP({url:a.url,format:new OpenLayers.Format.GML}),b=new OpenLayers.Layer.Vector(a.title||a.name,d)):a.features?(b=new OpenLayers.Layer.Vector(a.title||a.name,d),b.addFeatures(a.features)):!0!==a.categoryLayer&&(b=new OpenLayers.Layer.WMS(a.title||a.name,a.url,e,d));return b},getLayersFromContext:function(a){for(var b=[],c=
0,d=a.length;c<d;c++){var e=this.getLayerFromContext(a[c]);null!==e&&b.push(e)}return b},contextToMap:function(a,b){b=OpenLayers.Util.applyDefaults({maxExtent:a.maxExtent,projection:a.projection,units:a.units},b);b.maxExtent&&(b.maxResolution=b.maxExtent.getWidth()/OpenLayers.Map.TILE_WIDTH);b.metadata={contactInformation:a.contactInformation,"abstract":a["abstract"],keywords:a.keywords,logo:a.logo,descriptionURL:a.descriptionURL};var c=new OpenLayers.Map(b);c.addLayers(this.getLayersFromContext(a.layersContext));
c.setCenter(a.bounds.getCenterLonLat(),c.getZoomForExtent(a.bounds,!0));return c},mergeContextToMap:function(a,b){b.addLayers(this.getLayersFromContext(a.layersContext));return b},write:function(a,b){a=this.toContext(a);return OpenLayers.Format.XML.VersionedOGC.prototype.write.apply(this,arguments)},CLASS_NAME:"OpenLayers.Format.Context"});
OpenLayers.Format.Context.serviceTypes={WMS:"urn:ogc:serviceType:WMS",WFS:"urn:ogc:serviceType:WFS",WCS:"urn:ogc:serviceType:WCS",GML:"urn:ogc:serviceType:GML",SLD:"urn:ogc:serviceType:SLD",FES:"urn:ogc:serviceType:FES",KML:"urn:ogc:serviceType:KML"};OpenLayers.Format.WMC=OpenLayers.Class(OpenLayers.Format.Context,{defaultVersion:"1.1.0",layerToContext:function(a){var b=this.getParser(),c={queryable:a.queryable,visibility:a.visibility,name:a.params.LAYERS,title:a.name,"abstract":a.metadata["abstract"],dataURL:a.metadata.dataURL,metadataURL:a.metadataURL,server:{version:a.params.VERSION,url:a.url},maxExtent:a.maxExtent,transparent:a.params.TRANSPARENT,numZoomLevels:a.numZoomLevels,units:a.units,isBaseLayer:a.isBaseLayer,opacity:1==a.opacity?void 0:
a.opacity,displayInLayerSwitcher:a.displayInLayerSwitcher,singleTile:a.singleTile,tileSize:a.singleTile||!a.tileSize?void 0:{width:a.tileSize.w,height:a.tileSize.h},minScale:a.options.resolutions||a.options.scales||a.options.maxResolution||a.options.minScale?a.minScale:void 0,maxScale:a.options.resolutions||a.options.scales||a.options.minResolution||a.options.maxScale?a.maxScale:void 0,formats:[],styles:[],srs:a.srs,dimensions:a.dimensions};a.metadata.servertitle&&(c.server.title=a.metadata.servertitle);
if(a.metadata.formats&&0<a.metadata.formats.length)for(var d=0,e=a.metadata.formats.length;d<e;d++){var f=a.metadata.formats[d];c.formats.push({value:f.value,current:f.value==a.params.FORMAT})}else c.formats.push({value:a.params.FORMAT,current:!0});if(a.metadata.styles&&0<a.metadata.styles.length)for(d=0,e=a.metadata.styles.length;d<e;d++)b=a.metadata.styles[d],b.current=b.href==a.params.SLD||b.body==a.params.SLD_BODY||b.name==a.params.STYLES?!0:!1,c.styles.push(b);else c.styles.push({href:a.params.SLD,
body:a.params.SLD_BODY,name:a.params.STYLES||b.defaultStyleName,title:b.defaultStyleTitle,current:!0});return c},toContext:function(a){var b={},c=a.layers;if("OpenLayers.Map"==a.CLASS_NAME){var d=a.metadata||{};b.size=a.getSize();b.bounds=a.getExtent();b.projection=a.projection;b.title=a.title;b.keywords=d.keywords;b["abstract"]=d["abstract"];b.logo=d.logo;b.descriptionURL=d.descriptionURL;b.contactInformation=d.contactInformation;b.maxExtent=a.maxExtent}else OpenLayers.Util.applyDefaults(b,a),void 0!=
b.layers&&delete b.layers;void 0==b.layersContext&&(b.layersContext=[]);if(void 0!=c&&OpenLayers.Util.isArray(c))for(a=0,d=c.length;a<d;a++){var e=c[a];e instanceof OpenLayers.Layer.WMS&&b.layersContext.push(this.layerToContext(e))}return b},CLASS_NAME:"OpenLayers.Format.WMC"});OpenLayers.Format.WMC.v1=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{ol:"http://openlayers.org/context",wmc:"http://www.opengis.net/context",sld:"http://www.opengis.net/sld",xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance"},schemaLocation:"",getNamespacePrefix:function(a){var b=null;if(null==a)b=this.namespaces[this.defaultPrefix];else for(b in this.namespaces)if(this.namespaces[b]==a)break;return b},defaultPrefix:"wmc",rootPrefix:null,defaultStyleName:"",
defaultStyleTitle:"Default",initialize:function(a){OpenLayers.Format.XML.prototype.initialize.apply(this,[a])},read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));a=a.documentElement;this.rootPrefix=a.prefix;var b={version:a.getAttribute("version")};this.runChildNodes(b,a);return b},runChildNodes:function(a,b){for(var c=b.childNodes,d,e,f,g=0,h=c.length;g<h;++g)d=c[g],1==d.nodeType&&(e=this.getNamespacePrefix(d.namespaceURI),f=d.nodeName.split(":").pop(),
(e=this["read_"+e+"_"+f])&&e.apply(this,[a,d]))},read_wmc_General:function(a,b){this.runChildNodes(a,b)},read_wmc_BoundingBox:function(a,b){a.projection=b.getAttribute("SRS");a.bounds=new OpenLayers.Bounds(b.getAttribute("minx"),b.getAttribute("miny"),b.getAttribute("maxx"),b.getAttribute("maxy"))},read_wmc_LayerList:function(a,b){a.layersContext=[];this.runChildNodes(a,b)},read_wmc_Layer:function(a,b){var c={visibility:"1"!=b.getAttribute("hidden"),queryable:"1"==b.getAttribute("queryable"),formats:[],
styles:[],metadata:{}};this.runChildNodes(c,b);a.layersContext.push(c)},read_wmc_Extension:function(a,b){this.runChildNodes(a,b)},read_ol_units:function(a,b){a.units=this.getChildValue(b)},read_ol_maxExtent:function(a,b){var c=new OpenLayers.Bounds(b.getAttribute("minx"),b.getAttribute("miny"),b.getAttribute("maxx"),b.getAttribute("maxy"));a.maxExtent=c},read_ol_transparent:function(a,b){a.transparent=this.getChildValue(b)},read_ol_numZoomLevels:function(a,b){a.numZoomLevels=parseInt(this.getChildValue(b))},
read_ol_opacity:function(a,b){a.opacity=parseFloat(this.getChildValue(b))},read_ol_singleTile:function(a,b){a.singleTile="true"==this.getChildValue(b)},read_ol_tileSize:function(a,b){var c={width:b.getAttribute("width"),height:b.getAttribute("height")};a.tileSize=c},read_ol_isBaseLayer:function(a,b){a.isBaseLayer="true"==this.getChildValue(b)},read_ol_displayInLayerSwitcher:function(a,b){a.displayInLayerSwitcher="true"==this.getChildValue(b)},read_wmc_Server:function(a,b){a.version=b.getAttribute("version");
a.url=this.getOnlineResource_href(b);a.metadata.servertitle=b.getAttribute("title")},read_wmc_FormatList:function(a,b){this.runChildNodes(a,b)},read_wmc_Format:function(a,b){var c={value:this.getChildValue(b)};"1"==b.getAttribute("current")&&(c.current=!0);a.formats.push(c)},read_wmc_StyleList:function(a,b){this.runChildNodes(a,b)},read_wmc_Style:function(a,b){var c={};this.runChildNodes(c,b);"1"==b.getAttribute("current")&&(c.current=!0);a.styles.push(c)},read_wmc_SLD:function(a,b){this.runChildNodes(a,
b)},read_sld_StyledLayerDescriptor:function(a,b){var c=OpenLayers.Format.XML.prototype.write.apply(this,[b]);a.body=c},read_sld_FeatureTypeStyle:function(a,b){var c=OpenLayers.Format.XML.prototype.write.apply(this,[b]);a.body=c},read_wmc_OnlineResource:function(a,b){a.href=this.getAttributeNS(b,this.namespaces.xlink,"href")},read_wmc_Name:function(a,b){var c=this.getChildValue(b);c&&(a.name=c)},read_wmc_Title:function(a,b){var c=this.getChildValue(b);c&&(a.title=c)},read_wmc_MetadataURL:function(a,
b){a.metadataURL=this.getOnlineResource_href(b)},read_wmc_KeywordList:function(a,b){a.keywords=[];this.runChildNodes(a.keywords,b)},read_wmc_Keyword:function(a,b){a.push(this.getChildValue(b))},read_wmc_Abstract:function(a,b){var c=this.getChildValue(b);c&&(a["abstract"]=c)},read_wmc_LogoURL:function(a,b){a.logo={width:b.getAttribute("width"),height:b.getAttribute("height"),format:b.getAttribute("format"),href:this.getOnlineResource_href(b)}},read_wmc_DescriptionURL:function(a,b){a.descriptionURL=
this.getOnlineResource_href(b)},read_wmc_ContactInformation:function(a,b){var c={};this.runChildNodes(c,b);a.contactInformation=c},read_wmc_ContactPersonPrimary:function(a,b){var c={};this.runChildNodes(c,b);a.personPrimary=c},read_wmc_ContactPerson:function(a,b){var c=this.getChildValue(b);c&&(a.person=c)},read_wmc_ContactOrganization:function(a,b){var c=this.getChildValue(b);c&&(a.organization=c)},read_wmc_ContactPosition:function(a,b){var c=this.getChildValue(b);c&&(a.position=c)},read_wmc_ContactAddress:function(a,
b){var c={};this.runChildNodes(c,b);a.contactAddress=c},read_wmc_AddressType:function(a,b){var c=this.getChildValue(b);c&&(a.type=c)},read_wmc_Address:function(a,b){var c=this.getChildValue(b);c&&(a.address=c)},read_wmc_City:function(a,b){var c=this.getChildValue(b);c&&(a.city=c)},read_wmc_StateOrProvince:function(a,b){var c=this.getChildValue(b);c&&(a.stateOrProvince=c)},read_wmc_PostCode:function(a,b){var c=this.getChildValue(b);c&&(a.postcode=c)},read_wmc_Country:function(a,b){var c=this.getChildValue(b);
c&&(a.country=c)},read_wmc_ContactVoiceTelephone:function(a,b){var c=this.getChildValue(b);c&&(a.phone=c)},read_wmc_ContactFacsimileTelephone:function(a,b){var c=this.getChildValue(b);c&&(a.fax=c)},read_wmc_ContactElectronicMailAddress:function(a,b){var c=this.getChildValue(b);c&&(a.email=c)},read_wmc_DataURL:function(a,b){a.dataURL=this.getOnlineResource_href(b)},read_wmc_LegendURL:function(a,b){var c={width:b.getAttribute("width"),height:b.getAttribute("height"),format:b.getAttribute("format"),
href:this.getOnlineResource_href(b)};a.legend=c},read_wmc_DimensionList:function(a,b){a.dimensions={};this.runChildNodes(a.dimensions,b)},read_wmc_Dimension:function(a,b){var c={name:b.getAttribute("name").toLowerCase(),units:b.getAttribute("units")||"",unitSymbol:b.getAttribute("unitSymbol")||"",userValue:b.getAttribute("userValue")||"",nearestValue:"1"===b.getAttribute("nearestValue"),multipleValues:"1"===b.getAttribute("multipleValues"),current:"1"===b.getAttribute("current"),"default":b.getAttribute("default")||
""},d=this.getChildValue(b);c.values=d.split(",");a[c.name]=c},write:function(a,b){var c=this.createElementDefaultNS("ViewContext");this.setAttributes(c,{version:this.VERSION,id:b&&"string"==typeof b.id?b.id:OpenLayers.Util.createUniqueID("OpenLayers_Context_")});this.setAttributeNS(c,this.namespaces.xsi,"xsi:schemaLocation",this.schemaLocation);c.appendChild(this.write_wmc_General(a));c.appendChild(this.write_wmc_LayerList(a));return OpenLayers.Format.XML.prototype.write.apply(this,[c])},createElementDefaultNS:function(a,
b,c){a=this.createElementNS(this.namespaces[this.defaultPrefix],a);b&&a.appendChild(this.createTextNode(b));c&&this.setAttributes(a,c);return a},setAttributes:function(a,b){var c,d;for(d in b)c=b[d].toString(),c.match(/[A-Z]/)?this.setAttributeNS(a,null,d,c):a.setAttribute(d,c)},write_wmc_General:function(a){var b=this.createElementDefaultNS("General");a.size&&b.appendChild(this.createElementDefaultNS("Window",null,{width:a.size.w,height:a.size.h}));var c=a.bounds;b.appendChild(this.createElementDefaultNS("BoundingBox",
null,{minx:c.left.toPrecision(18),miny:c.bottom.toPrecision(18),maxx:c.right.toPrecision(18),maxy:c.top.toPrecision(18),SRS:a.projection}));b.appendChild(this.createElementDefaultNS("Title",a.title));a.keywords&&b.appendChild(this.write_wmc_KeywordList(a.keywords));a["abstract"]&&b.appendChild(this.createElementDefaultNS("Abstract",a["abstract"]));a.logo&&b.appendChild(this.write_wmc_URLType("LogoURL",a.logo.href,a.logo));a.descriptionURL&&b.appendChild(this.write_wmc_URLType("DescriptionURL",a.descriptionURL));
a.contactInformation&&b.appendChild(this.write_wmc_ContactInformation(a.contactInformation));b.appendChild(this.write_ol_MapExtension(a));return b},write_wmc_KeywordList:function(a){for(var b=this.createElementDefaultNS("KeywordList"),c=0,d=a.length;c<d;c++)b.appendChild(this.createElementDefaultNS("Keyword",a[c]));return b},write_wmc_ContactInformation:function(a){var b=this.createElementDefaultNS("ContactInformation");a.personPrimary&&b.appendChild(this.write_wmc_ContactPersonPrimary(a.personPrimary));
a.position&&b.appendChild(this.createElementDefaultNS("ContactPosition",a.position));a.contactAddress&&b.appendChild(this.write_wmc_ContactAddress(a.contactAddress));a.phone&&b.appendChild(this.createElementDefaultNS("ContactVoiceTelephone",a.phone));a.fax&&b.appendChild(this.createElementDefaultNS("ContactFacsimileTelephone",a.fax));a.email&&b.appendChild(this.createElementDefaultNS("ContactElectronicMailAddress",a.email));return b},write_wmc_ContactPersonPrimary:function(a){var b=this.createElementDefaultNS("ContactPersonPrimary");
a.person&&b.appendChild(this.createElementDefaultNS("ContactPerson",a.person));a.organization&&b.appendChild(this.createElementDefaultNS("ContactOrganization",a.organization));return b},write_wmc_ContactAddress:function(a){var b=this.createElementDefaultNS("ContactAddress");a.type&&b.appendChild(this.createElementDefaultNS("AddressType",a.type));a.address&&b.appendChild(this.createElementDefaultNS("Address",a.address));a.city&&b.appendChild(this.createElementDefaultNS("City",a.city));a.stateOrProvince&&
b.appendChild(this.createElementDefaultNS("StateOrProvince",a.stateOrProvince));a.postcode&&b.appendChild(this.createElementDefaultNS("PostCode",a.postcode));a.country&&b.appendChild(this.createElementDefaultNS("Country",a.country));return b},write_ol_MapExtension:function(a){var b=this.createElementDefaultNS("Extension");if(a=a.maxExtent){var c=this.createElementNS(this.namespaces.ol,"ol:maxExtent");this.setAttributes(c,{minx:a.left.toPrecision(18),miny:a.bottom.toPrecision(18),maxx:a.right.toPrecision(18),
maxy:a.top.toPrecision(18)});b.appendChild(c)}return b},write_wmc_LayerList:function(a){for(var b=this.createElementDefaultNS("LayerList"),c=0,d=a.layersContext.length;c<d;++c)b.appendChild(this.write_wmc_Layer(a.layersContext[c]));return b},write_wmc_Layer:function(a){var b=this.createElementDefaultNS("Layer",null,{queryable:a.queryable?"1":"0",hidden:a.visibility?"0":"1"});b.appendChild(this.write_wmc_Server(a));b.appendChild(this.createElementDefaultNS("Name",a.name));b.appendChild(this.createElementDefaultNS("Title",
a.title));a["abstract"]&&b.appendChild(this.createElementDefaultNS("Abstract",a["abstract"]));a.dataURL&&b.appendChild(this.write_wmc_URLType("DataURL",a.dataURL));a.metadataURL&&b.appendChild(this.write_wmc_URLType("MetadataURL",a.metadataURL));return b},write_wmc_LayerExtension:function(a){var b=this.createElementDefaultNS("Extension"),c=a.maxExtent,d=this.createElementNS(this.namespaces.ol,"ol:maxExtent");this.setAttributes(d,{minx:c.left.toPrecision(18),miny:c.bottom.toPrecision(18),maxx:c.right.toPrecision(18),
maxy:c.top.toPrecision(18)});b.appendChild(d);a.tileSize&&!a.singleTile&&(c=this.createElementNS(this.namespaces.ol,"ol:tileSize"),this.setAttributes(c,a.tileSize),b.appendChild(c));for(var c="transparent numZoomLevels units isBaseLayer opacity displayInLayerSwitcher singleTile".split(" "),e=0,f=c.length;e<f;++e)(d=this.createOLPropertyNode(a,c[e]))&&b.appendChild(d);return b},createOLPropertyNode:function(a,b){var c=null;null!=a[b]&&(c=this.createElementNS(this.namespaces.ol,"ol:"+b),c.appendChild(this.createTextNode(a[b].toString())));
return c},write_wmc_Server:function(a){a=a.server;var b=this.createElementDefaultNS("Server"),c={service:"OGC:WMS",version:a.version};a.title&&(c.title=a.title);this.setAttributes(b,c);b.appendChild(this.write_wmc_OnlineResource(a.url));return b},write_wmc_URLType:function(a,b,c){a=this.createElementDefaultNS(a);a.appendChild(this.write_wmc_OnlineResource(b));if(c){b=["width","height","format"];for(var d=0;d<b.length;d++)b[d]in c&&a.setAttribute(b[d],c[b[d]])}return a},write_wmc_DimensionList:function(a){var b=
this.createElementDefaultNS("DimensionList"),c;for(c in a.dimensions){var d={},e=a.dimensions[c],f;for(f in e)d[f]="boolean"==typeof e[f]?Number(e[f]):e[f];e="";d.values&&(e=d.values.join(","),delete d.values);b.appendChild(this.createElementDefaultNS("Dimension",e,d))}return b},write_wmc_FormatList:function(a){for(var b=this.createElementDefaultNS("FormatList"),c=0,d=a.formats.length;c<d;c++){var e=a.formats[c];b.appendChild(this.createElementDefaultNS("Format",e.value,e.current&&!0==e.current?{current:"1"}:
null))}return b},write_wmc_StyleList:function(a){var b=this.createElementDefaultNS("StyleList");if((a=a.styles)&&OpenLayers.Util.isArray(a))for(var c,d=0,e=a.length;d<e;d++){var f=a[d],g=this.createElementDefaultNS("Style",null,f.current&&!0==f.current?{current:"1"}:null);f.href?(c=this.createElementDefaultNS("SLD"),f.name&&c.appendChild(this.createElementDefaultNS("Name",f.name)),f.title&&c.appendChild(this.createElementDefaultNS("Title",f.title)),f.legend&&c.appendChild(this.write_wmc_URLType("LegendURL",
f.legend.href,f.legend)),f=this.write_wmc_OnlineResource(f.href),c.appendChild(f),g.appendChild(c)):f.body?(c=this.createElementDefaultNS("SLD"),f.name&&c.appendChild(this.createElementDefaultNS("Name",f.name)),f.title&&c.appendChild(this.createElementDefaultNS("Title",f.title)),f.legend&&c.appendChild(this.write_wmc_URLType("LegendURL",f.legend.href,f.legend)),f=OpenLayers.Format.XML.prototype.read.apply(this,[f.body]).documentElement,c.ownerDocument&&c.ownerDocument.importNode&&(f=c.ownerDocument.importNode(f,
!0)),c.appendChild(f),g.appendChild(c)):(g.appendChild(this.createElementDefaultNS("Name",f.name)),g.appendChild(this.createElementDefaultNS("Title",f.title)),f["abstract"]&&g.appendChild(this.createElementDefaultNS("Abstract",f["abstract"])),f.legend&&g.appendChild(this.write_wmc_URLType("LegendURL",f.legend.href,f.legend)));b.appendChild(g)}return b},write_wmc_OnlineResource:function(a){var b=this.createElementDefaultNS("OnlineResource");this.setAttributeNS(b,this.namespaces.xlink,"xlink:type",
"simple");this.setAttributeNS(b,this.namespaces.xlink,"xlink:href",a);return b},getOnlineResource_href:function(a){var b={};a=a.getElementsByTagName("OnlineResource");0<a.length&&this.read_wmc_OnlineResource(b,a[0]);return b.href},CLASS_NAME:"OpenLayers.Format.WMC.v1"});OpenLayers.Control.PanPanel=OpenLayers.Class(OpenLayers.Control.Panel,{slideFactor:50,slideRatio:null,initialize:function(a){OpenLayers.Control.Panel.prototype.initialize.apply(this,[a]);a={slideFactor:this.slideFactor,slideRatio:this.slideRatio};this.addControls([new OpenLayers.Control.Pan(OpenLayers.Control.Pan.NORTH,a),new OpenLayers.Control.Pan(OpenLayers.Control.Pan.SOUTH,a),new OpenLayers.Control.Pan(OpenLayers.Control.Pan.EAST,a),new OpenLayers.Control.Pan(OpenLayers.Control.Pan.WEST,a)])},
CLASS_NAME:"OpenLayers.Control.PanPanel"});OpenLayers.Control.Attribution=OpenLayers.Class(OpenLayers.Control,{separator:", ",template:"${layers}",destroy:function(){this.map.events.un({removelayer:this.updateAttribution,addlayer:this.updateAttribution,changelayer:this.updateAttribution,changebaselayer:this.updateAttribution,scope:this});OpenLayers.Control.prototype.destroy.apply(this,arguments)},draw:function(){OpenLayers.Control.prototype.draw.apply(this,arguments);this.map.events.on({changebaselayer:this.updateAttribution,changelayer:this.updateAttribution,
addlayer:this.updateAttribution,removelayer:this.updateAttribution,scope:this});this.updateAttribution();return this.div},updateAttribution:function(){var a=[];if(this.map&&this.map.layers){for(var b=0,c=this.map.layers.length;b<c;b++){var d=this.map.layers[b];d.attribution&&d.getVisibility()&&-1===OpenLayers.Util.indexOf(a,d.attribution)&&a.push(d.attribution)}this.div.innerHTML=OpenLayers.String.format(this.template,{layers:a.join(this.separator)})}},CLASS_NAME:"OpenLayers.Control.Attribution"});OpenLayers.Kinetic=OpenLayers.Class({threshold:0,deceleration:0.0035,nbPoints:100,delay:200,points:void 0,timerId:void 0,initialize:function(a){OpenLayers.Util.extend(this,a)},begin:function(){OpenLayers.Animation.stop(this.timerId);this.timerId=void 0;this.points=[]},update:function(a){this.points.unshift({xy:a,tick:(new Date).getTime()});this.points.length>this.nbPoints&&this.points.pop()},end:function(a){for(var b,c=(new Date).getTime(),d=0,e=this.points.length,f;d<e;d++){f=this.points[d];if(c-
f.tick>this.delay)break;b=f}if(b&&(d=(new Date).getTime()-b.tick,c=Math.sqrt(Math.pow(a.x-b.xy.x,2)+Math.pow(a.y-b.xy.y,2)),d=c/d,!(0==d||d<this.threshold)))return c=Math.asin((a.y-b.xy.y)/c),b.xy.x<=a.x&&(c=Math.PI-c),{speed:d,theta:c}},move:function(a,b){var c=a.speed,d=Math.cos(a.theta),e=-Math.sin(a.theta),f=(new Date).getTime(),g=0,h=0;this.timerId=OpenLayers.Animation.start(OpenLayers.Function.bind(function(){if(null!=this.timerId){var a=(new Date).getTime()-f,l=-this.deceleration*Math.pow(a,
2)/2+c*a,m=l*d,l=l*e,n,p;n=!1;0>=-this.deceleration*a+c&&(OpenLayers.Animation.stop(this.timerId),this.timerId=null,n=!0);a=m-g;p=l-h;g=m;h=l;b(a,p,n)}},this))},CLASS_NAME:"OpenLayers.Kinetic"});OpenLayers.Format.WPSExecute=OpenLayers.Class(OpenLayers.Format.XML,OpenLayers.Format.Filter.v1_1_0,{namespaces:{ows:"http://www.opengis.net/ows/1.1",gml:"http://www.opengis.net/gml",wps:"http://www.opengis.net/wps/1.0.0",wfs:"http://www.opengis.net/wfs",ogc:"http://www.opengis.net/ogc",wcs:"http://www.opengis.net/wcs",xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance"},regExes:{trimSpace:/^\s*|\s*$/g,removeSpace:/\s*/g,splitSpace:/\s+/,trimComma:/\s*,\s*/g},VERSION:"1.0.0",
schemaLocation:"http://www.opengis.net/wps/1.0.0 http://schemas.opengis.net/wps/1.0.0/wpsAll.xsd",schemaLocationAttr:function(a){},write:function(a){var b;window.ActiveXObject?this.xmldom=b=new ActiveXObject("Microsoft.XMLDOM"):b=document.implementation.createDocument("","",null);a=this.writeNode("wps:Execute",a,b);this.setAttributeNS(a,this.namespaces.xsi,"xsi:schemaLocation",this.schemaLocation);return OpenLayers.Format.XML.prototype.write.apply(this,[a])},read:function(a){"string"==typeof a&&(a=
OpenLayers.Format.XML.prototype.read.apply(this,[a]));a&&9==a.nodeType&&(a=a.documentElement);var b={};this.readNode(a,b);return b},writers:{wps:{Execute:function(a){var b=this.createElementNSPlus("wps:Execute",{attributes:{version:this.VERSION,service:"WPS"}});this.writeNode("ows:Identifier",a.identifier,b);this.writeNode("wps:DataInputs",a.dataInputs,b);this.writeNode("wps:ResponseForm",a.responseForm,b);return b},ResponseForm:function(a){var b=this.createElementNSPlus("wps:ResponseForm",{});a.rawDataOutput&&
this.writeNode("wps:RawDataOutput",a.rawDataOutput,b);a.responseDocument&&this.writeNode("wps:ResponseDocument",a.responseDocument,b);return b},ResponseDocument:function(a){var b=this.createElementNSPlus("wps:ResponseDocument",{attributes:{storeExecuteResponse:a.storeExecuteResponse,lineage:a.lineage,status:a.status}});if(a.outputs)for(var c=0,d=a.outputs.length;c<d;c++)this.writeNode("wps:Output",a.outputs[c],b);return b},Output:function(a){var b=this.createElementNSPlus("wps:Output",{attributes:{asReference:a.asReference,
mimeType:a.mimeType,encoding:a.encoding,schema:a.schema}});this.writeNode("ows:Identifier",a.identifier,b);this.writeNode("ows:Title",a.title,b);this.writeNode("ows:Abstract",a["abstract"],b);return b},RawDataOutput:function(a){var b=this.createElementNSPlus("wps:RawDataOutput",{attributes:{mimeType:a.mimeType,encoding:a.encoding,schema:a.schema}});this.writeNode("ows:Identifier",a.identifier,b);return b},DataInputs:function(a){for(var b=this.createElementNSPlus("wps:DataInputs",{}),c=0,d=a.length;c<
d;++c)this.writeNode("wps:Input",a[c],b);return b},Input:function(a){var b=this.createElementNSPlus("wps:Input",{});this.writeNode("ows:Identifier",a.identifier,b);a.title&&this.writeNode("ows:Title",a.title,b);a.data&&this.writeNode("wps:Data",a.data,b);a.reference&&this.writeNode("wps:Reference",a.reference,b);a.boundingBoxData&&this.writeNode("wps:BoundingBoxData",a.boundingBoxData,b);return b},Data:function(a){var b=this.createElementNSPlus("wps:Data",{});a.literalData?this.writeNode("wps:LiteralData",
a.literalData,b):a.complexData?this.writeNode("wps:ComplexData",a.complexData,b):a.boundingBoxData&&this.writeNode("ows:BoundingBox",a.boundingBoxData,b);return b},LiteralData:function(a){return this.createElementNSPlus("wps:LiteralData",{attributes:{uom:a.uom},value:a.value})},ComplexData:function(a){var b=this.createElementNSPlus("wps:ComplexData",{attributes:{mimeType:a.mimeType,encoding:a.encoding,schema:a.schema}}),c=a.value;"string"===typeof c?b.appendChild(this.getXMLDoc().createCDATASection(a.value)):
b.appendChild(c);return b},Reference:function(a){var b=this.createElementNSPlus("wps:Reference",{attributes:{mimeType:a.mimeType,"xlink:href":a.href,method:a.method,encoding:a.encoding,schema:a.schema}});a.body&&this.writeNode("wps:Body",a.body,b);return b},BoundingBoxData:function(a,b){this.writers.ows.BoundingBox.apply(this,[a,b,"wps:BoundingBoxData"])},Body:function(a){var b=this.createElementNSPlus("wps:Body",{});a.wcs?this.writeNode("wcs:GetCoverage",a.wcs,b):a.wfs?(this.featureType=a.wfs.featureType,
this.version=a.wfs.version,this.writeNode("wfs:GetFeature",a.wfs,b)):this.writeNode("wps:Execute",a,b);return b}},wcs:OpenLayers.Format.WCSGetCoverage.prototype.writers.wcs,wfs:OpenLayers.Format.WFST.v1_1_0.prototype.writers.wfs,ogc:OpenLayers.Format.Filter.v1_1_0.prototype.writers.ogc,ows:OpenLayers.Format.OWSCommon.v1_1_0.prototype.writers.ows},readers:{wps:{ExecuteResponse:function(a,b){b.executeResponse={lang:a.getAttribute("lang"),statusLocation:a.getAttribute("statusLocation"),serviceInstance:a.getAttribute("serviceInstance"),
service:a.getAttribute("service")};this.readChildNodes(a,b.executeResponse)},Process:function(a,b){b.process={};this.readChildNodes(a,b.process)},Status:function(a,b){b.status={creationTime:a.getAttribute("creationTime")};this.readChildNodes(a,b.status)},ProcessSucceeded:function(a,b){b.processSucceeded=!0},ProcessOutputs:function(a,b){b.processOutputs=[];this.readChildNodes(a,b.processOutputs)},Output:function(a,b){var c={};this.readChildNodes(a,c);b.push(c)},Reference:function(a,b){b.reference=
{href:a.getAttribute("href"),mimeType:a.getAttribute("mimeType"),encoding:a.getAttribute("encoding"),schema:a.getAttribute("schema")}},Data:function(a,b){b.data={};this.readChildNodes(a,b)},LiteralData:function(a,b){b.literalData={dataType:a.getAttribute("dataType"),uom:a.getAttribute("uom"),value:this.getChildValue(a)}},ComplexData:function(a,b){b.complexData={mimeType:a.getAttribute("mimeType"),schema:a.getAttribute("schema"),encoding:a.getAttribute("encoding"),value:""};if(this.isSimpleContent(a)){var c;
for(c=a.firstChild;c;c=c.nextSibling)switch(c.nodeType){case 3:case 4:b.complexData.value+=c.nodeValue}}else for(c=a.firstChild;c;c=c.nextSibling)1==c.nodeType&&(b.complexData.value=c)},BoundingBox:function(a,b){b.boundingBoxData={dimensions:a.getAttribute("dimensions"),crs:a.getAttribute("crs")};this.readChildNodes(a,b.boundingBoxData)}},ows:OpenLayers.Format.OWSCommon.v1_1_0.prototype.readers.ows},CLASS_NAME:"OpenLayers.Format.WPSExecute"});OpenLayers.Layer.GeoRSS=OpenLayers.Class(OpenLayers.Layer.Markers,{location:null,features:null,formatOptions:null,selectedFeature:null,icon:null,popupSize:null,useFeedTitle:!0,initialize:function(a,b,c){OpenLayers.Layer.Markers.prototype.initialize.apply(this,[a,c]);this.location=b;this.features=[]},destroy:function(){OpenLayers.Layer.Markers.prototype.destroy.apply(this,arguments);this.clearFeatures();this.features=null},loadRSS:function(){this.loaded||(this.events.triggerEvent("loadstart"),OpenLayers.Request.GET({url:this.location,
success:this.parseData,scope:this}),this.loaded=!0)},moveTo:function(a,b,c){OpenLayers.Layer.Markers.prototype.moveTo.apply(this,arguments);this.visibility&&!this.loaded&&this.loadRSS()},parseData:function(a){var b=a.responseXML;b&&b.documentElement||(b=OpenLayers.Format.XML.prototype.read(a.responseText));if(this.useFeedTitle){a=null;try{a=b.getElementsByTagNameNS("*","title")[0].firstChild.nodeValue}catch(c){a=b.getElementsByTagName("title")[0].firstChild.nodeValue}a&&this.setName(a)}a={};OpenLayers.Util.extend(a,
this.formatOptions);this.map&&!this.projection.equals(this.map.getProjectionObject())&&(a.externalProjection=this.projection,a.internalProjection=this.map.getProjectionObject());b=(new OpenLayers.Format.GeoRSS(a)).read(b);a=0;for(var d=b.length;a<d;a++){var e={},f=b[a];if(f.geometry){var g=f.attributes.title?f.attributes.title:"Untitled",h=f.attributes.description?f.attributes.description:"No description.",k=f.attributes.link?f.attributes.link:"",f=f.geometry.getBounds().getCenterLonLat();e.icon=
null==this.icon?OpenLayers.Marker.defaultIcon():this.icon.clone();e.popupSize=this.popupSize?this.popupSize.clone():new OpenLayers.Size(250,120);if(g||h){e.title=g;e.description=h;var l='<div class="olLayerGeoRSSClose">[x]</div>',l=l+'<div class="olLayerGeoRSSTitle">';k&&(l+='<a class="link" href="'+k+'" target="_blank">');l+=g;k&&(l+="</a>");l+="</div>";l+='<div style="" class="olLayerGeoRSSDescription">';l+=h;l+="</div>";e.popupContentHTML=l}f=new OpenLayers.Feature(this,f,e);this.features.push(f);
e=f.createMarker();e.events.register("click",f,this.markerClick);this.addMarker(e)}}this.events.triggerEvent("loadend")},markerClick:function(a){var b=this==this.layer.selectedFeature;this.layer.selectedFeature=b?null:this;for(var c=0,d=this.layer.map.popups.length;c<d;c++)this.layer.map.removePopup(this.layer.map.popups[c]);b||(b=this.createPopup(),OpenLayers.Event.observe(b.div,"click",OpenLayers.Function.bind(function(){for(var a=0,b=this.layer.map.popups.length;a<b;a++)this.layer.map.removePopup(this.layer.map.popups[a])},
this)),this.layer.map.addPopup(b));OpenLayers.Event.stop(a)},clearFeatures:function(){if(null!=this.features)for(;0<this.features.length;){var a=this.features[0];OpenLayers.Util.removeItem(this.features,a);a.destroy()}},CLASS_NAME:"OpenLayers.Layer.GeoRSS"});OpenLayers.Symbolizer.Point=OpenLayers.Class(OpenLayers.Symbolizer,{initialize:function(a){OpenLayers.Symbolizer.prototype.initialize.apply(this,arguments)},CLASS_NAME:"OpenLayers.Symbolizer.Point"});OpenLayers.Symbolizer.Line=OpenLayers.Class(OpenLayers.Symbolizer,{initialize:function(a){OpenLayers.Symbolizer.prototype.initialize.apply(this,arguments)},CLASS_NAME:"OpenLayers.Symbolizer.Line"});OpenLayers.Symbolizer.Text=OpenLayers.Class(OpenLayers.Symbolizer,{initialize:function(a){OpenLayers.Symbolizer.prototype.initialize.apply(this,arguments)},CLASS_NAME:"OpenLayers.Symbolizer.Text"});OpenLayers.Format.SLD.v1=OpenLayers.Class(OpenLayers.Format.Filter.v1_0_0,{namespaces:{sld:"http://www.opengis.net/sld",ogc:"http://www.opengis.net/ogc",gml:"http://www.opengis.net/gml",xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance"},defaultPrefix:"sld",schemaLocation:null,multipleSymbolizers:!1,featureTypeCounter:null,defaultSymbolizer:{fillColor:"#808080",fillOpacity:1,strokeColor:"#000000",strokeOpacity:1,strokeWidth:1,strokeDashstyle:"solid",pointRadius:3,
graphicName:"square"},read:function(a,b){b=OpenLayers.Util.applyDefaults(b,this.options);var c={namedLayers:!0===b.namedLayersAsArray?[]:{}};this.readChildNodes(a,c);return c},readers:OpenLayers.Util.applyDefaults({sld:{StyledLayerDescriptor:function(a,b){b.version=a.getAttribute("version");this.readChildNodes(a,b)},Name:function(a,b){b.name=this.getChildValue(a)},Title:function(a,b){b.title=this.getChildValue(a)},Abstract:function(a,b){b.description=this.getChildValue(a)},NamedLayer:function(a,b){var c=
{userStyles:[],namedStyles:[]};this.readChildNodes(a,c);for(var d=0,e=c.userStyles.length;d<e;++d)c.userStyles[d].layerName=c.name;OpenLayers.Util.isArray(b.namedLayers)?b.namedLayers.push(c):b.namedLayers[c.name]=c},NamedStyle:function(a,b){b.namedStyles.push(this.getChildName(a.firstChild))},UserStyle:function(a,b){var c={defaultsPerSymbolizer:!0,rules:[]};this.featureTypeCounter=-1;this.readChildNodes(a,c);this.multipleSymbolizers?(delete c.defaultsPerSymbolizer,c=new OpenLayers.Style2(c)):c=new OpenLayers.Style(this.defaultSymbolizer,
c);b.userStyles.push(c)},IsDefault:function(a,b){"1"==this.getChildValue(a)&&(b.isDefault=!0)},FeatureTypeStyle:function(a,b){++this.featureTypeCounter;var c={rules:this.multipleSymbolizers?b.rules:[]};this.readChildNodes(a,c);this.multipleSymbolizers||(b.rules=c.rules)},Rule:function(a,b){var c;this.multipleSymbolizers&&(c={symbolizers:[]});c=new OpenLayers.Rule(c);this.readChildNodes(a,c);b.rules.push(c)},ElseFilter:function(a,b){b.elseFilter=!0},MinScaleDenominator:function(a,b){b.minScaleDenominator=
parseFloat(this.getChildValue(a))},MaxScaleDenominator:function(a,b){b.maxScaleDenominator=parseFloat(this.getChildValue(a))},TextSymbolizer:function(a,b){var c={};this.readChildNodes(a,c);this.multipleSymbolizers?(c.zIndex=this.featureTypeCounter,b.symbolizers.push(new OpenLayers.Symbolizer.Text(c))):b.symbolizer.Text=OpenLayers.Util.applyDefaults(c,b.symbolizer.Text)},LabelPlacement:function(a,b){this.readChildNodes(a,b)},PointPlacement:function(a,b){var c={};this.readChildNodes(a,c);c.labelRotation=
c.rotation;delete c.rotation;var d,e=b.labelAnchorPointX,f=b.labelAnchorPointY;e<=1/3?d="l":e>1/3&&e<2/3?d="c":e>=2/3&&(d="r");f<=1/3?d+="b":f>1/3&&f<2/3?d+="m":f>=2/3&&(d+="t");c.labelAlign=d;OpenLayers.Util.applyDefaults(b,c)},AnchorPoint:function(a,b){this.readChildNodes(a,b)},AnchorPointX:function(a,b){var c=this.readers.ogc._expression.call(this,a);c&&(b.labelAnchorPointX=c)},AnchorPointY:function(a,b){var c=this.readers.ogc._expression.call(this,a);c&&(b.labelAnchorPointY=c)},Displacement:function(a,
b){this.readChildNodes(a,b)},DisplacementX:function(a,b){var c=this.readers.ogc._expression.call(this,a);c&&(b.labelXOffset=c)},DisplacementY:function(a,b){var c=this.readers.ogc._expression.call(this,a);c&&(b.labelYOffset=c)},LinePlacement:function(a,b){this.readChildNodes(a,b)},PerpendicularOffset:function(a,b){var c=this.readers.ogc._expression.call(this,a);c&&(b.labelPerpendicularOffset=c)},Label:function(a,b){var c=this.readers.ogc._expression.call(this,a);c&&(b.label=c)},Font:function(a,b){this.readChildNodes(a,
b)},Halo:function(a,b){var c={};this.readChildNodes(a,c);b.haloRadius=c.haloRadius;b.haloColor=c.fillColor;b.haloOpacity=c.fillOpacity},Radius:function(a,b){var c=this.readers.ogc._expression.call(this,a);null!=c&&(b.haloRadius=c)},RasterSymbolizer:function(a,b){var c={};this.readChildNodes(a,c);this.multipleSymbolizers?(c.zIndex=this.featureTypeCounter,b.symbolizers.push(new OpenLayers.Symbolizer.Raster(c))):b.symbolizer.Raster=OpenLayers.Util.applyDefaults(c,b.symbolizer.Raster)},Geometry:function(a,
b){b.geometry={};this.readChildNodes(a,b.geometry)},ColorMap:function(a,b){b.colorMap=[];this.readChildNodes(a,b.colorMap)},ColorMapEntry:function(a,b){var c=a.getAttribute("quantity"),d=a.getAttribute("opacity");b.push({color:a.getAttribute("color"),quantity:null!==c?parseFloat(c):void 0,label:a.getAttribute("label")||void 0,opacity:null!==d?parseFloat(d):void 0})},LineSymbolizer:function(a,b){var c={};this.readChildNodes(a,c);this.multipleSymbolizers?(c.zIndex=this.featureTypeCounter,b.symbolizers.push(new OpenLayers.Symbolizer.Line(c))):
b.symbolizer.Line=OpenLayers.Util.applyDefaults(c,b.symbolizer.Line)},PolygonSymbolizer:function(a,b){var c={fill:!1,stroke:!1};this.multipleSymbolizers||(c=b.symbolizer.Polygon||c);this.readChildNodes(a,c);this.multipleSymbolizers?(c.zIndex=this.featureTypeCounter,b.symbolizers.push(new OpenLayers.Symbolizer.Polygon(c))):b.symbolizer.Polygon=c},PointSymbolizer:function(a,b){var c={fill:!1,stroke:!1,graphic:!1};this.multipleSymbolizers||(c=b.symbolizer.Point||c);this.readChildNodes(a,c);this.multipleSymbolizers?
(c.zIndex=this.featureTypeCounter,b.symbolizers.push(new OpenLayers.Symbolizer.Point(c))):b.symbolizer.Point=c},Stroke:function(a,b){b.stroke=!0;this.readChildNodes(a,b)},Fill:function(a,b){b.fill=!0;this.readChildNodes(a,b)},CssParameter:function(a,b){var c=a.getAttribute("name"),d=this.cssMap[c];b.label&&("fill"===c?d="fontColor":"fill-opacity"===c&&(d="fontOpacity"));d&&(c=this.readers.ogc._expression.call(this,a))&&(b[d]=c)},Graphic:function(a,b){b.graphic=!0;var c={};this.readChildNodes(a,c);
for(var d="stroke strokeColor strokeWidth strokeOpacity strokeLinecap fill fillColor fillOpacity graphicName rotation graphicFormat".split(" "),e,f,g=0,h=d.length;g<h;++g)e=d[g],f=c[e],void 0!=f&&(b[e]=f);void 0!=c.opacity&&(b.graphicOpacity=c.opacity);void 0!=c.size&&(isNaN(c.size/2)?b.graphicWidth=c.size:b.pointRadius=c.size/2);void 0!=c.href&&(b.externalGraphic=c.href);void 0!=c.rotation&&(b.rotation=c.rotation)},ExternalGraphic:function(a,b){this.readChildNodes(a,b)},Mark:function(a,b){this.readChildNodes(a,
b)},WellKnownName:function(a,b){b.graphicName=this.getChildValue(a)},Opacity:function(a,b){var c=this.readers.ogc._expression.call(this,a);c&&(b.opacity=c)},Size:function(a,b){var c=this.readers.ogc._expression.call(this,a);c&&(b.size=c)},Rotation:function(a,b){var c=this.readers.ogc._expression.call(this,a);c&&(b.rotation=c)},OnlineResource:function(a,b){b.href=this.getAttributeNS(a,this.namespaces.xlink,"href")},Format:function(a,b){b.graphicFormat=this.getChildValue(a)}}},OpenLayers.Format.Filter.v1_0_0.prototype.readers),
cssMap:{stroke:"strokeColor","stroke-opacity":"strokeOpacity","stroke-width":"strokeWidth","stroke-linecap":"strokeLinecap","stroke-dasharray":"strokeDashstyle",fill:"fillColor","fill-opacity":"fillOpacity","font-family":"fontFamily","font-size":"fontSize","font-weight":"fontWeight","font-style":"fontStyle"},getCssProperty:function(a){var b=null,c;for(c in this.cssMap)if(this.cssMap[c]==a){b=c;break}return b},getGraphicFormat:function(a){var b,c;for(c in this.graphicFormats)if(this.graphicFormats[c].test(a)){b=
c;break}return b||this.defaultGraphicFormat},defaultGraphicFormat:"image/png",graphicFormats:{"image/jpeg":/\.jpe?g$/i,"image/gif":/\.gif$/i,"image/png":/\.png$/i},write:function(a){return this.writers.sld.StyledLayerDescriptor.apply(this,[a])},writers:OpenLayers.Util.applyDefaults({sld:{_OGCExpression:function(a,b){var c=this.createElementNSPlus(a),d="string"==typeof b?b.split("${"):[b];c.appendChild(this.createTextNode(d[0]));for(var e,f,g=1,h=d.length;g<h;g++)e=d[g],f=e.indexOf("}"),0<f?(this.writeNode("ogc:PropertyName",
{property:e.substring(0,f)},c),c.appendChild(this.createTextNode(e.substring(++f)))):c.appendChild(this.createTextNode("${"+e));return c},StyledLayerDescriptor:function(a){var b=this.createElementNSPlus("sld:StyledLayerDescriptor",{attributes:{version:this.VERSION,"xsi:schemaLocation":this.schemaLocation}});b.setAttribute("xmlns:ogc",this.namespaces.ogc);b.setAttribute("xmlns:gml",this.namespaces.gml);a.name&&this.writeNode("Name",a.name,b);a.title&&this.writeNode("Title",a.title,b);a.description&&
this.writeNode("Abstract",a.description,b);if(OpenLayers.Util.isArray(a.namedLayers))for(var c=0,d=a.namedLayers.length;c<d;++c)this.writeNode("NamedLayer",a.namedLayers[c],b);else for(c in a.namedLayers)this.writeNode("NamedLayer",a.namedLayers[c],b);return b},Name:function(a){return this.createElementNSPlus("sld:Name",{value:a})},Title:function(a){return this.createElementNSPlus("sld:Title",{value:a})},Abstract:function(a){return this.createElementNSPlus("sld:Abstract",{value:a})},NamedLayer:function(a){var b=
this.createElementNSPlus("sld:NamedLayer");this.writeNode("Name",a.name,b);if(a.namedStyles)for(var c=0,d=a.namedStyles.length;c<d;++c)this.writeNode("NamedStyle",a.namedStyles[c],b);if(a.userStyles)for(c=0,d=a.userStyles.length;c<d;++c)this.writeNode("UserStyle",a.userStyles[c],b);return b},NamedStyle:function(a){var b=this.createElementNSPlus("sld:NamedStyle");this.writeNode("Name",a,b);return b},UserStyle:function(a){var b=this.createElementNSPlus("sld:UserStyle");a.name&&this.writeNode("Name",
a.name,b);a.title&&this.writeNode("Title",a.title,b);a.description&&this.writeNode("Abstract",a.description,b);a.isDefault&&this.writeNode("IsDefault",a.isDefault,b);if(this.multipleSymbolizers&&a.rules){for(var c={0:[]},d=[0],e,f,g,h,k,l=0,m=a.rules.length;l<m;++l)if(e=a.rules[l],e.symbolizers){f={};for(var n=0,p=e.symbolizers.length;n<p;++n)g=e.symbolizers[n],h=g.zIndex,h in f||(k=e.clone(),k.symbolizers=[],f[h]=k),f[h].symbolizers.push(g.clone());for(h in f)h in c||(d.push(h),c[h]=[]),c[h].push(f[h])}else c[0].push(e.clone());
d.sort();l=0;for(m=d.length;l<m;++l)e=c[d[l]],0<e.length&&(k=a.clone(),k.rules=c[d[l]],this.writeNode("FeatureTypeStyle",k,b))}else this.writeNode("FeatureTypeStyle",a,b);return b},IsDefault:function(a){return this.createElementNSPlus("sld:IsDefault",{value:a?"1":"0"})},FeatureTypeStyle:function(a){for(var b=this.createElementNSPlus("sld:FeatureTypeStyle"),c=0,d=a.rules.length;c<d;++c)this.writeNode("Rule",a.rules[c],b);return b},Rule:function(a){var b=this.createElementNSPlus("sld:Rule");a.name&&
this.writeNode("Name",a.name,b);a.title&&this.writeNode("Title",a.title,b);a.description&&this.writeNode("Abstract",a.description,b);a.elseFilter?this.writeNode("ElseFilter",null,b):a.filter&&this.writeNode("ogc:Filter",a.filter,b);void 0!=a.minScaleDenominator&&this.writeNode("MinScaleDenominator",a.minScaleDenominator,b);void 0!=a.maxScaleDenominator&&this.writeNode("MaxScaleDenominator",a.maxScaleDenominator,b);var c,d;if(this.multipleSymbolizers&&a.symbolizers)for(var e=0,f=a.symbolizers.length;e<
f;++e)d=a.symbolizers[e],c=d.CLASS_NAME.split(".").pop(),this.writeNode(c+"Symbolizer",d,b);else for(var f=OpenLayers.Style.SYMBOLIZER_PREFIXES,e=0,g=f.length;e<g;++e)c=f[e],(d=a.symbolizer[c])&&this.writeNode(c+"Symbolizer",d,b);return b},ElseFilter:function(){return this.createElementNSPlus("sld:ElseFilter")},MinScaleDenominator:function(a){return this.createElementNSPlus("sld:MinScaleDenominator",{value:a})},MaxScaleDenominator:function(a){return this.createElementNSPlus("sld:MaxScaleDenominator",
{value:a})},LineSymbolizer:function(a){var b=this.createElementNSPlus("sld:LineSymbolizer");this.writeNode("Stroke",a,b);return b},Stroke:function(a){var b=this.createElementNSPlus("sld:Stroke");void 0!=a.strokeColor&&this.writeNode("CssParameter",{symbolizer:a,key:"strokeColor"},b);void 0!=a.strokeOpacity&&this.writeNode("CssParameter",{symbolizer:a,key:"strokeOpacity"},b);void 0!=a.strokeWidth&&this.writeNode("CssParameter",{symbolizer:a,key:"strokeWidth"},b);void 0!=a.strokeDashstyle&&"solid"!==
a.strokeDashstyle&&this.writeNode("CssParameter",{symbolizer:a,key:"strokeDashstyle"},b);void 0!=a.strokeLinecap&&this.writeNode("CssParameter",{symbolizer:a,key:"strokeLinecap"},b);return b},CssParameter:function(a){return this.createElementNSPlus("sld:CssParameter",{attributes:{name:this.getCssProperty(a.key)},value:a.symbolizer[a.key]})},TextSymbolizer:function(a){var b=this.createElementNSPlus("sld:TextSymbolizer");null!=a.label&&this.writeNode("Label",a.label,b);null==a.fontFamily&&null==a.fontSize&&
null==a.fontWeight&&null==a.fontStyle||this.writeNode("Font",a,b);null==a.labelAnchorPointX&&null==a.labelAnchorPointY&&null==a.labelAlign&&null==a.labelXOffset&&null==a.labelYOffset&&null==a.labelRotation&&null==a.labelPerpendicularOffset||this.writeNode("LabelPlacement",a,b);null==a.haloRadius&&null==a.haloColor&&null==a.haloOpacity||this.writeNode("Halo",a,b);null==a.fontColor&&null==a.fontOpacity||this.writeNode("Fill",{fillColor:a.fontColor,fillOpacity:a.fontOpacity},b);return b},LabelPlacement:function(a){var b=
this.createElementNSPlus("sld:LabelPlacement");null==a.labelAnchorPointX&&null==a.labelAnchorPointY&&null==a.labelAlign&&null==a.labelXOffset&&null==a.labelYOffset&&null==a.labelRotation||null!=a.labelPerpendicularOffset||this.writeNode("PointPlacement",a,b);null!=a.labelPerpendicularOffset&&this.writeNode("LinePlacement",a,b);return b},LinePlacement:function(a){var b=this.createElementNSPlus("sld:LinePlacement");this.writeNode("PerpendicularOffset",a.labelPerpendicularOffset,b);return b},PerpendicularOffset:function(a){return this.createElementNSPlus("sld:PerpendicularOffset",
{value:a})},PointPlacement:function(a){var b=this.createElementNSPlus("sld:PointPlacement");null==a.labelAnchorPointX&&null==a.labelAnchorPointY&&null==a.labelAlign||this.writeNode("AnchorPoint",a,b);null==a.labelXOffset&&null==a.labelYOffset||this.writeNode("Displacement",a,b);null!=a.labelRotation&&this.writeNode("Rotation",a.labelRotation,b);return b},AnchorPoint:function(a){var b=this.createElementNSPlus("sld:AnchorPoint"),c=a.labelAnchorPointX,d=a.labelAnchorPointY;null!=c&&this.writeNode("AnchorPointX",
c,b);null!=d&&this.writeNode("AnchorPointY",d,b);if(null==c&&null==d){var e=a.labelAlign.substr(0,1);a=a.labelAlign.substr(1,1);"l"===e?c=0:"c"===e?c=0.5:"r"===e&&(c=1);"b"===a?d=0:"m"===a?d=0.5:"t"===a&&(d=1);this.writeNode("AnchorPointX",c,b);this.writeNode("AnchorPointY",d,b)}return b},AnchorPointX:function(a){return this.createElementNSPlus("sld:AnchorPointX",{value:a})},AnchorPointY:function(a){return this.createElementNSPlus("sld:AnchorPointY",{value:a})},Displacement:function(a){var b=this.createElementNSPlus("sld:Displacement");
null!=a.labelXOffset&&this.writeNode("DisplacementX",a.labelXOffset,b);null!=a.labelYOffset&&this.writeNode("DisplacementY",a.labelYOffset,b);return b},DisplacementX:function(a){return this.createElementNSPlus("sld:DisplacementX",{value:a})},DisplacementY:function(a){return this.createElementNSPlus("sld:DisplacementY",{value:a})},Font:function(a){var b=this.createElementNSPlus("sld:Font");a.fontFamily&&this.writeNode("CssParameter",{symbolizer:a,key:"fontFamily"},b);a.fontSize&&this.writeNode("CssParameter",
{symbolizer:a,key:"fontSize"},b);a.fontWeight&&this.writeNode("CssParameter",{symbolizer:a,key:"fontWeight"},b);a.fontStyle&&this.writeNode("CssParameter",{symbolizer:a,key:"fontStyle"},b);return b},Label:function(a){return this.writers.sld._OGCExpression.call(this,"sld:Label",a)},Halo:function(a){var b=this.createElementNSPlus("sld:Halo");a.haloRadius&&this.writeNode("Radius",a.haloRadius,b);(a.haloColor||a.haloOpacity)&&this.writeNode("Fill",{fillColor:a.haloColor,fillOpacity:a.haloOpacity},b);
return b},Radius:function(a){return this.createElementNSPlus("sld:Radius",{value:a})},RasterSymbolizer:function(a){var b=this.createElementNSPlus("sld:RasterSymbolizer");a.geometry&&this.writeNode("Geometry",a.geometry,b);a.opacity&&this.writeNode("Opacity",a.opacity,b);a.colorMap&&this.writeNode("ColorMap",a.colorMap,b);return b},Geometry:function(a){var b=this.createElementNSPlus("sld:Geometry");a.property&&this.writeNode("ogc:PropertyName",a,b);return b},ColorMap:function(a){for(var b=this.createElementNSPlus("sld:ColorMap"),
c=0,d=a.length;c<d;++c)this.writeNode("ColorMapEntry",a[c],b);return b},ColorMapEntry:function(a){var b=this.createElementNSPlus("sld:ColorMapEntry");b.setAttribute("color",a.color);void 0!==a.opacity&&b.setAttribute("opacity",parseFloat(a.opacity));void 0!==a.quantity&&b.setAttribute("quantity",parseFloat(a.quantity));void 0!==a.label&&b.setAttribute("label",a.label);return b},PolygonSymbolizer:function(a){var b=this.createElementNSPlus("sld:PolygonSymbolizer");!1!==a.fill&&this.writeNode("Fill",
a,b);!1!==a.stroke&&this.writeNode("Stroke",a,b);return b},Fill:function(a){var b=this.createElementNSPlus("sld:Fill");a.fillColor&&this.writeNode("CssParameter",{symbolizer:a,key:"fillColor"},b);null!=a.fillOpacity&&this.writeNode("CssParameter",{symbolizer:a,key:"fillOpacity"},b);return b},PointSymbolizer:function(a){var b=this.createElementNSPlus("sld:PointSymbolizer");this.writeNode("Graphic",a,b);return b},Graphic:function(a){var b=this.createElementNSPlus("sld:Graphic");void 0!=a.externalGraphic?
this.writeNode("ExternalGraphic",a,b):this.writeNode("Mark",a,b);void 0!=a.graphicOpacity&&this.writeNode("Opacity",a.graphicOpacity,b);void 0!=a.pointRadius?this.writeNode("Size",2*a.pointRadius,b):void 0!=a.graphicWidth&&this.writeNode("Size",a.graphicWidth,b);void 0!=a.rotation&&this.writeNode("Rotation",a.rotation,b);return b},ExternalGraphic:function(a){var b=this.createElementNSPlus("sld:ExternalGraphic");this.writeNode("OnlineResource",a.externalGraphic,b);a=a.graphicFormat||this.getGraphicFormat(a.externalGraphic);
this.writeNode("Format",a,b);return b},Mark:function(a){var b=this.createElementNSPlus("sld:Mark");a.graphicName&&this.writeNode("WellKnownName",a.graphicName,b);!1!==a.fill&&this.writeNode("Fill",a,b);!1!==a.stroke&&this.writeNode("Stroke",a,b);return b},WellKnownName:function(a){return this.createElementNSPlus("sld:WellKnownName",{value:a})},Opacity:function(a){return this.createElementNSPlus("sld:Opacity",{value:a})},Size:function(a){return this.writers.sld._OGCExpression.call(this,"sld:Size",
a)},Rotation:function(a){return this.createElementNSPlus("sld:Rotation",{value:a})},OnlineResource:function(a){return this.createElementNSPlus("sld:OnlineResource",{attributes:{"xlink:type":"simple","xlink:href":a}})},Format:function(a){return this.createElementNSPlus("sld:Format",{value:a})}}},OpenLayers.Format.Filter.v1_0_0.prototype.writers),CLASS_NAME:"OpenLayers.Format.SLD.v1"});OpenLayers.Layer.WMS=OpenLayers.Class(OpenLayers.Layer.Grid,{DEFAULT_PARAMS:{service:"WMS",version:"1.1.1",request:"GetMap",styles:"",format:"image/jpeg"},isBaseLayer:!0,encodeBBOX:!1,noMagic:!1,yx:{},initialize:function(a,b,c,d){var e=[];c=OpenLayers.Util.upperCaseObject(c);1.3<=parseFloat(c.VERSION)&&!c.EXCEPTIONS&&(c.EXCEPTIONS="INIMAGE");e.push(a,b,c,d);OpenLayers.Layer.Grid.prototype.initialize.apply(this,e);OpenLayers.Util.applyDefaults(this.params,OpenLayers.Util.upperCaseObject(this.DEFAULT_PARAMS));
!this.noMagic&&(this.params.TRANSPARENT&&"true"==this.params.TRANSPARENT.toString().toLowerCase())&&(null!=d&&d.isBaseLayer||(this.isBaseLayer=!1),"image/jpeg"==this.params.FORMAT&&(this.params.FORMAT=OpenLayers.Util.alphaHack()?"image/gif":"image/png"))},clone:function(a){null==a&&(a=new OpenLayers.Layer.WMS(this.name,this.url,this.params,this.getOptions()));return a=OpenLayers.Layer.Grid.prototype.clone.apply(this,[a])},reverseAxisOrder:function(){var a=this.projection.getCode();return 1.3<=parseFloat(this.params.VERSION)&&
!!(this.yx[a]||OpenLayers.Projection.defaults[a]&&OpenLayers.Projection.defaults[a].yx)},getURL:function(a){a=this.adjustBounds(a);var b=this.getImageSize(),c={},d=this.reverseAxisOrder();c.BBOX=this.encodeBBOX?a.toBBOX(null,d):a.toArray(d);c.WIDTH=b.w;c.HEIGHT=b.h;return this.getFullRequestString(c)},mergeNewParams:function(a){a=[OpenLayers.Util.upperCaseObject(a)];return OpenLayers.Layer.Grid.prototype.mergeNewParams.apply(this,a)},getFullRequestString:function(a,b){var c=this.map.getProjectionObject(),
c=this.projection&&this.projection.equals(c)?this.projection.getCode():c.getCode(),c="none"==c?null:c;1.3<=parseFloat(this.params.VERSION)?this.params.CRS=c:this.params.SRS=c;"boolean"==typeof this.params.TRANSPARENT&&(a.TRANSPARENT=this.params.TRANSPARENT?"TRUE":"FALSE");return OpenLayers.Layer.Grid.prototype.getFullRequestString.apply(this,arguments)},CLASS_NAME:"OpenLayers.Layer.WMS"});OpenLayers.Layer.KaMap=OpenLayers.Class(OpenLayers.Layer.Grid,{isBaseLayer:!0,DEFAULT_PARAMS:{i:"jpeg",map:""},initialize:function(a,b,c,d){OpenLayers.Layer.Grid.prototype.initialize.apply(this,arguments);this.params=OpenLayers.Util.applyDefaults(this.params,this.DEFAULT_PARAMS)},getURL:function(a){a=this.adjustBounds(a);var b=this.map.getResolution(),c=Math.round(1E4*this.map.getScale())/1E4,d=Math.round(a.left/b);a=-Math.round(a.top/b);return this.getFullRequestString({t:a,l:d,s:c})},calculateGridLayout:function(a,
b,c){b=c*this.tileSize.w;c*=this.tileSize.h;return{tilelon:b,tilelat:c,startcol:Math.floor(a.left/b)-this.buffer,startrow:Math.floor(a.top/c)+this.buffer}},getTileBoundsForGridIndex:function(a,b){this.getTileOrigin();var c=this.gridLayout,d=c.tilelon,e=c.tilelat,f=(c.startcol+b)*d,c=(c.startrow-a)*e;return new OpenLayers.Bounds(f,c,f+d,c+e)},clone:function(a){null==a&&(a=new OpenLayers.Layer.KaMap(this.name,this.url,this.params,this.getOptions()));a=OpenLayers.Layer.Grid.prototype.clone.apply(this,
[a]);null!=this.tileSize&&(a.tileSize=this.tileSize.clone());a.grid=[];return a},getTileBounds:function(a){var b=this.getResolution(),c=b*this.tileSize.w,b=b*this.tileSize.h,d=this.getLonLatFromViewPortPx(a);a=c*Math.floor(d.lon/c);d=b*Math.floor(d.lat/b);return new OpenLayers.Bounds(a,d,a+c,d+b)},CLASS_NAME:"OpenLayers.Layer.KaMap"});OpenLayers.Format.WMC.v1_1_0=OpenLayers.Class(OpenLayers.Format.WMC.v1,{VERSION:"1.1.0",schemaLocation:"http://www.opengis.net/context http://schemas.opengis.net/context/1.1.0/context.xsd",initialize:function(a){OpenLayers.Format.WMC.v1.prototype.initialize.apply(this,[a])},read_sld_MinScaleDenominator:function(a,b){var c=parseFloat(this.getChildValue(b));0<c&&(a.maxScale=c)},read_sld_MaxScaleDenominator:function(a,b){a.minScale=parseFloat(this.getChildValue(b))},read_wmc_SRS:function(a,b){"srs"in
a||(a.srs={});a.srs[this.getChildValue(b)]=!0},write_wmc_Layer:function(a){var b=OpenLayers.Format.WMC.v1.prototype.write_wmc_Layer.apply(this,[a]);if(a.maxScale){var c=this.createElementNS(this.namespaces.sld,"sld:MinScaleDenominator");c.appendChild(this.createTextNode(a.maxScale.toPrecision(16)));b.appendChild(c)}a.minScale&&(c=this.createElementNS(this.namespaces.sld,"sld:MaxScaleDenominator"),c.appendChild(this.createTextNode(a.minScale.toPrecision(16))),b.appendChild(c));if(a.srs)for(var d in a.srs)b.appendChild(this.createElementDefaultNS("SRS",
d));b.appendChild(this.write_wmc_FormatList(a));b.appendChild(this.write_wmc_StyleList(a));a.dimensions&&b.appendChild(this.write_wmc_DimensionList(a));b.appendChild(this.write_wmc_LayerExtension(a));return b},CLASS_NAME:"OpenLayers.Format.WMC.v1_1_0"});OpenLayers.Format.XLS=OpenLayers.Class(OpenLayers.Format.XML.VersionedOGC,{defaultVersion:"1.1.0",stringifyOutput:!0,CLASS_NAME:"OpenLayers.Format.XLS"});OpenLayers.Format.XLS.v1=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{xls:"http://www.opengis.net/xls",gml:"http://www.opengis.net/gml",xsi:"http://www.w3.org/2001/XMLSchema-instance"},regExes:{trimSpace:/^\s*|\s*$/g,removeSpace:/\s*/g,splitSpace:/\s+/,trimComma:/\s*,\s*/g},xy:!0,defaultPrefix:"xls",schemaLocation:null,read:function(a,b){OpenLayers.Util.applyDefaults(b,this.options);var c={};this.readChildNodes(a,c);return c},readers:{xls:{XLS:function(a,b){b.version=a.getAttribute("version");
this.readChildNodes(a,b)},Response:function(a,b){this.readChildNodes(a,b)},GeocodeResponse:function(a,b){b.responseLists=[];this.readChildNodes(a,b)},GeocodeResponseList:function(a,b){var c={features:[],numberOfGeocodedAddresses:parseInt(a.getAttribute("numberOfGeocodedAddresses"))};b.responseLists.push(c);this.readChildNodes(a,c)},GeocodedAddress:function(a,b){var c=new OpenLayers.Feature.Vector;b.features.push(c);this.readChildNodes(a,c);c.geometry=c.components[0]},GeocodeMatchCode:function(a,b){b.attributes.matchCode=
{accuracy:parseFloat(a.getAttribute("accuracy")),matchType:a.getAttribute("matchType")}},Address:function(a,b){var c={countryCode:a.getAttribute("countryCode"),addressee:a.getAttribute("addressee"),street:[],place:[]};b.attributes.address=c;this.readChildNodes(a,c)},freeFormAddress:function(a,b){b.freeFormAddress=this.getChildValue(a)},StreetAddress:function(a,b){this.readChildNodes(a,b)},Building:function(a,b){b.building={number:a.getAttribute("number"),subdivision:a.getAttribute("subdivision"),
buildingName:a.getAttribute("buildingName")}},Street:function(a,b){b.street.push(this.getChildValue(a))},Place:function(a,b){b.place[a.getAttribute("type")]=this.getChildValue(a)},PostalCode:function(a,b){b.postalCode=this.getChildValue(a)}},gml:OpenLayers.Format.GML.v3.prototype.readers.gml},write:function(a){return this.writers.xls.XLS.apply(this,[a])},writers:{xls:{XLS:function(a){var b=this.createElementNSPlus("xls:XLS",{attributes:{version:this.VERSION,"xsi:schemaLocation":this.schemaLocation}});
this.writeNode("RequestHeader",a.header,b);this.writeNode("Request",a,b);return b},RequestHeader:function(a){return this.createElementNSPlus("xls:RequestHeader")},Request:function(a){var b=this.createElementNSPlus("xls:Request",{attributes:{methodName:"GeocodeRequest",requestID:a.requestID||"",version:this.VERSION}});this.writeNode("GeocodeRequest",a.addresses,b);return b},GeocodeRequest:function(a){for(var b=this.createElementNSPlus("xls:GeocodeRequest"),c=0,d=a.length;c<d;c++)this.writeNode("Address",
a[c],b);return b},Address:function(a){var b=this.createElementNSPlus("xls:Address",{attributes:{countryCode:a.countryCode}});a.freeFormAddress?this.writeNode("freeFormAddress",a.freeFormAddress,b):(a.street&&this.writeNode("StreetAddress",a,b),a.municipality&&this.writeNode("Municipality",a.municipality,b),a.countrySubdivision&&this.writeNode("CountrySubdivision",a.countrySubdivision,b),a.postalCode&&this.writeNode("PostalCode",a.postalCode,b));return b},freeFormAddress:function(a){return this.createElementNSPlus("freeFormAddress",
{value:a})},StreetAddress:function(a){var b=this.createElementNSPlus("xls:StreetAddress");a.building&&this.writeNode(b,"Building",a.building);a=a.street;OpenLayers.Util.isArray(a)||(a=[a]);for(var c=0,d=a.length;c<d;c++)this.writeNode("Street",a[c],b);return b},Building:function(a){return this.createElementNSPlus("xls:Building",{attributes:{number:a.number,subdivision:a.subdivision,buildingName:a.buildingName}})},Street:function(a){return this.createElementNSPlus("xls:Street",{value:a})},Municipality:function(a){return this.createElementNSPlus("xls:Place",
{attributes:{type:"Municipality"},value:a})},CountrySubdivision:function(a){return this.createElementNSPlus("xls:Place",{attributes:{type:"CountrySubdivision"},value:a})},PostalCode:function(a){return this.createElementNSPlus("xls:PostalCode",{value:a})}}},CLASS_NAME:"OpenLayers.Format.XLS.v1"});OpenLayers.Format.XLS.v1_1_0=OpenLayers.Class(OpenLayers.Format.XLS.v1,{VERSION:"1.1",schemaLocation:"http://www.opengis.net/xls http://schemas.opengis.net/ols/1.1.0/LocationUtilityService.xsd",CLASS_NAME:"OpenLayers.Format.XLS.v1_1_0"});OpenLayers.Format.XLS.v1_1=OpenLayers.Format.XLS.v1_1_0;OpenLayers.Renderer.SVG=OpenLayers.Class(OpenLayers.Renderer.Elements,{xmlns:"http://www.w3.org/2000/svg",xlinkns:"http://www.w3.org/1999/xlink",MAX_PIXEL:15E3,translationParameters:null,symbolMetrics:null,initialize:function(a){this.supported()&&(OpenLayers.Renderer.Elements.prototype.initialize.apply(this,arguments),this.translationParameters={x:0,y:0},this.symbolMetrics={})},supported:function(){return document.implementation&&(document.implementation.hasFeature("org.w3c.svg","1.0")||document.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#SVG",
"1.1")||document.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1"))},inValidRange:function(a,b,c){a+=c?0:this.translationParameters.x;b+=c?0:this.translationParameters.y;return a>=-this.MAX_PIXEL&&a<=this.MAX_PIXEL&&b>=-this.MAX_PIXEL&&b<=this.MAX_PIXEL},setExtent:function(a,b){var c=OpenLayers.Renderer.Elements.prototype.setExtent.apply(this,arguments),d=this.getResolution(),e=-a.left/d,d=a.top/d;if(b)return this.left=e,this.top=d,this.rendererRoot.setAttributeNS(null,
"viewBox","0 0 "+this.size.w+" "+this.size.h),this.translate(this.xOffset,0),!0;(e=this.translate(e-this.left+this.xOffset,d-this.top))||this.setExtent(a,!0);return c&&e},translate:function(a,b){if(this.inValidRange(a,b,!0)){var c="";if(a||b)c="translate("+a+","+b+")";this.root.setAttributeNS(null,"transform",c);this.translationParameters={x:a,y:b};return!0}return!1},setSize:function(a){OpenLayers.Renderer.prototype.setSize.apply(this,arguments);this.rendererRoot.setAttributeNS(null,"width",this.size.w);
this.rendererRoot.setAttributeNS(null,"height",this.size.h)},getNodeType:function(a,b){var c=null;switch(a.CLASS_NAME){case "OpenLayers.Geometry.Point":c=b.externalGraphic?"image":this.isComplexSymbol(b.graphicName)?"svg":"circle";break;case "OpenLayers.Geometry.Rectangle":c="rect";break;case "OpenLayers.Geometry.LineString":c="polyline";break;case "OpenLayers.Geometry.LinearRing":c="polygon";break;case "OpenLayers.Geometry.Polygon":case "OpenLayers.Geometry.Curve":c="path"}return c},setStyle:function(a,
b,c){b=b||a._style;c=c||a._options;var d=b.title||b.graphicTitle;if(d){a.setAttributeNS(null,"title",d);var e=a.getElementsByTagName("title");0<e.length?e[0].firstChild.textContent=d:(e=this.nodeFactory(null,"title"),e.textContent=d,a.appendChild(e))}var e=parseFloat(a.getAttributeNS(null,"r")),d=1,f;if("OpenLayers.Geometry.Point"==a._geometryClass&&e){a.style.visibility="";if(!1===b.graphic)a.style.visibility="hidden";else if(b.externalGraphic){f=this.getPosition(a);b.graphicWidth&&b.graphicHeight&&
a.setAttributeNS(null,"preserveAspectRatio","none");var e=b.graphicWidth||b.graphicHeight,g=b.graphicHeight||b.graphicWidth,e=e?e:2*b.pointRadius,g=g?g:2*b.pointRadius,h=void 0!=b.graphicYOffset?b.graphicYOffset:-(0.5*g),k=b.graphicOpacity||b.fillOpacity;a.setAttributeNS(null,"x",(f.x+(void 0!=b.graphicXOffset?b.graphicXOffset:-(0.5*e))).toFixed());a.setAttributeNS(null,"y",(f.y+h).toFixed());a.setAttributeNS(null,"width",e);a.setAttributeNS(null,"height",g);a.setAttributeNS(this.xlinkns,"xlink:href",
b.externalGraphic);a.setAttributeNS(null,"style","opacity: "+k);a.onclick=OpenLayers.Event.preventDefault}else if(this.isComplexSymbol(b.graphicName)){var e=3*b.pointRadius,g=2*e,l=this.importSymbol(b.graphicName);f=this.getPosition(a);d=3*this.symbolMetrics[l.id][0]/g;h=a.parentNode;k=a.nextSibling;h&&h.removeChild(a);a.firstChild&&a.removeChild(a.firstChild);a.appendChild(l.firstChild.cloneNode(!0));a.setAttributeNS(null,"viewBox",l.getAttributeNS(null,"viewBox"));a.setAttributeNS(null,"width",
g);a.setAttributeNS(null,"height",g);a.setAttributeNS(null,"x",f.x-e);a.setAttributeNS(null,"y",f.y-e);k?h.insertBefore(a,k):h&&h.appendChild(a)}else a.setAttributeNS(null,"r",b.pointRadius);e=b.rotation;void 0===e&&void 0===a._rotation||!f||(a._rotation=e,e|=0,"svg"!==a.nodeName?a.setAttributeNS(null,"transform","rotate("+e+" "+f.x+" "+f.y+")"):(f=this.symbolMetrics[l.id],a.firstChild.setAttributeNS(null,"transform","rotate("+e+" "+f[1]+" "+f[2]+")")))}c.isFilled?(a.setAttributeNS(null,"fill",b.fillColor),
a.setAttributeNS(null,"fill-opacity",b.fillOpacity)):a.setAttributeNS(null,"fill","none");c.isStroked?(a.setAttributeNS(null,"stroke",b.strokeColor),a.setAttributeNS(null,"stroke-opacity",b.strokeOpacity),a.setAttributeNS(null,"stroke-width",b.strokeWidth*d),a.setAttributeNS(null,"stroke-linecap",b.strokeLinecap||"round"),a.setAttributeNS(null,"stroke-linejoin","round"),b.strokeDashstyle&&a.setAttributeNS(null,"stroke-dasharray",this.dashStyle(b,d))):a.setAttributeNS(null,"stroke","none");b.pointerEvents&&
a.setAttributeNS(null,"pointer-events",b.pointerEvents);null!=b.cursor&&a.setAttributeNS(null,"cursor",b.cursor);return a},dashStyle:function(a,b){var c=a.strokeWidth*b,d=a.strokeDashstyle;switch(d){case "solid":return"none";case "dot":return[1,4*c].join();case "dash":return[4*c,4*c].join();case "dashdot":return[4*c,4*c,1,4*c].join();case "longdash":return[8*c,4*c].join();case "longdashdot":return[8*c,4*c,1,4*c].join();default:return OpenLayers.String.trim(d).replace(/\s+/g,",")}},createNode:function(a,
b){var c=document.createElementNS(this.xmlns,a);b&&c.setAttributeNS(null,"id",b);return c},nodeTypeCompare:function(a,b){return b==a.nodeName},createRenderRoot:function(){var a=this.nodeFactory(this.container.id+"_svgRoot","svg");a.style.display="block";return a},createRoot:function(a){return this.nodeFactory(this.container.id+a,"g")},createDefs:function(){var a=this.nodeFactory(this.container.id+"_defs","defs");this.rendererRoot.appendChild(a);return a},drawPoint:function(a,b){return this.drawCircle(a,
b,1)},drawCircle:function(a,b,c){var d=this.getResolution(),e=(b.x-this.featureDx)/d+this.left;b=this.top-b.y/d;return this.inValidRange(e,b)?(a.setAttributeNS(null,"cx",e),a.setAttributeNS(null,"cy",b),a.setAttributeNS(null,"r",c),a):!1},drawLineString:function(a,b){var c=this.getComponentsString(b.components);return c.path?(a.setAttributeNS(null,"points",c.path),c.complete?a:null):!1},drawLinearRing:function(a,b){var c=this.getComponentsString(b.components);return c.path?(a.setAttributeNS(null,
"points",c.path),c.complete?a:null):!1},drawPolygon:function(a,b){for(var c="",d=!0,e=!0,f,g,h=0,k=b.components.length;h<k;h++)c+=" M",f=this.getComponentsString(b.components[h].components," "),(g=f.path)?(c+=" "+g,e=f.complete&&e):d=!1;return d?(a.setAttributeNS(null,"d",c+" z"),a.setAttributeNS(null,"fill-rule","evenodd"),e?a:null):!1},drawRectangle:function(a,b){var c=this.getResolution(),d=(b.x-this.featureDx)/c+this.left,e=this.top-b.y/c;return this.inValidRange(d,e)?(a.setAttributeNS(null,"x",
d),a.setAttributeNS(null,"y",e),a.setAttributeNS(null,"width",b.width/c),a.setAttributeNS(null,"height",b.height/c),a):!1},drawText:function(a,b,c){var d=!!b.labelOutlineWidth;if(d){var e=OpenLayers.Util.extend({},b);e.fontColor=e.labelOutlineColor;e.fontStrokeColor=e.labelOutlineColor;e.fontStrokeWidth=b.labelOutlineWidth;b.labelOutlineOpacity&&(e.fontOpacity=b.labelOutlineOpacity);delete e.labelOutlineWidth;this.drawText(a,e,c)}var f=this.getResolution(),e=(c.x-this.featureDx)/f+this.left,g=c.y/
f-this.top,d=d?this.LABEL_OUTLINE_SUFFIX:this.LABEL_ID_SUFFIX,f=this.nodeFactory(a+d,"text");f.setAttributeNS(null,"x",e);f.setAttributeNS(null,"y",-g);b.fontColor&&f.setAttributeNS(null,"fill",b.fontColor);b.fontStrokeColor&&f.setAttributeNS(null,"stroke",b.fontStrokeColor);b.fontStrokeWidth&&f.setAttributeNS(null,"stroke-width",b.fontStrokeWidth);b.fontOpacity&&f.setAttributeNS(null,"opacity",b.fontOpacity);b.fontFamily&&f.setAttributeNS(null,"font-family",b.fontFamily);b.fontSize&&f.setAttributeNS(null,
"font-size",b.fontSize);b.fontWeight&&f.setAttributeNS(null,"font-weight",b.fontWeight);b.fontStyle&&f.setAttributeNS(null,"font-style",b.fontStyle);!0===b.labelSelect?(f.setAttributeNS(null,"pointer-events","visible"),f._featureId=a):f.setAttributeNS(null,"pointer-events","none");g=b.labelAlign||OpenLayers.Renderer.defaultSymbolizer.labelAlign;f.setAttributeNS(null,"text-anchor",OpenLayers.Renderer.SVG.LABEL_ALIGN[g[0]]||"middle");!0===OpenLayers.IS_GECKO&&f.setAttributeNS(null,"dominant-baseline",
OpenLayers.Renderer.SVG.LABEL_ALIGN[g[1]]||"central");for(var h=b.label.split("\n"),k=h.length;f.childNodes.length>k;)f.removeChild(f.lastChild);for(var l=0;l<k;l++){var m=this.nodeFactory(a+d+"_tspan_"+l,"tspan");!0===b.labelSelect&&(m._featureId=a,m._geometry=c,m._geometryClass=c.CLASS_NAME);!1===OpenLayers.IS_GECKO&&m.setAttributeNS(null,"baseline-shift",OpenLayers.Renderer.SVG.LABEL_VSHIFT[g[1]]||"-35%");m.setAttribute("x",e);if(0==l){var n=OpenLayers.Renderer.SVG.LABEL_VFACTOR[g[1]];null==n&&
(n=-0.5);m.setAttribute("dy",n*(k-1)+"em")}else m.setAttribute("dy","1em");m.textContent=""===h[l]?" ":h[l];m.parentNode||f.appendChild(m)}f.parentNode||this.textRoot.appendChild(f)},getComponentsString:function(a,b){for(var c=[],d=!0,e=a.length,f=[],g,h=0;h<e;h++)g=a[h],c.push(g),(g=this.getShortString(g))?f.push(g):(0<h&&this.getShortString(a[h-1])&&f.push(this.clipLine(a[h],a[h-1])),h<e-1&&this.getShortString(a[h+1])&&f.push(this.clipLine(a[h],a[h+1])),d=!1);return{path:f.join(b||","),complete:d}},
clipLine:function(a,b){if(b.equals(a))return"";var c=this.getResolution(),d=this.MAX_PIXEL-this.translationParameters.x,e=this.MAX_PIXEL-this.translationParameters.y,f=(b.x-this.featureDx)/c+this.left,g=this.top-b.y/c,h=(a.x-this.featureDx)/c+this.left,c=this.top-a.y/c,k;if(h<-d||h>d)k=(c-g)/(h-f),h=0>h?-d:d,c=g+(h-f)*k;if(c<-e||c>e)k=(h-f)/(c-g),c=0>c?-e:e,h=f+(c-g)*k;return h+","+c},getShortString:function(a){var b=this.getResolution(),c=(a.x-this.featureDx)/b+this.left;a=this.top-a.y/b;return this.inValidRange(c,
a)?c+","+a:!1},getPosition:function(a){return{x:parseFloat(a.getAttributeNS(null,"cx")),y:parseFloat(a.getAttributeNS(null,"cy"))}},importSymbol:function(a){this.defs||(this.defs=this.createDefs());var b=this.container.id+"-"+a,c=document.getElementById(b);if(null!=c)return c;var d=OpenLayers.Renderer.symbol[a];if(!d)throw Error(a+" is not a valid symbol name");a=this.nodeFactory(b,"symbol");var e=this.nodeFactory(null,"polygon");a.appendChild(e);for(var c=new OpenLayers.Bounds(Number.MAX_VALUE,Number.MAX_VALUE,
0,0),f=[],g,h,k=0;k<d.length;k+=2)g=d[k],h=d[k+1],c.left=Math.min(c.left,g),c.bottom=Math.min(c.bottom,h),c.right=Math.max(c.right,g),c.top=Math.max(c.top,h),f.push(g,",",h);e.setAttributeNS(null,"points",f.join(" "));d=c.getWidth();e=c.getHeight();a.setAttributeNS(null,"viewBox",[c.left-d,c.bottom-e,3*d,3*e].join(" "));this.symbolMetrics[b]=[Math.max(d,e),c.getCenterLonLat().lon,c.getCenterLonLat().lat];this.defs.appendChild(a);return a},getFeatureIdFromEvent:function(a){var b=OpenLayers.Renderer.Elements.prototype.getFeatureIdFromEvent.apply(this,
arguments);b||(b=a.target,b=b.parentNode&&b!=this.rendererRoot?b.parentNode._featureId:void 0);return b},CLASS_NAME:"OpenLayers.Renderer.SVG"});OpenLayers.Renderer.SVG.LABEL_ALIGN={l:"start",r:"end",b:"bottom",t:"hanging"};OpenLayers.Renderer.SVG.LABEL_VSHIFT={t:"-70%",b:"0"};OpenLayers.Renderer.SVG.LABEL_VFACTOR={t:0,b:-1};OpenLayers.Renderer.SVG.preventDefault=function(a){OpenLayers.Event.preventDefault(a)};OpenLayers.Format.SLD.v1_0_0=OpenLayers.Class(OpenLayers.Format.SLD.v1,{VERSION:"1.0.0",schemaLocation:"http://www.opengis.net/sld http://schemas.opengis.net/sld/1.0.0/StyledLayerDescriptor.xsd",CLASS_NAME:"OpenLayers.Format.SLD.v1_0_0"});OpenLayers.Format.OWSContext=OpenLayers.Class(OpenLayers.Format.Context,{defaultVersion:"0.3.1",getVersion:function(a,b){var c=OpenLayers.Format.XML.VersionedOGC.prototype.getVersion.apply(this,arguments);"0.3.0"===c&&(c=this.defaultVersion);return c},toContext:function(a){var b={};"OpenLayers.Map"==a.CLASS_NAME&&(b.bounds=a.getExtent(),b.maxExtent=a.maxExtent,b.projection=a.projection,b.size=a.getSize(),b.layers=a.layers);return b},CLASS_NAME:"OpenLayers.Format.OWSContext"});OpenLayers.Format.OWSContext.v0_3_1=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{owc:"http://www.opengis.net/ows-context",gml:"http://www.opengis.net/gml",kml:"http://www.opengis.net/kml/2.2",ogc:"http://www.opengis.net/ogc",ows:"http://www.opengis.net/ows",sld:"http://www.opengis.net/sld",xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance"},VERSION:"0.3.1",schemaLocation:"http://www.opengis.net/ows-context http://www.ogcnetwork.net/schemas/owc/0.3.1/owsContext.xsd",
defaultPrefix:"owc",extractAttributes:!0,xy:!0,regExes:{trimSpace:/^\s*|\s*$/g,removeSpace:/\s*/g,splitSpace:/\s+/,trimComma:/\s*,\s*/g},featureNS:"http://mapserver.gis.umn.edu/mapserver",featureType:"vector",geometryName:"geometry",nestingLayerLookup:null,initialize:function(a){OpenLayers.Format.XML.prototype.initialize.apply(this,[a]);OpenLayers.Format.GML.v2.prototype.setGeometryTypes.call(this)},setNestingPath:function(a){if(a.layersContext)for(var b=0,c=a.layersContext.length;b<c;b++){var d=
a.layersContext[b],e=[],f=a.title||"";a.metadata&&a.metadata.nestingPath&&(e=a.metadata.nestingPath.slice());""!=f&&e.push(f);d.metadata.nestingPath=e;d.layersContext&&this.setNestingPath(d)}},decomposeNestingPath:function(a){var b=[];if(OpenLayers.Util.isArray(a)){for(a=a.slice();0<a.length;)b.push(a.slice()),a.pop();b.reverse()}return b},read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));a&&9==a.nodeType&&(a=a.documentElement);var b={};this.readNode(a,
b);this.setNestingPath({layersContext:b.layersContext});a=[];this.processLayer(a,b);delete b.layersContext;b.layersContext=a;return b},processLayer:function(a,b){if(b.layersContext)for(var c=0,d=b.layersContext.length;c<d;c++){var e=b.layersContext[c];a.push(e);e.layersContext&&this.processLayer(a,e)}},write:function(a,b){this.nestingLayerLookup={};b=b||{};OpenLayers.Util.applyDefaults(b,a);var c=this.writeNode("OWSContext",b);this.nestingLayerLookup=null;this.setAttributeNS(c,this.namespaces.xsi,
"xsi:schemaLocation",this.schemaLocation);return OpenLayers.Format.XML.prototype.write.apply(this,[c])},readers:{kml:{Document:function(a,b){b.features=(new OpenLayers.Format.KML({kmlns:this.namespaces.kml,extractStyles:!0})).read(a)}},owc:{OWSContext:function(a,b){this.readChildNodes(a,b)},General:function(a,b){this.readChildNodes(a,b)},ResourceList:function(a,b){this.readChildNodes(a,b)},Layer:function(a,b){var c={metadata:{},visibility:"1"!=a.getAttribute("hidden"),queryable:"1"==a.getAttribute("queryable"),
opacity:null!=a.getAttribute("opacity")?parseFloat(a.getAttribute("opacity")):null,name:a.getAttribute("name"),categoryLayer:null==a.getAttribute("name"),formats:[],styles:[]};b.layersContext||(b.layersContext=[]);b.layersContext.push(c);this.readChildNodes(a,c)},InlineGeometry:function(a,b){b.features=[];var c=this.getElementsByTagNameNS(a,this.namespaces.gml,"featureMember"),d;1<=c.length&&(d=c[0]);d&&d.firstChild&&(c=d.firstChild.nextSibling?d.firstChild.nextSibling:d.firstChild,this.setNamespace("feature",
c.namespaceURI),this.featureType=c.localName||c.nodeName.split(":").pop(),this.readChildNodes(a,b))},Server:function(a,b){if(!b.service&&!b.version||b.service!=OpenLayers.Format.Context.serviceTypes.WMS)b.service=a.getAttribute("service"),b.version=a.getAttribute("version"),this.readChildNodes(a,b)},Name:function(a,b){b.name=this.getChildValue(a);this.readChildNodes(a,b)},Title:function(a,b){b.title=this.getChildValue(a);this.readChildNodes(a,b)},StyleList:function(a,b){this.readChildNodes(a,b.styles)},
Style:function(a,b){var c={};b.push(c);this.readChildNodes(a,c)},LegendURL:function(a,b){var c={};b.legend=c;this.readChildNodes(a,c)},OnlineResource:function(a,b){b.url=this.getAttributeNS(a,this.namespaces.xlink,"href");this.readChildNodes(a,b)}},ows:OpenLayers.Format.OWSCommon.v1_0_0.prototype.readers.ows,gml:OpenLayers.Format.GML.v2.prototype.readers.gml,sld:OpenLayers.Format.SLD.v1_0_0.prototype.readers.sld,feature:OpenLayers.Format.GML.v2.prototype.readers.feature},writers:{owc:{OWSContext:function(a){var b=
this.createElementNSPlus("OWSContext",{attributes:{version:this.VERSION,id:a.id||OpenLayers.Util.createUniqueID("OpenLayers_OWSContext_")}});this.writeNode("General",a,b);this.writeNode("ResourceList",a,b);return b},General:function(a){var b=this.createElementNSPlus("General");this.writeNode("ows:BoundingBox",a,b);this.writeNode("ows:Title",a.title||"OpenLayers OWSContext",b);return b},ResourceList:function(a){for(var b=this.createElementNSPlus("ResourceList"),c=0,d=a.layers.length;c<d;c++){var e=
a.layers[c],f=this.decomposeNestingPath(e.metadata.nestingPath);this.writeNode("_Layer",{layer:e,subPaths:f},b)}return b},Server:function(a){var b=this.createElementNSPlus("Server",{attributes:{version:a.version,service:a.service}});this.writeNode("OnlineResource",a,b);return b},OnlineResource:function(a){return this.createElementNSPlus("OnlineResource",{attributes:{"xlink:href":a.url}})},InlineGeometry:function(a){var b=this.createElementNSPlus("InlineGeometry"),c=a.getDataExtent();null!==c&&this.writeNode("gml:boundedBy",
c,b);for(var c=0,d=a.features.length;c<d;c++)this.writeNode("gml:featureMember",a.features[c],b);return b},StyleList:function(a){for(var b=this.createElementNSPlus("StyleList"),c=0,d=a.length;c<d;c++)this.writeNode("Style",a[c],b);return b},Style:function(a){var b=this.createElementNSPlus("Style");this.writeNode("Name",a,b);this.writeNode("Title",a,b);a.legend&&this.writeNode("LegendURL",a,b);return b},Name:function(a){return this.createElementNSPlus("Name",{value:a.name})},Title:function(a){return this.createElementNSPlus("Title",
{value:a.title})},LegendURL:function(a){var b=this.createElementNSPlus("LegendURL");this.writeNode("OnlineResource",a.legend,b);return b},_WMS:function(a){var b=this.createElementNSPlus("Layer",{attributes:{name:a.params.LAYERS,queryable:a.queryable?"1":"0",hidden:a.visibility?"0":"1",opacity:a.hasOwnProperty("opacity")?a.opacity:null}});this.writeNode("ows:Title",a.name,b);this.writeNode("ows:OutputFormat",a.params.FORMAT,b);this.writeNode("Server",{service:OpenLayers.Format.Context.serviceTypes.WMS,
version:a.params.VERSION,url:a.url},b);a.metadata.styles&&0<a.metadata.styles.length&&this.writeNode("StyleList",a.metadata.styles,b);return b},_Layer:function(a){var b,c,d;b=a.layer;c=a.subPaths;d=null;0<c.length?(b=c[0].join("/"),c=b.lastIndexOf("/"),d=this.nestingLayerLookup[b],c=0<c?b.substring(c+1,b.length):b,d||(d=this.createElementNSPlus("Layer"),this.writeNode("ows:Title",c,d),this.nestingLayerLookup[b]=d),a.subPaths.shift(),this.writeNode("_Layer",a,d)):(b instanceof OpenLayers.Layer.WMS?
d=this.writeNode("_WMS",b):b instanceof OpenLayers.Layer.Vector&&(b.protocol instanceof OpenLayers.Protocol.WFS.v1?d=this.writeNode("_WFS",b):b.protocol instanceof OpenLayers.Protocol.HTTP?b.protocol.format instanceof OpenLayers.Format.GML?(b.protocol.format.version="2.1.2",d=this.writeNode("_GML",b)):b.protocol.format instanceof OpenLayers.Format.KML&&(b.protocol.format.version="2.2",d=this.writeNode("_KML",b)):(this.setNamespace("feature",this.featureNS),d=this.writeNode("_InlineGeometry",b))),
b.options.maxScale&&this.writeNode("sld:MinScaleDenominator",b.options.maxScale,d),b.options.minScale&&this.writeNode("sld:MaxScaleDenominator",b.options.minScale,d),this.nestingLayerLookup[b.name]=d);return d},_WFS:function(a){var b=this.createElementNSPlus("Layer",{attributes:{name:a.protocol.featurePrefix+":"+a.protocol.featureType,hidden:a.visibility?"0":"1"}});this.writeNode("ows:Title",a.name,b);this.writeNode("Server",{service:OpenLayers.Format.Context.serviceTypes.WFS,version:a.protocol.version,
url:a.protocol.url},b);return b},_InlineGeometry:function(a){var b=this.createElementNSPlus("Layer",{attributes:{name:this.featureType,hidden:a.visibility?"0":"1"}});this.writeNode("ows:Title",a.name,b);this.writeNode("InlineGeometry",a,b);return b},_GML:function(a){var b=this.createElementNSPlus("Layer");this.writeNode("ows:Title",a.name,b);this.writeNode("Server",{service:OpenLayers.Format.Context.serviceTypes.GML,url:a.protocol.url,version:a.protocol.format.version},b);return b},_KML:function(a){var b=
this.createElementNSPlus("Layer");this.writeNode("ows:Title",a.name,b);this.writeNode("Server",{service:OpenLayers.Format.Context.serviceTypes.KML,version:a.protocol.format.version,url:a.protocol.url},b);return b}},gml:OpenLayers.Util.applyDefaults({boundedBy:function(a){var b=this.createElementNSPlus("gml:boundedBy");this.writeNode("gml:Box",a,b);return b}},OpenLayers.Format.GML.v2.prototype.writers.gml),ows:OpenLayers.Format.OWSCommon.v1_0_0.prototype.writers.ows,sld:OpenLayers.Format.SLD.v1_0_0.prototype.writers.sld,
feature:OpenLayers.Format.GML.v2.prototype.writers.feature},CLASS_NAME:"OpenLayers.Format.OWSContext.v0_3_1"});OpenLayers.Popup=OpenLayers.Class({events:null,id:"",lonlat:null,div:null,contentSize:null,size:null,contentHTML:null,backgroundColor:"",opacity:"",border:"",contentDiv:null,groupDiv:null,closeDiv:null,autoSize:!1,minSize:null,maxSize:null,displayClass:"olPopup",contentDisplayClass:"olPopupContent",padding:0,disableFirefoxOverflowHack:!1,fixPadding:function(){"number"==typeof this.padding&&(this.padding=new OpenLayers.Bounds(this.padding,this.padding,this.padding,this.padding))},panMapIfOutOfView:!1,
keepInMap:!1,closeOnMove:!1,map:null,initialize:function(a,b,c,d,e,f){null==a&&(a=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_"));this.id=a;this.lonlat=b;this.contentSize=null!=c?c:new OpenLayers.Size(OpenLayers.Popup.WIDTH,OpenLayers.Popup.HEIGHT);null!=d&&(this.contentHTML=d);this.backgroundColor=OpenLayers.Popup.COLOR;this.opacity=OpenLayers.Popup.OPACITY;this.border=OpenLayers.Popup.BORDER;this.div=OpenLayers.Util.createDiv(this.id,null,null,null,null,null,"hidden");this.div.className=this.displayClass;
this.groupDiv=OpenLayers.Util.createDiv(this.id+"_GroupDiv",null,null,null,"relative",null,"hidden");a=this.div.id+"_contentDiv";this.contentDiv=OpenLayers.Util.createDiv(a,null,this.contentSize.clone(),null,"relative");this.contentDiv.className=this.contentDisplayClass;this.groupDiv.appendChild(this.contentDiv);this.div.appendChild(this.groupDiv);e&&this.addCloseBox(f);this.registerEvents()},destroy:function(){this.border=this.opacity=this.backgroundColor=this.contentHTML=this.size=this.lonlat=this.id=
null;this.closeOnMove&&this.map&&this.map.events.unregister("movestart",this,this.hide);this.events.destroy();this.events=null;this.closeDiv&&(OpenLayers.Event.stopObservingElement(this.closeDiv),this.groupDiv.removeChild(this.closeDiv));this.closeDiv=null;this.div.removeChild(this.groupDiv);this.groupDiv=null;null!=this.map&&this.map.removePopup(this);this.panMapIfOutOfView=this.padding=this.maxSize=this.minSize=this.autoSize=this.div=this.map=null},draw:function(a){null==a&&null!=this.lonlat&&null!=
this.map&&(a=this.map.getLayerPxFromLonLat(this.lonlat));this.closeOnMove&&this.map.events.register("movestart",this,this.hide);this.disableFirefoxOverflowHack||"firefox"!=OpenLayers.BROWSER_NAME||(this.map.events.register("movestart",this,function(){var a=document.defaultView.getComputedStyle(this.contentDiv,null).getPropertyValue("overflow");"hidden"!=a&&(this.contentDiv._oldOverflow=a,this.contentDiv.style.overflow="hidden")}),this.map.events.register("moveend",this,function(){var a=this.contentDiv._oldOverflow;
a&&(this.contentDiv.style.overflow=a,this.contentDiv._oldOverflow=null)}));this.moveTo(a);this.autoSize||this.size||this.setSize(this.contentSize);this.setBackgroundColor();this.setOpacity();this.setBorder();this.setContentHTML();this.panMapIfOutOfView&&this.panIntoView();return this.div},updatePosition:function(){if(this.lonlat&&this.map){var a=this.map.getLayerPxFromLonLat(this.lonlat);a&&this.moveTo(a)}},moveTo:function(a){null!=a&&null!=this.div&&(this.div.style.left=a.x+"px",this.div.style.top=
a.y+"px")},visible:function(){return OpenLayers.Element.visible(this.div)},toggle:function(){this.visible()?this.hide():this.show()},show:function(){this.div.style.display="";this.panMapIfOutOfView&&this.panIntoView()},hide:function(){this.div.style.display="none"},setSize:function(a){this.size=a.clone();var b=this.getContentDivPadding(),c=b.left+b.right,d=b.top+b.bottom;this.fixPadding();c+=this.padding.left+this.padding.right;d+=this.padding.top+this.padding.bottom;if(this.closeDiv)var e=parseInt(this.closeDiv.style.width),
c=c+(e+b.right);this.size.w+=c;this.size.h+=d;"msie"==OpenLayers.BROWSER_NAME&&(this.contentSize.w+=b.left+b.right,this.contentSize.h+=b.bottom+b.top);null!=this.div&&(this.div.style.width=this.size.w+"px",this.div.style.height=this.size.h+"px");null!=this.contentDiv&&(this.contentDiv.style.width=a.w+"px",this.contentDiv.style.height=a.h+"px")},updateSize:function(){var a="<div class='"+this.contentDisplayClass+"'>"+this.contentDiv.innerHTML+"</div>",b=this.map?this.map.div:document.body,c=OpenLayers.Util.getRenderedDimensions(a,
null,{displayClass:this.displayClass,containerElement:b}),d=this.getSafeContentSize(c),e=null;d.equals(c)?e=c:(c={w:d.w<c.w?d.w:null,h:d.h<c.h?d.h:null},c.w&&c.h?e=d:(a=OpenLayers.Util.getRenderedDimensions(a,c,{displayClass:this.contentDisplayClass,containerElement:b}),"hidden"!=OpenLayers.Element.getStyle(this.contentDiv,"overflow")&&a.equals(d)&&(d=OpenLayers.Util.getScrollbarWidth(),c.w?a.h+=d:a.w+=d),e=this.getSafeContentSize(a)));this.setSize(e)},setBackgroundColor:function(a){void 0!=a&&(this.backgroundColor=
a);null!=this.div&&(this.div.style.backgroundColor=this.backgroundColor)},setOpacity:function(a){void 0!=a&&(this.opacity=a);null!=this.div&&(this.div.style.opacity=this.opacity,this.div.style.filter="alpha(opacity="+100*this.opacity+")")},setBorder:function(a){void 0!=a&&(this.border=a);null!=this.div&&(this.div.style.border=this.border)},setContentHTML:function(a){null!=a&&(this.contentHTML=a);null!=this.contentDiv&&(null!=this.contentHTML&&this.contentHTML!=this.contentDiv.innerHTML)&&(this.contentDiv.innerHTML=
this.contentHTML,this.autoSize&&(this.registerImageListeners(),this.updateSize()))},registerImageListeners:function(){for(var a=function(){null!==this.popup.id&&(this.popup.updateSize(),this.popup.visible()&&this.popup.panMapIfOutOfView&&this.popup.panIntoView(),OpenLayers.Event.stopObserving(this.img,"load",this.img._onImgLoad))},b=this.contentDiv.getElementsByTagName("img"),c=0,d=b.length;c<d;c++){var e=b[c];if(0==e.width||0==e.height)e._onImgLoad=OpenLayers.Function.bind(a,{popup:this,img:e}),
OpenLayers.Event.observe(e,"load",e._onImgLoad)}},getSafeContentSize:function(a){a=a.clone();var b=this.getContentDivPadding(),c=b.left+b.right,d=b.top+b.bottom;this.fixPadding();c+=this.padding.left+this.padding.right;d+=this.padding.top+this.padding.bottom;if(this.closeDiv)var e=parseInt(this.closeDiv.style.width),c=c+(e+b.right);this.minSize&&(a.w=Math.max(a.w,this.minSize.w-c),a.h=Math.max(a.h,this.minSize.h-d));this.maxSize&&(a.w=Math.min(a.w,this.maxSize.w-c),a.h=Math.min(a.h,this.maxSize.h-
d));if(this.map&&this.map.size){e=b=0;if(this.keepInMap&&!this.panMapIfOutOfView)switch(e=this.map.getPixelFromLonLat(this.lonlat),this.relativePosition){case "tr":b=e.x;e=this.map.size.h-e.y;break;case "tl":b=this.map.size.w-e.x;e=this.map.size.h-e.y;break;case "bl":b=this.map.size.w-e.x;e=e.y;break;case "br":b=e.x;e=e.y;break;default:b=e.x,e=this.map.size.h-e.y}d=this.map.size.h-this.map.paddingForPopups.top-this.map.paddingForPopups.bottom-d-e;a.w=Math.min(a.w,this.map.size.w-this.map.paddingForPopups.left-
this.map.paddingForPopups.right-c-b);a.h=Math.min(a.h,d)}return a},getContentDivPadding:function(){var a=this._contentDivPadding;a||(null==this.div.parentNode&&(this.div.style.display="none",document.body.appendChild(this.div)),this._contentDivPadding=a=new OpenLayers.Bounds(OpenLayers.Element.getStyle(this.contentDiv,"padding-left"),OpenLayers.Element.getStyle(this.contentDiv,"padding-bottom"),OpenLayers.Element.getStyle(this.contentDiv,"padding-right"),OpenLayers.Element.getStyle(this.contentDiv,
"padding-top")),this.div.parentNode==document.body&&(document.body.removeChild(this.div),this.div.style.display=""));return a},addCloseBox:function(a){this.closeDiv=OpenLayers.Util.createDiv(this.id+"_close",null,{w:17,h:17});this.closeDiv.className="olPopupCloseBox";var b=this.getContentDivPadding();this.closeDiv.style.right=b.right+"px";this.closeDiv.style.top=b.top+"px";this.groupDiv.appendChild(this.closeDiv);a=a||function(a){this.hide();OpenLayers.Event.stop(a)};OpenLayers.Event.observe(this.closeDiv,
"touchend",OpenLayers.Function.bindAsEventListener(a,this));OpenLayers.Event.observe(this.closeDiv,"click",OpenLayers.Function.bindAsEventListener(a,this))},panIntoView:function(){var a=this.map.getSize(),b=this.map.getViewPortPxFromLayerPx(new OpenLayers.Pixel(parseInt(this.div.style.left),parseInt(this.div.style.top))),c=b.clone();b.x<this.map.paddingForPopups.left?c.x=this.map.paddingForPopups.left:b.x+this.size.w>a.w-this.map.paddingForPopups.right&&(c.x=a.w-this.map.paddingForPopups.right-this.size.w);
b.y<this.map.paddingForPopups.top?c.y=this.map.paddingForPopups.top:b.y+this.size.h>a.h-this.map.paddingForPopups.bottom&&(c.y=a.h-this.map.paddingForPopups.bottom-this.size.h);this.map.pan(b.x-c.x,b.y-c.y)},registerEvents:function(){this.events=new OpenLayers.Events(this,this.div,null,!0);this.events.on({mousedown:this.onmousedown,mousemove:this.onmousemove,mouseup:this.onmouseup,click:this.onclick,mouseout:this.onmouseout,dblclick:this.ondblclick,touchstart:function(a){OpenLayers.Event.stop(a,!0)},
scope:this})},onmousedown:function(a){this.mousedown=!0;OpenLayers.Event.stop(a,!0)},onmousemove:function(a){this.mousedown&&OpenLayers.Event.stop(a,!0)},onmouseup:function(a){this.mousedown&&(this.mousedown=!1,OpenLayers.Event.stop(a,!0))},onclick:function(a){OpenLayers.Event.stop(a,!0)},onmouseout:function(a){this.mousedown=!1},ondblclick:function(a){OpenLayers.Event.stop(a,!0)},CLASS_NAME:"OpenLayers.Popup"});OpenLayers.Popup.WIDTH=200;OpenLayers.Popup.HEIGHT=200;OpenLayers.Popup.COLOR="white";
OpenLayers.Popup.OPACITY=1;OpenLayers.Popup.BORDER="0px";OpenLayers.Control.ScaleLine=OpenLayers.Class(OpenLayers.Control,{maxWidth:100,topOutUnits:"km",topInUnits:"m",bottomOutUnits:"mi",bottomInUnits:"ft",eTop:null,eBottom:null,geodesic:!1,draw:function(){OpenLayers.Control.prototype.draw.apply(this,arguments);this.eTop||(this.eTop=document.createElement("div"),this.eTop.className=this.displayClass+"Top",this.div.appendChild(this.eTop),this.eTop.style.visibility=""==this.topOutUnits||""==this.topInUnits?"hidden":"visible",this.eBottom=document.createElement("div"),
this.eBottom.className=this.displayClass+"Bottom",this.div.appendChild(this.eBottom),this.eBottom.style.visibility=""==this.bottomOutUnits||""==this.bottomInUnits?"hidden":"visible");this.map.events.register("moveend",this,this.update);this.update();return this.div},getBarLen:function(a){var b=parseInt(Math.log(a)/Math.log(10)),b=Math.pow(10,b);a=parseInt(a/b);return(5<a?5:2<a?2:1)*b},update:function(){var a=this.map.getResolution();if(a){var b=this.map.getUnits(),c=OpenLayers.INCHES_PER_UNIT,d=this.maxWidth*
a*c[b],e=1;!0===this.geodesic&&(e=(this.map.getGeodesicPixelSize().w||1E-6)*this.maxWidth/(d/c.km),d*=e);var f,g;1E5<d?(f=this.topOutUnits,g=this.bottomOutUnits):(f=this.topInUnits,g=this.bottomInUnits);var h=d/c[f],k=d/c[g],d=this.getBarLen(h),l=this.getBarLen(k),h=d/c[b]*c[f],k=l/c[b]*c[g],b=h/a/e,a=k/a/e;"visible"==this.eBottom.style.visibility&&(this.eBottom.style.width=Math.round(a)+"px",this.eBottom.innerHTML=l+" "+g);"visible"==this.eTop.style.visibility&&(this.eTop.style.width=Math.round(b)+
"px",this.eTop.innerHTML=d+" "+f)}},CLASS_NAME:"OpenLayers.Control.ScaleLine"});OpenLayers.Icon=OpenLayers.Class({url:null,size:null,offset:null,calculateOffset:null,imageDiv:null,px:null,initialize:function(a,b,c,d){this.url=a;this.size=b||{w:20,h:20};this.offset=c||{x:-(this.size.w/2),y:-(this.size.h/2)};this.calculateOffset=d;a=OpenLayers.Util.createUniqueID("OL_Icon_");this.imageDiv=OpenLayers.Util.createAlphaImageDiv(a)},destroy:function(){this.erase();OpenLayers.Event.stopObservingElement(this.imageDiv.firstChild);this.imageDiv.innerHTML="";this.imageDiv=null},clone:function(){return new OpenLayers.Icon(this.url,
this.size,this.offset,this.calculateOffset)},setSize:function(a){null!=a&&(this.size=a);this.draw()},setUrl:function(a){null!=a&&(this.url=a);this.draw()},draw:function(a){OpenLayers.Util.modifyAlphaImageDiv(this.imageDiv,null,null,this.size,this.url,"absolute");this.moveTo(a);return this.imageDiv},erase:function(){null!=this.imageDiv&&null!=this.imageDiv.parentNode&&OpenLayers.Element.remove(this.imageDiv)},setOpacity:function(a){OpenLayers.Util.modifyAlphaImageDiv(this.imageDiv,null,null,null,null,
null,null,null,a)},moveTo:function(a){null!=a&&(this.px=a);null!=this.imageDiv&&(null==this.px?this.display(!1):(this.calculateOffset&&(this.offset=this.calculateOffset(this.size)),OpenLayers.Util.modifyAlphaImageDiv(this.imageDiv,null,{x:this.px.x+this.offset.x,y:this.px.y+this.offset.y})))},display:function(a){this.imageDiv.style.display=a?"":"none"},isDrawn:function(){return this.imageDiv&&this.imageDiv.parentNode&&11!=this.imageDiv.parentNode.nodeType},CLASS_NAME:"OpenLayers.Icon"});OpenLayers.Marker=OpenLayers.Class({icon:null,lonlat:null,events:null,map:null,initialize:function(a,b){this.lonlat=a;var c=b?b:OpenLayers.Marker.defaultIcon();null==this.icon?this.icon=c:(this.icon.url=c.url,this.icon.size=c.size,this.icon.offset=c.offset,this.icon.calculateOffset=c.calculateOffset);this.events=new OpenLayers.Events(this,this.icon.imageDiv)},destroy:function(){this.erase();this.map=null;this.events.destroy();this.events=null;null!=this.icon&&(this.icon.destroy(),this.icon=null)},
draw:function(a){return this.icon.draw(a)},erase:function(){null!=this.icon&&this.icon.erase()},moveTo:function(a){null!=a&&null!=this.icon&&this.icon.moveTo(a);this.lonlat=this.map.getLonLatFromLayerPx(a)},isDrawn:function(){return this.icon&&this.icon.isDrawn()},onScreen:function(){var a=!1;this.map&&(a=this.map.getExtent().containsLonLat(this.lonlat));return a},inflate:function(a){this.icon&&this.icon.setSize({w:this.icon.size.w*a,h:this.icon.size.h*a})},setOpacity:function(a){this.icon.setOpacity(a)},
setUrl:function(a){this.icon.setUrl(a)},display:function(a){this.icon.display(a)},CLASS_NAME:"OpenLayers.Marker"});OpenLayers.Marker.defaultIcon=function(){return new OpenLayers.Icon(OpenLayers.Util.getImageLocation("marker.png"),{w:21,h:25},{x:-10.5,y:-25})};OpenLayers.Layer.TileCache=OpenLayers.Class(OpenLayers.Layer.Grid,{isBaseLayer:!0,format:"image/png",serverResolutions:null,initialize:function(a,b,c,d){this.layername=c;OpenLayers.Layer.Grid.prototype.initialize.apply(this,[a,b,{},d]);this.extension=this.format.split("/")[1].toLowerCase();this.extension="jpg"==this.extension?"jpeg":this.extension},clone:function(a){null==a&&(a=new OpenLayers.Layer.TileCache(this.name,this.url,this.layername,this.getOptions()));return a=OpenLayers.Layer.Grid.prototype.clone.apply(this,
[a])},getURL:function(a){var b=this.getServerResolution(),c=this.maxExtent,d=this.tileSize,e=Math.round((a.left-c.left)/(b*d.w));a=Math.round((a.bottom-c.bottom)/(b*d.h));b=null!=this.serverResolutions?OpenLayers.Util.indexOf(this.serverResolutions,b):this.map.getZoom();e=[this.layername,OpenLayers.Number.zeroPad(b,2),OpenLayers.Number.zeroPad(parseInt(e/1E6),3),OpenLayers.Number.zeroPad(parseInt(e/1E3)%1E3,3),OpenLayers.Number.zeroPad(parseInt(e)%1E3,3),OpenLayers.Number.zeroPad(parseInt(a/1E6),
3),OpenLayers.Number.zeroPad(parseInt(a/1E3)%1E3,3),OpenLayers.Number.zeroPad(parseInt(a)%1E3,3)+"."+this.extension].join("/");b=this.url;OpenLayers.Util.isArray(b)&&(b=this.selectUrl(e,b));b="/"==b.charAt(b.length-1)?b:b+"/";return b+e},CLASS_NAME:"OpenLayers.Layer.TileCache"});OpenLayers.Strategy.Paging=OpenLayers.Class(OpenLayers.Strategy,{features:null,length:10,num:null,paging:!1,activate:function(){var a=OpenLayers.Strategy.prototype.activate.call(this);if(a)this.layer.events.on({beforefeaturesadded:this.cacheFeatures,scope:this});return a},deactivate:function(){var a=OpenLayers.Strategy.prototype.deactivate.call(this);a&&(this.clearCache(),this.layer.events.un({beforefeaturesadded:this.cacheFeatures,scope:this}));return a},cacheFeatures:function(a){this.paging||(this.clearCache(),
this.features=a.features,this.pageNext(a))},clearCache:function(){if(this.features)for(var a=0;a<this.features.length;++a)this.features[a].destroy();this.num=this.features=null},pageCount:function(){return Math.ceil((this.features?this.features.length:0)/this.length)},pageNum:function(){return this.num},pageLength:function(a){a&&0<a&&(this.length=a);return this.length},pageNext:function(a){var b=!1;this.features&&(null===this.num&&(this.num=-1),b=this.page((this.num+1)*this.length,a));return b},pagePrevious:function(){var a=
!1;this.features&&(null===this.num&&(this.num=this.pageCount()),a=this.page((this.num-1)*this.length));return a},page:function(a,b){var c=!1;if(this.features&&0<=a&&a<this.features.length){var d=Math.floor(a/this.length);d!=this.num&&(this.paging=!0,c=this.features.slice(a,a+this.length),this.layer.removeFeatures(this.layer.features),this.num=d,b&&b.features?b.features=c:this.layer.addFeatures(c),this.paging=!1,c=!0)}return c},CLASS_NAME:"OpenLayers.Strategy.Paging"});OpenLayers.Control.DragFeature=OpenLayers.Class(OpenLayers.Control,{geometryTypes:null,onStart:function(a,b){},onDrag:function(a,b){},onComplete:function(a,b){},onEnter:function(a){},onLeave:function(a){},documentDrag:!1,layer:null,feature:null,dragCallbacks:{},featureCallbacks:{},lastPixel:null,initialize:function(a,b){OpenLayers.Control.prototype.initialize.apply(this,[b]);this.layer=a;this.handlers={drag:new OpenLayers.Handler.Drag(this,OpenLayers.Util.extend({down:this.downFeature,move:this.moveFeature,
up:this.upFeature,out:this.cancel,done:this.doneDragging},this.dragCallbacks),{documentDrag:this.documentDrag}),feature:new OpenLayers.Handler.Feature(this,this.layer,OpenLayers.Util.extend({click:this.clickFeature,clickout:this.clickoutFeature,over:this.overFeature,out:this.outFeature},this.featureCallbacks),{geometryTypes:this.geometryTypes})}},clickFeature:function(a){this.handlers.feature.touch&&(!this.over&&this.overFeature(a))&&(this.handlers.drag.dragstart(this.handlers.feature.evt),this.handlers.drag.stopDown=
!1)},clickoutFeature:function(a){this.handlers.feature.touch&&this.over&&(this.outFeature(a),this.handlers.drag.stopDown=!0)},destroy:function(){this.layer=null;OpenLayers.Control.prototype.destroy.apply(this,[])},activate:function(){return this.handlers.feature.activate()&&OpenLayers.Control.prototype.activate.apply(this,arguments)},deactivate:function(){this.handlers.drag.deactivate();this.handlers.feature.deactivate();this.feature=null;this.dragging=!1;this.lastPixel=null;OpenLayers.Element.removeClass(this.map.viewPortDiv,
this.displayClass+"Over");return OpenLayers.Control.prototype.deactivate.apply(this,arguments)},overFeature:function(a){var b=!1;this.handlers.drag.dragging?this.over=this.feature.id==a.id?!0:!1:(this.feature=a,this.handlers.drag.activate(),this.over=b=!0,OpenLayers.Element.addClass(this.map.viewPortDiv,this.displayClass+"Over"),this.onEnter(a));return b},downFeature:function(a){this.lastPixel=a;this.onStart(this.feature,a)},moveFeature:function(a){var b=this.map.getResolution();this.feature.geometry.move(b*
(a.x-this.lastPixel.x),b*(this.lastPixel.y-a.y));this.layer.drawFeature(this.feature);this.lastPixel=a;this.onDrag(this.feature,a)},upFeature:function(a){this.over||this.handlers.drag.deactivate()},doneDragging:function(a){this.onComplete(this.feature,a)},outFeature:function(a){this.handlers.drag.dragging?this.feature.id==a.id&&(this.over=!1):(this.over=!1,this.handlers.drag.deactivate(),OpenLayers.Element.removeClass(this.map.viewPortDiv,this.displayClass+"Over"),this.onLeave(a),this.feature=null)},
cancel:function(){this.handlers.drag.deactivate();this.over=!1},setMap:function(a){this.handlers.drag.setMap(a);this.handlers.feature.setMap(a);OpenLayers.Control.prototype.setMap.apply(this,arguments)},CLASS_NAME:"OpenLayers.Control.DragFeature"});OpenLayers.Control.TransformFeature=OpenLayers.Class(OpenLayers.Control,{geometryTypes:null,layer:null,preserveAspectRatio:!1,rotate:!0,feature:null,renderIntent:"temporary",rotationHandleSymbolizer:null,box:null,center:null,scale:1,ratio:1,rotation:0,handles:null,rotationHandles:null,dragControl:null,irregular:!1,initialize:function(a,b){OpenLayers.Control.prototype.initialize.apply(this,[b]);this.layer=a;this.rotationHandleSymbolizer||(this.rotationHandleSymbolizer={stroke:!1,pointRadius:10,fillOpacity:0,
cursor:"pointer"});this.createBox();this.createControl()},activate:function(){var a=!1;OpenLayers.Control.prototype.activate.apply(this,arguments)&&(this.dragControl.activate(),this.layer.addFeatures([this.box]),this.rotate&&this.layer.addFeatures(this.rotationHandles),this.layer.addFeatures(this.handles),a=!0);return a},deactivate:function(){var a=!1;OpenLayers.Control.prototype.deactivate.apply(this,arguments)&&(this.layer.removeFeatures(this.handles),this.rotate&&this.layer.removeFeatures(this.rotationHandles),
this.layer.removeFeatures([this.box]),this.dragControl.deactivate(),a=!0);return a},setMap:function(a){this.dragControl.setMap(a);OpenLayers.Control.prototype.setMap.apply(this,arguments)},setFeature:function(a,b){b=OpenLayers.Util.applyDefaults(b,{rotation:0,scale:1,ratio:1});var c=this.rotation,d=this.center;OpenLayers.Util.extend(this,b);if(!1!==this.events.triggerEvent("beforesetfeature",{feature:a})){this.feature=a;this.activate();this._setfeature=!0;var e=this.feature.geometry.getBounds();this.box.move(e.getCenterLonLat());
this.box.geometry.rotate(-c,d);this._angle=0;this.rotation?(c=a.geometry.clone(),c.rotate(-this.rotation,this.center),c=new OpenLayers.Feature.Vector(c.getBounds().toGeometry()),c.geometry.rotate(this.rotation,this.center),this.box.geometry.rotate(this.rotation,this.center),this.box.move(c.geometry.getBounds().getCenterLonLat()),c=c.geometry.components[0].components[0].getBounds().getCenterLonLat()):c=new OpenLayers.LonLat(e.left,e.bottom);this.handles[0].move(c);delete this._setfeature;this.events.triggerEvent("setfeature",
{feature:a})}},unsetFeature:function(){this.active?this.deactivate():(this.feature=null,this.rotation=0,this.ratio=this.scale=1)},createBox:function(){var a=this;this.center=new OpenLayers.Geometry.Point(0,0);this.box=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.LineString([new OpenLayers.Geometry.Point(-1,-1),new OpenLayers.Geometry.Point(0,-1),new OpenLayers.Geometry.Point(1,-1),new OpenLayers.Geometry.Point(1,0),new OpenLayers.Geometry.Point(1,1),new OpenLayers.Geometry.Point(0,1),new OpenLayers.Geometry.Point(-1,
1),new OpenLayers.Geometry.Point(-1,0),new OpenLayers.Geometry.Point(-1,-1)]),null,"string"==typeof this.renderIntent?null:this.renderIntent);this.box.geometry.move=function(b,c){a._moving=!0;OpenLayers.Geometry.LineString.prototype.move.apply(this,arguments);a.center.move(b,c);delete a._moving};for(var b=function(a,b){OpenLayers.Geometry.Point.prototype.move.apply(this,arguments);this._rotationHandle&&this._rotationHandle.geometry.move(a,b);this._handle.geometry.move(a,b)},c=function(a,b,c){OpenLayers.Geometry.Point.prototype.resize.apply(this,
arguments);this._rotationHandle&&this._rotationHandle.geometry.resize(a,b,c);this._handle.geometry.resize(a,b,c)},d=function(a,b){OpenLayers.Geometry.Point.prototype.rotate.apply(this,arguments);this._rotationHandle&&this._rotationHandle.geometry.rotate(a,b);this._handle.geometry.rotate(a,b)},e=function(b,c){var d=this.x,e=this.y;OpenLayers.Geometry.Point.prototype.move.call(this,b,c);if(!a._moving){var f=a.dragControl.handlers.drag.evt,g=!(!a._setfeature&&a.preserveAspectRatio)&&!(f&&f.shiftKey),
h=new OpenLayers.Geometry.Point(d,e),f=a.center;this.rotate(-a.rotation,f);h.rotate(-a.rotation,f);var k=this.x-f.x,l=this.y-f.y,m=k-(this.x-h.x),n=l-(this.y-h.y);a.irregular&&!a._setfeature&&(k-=(this.x-h.x)/2,l-=(this.y-h.y)/2);this.x=d;this.y=e;h=1;g?(l=1E-5>Math.abs(n)?1:l/n,h=(1E-5>Math.abs(m)?1:k/m)/l):(m=Math.sqrt(m*m+n*n),l=Math.sqrt(k*k+l*l)/m);a._moving=!0;a.box.geometry.rotate(-a.rotation,f);delete a._moving;a.box.geometry.resize(l,f,h);a.box.geometry.rotate(a.rotation,f);a.transformFeature({scale:l,
ratio:h});a.irregular&&!a._setfeature&&(k=f.clone(),k.x+=1E-5>Math.abs(d-f.x)?0:this.x-d,k.y+=1E-5>Math.abs(e-f.y)?0:this.y-e,a.box.geometry.move(this.x-d,this.y-e),a.transformFeature({center:k}))}},f=function(b,c){var d=this.x,e=this.y;OpenLayers.Geometry.Point.prototype.move.call(this,b,c);if(!a._moving){var f=a.dragControl.handlers.drag.evt,f=f&&f.shiftKey?45:1,g=a.center,h=this.x-g.x,k=this.y-g.y;this.x=d;this.y=e;d=Math.atan2(k-c,h-b);d=Math.atan2(k,h)-d;d*=180/Math.PI;a._angle=(a._angle+d)%
360;d=a.rotation%f;if(Math.abs(a._angle)>=f||0!==d)d=Math.round(a._angle/f)*f-d,a._angle=0,a.box.geometry.rotate(d,g),a.transformFeature({rotation:d})}},g=Array(8),h=Array(4),k,l,m,n="sw s se e ne n nw w".split(" "),p=0;8>p;++p)k=this.box.geometry.components[p],l=new OpenLayers.Feature.Vector(k.clone(),{role:n[p]+"-resize"},"string"==typeof this.renderIntent?null:this.renderIntent),0==p%2&&(m=new OpenLayers.Feature.Vector(k.clone(),{role:n[p]+"-rotate"},"string"==typeof this.rotationHandleSymbolizer?
null:this.rotationHandleSymbolizer),m.geometry.move=f,k._rotationHandle=m,h[p/2]=m),k.move=b,k.resize=c,k.rotate=d,l.geometry.move=e,k._handle=l,g[p]=l;this.rotationHandles=h;this.handles=g},createControl:function(){var a=this;this.dragControl=new OpenLayers.Control.DragFeature(this.layer,{documentDrag:!0,moveFeature:function(b){this.feature===a.feature&&(this.feature=a.box);OpenLayers.Control.DragFeature.prototype.moveFeature.apply(this,arguments)},onDrag:function(b,c){b===a.box&&a.transformFeature({center:a.center})},
onStart:function(b,c){var d=!a.geometryTypes||-1!==OpenLayers.Util.indexOf(a.geometryTypes,b.geometry.CLASS_NAME),e=OpenLayers.Util.indexOf(a.handles,b),e=e+OpenLayers.Util.indexOf(a.rotationHandles,b);b!==a.feature&&(b!==a.box&&-2==e&&d)&&a.setFeature(b)},onComplete:function(b,c){a.events.triggerEvent("transformcomplete",{feature:a.feature})}})},drawHandles:function(){for(var a=this.layer,b=0;8>b;++b)this.rotate&&0===b%2&&a.drawFeature(this.rotationHandles[b/2],this.rotationHandleSymbolizer),a.drawFeature(this.handles[b],
this.renderIntent)},transformFeature:function(a){if(!this._setfeature){this.scale*=a.scale||1;this.ratio*=a.ratio||1;var b=this.rotation;this.rotation=(this.rotation+(a.rotation||0))%360;if(!1!==this.events.triggerEvent("beforetransform",a)){var c=this.feature,d=c.geometry,e=this.center;d.rotate(-b,e);a.scale||a.ratio?d.resize(a.scale,e,a.ratio):a.center&&c.move(a.center.getBounds().getCenterLonLat());d.rotate(this.rotation,e);this.layer.drawFeature(c);c.toState(OpenLayers.State.UPDATE);this.events.triggerEvent("transform",
a)}}this.layer.drawFeature(this.box,this.renderIntent);this.drawHandles()},destroy:function(){for(var a,b=0;8>b;++b)a=this.box.geometry.components[b],a._handle.destroy(),a._handle=null,a._rotationHandle&&a._rotationHandle.destroy(),a._rotationHandle=null;this.rotationHandles=this.rotationHandleSymbolizer=this.handles=this.feature=this.center=null;this.box.destroy();this.layer=this.box=null;this.dragControl.destroy();this.dragControl=null;OpenLayers.Control.prototype.destroy.apply(this,arguments)},
CLASS_NAME:"OpenLayers.Control.TransformFeature"});OpenLayers.Handler.Box=OpenLayers.Class(OpenLayers.Handler,{dragHandler:null,boxDivClassName:"olHandlerBoxZoomBox",boxOffsets:null,initialize:function(a,b,c){OpenLayers.Handler.prototype.initialize.apply(this,arguments);this.dragHandler=new OpenLayers.Handler.Drag(this,{down:this.startBox,move:this.moveBox,out:this.removeBox,up:this.endBox},{keyMask:this.keyMask})},destroy:function(){OpenLayers.Handler.prototype.destroy.apply(this,arguments);this.dragHandler&&(this.dragHandler.destroy(),this.dragHandler=
null)},setMap:function(a){OpenLayers.Handler.prototype.setMap.apply(this,arguments);this.dragHandler&&this.dragHandler.setMap(a)},startBox:function(a){this.callback("start",[]);this.zoomBox=OpenLayers.Util.createDiv("zoomBox",{x:-9999,y:-9999});this.zoomBox.className=this.boxDivClassName;this.zoomBox.style.zIndex=this.map.Z_INDEX_BASE.Popup-1;this.map.viewPortDiv.appendChild(this.zoomBox);OpenLayers.Element.addClass(this.map.viewPortDiv,"olDrawBox")},moveBox:function(a){var b=this.dragHandler.start.x,
c=this.dragHandler.start.y,d=Math.abs(b-a.x),e=Math.abs(c-a.y),f=this.getBoxOffsets();this.zoomBox.style.width=d+f.width+1+"px";this.zoomBox.style.height=e+f.height+1+"px";this.zoomBox.style.left=(a.x<b?b-d-f.left:b-f.left)+"px";this.zoomBox.style.top=(a.y<c?c-e-f.top:c-f.top)+"px"},endBox:function(a){var b;if(5<Math.abs(this.dragHandler.start.x-a.x)||5<Math.abs(this.dragHandler.start.y-a.y)){var c=this.dragHandler.start;b=Math.min(c.y,a.y);var d=Math.max(c.y,a.y),e=Math.min(c.x,a.x);a=Math.max(c.x,
a.x);b=new OpenLayers.Bounds(e,d,a,b)}else b=this.dragHandler.start.clone();this.removeBox();this.callback("done",[b])},removeBox:function(){this.map.viewPortDiv.removeChild(this.zoomBox);this.boxOffsets=this.zoomBox=null;OpenLayers.Element.removeClass(this.map.viewPortDiv,"olDrawBox")},activate:function(){return OpenLayers.Handler.prototype.activate.apply(this,arguments)?(this.dragHandler.activate(),!0):!1},deactivate:function(){return OpenLayers.Handler.prototype.deactivate.apply(this,arguments)?
(this.dragHandler.deactivate()&&this.zoomBox&&this.removeBox(),!0):!1},getBoxOffsets:function(){if(!this.boxOffsets){var a=document.createElement("div");a.style.position="absolute";a.style.border="1px solid black";a.style.width="3px";document.body.appendChild(a);var b=3==a.clientWidth;document.body.removeChild(a);var a=parseInt(OpenLayers.Element.getStyle(this.zoomBox,"border-left-width")),c=parseInt(OpenLayers.Element.getStyle(this.zoomBox,"border-right-width")),d=parseInt(OpenLayers.Element.getStyle(this.zoomBox,
"border-top-width")),e=parseInt(OpenLayers.Element.getStyle(this.zoomBox,"border-bottom-width"));this.boxOffsets={left:a,right:c,top:d,bottom:e,width:!1===b?a+c:0,height:!1===b?d+e:0}}return this.boxOffsets},CLASS_NAME:"OpenLayers.Handler.Box"});OpenLayers.Control.ZoomBox=OpenLayers.Class(OpenLayers.Control,{type:OpenLayers.Control.TYPE_TOOL,out:!1,keyMask:null,alwaysZoom:!1,zoomOnClick:!0,draw:function(){this.handler=new OpenLayers.Handler.Box(this,{done:this.zoomBox},{keyMask:this.keyMask})},zoomBox:function(a){if(a instanceof OpenLayers.Bounds){var b,c=a.getCenterPixel();if(this.out){b=Math.min(this.map.size.h/(a.bottom-a.top),this.map.size.w/(a.right-a.left));var d=this.map.getExtent(),e=this.map.getLonLatFromPixel(c),f=e.lon-d.getWidth()/
2*b;a=e.lon+d.getWidth()/2*b;var g=e.lat-d.getHeight()/2*b;b=e.lat+d.getHeight()/2*b;b=new OpenLayers.Bounds(f,g,a,b)}else f=this.map.getLonLatFromPixel({x:a.left,y:a.bottom}),a=this.map.getLonLatFromPixel({x:a.right,y:a.top}),b=new OpenLayers.Bounds(f.lon,f.lat,a.lon,a.lat);f=this.map.getZoom();g=this.map.getSize();a=g.w/2;g=g.h/2;b=this.map.getZoomForExtent(b);d=this.map.getResolution();e=this.map.getResolutionForZoom(b);d==e?this.map.setCenter(this.map.getLonLatFromPixel(c)):this.map.zoomTo(b,
{x:(d*c.x-e*a)/(d-e),y:(d*c.y-e*g)/(d-e)});f==this.map.getZoom()&&!0==this.alwaysZoom&&this.map.zoomTo(f+(this.out?-1:1))}else this.zoomOnClick&&(this.out?this.map.zoomTo(this.map.getZoom()-1,a):this.map.zoomTo(this.map.getZoom()+1,a))},CLASS_NAME:"OpenLayers.Control.ZoomBox"});OpenLayers.Control.DragPan=OpenLayers.Class(OpenLayers.Control,{type:OpenLayers.Control.TYPE_TOOL,panned:!1,interval:0,documentDrag:!1,kinetic:null,enableKinetic:!0,kineticInterval:10,draw:function(){if(this.enableKinetic&&OpenLayers.Kinetic){var a={interval:this.kineticInterval};"object"===typeof this.enableKinetic&&(a=OpenLayers.Util.extend(a,this.enableKinetic));this.kinetic=new OpenLayers.Kinetic(a)}this.handler=new OpenLayers.Handler.Drag(this,{move:this.panMap,done:this.panMapDone,down:this.panMapStart},
{interval:this.interval,documentDrag:this.documentDrag})},panMapStart:function(){this.kinetic&&this.kinetic.begin()},panMap:function(a){this.kinetic&&this.kinetic.update(a);this.panned=!0;this.map.pan(this.handler.last.x-a.x,this.handler.last.y-a.y,{dragging:!0,animate:!1})},panMapDone:function(a){if(this.panned){var b=null;this.kinetic&&(b=this.kinetic.end(a));this.map.pan(this.handler.last.x-a.x,this.handler.last.y-a.y,{dragging:!!b,animate:!1});if(b){var c=this;this.kinetic.move(b,function(a,b,
f){c.map.pan(a,b,{dragging:!f,animate:!1})})}this.panned=!1}},CLASS_NAME:"OpenLayers.Control.DragPan"});OpenLayers.Control.Navigation=OpenLayers.Class(OpenLayers.Control,{dragPan:null,dragPanOptions:null,pinchZoom:null,pinchZoomOptions:null,documentDrag:!1,zoomBox:null,zoomBoxEnabled:!0,zoomWheelEnabled:!0,mouseWheelOptions:null,handleRightClicks:!1,zoomBoxKeyMask:OpenLayers.Handler.MOD_SHIFT,autoActivate:!0,initialize:function(a){this.handlers={};OpenLayers.Control.prototype.initialize.apply(this,arguments)},destroy:function(){this.deactivate();this.dragPan&&this.dragPan.destroy();this.dragPan=null;
this.zoomBox&&this.zoomBox.destroy();this.zoomBox=null;this.pinchZoom&&this.pinchZoom.destroy();this.pinchZoom=null;OpenLayers.Control.prototype.destroy.apply(this,arguments)},activate:function(){this.dragPan.activate();this.zoomWheelEnabled&&this.handlers.wheel.activate();this.handlers.click.activate();this.zoomBoxEnabled&&this.zoomBox.activate();this.pinchZoom&&this.pinchZoom.activate();return OpenLayers.Control.prototype.activate.apply(this,arguments)},deactivate:function(){this.pinchZoom&&this.pinchZoom.deactivate();
this.zoomBox.deactivate();this.dragPan.deactivate();this.handlers.click.deactivate();this.handlers.wheel.deactivate();return OpenLayers.Control.prototype.deactivate.apply(this,arguments)},draw:function(){this.handleRightClicks&&(this.map.viewPortDiv.oncontextmenu=OpenLayers.Function.False);this.handlers.click=new OpenLayers.Handler.Click(this,{click:this.defaultClick,dblclick:this.defaultDblClick,dblrightclick:this.defaultDblRightClick},{"double":!0,stopDouble:!0});this.dragPan=new OpenLayers.Control.DragPan(OpenLayers.Util.extend({map:this.map,
documentDrag:this.documentDrag},this.dragPanOptions));this.zoomBox=new OpenLayers.Control.ZoomBox({map:this.map,keyMask:this.zoomBoxKeyMask});this.dragPan.draw();this.zoomBox.draw();this.handlers.wheel=new OpenLayers.Handler.MouseWheel(this,{up:this.wheelUp,down:this.wheelDown},OpenLayers.Util.extend(this.map.fractionalZoom?{}:{cumulative:!1,interval:50,maxDelta:6},this.mouseWheelOptions));OpenLayers.Control.PinchZoom&&(this.pinchZoom=new OpenLayers.Control.PinchZoom(OpenLayers.Util.extend({map:this.map},
this.pinchZoomOptions)))},defaultClick:function(a){a.lastTouches&&2==a.lastTouches.length&&this.map.zoomOut()},defaultDblClick:function(a){this.map.zoomTo(this.map.zoom+1,a.xy)},defaultDblRightClick:function(a){this.map.zoomTo(this.map.zoom-1,a.xy)},wheelChange:function(a,b){this.map.fractionalZoom||(b=Math.round(b));var c=this.map.getZoom(),d;d=Math.max(c+b,0);d=Math.min(d,this.map.getNumZoomLevels());d!==c&&this.map.zoomTo(d,a.xy)},wheelUp:function(a,b){this.wheelChange(a,b||1)},wheelDown:function(a,
b){this.wheelChange(a,b||-1)},disableZoomBox:function(){this.zoomBoxEnabled=!1;this.zoomBox.deactivate()},enableZoomBox:function(){this.zoomBoxEnabled=!0;this.active&&this.zoomBox.activate()},disableZoomWheel:function(){this.zoomWheelEnabled=!1;this.handlers.wheel.deactivate()},enableZoomWheel:function(){this.zoomWheelEnabled=!0;this.active&&this.handlers.wheel.activate()},CLASS_NAME:"OpenLayers.Control.Navigation"});OpenLayers.Control.DrawFeature=OpenLayers.Class(OpenLayers.Control,{layer:null,callbacks:null,multi:!1,featureAdded:function(){},initialize:function(a,b,c){OpenLayers.Control.prototype.initialize.apply(this,[c]);this.callbacks=OpenLayers.Util.extend({done:this.drawFeature,modify:function(a,b){this.layer.events.triggerEvent("sketchmodified",{vertex:a,feature:b})},create:function(a,b){this.layer.events.triggerEvent("sketchstarted",{vertex:a,feature:b})}},this.callbacks);this.layer=a;this.handlerOptions=
this.handlerOptions||{};this.handlerOptions.layerOptions=OpenLayers.Util.applyDefaults(this.handlerOptions.layerOptions,{renderers:a.renderers,rendererOptions:a.rendererOptions});"multi"in this.handlerOptions||(this.handlerOptions.multi=this.multi);if(a=this.layer.styleMap&&this.layer.styleMap.styles.temporary)this.handlerOptions.layerOptions=OpenLayers.Util.applyDefaults(this.handlerOptions.layerOptions,{styleMap:new OpenLayers.StyleMap({"default":a})});this.handler=new b(this,this.callbacks,this.handlerOptions)},
drawFeature:function(a){a=new OpenLayers.Feature.Vector(a);!1!==this.layer.events.triggerEvent("sketchcomplete",{feature:a})&&(a.state=OpenLayers.State.INSERT,this.layer.addFeatures([a]),this.featureAdded(a),this.events.triggerEvent("featureadded",{feature:a}))},insertXY:function(a,b){this.handler&&this.handler.line&&this.handler.insertXY(a,b)},insertDeltaXY:function(a,b){this.handler&&this.handler.line&&this.handler.insertDeltaXY(a,b)},insertDirectionLength:function(a,b){this.handler&&this.handler.line&&
this.handler.insertDirectionLength(a,b)},insertDeflectionLength:function(a,b){this.handler&&this.handler.line&&this.handler.insertDeflectionLength(a,b)},undo:function(){return this.handler.undo&&this.handler.undo()},redo:function(){return this.handler.redo&&this.handler.redo()},finishSketch:function(){this.handler.finishGeometry()},cancel:function(){this.handler.cancel()},CLASS_NAME:"OpenLayers.Control.DrawFeature"});OpenLayers.Handler.Polygon=OpenLayers.Class(OpenLayers.Handler.Path,{holeModifier:null,drawingHole:!1,polygon:null,createFeature:function(a){a=this.layer.getLonLatFromViewPortPx(a);a=new OpenLayers.Geometry.Point(a.lon,a.lat);this.point=new OpenLayers.Feature.Vector(a);this.line=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.LinearRing([this.point.geometry]));this.polygon=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Polygon([this.line.geometry]));this.callback("create",[this.point.geometry,
this.getSketch()]);this.point.geometry.clearBounds();this.layer.addFeatures([this.polygon,this.point],{silent:!0})},addPoint:function(a){if(!this.drawingHole&&this.holeModifier&&this.evt&&this.evt[this.holeModifier])for(var b=this.point.geometry,c=this.control.layer.features,d,e=c.length-1;0<=e;--e)if(d=c[e].geometry,(d instanceof OpenLayers.Geometry.Polygon||d instanceof OpenLayers.Geometry.MultiPolygon)&&d.intersects(b)){b=c[e];this.control.layer.removeFeatures([b],{silent:!0});this.control.layer.events.registerPriority("sketchcomplete",
this,this.finalizeInteriorRing);this.control.layer.events.registerPriority("sketchmodified",this,this.enforceTopology);b.geometry.addComponent(this.line.geometry);this.polygon=b;this.drawingHole=!0;break}OpenLayers.Handler.Path.prototype.addPoint.apply(this,arguments)},getCurrentPointIndex:function(){return this.line.geometry.components.length-2},enforceTopology:function(a){a=a.vertex;var b=this.line.geometry.components;this.polygon.geometry.intersects(a)||(b=b[b.length-3],a.x=b.x,a.y=b.y)},finishGeometry:function(){this.line.geometry.removeComponent(this.line.geometry.components[this.line.geometry.components.length-
2]);this.removePoint();this.finalize()},finalizeInteriorRing:function(){var a=this.line.geometry,b=0!==a.getArea();if(b){for(var c=this.polygon.geometry.components,d=c.length-2;0<=d;--d)if(a.intersects(c[d])){b=!1;break}if(b)a:for(d=c.length-2;0<d;--d)for(var e=c[d].components,f=0,g=e.length;f<g;++f)if(a.containsPoint(e[f])){b=!1;break a}}b?this.polygon.state!==OpenLayers.State.INSERT&&(this.polygon.state=OpenLayers.State.UPDATE):this.polygon.geometry.removeComponent(a);this.restoreFeature();return!1},
cancel:function(){this.drawingHole&&(this.polygon.geometry.removeComponent(this.line.geometry),this.restoreFeature(!0));return OpenLayers.Handler.Path.prototype.cancel.apply(this,arguments)},restoreFeature:function(a){this.control.layer.events.unregister("sketchcomplete",this,this.finalizeInteriorRing);this.control.layer.events.unregister("sketchmodified",this,this.enforceTopology);this.layer.removeFeatures([this.polygon],{silent:!0});this.control.layer.addFeatures([this.polygon],{silent:!0});this.drawingHole=
!1;a||this.control.layer.events.triggerEvent("sketchcomplete",{feature:this.polygon})},destroyFeature:function(a){OpenLayers.Handler.Path.prototype.destroyFeature.call(this,a);this.polygon=null},drawFeature:function(){this.layer.drawFeature(this.polygon,this.style);this.layer.drawFeature(this.point,this.style)},getSketch:function(){return this.polygon},getGeometry:function(){var a=this.polygon&&this.polygon.geometry;a&&this.multi&&(a=new OpenLayers.Geometry.MultiPolygon([a]));return a},CLASS_NAME:"OpenLayers.Handler.Polygon"});OpenLayers.Control.EditingToolbar=OpenLayers.Class(OpenLayers.Control.Panel,{citeCompliant:!1,initialize:function(a,b){OpenLayers.Control.Panel.prototype.initialize.apply(this,[b]);this.addControls([new OpenLayers.Control.Navigation]);var c=[new OpenLayers.Control.DrawFeature(a,OpenLayers.Handler.Point,{displayClass:"olControlDrawFeaturePoint",handlerOptions:{citeCompliant:this.citeCompliant}}),new OpenLayers.Control.DrawFeature(a,OpenLayers.Handler.Path,{displayClass:"olControlDrawFeaturePath",handlerOptions:{citeCompliant:this.citeCompliant}}),
new OpenLayers.Control.DrawFeature(a,OpenLayers.Handler.Polygon,{displayClass:"olControlDrawFeaturePolygon",handlerOptions:{citeCompliant:this.citeCompliant}})];this.addControls(c)},draw:function(){var a=OpenLayers.Control.Panel.prototype.draw.apply(this,arguments);null===this.defaultControl&&(this.defaultControl=this.controls[0]);return a},CLASS_NAME:"OpenLayers.Control.EditingToolbar"});OpenLayers.Strategy.BBOX=OpenLayers.Class(OpenLayers.Strategy,{bounds:null,resolution:null,ratio:2,resFactor:null,response:null,activate:function(){var a=OpenLayers.Strategy.prototype.activate.call(this);a&&(this.layer.events.on({moveend:this.update,refresh:this.update,visibilitychanged:this.update,scope:this}),this.update());return a},deactivate:function(){var a=OpenLayers.Strategy.prototype.deactivate.call(this);a&&this.layer.events.un({moveend:this.update,refresh:this.update,visibilitychanged:this.update,
scope:this});return a},update:function(a){var b=this.getMapBounds();null!==b&&(a&&a.force||this.layer.visibility&&this.layer.calculateInRange()&&this.invalidBounds(b))&&(this.calculateBounds(b),this.resolution=this.layer.map.getResolution(),this.triggerRead(a))},getMapBounds:function(){if(null===this.layer.map)return null;var a=this.layer.map.getExtent();a&&!this.layer.projection.equals(this.layer.map.getProjectionObject())&&(a=a.clone().transform(this.layer.map.getProjectionObject(),this.layer.projection));
return a},invalidBounds:function(a){a||(a=this.getMapBounds());a=!this.bounds||!this.bounds.containsBounds(a);!a&&this.resFactor&&(a=this.resolution/this.layer.map.getResolution(),a=a>=this.resFactor||a<=1/this.resFactor);return a},calculateBounds:function(a){a||(a=this.getMapBounds());var b=a.getCenterLonLat(),c=a.getWidth()*this.ratio;a=a.getHeight()*this.ratio;this.bounds=new OpenLayers.Bounds(b.lon-c/2,b.lat-a/2,b.lon+c/2,b.lat+a/2)},triggerRead:function(a){!this.response||a&&!0===a.noAbort||
(this.layer.protocol.abort(this.response),this.layer.events.triggerEvent("loadend"));var b={filter:this.createFilter()};this.layer.events.triggerEvent("loadstart",b);this.response=this.layer.protocol.read(OpenLayers.Util.applyDefaults({filter:b.filter,callback:this.merge,scope:this},a))},createFilter:function(){var a=new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.BBOX,value:this.bounds,projection:this.layer.projection});this.layer.filter&&(a=new OpenLayers.Filter.Logical({type:OpenLayers.Filter.Logical.AND,
filters:[this.layer.filter,a]}));return a},merge:function(a){this.layer.destroyFeatures();if(a.success()){var b=a.features;if(b&&0<b.length){var c=this.layer.projection,d=this.layer.map.getProjectionObject();if(!d.equals(c))for(var e,f=0,g=b.length;f<g;++f)(e=b[f].geometry)&&e.transform(c,d);this.layer.addFeatures(b)}}else this.bounds=null;this.response=null;this.layer.events.triggerEvent("loadend",{response:a})},CLASS_NAME:"OpenLayers.Strategy.BBOX"});OpenLayers.Layer.WorldWind=OpenLayers.Class(OpenLayers.Layer.Grid,{DEFAULT_PARAMS:{},isBaseLayer:!0,lzd:null,zoomLevels:null,initialize:function(a,b,c,d,e,f){this.lzd=c;this.zoomLevels=d;c=[];c.push(a,b,e,f);OpenLayers.Layer.Grid.prototype.initialize.apply(this,c);this.params=OpenLayers.Util.applyDefaults(this.params,this.DEFAULT_PARAMS)},getZoom:function(){var a=this.map.getZoom();this.map.getMaxExtent();return a-=Math.log(this.maxResolution/(this.lzd/512))/Math.log(2)},getURL:function(a){a=this.adjustBounds(a);
var b=this.getZoom(),c=this.map.getMaxExtent(),d=this.lzd/Math.pow(2,this.getZoom()),e=Math.floor((a.left-c.left)/d);a=Math.floor((a.bottom-c.bottom)/d);return this.map.getResolution()<=this.lzd/512&&this.getZoom()<=this.zoomLevels?this.getFullRequestString({L:b,X:e,Y:a}):OpenLayers.Util.getImageLocation("blank.gif")},CLASS_NAME:"OpenLayers.Layer.WorldWind"});OpenLayers.Protocol.CSW=function(a){a=OpenLayers.Util.applyDefaults(a,OpenLayers.Protocol.CSW.DEFAULTS);var b=OpenLayers.Protocol.CSW["v"+a.version.replace(/\./g,"_")];if(!b)throw"Unsupported CSW version: "+a.version;return new b(a)};OpenLayers.Protocol.CSW.DEFAULTS={version:"2.0.2"};OpenLayers.Format.WMTSCapabilities=OpenLayers.Class(OpenLayers.Format.XML.VersionedOGC,{defaultVersion:"1.0.0",yx:{"urn:ogc:def:crs:EPSG::4326":!0},createLayer:function(a,b){if(!("layer"in b))throw Error("Missing property 'layer' in configuration.");for(var c=a.contents,d,e=0,f=c.layers.length;e<f;++e)if(c.layers[e].identifier===b.layer){d=c.layers[e];break}if(!d)throw Error("Layer not found");var g=b.format;!g&&(d.formats&&d.formats.length)&&(g=d.formats[0]);var h;b.matrixSet?h=c.tileMatrixSets[b.matrixSet]:
1<=d.tileMatrixSetLinks.length&&(h=c.tileMatrixSets[d.tileMatrixSetLinks[0].tileMatrixSet]);if(!h)throw Error("matrixSet not found");for(var k,e=0,f=d.styles.length;e<f&&(k=d.styles[e],!k.isDefault);++e);c=b.requestEncoding;if(!c&&(c="KVP",a.operationsMetadata.GetTile.dcp.http)){var l=a.operationsMetadata.GetTile.dcp.http;l.get[0].constraints&&(l=l.get[0].constraints.GetEncoding.allowedValues,l.KVP||!l.REST&&!l.RESTful||(c="REST"))}var l=[],m=b.params||{};delete b.params;for(var n=0,p=d.dimensions.length;n<
p;n++){var q=d.dimensions[n];l.push(q.identifier);m.hasOwnProperty(q.identifier)||(m[q.identifier]=q["default"])}var n=b.projection||h.supportedCRS.replace(/urn:ogc:def:crs:(\w+):(.*:)?(\w+)$/,"$1:$3"),p=b.units||("EPSG:4326"===n?"degrees":"m"),q=[],r;for(r in h.matrixIds)h.matrixIds.hasOwnProperty(r)&&q.push(2.8E-4*h.matrixIds[r].scaleDenominator/OpenLayers.METERS_PER_INCH/OpenLayers.INCHES_PER_UNIT[p]);if("REST"===c&&d.resourceUrls){r=[];for(var f=0,s=d.resourceUrls.length;f<s;++f)e=d.resourceUrls[f],
e.format===g&&"tile"===e.resourceType&&r.push(e.template)}else{s=a.operationsMetadata.GetTile.dcp.http.get;r=[];for(var t,e=0,f=s.length;e<f;e++)t=s[e].constraints,(!t||t&&t.GetEncoding.allowedValues[c])&&r.push(s[e].url)}return new OpenLayers.Layer.WMTS(OpenLayers.Util.applyDefaults(b,{url:r,requestEncoding:c,name:d.title,style:k.identifier,format:g,matrixIds:h.matrixIds,matrixSet:h.identifier,projection:n,units:p,resolutions:!1===b.isBaseLayer?void 0:q,serverResolutions:q,tileFullExtent:h.bounds,
dimensions:l,params:m}))},CLASS_NAME:"OpenLayers.Format.WMTSCapabilities"});OpenLayers.Layer.Google.v3={DEFAULTS:{sphericalMercator:!0,projection:"EPSG:900913"},animationEnabled:!0,loadMapObject:function(){this.type||(this.type=google.maps.MapTypeId.ROADMAP);var a,b=OpenLayers.Layer.Google.cache[this.map.id];b?(a=b.mapObject,++b.count):(a=this.map.getCenter(),b=document.createElement("div"),b.className="olForeignContainer",b.style.width="100%",b.style.height="100%",a=new google.maps.Map(b,{center:a?new google.maps.LatLng(a.lat,a.lon):new google.maps.LatLng(0,0),zoom:this.map.getZoom()||
0,mapTypeId:this.type,disableDefaultUI:!0,keyboardShortcuts:!1,draggable:!1,disableDoubleClickZoom:!0,scrollwheel:!1,streetViewControl:!1}),b=document.createElement("div"),b.style.width="100%",b.style.height="100%",a.controls[google.maps.ControlPosition.TOP_LEFT].push(b),b={googleControl:b,mapObject:a,count:1},OpenLayers.Layer.Google.cache[this.map.id]=b);this.mapObject=a;this.setGMapVisibility(this.visibility)},onMapResize:function(){this.visibility&&google.maps.event.trigger(this.mapObject,"resize")},
setGMapVisibility:function(a){var b=OpenLayers.Layer.Google.cache[this.map.id],c=this.map;if(b){for(var d=this.type,e=c.layers,f,g=e.length-1;0<=g;--g)if(f=e[g],f instanceof OpenLayers.Layer.Google&&!0===f.visibility&&!0===f.inRange){d=f.type;a=!0;break}e=this.mapObject.getDiv();if(!0===a){if(e.parentNode!==c.div)if(b.rendered)c.div.appendChild(e),b.googleControl.appendChild(c.viewPortDiv),google.maps.event.trigger(this.mapObject,"resize");else{var h=this;google.maps.event.addListenerOnce(this.mapObject,
"tilesloaded",function(){b.rendered=!0;h.setGMapVisibility(h.getVisibility());h.moveTo(h.map.getCenter())})}this.mapObject.setMapTypeId(d)}else b.googleControl.hasChildNodes()&&(c.div.appendChild(c.viewPortDiv),c.div.removeChild(e))}},getMapContainer:function(){return this.mapObject.getDiv()},getMapObjectBoundsFromOLBounds:function(a){var b=null;null!=a&&(b=this.sphericalMercator?this.inverseMercator(a.bottom,a.left):new OpenLayers.LonLat(a.bottom,a.left),a=this.sphericalMercator?this.inverseMercator(a.top,
a.right):new OpenLayers.LonLat(a.top,a.right),b=new google.maps.LatLngBounds(new google.maps.LatLng(b.lat,b.lon),new google.maps.LatLng(a.lat,a.lon)));return b},getMapObjectLonLatFromMapObjectPixel:function(a){var b=this.map.getSize(),c=this.getLongitudeFromMapObjectLonLat(this.mapObject.center),d=this.getLatitudeFromMapObjectLonLat(this.mapObject.center),e=this.map.getResolution();a=new OpenLayers.LonLat(c+(a.x-b.w/2)*e,d-(a.y-b.h/2)*e);this.wrapDateLine&&(a=a.wrapDateLine(this.maxExtent));return this.getMapObjectLonLatFromLonLat(a.lon,
a.lat)},getMapObjectPixelFromMapObjectLonLat:function(a){var b=this.getLongitudeFromMapObjectLonLat(a);a=this.getLatitudeFromMapObjectLonLat(a);var c=this.map.getResolution(),d=this.map.getExtent();return this.getMapObjectPixelFromXY(1/c*(b-d.left),1/c*(d.top-a))},setMapObjectCenter:function(a,b){if(!1===this.animationEnabled&&b!=this.mapObject.zoom){var c=this.getMapContainer();google.maps.event.addListenerOnce(this.mapObject,"idle",function(){c.style.visibility=""});c.style.visibility="hidden"}this.mapObject.setOptions({center:a,
zoom:b})},getMapObjectZoomFromMapObjectBounds:function(a){return this.mapObject.getBoundsZoomLevel(a)},getMapObjectLonLatFromLonLat:function(a,b){var c;this.sphericalMercator?(c=this.inverseMercator(a,b),c=new google.maps.LatLng(c.lat,c.lon)):c=new google.maps.LatLng(b,a);return c},getMapObjectPixelFromXY:function(a,b){return new google.maps.Point(a,b)}};OpenLayers.Format.WPSDescribeProcess=OpenLayers.Class(OpenLayers.Format.XML,{VERSION:"1.0.0",namespaces:{wps:"http://www.opengis.net/wps/1.0.0",ows:"http://www.opengis.net/ows/1.1",xsi:"http://www.w3.org/2001/XMLSchema-instance"},schemaLocation:"http://www.opengis.net/wps/1.0.0 http://schemas.opengis.net/wps/1.0.0/wpsAll.xsd",defaultPrefix:"wps",regExes:{trimSpace:/^\s*|\s*$/g,removeSpace:/\s*/g,splitSpace:/\s+/,trimComma:/\s*,\s*/g},read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,
[a]));a&&9==a.nodeType&&(a=a.documentElement);var b={};this.readNode(a,b);return b},readers:{wps:{ProcessDescriptions:function(a,b){b.processDescriptions={};this.readChildNodes(a,b.processDescriptions)},ProcessDescription:function(a,b){var c={processVersion:this.getAttributeNS(a,this.namespaces.wps,"processVersion"),statusSupported:"true"===a.getAttribute("statusSupported"),storeSupported:"true"===a.getAttribute("storeSupported")};this.readChildNodes(a,c);b[c.identifier]=c},DataInputs:function(a,
b){b.dataInputs=[];this.readChildNodes(a,b.dataInputs)},ProcessOutputs:function(a,b){b.processOutputs=[];this.readChildNodes(a,b.processOutputs)},Output:function(a,b){var c={};this.readChildNodes(a,c);b.push(c)},ComplexOutput:function(a,b){b.complexOutput={};this.readChildNodes(a,b.complexOutput)},LiteralOutput:function(a,b){b.literalOutput={};this.readChildNodes(a,b.literalOutput)},Input:function(a,b){var c={maxOccurs:parseInt(a.getAttribute("maxOccurs")),minOccurs:parseInt(a.getAttribute("minOccurs"))};
this.readChildNodes(a,c);b.push(c)},BoundingBoxData:function(a,b){b.boundingBoxData={};this.readChildNodes(a,b.boundingBoxData)},CRS:function(a,b){b.CRSs||(b.CRSs={});b.CRSs[this.getChildValue(a)]=!0},LiteralData:function(a,b){b.literalData={};this.readChildNodes(a,b.literalData)},ComplexData:function(a,b){b.complexData={};this.readChildNodes(a,b.complexData)},Default:function(a,b){b["default"]={};this.readChildNodes(a,b["default"])},Supported:function(a,b){b.supported={};this.readChildNodes(a,b.supported)},
Format:function(a,b){var c={};this.readChildNodes(a,c);b.formats||(b.formats={});b.formats[c.mimeType]=!0},MimeType:function(a,b){b.mimeType=this.getChildValue(a)}},ows:OpenLayers.Format.OWSCommon.v1_1_0.prototype.readers.ows},CLASS_NAME:"OpenLayers.Format.WPSDescribeProcess"});OpenLayers.Format.WKT=OpenLayers.Class(OpenLayers.Format,{initialize:function(a){this.regExes={typeStr:/^\s*(\w+)\s*\(\s*(.*)\s*\)\s*$/,spaces:/\s+/,parenComma:/\)\s*,\s*\(/,doubleParenComma:/\)\s*\)\s*,\s*\(\s*\(/,trimParens:/^\s*\(?(.*?)\)?\s*$/};OpenLayers.Format.prototype.initialize.apply(this,[a])},read:function(a){var b,c;a=a.replace(/[\n\r]/g," ");if(c=this.regExes.typeStr.exec(a))if(a=c[1].toLowerCase(),c=c[2],this.parse[a]&&(b=this.parse[a].apply(this,[c])),this.internalProjection&&this.externalProjection)if(b&&
"OpenLayers.Feature.Vector"==b.CLASS_NAME)b.geometry.transform(this.externalProjection,this.internalProjection);else if(b&&"geometrycollection"!=a&&"object"==typeof b)for(a=0,c=b.length;a<c;a++)b[a].geometry.transform(this.externalProjection,this.internalProjection);return b},write:function(a){var b,c;a.constructor==Array?c=!0:(a=[a],c=!1);var d=[];c&&d.push("GEOMETRYCOLLECTION(");for(var e=0,f=a.length;e<f;++e)c&&0<e&&d.push(","),b=a[e].geometry,d.push(this.extractGeometry(b));c&&d.push(")");return d.join("")},
extractGeometry:function(a){var b=a.CLASS_NAME.split(".")[2].toLowerCase();if(!this.extract[b])return null;this.internalProjection&&this.externalProjection&&(a=a.clone(),a.transform(this.internalProjection,this.externalProjection));return("collection"==b?"GEOMETRYCOLLECTION":b.toUpperCase())+"("+this.extract[b].apply(this,[a])+")"},extract:{point:function(a){return a.x+" "+a.y},multipoint:function(a){for(var b=[],c=0,d=a.components.length;c<d;++c)b.push("("+this.extract.point.apply(this,[a.components[c]])+
")");return b.join(",")},linestring:function(a){for(var b=[],c=0,d=a.components.length;c<d;++c)b.push(this.extract.point.apply(this,[a.components[c]]));return b.join(",")},multilinestring:function(a){for(var b=[],c=0,d=a.components.length;c<d;++c)b.push("("+this.extract.linestring.apply(this,[a.components[c]])+")");return b.join(",")},polygon:function(a){for(var b=[],c=0,d=a.components.length;c<d;++c)b.push("("+this.extract.linestring.apply(this,[a.components[c]])+")");return b.join(",")},multipolygon:function(a){for(var b=
[],c=0,d=a.components.length;c<d;++c)b.push("("+this.extract.polygon.apply(this,[a.components[c]])+")");return b.join(",")},collection:function(a){for(var b=[],c=0,d=a.components.length;c<d;++c)b.push(this.extractGeometry.apply(this,[a.components[c]]));return b.join(",")}},parse:{point:function(a){a=OpenLayers.String.trim(a).split(this.regExes.spaces);return new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(a[0],a[1]))},multipoint:function(a){for(var b=OpenLayers.String.trim(a).split(","),
c=[],d=0,e=b.length;d<e;++d)a=b[d].replace(this.regExes.trimParens,"$1"),c.push(this.parse.point.apply(this,[a]).geometry);return new OpenLayers.Feature.Vector(new OpenLayers.Geometry.MultiPoint(c))},linestring:function(a){a=OpenLayers.String.trim(a).split(",");for(var b=[],c=0,d=a.length;c<d;++c)b.push(this.parse.point.apply(this,[a[c]]).geometry);return new OpenLayers.Feature.Vector(new OpenLayers.Geometry.LineString(b))},multilinestring:function(a){for(var b=OpenLayers.String.trim(a).split(this.regExes.parenComma),
c=[],d=0,e=b.length;d<e;++d)a=b[d].replace(this.regExes.trimParens,"$1"),c.push(this.parse.linestring.apply(this,[a]).geometry);return new OpenLayers.Feature.Vector(new OpenLayers.Geometry.MultiLineString(c))},polygon:function(a){var b;a=OpenLayers.String.trim(a).split(this.regExes.parenComma);for(var c=[],d=0,e=a.length;d<e;++d)b=a[d].replace(this.regExes.trimParens,"$1"),b=this.parse.linestring.apply(this,[b]).geometry,b=new OpenLayers.Geometry.LinearRing(b.components),c.push(b);return new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Polygon(c))},
multipolygon:function(a){for(var b=OpenLayers.String.trim(a).split(this.regExes.doubleParenComma),c=[],d=0,e=b.length;d<e;++d)a=b[d].replace(this.regExes.trimParens,"$1"),c.push(this.parse.polygon.apply(this,[a]).geometry);return new OpenLayers.Feature.Vector(new OpenLayers.Geometry.MultiPolygon(c))},geometrycollection:function(a){a=a.replace(/,\s*([A-Za-z])/g,"|$1");a=OpenLayers.String.trim(a).split("|");for(var b=[],c=0,d=a.length;c<d;++c)b.push(OpenLayers.Format.WKT.prototype.read.apply(this,[a[c]]));
return b}},CLASS_NAME:"OpenLayers.Format.WKT"});OpenLayers.WPSProcess=OpenLayers.Class({client:null,server:null,identifier:null,description:null,localWPS:"http://geoserver/wps",formats:null,chained:0,executeCallbacks:null,initialize:function(a){OpenLayers.Util.extend(this,a);this.executeCallbacks=[];this.formats={"application/wkt":new OpenLayers.Format.WKT,"application/json":new OpenLayers.Format.GeoJSON}},describe:function(a){a=a||{};if(!this.description)this.client.describeProcess(this.server,this.identifier,function(b){this.description||this.parseDescription(b);
a.callback&&a.callback.call(a.scope,this.description)},this);else if(a.callback){var b=this.description;window.setTimeout(function(){a.callback.call(a.scope,b)},0)}},configure:function(a){this.describe({callback:function(){var b=this.description,c=a.inputs,d,e,f;e=0;for(f=b.dataInputs.length;e<f;++e)d=b.dataInputs[e],this.setInputData(d,c[d.identifier]);a.callback&&a.callback.call(a.scope)},scope:this});return this},execute:function(a){this.configure({inputs:a.inputs,callback:function(){var b=this,
c=this.getOutputIndex(b.description.processOutputs,a.output);b.setResponseForm({outputIndex:c});(function e(){OpenLayers.Util.removeItem(b.executeCallbacks,e);0!==b.chained?b.executeCallbacks.push(e):OpenLayers.Request.POST({url:b.client.servers[b.server].url,data:(new OpenLayers.Format.WPSExecute).write(b.description),success:function(e){var g=b.findMimeType(b.description.processOutputs[c].complexOutput.supported.formats);e=b.formats[g].read(e.responseText);e instanceof OpenLayers.Feature.Vector&&
(e=[e]);a.success&&(g={},g[a.output||"result"]=e,a.success.call(a.scope,g))},scope:b})})()},scope:this})},output:function(a){return new OpenLayers.WPSProcess.ChainLink({process:this,output:a})},parseDescription:function(a){a=this.client.servers[this.server];this.description=(new OpenLayers.Format.WPSDescribeProcess).read(a.processDescription[this.identifier]).processDescriptions[this.identifier]},setInputData:function(a,b){delete a.data;delete a.reference;if(b instanceof OpenLayers.WPSProcess.ChainLink)++this.chained,
a.reference={method:"POST",href:b.process.server===this.server?this.localWPS:this.client.servers[b.process.server].url},b.process.describe({callback:function(){--this.chained;this.chainProcess(a,b)},scope:this});else{a.data={};var c=a.complexData;c?(c=this.findMimeType(c.supported.formats),a.data.complexData={mimeType:c,value:this.formats[c].write(this.toFeatures(b))}):a.data.literalData={value:b}}},setResponseForm:function(a){a=a||{};var b=this.description.processOutputs[a.outputIndex||0];this.description.responseForm=
{rawDataOutput:{identifier:b.identifier,mimeType:this.findMimeType(b.complexOutput.supported.formats,a.supportedFormats)}}},getOutputIndex:function(a,b){var c;if(b)for(var d=a.length-1;0<=d;--d){if(a[d].identifier===b){c=d;break}}else c=0;return c},chainProcess:function(a,b){var c=this.getOutputIndex(b.process.description.processOutputs,b.output);a.reference.mimeType=this.findMimeType(a.complexData.supported.formats,b.process.description.processOutputs[c].complexOutput.supported.formats);var d={};
d[a.reference.mimeType]=!0;b.process.setResponseForm({outputIndex:c,supportedFormats:d});for(a.reference.body=b.process.description;0<this.executeCallbacks.length;)this.executeCallbacks[0]()},toFeatures:function(a){var b=OpenLayers.Util.isArray(a);b||(a=[a]);for(var c=Array(a.length),d,e=0,f=a.length;e<f;++e)d=a[e],c[e]=d instanceof OpenLayers.Feature.Vector?d:new OpenLayers.Feature.Vector(d);return b?c:c[0]},findMimeType:function(a,b){b=b||this.formats;for(var c in a)if(c in b)return c},CLASS_NAME:"OpenLayers.WPSProcess"});
OpenLayers.WPSProcess.ChainLink=OpenLayers.Class({process:null,output:null,initialize:function(a){OpenLayers.Util.extend(this,a)},CLASS_NAME:"OpenLayers.WPSProcess.ChainLink"});OpenLayers.WPSClient=OpenLayers.Class({servers:null,version:"1.0.0",lazy:!1,events:null,initialize:function(a){OpenLayers.Util.extend(this,a);this.events=new OpenLayers.Events(this);this.servers={};for(var b in a.servers)this.servers[b]="string"==typeof a.servers[b]?{url:a.servers[b],version:this.version,processDescription:{}}:a.servers[b]},execute:function(a){this.getProcess(a.server,a.process).execute({inputs:a.inputs,success:a.success,scope:a.scope})},getProcess:function(a,b){var c=new OpenLayers.WPSProcess({client:this,
server:a,identifier:b});this.lazy||c.describe();return c},describeProcess:function(a,b,c,d){var e=this.servers[a];e.processDescription[b]?window.setTimeout(function(){c.call(d,e.processDescription[b])},0):b in e.processDescription?this.events.register("describeprocess",this,function g(a){a.identifier===b&&(this.events.unregister("describeprocess",this,g),c.call(d,a.raw))}):(e.processDescription[b]=null,OpenLayers.Request.GET({url:e.url,params:{SERVICE:"WPS",VERSION:e.version,REQUEST:"DescribeProcess",
IDENTIFIER:b},success:function(a){e.processDescription[b]=a.responseText;this.events.triggerEvent("describeprocess",{identifier:b,raw:a.responseText})},scope:this}))},destroy:function(){this.events.destroy();this.servers=this.events=null},CLASS_NAME:"OpenLayers.WPSClient"});OpenLayers.Format.CSWGetRecords.v2_0_2=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{csw:"http://www.opengis.net/cat/csw/2.0.2",dc:"http://purl.org/dc/elements/1.1/",dct:"http://purl.org/dc/terms/",gmd:"http://www.isotc211.org/2005/gmd",geonet:"http://www.fao.org/geonetwork",ogc:"http://www.opengis.net/ogc",ows:"http://www.opengis.net/ows",xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance"},defaultPrefix:"csw",version:"2.0.2",schemaLocation:"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd",
requestId:null,resultType:null,outputFormat:null,outputSchema:null,startPosition:null,maxRecords:null,DistributedSearch:null,ResponseHandler:null,Query:null,regExes:{trimSpace:/^\s*|\s*$/g,removeSpace:/\s*/g,splitSpace:/\s+/,trimComma:/\s*,\s*/g},initialize:function(a){OpenLayers.Format.XML.prototype.initialize.apply(this,[a])},read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));a&&9==a.nodeType&&(a=a.documentElement);var b={};this.readNode(a,b);return b},
readers:{csw:{GetRecordsResponse:function(a,b){b.records=[];this.readChildNodes(a,b);var c=this.getAttributeNS(a,"","version");""!=c&&(b.version=c)},RequestId:function(a,b){b.RequestId=this.getChildValue(a)},SearchStatus:function(a,b){b.SearchStatus={};var c=this.getAttributeNS(a,"","timestamp");""!=c&&(b.SearchStatus.timestamp=c)},SearchResults:function(a,b){this.readChildNodes(a,b);for(var c=a.attributes,d={},e=0,f=c.length;e<f;++e)d[c[e].name]="numberOfRecordsMatched"==c[e].name||"numberOfRecordsReturned"==
c[e].name||"nextRecord"==c[e].name?parseInt(c[e].nodeValue):c[e].nodeValue;b.SearchResults=d},SummaryRecord:function(a,b){var c={type:"SummaryRecord"};this.readChildNodes(a,c);b.records.push(c)},BriefRecord:function(a,b){var c={type:"BriefRecord"};this.readChildNodes(a,c);b.records.push(c)},DCMIRecord:function(a,b){var c={type:"DCMIRecord"};this.readChildNodes(a,c);b.records.push(c)},Record:function(a,b){var c={type:"Record"};this.readChildNodes(a,c);b.records.push(c)},"*":function(a,b){var c=a.localName||
a.nodeName.split(":").pop();b[c]=this.getChildValue(a)}},geonet:{info:function(a,b){var c={};this.readChildNodes(a,c);b.gninfo=c}},dc:{"*":function(a,b){var c=a.localName||a.nodeName.split(":").pop();OpenLayers.Util.isArray(b[c])||(b[c]=[]);for(var d={},e=a.attributes,f=0,g=e.length;f<g;++f)d[e[f].name]=e[f].nodeValue;d.value=this.getChildValue(a);""!=d.value&&b[c].push(d)}},dct:{"*":function(a,b){var c=a.localName||a.nodeName.split(":").pop();OpenLayers.Util.isArray(b[c])||(b[c]=[]);b[c].push(this.getChildValue(a))}},
ows:OpenLayers.Util.applyDefaults({BoundingBox:function(a,b){b.bounds&&(b.BoundingBox=[{crs:b.projection,value:[b.bounds.left,b.bounds.bottom,b.bounds.right,b.bounds.top]}],delete b.projection,delete b.bounds);OpenLayers.Format.OWSCommon.v1_0_0.prototype.readers.ows.BoundingBox.apply(this,arguments)}},OpenLayers.Format.OWSCommon.v1_0_0.prototype.readers.ows)},write:function(a){a=this.writeNode("csw:GetRecords",a);a.setAttribute("xmlns:gmd",this.namespaces.gmd);return OpenLayers.Format.XML.prototype.write.apply(this,
[a])},writers:{csw:{GetRecords:function(a){a||(a={});var b=this.createElementNSPlus("csw:GetRecords",{attributes:{service:"CSW",version:this.version,requestId:a.requestId||this.requestId,resultType:a.resultType||this.resultType,outputFormat:a.outputFormat||this.outputFormat,outputSchema:a.outputSchema||this.outputSchema,startPosition:a.startPosition||this.startPosition,maxRecords:a.maxRecords||this.maxRecords}});(a.DistributedSearch||this.DistributedSearch)&&this.writeNode("csw:DistributedSearch",
a.DistributedSearch||this.DistributedSearch,b);var c=a.ResponseHandler||this.ResponseHandler;if(OpenLayers.Util.isArray(c)&&0<c.length)for(var d=0,e=c.length;d<e;d++)this.writeNode("csw:ResponseHandler",c[d],b);this.writeNode("Query",a.Query||this.Query,b);return b},DistributedSearch:function(a){return this.createElementNSPlus("csw:DistributedSearch",{attributes:{hopCount:a.hopCount}})},ResponseHandler:function(a){return this.createElementNSPlus("csw:ResponseHandler",{value:a.value})},Query:function(a){a||
(a={});var b=this.createElementNSPlus("csw:Query",{attributes:{typeNames:a.typeNames||"csw:Record"}}),c=a.ElementName;if(OpenLayers.Util.isArray(c)&&0<c.length)for(var d=0,e=c.length;d<e;d++)this.writeNode("csw:ElementName",c[d],b);else this.writeNode("csw:ElementSetName",a.ElementSetName||{value:"summary"},b);a.Constraint&&this.writeNode("csw:Constraint",a.Constraint,b);a.SortBy&&this.writeNode("ogc:SortBy",a.SortBy,b);return b},ElementName:function(a){return this.createElementNSPlus("csw:ElementName",
{value:a.value})},ElementSetName:function(a){return this.createElementNSPlus("csw:ElementSetName",{attributes:{typeNames:a.typeNames},value:a.value})},Constraint:function(a){var b=this.createElementNSPlus("csw:Constraint",{attributes:{version:a.version}});if(a.Filter){var c=new OpenLayers.Format.Filter({version:a.version});b.appendChild(c.write(a.Filter))}else a.CqlText&&(a=this.createElementNSPlus("CqlText",{value:a.CqlText.value}),b.appendChild(a));return b}},ogc:OpenLayers.Format.Filter.v1_1_0.prototype.writers.ogc},
CLASS_NAME:"OpenLayers.Format.CSWGetRecords.v2_0_2"});/*
 Apache 2 

 Contains portions of Rico <http://openrico.org/>

 Copyright 2005 Sabre Airline Solutions  

 Licensed under the Apache License, Version 2.0 (the "License"); you
 may not use this file except in compliance with the License. You
 may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0  

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
 implied. See the License for the specific language governing
 permissions and limitations under the License. 
*/
OpenLayers.Marker.Box=OpenLayers.Class(OpenLayers.Marker,{bounds:null,div:null,initialize:function(a,b,c){this.bounds=a;this.div=OpenLayers.Util.createDiv();this.div.style.overflow="hidden";this.events=new OpenLayers.Events(this,this.div);this.setBorder(b,c)},destroy:function(){this.div=this.bounds=null;OpenLayers.Marker.prototype.destroy.apply(this,arguments)},setBorder:function(a,b){a||(a="red");b||(b=2);this.div.style.border=b+"px solid "+a},draw:function(a,b){OpenLayers.Util.modifyDOMElement(this.div,
null,a,b);return this.div},onScreen:function(){var a=!1;this.map&&(a=this.map.getExtent().containsBounds(this.bounds,!0,!0));return a},display:function(a){this.div.style.display=a?"":"none"},CLASS_NAME:"OpenLayers.Marker.Box"});OpenLayers.Format.Text=OpenLayers.Class(OpenLayers.Format,{defaultStyle:null,extractStyles:!0,initialize:function(a){a=a||{};!1!==a.extractStyles&&(a.defaultStyle={externalGraphic:OpenLayers.Util.getImageLocation("marker.png"),graphicWidth:21,graphicHeight:25,graphicXOffset:-10.5,graphicYOffset:-12.5});OpenLayers.Format.prototype.initialize.apply(this,[a])},read:function(a){a=a.split("\n");for(var b,c=[],d=0;d<a.length-1;d++){var e=a[d].replace(/^\s*/,"").replace(/\s*$/,"");if("#"!=e.charAt(0))if(b){for(var e=
e.split("\t"),f=new OpenLayers.Geometry.Point(0,0),g={},h=this.defaultStyle?OpenLayers.Util.applyDefaults({},this.defaultStyle):null,k=!1,l=0;l<e.length;l++)if(e[l])if("point"==b[l])k=e[l].split(","),f.y=parseFloat(k[0]),f.x=parseFloat(k[1]),k=!0;else if("lat"==b[l])f.y=parseFloat(e[l]),k=!0;else if("lon"==b[l])f.x=parseFloat(e[l]),k=!0;else if("title"==b[l])g.title=e[l];else if("image"==b[l]||"icon"==b[l]&&h)h.externalGraphic=e[l];else if("iconSize"==b[l]&&h){var m=e[l].split(",");h.graphicWidth=
parseFloat(m[0]);h.graphicHeight=parseFloat(m[1])}else"iconOffset"==b[l]&&h?(m=e[l].split(","),h.graphicXOffset=parseFloat(m[0]),h.graphicYOffset=parseFloat(m[1])):"description"==b[l]?g.description=e[l]:"overflow"==b[l]?g.overflow=e[l]:g[b[l]]=e[l];k&&(this.internalProjection&&this.externalProjection&&f.transform(this.externalProjection,this.internalProjection),e=new OpenLayers.Feature.Vector(f,g,h),c.push(e))}else b=e.split("\t")}return c},CLASS_NAME:"OpenLayers.Format.Text"});OpenLayers.Layer.Text=OpenLayers.Class(OpenLayers.Layer.Markers,{location:null,features:null,formatOptions:null,selectedFeature:null,initialize:function(a,b){OpenLayers.Layer.Markers.prototype.initialize.apply(this,arguments);this.features=[]},destroy:function(){OpenLayers.Layer.Markers.prototype.destroy.apply(this,arguments);this.clearFeatures();this.features=null},loadText:function(){this.loaded||null==this.location||(this.events.triggerEvent("loadstart"),OpenLayers.Request.GET({url:this.location,
success:this.parseData,failure:function(a){this.events.triggerEvent("loadend")},scope:this}),this.loaded=!0)},moveTo:function(a,b,c){OpenLayers.Layer.Markers.prototype.moveTo.apply(this,arguments);this.visibility&&!this.loaded&&this.loadText()},parseData:function(a){a=a.responseText;var b={};OpenLayers.Util.extend(b,this.formatOptions);this.map&&!this.projection.equals(this.map.getProjectionObject())&&(b.externalProjection=this.projection,b.internalProjection=this.map.getProjectionObject());a=(new OpenLayers.Format.Text(b)).read(a);
for(var b=0,c=a.length;b<c;b++){var d={},e=a[b],f,g,h;f=new OpenLayers.LonLat(e.geometry.x,e.geometry.y);e.style.graphicWidth&&e.style.graphicHeight&&(g=new OpenLayers.Size(e.style.graphicWidth,e.style.graphicHeight));void 0!==e.style.graphicXOffset&&void 0!==e.style.graphicYOffset&&(h=new OpenLayers.Pixel(e.style.graphicXOffset,e.style.graphicYOffset));null!=e.style.externalGraphic?d.icon=new OpenLayers.Icon(e.style.externalGraphic,g,h):(d.icon=OpenLayers.Marker.defaultIcon(),null!=g&&d.icon.setSize(g));
null!=e.attributes.title&&null!=e.attributes.description&&(d.popupContentHTML="<h2>"+e.attributes.title+"</h2><p>"+e.attributes.description+"</p>");d.overflow=e.attributes.overflow||"auto";d=new OpenLayers.Feature(this,f,d);this.features.push(d);f=d.createMarker();null!=e.attributes.title&&null!=e.attributes.description&&f.events.register("click",d,this.markerClick);this.addMarker(f)}this.events.triggerEvent("loadend")},markerClick:function(a){var b=this==this.layer.selectedFeature;this.layer.selectedFeature=
b?null:this;for(var c=0,d=this.layer.map.popups.length;c<d;c++)this.layer.map.removePopup(this.layer.map.popups[c]);b||this.layer.map.addPopup(this.createPopup());OpenLayers.Event.stop(a)},clearFeatures:function(){if(null!=this.features)for(;0<this.features.length;){var a=this.features[0];OpenLayers.Util.removeItem(this.features,a);a.destroy()}},CLASS_NAME:"OpenLayers.Layer.Text"});OpenLayers.Handler.RegularPolygon=OpenLayers.Class(OpenLayers.Handler.Drag,{sides:4,radius:null,snapAngle:null,snapToggle:"shiftKey",layerOptions:null,persist:!1,irregular:!1,citeCompliant:!1,angle:null,fixedRadius:!1,feature:null,layer:null,origin:null,initialize:function(a,b,c){c&&c.layerOptions&&c.layerOptions.styleMap||(this.style=OpenLayers.Util.extend(OpenLayers.Feature.Vector.style["default"],{}));OpenLayers.Handler.Drag.prototype.initialize.apply(this,[a,b,c]);this.options=c?c:{}},setOptions:function(a){OpenLayers.Util.extend(this.options,
a);OpenLayers.Util.extend(this,a)},activate:function(){var a=!1;OpenLayers.Handler.Drag.prototype.activate.apply(this,arguments)&&(a=OpenLayers.Util.extend({displayInLayerSwitcher:!1,calculateInRange:OpenLayers.Function.True,wrapDateLine:this.citeCompliant},this.layerOptions),this.layer=new OpenLayers.Layer.Vector(this.CLASS_NAME,a),this.map.addLayer(this.layer),a=!0);return a},deactivate:function(){var a=!1;OpenLayers.Handler.Drag.prototype.deactivate.apply(this,arguments)&&(this.dragging&&this.cancel(),
null!=this.layer.map&&(this.layer.destroy(!1),this.feature&&this.feature.destroy()),this.feature=this.layer=null,a=!0);return a},down:function(a){this.fixedRadius=!!this.radius;a=this.layer.getLonLatFromViewPortPx(a.xy);this.origin=new OpenLayers.Geometry.Point(a.lon,a.lat);if(!this.fixedRadius||this.irregular)this.radius=this.map.getResolution();this.persist&&this.clear();this.feature=new OpenLayers.Feature.Vector;this.createGeometry();this.callback("create",[this.origin,this.feature]);this.layer.addFeatures([this.feature],
{silent:!0});this.layer.drawFeature(this.feature,this.style)},move:function(a){var b=this.layer.getLonLatFromViewPortPx(a.xy),b=new OpenLayers.Geometry.Point(b.lon,b.lat);this.irregular?(a=Math.sqrt(2)*Math.abs(b.y-this.origin.y)/2,this.radius=Math.max(this.map.getResolution()/2,a)):this.fixedRadius?this.origin=b:(this.calculateAngle(b,a),this.radius=Math.max(this.map.getResolution()/2,b.distanceTo(this.origin)));this.modifyGeometry();if(this.irregular){a=b.x-this.origin.x;var b=b.y-this.origin.y,
c;c=0==b?a/(this.radius*Math.sqrt(2)):a/b;this.feature.geometry.resize(1,this.origin,c);this.feature.geometry.move(a/2,b/2)}this.layer.drawFeature(this.feature,this.style)},up:function(a){this.finalize();this.start==this.last&&this.callback("done",[a.xy])},out:function(a){this.finalize()},createGeometry:function(){this.angle=Math.PI*(1/this.sides-0.5);this.snapAngle&&(this.angle+=this.snapAngle*(Math.PI/180));this.feature.geometry=OpenLayers.Geometry.Polygon.createRegularPolygon(this.origin,this.radius,
this.sides,this.snapAngle)},modifyGeometry:function(){var a,b,c=this.feature.geometry.components[0];c.components.length!=this.sides+1&&(this.createGeometry(),c=this.feature.geometry.components[0]);for(var d=0;d<this.sides;++d)b=c.components[d],a=this.angle+2*d*Math.PI/this.sides,b.x=this.origin.x+this.radius*Math.cos(a),b.y=this.origin.y+this.radius*Math.sin(a),b.clearBounds()},calculateAngle:function(a,b){var c=Math.atan2(a.y-this.origin.y,a.x-this.origin.x);if(this.snapAngle&&this.snapToggle&&!b[this.snapToggle]){var d=
Math.PI/180*this.snapAngle;this.angle=Math.round(c/d)*d}else this.angle=c},cancel:function(){this.callback("cancel",null);this.finalize()},finalize:function(){this.origin=null;this.radius=this.options.radius},clear:function(){this.layer&&(this.layer.renderer.clear(),this.layer.destroyFeatures())},callback:function(a,b){this.callbacks[a]&&this.callbacks[a].apply(this.control,[this.feature.geometry.clone()]);this.persist||"done"!=a&&"cancel"!=a||this.clear()},CLASS_NAME:"OpenLayers.Handler.RegularPolygon"});OpenLayers.Control.SLDSelect=OpenLayers.Class(OpenLayers.Control,{clearOnDeactivate:!1,layers:null,callbacks:null,selectionSymbolizer:{Polygon:{fillColor:"#FF0000",stroke:!1},Line:{strokeColor:"#FF0000",strokeWidth:2},Point:{graphicName:"square",fillColor:"#FF0000",pointRadius:5}},layerOptions:null,sketchStyle:null,wfsCache:{},layerCache:{},initialize:function(a,b){OpenLayers.Control.prototype.initialize.apply(this,[b]);this.callbacks=OpenLayers.Util.extend({done:this.select,click:this.select},this.callbacks);
this.handlerOptions=this.handlerOptions||{};this.layerOptions=OpenLayers.Util.applyDefaults(this.layerOptions,{displayInLayerSwitcher:!1,tileOptions:{maxGetUrlLength:2048}});this.sketchStyle&&(this.handlerOptions.layerOptions=OpenLayers.Util.applyDefaults(this.handlerOptions.layerOptions,{styleMap:new OpenLayers.StyleMap({"default":this.sketchStyle})}));this.handler=new a(this,this.callbacks,this.handlerOptions)},destroy:function(){for(var a in this.layerCache)delete this.layerCache[a];for(a in this.wfsCache)delete this.wfsCache[a];
OpenLayers.Control.prototype.destroy.apply(this,arguments)},coupleLayerVisiblity:function(a){this.setVisibility(a.object.getVisibility())},createSelectionLayer:function(a){var b;if(this.layerCache[a.id])b=this.layerCache[a.id];else{b=new OpenLayers.Layer.WMS(a.name,a.url,a.params,OpenLayers.Util.applyDefaults(this.layerOptions,a.getOptions()));this.layerCache[a.id]=b;if(!1===this.layerOptions.displayInLayerSwitcher)a.events.on({visibilitychanged:this.coupleLayerVisiblity,scope:b});this.map.addLayer(b)}return b},
createSLD:function(a,b,c){for(var d={version:"1.0.0",namedLayers:{}},e=(""+a.params.LAYERS).split(","),f=0,g=e.length;f<g;f++){var h=e[f];d.namedLayers[h]={name:h,userStyles:[]};var k=this.selectionSymbolizer,l=c[f];0<=l.type.indexOf("Polygon")?k={Polygon:this.selectionSymbolizer.Polygon}:0<=l.type.indexOf("LineString")?k={Line:this.selectionSymbolizer.Line}:0<=l.type.indexOf("Point")&&(k={Point:this.selectionSymbolizer.Point});d.namedLayers[h].userStyles.push({name:"default",rules:[new OpenLayers.Rule({symbolizer:k,
filter:b[f],maxScaleDenominator:a.options.minScale})]})}return(new OpenLayers.Format.SLD({srsName:this.map.getProjection()})).write(d)},parseDescribeLayer:function(a){var b=new OpenLayers.Format.WMSDescribeLayer,c=a.responseXML;c&&c.documentElement||(c=a.responseText);a=b.read(c);for(var b=[],c=null,d=0,e=a.length;d<e;d++)"WFS"==a[d].owsType&&(b.push(a[d].typeName),c=a[d].owsURL);OpenLayers.Request.GET({url:c,params:{SERVICE:"WFS",TYPENAME:b.toString(),REQUEST:"DescribeFeatureType",VERSION:"1.0.0"},
callback:function(a){var b=new OpenLayers.Format.WFSDescribeFeatureType,c=a.responseXML;c&&c.documentElement||(c=a.responseText);a=b.read(c);this.control.wfsCache[this.layer.id]=a;this.control._queue&&this.control.applySelection()},scope:this})},getGeometryAttributes:function(a){var b=[];a=this.wfsCache[a.id];for(var c=0,d=a.featureTypes.length;c<d;c++)for(var e=a.featureTypes[c].properties,f=0,g=e.length;f<g;f++){var h=e[f],k=h.type;(0<=k.indexOf("LineString")||0<=k.indexOf("GeometryAssociationType")||
0<=k.indexOf("GeometryPropertyType")||0<=k.indexOf("Point")||0<=k.indexOf("Polygon"))&&b.push(h)}return b},activate:function(){var a=OpenLayers.Control.prototype.activate.call(this);if(a)for(var b=0,c=this.layers.length;b<c;b++){var d=this.layers[b];d&&!this.wfsCache[d.id]&&OpenLayers.Request.GET({url:d.url,params:{SERVICE:"WMS",VERSION:d.params.VERSION,LAYERS:d.params.LAYERS,REQUEST:"DescribeLayer"},callback:this.parseDescribeLayer,scope:{layer:d,control:this}})}return a},deactivate:function(){var a=
OpenLayers.Control.prototype.deactivate.call(this);if(a)for(var b=0,c=this.layers.length;b<c;b++){var d=this.layers[b];if(d&&!0===this.clearOnDeactivate){var e=this.layerCache,f=e[d.id];f&&(d.events.un({visibilitychanged:this.coupleLayerVisiblity,scope:f}),f.destroy(),delete e[d.id])}}return a},setLayers:function(a){this.active?(this.deactivate(),this.layers=a,this.activate()):this.layers=a},createFilter:function(a,b){var c=null;this.handler instanceof OpenLayers.Handler.RegularPolygon?c=!0===this.handler.irregular?
new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.BBOX,property:a.name,value:b.getBounds()}):new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.INTERSECTS,property:a.name,value:b}):this.handler instanceof OpenLayers.Handler.Polygon?c=new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.INTERSECTS,property:a.name,value:b}):this.handler instanceof OpenLayers.Handler.Path?c=0<=a.type.indexOf("Point")?new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.DWITHIN,
property:a.name,distance:0.01*this.map.getExtent().getWidth(),distanceUnits:this.map.getUnits(),value:b}):new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.INTERSECTS,property:a.name,value:b}):this.handler instanceof OpenLayers.Handler.Click&&(c=0<=a.type.indexOf("Polygon")?new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.INTERSECTS,property:a.name,value:b}):new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.DWITHIN,property:a.name,distance:0.01*this.map.getExtent().getWidth(),
distanceUnits:this.map.getUnits(),value:b}));return c},select:function(a){this._queue=function(){for(var b=0,c=this.layers.length;b<c;b++){for(var d=this.layers[b],e=this.getGeometryAttributes(d),f=[],g=0,h=e.length;g<h;g++){var k=e[g];if(null!==k){if(!(a instanceof OpenLayers.Geometry)){var l=this.map.getLonLatFromPixel(a.xy);a=new OpenLayers.Geometry.Point(l.lon,l.lat)}k=this.createFilter(k,a);null!==k&&f.push(k)}}g=this.createSelectionLayer(d);this.events.triggerEvent("selected",{layer:d,filters:f});
d=this.createSLD(d,f,e);g.mergeNewParams({SLD_BODY:d});delete this._queue}};this.applySelection()},applySelection:function(){for(var a=!0,b=0,c=this.layers.length;b<c;b++)if(!this.wfsCache[this.layers[b].id]){a=!1;break}a&&this._queue.call(this)},CLASS_NAME:"OpenLayers.Control.SLDSelect"});OpenLayers.Control.Scale=OpenLayers.Class(OpenLayers.Control,{element:null,geodesic:!1,initialize:function(a,b){OpenLayers.Control.prototype.initialize.apply(this,[b]);this.element=OpenLayers.Util.getElement(a)},draw:function(){OpenLayers.Control.prototype.draw.apply(this,arguments);this.element||(this.element=document.createElement("div"),this.div.appendChild(this.element));this.map.events.register("moveend",this,this.updateScale);this.updateScale();return this.div},updateScale:function(){var a;
if(!0===this.geodesic){if(!this.map.getUnits())return;a=OpenLayers.INCHES_PER_UNIT;a=(this.map.getGeodesicPixelSize().w||1E-6)*a.km*OpenLayers.DOTS_PER_INCH}else a=this.map.getScale();a&&(a=9500<=a&&95E4>=a?Math.round(a/1E3)+"K":95E4<=a?Math.round(a/1E6)+"M":Math.round(a),this.element.innerHTML=OpenLayers.i18n("Scale = 1 : ${scaleDenom}",{scaleDenom:a}))},CLASS_NAME:"OpenLayers.Control.Scale"});OpenLayers.Layer.MapGuide=OpenLayers.Class(OpenLayers.Layer.Grid,{isBaseLayer:!0,useHttpTile:!1,singleTile:!1,useOverlay:!1,useAsyncOverlay:!0,TILE_PARAMS:{operation:"GETTILEIMAGE",version:"1.2.0"},SINGLE_TILE_PARAMS:{operation:"GETMAPIMAGE",format:"PNG",locale:"en",clip:"1",version:"1.0.0"},OVERLAY_PARAMS:{operation:"GETDYNAMICMAPOVERLAYIMAGE",format:"PNG",locale:"en",clip:"1",version:"2.0.0"},FOLDER_PARAMS:{tileColumnsPerFolder:30,tileRowsPerFolder:30,format:"png",querystring:null},defaultSize:new OpenLayers.Size(300,
300),tileOriginCorner:"tl",initialize:function(a,b,c,d){OpenLayers.Layer.Grid.prototype.initialize.apply(this,arguments);if(null==d||null==d.isBaseLayer)this.isBaseLayer="true"!=this.transparent&&!0!=this.transparent;d&&null!=d.useOverlay&&(this.useOverlay=d.useOverlay);this.singleTile?this.useOverlay?(OpenLayers.Util.applyDefaults(this.params,this.OVERLAY_PARAMS),this.useAsyncOverlay||(this.params.version="1.0.0")):OpenLayers.Util.applyDefaults(this.params,this.SINGLE_TILE_PARAMS):(this.useHttpTile?
OpenLayers.Util.applyDefaults(this.params,this.FOLDER_PARAMS):OpenLayers.Util.applyDefaults(this.params,this.TILE_PARAMS),this.setTileSize(this.defaultSize))},clone:function(a){null==a&&(a=new OpenLayers.Layer.MapGuide(this.name,this.url,this.params,this.getOptions()));return a=OpenLayers.Layer.Grid.prototype.clone.apply(this,[a])},getURL:function(a){var b;b=a.getCenterLonLat();var c=this.map.getSize();this.singleTile?(a={setdisplaydpi:OpenLayers.DOTS_PER_INCH,setdisplayheight:c.h*this.ratio,setdisplaywidth:c.w*
this.ratio,setviewcenterx:b.lon,setviewcentery:b.lat,setviewscale:this.map.getScale()},this.useOverlay&&!this.useAsyncOverlay&&(b={},b=OpenLayers.Util.extend(b,a),b.operation="GETVISIBLEMAPEXTENT",b.version="1.0.0",b.session=this.params.session,b.mapName=this.params.mapName,b.format="text/xml",b=this.getFullRequestString(b),OpenLayers.Request.GET({url:b,async:!1})),b=this.getFullRequestString(a)):(c=this.map.getResolution(),b=Math.floor((a.left-this.maxExtent.left)/c),b=Math.round(b/this.tileSize.w),
a=Math.floor((this.maxExtent.top-a.top)/c),a=Math.round(a/this.tileSize.h),b=this.useHttpTile?this.getImageFilePath({tilecol:b,tilerow:a,scaleindex:this.resolutions.length-this.map.zoom-1}):this.getFullRequestString({tilecol:b,tilerow:a,scaleindex:this.resolutions.length-this.map.zoom-1}));return b},getFullRequestString:function(a,b){var c=null==b?this.url:b;"object"==typeof c&&(c=c[Math.floor(Math.random()*c.length)]);var d=c,e=OpenLayers.Util.extend({},this.params),e=OpenLayers.Util.extend(e,a),
f=OpenLayers.Util.upperCaseObject(OpenLayers.Util.getParameters(c)),g;for(g in e)g.toUpperCase()in f&&delete e[g];e=OpenLayers.Util.getParameterString(e);e=e.replace(/,/g,"+");""!=e&&(f=c.charAt(c.length-1),d="&"==f||"?"==f?d+e:-1==c.indexOf("?")?d+("?"+e):d+("&"+e));return d},getImageFilePath:function(a,b){var c=null==b?this.url:b;"object"==typeof c&&(c=c[Math.floor(Math.random()*c.length)]);var d="",e="";0>a.tilerow&&(d="-");d=0==a.tilerow?d+"0":d+Math.floor(Math.abs(a.tilerow/this.params.tileRowsPerFolder))*
this.params.tileRowsPerFolder;0>a.tilecol&&(e="-");e=0==a.tilecol?e+"0":e+Math.floor(Math.abs(a.tilecol/this.params.tileColumnsPerFolder))*this.params.tileColumnsPerFolder;d="/S"+Math.floor(a.scaleindex)+"/"+this.params.basemaplayergroupname+"/R"+d+"/C"+e+"/"+a.tilerow%this.params.tileRowsPerFolder+"_"+a.tilecol%this.params.tileColumnsPerFolder+"."+this.params.format;this.params.querystring&&(d+="?"+this.params.querystring);return c+d},CLASS_NAME:"OpenLayers.Layer.MapGuide"});OpenLayers.Control.Measure=OpenLayers.Class(OpenLayers.Control,{callbacks:null,displaySystem:"metric",geodesic:!1,displaySystemUnits:{geographic:["dd"],english:["mi","ft","in"],metric:["km","m"]},partialDelay:300,delayedTrigger:null,persist:!1,immediate:!1,initialize:function(a,b){OpenLayers.Control.prototype.initialize.apply(this,[b]);var c={done:this.measureComplete,point:this.measurePartial};this.immediate&&(c.modify=this.measureImmediate);this.callbacks=OpenLayers.Util.extend(c,this.callbacks);
this.handlerOptions=OpenLayers.Util.extend({persist:this.persist},this.handlerOptions);this.handler=new a(this,this.callbacks,this.handlerOptions)},deactivate:function(){this.cancelDelay();return OpenLayers.Control.prototype.deactivate.apply(this,arguments)},cancel:function(){this.cancelDelay();this.handler.cancel()},setImmediate:function(a){(this.immediate=a)?this.callbacks.modify=this.measureImmediate:delete this.callbacks.modify},updateHandler:function(a,b){var c=this.active;c&&this.deactivate();
this.handler=new a(this,this.callbacks,b);c&&this.activate()},measureComplete:function(a){this.cancelDelay();this.measure(a,"measure")},measurePartial:function(a,b){this.cancelDelay();b=b.clone();this.handler.freehandMode(this.handler.evt)?this.measure(b,"measurepartial"):this.delayedTrigger=window.setTimeout(OpenLayers.Function.bind(function(){this.delayedTrigger=null;this.measure(b,"measurepartial")},this),this.partialDelay)},measureImmediate:function(a,b,c){c&&!this.handler.freehandMode(this.handler.evt)&&
(this.cancelDelay(),this.measure(b.geometry,"measurepartial"))},cancelDelay:function(){null!==this.delayedTrigger&&(window.clearTimeout(this.delayedTrigger),this.delayedTrigger=null)},measure:function(a,b){var c,d;-1<a.CLASS_NAME.indexOf("LineString")?(c=this.getBestLength(a),d=1):(c=this.getBestArea(a),d=2);this.events.triggerEvent(b,{measure:c[0],units:c[1],order:d,geometry:a})},getBestArea:function(a){for(var b=this.displaySystemUnits[this.displaySystem],c,d,e=0,f=b.length;e<f&&!(c=b[e],d=this.getArea(a,
c),1<d);++e);return[d,c]},getArea:function(a,b){var c,d;this.geodesic?(c=a.getGeodesicArea(this.map.getProjectionObject()),d="m"):(c=a.getArea(),d=this.map.getUnits());var e=OpenLayers.INCHES_PER_UNIT[b];e&&(c*=Math.pow(OpenLayers.INCHES_PER_UNIT[d]/e,2));return c},getBestLength:function(a){for(var b=this.displaySystemUnits[this.displaySystem],c,d,e=0,f=b.length;e<f&&!(c=b[e],d=this.getLength(a,c),1<d);++e);return[d,c]},getLength:function(a,b){var c,d;this.geodesic?(c=a.getGeodesicLength(this.map.getProjectionObject()),
d="m"):(c=a.getLength(),d=this.map.getUnits());var e=OpenLayers.INCHES_PER_UNIT[b];e&&(c*=OpenLayers.INCHES_PER_UNIT[d]/e);return c},CLASS_NAME:"OpenLayers.Control.Measure"});OpenLayers.Format.WMC.v1_0_0=OpenLayers.Class(OpenLayers.Format.WMC.v1,{VERSION:"1.0.0",schemaLocation:"http://www.opengis.net/context http://schemas.opengis.net/context/1.0.0/context.xsd",initialize:function(a){OpenLayers.Format.WMC.v1.prototype.initialize.apply(this,[a])},read_wmc_SRS:function(a,b){var c=this.getChildValue(b);"object"!=typeof a.projections&&(a.projections={});for(var c=c.split(/ +/),d=0,e=c.length;d<e;d++)a.projections[c[d]]=!0},write_wmc_Layer:function(a){var b=OpenLayers.Format.WMC.v1.prototype.write_wmc_Layer.apply(this,
[a]);if(a.srs){var c=[],d;for(d in a.srs)c.push(d);b.appendChild(this.createElementDefaultNS("SRS",c.join(" ")))}b.appendChild(this.write_wmc_FormatList(a));b.appendChild(this.write_wmc_StyleList(a));a.dimensions&&b.appendChild(this.write_wmc_DimensionList(a));b.appendChild(this.write_wmc_LayerExtension(a))},CLASS_NAME:"OpenLayers.Format.WMC.v1_0_0"});OpenLayers.Popup.Anchored=OpenLayers.Class(OpenLayers.Popup,{relativePosition:null,keepInMap:!0,anchor:null,initialize:function(a,b,c,d,e,f,g){OpenLayers.Popup.prototype.initialize.apply(this,[a,b,c,d,f,g]);this.anchor=null!=e?e:{size:new OpenLayers.Size(0,0),offset:new OpenLayers.Pixel(0,0)}},destroy:function(){this.relativePosition=this.anchor=null;OpenLayers.Popup.prototype.destroy.apply(this,arguments)},show:function(){this.updatePosition();OpenLayers.Popup.prototype.show.apply(this,arguments)},
moveTo:function(a){var b=this.relativePosition;this.relativePosition=this.calculateRelativePosition(a);OpenLayers.Popup.prototype.moveTo.call(this,this.calculateNewPx(a));this.relativePosition!=b&&this.updateRelativePosition()},setSize:function(a){OpenLayers.Popup.prototype.setSize.apply(this,arguments);if(this.lonlat&&this.map){var b=this.map.getLayerPxFromLonLat(this.lonlat);this.moveTo(b)}},calculateRelativePosition:function(a){a=this.map.getLonLatFromLayerPx(a);a=this.map.getExtent().determineQuadrant(a);
return OpenLayers.Bounds.oppositeQuadrant(a)},updateRelativePosition:function(){},calculateNewPx:function(a){a=a.offset(this.anchor.offset);var b=this.size||this.contentSize,c="t"==this.relativePosition.charAt(0);a.y+=c?-b.h:this.anchor.size.h;c="l"==this.relativePosition.charAt(1);a.x+=c?-b.w:this.anchor.size.w;return a},CLASS_NAME:"OpenLayers.Popup.Anchored"});OpenLayers.Popup.Framed=OpenLayers.Class(OpenLayers.Popup.Anchored,{imageSrc:null,imageSize:null,isAlphaImage:!1,positionBlocks:null,blocks:null,fixedRelativePosition:!1,initialize:function(a,b,c,d,e,f,g){OpenLayers.Popup.Anchored.prototype.initialize.apply(this,arguments);this.fixedRelativePosition&&(this.updateRelativePosition(),this.calculateRelativePosition=function(a){return this.relativePosition});this.contentDiv.style.position="absolute";this.contentDiv.style.zIndex=1;f&&(this.closeDiv.style.zIndex=
1);this.groupDiv.style.position="absolute";this.groupDiv.style.top="0px";this.groupDiv.style.left="0px";this.groupDiv.style.height="100%";this.groupDiv.style.width="100%"},destroy:function(){this.isAlphaImage=this.imageSize=this.imageSrc=null;this.fixedRelativePosition=!1;this.positionBlocks=null;for(var a=0;a<this.blocks.length;a++){var b=this.blocks[a];b.image&&b.div.removeChild(b.image);b.image=null;b.div&&this.groupDiv.removeChild(b.div);b.div=null}this.blocks=null;OpenLayers.Popup.Anchored.prototype.destroy.apply(this,
arguments)},setBackgroundColor:function(a){},setBorder:function(){},setOpacity:function(a){},setSize:function(a){OpenLayers.Popup.Anchored.prototype.setSize.apply(this,arguments);this.updateBlocks()},updateRelativePosition:function(){this.padding=this.positionBlocks[this.relativePosition].padding;if(this.closeDiv){var a=this.getContentDivPadding();this.closeDiv.style.right=a.right+this.padding.right+"px";this.closeDiv.style.top=a.top+this.padding.top+"px"}this.updateBlocks()},calculateNewPx:function(a){var b=
OpenLayers.Popup.Anchored.prototype.calculateNewPx.apply(this,arguments);return b=b.offset(this.positionBlocks[this.relativePosition].offset)},createBlocks:function(){this.blocks=[];var a=null,b;for(b in this.positionBlocks){a=b;break}a=this.positionBlocks[a];for(b=0;b<a.blocks.length;b++){var c={};this.blocks.push(c);c.div=OpenLayers.Util.createDiv(this.id+"_FrameDecorationDiv_"+b,null,null,null,"absolute",null,"hidden",null);c.image=(this.isAlphaImage?OpenLayers.Util.createAlphaImageDiv:OpenLayers.Util.createImage)(this.id+
"_FrameDecorationImg_"+b,null,this.imageSize,this.imageSrc,"absolute",null,null,null);c.div.appendChild(c.image);this.groupDiv.appendChild(c.div)}},updateBlocks:function(){this.blocks||this.createBlocks();if(this.size&&this.relativePosition){for(var a=this.positionBlocks[this.relativePosition],b=0;b<a.blocks.length;b++){var c=a.blocks[b],d=this.blocks[b],e=c.anchor.left,f=c.anchor.bottom,g=c.anchor.right,h=c.anchor.top,k=isNaN(c.size.w)?this.size.w-(g+e):c.size.w,l=isNaN(c.size.h)?this.size.h-(f+
h):c.size.h;d.div.style.width=(0>k?0:k)+"px";d.div.style.height=(0>l?0:l)+"px";d.div.style.left=null!=e?e+"px":"";d.div.style.bottom=null!=f?f+"px":"";d.div.style.right=null!=g?g+"px":"";d.div.style.top=null!=h?h+"px":"";d.image.style.left=c.position.x+"px";d.image.style.top=c.position.y+"px"}this.contentDiv.style.left=this.padding.left+"px";this.contentDiv.style.top=this.padding.top+"px"}},CLASS_NAME:"OpenLayers.Popup.Framed"});OpenLayers.Popup.FramedCloud=OpenLayers.Class(OpenLayers.Popup.Framed,{contentDisplayClass:"olFramedCloudPopupContent",autoSize:!0,panMapIfOutOfView:!0,imageSize:new OpenLayers.Size(1276,736),isAlphaImage:!1,fixedRelativePosition:!1,positionBlocks:{tl:{offset:new OpenLayers.Pixel(44,0),padding:new OpenLayers.Bounds(8,40,8,9),blocks:[{size:new OpenLayers.Size("auto","auto"),anchor:new OpenLayers.Bounds(0,51,22,0),position:new OpenLayers.Pixel(0,0)},{size:new OpenLayers.Size(22,"auto"),anchor:new OpenLayers.Bounds(null,
50,0,0),position:new OpenLayers.Pixel(-1238,0)},{size:new OpenLayers.Size("auto",19),anchor:new OpenLayers.Bounds(0,32,22,null),position:new OpenLayers.Pixel(0,-631)},{size:new OpenLayers.Size(22,18),anchor:new OpenLayers.Bounds(null,32,0,null),position:new OpenLayers.Pixel(-1238,-632)},{size:new OpenLayers.Size(81,35),anchor:new OpenLayers.Bounds(null,0,0,null),position:new OpenLayers.Pixel(0,-688)}]},tr:{offset:new OpenLayers.Pixel(-45,0),padding:new OpenLayers.Bounds(8,40,8,9),blocks:[{size:new OpenLayers.Size("auto",
"auto"),anchor:new OpenLayers.Bounds(0,51,22,0),position:new OpenLayers.Pixel(0,0)},{size:new OpenLayers.Size(22,"auto"),anchor:new OpenLayers.Bounds(null,50,0,0),position:new OpenLayers.Pixel(-1238,0)},{size:new OpenLayers.Size("auto",19),anchor:new OpenLayers.Bounds(0,32,22,null),position:new OpenLayers.Pixel(0,-631)},{size:new OpenLayers.Size(22,19),anchor:new OpenLayers.Bounds(null,32,0,null),position:new OpenLayers.Pixel(-1238,-631)},{size:new OpenLayers.Size(81,35),anchor:new OpenLayers.Bounds(0,
0,null,null),position:new OpenLayers.Pixel(-215,-687)}]},bl:{offset:new OpenLayers.Pixel(45,0),padding:new OpenLayers.Bounds(8,9,8,40),blocks:[{size:new OpenLayers.Size("auto","auto"),anchor:new OpenLayers.Bounds(0,21,22,32),position:new OpenLayers.Pixel(0,0)},{size:new OpenLayers.Size(22,"auto"),anchor:new OpenLayers.Bounds(null,21,0,32),position:new OpenLayers.Pixel(-1238,0)},{size:new OpenLayers.Size("auto",21),anchor:new OpenLayers.Bounds(0,0,22,null),position:new OpenLayers.Pixel(0,-629)},{size:new OpenLayers.Size(22,
21),anchor:new OpenLayers.Bounds(null,0,0,null),position:new OpenLayers.Pixel(-1238,-629)},{size:new OpenLayers.Size(81,33),anchor:new OpenLayers.Bounds(null,null,0,0),position:new OpenLayers.Pixel(-101,-674)}]},br:{offset:new OpenLayers.Pixel(-44,0),padding:new OpenLayers.Bounds(8,9,8,40),blocks:[{size:new OpenLayers.Size("auto","auto"),anchor:new OpenLayers.Bounds(0,21,22,32),position:new OpenLayers.Pixel(0,0)},{size:new OpenLayers.Size(22,"auto"),anchor:new OpenLayers.Bounds(null,21,0,32),position:new OpenLayers.Pixel(-1238,
0)},{size:new OpenLayers.Size("auto",21),anchor:new OpenLayers.Bounds(0,0,22,null),position:new OpenLayers.Pixel(0,-629)},{size:new OpenLayers.Size(22,21),anchor:new OpenLayers.Bounds(null,0,0,null),position:new OpenLayers.Pixel(-1238,-629)},{size:new OpenLayers.Size(81,33),anchor:new OpenLayers.Bounds(0,null,null,0),position:new OpenLayers.Pixel(-311,-674)}]}},minSize:new OpenLayers.Size(105,10),maxSize:new OpenLayers.Size(1200,660),initialize:function(a,b,c,d,e,f,g){this.imageSrc=OpenLayers.Util.getImageLocation("cloud-popup-relative.png");
OpenLayers.Popup.Framed.prototype.initialize.apply(this,arguments);this.contentDiv.className=this.contentDisplayClass},CLASS_NAME:"OpenLayers.Popup.FramedCloud"});OpenLayers.Tile.Image.IFrame={useIFrame:null,blankImageUrl:"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAQAIBRAA7",draw:function(){if(OpenLayers.Tile.Image.prototype.shouldDraw.call(this)){var a=this.layer.getURL(this.bounds),b=this.useIFrame;this.useIFrame=null!==this.maxGetUrlLength&&!this.layer.async&&a.length>this.maxGetUrlLength;a=b&&!this.useIFrame;b=!b&&this.useIFrame;if(a||b)this.imgDiv&&this.imgDiv.parentNode===this.frame&&this.frame.removeChild(this.imgDiv),this.imgDiv=
null,a&&this.frame.removeChild(this.frame.firstChild)}return OpenLayers.Tile.Image.prototype.draw.apply(this,arguments)},getImage:function(){if(!0===this.useIFrame){if(!this.frame.childNodes.length){var a=document.createElement("div"),b=a.style;b.position="absolute";b.width="100%";b.height="100%";b.zIndex=1;b.backgroundImage="url("+this.blankImageUrl+")";this.frame.appendChild(a)}a=this.id+"_iFrame";9>parseFloat(navigator.appVersion.split("MSIE")[1])?(b=document.createElement('<iframe name="'+a+'">'),
b.style.backgroundColor="#FFFFFF",b.style.filter="chroma(color=#FFFFFF)"):(b=document.createElement("iframe"),b.style.backgroundColor="transparent",b.name=a);b.scrolling="no";b.marginWidth="0px";b.marginHeight="0px";b.frameBorder="0";b.style.position="absolute";b.style.width="100%";b.style.height="100%";1>this.layer.opacity&&OpenLayers.Util.modifyDOMElement(b,null,null,null,null,null,null,this.layer.opacity);this.frame.appendChild(b);return this.imgDiv=b}return OpenLayers.Tile.Image.prototype.getImage.apply(this,
arguments)},createRequestForm:function(){var a=document.createElement("form");a.method="POST";var b=this.layer.params._OLSALT,b=(b?b+"_":"")+this.bounds.toBBOX();a.action=OpenLayers.Util.urlAppend(this.layer.url,b);a.target=this.id+"_iFrame";this.layer.getImageSize();var b=OpenLayers.Util.getParameters(this.url),c,d;for(d in b)c=document.createElement("input"),c.type="hidden",c.name=d,c.value=b[d],a.appendChild(c);return a},setImgSrc:function(a){if(!0===this.useIFrame)if(a){var b=this.createRequestForm();
this.frame.appendChild(b);b.submit();this.frame.removeChild(b)}else this.imgDiv.parentNode===this.frame&&(this.frame.removeChild(this.imgDiv),this.imgDiv=null);else OpenLayers.Tile.Image.prototype.setImgSrc.apply(this,arguments)},onImageLoad:function(){OpenLayers.Tile.Image.prototype.onImageLoad.apply(this,arguments);!0===this.useIFrame&&(this.imgDiv.style.opacity=1,this.frame.style.opacity=this.layer.opacity)},createBackBuffer:function(){var a;!1===this.useIFrame&&(a=OpenLayers.Tile.Image.prototype.createBackBuffer.call(this));
return a}};OpenLayers.Format.SOSCapabilities=OpenLayers.Class(OpenLayers.Format.XML.VersionedOGC,{defaultVersion:"1.0.0",CLASS_NAME:"OpenLayers.Format.SOSCapabilities"});OpenLayers.Format.SOSCapabilities.v1_0_0=OpenLayers.Class(OpenLayers.Format.SOSCapabilities,{namespaces:{ows:"http://www.opengis.net/ows/1.1",sos:"http://www.opengis.net/sos/1.0",gml:"http://www.opengis.net/gml",xlink:"http://www.w3.org/1999/xlink"},regExes:{trimSpace:/^\s*|\s*$/g,removeSpace:/\s*/g,splitSpace:/\s+/,trimComma:/\s*,\s*/g},initialize:function(a){OpenLayers.Format.XML.prototype.initialize.apply(this,[a]);this.options=a},read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,
[a]));a&&9==a.nodeType&&(a=a.documentElement);var b={};this.readNode(a,b);return b},readers:{gml:OpenLayers.Util.applyDefaults({name:function(a,b){b.name=this.getChildValue(a)},TimePeriod:function(a,b){b.timePeriod={};this.readChildNodes(a,b.timePeriod)},beginPosition:function(a,b){b.beginPosition=this.getChildValue(a)},endPosition:function(a,b){b.endPosition=this.getChildValue(a)}},OpenLayers.Format.GML.v3.prototype.readers.gml),sos:{Capabilities:function(a,b){this.readChildNodes(a,b)},Contents:function(a,
b){b.contents={};this.readChildNodes(a,b.contents)},ObservationOfferingList:function(a,b){b.offeringList={};this.readChildNodes(a,b.offeringList)},ObservationOffering:function(a,b){var c=this.getAttributeNS(a,this.namespaces.gml,"id");b[c]={procedures:[],observedProperties:[],featureOfInterestIds:[],responseFormats:[],resultModels:[],responseModes:[]};this.readChildNodes(a,b[c])},time:function(a,b){b.time={};this.readChildNodes(a,b.time)},procedure:function(a,b){b.procedures.push(this.getAttributeNS(a,
this.namespaces.xlink,"href"))},observedProperty:function(a,b){b.observedProperties.push(this.getAttributeNS(a,this.namespaces.xlink,"href"))},featureOfInterest:function(a,b){b.featureOfInterestIds.push(this.getAttributeNS(a,this.namespaces.xlink,"href"))},responseFormat:function(a,b){b.responseFormats.push(this.getChildValue(a))},resultModel:function(a,b){b.resultModels.push(this.getChildValue(a))},responseMode:function(a,b){b.responseModes.push(this.getChildValue(a))}},ows:OpenLayers.Format.OWSCommon.v1_1_0.prototype.readers.ows},
CLASS_NAME:"OpenLayers.Format.SOSCapabilities.v1_0_0"});OpenLayers.Handler.Pinch=OpenLayers.Class(OpenLayers.Handler,{started:!1,stopDown:!1,pinching:!1,last:null,start:null,touchstart:function(a){var b=!0;this.pinching=!1;if(OpenLayers.Event.isMultiTouch(a))this.started=!0,this.last=this.start={distance:this.getDistance(a.touches),delta:0,scale:1},this.callback("start",[a,this.start]),b=!this.stopDown;else{if(this.started)return!1;this.started=!1;this.last=this.start=null}OpenLayers.Event.preventDefault(a);return b},touchmove:function(a){if(this.started&&
OpenLayers.Event.isMultiTouch(a)){this.pinching=!0;var b=this.getPinchData(a);this.callback("move",[a,b]);this.last=b;OpenLayers.Event.stop(a)}else if(this.started)return!1;return!0},touchend:function(a){return this.started&&!OpenLayers.Event.isMultiTouch(a)?(this.pinching=this.started=!1,this.callback("done",[a,this.start,this.last]),this.last=this.start=null,!1):!0},activate:function(){var a=!1;OpenLayers.Handler.prototype.activate.apply(this,arguments)&&(this.pinching=!1,a=!0);return a},deactivate:function(){var a=
!1;OpenLayers.Handler.prototype.deactivate.apply(this,arguments)&&(this.pinching=this.started=!1,this.last=this.start=null,a=!0);return a},getDistance:function(a){var b=a[0];a=a[1];return Math.sqrt(Math.pow(b.olClientX-a.olClientX,2)+Math.pow(b.olClientY-a.olClientY,2))},getPinchData:function(a){a=this.getDistance(a.touches);return{distance:a,delta:this.last.distance-a,scale:a/this.start.distance}},CLASS_NAME:"OpenLayers.Handler.Pinch"});OpenLayers.Control.NavToolbar=OpenLayers.Class(OpenLayers.Control.Panel,{initialize:function(a){OpenLayers.Control.Panel.prototype.initialize.apply(this,[a]);this.addControls([new OpenLayers.Control.Navigation,new OpenLayers.Control.ZoomBox])},draw:function(){var a=OpenLayers.Control.Panel.prototype.draw.apply(this,arguments);null===this.defaultControl&&(this.defaultControl=this.controls[0]);return a},CLASS_NAME:"OpenLayers.Control.NavToolbar"});OpenLayers.Strategy.Refresh=OpenLayers.Class(OpenLayers.Strategy,{force:!1,interval:0,timer:null,activate:function(){var a=OpenLayers.Strategy.prototype.activate.call(this);a&&(!0===this.layer.visibility&&this.start(),this.layer.events.on({visibilitychanged:this.reset,scope:this}));return a},deactivate:function(){var a=OpenLayers.Strategy.prototype.deactivate.call(this);a&&(this.stop(),this.layer.events.un({visibilitychanged:this.reset,scope:this}));return a},reset:function(){!0===this.layer.visibility?
this.start():this.stop()},start:function(){this.interval&&("number"===typeof this.interval&&0<this.interval)&&(this.timer=window.setInterval(OpenLayers.Function.bind(this.refresh,this),this.interval))},refresh:function(){this.layer&&(this.layer.refresh&&"function"==typeof this.layer.refresh)&&this.layer.refresh({force:this.force})},stop:function(){null!==this.timer&&(window.clearInterval(this.timer),this.timer=null)},CLASS_NAME:"OpenLayers.Strategy.Refresh"});OpenLayers.Layer.ArcGIS93Rest=OpenLayers.Class(OpenLayers.Layer.Grid,{DEFAULT_PARAMS:{format:"png"},isBaseLayer:!0,initialize:function(a,b,c,d){var e=[];c=OpenLayers.Util.upperCaseObject(c);e.push(a,b,c,d);OpenLayers.Layer.Grid.prototype.initialize.apply(this,e);OpenLayers.Util.applyDefaults(this.params,OpenLayers.Util.upperCaseObject(this.DEFAULT_PARAMS));this.params.TRANSPARENT&&"true"==this.params.TRANSPARENT.toString().toLowerCase()&&(null!=d&&d.isBaseLayer||(this.isBaseLayer=!1),"jpg"==this.params.FORMAT&&
(this.params.FORMAT=OpenLayers.Util.alphaHack()?"gif":"png"))},clone:function(a){null==a&&(a=new OpenLayers.Layer.ArcGIS93Rest(this.name,this.url,this.params,this.getOptions()));return a=OpenLayers.Layer.Grid.prototype.clone.apply(this,[a])},getURL:function(a){a=this.adjustBounds(a);var b=this.projection.getCode().split(":"),b=b[b.length-1],c=this.getImageSize();a={BBOX:a.toBBOX(),SIZE:c.w+","+c.h,F:"image",BBOXSR:b,IMAGESR:b};if(this.layerDefs){var b=[],d;for(d in this.layerDefs)this.layerDefs.hasOwnProperty(d)&&
this.layerDefs[d]&&(b.push(d),b.push(":"),b.push(this.layerDefs[d]),b.push(";"));0<b.length&&(a.LAYERDEFS=b.join(""))}return this.getFullRequestString(a)},setLayerFilter:function(a,b){this.layerDefs||(this.layerDefs={});b?this.layerDefs[a]=b:delete this.layerDefs[a]},clearLayerFilter:function(a){a?delete this.layerDefs[a]:delete this.layerDefs},mergeNewParams:function(a){a=[OpenLayers.Util.upperCaseObject(a)];return OpenLayers.Layer.Grid.prototype.mergeNewParams.apply(this,a)},CLASS_NAME:"OpenLayers.Layer.ArcGIS93Rest"});OpenLayers.Handler.Hover=OpenLayers.Class(OpenLayers.Handler,{delay:500,pixelTolerance:null,stopMove:!1,px:null,timerId:null,mousemove:function(a){this.passesTolerance(a.xy)&&(this.clearTimer(),this.callback("move",[a]),this.px=a.xy,a=OpenLayers.Util.extend({},a),this.timerId=window.setTimeout(OpenLayers.Function.bind(this.delayedCall,this,a),this.delay));return!this.stopMove},mouseout:function(a){OpenLayers.Util.mouseLeft(a,this.map.viewPortDiv)&&(this.clearTimer(),this.callback("move",[a]));return!0},
passesTolerance:function(a){var b=!0;this.pixelTolerance&&this.px&&Math.sqrt(Math.pow(this.px.x-a.x,2)+Math.pow(this.px.y-a.y,2))<this.pixelTolerance&&(b=!1);return b},clearTimer:function(){null!=this.timerId&&(window.clearTimeout(this.timerId),this.timerId=null)},delayedCall:function(a){this.callback("pause",[a])},deactivate:function(){var a=!1;OpenLayers.Handler.prototype.deactivate.apply(this,arguments)&&(this.clearTimer(),a=!0);return a},CLASS_NAME:"OpenLayers.Handler.Hover"});OpenLayers.Control.GetFeature=OpenLayers.Class(OpenLayers.Control,{protocol:null,multipleKey:null,toggleKey:null,modifiers:null,multiple:!1,click:!0,single:!0,clickout:!0,toggle:!1,clickTolerance:5,hover:!1,box:!1,maxFeatures:10,features:null,hoverFeature:null,handlers:null,hoverResponse:null,filterType:OpenLayers.Filter.Spatial.BBOX,initialize:function(a){a.handlerOptions=a.handlerOptions||{};OpenLayers.Control.prototype.initialize.apply(this,[a]);this.features={};this.handlers={};this.click&&(this.handlers.click=
new OpenLayers.Handler.Click(this,{click:this.selectClick},this.handlerOptions.click||{}));this.box&&(this.handlers.box=new OpenLayers.Handler.Box(this,{done:this.selectBox},OpenLayers.Util.extend(this.handlerOptions.box,{boxDivClassName:"olHandlerBoxSelectFeature"})));this.hover&&(this.handlers.hover=new OpenLayers.Handler.Hover(this,{move:this.cancelHover,pause:this.selectHover},OpenLayers.Util.extend(this.handlerOptions.hover,{delay:250,pixelTolerance:2})))},activate:function(){if(!this.active)for(var a in this.handlers)this.handlers[a].activate();
return OpenLayers.Control.prototype.activate.apply(this,arguments)},deactivate:function(){if(this.active)for(var a in this.handlers)this.handlers[a].deactivate();return OpenLayers.Control.prototype.deactivate.apply(this,arguments)},selectClick:function(a){var b=this.pixelToBounds(a.xy);this.setModifiers(a);this.request(b,{single:this.single})},selectBox:function(a){var b;if(a instanceof OpenLayers.Bounds)b=this.map.getLonLatFromPixel({x:a.left,y:a.bottom}),a=this.map.getLonLatFromPixel({x:a.right,
y:a.top}),b=new OpenLayers.Bounds(b.lon,b.lat,a.lon,a.lat);else{if(this.click)return;b=this.pixelToBounds(a)}this.setModifiers(this.handlers.box.dragHandler.evt);this.request(b)},selectHover:function(a){a=this.pixelToBounds(a.xy);this.request(a,{single:!0,hover:!0})},cancelHover:function(){this.hoverResponse&&(this.protocol.abort(this.hoverResponse),this.hoverResponse=null,OpenLayers.Element.removeClass(this.map.viewPortDiv,"olCursorWait"))},request:function(a,b){b=b||{};var c=new OpenLayers.Filter.Spatial({type:this.filterType,
value:a});OpenLayers.Element.addClass(this.map.viewPortDiv,"olCursorWait");c=this.protocol.read({maxFeatures:!0==b.single?this.maxFeatures:void 0,filter:c,callback:function(c){c.success()&&(c.features.length?!0==b.single?this.selectBestFeature(c.features,a.getCenterLonLat(),b):this.select(c.features):b.hover?this.hoverSelect():(this.events.triggerEvent("clickout"),this.clickout&&this.unselectAll()));OpenLayers.Element.removeClass(this.map.viewPortDiv,"olCursorWait")},scope:this});!0==b.hover&&(this.hoverResponse=
c)},selectBestFeature:function(a,b,c){c=c||{};if(a.length){b=new OpenLayers.Geometry.Point(b.lon,b.lat);for(var d,e,f,g=Number.MAX_VALUE,h=0;h<a.length&&!(d=a[h],d.geometry&&(f=b.distanceTo(d.geometry,{edge:!1}),f<g&&(g=f,e=d,0==g)));++h);!0==c.hover?this.hoverSelect(e):this.select(e||a)}},setModifiers:function(a){this.modifiers={multiple:this.multiple||this.multipleKey&&a[this.multipleKey],toggle:this.toggle||this.toggleKey&&a[this.toggleKey]}},select:function(a){this.modifiers.multiple||this.modifiers.toggle||
this.unselectAll();OpenLayers.Util.isArray(a)||(a=[a]);var b=this.events.triggerEvent("beforefeaturesselected",{features:a});if(!1!==b){for(var c=[],d,e=0,f=a.length;e<f;++e)d=a[e],this.features[d.fid||d.id]?this.modifiers.toggle&&this.unselect(this.features[d.fid||d.id]):(b=this.events.triggerEvent("beforefeatureselected",{feature:d}),!1!==b&&(this.features[d.fid||d.id]=d,c.push(d),this.events.triggerEvent("featureselected",{feature:d})));this.events.triggerEvent("featuresselected",{features:c})}},
hoverSelect:function(a){var b=a?a.fid||a.id:null,c=this.hoverFeature?this.hoverFeature.fid||this.hoverFeature.id:null;c&&c!=b&&(this.events.triggerEvent("outfeature",{feature:this.hoverFeature}),this.hoverFeature=null);b&&b!=c&&(this.events.triggerEvent("hoverfeature",{feature:a}),this.hoverFeature=a)},unselect:function(a){delete this.features[a.fid||a.id];this.events.triggerEvent("featureunselected",{feature:a})},unselectAll:function(){for(var a in this.features)this.unselect(this.features[a])},
setMap:function(a){for(var b in this.handlers)this.handlers[b].setMap(a);OpenLayers.Control.prototype.setMap.apply(this,arguments)},pixelToBounds:function(a){var b=a.add(-this.clickTolerance/2,this.clickTolerance/2);a=a.add(this.clickTolerance/2,-this.clickTolerance/2);b=this.map.getLonLatFromPixel(b);a=this.map.getLonLatFromPixel(a);return new OpenLayers.Bounds(b.lon,b.lat,a.lon,a.lat)},CLASS_NAME:"OpenLayers.Control.GetFeature"});OpenLayers.Format.QueryStringFilter=function(){function a(a){a=a.replace(/%/g,"\\%");a=a.replace(/\\\\\.(\*)?/g,function(a,b){return b?a:"\\\\_"});a=a.replace(/\\\\\.\*/g,"\\\\%");a=a.replace(/(\\)?\.(\*)?/g,function(a,b,c){return b||c?a:"_"});a=a.replace(/(\\)?\.\*/g,function(a,b){return b?a:"%"});a=a.replace(/\\\./g,".");return a=a.replace(/(\\)?\\\*/g,function(a,b){return b?a:"*"})}var b={};b[OpenLayers.Filter.Comparison.EQUAL_TO]="eq";b[OpenLayers.Filter.Comparison.NOT_EQUAL_TO]="ne";b[OpenLayers.Filter.Comparison.LESS_THAN]=
"lt";b[OpenLayers.Filter.Comparison.LESS_THAN_OR_EQUAL_TO]="lte";b[OpenLayers.Filter.Comparison.GREATER_THAN]="gt";b[OpenLayers.Filter.Comparison.GREATER_THAN_OR_EQUAL_TO]="gte";b[OpenLayers.Filter.Comparison.LIKE]="ilike";return OpenLayers.Class(OpenLayers.Format,{wildcarded:!1,srsInBBOX:!1,write:function(c,d){d=d||{};var e=c.CLASS_NAME,e=e.substring(e.lastIndexOf(".")+1);switch(e){case "Spatial":switch(c.type){case OpenLayers.Filter.Spatial.BBOX:d.bbox=c.value.toArray();this.srsInBBOX&&c.projection&&
d.bbox.push(c.projection.getCode());break;case OpenLayers.Filter.Spatial.DWITHIN:d.tolerance=c.distance;case OpenLayers.Filter.Spatial.WITHIN:d.lon=c.value.x;d.lat=c.value.y;break;default:OpenLayers.Console.warn("Unknown spatial filter type "+c.type)}break;case "Comparison":e=b[c.type];if(void 0!==e){var f=c.value;c.type==OpenLayers.Filter.Comparison.LIKE&&(f=a(f),this.wildcarded&&(f="%"+f+"%"));d[c.property+"__"+e]=f;d.queryable=d.queryable||[];d.queryable.push(c.property)}else OpenLayers.Console.warn("Unknown comparison filter type "+
c.type);break;case "Logical":if(c.type===OpenLayers.Filter.Logical.AND)for(e=0,f=c.filters.length;e<f;e++)d=this.write(c.filters[e],d);else OpenLayers.Console.warn("Unsupported logical filter type "+c.type);break;default:OpenLayers.Console.warn("Unknown filter type "+e)}return d},CLASS_NAME:"OpenLayers.Format.QueryStringFilter"})}();OpenLayers.Control.MousePosition=OpenLayers.Class(OpenLayers.Control,{autoActivate:!0,element:null,prefix:"",separator:", ",suffix:"",numDigits:5,granularity:10,emptyString:null,lastXy:null,displayProjection:null,destroy:function(){this.deactivate();OpenLayers.Control.prototype.destroy.apply(this,arguments)},activate:function(){return OpenLayers.Control.prototype.activate.apply(this,arguments)?(this.map.events.register("mousemove",this,this.redraw),this.map.events.register("mouseout",this,this.reset),
this.redraw(),!0):!1},deactivate:function(){return OpenLayers.Control.prototype.deactivate.apply(this,arguments)?(this.map.events.unregister("mousemove",this,this.redraw),this.map.events.unregister("mouseout",this,this.reset),this.element.innerHTML="",!0):!1},draw:function(){OpenLayers.Control.prototype.draw.apply(this,arguments);this.element||(this.div.left="",this.div.top="",this.element=this.div);return this.div},redraw:function(a){var b;if(null==a)this.reset();else if(null==this.lastXy||Math.abs(a.xy.x-
this.lastXy.x)>this.granularity||Math.abs(a.xy.y-this.lastXy.y)>this.granularity)this.lastXy=a.xy;else if(b=this.map.getLonLatFromPixel(a.xy))this.displayProjection&&b.transform(this.map.getProjectionObject(),this.displayProjection),this.lastXy=a.xy,a=this.formatOutput(b),a!=this.element.innerHTML&&(this.element.innerHTML=a)},reset:function(a){null!=this.emptyString&&(this.element.innerHTML=this.emptyString)},formatOutput:function(a){var b=parseInt(this.numDigits);return this.prefix+a.lon.toFixed(b)+
this.separator+a.lat.toFixed(b)+this.suffix},CLASS_NAME:"OpenLayers.Control.MousePosition"});OpenLayers.Control.Geolocate=OpenLayers.Class(OpenLayers.Control,{geolocation:null,available:"geolocation"in navigator,bind:!0,watch:!1,geolocationOptions:null,destroy:function(){this.deactivate();OpenLayers.Control.prototype.destroy.apply(this,arguments)},activate:function(){this.available&&!this.geolocation&&(this.geolocation=navigator.geolocation);return this.geolocation?OpenLayers.Control.prototype.activate.apply(this,arguments)?(this.watch?this.watchId=this.geolocation.watchPosition(OpenLayers.Function.bind(this.geolocate,
this),OpenLayers.Function.bind(this.failure,this),this.geolocationOptions):this.getCurrentLocation(),!0):!1:(this.events.triggerEvent("locationuncapable"),!1)},deactivate:function(){this.active&&null!==this.watchId&&this.geolocation.clearWatch(this.watchId);return OpenLayers.Control.prototype.deactivate.apply(this,arguments)},geolocate:function(a){var b=(new OpenLayers.LonLat(a.coords.longitude,a.coords.latitude)).transform(new OpenLayers.Projection("EPSG:4326"),this.map.getProjectionObject());this.bind&&
this.map.setCenter(b);this.events.triggerEvent("locationupdated",{position:a,point:new OpenLayers.Geometry.Point(b.lon,b.lat)})},getCurrentLocation:function(){if(!this.active||this.watch)return!1;this.geolocation.getCurrentPosition(OpenLayers.Function.bind(this.geolocate,this),OpenLayers.Function.bind(this.failure,this),this.geolocationOptions);return!0},failure:function(a){this.events.triggerEvent("locationfailed",{error:a})},CLASS_NAME:"OpenLayers.Control.Geolocate"});OpenLayers.Tile.UTFGrid=OpenLayers.Class(OpenLayers.Tile,{url:null,utfgridResolution:2,json:null,format:null,destroy:function(){this.clear();OpenLayers.Tile.prototype.destroy.apply(this,arguments)},draw:function(){var a=OpenLayers.Tile.prototype.draw.apply(this,arguments);if(a)if(this.isLoading?(this.abortLoading(),this.events.triggerEvent("reload")):(this.isLoading=!0,this.events.triggerEvent("loadstart")),this.url=this.layer.getURL(this.bounds),this.layer.useJSONP){var b=new OpenLayers.Protocol.Script({url:this.url,
callback:function(a){this.isLoading=!1;this.events.triggerEvent("loadend");this.json=a.data},scope:this});b.read();this.request=b}else this.request=OpenLayers.Request.GET({url:this.url,callback:function(a){this.isLoading=!1;this.events.triggerEvent("loadend");200===a.status&&this.parseData(a.responseText)},scope:this});else this.unload();return a},abortLoading:function(){this.request&&(this.request.abort(),delete this.request);this.isLoading=!1},getFeatureInfo:function(a,b){var c=null;if(this.json){var d=
this.getFeatureId(a,b);null!==d&&(c={id:d,data:this.json.data[d]})}return c},getFeatureId:function(a,b){var c=null;if(this.json){var d=this.utfgridResolution,d=this.json.grid[Math.floor(b/d)].charCodeAt(Math.floor(a/d)),d=this.indexFromCharCode(d),e=this.json.keys;!isNaN(d)&&d in e&&(c=e[d])}return c},indexFromCharCode:function(a){93<=a&&a--;35<=a&&a--;return a-32},parseData:function(a){this.format||(this.format=new OpenLayers.Format.JSON);this.json=this.format.read(a)},clear:function(){this.json=
null},CLASS_NAME:"OpenLayers.Tile.UTFGrid"});OpenLayers.Protocol.HTTP=OpenLayers.Class(OpenLayers.Protocol,{url:null,headers:null,params:null,callback:null,scope:null,readWithPOST:!1,updateWithPOST:!1,deleteWithPOST:!1,wildcarded:!1,srsInBBOX:!1,initialize:function(a){a=a||{};this.params={};this.headers={};OpenLayers.Protocol.prototype.initialize.apply(this,arguments);if(!this.filterToParams&&OpenLayers.Format.QueryStringFilter){var b=new OpenLayers.Format.QueryStringFilter({wildcarded:this.wildcarded,srsInBBOX:this.srsInBBOX});this.filterToParams=
function(a,d){return b.write(a,d)}}},destroy:function(){this.headers=this.params=null;OpenLayers.Protocol.prototype.destroy.apply(this)},read:function(a){OpenLayers.Protocol.prototype.read.apply(this,arguments);a=a||{};a.params=OpenLayers.Util.applyDefaults(a.params,this.options.params);a=OpenLayers.Util.applyDefaults(a,this.options);a.filter&&this.filterToParams&&(a.params=this.filterToParams(a.filter,a.params));var b=void 0!==a.readWithPOST?a.readWithPOST:this.readWithPOST,c=new OpenLayers.Protocol.Response({requestType:"read"});
b?(b=a.headers||{},b["Content-Type"]="application/x-www-form-urlencoded",c.priv=OpenLayers.Request.POST({url:a.url,callback:this.createCallback(this.handleRead,c,a),data:OpenLayers.Util.getParameterString(a.params),headers:b})):c.priv=OpenLayers.Request.GET({url:a.url,callback:this.createCallback(this.handleRead,c,a),params:a.params,headers:a.headers});return c},handleRead:function(a,b){this.handleResponse(a,b)},create:function(a,b){b=OpenLayers.Util.applyDefaults(b,this.options);var c=new OpenLayers.Protocol.Response({reqFeatures:a,
requestType:"create"});c.priv=OpenLayers.Request.POST({url:b.url,callback:this.createCallback(this.handleCreate,c,b),headers:b.headers,data:this.format.write(a)});return c},handleCreate:function(a,b){this.handleResponse(a,b)},update:function(a,b){b=b||{};var c=b.url||a.url||this.options.url+"/"+a.fid;b=OpenLayers.Util.applyDefaults(b,this.options);var d=new OpenLayers.Protocol.Response({reqFeatures:a,requestType:"update"});d.priv=OpenLayers.Request[this.updateWithPOST?"POST":"PUT"]({url:c,callback:this.createCallback(this.handleUpdate,
d,b),headers:b.headers,data:this.format.write(a)});return d},handleUpdate:function(a,b){this.handleResponse(a,b)},"delete":function(a,b){b=b||{};var c=b.url||a.url||this.options.url+"/"+a.fid;b=OpenLayers.Util.applyDefaults(b,this.options);var d=new OpenLayers.Protocol.Response({reqFeatures:a,requestType:"delete"}),e=this.deleteWithPOST?"POST":"DELETE",c={url:c,callback:this.createCallback(this.handleDelete,d,b),headers:b.headers};this.deleteWithPOST&&(c.data=this.format.write(a));d.priv=OpenLayers.Request[e](c);
return d},handleDelete:function(a,b){this.handleResponse(a,b)},handleResponse:function(a,b){var c=a.priv;b.callback&&(200<=c.status&&300>c.status?("delete"!=a.requestType&&(a.features=this.parseFeatures(c)),a.code=OpenLayers.Protocol.Response.SUCCESS):a.code=OpenLayers.Protocol.Response.FAILURE,b.callback.call(b.scope,a))},parseFeatures:function(a){var b=a.responseXML;b&&b.documentElement||(b=a.responseText);return!b||0>=b.length?null:this.format.read(b)},commit:function(a,b){function c(a){for(var b=
a.features?a.features.length:0,c=Array(b),e=0;e<b;++e)c[e]=a.features[e].fid;r.insertIds=c;d.apply(this,[a])}function d(a){this.callUserCallback(a,b);q=q&&a.success();f++;f>=p&&b.callback&&(r.code=q?OpenLayers.Protocol.Response.SUCCESS:OpenLayers.Protocol.Response.FAILURE,b.callback.apply(b.scope,[r]))}b=OpenLayers.Util.applyDefaults(b,this.options);var e=[],f=0,g={};g[OpenLayers.State.INSERT]=[];g[OpenLayers.State.UPDATE]=[];g[OpenLayers.State.DELETE]=[];for(var h,k,l=[],m=0,n=a.length;m<n;++m)if(h=
a[m],k=g[h.state])k.push(h),l.push(h);var p=(0<g[OpenLayers.State.INSERT].length?1:0)+g[OpenLayers.State.UPDATE].length+g[OpenLayers.State.DELETE].length,q=!0,r=new OpenLayers.Protocol.Response({reqFeatures:l});h=g[OpenLayers.State.INSERT];0<h.length&&e.push(this.create(h,OpenLayers.Util.applyDefaults({callback:c,scope:this},b.create)));h=g[OpenLayers.State.UPDATE];for(m=h.length-1;0<=m;--m)e.push(this.update(h[m],OpenLayers.Util.applyDefaults({callback:d,scope:this},b.update)));h=g[OpenLayers.State.DELETE];
for(m=h.length-1;0<=m;--m)e.push(this["delete"](h[m],OpenLayers.Util.applyDefaults({callback:d,scope:this},b["delete"])));return e},abort:function(a){a&&a.priv.abort()},callUserCallback:function(a,b){var c=b[a.requestType];c&&c.callback&&c.callback.call(c.scope,a)},CLASS_NAME:"OpenLayers.Protocol.HTTP"});OpenLayers.Strategy.Cluster=OpenLayers.Class(OpenLayers.Strategy,{distance:20,threshold:null,features:null,clusters:null,clustering:!1,resolution:null,activate:function(){var a=OpenLayers.Strategy.prototype.activate.call(this);if(a)this.layer.events.on({beforefeaturesadded:this.cacheFeatures,featuresremoved:this.clearCache,moveend:this.cluster,scope:this});return a},deactivate:function(){var a=OpenLayers.Strategy.prototype.deactivate.call(this);a&&(this.clearCache(),this.layer.events.un({beforefeaturesadded:this.cacheFeatures,
featuresremoved:this.clearCache,moveend:this.cluster,scope:this}));return a},cacheFeatures:function(a){var b=!0;this.clustering||(this.clearCache(),this.features=a.features,this.cluster(),b=!1);return b},clearCache:function(){this.clustering||(this.features=null)},cluster:function(a){if((!a||a.zoomChanged)&&this.features&&(a=this.layer.map.getResolution(),a!=this.resolution||!this.clustersExist())){this.resolution=a;a=[];for(var b,c,d,e=0;e<this.features.length;++e)if(b=this.features[e],b.geometry){c=
!1;for(var f=a.length-1;0<=f;--f)if(d=a[f],this.shouldCluster(d,b)){this.addToCluster(d,b);c=!0;break}c||a.push(this.createCluster(this.features[e]))}this.clustering=!0;this.layer.removeAllFeatures();this.clustering=!1;if(0<a.length){if(1<this.threshold)for(b=a.slice(),a=[],e=0,d=b.length;e<d;++e)c=b[e],c.attributes.count<this.threshold?Array.prototype.push.apply(a,c.cluster):a.push(c);this.clustering=!0;this.layer.addFeatures(a);this.clustering=!1}this.clusters=a}},clustersExist:function(){var a=
!1;if(this.clusters&&0<this.clusters.length&&this.clusters.length==this.layer.features.length)for(var a=!0,b=0;b<this.clusters.length;++b)if(this.clusters[b]!=this.layer.features[b]){a=!1;break}return a},shouldCluster:function(a,b){var c=a.geometry.getBounds().getCenterLonLat(),d=b.geometry.getBounds().getCenterLonLat();return Math.sqrt(Math.pow(c.lon-d.lon,2)+Math.pow(c.lat-d.lat,2))/this.resolution<=this.distance},addToCluster:function(a,b){a.cluster.push(b);a.attributes.count+=1},createCluster:function(a){var b=
a.geometry.getBounds().getCenterLonLat(),b=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(b.lon,b.lat),{count:1});b.cluster=[a];return b},CLASS_NAME:"OpenLayers.Strategy.Cluster"});OpenLayers.Strategy.Filter=OpenLayers.Class(OpenLayers.Strategy,{filter:null,cache:null,caching:!1,activate:function(){var a=OpenLayers.Strategy.prototype.activate.apply(this,arguments);a&&(this.cache=[],this.layer.events.on({beforefeaturesadded:this.handleAdd,beforefeaturesremoved:this.handleRemove,scope:this}));return a},deactivate:function(){this.cache=null;this.layer&&this.layer.events&&this.layer.events.un({beforefeaturesadded:this.handleAdd,beforefeaturesremoved:this.handleRemove,scope:this});
return OpenLayers.Strategy.prototype.deactivate.apply(this,arguments)},handleAdd:function(a){if(!this.caching&&this.filter){var b=a.features;a.features=[];for(var c,d=0,e=b.length;d<e;++d)c=b[d],this.filter.evaluate(c)?a.features.push(c):this.cache.push(c)}},handleRemove:function(a){this.caching||(this.cache=[])},setFilter:function(a){this.filter=a;a=this.cache;this.cache=[];this.handleAdd({features:this.layer.features});0<this.cache.length&&(this.caching=!0,this.layer.removeFeatures(this.cache.slice()),
this.caching=!1);0<a.length&&(a={features:a},this.handleAdd(a),0<a.features.length&&(this.caching=!0,this.layer.addFeatures(a.features),this.caching=!1))},CLASS_NAME:"OpenLayers.Strategy.Filter"});OpenLayers.Protocol.SOS=function(a){a=OpenLayers.Util.applyDefaults(a,OpenLayers.Protocol.SOS.DEFAULTS);var b=OpenLayers.Protocol.SOS["v"+a.version.replace(/\./g,"_")];if(!b)throw"Unsupported SOS version: "+a.version;return new b(a)};OpenLayers.Protocol.SOS.DEFAULTS={version:"1.0.0"};OpenLayers.Format.WFSDescribeFeatureType=OpenLayers.Class(OpenLayers.Format.XML,{regExes:{trimSpace:/^\s*|\s*$/g},namespaces:{xsd:"http://www.w3.org/2001/XMLSchema"},readers:{xsd:{schema:function(a,b){var c=[],d={},e,f;this.readChildNodes(a,{complexTypes:c,customTypes:d});var g=a.attributes,h,k;e=0;for(f=g.length;e<f;++e)h=g[e],k=h.name,0===k.indexOf("xmlns")?this.setNamespace(k.split(":")[1]||"",h.value):b[k]=h.value;b.featureTypes=c;b.targetPrefix=this.namespaceAlias[b.targetNamespace];e=0;for(f=
c.length;e<f;++e)g=c[e],h=d[g.typeName],d[g.typeName]&&(g.typeName=h.name)},complexType:function(a,b){var c={typeName:a.getAttribute("name")};this.readChildNodes(a,c);b.complexTypes.push(c)},complexContent:function(a,b){this.readChildNodes(a,b)},extension:function(a,b){this.readChildNodes(a,b)},sequence:function(a,b){var c={elements:[]};this.readChildNodes(a,c);b.properties=c.elements},element:function(a,b){var c;if(b.elements){var d={};c=a.attributes;for(var e,f=0,g=c.length;f<g;++f)e=c[f],d[e.name]=
e.value;c=d.type;c||(c={},this.readChildNodes(a,c),d.restriction=c,d.type=c.base);d.localType=(c.base||c).split(":").pop();b.elements.push(d);this.readChildNodes(a,d)}b.complexTypes&&(c=a.getAttribute("type"),d=c.split(":").pop(),b.customTypes[d]={name:a.getAttribute("name"),type:c})},annotation:function(a,b){b.annotation={};this.readChildNodes(a,b.annotation)},appinfo:function(a,b){b.appinfo||(b.appinfo=[]);b.appinfo.push(this.getChildValue(a))},documentation:function(a,b){b.documentation||(b.documentation=
[]);var c=this.getChildValue(a);b.documentation.push({lang:a.getAttribute("xml:lang"),textContent:c.replace(this.regExes.trimSpace,"")})},simpleType:function(a,b){this.readChildNodes(a,b)},restriction:function(a,b){b.base=a.getAttribute("base");this.readRestriction(a,b)}}},readRestriction:function(a,b){for(var c=a.childNodes,d,e,f=0,g=c.length;f<g;++f)d=c[f],1==d.nodeType&&(e=d.nodeName.split(":").pop(),d=d.getAttribute("value"),b[e]?("string"==typeof b[e]&&(b[e]=[b[e]]),b[e].push(d)):b[e]=d)},read:function(a){"string"==
typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));a&&9==a.nodeType&&(a=a.documentElement);var b={};if("ExceptionReport"===a.nodeName.split(":").pop()){var c=new OpenLayers.Format.OGCExceptionReport;b.error=c.read(a)}else this.readNode(a,b);return b},CLASS_NAME:"OpenLayers.Format.WFSDescribeFeatureType"});OpenLayers.Format.GeoRSS=OpenLayers.Class(OpenLayers.Format.XML,{rssns:"http://backend.userland.com/rss2",featureNS:"http://mapserver.gis.umn.edu/mapserver",georssns:"http://www.georss.org/georss",geons:"http://www.w3.org/2003/01/geo/wgs84_pos#",featureTitle:"Untitled",featureDescription:"No Description",gmlParser:null,xy:!1,createGeometryFromItem:function(a){var b=this.getElementsByTagNameNS(a,this.georssns,"point"),c=this.getElementsByTagNameNS(a,this.geons,"lat"),d=this.getElementsByTagNameNS(a,
this.geons,"long"),e=this.getElementsByTagNameNS(a,this.georssns,"line"),f=this.getElementsByTagNameNS(a,this.georssns,"polygon"),g=this.getElementsByTagNameNS(a,this.georssns,"where");a=this.getElementsByTagNameNS(a,this.georssns,"box");if(0<b.length||0<c.length&&0<d.length){0<b.length?(c=OpenLayers.String.trim(b[0].firstChild.nodeValue).split(/\s+/),2!=c.length&&(c=OpenLayers.String.trim(b[0].firstChild.nodeValue).split(/\s*,\s*/))):c=[parseFloat(c[0].firstChild.nodeValue),parseFloat(d[0].firstChild.nodeValue)];
var h=new OpenLayers.Geometry.Point(c[1],c[0])}else if(0<e.length){c=OpenLayers.String.trim(this.getChildValue(e[0])).split(/\s+/);d=[];e=0;for(f=c.length;e<f;e+=2)b=new OpenLayers.Geometry.Point(c[e+1],c[e]),d.push(b);h=new OpenLayers.Geometry.LineString(d)}else if(0<f.length){c=OpenLayers.String.trim(this.getChildValue(f[0])).split(/\s+/);d=[];e=0;for(f=c.length;e<f;e+=2)b=new OpenLayers.Geometry.Point(c[e+1],c[e]),d.push(b);h=new OpenLayers.Geometry.Polygon([new OpenLayers.Geometry.LinearRing(d)])}else 0<
g.length?(this.gmlParser||(this.gmlParser=new OpenLayers.Format.GML({xy:this.xy})),h=this.gmlParser.parseFeature(g[0]).geometry):0<a.length&&(c=OpenLayers.String.trim(a[0].firstChild.nodeValue).split(/\s+/),d=[],3<c.length&&(b=new OpenLayers.Geometry.Point(c[1],c[0]),d.push(b),b=new OpenLayers.Geometry.Point(c[1],c[2]),d.push(b),b=new OpenLayers.Geometry.Point(c[3],c[2]),d.push(b),b=new OpenLayers.Geometry.Point(c[3],c[0]),d.push(b),b=new OpenLayers.Geometry.Point(c[1],c[0]),d.push(b)),h=new OpenLayers.Geometry.Polygon([new OpenLayers.Geometry.LinearRing(d)]));
h&&(this.internalProjection&&this.externalProjection)&&h.transform(this.externalProjection,this.internalProjection);return h},createFeatureFromItem:function(a){var b=this.createGeometryFromItem(a),c=this._getChildValue(a,"*","title",this.featureTitle),d=this._getChildValue(a,"*","description",this._getChildValue(a,"*","content",this._getChildValue(a,"*","summary",this.featureDescription))),e=this._getChildValue(a,"*","link");if(!e)try{e=this.getElementsByTagNameNS(a,"*","link")[0].getAttribute("href")}catch(f){e=
null}a=this._getChildValue(a,"*","id",null);b=new OpenLayers.Feature.Vector(b,{title:c,description:d,link:e});b.fid=a;return b},_getChildValue:function(a,b,c,d){return(a=this.getElementsByTagNameNS(a,b,c))&&a[0]&&a[0].firstChild&&a[0].firstChild.nodeValue?this.getChildValue(a[0]):void 0==d?"":d},read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));var b=null,b=this.getElementsByTagNameNS(a,"*","item");0==b.length&&(b=this.getElementsByTagNameNS(a,"*","entry"));
a=b.length;for(var c=Array(a),d=0;d<a;d++)c[d]=this.createFeatureFromItem(b[d]);return c},write:function(a){var b;if(OpenLayers.Util.isArray(a)){b=this.createElementNS(this.rssns,"rss");for(var c=0,d=a.length;c<d;c++)b.appendChild(this.createFeatureXML(a[c]))}else b=this.createFeatureXML(a);return OpenLayers.Format.XML.prototype.write.apply(this,[b])},createFeatureXML:function(a){var b=this.buildGeometryNode(a.geometry),c=this.createElementNS(this.rssns,"item"),d=this.createElementNS(this.rssns,"title");
d.appendChild(this.createTextNode(a.attributes.title?a.attributes.title:""));var e=this.createElementNS(this.rssns,"description");e.appendChild(this.createTextNode(a.attributes.description?a.attributes.description:""));c.appendChild(d);c.appendChild(e);a.attributes.link&&(d=this.createElementNS(this.rssns,"link"),d.appendChild(this.createTextNode(a.attributes.link)),c.appendChild(d));for(var f in a.attributes)"link"!=f&&("title"!=f&&"description"!=f)&&(d=this.createTextNode(a.attributes[f]),e=f,-1!=
f.search(":")&&(e=f.split(":")[1]),e=this.createElementNS(this.featureNS,"feature:"+e),e.appendChild(d),c.appendChild(e));c.appendChild(b);return c},buildGeometryNode:function(a){this.internalProjection&&this.externalProjection&&(a=a.clone(),a.transform(this.internalProjection,this.externalProjection));var b;if("OpenLayers.Geometry.Polygon"==a.CLASS_NAME)b=this.createElementNS(this.georssns,"georss:polygon"),b.appendChild(this.buildCoordinatesNode(a.components[0]));else if("OpenLayers.Geometry.LineString"==
a.CLASS_NAME)b=this.createElementNS(this.georssns,"georss:line"),b.appendChild(this.buildCoordinatesNode(a));else if("OpenLayers.Geometry.Point"==a.CLASS_NAME)b=this.createElementNS(this.georssns,"georss:point"),b.appendChild(this.buildCoordinatesNode(a));else throw"Couldn't parse "+a.CLASS_NAME;return b},buildCoordinatesNode:function(a){var b=null;a.components&&(b=a.components);if(b){a=b.length;for(var c=Array(a),d=0;d<a;d++)c[d]=b[d].y+" "+b[d].x;b=c.join(" ")}else b=a.y+" "+a.x;return this.createTextNode(b)},
CLASS_NAME:"OpenLayers.Format.GeoRSS"});OpenLayers.Format.WPSCapabilities=OpenLayers.Class(OpenLayers.Format.XML.VersionedOGC,{defaultVersion:"1.0.0",CLASS_NAME:"OpenLayers.Format.WPSCapabilities"});OpenLayers.Format.WPSCapabilities.v1_0_0=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{ows:"http://www.opengis.net/ows/1.1",wps:"http://www.opengis.net/wps/1.0.0",xlink:"http://www.w3.org/1999/xlink"},regExes:{trimSpace:/^\s*|\s*$/g,removeSpace:/\s*/g,splitSpace:/\s+/,trimComma:/\s*,\s*/g},initialize:function(a){OpenLayers.Format.XML.prototype.initialize.apply(this,[a])},read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));a&&9==a.nodeType&&(a=a.documentElement);
var b={};this.readNode(a,b);return b},readers:{wps:{Capabilities:function(a,b){this.readChildNodes(a,b)},ProcessOfferings:function(a,b){b.processOfferings={};this.readChildNodes(a,b.processOfferings)},Process:function(a,b){var c={processVersion:this.getAttributeNS(a,this.namespaces.wps,"processVersion")};this.readChildNodes(a,c);b[c.identifier]=c},Languages:function(a,b){b.languages=[];this.readChildNodes(a,b.languages)},Default:function(a,b){var c={isDefault:!0};this.readChildNodes(a,c);b.push(c)},
Supported:function(a,b){var c={};this.readChildNodes(a,c);b.push(c)}},ows:OpenLayers.Format.OWSCommon.v1_1_0.prototype.readers.ows},CLASS_NAME:"OpenLayers.Format.WPSCapabilities.v1_0_0"});OpenLayers.Control.PinchZoom=OpenLayers.Class(OpenLayers.Control,{type:OpenLayers.Control.TYPE_TOOL,pinchOrigin:null,currentCenter:null,autoActivate:!0,preserveCenter:!1,initialize:function(a){OpenLayers.Control.prototype.initialize.apply(this,arguments);this.handler=new OpenLayers.Handler.Pinch(this,{start:this.pinchStart,move:this.pinchMove,done:this.pinchDone},this.handlerOptions)},pinchStart:function(a,b){var c=this.preserveCenter?this.map.getPixelFromLonLat(this.map.getCenter()):a.xy;this.currentCenter=
this.pinchOrigin=c},pinchMove:function(a,b){var c=b.scale,d=this.map.layerContainerOriginPx,e=this.pinchOrigin,f=this.preserveCenter?this.map.getPixelFromLonLat(this.map.getCenter()):a.xy,g=Math.round(d.x+f.x-e.x+(c-1)*(d.x-e.x)),d=Math.round(d.y+f.y-e.y+(c-1)*(d.y-e.y));this.map.applyTransform(g,d,c);this.currentCenter=f},pinchDone:function(a,b,c){this.map.applyTransform();a=this.map.getZoomForResolution(this.map.getResolution()/c.scale,!0);if(a!==this.map.getZoom()||!this.currentCenter.equals(this.pinchOrigin)){b=
this.map.getResolutionForZoom(a);c=this.map.getLonLatFromPixel(this.pinchOrigin);var d=this.currentCenter,e=this.map.getSize();c.lon+=b*(e.w/2-d.x);c.lat-=b*(e.h/2-d.y);this.map.div.clientWidth=this.map.div.clientWidth;this.map.setCenter(c,a)}},CLASS_NAME:"OpenLayers.Control.PinchZoom"});OpenLayers.Control.TouchNavigation=OpenLayers.Class(OpenLayers.Control,{dragPan:null,dragPanOptions:null,pinchZoom:null,pinchZoomOptions:null,clickHandlerOptions:null,documentDrag:!1,autoActivate:!0,initialize:function(a){this.handlers={};OpenLayers.Control.prototype.initialize.apply(this,arguments)},destroy:function(){this.deactivate();this.dragPan&&this.dragPan.destroy();this.dragPan=null;this.pinchZoom&&(this.pinchZoom.destroy(),delete this.pinchZoom);OpenLayers.Control.prototype.destroy.apply(this,
arguments)},activate:function(){return OpenLayers.Control.prototype.activate.apply(this,arguments)?(this.dragPan.activate(),this.handlers.click.activate(),this.pinchZoom.activate(),!0):!1},deactivate:function(){return OpenLayers.Control.prototype.deactivate.apply(this,arguments)?(this.dragPan.deactivate(),this.handlers.click.deactivate(),this.pinchZoom.deactivate(),!0):!1},draw:function(){var a={click:this.defaultClick,dblclick:this.defaultDblClick},b=OpenLayers.Util.extend({"double":!0,stopDouble:!0,
pixelTolerance:2},this.clickHandlerOptions);this.handlers.click=new OpenLayers.Handler.Click(this,a,b);this.dragPan=new OpenLayers.Control.DragPan(OpenLayers.Util.extend({map:this.map,documentDrag:this.documentDrag},this.dragPanOptions));this.dragPan.draw();this.pinchZoom=new OpenLayers.Control.PinchZoom(OpenLayers.Util.extend({map:this.map},this.pinchZoomOptions))},defaultClick:function(a){a.lastTouches&&2==a.lastTouches.length&&this.map.zoomOut()},defaultDblClick:function(a){this.map.zoomTo(this.map.zoom+
1,a.xy)},CLASS_NAME:"OpenLayers.Control.TouchNavigation"});OpenLayers.Console.warn("OpenLayers.Rico is deprecated");OpenLayers.Rico=OpenLayers.Rico||{};
OpenLayers.Rico.Color=OpenLayers.Class({initialize:function(a,b,c){this.rgb={r:a,g:b,b:c}},setRed:function(a){this.rgb.r=a},setGreen:function(a){this.rgb.g=a},setBlue:function(a){this.rgb.b=a},setHue:function(a){var b=this.asHSB();b.h=a;this.rgb=OpenLayers.Rico.Color.HSBtoRGB(b.h,b.s,b.b)},setSaturation:function(a){var b=this.asHSB();b.s=a;this.rgb=OpenLayers.Rico.Color.HSBtoRGB(b.h,b.s,b.b)},setBrightness:function(a){var b=this.asHSB();b.b=a;this.rgb=OpenLayers.Rico.Color.HSBtoRGB(b.h,b.s,b.b)},
darken:function(a){var b=this.asHSB();this.rgb=OpenLayers.Rico.Color.HSBtoRGB(b.h,b.s,Math.max(b.b-a,0))},brighten:function(a){var b=this.asHSB();this.rgb=OpenLayers.Rico.Color.HSBtoRGB(b.h,b.s,Math.min(b.b+a,1))},blend:function(a){this.rgb.r=Math.floor((this.rgb.r+a.rgb.r)/2);this.rgb.g=Math.floor((this.rgb.g+a.rgb.g)/2);this.rgb.b=Math.floor((this.rgb.b+a.rgb.b)/2)},isBright:function(){this.asHSB();return 0.5<this.asHSB().b},isDark:function(){return!this.isBright()},asRGB:function(){return"rgb("+
this.rgb.r+","+this.rgb.g+","+this.rgb.b+")"},asHex:function(){return"#"+this.rgb.r.toColorPart()+this.rgb.g.toColorPart()+this.rgb.b.toColorPart()},asHSB:function(){return OpenLayers.Rico.Color.RGBtoHSB(this.rgb.r,this.rgb.g,this.rgb.b)},toString:function(){return this.asHex()}});
OpenLayers.Rico.Color.createFromHex=function(a){if(4==a.length){var b=a;a="#";for(var c=1;4>c;c++)a+=b.charAt(c)+b.charAt(c)}0==a.indexOf("#")&&(a=a.substring(1));b=a.substring(0,2);c=a.substring(2,4);a=a.substring(4,6);return new OpenLayers.Rico.Color(parseInt(b,16),parseInt(c,16),parseInt(a,16))};
OpenLayers.Rico.Color.createColorFromBackground=function(a){var b=OpenLayers.Element.getStyle(OpenLayers.Util.getElement(a),"backgroundColor");return"transparent"==b&&a.parentNode?OpenLayers.Rico.Color.createColorFromBackground(a.parentNode):null==b?new OpenLayers.Rico.Color(255,255,255):0==b.indexOf("rgb(")?(a=b.substring(4,b.length-1).split(","),new OpenLayers.Rico.Color(parseInt(a[0]),parseInt(a[1]),parseInt(a[2]))):0==b.indexOf("#")?OpenLayers.Rico.Color.createFromHex(b):new OpenLayers.Rico.Color(255,
255,255)};
OpenLayers.Rico.Color.HSBtoRGB=function(a,b,c){var d=0,e=0,f=0;if(0==b)f=e=d=parseInt(255*c+0.5);else{a=6*(a-Math.floor(a));var g=a-Math.floor(a),h=c*(1-b),k=c*(1-b*g);b=c*(1-b*(1-g));switch(parseInt(a)){case 0:d=255*c+0.5;e=255*b+0.5;f=255*h+0.5;break;case 1:d=255*k+0.5;e=255*c+0.5;f=255*h+0.5;break;case 2:d=255*h+0.5;e=255*c+0.5;f=255*b+0.5;break;case 3:d=255*h+0.5;e=255*k+0.5;f=255*c+0.5;break;case 4:d=255*b+0.5;e=255*h+0.5;f=255*c+0.5;break;case 5:d=255*c+0.5,e=255*h+0.5,f=255*k+0.5}}return{r:parseInt(d),g:parseInt(e),
b:parseInt(f)}};OpenLayers.Rico.Color.RGBtoHSB=function(a,b,c){var d,e=a>b?a:b;c>e&&(e=c);var f=a<b?a:b;c<f&&(f=c);d=0!=e?(e-f)/e:0;if(0==d)a=0;else{var g=(e-a)/(e-f),h=(e-b)/(e-f);c=(e-c)/(e-f);a=(a==e?c-h:b==e?2+g-c:4+h-g)/6;0>a&&(a+=1)}return{h:a,s:d,b:e/255}};OpenLayers.Style2=OpenLayers.Class({id:null,name:null,title:null,description:null,layerName:null,isDefault:!1,rules:null,initialize:function(a){OpenLayers.Util.extend(this,a);this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_")},destroy:function(){for(var a=0,b=this.rules.length;a<b;a++)this.rules[a].destroy();delete this.rules},clone:function(){var a=OpenLayers.Util.extend({},this);if(this.rules){a.rules=[];for(var b=0,c=this.rules.length;b<c;++b)a.rules.push(this.rules[b].clone())}return new OpenLayers.Style2(a)},
CLASS_NAME:"OpenLayers.Style2"});OpenLayers.Format.WFS=OpenLayers.Class(OpenLayers.Format.GML,{layer:null,wfsns:"http://www.opengis.net/wfs",ogcns:"http://www.opengis.net/ogc",initialize:function(a,b){OpenLayers.Format.GML.prototype.initialize.apply(this,[a]);this.layer=b;this.layer.featureNS&&(this.featureNS=this.layer.featureNS);this.layer.options.geometry_column&&(this.geometryName=this.layer.options.geometry_column);this.layer.options.typename&&(this.featureName=this.layer.options.typename)},write:function(a){var b=this.createElementNS(this.wfsns,
"wfs:Transaction");b.setAttribute("version","1.0.0");b.setAttribute("service","WFS");for(var c=0;c<a.length;c++)switch(a[c].state){case OpenLayers.State.INSERT:b.appendChild(this.insert(a[c]));break;case OpenLayers.State.UPDATE:b.appendChild(this.update(a[c]));break;case OpenLayers.State.DELETE:b.appendChild(this.remove(a[c]))}return OpenLayers.Format.XML.prototype.write.apply(this,[b])},createFeatureXML:function(a){var b=this.buildGeometryNode(a.geometry),c=this.createElementNS(this.featureNS,"feature:"+
this.geometryName);c.appendChild(b);b=this.createElementNS(this.featureNS,"feature:"+this.featureName);b.appendChild(c);for(var d in a.attributes){var c=this.createTextNode(a.attributes[d]),e=d;-1!=d.search(":")&&(e=d.split(":")[1]);e=this.createElementNS(this.featureNS,"feature:"+e);e.appendChild(c);b.appendChild(e)}return b},insert:function(a){var b=this.createElementNS(this.wfsns,"wfs:Insert");b.appendChild(this.createFeatureXML(a));return b},update:function(a){a.fid||OpenLayers.Console.userError(OpenLayers.i18n("noFID"));
var b=this.createElementNS(this.wfsns,"wfs:Update");b.setAttribute("typeName",this.featurePrefix+":"+this.featureName);b.setAttribute("xmlns:"+this.featurePrefix,this.featureNS);var c=this.createElementNS(this.wfsns,"wfs:Property"),d=this.createElementNS(this.wfsns,"wfs:Name"),e=this.createTextNode(this.geometryName);d.appendChild(e);c.appendChild(d);d=this.createElementNS(this.wfsns,"wfs:Value");e=this.buildGeometryNode(a.geometry);a.layer&&e.setAttribute("srsName",a.layer.projection.getCode());
d.appendChild(e);c.appendChild(d);b.appendChild(c);for(var f in a.attributes)c=this.createElementNS(this.wfsns,"wfs:Property"),d=this.createElementNS(this.wfsns,"wfs:Name"),d.appendChild(this.createTextNode(f)),c.appendChild(d),d=this.createElementNS(this.wfsns,"wfs:Value"),d.appendChild(this.createTextNode(a.attributes[f])),c.appendChild(d),b.appendChild(c);c=this.createElementNS(this.ogcns,"ogc:Filter");f=this.createElementNS(this.ogcns,"ogc:FeatureId");f.setAttribute("fid",a.fid);c.appendChild(f);
b.appendChild(c);return b},remove:function(a){if(!a.fid)return OpenLayers.Console.userError(OpenLayers.i18n("noFID")),!1;var b=this.createElementNS(this.wfsns,"wfs:Delete");b.setAttribute("typeName",this.featurePrefix+":"+this.featureName);b.setAttribute("xmlns:"+this.featurePrefix,this.featureNS);var c=this.createElementNS(this.ogcns,"ogc:Filter"),d=this.createElementNS(this.ogcns,"ogc:FeatureId");d.setAttribute("fid",a.fid);c.appendChild(d);b.appendChild(c);return b},destroy:function(){this.layer=
null},CLASS_NAME:"OpenLayers.Format.WFS"});OpenLayers.Format.SLD.v1_0_0_GeoServer=OpenLayers.Class(OpenLayers.Format.SLD.v1_0_0,{version:"1.0.0",profile:"GeoServer",readers:OpenLayers.Util.applyDefaults({sld:OpenLayers.Util.applyDefaults({Priority:function(a,b){var c=this.readers.ogc._expression.call(this,a);c&&(b.priority=c)},VendorOption:function(a,b){b.vendorOptions||(b.vendorOptions={});b.vendorOptions[a.getAttribute("name")]=this.getChildValue(a)},TextSymbolizer:function(a,b){OpenLayers.Format.SLD.v1_0_0.prototype.readers.sld.TextSymbolizer.apply(this,
arguments);var c=this.multipleSymbolizers?b.symbolizers[b.symbolizers.length-1]:b.symbolizer.Text;void 0===c.graphic&&(c.graphic=!1)}},OpenLayers.Format.SLD.v1_0_0.prototype.readers.sld)},OpenLayers.Format.SLD.v1_0_0.prototype.readers),writers:OpenLayers.Util.applyDefaults({sld:OpenLayers.Util.applyDefaults({Priority:function(a){return this.writers.sld._OGCExpression.call(this,"sld:Priority",a)},VendorOption:function(a){return this.createElementNSPlus("sld:VendorOption",{attributes:{name:a.name},
value:a.value})},TextSymbolizer:function(a){var b=OpenLayers.Format.SLD.v1_0_0.prototype.writers.sld.TextSymbolizer.apply(this,arguments);!1!==a.graphic&&(a.externalGraphic||a.graphicName)&&this.writeNode("Graphic",a,b);"priority"in a&&this.writeNode("Priority",a.priority,b);return this.addVendorOptions(b,a)},PointSymbolizer:function(a){var b=OpenLayers.Format.SLD.v1_0_0.prototype.writers.sld.PointSymbolizer.apply(this,arguments);return this.addVendorOptions(b,a)},LineSymbolizer:function(a){var b=
OpenLayers.Format.SLD.v1_0_0.prototype.writers.sld.LineSymbolizer.apply(this,arguments);return this.addVendorOptions(b,a)},PolygonSymbolizer:function(a){var b=OpenLayers.Format.SLD.v1_0_0.prototype.writers.sld.PolygonSymbolizer.apply(this,arguments);return this.addVendorOptions(b,a)}},OpenLayers.Format.SLD.v1_0_0.prototype.writers.sld)},OpenLayers.Format.SLD.v1_0_0.prototype.writers),addVendorOptions:function(a,b){if(b.vendorOptions)for(var c in b.vendorOptions)this.writeNode("VendorOption",{name:c,
value:b.vendorOptions[c]},a);return a},CLASS_NAME:"OpenLayers.Format.SLD.v1_0_0_GeoServer"});OpenLayers.Layer.Boxes=OpenLayers.Class(OpenLayers.Layer.Markers,{drawMarker:function(a){var b=this.map.getLayerPxFromLonLat({lon:a.bounds.left,lat:a.bounds.top}),c=this.map.getLayerPxFromLonLat({lon:a.bounds.right,lat:a.bounds.bottom});null==c||null==b?a.display(!1):(b=a.draw(b,{w:Math.max(1,c.x-b.x),h:Math.max(1,c.y-b.y)}),a.drawn||(this.div.appendChild(b),a.drawn=!0))},removeMarker:function(a){OpenLayers.Util.removeItem(this.markers,a);null!=a.div&&a.div.parentNode==this.div&&this.div.removeChild(a.div)},
CLASS_NAME:"OpenLayers.Layer.Boxes"});OpenLayers.Format.WFSCapabilities.v1_0_0=OpenLayers.Class(OpenLayers.Format.WFSCapabilities.v1,{readers:{wfs:OpenLayers.Util.applyDefaults({Service:function(a,b){b.service={};this.readChildNodes(a,b.service)},Fees:function(a,b){var c=this.getChildValue(a);c&&"none"!=c.toLowerCase()&&(b.fees=c)},AccessConstraints:function(a,b){var c=this.getChildValue(a);c&&"none"!=c.toLowerCase()&&(b.accessConstraints=c)},OnlineResource:function(a,b){var c=this.getChildValue(a);c&&"none"!=c.toLowerCase()&&(b.onlineResource=
c)},Keywords:function(a,b){var c=this.getChildValue(a);c&&"none"!=c.toLowerCase()&&(b.keywords=c.split(", "))},Capability:function(a,b){b.capability={};this.readChildNodes(a,b.capability)},Request:function(a,b){b.request={};this.readChildNodes(a,b.request)},GetFeature:function(a,b){b.getfeature={href:{},formats:[]};this.readChildNodes(a,b.getfeature)},ResultFormat:function(a,b){for(var c=a.childNodes,d,e=0;e<c.length;e++)d=c[e],1==d.nodeType&&b.formats.push(d.nodeName)},DCPType:function(a,b){this.readChildNodes(a,
b)},HTTP:function(a,b){this.readChildNodes(a,b.href)},Get:function(a,b){b.get=a.getAttribute("onlineResource")},Post:function(a,b){b.post=a.getAttribute("onlineResource")},SRS:function(a,b){var c=this.getChildValue(a);c&&(b.srs=c)}},OpenLayers.Format.WFSCapabilities.v1.prototype.readers.wfs)},CLASS_NAME:"OpenLayers.Format.WFSCapabilities.v1_0_0"});OpenLayers.Format.WMSCapabilities.v1_3=OpenLayers.Class(OpenLayers.Format.WMSCapabilities.v1,{readers:{wms:OpenLayers.Util.applyDefaults({WMS_Capabilities:function(a,b){this.readChildNodes(a,b)},LayerLimit:function(a,b){b.layerLimit=parseInt(this.getChildValue(a))},MaxWidth:function(a,b){b.maxWidth=parseInt(this.getChildValue(a))},MaxHeight:function(a,b){b.maxHeight=parseInt(this.getChildValue(a))},BoundingBox:function(a,b){var c=OpenLayers.Format.WMSCapabilities.v1.prototype.readers.wms.BoundingBox.apply(this,
[a,b]);c.srs=a.getAttribute("CRS");b.bbox[c.srs]=c},CRS:function(a,b){this.readers.wms.SRS.apply(this,[a,b])},EX_GeographicBoundingBox:function(a,b){b.llbbox=[];this.readChildNodes(a,b.llbbox)},westBoundLongitude:function(a,b){b[0]=this.getChildValue(a)},eastBoundLongitude:function(a,b){b[2]=this.getChildValue(a)},southBoundLatitude:function(a,b){b[1]=this.getChildValue(a)},northBoundLatitude:function(a,b){b[3]=this.getChildValue(a)},MinScaleDenominator:function(a,b){b.maxScale=parseFloat(this.getChildValue(a)).toPrecision(16)},
MaxScaleDenominator:function(a,b){b.minScale=parseFloat(this.getChildValue(a)).toPrecision(16)},Dimension:function(a,b){var c={name:a.getAttribute("name").toLowerCase(),units:a.getAttribute("units"),unitsymbol:a.getAttribute("unitSymbol"),nearestVal:"1"===a.getAttribute("nearestValue"),multipleVal:"1"===a.getAttribute("multipleValues"),"default":a.getAttribute("default")||"",current:"1"===a.getAttribute("current"),values:this.getChildValue(a).split(",")};b.dimensions[c.name]=c},Keyword:function(a,
b){var c={value:this.getChildValue(a),vocabulary:a.getAttribute("vocabulary")};b.keywords&&b.keywords.push(c)}},OpenLayers.Format.WMSCapabilities.v1.prototype.readers.wms),sld:{UserDefinedSymbolization:function(a,b){this.readers.wms.UserDefinedSymbolization.apply(this,[a,b]);b.userSymbols.inlineFeature=1==parseInt(a.getAttribute("InlineFeature"));b.userSymbols.remoteWCS=1==parseInt(a.getAttribute("RemoteWCS"))},DescribeLayer:function(a,b){this.readers.wms.DescribeLayer.apply(this,[a,b])},GetLegendGraphic:function(a,
b){this.readers.wms.GetLegendGraphic.apply(this,[a,b])}}},CLASS_NAME:"OpenLayers.Format.WMSCapabilities.v1_3"});OpenLayers.Layer.Zoomify=OpenLayers.Class(OpenLayers.Layer.Grid,{size:null,isBaseLayer:!0,standardTileSize:256,tileOriginCorner:"tl",numberOfTiers:0,tileCountUpToTier:null,tierSizeInTiles:null,tierImageSize:null,initialize:function(a,b,c,d){this.initializeZoomify(c);OpenLayers.Layer.Grid.prototype.initialize.apply(this,[a,b,c,{},d])},initializeZoomify:function(a){var b=a.clone();this.size=a.clone();a=new OpenLayers.Size(Math.ceil(b.w/this.standardTileSize),Math.ceil(b.h/this.standardTileSize));this.tierSizeInTiles=
[a];for(this.tierImageSize=[b];b.w>this.standardTileSize||b.h>this.standardTileSize;)b=new OpenLayers.Size(Math.floor(b.w/2),Math.floor(b.h/2)),a=new OpenLayers.Size(Math.ceil(b.w/this.standardTileSize),Math.ceil(b.h/this.standardTileSize)),this.tierSizeInTiles.push(a),this.tierImageSize.push(b);this.tierSizeInTiles.reverse();this.tierImageSize.reverse();this.numberOfTiers=this.tierSizeInTiles.length;b=[1];this.tileCountUpToTier=[0];for(a=1;a<this.numberOfTiers;a++)b.unshift(Math.pow(2,a)),this.tileCountUpToTier.push(this.tierSizeInTiles[a-
1].w*this.tierSizeInTiles[a-1].h+this.tileCountUpToTier[a-1]);this.serverResolutions||(this.serverResolutions=b)},destroy:function(){OpenLayers.Layer.Grid.prototype.destroy.apply(this,arguments);this.tileCountUpToTier.length=0;this.tierSizeInTiles.length=0;this.tierImageSize.length=0},clone:function(a){null==a&&(a=new OpenLayers.Layer.Zoomify(this.name,this.url,this.size,this.options));return a=OpenLayers.Layer.Grid.prototype.clone.apply(this,[a])},getURL:function(a){a=this.adjustBounds(a);var b=
this.getServerResolution(),c=Math.round((a.left-this.tileOrigin.lon)/(b*this.tileSize.w));a=Math.round((this.tileOrigin.lat-a.top)/(b*this.tileSize.h));b=this.getZoomForResolution(b);c="TileGroup"+Math.floor((c+a*this.tierSizeInTiles[b].w+this.tileCountUpToTier[b])/256)+"/"+b+"-"+c+"-"+a+".jpg";b=this.url;OpenLayers.Util.isArray(b)&&(b=this.selectUrl(c,b));return b+c},getImageSize:function(){if(0<arguments.length){var a=this.adjustBounds(arguments[0]),b=this.getServerResolution(),c=Math.round((a.left-
this.tileOrigin.lon)/(b*this.tileSize.w)),a=Math.round((this.tileOrigin.lat-a.top)/(b*this.tileSize.h)),b=this.getZoomForResolution(b),d=this.standardTileSize,e=this.standardTileSize;c==this.tierSizeInTiles[b].w-1&&(d=this.tierImageSize[b].w%this.standardTileSize);a==this.tierSizeInTiles[b].h-1&&(e=this.tierImageSize[b].h%this.standardTileSize);return new OpenLayers.Size(d,e)}return this.tileSize},setMap:function(a){OpenLayers.Layer.Grid.prototype.setMap.apply(this,arguments);this.tileOrigin=new OpenLayers.LonLat(this.map.maxExtent.left,
this.map.maxExtent.top)},CLASS_NAME:"OpenLayers.Layer.Zoomify"});OpenLayers.Layer.MapServer=OpenLayers.Class(OpenLayers.Layer.Grid,{DEFAULT_PARAMS:{mode:"map",map_imagetype:"png"},initialize:function(a,b,c,d){OpenLayers.Layer.Grid.prototype.initialize.apply(this,arguments);this.params=OpenLayers.Util.applyDefaults(this.params,this.DEFAULT_PARAMS);if(null==d||null==d.isBaseLayer)this.isBaseLayer="true"!=this.params.transparent&&!0!=this.params.transparent},clone:function(a){null==a&&(a=new OpenLayers.Layer.MapServer(this.name,this.url,this.params,this.getOptions()));
return a=OpenLayers.Layer.Grid.prototype.clone.apply(this,[a])},getURL:function(a){a=this.adjustBounds(a);a=[a.left,a.bottom,a.right,a.top];var b=this.getImageSize();return this.getFullRequestString({mapext:a,imgext:a,map_size:[b.w,b.h],imgx:b.w/2,imgy:b.h/2,imgxy:[b.w,b.h]})},getFullRequestString:function(a,b){var c=null==b?this.url:b,d=OpenLayers.Util.extend({},this.params),d=OpenLayers.Util.extend(d,a),e=OpenLayers.Util.getParameterString(d);OpenLayers.Util.isArray(c)&&(c=this.selectUrl(e,c));
var e=OpenLayers.Util.upperCaseObject(OpenLayers.Util.getParameters(c)),f;for(f in d)f.toUpperCase()in e&&delete d[f];e=OpenLayers.Util.getParameterString(d);d=c;e=e.replace(/,/g,"+");""!=e&&(f=c.charAt(c.length-1),d="&"==f||"?"==f?d+e:-1==c.indexOf("?")?d+("?"+e):d+("&"+e));return d},CLASS_NAME:"OpenLayers.Layer.MapServer"});OpenLayers.Renderer.VML=OpenLayers.Class(OpenLayers.Renderer.Elements,{xmlns:"urn:schemas-microsoft-com:vml",symbolCache:{},offset:null,initialize:function(a){if(this.supported()){if(!document.namespaces.olv){document.namespaces.add("olv",this.xmlns);for(var b=document.createStyleSheet(),c="shape rect oval fill stroke imagedata group textbox".split(" "),d=0,e=c.length;d<e;d++)b.addRule("olv\\:"+c[d],"behavior: url(#default#VML); position: absolute; display: inline-block;")}OpenLayers.Renderer.Elements.prototype.initialize.apply(this,
arguments)}},supported:function(){return!!document.namespaces},setExtent:function(a,b){var c=OpenLayers.Renderer.Elements.prototype.setExtent.apply(this,arguments),d=this.getResolution(),e=a.left/d|0,d=a.top/d-this.size.h|0;b||!this.offset?(this.offset={x:e,y:d},d=e=0):(e-=this.offset.x,d-=this.offset.y);this.root.coordorigin=e-this.xOffset+" "+d;for(var e=[this.root,this.vectorRoot,this.textRoot],f=0,g=e.length;f<g;++f)d=e[f],d.coordsize=this.size.w+" "+this.size.h;this.root.style.flip="y";return c},
setSize:function(a){OpenLayers.Renderer.prototype.setSize.apply(this,arguments);for(var b=[this.rendererRoot,this.root,this.vectorRoot,this.textRoot],c=this.size.w+"px",d=this.size.h+"px",e,f=0,g=b.length;f<g;++f)e=b[f],e.style.width=c,e.style.height=d},getNodeType:function(a,b){var c=null;switch(a.CLASS_NAME){case "OpenLayers.Geometry.Point":c=b.externalGraphic?"olv:rect":this.isComplexSymbol(b.graphicName)?"olv:shape":"olv:oval";break;case "OpenLayers.Geometry.Rectangle":c="olv:rect";break;case "OpenLayers.Geometry.LineString":case "OpenLayers.Geometry.LinearRing":case "OpenLayers.Geometry.Polygon":case "OpenLayers.Geometry.Curve":c=
"olv:shape"}return c},setStyle:function(a,b,c,d){b=b||a._style;c=c||a._options;var e=b.fillColor,f=b.title||b.graphicTitle;f&&(a.title=f);if("OpenLayers.Geometry.Point"===a._geometryClass)if(b.externalGraphic){c.isFilled=!0;var e=b.graphicWidth||b.graphicHeight,f=b.graphicHeight||b.graphicWidth,e=e?e:2*b.pointRadius,f=f?f:2*b.pointRadius,g=this.getResolution(),h=void 0!=b.graphicXOffset?b.graphicXOffset:-(0.5*e),k=void 0!=b.graphicYOffset?b.graphicYOffset:-(0.5*f);a.style.left=((d.x-this.featureDx)/
g-this.offset.x+h|0)+"px";a.style.top=(d.y/g-this.offset.y-(k+f)|0)+"px";a.style.width=e+"px";a.style.height=f+"px";a.style.flip="y";e="none";c.isStroked=!1}else this.isComplexSymbol(b.graphicName)?(f=this.importSymbol(b.graphicName),a.path=f.path,a.coordorigin=f.left+","+f.bottom,f=f.size,a.coordsize=f+","+f,this.drawCircle(a,d,b.pointRadius),a.style.flip="y"):this.drawCircle(a,d,b.pointRadius);c.isFilled?a.fillcolor=e:a.filled="false";d=a.getElementsByTagName("fill");d=0==d.length?null:d[0];c.isFilled?
(d||(d=this.createNode("olv:fill",a.id+"_fill")),d.opacity=b.fillOpacity,"OpenLayers.Geometry.Point"===a._geometryClass&&b.externalGraphic&&(b.graphicOpacity&&(d.opacity=b.graphicOpacity),d.src=b.externalGraphic,d.type="frame",b.graphicWidth&&b.graphicHeight||(d.aspect="atmost")),d.parentNode!=a&&a.appendChild(d)):d&&a.removeChild(d);e=b.rotation;if(void 0!==e||void 0!==a._rotation)a._rotation=e,b.externalGraphic?(this.graphicRotate(a,h,k,b),d.opacity=0):"OpenLayers.Geometry.Point"===a._geometryClass&&
(a.style.rotation=e||0);h=a.getElementsByTagName("stroke");h=0==h.length?null:h[0];c.isStroked?(h||(h=this.createNode("olv:stroke",a.id+"_stroke"),a.appendChild(h)),h.on=!0,h.color=b.strokeColor,h.weight=b.strokeWidth+"px",h.opacity=b.strokeOpacity,h.endcap="butt"==b.strokeLinecap?"flat":b.strokeLinecap||"round",b.strokeDashstyle&&(h.dashstyle=this.dashStyle(b))):(a.stroked=!1,h&&(h.on=!1));"inherit"!=b.cursor&&null!=b.cursor&&(a.style.cursor=b.cursor);return a},graphicRotate:function(a,b,c,d){d=
d||a._style;var e=d.rotation||0,f,g;if(d.graphicWidth&&d.graphicHeight){g=Math.max(d.graphicWidth,d.graphicHeight);f=d.graphicWidth/d.graphicHeight;var h=Math.round(d.graphicWidth||g*f),k=Math.round(d.graphicHeight||g);a.style.width=h+"px";a.style.height=k+"px";var l=document.getElementById(a.id+"_image");l||(l=this.createNode("olv:imagedata",a.id+"_image"),a.appendChild(l));l.style.width=h+"px";l.style.height=k+"px";l.src=d.externalGraphic;l.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='', sizingMethod='scale')";
l=e*Math.PI/180;e=Math.sin(l);l=Math.cos(l);e="progid:DXImageTransform.Microsoft.Matrix(M11="+l+",M12="+-e+",M21="+e+",M22="+l+",SizingMethod='auto expand')\n";(l=d.graphicOpacity||d.fillOpacity)&&1!=l&&(e+="progid:DXImageTransform.Microsoft.BasicImage(opacity="+l+")\n");a.style.filter=e;e=new OpenLayers.Geometry.Point(-b,-c);h=(new OpenLayers.Bounds(0,0,h,k)).toGeometry();h.rotate(d.rotation,e);h=h.getBounds();a.style.left=Math.round(parseInt(a.style.left)+h.left)+"px";a.style.top=Math.round(parseInt(a.style.top)-
h.bottom)+"px"}else{var m=new Image;m.onreadystatechange=OpenLayers.Function.bind(function(){if("complete"==m.readyState||"interactive"==m.readyState)f=m.width/m.height,g=Math.max(2*d.pointRadius,d.graphicWidth||0,d.graphicHeight||0),b*=f,d.graphicWidth=g*f,d.graphicHeight=g,this.graphicRotate(a,b,c,d)},this);m.src=d.externalGraphic}},postDraw:function(a){a.style.visibility="visible";var b=a._style.fillColor,c=a._style.strokeColor;"none"==b&&a.fillcolor!=b&&(a.fillcolor=b);"none"==c&&a.strokecolor!=
c&&(a.strokecolor=c)},setNodeDimension:function(a,b){var c=b.getBounds();if(c){var d=this.getResolution(),c=new OpenLayers.Bounds((c.left-this.featureDx)/d-this.offset.x|0,c.bottom/d-this.offset.y|0,(c.right-this.featureDx)/d-this.offset.x|0,c.top/d-this.offset.y|0);a.style.left=c.left+"px";a.style.top=c.top+"px";a.style.width=c.getWidth()+"px";a.style.height=c.getHeight()+"px";a.coordorigin=c.left+" "+c.top;a.coordsize=c.getWidth()+" "+c.getHeight()}},dashStyle:function(a){a=a.strokeDashstyle;switch(a){case "solid":case "dot":case "dash":case "dashdot":case "longdash":case "longdashdot":return a;
default:return a=a.split(/[ ,]/),2==a.length?1*a[0]>=2*a[1]?"longdash":1==a[0]||1==a[1]?"dot":"dash":4==a.length?1*a[0]>=2*a[1]?"longdashdot":"dashdot":"solid"}},createNode:function(a,b){var c=document.createElement(a);b&&(c.id=b);c.unselectable="on";c.onselectstart=OpenLayers.Function.False;return c},nodeTypeCompare:function(a,b){var c=b,d=c.indexOf(":");-1!=d&&(c=c.substr(d+1));var e=a.nodeName,d=e.indexOf(":");-1!=d&&(e=e.substr(d+1));return c==e},createRenderRoot:function(){return this.nodeFactory(this.container.id+
"_vmlRoot","div")},createRoot:function(a){return this.nodeFactory(this.container.id+a,"olv:group")},drawPoint:function(a,b){return this.drawCircle(a,b,1)},drawCircle:function(a,b,c){if(!isNaN(b.x)&&!isNaN(b.y)){var d=this.getResolution();a.style.left=((b.x-this.featureDx)/d-this.offset.x|0)-c+"px";a.style.top=(b.y/d-this.offset.y|0)-c+"px";b=2*c;a.style.width=b+"px";a.style.height=b+"px";return a}return!1},drawLineString:function(a,b){return this.drawLine(a,b,!1)},drawLinearRing:function(a,b){return this.drawLine(a,
b,!0)},drawLine:function(a,b,c){this.setNodeDimension(a,b);for(var d=this.getResolution(),e=b.components.length,f=Array(e),g,h,k=0;k<e;k++)g=b.components[k],h=(g.x-this.featureDx)/d-this.offset.x|0,g=g.y/d-this.offset.y|0,f[k]=" "+h+","+g+" l ";b=c?" x e":" e";a.path="m"+f.join("")+b;return a},drawPolygon:function(a,b){this.setNodeDimension(a,b);var c=this.getResolution(),d=[],e,f,g,h,k,l,m,n,p,q;e=0;for(f=b.components.length;e<f;e++){d.push("m");g=b.components[e].components;h=0===e;l=k=null;m=0;
for(n=g.length;m<n;m++)p=g[m],q=(p.x-this.featureDx)/c-this.offset.x|0,p=p.y/c-this.offset.y|0,q=" "+q+","+p,d.push(q),0==m&&d.push(" l"),h||(k?k!=q&&(l?l!=q&&(h=!0):l=q):k=q);d.push(h?" x ":" ")}d.push("e");a.path=d.join("");return a},drawRectangle:function(a,b){var c=this.getResolution();a.style.left=((b.x-this.featureDx)/c-this.offset.x|0)+"px";a.style.top=(b.y/c-this.offset.y|0)+"px";a.style.width=(b.width/c|0)+"px";a.style.height=(b.height/c|0)+"px";return a},drawText:function(a,b,c){var d=this.nodeFactory(a+
this.LABEL_ID_SUFFIX,"olv:rect"),e=this.nodeFactory(a+this.LABEL_ID_SUFFIX+"_textbox","olv:textbox"),f=this.getResolution();d.style.left=((c.x-this.featureDx)/f-this.offset.x|0)+"px";d.style.top=(c.y/f-this.offset.y|0)+"px";d.style.flip="y";e.innerText=b.label;"inherit"!=b.cursor&&null!=b.cursor&&(e.style.cursor=b.cursor);b.fontColor&&(e.style.color=b.fontColor);b.fontOpacity&&(e.style.filter="alpha(opacity="+100*b.fontOpacity+")");b.fontFamily&&(e.style.fontFamily=b.fontFamily);b.fontSize&&(e.style.fontSize=
b.fontSize);b.fontWeight&&(e.style.fontWeight=b.fontWeight);b.fontStyle&&(e.style.fontStyle=b.fontStyle);!0===b.labelSelect&&(d._featureId=a,e._featureId=a,e._geometry=c,e._geometryClass=c.CLASS_NAME);e.style.whiteSpace="nowrap";e.inset="1px,0px,0px,0px";d.parentNode||(d.appendChild(e),this.textRoot.appendChild(d));b=b.labelAlign||"cm";1==b.length&&(b+="m");a=e.clientWidth*OpenLayers.Renderer.VML.LABEL_SHIFT[b.substr(0,1)];e=e.clientHeight*OpenLayers.Renderer.VML.LABEL_SHIFT[b.substr(1,1)];d.style.left=
parseInt(d.style.left)-a-1+"px";d.style.top=parseInt(d.style.top)+e+"px"},moveRoot:function(a){var b=this.map.getLayer(a.container.id);b instanceof OpenLayers.Layer.Vector.RootContainer&&(b=this.map.getLayer(this.container.id));b&&b.renderer.clear();OpenLayers.Renderer.Elements.prototype.moveRoot.apply(this,arguments);b&&b.redraw()},importSymbol:function(a){var b=this.container.id+"-"+a,c=this.symbolCache[b];if(c)return c;c=OpenLayers.Renderer.symbol[a];if(!c)throw Error(a+" is not a valid symbol name");
a=new OpenLayers.Bounds(Number.MAX_VALUE,Number.MAX_VALUE,0,0);for(var d=["m"],e=0;e<c.length;e+=2){var f=c[e],g=c[e+1];a.left=Math.min(a.left,f);a.bottom=Math.min(a.bottom,g);a.right=Math.max(a.right,f);a.top=Math.max(a.top,g);d.push(f);d.push(g);0==e&&d.push("l")}d.push("x e");c=d.join(" ");d=(a.getWidth()-a.getHeight())/2;0<d?(a.bottom-=d,a.top+=d):(a.left+=d,a.right-=d);c={path:c,size:a.getWidth(),left:a.left,bottom:a.bottom};return this.symbolCache[b]=c},CLASS_NAME:"OpenLayers.Renderer.VML"});
OpenLayers.Renderer.VML.LABEL_SHIFT={l:0,c:0.5,r:1,t:0,m:0.5,b:1};OpenLayers.Control.CacheRead=OpenLayers.Class(OpenLayers.Control,{fetchEvent:"tileloadstart",layers:null,autoActivate:!0,setMap:function(a){OpenLayers.Control.prototype.setMap.apply(this,arguments);var b,c=this.layers||a.layers;for(b=c.length-1;0<=b;--b)this.addLayer({layer:c[b]});if(!this.layers)a.events.on({addlayer:this.addLayer,removeLayer:this.removeLayer,scope:this})},addLayer:function(a){a.layer.events.register(this.fetchEvent,this,this.fetch)},removeLayer:function(a){a.layer.events.unregister(this.fetchEvent,
this,this.fetch)},fetch:function(a){if(this.active&&window.localStorage&&a.tile instanceof OpenLayers.Tile.Image){var b=a.tile,c=b.url;!b.layer.crossOriginKeyword&&(OpenLayers.ProxyHost&&0===c.indexOf(OpenLayers.ProxyHost))&&(c=OpenLayers.Control.CacheWrite.urlMap[c]);if(c=window.localStorage.getItem("olCache_"+c))b.url=c,"tileerror"===a.type&&b.setImgSrc(c)}},destroy:function(){if(this.layers||this.map){var a,b=this.layers||this.map.layers;for(a=b.length-1;0<=a;--a)this.removeLayer({layer:b[a]})}this.map&&
this.map.events.un({addlayer:this.addLayer,removeLayer:this.removeLayer,scope:this});OpenLayers.Control.prototype.destroy.apply(this,arguments)},CLASS_NAME:"OpenLayers.Control.CacheRead"});OpenLayers.Protocol.WFS.v1_0_0=OpenLayers.Class(OpenLayers.Protocol.WFS.v1,{version:"1.0.0",CLASS_NAME:"OpenLayers.Protocol.WFS.v1_0_0"});OpenLayers.Format.WMSGetFeatureInfo=OpenLayers.Class(OpenLayers.Format.XML,{layerIdentifier:"_layer",featureIdentifier:"_feature",regExes:{trimSpace:/^\s*|\s*$/g,removeSpace:/\s*/g,splitSpace:/\s+/,trimComma:/\s*,\s*/g},gmlFormat:null,read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));var b=a.documentElement;if(b){var c=this["read_"+b.nodeName];a=c?c.call(this,b):(new OpenLayers.Format.GML(this.options?this.options:{})).read(a)}return a},read_msGMLOutput:function(a){var b=
[];if(a=this.getSiblingNodesByTagCriteria(a,this.layerIdentifier))for(var c=0,d=a.length;c<d;++c){var e=a[c],f=e.nodeName;e.prefix&&(f=f.split(":")[1]);f=f.replace(this.layerIdentifier,"");if(e=this.getSiblingNodesByTagCriteria(e,this.featureIdentifier))for(var g=0;g<e.length;g++){var h=e[g],k=this.parseGeometry(h),h=this.parseAttributes(h),h=new OpenLayers.Feature.Vector(k.geometry,h,null);h.bounds=k.bounds;h.type=f;b.push(h)}}return b},read_FeatureInfoResponse:function(a){var b=[];a=this.getElementsByTagNameNS(a,
"*","FIELDS");for(var c=0,d=a.length;c<d;c++){var e=a[c],f={},g,h=e.attributes.length;if(0<h)for(g=0;g<h;g++){var k=e.attributes[g];f[k.nodeName]=k.nodeValue}else for(e=e.childNodes,g=0,h=e.length;g<h;++g)k=e[g],3!=k.nodeType&&(f[k.getAttribute("name")]=k.getAttribute("value"));b.push(new OpenLayers.Feature.Vector(null,f,null))}return b},getSiblingNodesByTagCriteria:function(a,b){var c=[],d,e,f,g;if(a&&a.hasChildNodes()){d=a.childNodes;f=d.length;for(var h=0;h<f;h++){for(g=d[h];g&&1!=g.nodeType;)g=
g.nextSibling,h++;e=g?g.nodeName:"";0<e.length&&-1<e.indexOf(b)?c.push(g):(e=this.getSiblingNodesByTagCriteria(g,b),0<e.length&&(0==c.length?c=e:c.push(e)))}}return c},parseAttributes:function(a){var b={};if(1==a.nodeType){a=a.childNodes;for(var c=a.length,d=0;d<c;++d){var e=a[d];if(1==e.nodeType){var f=e.childNodes,e=e.prefix?e.nodeName.split(":")[1]:e.nodeName;0==f.length?b[e]=null:1==f.length&&(f=f[0],3==f.nodeType||4==f.nodeType)&&(f=f.nodeValue.replace(this.regExes.trimSpace,""),b[e]=f)}}}return b},
parseGeometry:function(a){this.gmlFormat||(this.gmlFormat=new OpenLayers.Format.GML);a=this.gmlFormat.parseFeature(a);var b,c=null;a&&(b=a.geometry&&a.geometry.clone(),c=a.bounds&&a.bounds.clone(),a.destroy());return{geometry:b,bounds:c}},CLASS_NAME:"OpenLayers.Format.WMSGetFeatureInfo"});OpenLayers.Control.WMTSGetFeatureInfo=OpenLayers.Class(OpenLayers.Control,{hover:!1,requestEncoding:"KVP",drillDown:!1,maxFeatures:10,clickCallback:"click",layers:null,queryVisible:!0,infoFormat:"text/html",vendorParams:{},format:null,formatOptions:null,handler:null,hoverRequest:null,pending:0,initialize:function(a){a=a||{};a.handlerOptions=a.handlerOptions||{};OpenLayers.Control.prototype.initialize.apply(this,[a]);this.format||(this.format=new OpenLayers.Format.WMSGetFeatureInfo(a.formatOptions));
!0===this.drillDown&&(this.hover=!1);this.hover?this.handler=new OpenLayers.Handler.Hover(this,{move:this.cancelHover,pause:this.getInfoForHover},OpenLayers.Util.extend(this.handlerOptions.hover||{},{delay:250})):(a={},a[this.clickCallback]=this.getInfoForClick,this.handler=new OpenLayers.Handler.Click(this,a,this.handlerOptions.click||{}))},getInfoForClick:function(a){this.request(a.xy,{})},getInfoForHover:function(a){this.request(a.xy,{hover:!0})},cancelHover:function(){this.hoverRequest&&(--this.pending,
0>=this.pending&&(OpenLayers.Element.removeClass(this.map.viewPortDiv,"olCursorWait"),this.pending=0),this.hoverRequest.abort(),this.hoverRequest=null)},findLayers:function(){for(var a=this.layers||this.map.layers,b=[],c,d=a.length-1;0<=d&&(c=a[d],!(c instanceof OpenLayers.Layer.WMTS)||(c.requestEncoding!==this.requestEncoding||this.queryVisible&&!c.getVisibility())||(b.push(c),this.drillDown&&!this.hover));--d);return b},buildRequestOptions:function(a,b){var c=this.map.getLonLatFromPixel(b),d=a.getURL(new OpenLayers.Bounds(c.lon,
c.lat,c.lon,c.lat)),d=OpenLayers.Util.getParameters(d),c=a.getTileInfo(c);OpenLayers.Util.extend(d,{service:"WMTS",version:a.version,request:"GetFeatureInfo",infoFormat:this.infoFormat,i:c.i,j:c.j});OpenLayers.Util.applyDefaults(d,this.vendorParams);return{url:OpenLayers.Util.isArray(a.url)?a.url[0]:a.url,params:OpenLayers.Util.upperCaseObject(d),callback:function(c){this.handleResponse(b,c,a)},scope:this}},request:function(a,b){b=b||{};var c=this.findLayers();if(0<c.length){for(var d,e,f=0,g=c.length;f<
g;f++)e=c[f],d=this.events.triggerEvent("beforegetfeatureinfo",{xy:a,layer:e}),!1!==d&&(++this.pending,d=this.buildRequestOptions(e,a),d=OpenLayers.Request.GET(d),!0===b.hover&&(this.hoverRequest=d));0<this.pending&&OpenLayers.Element.addClass(this.map.viewPortDiv,"olCursorWait")}},handleResponse:function(a,b,c){--this.pending;0>=this.pending&&(OpenLayers.Element.removeClass(this.map.viewPortDiv,"olCursorWait"),this.pending=0);if(b.status&&(200>b.status||300<=b.status))this.events.triggerEvent("exception",
{xy:a,request:b,layer:c});else{var d=b.responseXML;d&&d.documentElement||(d=b.responseText);var e,f;try{e=this.format.read(d)}catch(g){f=!0,this.events.triggerEvent("exception",{xy:a,request:b,error:g,layer:c})}f||this.events.triggerEvent("getfeatureinfo",{text:b.responseText,features:e,request:b,xy:a,layer:c})}},CLASS_NAME:"OpenLayers.Control.WMTSGetFeatureInfo"});OpenLayers.Protocol.CSW.v2_0_2=OpenLayers.Class(OpenLayers.Protocol,{formatOptions:null,initialize:function(a){OpenLayers.Protocol.prototype.initialize.apply(this,[a]);a.format||(this.format=new OpenLayers.Format.CSWGetRecords.v2_0_2(OpenLayers.Util.extend({},this.formatOptions)))},destroy:function(){this.options&&!this.options.format&&this.format.destroy();this.format=null;OpenLayers.Protocol.prototype.destroy.apply(this)},read:function(a){a=OpenLayers.Util.extend({},a);OpenLayers.Util.applyDefaults(a,
this.options||{});var b=new OpenLayers.Protocol.Response({requestType:"read"}),c=this.format.write(a.params||a);b.priv=OpenLayers.Request.POST({url:a.url,callback:this.createCallback(this.handleRead,b,a),params:a.params,headers:a.headers,data:c});return b},handleRead:function(a,b){if(b.callback){var c=a.priv;200<=c.status&&300>c.status?(a.data=this.parseData(c),a.code=OpenLayers.Protocol.Response.SUCCESS):a.code=OpenLayers.Protocol.Response.FAILURE;b.callback.call(b.scope,a)}},parseData:function(a){var b=
a.responseXML;b&&b.documentElement||(b=a.responseText);return!b||0>=b.length?null:this.format.read(b)},CLASS_NAME:"OpenLayers.Protocol.CSW.v2_0_2"});OpenLayers.Format.WCSCapabilities.v1_1_0=OpenLayers.Class(OpenLayers.Format.WCSCapabilities.v1,{namespaces:{wcs:"http://www.opengis.net/wcs/1.1",xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance",ows:"http://www.opengis.net/ows/1.1"},errorProperty:"operationsMetadata",readers:{wcs:OpenLayers.Util.applyDefaults({Capabilities:function(a,b){this.readChildNodes(a,b)},Contents:function(a,b){b.contentMetadata=[];this.readChildNodes(a,b.contentMetadata)},CoverageSummary:function(a,
b){var c={};this.readChildNodes(a,c);b.push(c)},Identifier:function(a,b){b.identifier=this.getChildValue(a)},Title:function(a,b){b.title=this.getChildValue(a)},Abstract:function(a,b){b["abstract"]=this.getChildValue(a)},SupportedCRS:function(a,b){var c=this.getChildValue(a);c&&(b.supportedCRS||(b.supportedCRS=[]),b.supportedCRS.push(c))},SupportedFormat:function(a,b){var c=this.getChildValue(a);c&&(b.supportedFormat||(b.supportedFormat=[]),b.supportedFormat.push(c))}},OpenLayers.Format.WCSCapabilities.v1.prototype.readers.wcs),
ows:OpenLayers.Format.OWSCommon.v1_1_0.prototype.readers.ows},CLASS_NAME:"OpenLayers.Format.WCSCapabilities.v1_1_0"});OpenLayers.Control.Graticule=OpenLayers.Class(OpenLayers.Control,{autoActivate:!0,intervals:[45,30,20,10,5,2,1,0.5,0.2,0.1,0.05,0.01,0.005,0.002,0.001],displayInLayerSwitcher:!0,visible:!0,numPoints:50,targetSize:200,layerName:null,labelled:!0,labelFormat:"dm",lineSymbolizer:{strokeColor:"#333",strokeWidth:1,strokeOpacity:0.5},labelSymbolizer:{},gratLayer:null,initialize:function(a){a=a||{};a.layerName=a.layerName||OpenLayers.i18n("Graticule");OpenLayers.Control.prototype.initialize.apply(this,[a]);
this.labelSymbolizer.stroke=!1;this.labelSymbolizer.fill=!1;this.labelSymbolizer.label="${label}";this.labelSymbolizer.labelAlign="${labelAlign}";this.labelSymbolizer.labelXOffset="${xOffset}";this.labelSymbolizer.labelYOffset="${yOffset}"},destroy:function(){this.deactivate();OpenLayers.Control.prototype.destroy.apply(this,arguments);this.gratLayer&&(this.gratLayer.destroy(),this.gratLayer=null)},draw:function(){OpenLayers.Control.prototype.draw.apply(this,arguments);if(!this.gratLayer){var a=new OpenLayers.Style({},
{rules:[new OpenLayers.Rule({symbolizer:{Point:this.labelSymbolizer,Line:this.lineSymbolizer}})]});this.gratLayer=new OpenLayers.Layer.Vector(this.layerName,{styleMap:new OpenLayers.StyleMap({"default":a}),visibility:this.visible,displayInLayerSwitcher:this.displayInLayerSwitcher})}return this.div},activate:function(){return OpenLayers.Control.prototype.activate.apply(this,arguments)?(this.map.addLayer(this.gratLayer),this.map.events.register("moveend",this,this.update),this.update(),!0):!1},deactivate:function(){return OpenLayers.Control.prototype.deactivate.apply(this,
arguments)?(this.map.events.unregister("moveend",this,this.update),this.map.removeLayer(this.gratLayer),!0):!1},update:function(){var a=this.map.getExtent();if(a){this.gratLayer.destroyFeatures();var b=new OpenLayers.Projection("EPSG:4326"),c=this.map.getProjectionObject(),d=this.map.getResolution();c.proj&&"longlat"==c.proj.projName&&(this.numPoints=1);var e=this.map.getCenter(),f=new OpenLayers.Pixel(e.lon,e.lat);OpenLayers.Projection.transform(f,c,b);for(var e=this.targetSize*d,e=e*e,g,d=0;d<this.intervals.length;++d){g=
this.intervals[d];var h=g/2,k=f.offset({x:-h,y:-h}),h=f.offset({x:h,y:h});OpenLayers.Projection.transform(k,b,c);OpenLayers.Projection.transform(h,b,c);if((k.x-h.x)*(k.x-h.x)+(k.y-h.y)*(k.y-h.y)<=e)break}f.x=Math.floor(f.x/g)*g;f.y=Math.floor(f.y/g)*g;var d=0,e=[f.clone()],h=f.clone(),l;do h=h.offset({x:0,y:g}),l=OpenLayers.Projection.transform(h.clone(),b,c),e.unshift(h);while(a.containsPixel(l)&&1E3>++d);h=f.clone();do h=h.offset({x:0,y:-g}),l=OpenLayers.Projection.transform(h.clone(),b,c),e.push(h);
while(a.containsPixel(l)&&1E3>++d);d=0;k=[f.clone()];h=f.clone();do h=h.offset({x:-g,y:0}),l=OpenLayers.Projection.transform(h.clone(),b,c),k.unshift(h);while(a.containsPixel(l)&&1E3>++d);h=f.clone();do h=h.offset({x:g,y:0}),l=OpenLayers.Projection.transform(h.clone(),b,c),k.push(h);while(a.containsPixel(l)&&1E3>++d);g=[];for(d=0;d<k.length;++d){l=k[d].x;for(var f=[],m=null,n=Math.min(e[0].y,90),h=Math.max(e[e.length-1].y,-90),p=(n-h)/this.numPoints,n=h,h=0;h<=this.numPoints;++h){var q=new OpenLayers.Geometry.Point(l,
n);q.transform(b,c);f.push(q);n+=p;q.y>=a.bottom&&!m&&(m=q)}this.labelled&&(m=new OpenLayers.Geometry.Point(m.x,a.bottom),l={value:l,label:this.labelled?OpenLayers.Util.getFormattedLonLat(l,"lon",this.labelFormat):"",labelAlign:"cb",xOffset:0,yOffset:2},this.gratLayer.addFeatures(new OpenLayers.Feature.Vector(m,l)));f=new OpenLayers.Geometry.LineString(f);g.push(new OpenLayers.Feature.Vector(f))}for(h=0;h<e.length;++h)if(n=e[h].y,!(-90>n||90<n)){f=[];d=k[0].x;p=(k[k.length-1].x-d)/this.numPoints;
l=d;m=null;for(d=0;d<=this.numPoints;++d)q=new OpenLayers.Geometry.Point(l,n),q.transform(b,c),f.push(q),l+=p,q.x<a.right&&(m=q);this.labelled&&(m=new OpenLayers.Geometry.Point(a.right,m.y),l={value:n,label:this.labelled?OpenLayers.Util.getFormattedLonLat(n,"lat",this.labelFormat):"",labelAlign:"rb",xOffset:-2,yOffset:2},this.gratLayer.addFeatures(new OpenLayers.Feature.Vector(m,l)));f=new OpenLayers.Geometry.LineString(f);g.push(new OpenLayers.Feature.Vector(f))}this.gratLayer.addFeatures(g)}},CLASS_NAME:"OpenLayers.Control.Graticule"});OpenLayers.Console.warn("OpenLayers.Rico is deprecated");OpenLayers.Rico=OpenLayers.Rico||{};
OpenLayers.Rico.Corner={round:function(a,b){a=OpenLayers.Util.getElement(a);this._setOptions(b);var c=this.options.color;"fromElement"==this.options.color&&(c=this._background(a));var d=this.options.bgColor;"fromParent"==this.options.bgColor&&(d=this._background(a.offsetParent));this._roundCornersImpl(a,c,d)},changeColor:function(a,b){a.style.backgroundColor=b;for(var c=a.parentNode.getElementsByTagName("span"),d=0;d<c.length;d++)c[d].style.backgroundColor=b},changeOpacity:function(a,b){var c="alpha(opacity="+
100*b+")";a.style.opacity=b;a.style.filter=c;for(var d=a.parentNode.getElementsByTagName("span"),e=0;e<d.length;e++)d[e].style.opacity=b,d[e].style.filter=c},reRound:function(a,b){var c=a.parentNode.childNodes[2];a.parentNode.removeChild(a.parentNode.childNodes[0]);a.parentNode.removeChild(c);this.round(a.parentNode,b)},_roundCornersImpl:function(a,b,c){this.options.border&&this._renderBorder(a,c);this._isTopRounded()&&this._roundTopCorners(a,b,c);this._isBottomRounded()&&this._roundBottomCorners(a,
b,c)},_renderBorder:function(a,b){var c="1px solid "+this._borderColor(b);a.innerHTML="<div "+("style='border-left: "+c+";"+("border-right: "+c)+"'")+">"+a.innerHTML+"</div>"},_roundTopCorners:function(a,b,c){for(var d=this._createCorner(c),e=0;e<this.options.numSlices;e++)d.appendChild(this._createCornerSlice(b,c,e,"top"));a.style.paddingTop=0;a.insertBefore(d,a.firstChild)},_roundBottomCorners:function(a,b,c){for(var d=this._createCorner(c),e=this.options.numSlices-1;0<=e;e--)d.appendChild(this._createCornerSlice(b,
c,e,"bottom"));a.style.paddingBottom=0;a.appendChild(d)},_createCorner:function(a){var b=document.createElement("div");b.style.backgroundColor=this._isTransparent()?"transparent":a;return b},_createCornerSlice:function(a,b,c,d){var e=document.createElement("span"),f=e.style;f.backgroundColor=a;f.display="block";f.height="1px";f.overflow="hidden";f.fontSize="1px";a=this._borderColor(a,b);this.options.border&&0==c?(f.borderTopStyle="solid",f.borderTopWidth="1px",f.borderLeftWidth="0px",f.borderRightWidth=
"0px",f.borderBottomWidth="0px",f.height="0px",f.borderColor=a):a&&(f.borderColor=a,f.borderStyle="solid",f.borderWidth="0px 1px");this.options.compact||c!=this.options.numSlices-1||(f.height="2px");this._setMargin(e,c,d);this._setBorder(e,c,d);return e},_setOptions:function(a){this.options={corners:"all",color:"fromElement",bgColor:"fromParent",blend:!0,border:!1,compact:!1};OpenLayers.Util.extend(this.options,a||{});this.options.numSlices=this.options.compact?2:4;this._isTransparent()&&(this.options.blend=
!1)},_whichSideTop:function(){return this._hasString(this.options.corners,"all","top")||0<=this.options.corners.indexOf("tl")&&0<=this.options.corners.indexOf("tr")?"":0<=this.options.corners.indexOf("tl")?"left":0<=this.options.corners.indexOf("tr")?"right":""},_whichSideBottom:function(){return this._hasString(this.options.corners,"all","bottom")||0<=this.options.corners.indexOf("bl")&&0<=this.options.corners.indexOf("br")?"":0<=this.options.corners.indexOf("bl")?"left":0<=this.options.corners.indexOf("br")?
"right":""},_borderColor:function(a,b){return"transparent"==a?b:this.options.border?this.options.border:this.options.blend?this._blend(b,a):""},_setMargin:function(a,b,c){b=this._marginSize(b);c="top"==c?this._whichSideTop():this._whichSideBottom();"left"==c?(a.style.marginLeft=b+"px",a.style.marginRight="0px"):"right"==c?(a.style.marginRight=b+"px",a.style.marginLeft="0px"):(a.style.marginLeft=b+"px",a.style.marginRight=b+"px")},_setBorder:function(a,b,c){b=this._borderSize(b);c="top"==c?this._whichSideTop():
this._whichSideBottom();"left"==c?(a.style.borderLeftWidth=b+"px",a.style.borderRightWidth="0px"):"right"==c?(a.style.borderRightWidth=b+"px",a.style.borderLeftWidth="0px"):(a.style.borderLeftWidth=b+"px",a.style.borderRightWidth=b+"px");!1!=this.options.border&&(a.style.borderLeftWidth=b+"px",a.style.borderRightWidth=b+"px")},_marginSize:function(a){if(this._isTransparent())return 0;var b=[5,3,2,1],c=[3,2,1,0],d=[2,1],e=[1,0];return this.options.compact&&this.options.blend?e[a]:this.options.compact?
d[a]:this.options.blend?c[a]:b[a]},_borderSize:function(a){var b=[5,3,2,1],c=[2,1,1,1],d=[1,0],e=[0,2,0,0];return this.options.compact&&(this.options.blend||this._isTransparent())?1:this.options.compact?d[a]:this.options.blend?c[a]:this.options.border?e[a]:this._isTransparent()?b[a]:0},_hasString:function(a){for(var b=1;b<arguments.length;b++)if(0<=a.indexOf(arguments[b]))return!0;return!1},_blend:function(a,b){var c=OpenLayers.Rico.Color.createFromHex(a);c.blend(OpenLayers.Rico.Color.createFromHex(b));
return c},_background:function(a){try{return OpenLayers.Rico.Color.createColorFromBackground(a).asHex()}catch(b){return"#ffffff"}},_isTransparent:function(){return"transparent"==this.options.color},_isTopRounded:function(){return this._hasString(this.options.corners,"all","top","tl","tr")},_isBottomRounded:function(){return this._hasString(this.options.corners,"all","bottom","bl","br")},_hasSingleTextChild:function(a){return 1==a.childNodes.length&&3==a.childNodes[0].nodeType}};OpenLayers.Control.NavigationHistory=OpenLayers.Class(OpenLayers.Control,{type:OpenLayers.Control.TYPE_TOGGLE,previous:null,previousOptions:null,next:null,nextOptions:null,limit:50,autoActivate:!0,clearOnDeactivate:!1,registry:null,nextStack:null,previousStack:null,listeners:null,restoring:!1,initialize:function(a){OpenLayers.Control.prototype.initialize.apply(this,[a]);this.registry=OpenLayers.Util.extend({moveend:this.getState},this.registry);a={trigger:OpenLayers.Function.bind(this.previousTrigger,
this),displayClass:this.displayClass+" "+this.displayClass+"Previous"};OpenLayers.Util.extend(a,this.previousOptions);this.previous=new OpenLayers.Control.Button(a);a={trigger:OpenLayers.Function.bind(this.nextTrigger,this),displayClass:this.displayClass+" "+this.displayClass+"Next"};OpenLayers.Util.extend(a,this.nextOptions);this.next=new OpenLayers.Control.Button(a);this.clear()},onPreviousChange:function(a,b){a&&!this.previous.active?this.previous.activate():!a&&this.previous.active&&this.previous.deactivate()},
onNextChange:function(a,b){a&&!this.next.active?this.next.activate():!a&&this.next.active&&this.next.deactivate()},destroy:function(){OpenLayers.Control.prototype.destroy.apply(this);this.previous.destroy();this.next.destroy();this.deactivate();for(var a in this)this[a]=null},setMap:function(a){this.map=a;this.next.setMap(a);this.previous.setMap(a)},draw:function(){OpenLayers.Control.prototype.draw.apply(this,arguments);this.next.draw();this.previous.draw()},previousTrigger:function(){var a=this.previousStack.shift(),
b=this.previousStack.shift();void 0!=b?(this.nextStack.unshift(a),this.previousStack.unshift(b),this.restoring=!0,this.restore(b),this.restoring=!1,this.onNextChange(this.nextStack[0],this.nextStack.length),this.onPreviousChange(this.previousStack[1],this.previousStack.length-1)):this.previousStack.unshift(a);return b},nextTrigger:function(){var a=this.nextStack.shift();void 0!=a&&(this.previousStack.unshift(a),this.restoring=!0,this.restore(a),this.restoring=!1,this.onNextChange(this.nextStack[0],
this.nextStack.length),this.onPreviousChange(this.previousStack[1],this.previousStack.length-1));return a},clear:function(){this.previousStack=[];this.previous.deactivate();this.nextStack=[];this.next.deactivate()},getState:function(){return{center:this.map.getCenter(),resolution:this.map.getResolution(),projection:this.map.getProjectionObject(),units:this.map.getProjectionObject().getUnits()||this.map.units||this.map.baseLayer.units}},restore:function(a){var b,c;if(this.map.getProjectionObject()==
a.projection)c=this.map.getZoomForResolution(a.resolution),b=a.center;else{b=a.center.clone();b.transform(a.projection,this.map.getProjectionObject());c=a.units;var d=this.map.getProjectionObject().getUnits()||this.map.units||this.map.baseLayer.units;c=this.map.getZoomForResolution((c&&d?OpenLayers.INCHES_PER_UNIT[c]/OpenLayers.INCHES_PER_UNIT[d]:1)*a.resolution)}this.map.setCenter(b,c)},setListeners:function(){this.listeners={};for(var a in this.registry)this.listeners[a]=OpenLayers.Function.bind(function(){if(!this.restoring){var b=
this.registry[a].apply(this,arguments);this.previousStack.unshift(b);if(1<this.previousStack.length)this.onPreviousChange(this.previousStack[1],this.previousStack.length-1);this.previousStack.length>this.limit+1&&this.previousStack.pop();0<this.nextStack.length&&(this.nextStack=[],this.onNextChange(null,0))}return!0},this)},activate:function(){var a=!1;if(this.map&&OpenLayers.Control.prototype.activate.apply(this)){null==this.listeners&&this.setListeners();for(var b in this.listeners)this.map.events.register(b,
this,this.listeners[b]);a=!0;0==this.previousStack.length&&this.initStack()}return a},initStack:function(){this.map.getCenter()&&this.listeners.moveend()},deactivate:function(){var a=!1;if(this.map&&OpenLayers.Control.prototype.deactivate.apply(this)){for(var b in this.listeners)this.map.events.unregister(b,this,this.listeners[b]);this.clearOnDeactivate&&this.clear();a=!0}return a},CLASS_NAME:"OpenLayers.Control.NavigationHistory"});OpenLayers.Layer.UTFGrid=OpenLayers.Class(OpenLayers.Layer.XYZ,{isBaseLayer:!1,projection:new OpenLayers.Projection("EPSG:900913"),useJSONP:!1,tileClass:OpenLayers.Tile.UTFGrid,initialize:function(a){OpenLayers.Layer.Grid.prototype.initialize.apply(this,[a.name,a.url,{},a]);this.tileOptions=OpenLayers.Util.extend({utfgridResolution:this.utfgridResolution},this.tileOptions)},createBackBuffer:function(){},clone:function(a){null==a&&(a=new OpenLayers.Layer.UTFGrid(this.getOptions()));return a=OpenLayers.Layer.Grid.prototype.clone.apply(this,
[a])},getFeatureInfo:function(a){var b=null;(a=this.getTileData(a))&&a.tile&&(b=a.tile.getFeatureInfo(a.i,a.j));return b},getFeatureId:function(a){var b=null;a=this.getTileData(a);a.tile&&(b=a.tile.getFeatureId(a.i,a.j));return b},CLASS_NAME:"OpenLayers.Layer.UTFGrid"});OpenLayers.TileManager=OpenLayers.Class({cacheSize:256,tilesPerFrame:2,frameDelay:16,moveDelay:100,zoomDelay:200,maps:null,tileQueueId:null,tileQueue:null,tileCache:null,tileCacheIndex:null,initialize:function(a){OpenLayers.Util.extend(this,a);this.maps=[];this.tileQueueId={};this.tileQueue={};this.tileCache={};this.tileCacheIndex=[]},addMap:function(a){if(!this._destroyed&&OpenLayers.Layer.Grid){this.maps.push(a);this.tileQueue[a.id]=[];for(var b=0,c=a.layers.length;b<c;++b)this.addLayer({layer:a.layers[b]});
a.events.on({move:this.move,zoomend:this.zoomEnd,changelayer:this.changeLayer,addlayer:this.addLayer,preremovelayer:this.removeLayer,scope:this})}},removeMap:function(a){if(!this._destroyed&&OpenLayers.Layer.Grid){window.clearTimeout(this.tileQueueId[a.id]);if(a.layers)for(var b=0,c=a.layers.length;b<c;++b)this.removeLayer({layer:a.layers[b]});a.events&&a.events.un({move:this.move,zoomend:this.zoomEnd,changelayer:this.changeLayer,addlayer:this.addLayer,preremovelayer:this.removeLayer,scope:this});
delete this.tileQueue[a.id];delete this.tileQueueId[a.id];OpenLayers.Util.removeItem(this.maps,a)}},move:function(a){this.updateTimeout(a.object,this.moveDelay,!0)},zoomEnd:function(a){this.updateTimeout(a.object,this.zoomDelay)},changeLayer:function(a){"visibility"!==a.property&&"params"!==a.property||this.updateTimeout(a.object,0)},addLayer:function(a){a=a.layer;if(a instanceof OpenLayers.Layer.Grid){a.events.on({addtile:this.addTile,retile:this.clearTileQueue,scope:this});var b,c,d;for(b=a.grid.length-
1;0<=b;--b)for(c=a.grid[b].length-1;0<=c;--c)d=a.grid[b][c],this.addTile({tile:d}),d.url&&!d.imgDiv&&this.manageTileCache({object:d})}},removeLayer:function(a){a=a.layer;if(a instanceof OpenLayers.Layer.Grid&&(this.clearTileQueue({object:a}),a.events&&a.events.un({addtile:this.addTile,retile:this.clearTileQueue,scope:this}),a.grid)){var b,c,d;for(b=a.grid.length-1;0<=b;--b)for(c=a.grid[b].length-1;0<=c;--c)d=a.grid[b][c],this.unloadTile({object:d})}},updateTimeout:function(a,b,c){window.clearTimeout(this.tileQueueId[a.id]);
var d=this.tileQueue[a.id];if(!c||d.length)this.tileQueueId[a.id]=window.setTimeout(OpenLayers.Function.bind(function(){this.drawTilesFromQueue(a);d.length&&this.updateTimeout(a,this.frameDelay)},this),b)},addTile:function(a){if(a.tile instanceof OpenLayers.Tile.Image)a.tile.events.on({beforedraw:this.queueTileDraw,beforeload:this.manageTileCache,loadend:this.addToCache,unload:this.unloadTile,scope:this});else this.removeLayer({layer:a.tile.layer})},unloadTile:function(a){a=a.object;a.events.un({beforedraw:this.queueTileDraw,
beforeload:this.manageTileCache,loadend:this.addToCache,unload:this.unloadTile,scope:this});OpenLayers.Util.removeItem(this.tileQueue[a.layer.map.id],a)},queueTileDraw:function(a){a=a.object;var b=!1,c=a.layer,d=c.getURL(a.bounds),e=this.tileCache[d];e&&"olTileImage"!==e.className&&(delete this.tileCache[d],OpenLayers.Util.removeItem(this.tileCacheIndex,d),e=null);!c.url||!c.async&&e||(b=this.tileQueue[c.map.id],~OpenLayers.Util.indexOf(b,a)||b.push(a),b=!0);return!b},drawTilesFromQueue:function(a){var b=
this.tileQueue[a.id],c=this.tilesPerFrame;for(a=a.zoomTween&&a.zoomTween.playing;!a&&b.length&&c;)b.shift().draw(!0),--c},manageTileCache:function(a){a=a.object;var b=this.tileCache[a.url];b&&(b.parentNode&&OpenLayers.Element.hasClass(b.parentNode,"olBackBuffer")&&(b.parentNode.removeChild(b),b.id=null),b.parentNode||(b.style.visibility="hidden",b.style.opacity=0,a.setImage(b),OpenLayers.Util.removeItem(this.tileCacheIndex,a.url),this.tileCacheIndex.push(a.url)))},addToCache:function(a){a=a.object;
this.tileCache[a.url]||OpenLayers.Element.hasClass(a.imgDiv,"olImageLoadError")||(this.tileCacheIndex.length>=this.cacheSize&&(delete this.tileCache[this.tileCacheIndex[0]],this.tileCacheIndex.shift()),this.tileCache[a.url]=a.imgDiv,this.tileCacheIndex.push(a.url))},clearTileQueue:function(a){a=a.object;for(var b=this.tileQueue[a.map.id],c=b.length-1;0<=c;--c)b[c].layer===a&&b.splice(c,1)},destroy:function(){for(var a=this.maps.length-1;0<=a;--a)this.removeMap(this.maps[a]);this.tileCacheIndex=this.tileCache=
this.tileQueueId=this.tileQueue=this.maps=null;this._destroyed=!0}});OpenLayers.Layer.ArcGISCache=OpenLayers.Class(OpenLayers.Layer.XYZ,{url:null,tileOrigin:null,tileSize:new OpenLayers.Size(256,256),useArcGISServer:!0,type:"png",useScales:!1,overrideDPI:!1,initialize:function(a,b,c){OpenLayers.Layer.XYZ.prototype.initialize.apply(this,arguments);this.resolutions&&(this.serverResolutions=this.resolutions,this.maxExtent=this.getMaxExtentForResolution(this.resolutions[0]));if(this.layerInfo){var d=this.layerInfo,e=new OpenLayers.Bounds(d.fullExtent.xmin,d.fullExtent.ymin,
d.fullExtent.xmax,d.fullExtent.ymax);this.projection="EPSG:"+d.spatialReference.wkid;this.sphericalMercator=102100==d.spatialReference.wkid;this.units="esriFeet"==d.units?"ft":"m";if(d.tileInfo){this.tileSize=new OpenLayers.Size(d.tileInfo.width||d.tileInfo.cols,d.tileInfo.height||d.tileInfo.rows);this.tileOrigin=new OpenLayers.LonLat(d.tileInfo.origin.x,d.tileInfo.origin.y);var f=new OpenLayers.Geometry.Point(e.left,e.top),e=new OpenLayers.Geometry.Point(e.right,e.bottom);this.useScales?this.scales=
[]:this.resolutions=[];this.lods=[];for(var g in d.tileInfo.lods)if(d.tileInfo.lods.hasOwnProperty(g)){var h=d.tileInfo.lods[g];this.useScales?this.scales.push(h.scale):this.resolutions.push(h.resolution);var k=this.getContainingTileCoords(f,h.resolution);h.startTileCol=k.x;h.startTileRow=k.y;k=this.getContainingTileCoords(e,h.resolution);h.endTileCol=k.x;h.endTileRow=k.y;this.lods.push(h)}this.maxExtent=this.calculateMaxExtentWithLOD(this.lods[0]);this.serverResolutions=this.resolutions;this.overrideDPI&&
d.tileInfo.dpi&&(OpenLayers.DOTS_PER_INCH=d.tileInfo.dpi)}}},getContainingTileCoords:function(a,b){return new OpenLayers.Pixel(Math.max(Math.floor((a.x-this.tileOrigin.lon)/(this.tileSize.w*b)),0),Math.max(Math.floor((this.tileOrigin.lat-a.y)/(this.tileSize.h*b)),0))},calculateMaxExtentWithLOD:function(a){var b=this.tileOrigin.lon+a.startTileCol*this.tileSize.w*a.resolution,c=this.tileOrigin.lat-a.startTileRow*this.tileSize.h*a.resolution;return new OpenLayers.Bounds(b,c-(a.endTileRow-a.startTileRow+
1)*this.tileSize.h*a.resolution,b+(a.endTileCol-a.startTileCol+1)*this.tileSize.w*a.resolution,c)},calculateMaxExtentWithExtent:function(a,b){var c=new OpenLayers.Geometry.Point(a.left,a.top),d=new OpenLayers.Geometry.Point(a.right,a.bottom),c=this.getContainingTileCoords(c,b),d=this.getContainingTileCoords(d,b);return this.calculateMaxExtentWithLOD({resolution:b,startTileCol:c.x,startTileRow:c.y,endTileCol:d.x,endTileRow:d.y})},getUpperLeftTileCoord:function(a){var b=new OpenLayers.Geometry.Point(this.maxExtent.left,
this.maxExtent.top);return this.getContainingTileCoords(b,a)},getLowerRightTileCoord:function(a){var b=new OpenLayers.Geometry.Point(this.maxExtent.right,this.maxExtent.bottom);return this.getContainingTileCoords(b,a)},getMaxExtentForResolution:function(a){var b=this.getUpperLeftTileCoord(a),c=this.getLowerRightTileCoord(a),d=this.tileOrigin.lon+b.x*this.tileSize.w*a,e=this.tileOrigin.lat-b.y*this.tileSize.h*a;return new OpenLayers.Bounds(d,e-(c.y-b.y+1)*this.tileSize.h*a,d+(c.x-b.x+1)*this.tileSize.w*
a,e)},clone:function(a){null==a&&(a=new OpenLayers.Layer.ArcGISCache(this.name,this.url,this.options));return OpenLayers.Layer.XYZ.prototype.clone.apply(this,[a])},initGriddedTiles:function(a){delete this._tileOrigin;OpenLayers.Layer.XYZ.prototype.initGriddedTiles.apply(this,arguments)},getMaxExtent:function(){var a=this.map.getResolution();return this.maxExtent=this.getMaxExtentForResolution(a)},getTileOrigin:function(){if(!this._tileOrigin){var a=this.getMaxExtent();this._tileOrigin=new OpenLayers.LonLat(a.left,
a.bottom)}return this._tileOrigin},getURL:function(a){var b=this.getResolution(),c=this.tileOrigin.lon+b*this.tileSize.w/2,d=this.tileOrigin.lat-b*this.tileSize.h/2;a=a.getCenterLonLat();c=Math.round(Math.abs((a.lon-c)/(b*this.tileSize.w)));d=Math.round(Math.abs((d-a.lat)/(b*this.tileSize.h)));a=this.map.getZoom();if(this.lods){if(b=this.lods[this.map.getZoom()],c<b.startTileCol||c>b.endTileCol||d<b.startTileRow||d>b.endTileRow)return null}else{var e=this.getUpperLeftTileCoord(b),b=this.getLowerRightTileCoord(b);
if(c<e.x||c>=b.x||d<e.y||d>=b.y)return null}b=this.url;e=""+c+d+a;OpenLayers.Util.isArray(b)&&(b=this.selectUrl(e,b));this.useArcGISServer?b+="/tile/${z}/${y}/${x}":(c="C"+OpenLayers.Number.zeroPad(c,8,16),d="R"+OpenLayers.Number.zeroPad(d,8,16),a="L"+OpenLayers.Number.zeroPad(a,2,10),b=b+"/${z}/${y}/${x}."+this.type);b=OpenLayers.String.format(b,{x:c,y:d,z:a});return OpenLayers.Util.urlAppend(b,OpenLayers.Util.getParameterString(this.params))},CLASS_NAME:"OpenLayers.Layer.ArcGISCache"});OpenLayers.Control.WMSGetFeatureInfo=OpenLayers.Class(OpenLayers.Control,{hover:!1,drillDown:!1,maxFeatures:10,clickCallback:"click",output:"features",layers:null,queryVisible:!1,url:null,layerUrls:null,infoFormat:"text/html",vendorParams:{},format:null,formatOptions:null,handler:null,hoverRequest:null,initialize:function(a){a=a||{};a.handlerOptions=a.handlerOptions||{};OpenLayers.Control.prototype.initialize.apply(this,[a]);this.format||(this.format=new OpenLayers.Format.WMSGetFeatureInfo(a.formatOptions));
!0===this.drillDown&&(this.hover=!1);this.hover?this.handler=new OpenLayers.Handler.Hover(this,{move:this.cancelHover,pause:this.getInfoForHover},OpenLayers.Util.extend(this.handlerOptions.hover||{},{delay:250})):(a={},a[this.clickCallback]=this.getInfoForClick,this.handler=new OpenLayers.Handler.Click(this,a,this.handlerOptions.click||{}))},getInfoForClick:function(a){this.events.triggerEvent("beforegetfeatureinfo",{xy:a.xy});OpenLayers.Element.addClass(this.map.viewPortDiv,"olCursorWait");this.request(a.xy,
{})},getInfoForHover:function(a){this.events.triggerEvent("beforegetfeatureinfo",{xy:a.xy});this.request(a.xy,{hover:!0})},cancelHover:function(){this.hoverRequest&&(this.hoverRequest.abort(),this.hoverRequest=null)},findLayers:function(){for(var a=this.layers||this.map.layers,b=[],c,d,e=a.length-1;0<=e;--e)c=a[e],c instanceof OpenLayers.Layer.WMS&&(!this.queryVisible||c.getVisibility())&&(d=OpenLayers.Util.isArray(c.url)?c.url[0]:c.url,!1!==this.drillDown||this.url||(this.url=d),(!0===this.drillDown||
this.urlMatches(d))&&b.push(c));return b},urlMatches:function(a){var b=OpenLayers.Util.isEquivalentUrl(this.url,a);if(!b&&this.layerUrls)for(var c=0,d=this.layerUrls.length;c<d;++c)if(OpenLayers.Util.isEquivalentUrl(this.layerUrls[c],a)){b=!0;break}return b},buildWMSOptions:function(a,b,c,d){for(var e=[],f=[],g=0,h=b.length;g<h;g++)null!=b[g].params.LAYERS&&(e=e.concat(b[g].params.LAYERS),f=f.concat(this.getStyleNames(b[g])));b=b[0];g=this.map.getProjection();(h=b.projection)&&h.equals(this.map.getProjectionObject())&&
(g=h.getCode());d=OpenLayers.Util.extend({service:"WMS",version:b.params.VERSION,request:"GetFeatureInfo",exceptions:b.params.EXCEPTIONS,bbox:this.map.getExtent().toBBOX(null,b.reverseAxisOrder()),feature_count:this.maxFeatures,height:this.map.getSize().h,width:this.map.getSize().w,format:d,info_format:b.params.INFO_FORMAT||this.infoFormat},1.3<=parseFloat(b.params.VERSION)?{crs:g,i:parseInt(c.x),j:parseInt(c.y)}:{srs:g,x:parseInt(c.x),y:parseInt(c.y)});0!=e.length&&(d=OpenLayers.Util.extend({layers:e,
query_layers:e,styles:f},d));OpenLayers.Util.applyDefaults(d,this.vendorParams);return{url:a,params:OpenLayers.Util.upperCaseObject(d),callback:function(b){this.handleResponse(c,b,a)},scope:this}},getStyleNames:function(a){return a.params.STYLES?a.params.STYLES:OpenLayers.Util.isArray(a.params.LAYERS)?Array(a.params.LAYERS.length):a.params.LAYERS.replace(/[^,]/g,"")},request:function(a,b){var c=this.findLayers();if(0==c.length)this.events.triggerEvent("nogetfeatureinfo"),OpenLayers.Element.removeClass(this.map.viewPortDiv,
"olCursorWait");else if(b=b||{},!1===this.drillDown){var c=this.buildWMSOptions(this.url,c,a,c[0].params.FORMAT),d=OpenLayers.Request.GET(c);!0===b.hover&&(this.hoverRequest=d)}else{this._numRequests=this._requestCount=0;this.features=[];for(var d={},e,f=0,g=c.length;f<g;f++){var h=c[f];e=OpenLayers.Util.isArray(h.url)?h.url[0]:h.url;e in d?d[e].push(h):(this._numRequests++,d[e]=[h])}for(e in d)c=d[e],c=this.buildWMSOptions(e,c,a,c[0].params.FORMAT),OpenLayers.Request.GET(c)}},triggerGetFeatureInfo:function(a,
b,c){this.events.triggerEvent("getfeatureinfo",{text:a.responseText,features:c,request:a,xy:b});OpenLayers.Element.removeClass(this.map.viewPortDiv,"olCursorWait")},handleResponse:function(a,b,c){var d=b.responseXML;d&&d.documentElement||(d=b.responseText);d=this.format.read(d);!1===this.drillDown?this.triggerGetFeatureInfo(b,a,d):(this._requestCount++,this._features="object"===this.output?(this._features||[]).concat({url:c,features:d}):(this._features||[]).concat(d),this._requestCount===this._numRequests&&
(this.triggerGetFeatureInfo(b,a,this._features.concat()),delete this._features,delete this._requestCount,delete this._numRequests))},CLASS_NAME:"OpenLayers.Control.WMSGetFeatureInfo"});OpenLayers.Format.WMSCapabilities.v1_3_0=OpenLayers.Class(OpenLayers.Format.WMSCapabilities.v1_3,{version:"1.3.0",CLASS_NAME:"OpenLayers.Format.WMSCapabilities.v1_3_0"});OpenLayers.Format.SOSGetFeatureOfInterest=OpenLayers.Class(OpenLayers.Format.XML,{VERSION:"1.0.0",namespaces:{sos:"http://www.opengis.net/sos/1.0",gml:"http://www.opengis.net/gml",sa:"http://www.opengis.net/sampling/1.0",xsi:"http://www.w3.org/2001/XMLSchema-instance"},schemaLocation:"http://www.opengis.net/sos/1.0 http://schemas.opengis.net/sos/1.0.0/sosAll.xsd",defaultPrefix:"sos",regExes:{trimSpace:/^\s*|\s*$/g,removeSpace:/\s*/g,splitSpace:/\s+/,trimComma:/\s*,\s*/g},read:function(a){"string"==
typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));a&&9==a.nodeType&&(a=a.documentElement);var b={features:[]};this.readNode(a,b);a=[];for(var c=0,d=b.features.length;c<d;c++){var e=b.features[c];this.internalProjection&&(this.externalProjection&&e.components[0])&&e.components[0].transform(this.externalProjection,this.internalProjection);e=new OpenLayers.Feature.Vector(e.components[0],e.attributes);a.push(e)}return a},readers:{sa:{SamplingPoint:function(a,b){if(!b.attributes){var c=
{attributes:{}};b.features.push(c);b=c}b.attributes.id=this.getAttributeNS(a,this.namespaces.gml,"id");this.readChildNodes(a,b)},position:function(a,b){this.readChildNodes(a,b)}},gml:OpenLayers.Util.applyDefaults({FeatureCollection:function(a,b){this.readChildNodes(a,b)},featureMember:function(a,b){var c={attributes:{}};b.features.push(c);this.readChildNodes(a,c)},name:function(a,b){b.attributes.name=this.getChildValue(a)},pos:function(a,b){this.externalProjection||(this.externalProjection=new OpenLayers.Projection(a.getAttribute("srsName")));
OpenLayers.Format.GML.v3.prototype.readers.gml.pos.apply(this,[a,b])}},OpenLayers.Format.GML.v3.prototype.readers.gml)},writers:{sos:{GetFeatureOfInterest:function(a){for(var b=this.createElementNSPlus("GetFeatureOfInterest",{attributes:{version:this.VERSION,service:"SOS","xsi:schemaLocation":this.schemaLocation}}),c=0,d=a.fois.length;c<d;c++)this.writeNode("FeatureOfInterestId",{foi:a.fois[c]},b);return b},FeatureOfInterestId:function(a){return this.createElementNSPlus("FeatureOfInterestId",{value:a.foi})}}},
CLASS_NAME:"OpenLayers.Format.SOSGetFeatureOfInterest"});OpenLayers.Format.SOSGetObservation=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{ows:"http://www.opengis.net/ows",gml:"http://www.opengis.net/gml",sos:"http://www.opengis.net/sos/1.0",ogc:"http://www.opengis.net/ogc",om:"http://www.opengis.net/om/1.0",sa:"http://www.opengis.net/sampling/1.0",xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance"},regExes:{trimSpace:/^\s*|\s*$/g,removeSpace:/\s*/g,splitSpace:/\s+/,trimComma:/\s*,\s*/g},VERSION:"1.0.0",schemaLocation:"http://www.opengis.net/sos/1.0 http://schemas.opengis.net/sos/1.0.0/sosGetObservation.xsd",
defaultPrefix:"sos",read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));a&&9==a.nodeType&&(a=a.documentElement);var b={measurements:[],observations:[]};this.readNode(a,b);return b},write:function(a){a=this.writeNode("sos:GetObservation",a);a.setAttribute("xmlns:om",this.namespaces.om);a.setAttribute("xmlns:ogc",this.namespaces.ogc);this.setAttributeNS(a,this.namespaces.xsi,"xsi:schemaLocation",this.schemaLocation);return OpenLayers.Format.XML.prototype.write.apply(this,
[a])},readers:{om:{ObservationCollection:function(a,b){b.id=this.getAttributeNS(a,this.namespaces.gml,"id");this.readChildNodes(a,b)},member:function(a,b){this.readChildNodes(a,b)},Measurement:function(a,b){var c={};b.measurements.push(c);this.readChildNodes(a,c)},Observation:function(a,b){var c={};b.observations.push(c);this.readChildNodes(a,c)},samplingTime:function(a,b){var c={};b.samplingTime=c;this.readChildNodes(a,c)},observedProperty:function(a,b){b.observedProperty=this.getAttributeNS(a,this.namespaces.xlink,
"href");this.readChildNodes(a,b)},procedure:function(a,b){b.procedure=this.getAttributeNS(a,this.namespaces.xlink,"href");this.readChildNodes(a,b)},featureOfInterest:function(a,b){var c={features:[]};b.fois=[];b.fois.push(c);this.readChildNodes(a,c);for(var d=[],e=0,f=c.features.length;e<f;e++){var g=c.features[e];d.push(new OpenLayers.Feature.Vector(g.components[0],g.attributes))}c.features=d},result:function(a,b){var c={};b.result=c;""!==this.getChildValue(a)?(c.value=this.getChildValue(a),c.uom=
a.getAttribute("uom")):this.readChildNodes(a,c)}},sa:OpenLayers.Format.SOSGetFeatureOfInterest.prototype.readers.sa,gml:OpenLayers.Util.applyDefaults({TimeInstant:function(a,b){var c={};b.timeInstant=c;this.readChildNodes(a,c)},timePosition:function(a,b){b.timePosition=this.getChildValue(a)}},OpenLayers.Format.SOSGetFeatureOfInterest.prototype.readers.gml)},writers:{sos:{GetObservation:function(a){var b=this.createElementNSPlus("GetObservation",{attributes:{version:this.VERSION,service:"SOS"}});this.writeNode("offering",
a,b);a.eventTime&&this.writeNode("eventTime",a,b);for(var c in a.procedures)this.writeNode("procedure",a.procedures[c],b);for(var d in a.observedProperties)this.writeNode("observedProperty",a.observedProperties[d],b);a.foi&&this.writeNode("featureOfInterest",a.foi,b);this.writeNode("responseFormat",a,b);a.resultModel&&this.writeNode("resultModel",a,b);a.responseMode&&this.writeNode("responseMode",a,b);return b},featureOfInterest:function(a){var b=this.createElementNSPlus("featureOfInterest");this.writeNode("ObjectID",
a.objectId,b);return b},ObjectID:function(a){return this.createElementNSPlus("ObjectID",{value:a})},responseFormat:function(a){return this.createElementNSPlus("responseFormat",{value:a.responseFormat})},procedure:function(a){return this.createElementNSPlus("procedure",{value:a})},offering:function(a){return this.createElementNSPlus("offering",{value:a.offering})},observedProperty:function(a){return this.createElementNSPlus("observedProperty",{value:a})},eventTime:function(a){var b=this.createElementNSPlus("eventTime");
"latest"===a.eventTime&&this.writeNode("ogc:TM_Equals",a,b);return b},resultModel:function(a){return this.createElementNSPlus("resultModel",{value:a.resultModel})},responseMode:function(a){return this.createElementNSPlus("responseMode",{value:a.responseMode})}},ogc:{TM_Equals:function(a){var b=this.createElementNSPlus("ogc:TM_Equals");this.writeNode("ogc:PropertyName",{property:"urn:ogc:data:time:iso8601"},b);"latest"===a.eventTime&&this.writeNode("gml:TimeInstant",{value:"latest"},b);return b},PropertyName:function(a){return this.createElementNSPlus("ogc:PropertyName",
{value:a.property})}},gml:{TimeInstant:function(a){var b=this.createElementNSPlus("gml:TimeInstant");this.writeNode("gml:timePosition",a,b);return b},timePosition:function(a){return this.createElementNSPlus("gml:timePosition",{value:a.value})}}},CLASS_NAME:"OpenLayers.Format.SOSGetObservation"});OpenLayers.Control.UTFGrid=OpenLayers.Class(OpenLayers.Control,{autoActivate:!0,layers:null,defaultHandlerOptions:{delay:300,pixelTolerance:4,stopMove:!1,single:!0,"double":!1,stopSingle:!1,stopDouble:!1},handlerMode:"click",setHandler:function(a){this.handlerMode=a;this.resetHandler()},resetHandler:function(){this.handler&&(this.handler.deactivate(),this.handler.destroy(),this.handler=null);"hover"==this.handlerMode?this.handler=new OpenLayers.Handler.Hover(this,{pause:this.handleEvent,move:this.reset},
this.handlerOptions):"click"==this.handlerMode?this.handler=new OpenLayers.Handler.Click(this,{click:this.handleEvent},this.handlerOptions):"move"==this.handlerMode&&(this.handler=new OpenLayers.Handler.Hover(this,{pause:this.handleEvent,move:this.handleEvent},this.handlerOptions));return this.handler?!0:!1},initialize:function(a){a=a||{};a.handlerOptions=a.handlerOptions||this.defaultHandlerOptions;OpenLayers.Control.prototype.initialize.apply(this,[a]);this.resetHandler()},handleEvent:function(a){if(null==
a)this.reset();else{var b=this.map.getLonLatFromPixel(a.xy);if(b){var c=this.findLayers();if(0<c.length){for(var d={},e,f,g=0,h=c.length;g<h;g++)e=c[g],f=OpenLayers.Util.indexOf(this.map.layers,e),d[f]=e.getFeatureInfo(b);this.callback(d,b,a.xy)}}}},callback:function(a){},reset:function(a){this.callback(null)},findLayers:function(){for(var a=this.layers||this.map.layers,b=[],c,d=a.length-1;0<=d;--d)c=a[d],c instanceof OpenLayers.Layer.UTFGrid&&b.push(c);return b},CLASS_NAME:"OpenLayers.Control.UTFGrid"});OpenLayers.Format.CQL=function(){function a(a){function b(){var a=e.pop();switch(a.type){case "LOGICAL":var c=b(),g=b();return new OpenLayers.Filter.Logical({filters:[g,c],type:f[a.text.toUpperCase()]});case "NOT":return a=b(),new OpenLayers.Filter.Logical({filters:[a],type:OpenLayers.Filter.Logical.NOT});case "BETWEEN":return e.pop(),g=b(),a=b(),c=b(),new OpenLayers.Filter.Comparison({property:c,lowerBoundary:a,upperBoundary:g,type:OpenLayers.Filter.Comparison.BETWEEN});case "COMPARISON":return g=
b(),c=b(),new OpenLayers.Filter.Comparison({property:c,value:g,type:d[a.text.toUpperCase()]});case "IS_NULL":return c=b(),new OpenLayers.Filter.Comparison({property:c,type:d[a.text.toUpperCase()]});case "VALUE":return(c=a.text.match(/^'(.*)'$/))?c[1].replace(/''/g,"'"):Number(a.text);case "SPATIAL":switch(a.text.toUpperCase()){case "BBOX":var a=b(),c=b(),g=b(),h=b(),k=b();return new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.BBOX,property:k,value:OpenLayers.Bounds.fromArray([h,g,c,
a])});case "INTERSECTS":return g=b(),c=b(),new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.INTERSECTS,property:c,value:g});case "WITHIN":return g=b(),c=b(),new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.WITHIN,property:c,value:g});case "CONTAINS":return g=b(),c=b(),new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.CONTAINS,property:c,value:g});case "DWITHIN":return a=b(),g=b(),c=b(),new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.DWITHIN,value:g,
property:c,distance:Number(a)})}case "GEOMETRY":return OpenLayers.Geometry.fromWKT(a.text);default:return a.text}}for(var c=[],e=[];a.length;){var g=a.shift();switch(g.type){case "PROPERTY":case "GEOMETRY":case "VALUE":e.push(g);break;case "COMPARISON":case "BETWEEN":case "IS_NULL":case "LOGICAL":for(var k=h[g.type];0<c.length&&h[c[c.length-1].type]<=k;)e.push(c.pop());c.push(g);break;case "SPATIAL":case "NOT":case "LPAREN":c.push(g);break;case "RPAREN":for(;0<c.length&&"LPAREN"!=c[c.length-1].type;)e.push(c.pop());
c.pop();0<c.length&&"SPATIAL"==c[c.length-1].type&&e.push(c.pop());case "COMMA":case "END":break;default:throw Error("Unknown token type "+g.type);}}for(;0<c.length;)e.push(c.pop());a=b();if(0<e.length){a="Remaining tokens after building AST: \n";for(c=e.length-1;0<=c;c--)a+=e[c].type+": "+e[c].text+"\n";throw Error(a);}return a}var b={PROPERTY:/^[_a-zA-Z]\w*/,COMPARISON:/^(=|<>|<=|<|>=|>|LIKE)/i,IS_NULL:/^IS NULL/i,COMMA:/^,/,LOGICAL:/^(AND|OR)/i,VALUE:/^('([^']|'')*'|\d+(\.\d*)?|\.\d+)/,LPAREN:/^\(/,
RPAREN:/^\)/,SPATIAL:/^(BBOX|INTERSECTS|DWITHIN|WITHIN|CONTAINS)/i,NOT:/^NOT/i,BETWEEN:/^BETWEEN/i,GEOMETRY:function(a){var b=/^(POINT|LINESTRING|POLYGON|MULTIPOINT|MULTILINESTRING|MULTIPOLYGON|GEOMETRYCOLLECTION)/.exec(a);if(b){var c=a.length,b=a.indexOf("(",b[0].length);if(-1<b)for(var d=1;b<c&&0<d;)switch(b++,a.charAt(b)){case "(":d++;break;case ")":d--}return[a.substr(0,b+1)]}},END:/^$/},c={LPAREN:["GEOMETRY","SPATIAL","PROPERTY","VALUE","LPAREN"],RPAREN:["NOT","LOGICAL","END","RPAREN"],PROPERTY:["COMPARISON",
"BETWEEN","COMMA","IS_NULL"],BETWEEN:["VALUE"],IS_NULL:["END"],COMPARISON:["VALUE"],COMMA:["GEOMETRY","VALUE","PROPERTY"],VALUE:["LOGICAL","COMMA","RPAREN","END"],SPATIAL:["LPAREN"],LOGICAL:["NOT","VALUE","SPATIAL","PROPERTY","LPAREN"],NOT:["PROPERTY","LPAREN"],GEOMETRY:["COMMA","RPAREN"]},d={"=":OpenLayers.Filter.Comparison.EQUAL_TO,"<>":OpenLayers.Filter.Comparison.NOT_EQUAL_TO,"<":OpenLayers.Filter.Comparison.LESS_THAN,"<=":OpenLayers.Filter.Comparison.LESS_THAN_OR_EQUAL_TO,">":OpenLayers.Filter.Comparison.GREATER_THAN,
">=":OpenLayers.Filter.Comparison.GREATER_THAN_OR_EQUAL_TO,LIKE:OpenLayers.Filter.Comparison.LIKE,BETWEEN:OpenLayers.Filter.Comparison.BETWEEN,"IS NULL":OpenLayers.Filter.Comparison.IS_NULL},e={},f={AND:OpenLayers.Filter.Logical.AND,OR:OpenLayers.Filter.Logical.OR},g={},h={RPAREN:3,LOGICAL:2,COMPARISON:1},k;for(k in d)d.hasOwnProperty(k)&&(e[d[k]]=k);for(k in f)f.hasOwnProperty(k)&&(g[f[k]]=k);return OpenLayers.Class(OpenLayers.Format,{read:function(d){var e=d;d=[];var f,g=["NOT","GEOMETRY","SPATIAL",
"PROPERTY","LPAREN"];do{a:{f=g;for(var h=void 0,g=void 0,k=f.length,h=0;h<k;h++){var g=f[h],s=b[g]instanceof RegExp?b[g].exec(e):(0,b[g])(e);if(s){f=s[0];e=e.substr(f.length).replace(/^\s*/,"");f={type:g,text:f,remainder:e};break a}}d="ERROR: In parsing: ["+e+"], expected one of: ";for(h=0;h<k;h++)g=f[h],d+="\n    "+g+": "+b[g];throw Error(d);}e=f.remainder;g=c[f.type];if("END"!=f.type&&!g)throw Error("No follows list for "+f.type);d.push(f)}while("END"!=f.type);d=a(d);this.keepData&&(this.data=d);
return d},write:function(a){if(a instanceof OpenLayers.Geometry)return a.toString();switch(a.CLASS_NAME){case "OpenLayers.Filter.Spatial":switch(a.type){case OpenLayers.Filter.Spatial.BBOX:return"BBOX("+a.property+","+a.value.toBBOX()+")";case OpenLayers.Filter.Spatial.DWITHIN:return"DWITHIN("+a.property+", "+this.write(a.value)+", "+a.distance+")";case OpenLayers.Filter.Spatial.WITHIN:return"WITHIN("+a.property+", "+this.write(a.value)+")";case OpenLayers.Filter.Spatial.INTERSECTS:return"INTERSECTS("+
a.property+", "+this.write(a.value)+")";case OpenLayers.Filter.Spatial.CONTAINS:return"CONTAINS("+a.property+", "+this.write(a.value)+")";default:throw Error("Unknown spatial filter type: "+a.type);}case "OpenLayers.Filter.Logical":if(a.type==OpenLayers.Filter.Logical.NOT)return"NOT ("+this.write(a.filters[0])+")";for(var b="(",c=!0,d=0;d<a.filters.length;d++)c?c=!1:b+=") "+g[a.type]+" (",b+=this.write(a.filters[d]);return b+")";case "OpenLayers.Filter.Comparison":return a.type==OpenLayers.Filter.Comparison.BETWEEN?
a.property+" BETWEEN "+this.write(a.lowerBoundary)+" AND "+this.write(a.upperBoundary):null!==a.value?a.property+" "+e[a.type]+" "+this.write(a.value):a.property+" "+e[a.type];case void 0:if("string"===typeof a)return"'"+a.replace(/'/g,"''")+"'";if("number"===typeof a)return String(a);default:throw Error("Can't encode: "+a.CLASS_NAME+" "+a);}},CLASS_NAME:"OpenLayers.Format.CQL"})}();OpenLayers.Control.Split=OpenLayers.Class(OpenLayers.Control,{layer:null,source:null,sourceOptions:null,tolerance:null,edge:!0,deferDelete:!1,mutual:!0,targetFilter:null,sourceFilter:null,handler:null,initialize:function(a){OpenLayers.Control.prototype.initialize.apply(this,[a]);this.options=a||{};this.options.source&&this.setSource(this.options.source)},setSource:function(a){this.active?(this.deactivate(),this.handler&&(this.handler.destroy(),delete this.handler),this.source=a,this.activate()):this.source=
a},activate:function(){var a=OpenLayers.Control.prototype.activate.call(this);if(a)if(!this.source)this.handler||(this.handler=new OpenLayers.Handler.Path(this,{done:function(a){this.onSketchComplete({feature:new OpenLayers.Feature.Vector(a)})}},{layerOptions:this.sourceOptions})),this.handler.activate();else if(this.source.events)this.source.events.on({sketchcomplete:this.onSketchComplete,afterfeaturemodified:this.afterFeatureModified,scope:this});return a},deactivate:function(){var a=OpenLayers.Control.prototype.deactivate.call(this);
a&&this.source&&this.source.events&&this.source.events.un({sketchcomplete:this.onSketchComplete,afterfeaturemodified:this.afterFeatureModified,scope:this});return a},onSketchComplete:function(a){this.feature=null;return!this.considerSplit(a.feature)},afterFeatureModified:function(a){a.modified&&"function"===typeof a.feature.geometry.split&&(this.feature=a.feature,this.considerSplit(a.feature))},removeByGeometry:function(a,b){for(var c=0,d=a.length;c<d;++c)if(a[c].geometry===b){a.splice(c,1);break}},
isEligible:function(a){return a.geometry?a.state!==OpenLayers.State.DELETE&&"function"===typeof a.geometry.split&&this.feature!==a&&(!this.targetFilter||this.targetFilter.evaluate(a.attributes)):!1},considerSplit:function(a){var b=!1,c=!1;if(!this.sourceFilter||this.sourceFilter.evaluate(a.attributes)){for(var d=this.layer&&this.layer.features||[],e,f,g=[],h=[],k=this.layer===this.source&&this.mutual,l={edge:this.edge,tolerance:this.tolerance,mutual:k},m=[a.geometry],n,p,q,r=0,s=d.length;r<s;++r)if(n=
d[r],this.isEligible(n)){p=[n.geometry];for(var t=0;t<m.length;++t){q=m[t];for(var u=0;u<p.length;++u)if(e=p[u],q.getBounds().intersectsBounds(e.getBounds())&&(e=q.split(e,l)))f=this.events.triggerEvent("beforesplit",{source:a,target:n}),!1!==f&&(k&&(f=e[0],1<f.length&&(f.unshift(t,1),Array.prototype.splice.apply(m,f),t+=f.length-3),e=e[1]),1<e.length&&(e.unshift(u,1),Array.prototype.splice.apply(p,e),u+=e.length-3))}p&&1<p.length&&(this.geomsToFeatures(n,p),this.events.triggerEvent("split",{original:n,
features:p}),Array.prototype.push.apply(g,p),h.push(n),c=!0)}m&&1<m.length&&(this.geomsToFeatures(a,m),this.events.triggerEvent("split",{original:a,features:m}),Array.prototype.push.apply(g,m),h.push(a),b=!0);if(b||c){if(this.deferDelete){d=[];r=0;for(s=h.length;r<s;++r)c=h[r],c.state===OpenLayers.State.INSERT?d.push(c):(c.state=OpenLayers.State.DELETE,this.layer.drawFeature(c));this.layer.destroyFeatures(d,{silent:!0});r=0;for(s=g.length;r<s;++r)g[r].state=OpenLayers.State.INSERT}else this.layer.destroyFeatures(h,
{silent:!0});this.layer.addFeatures(g,{silent:!0});this.events.triggerEvent("aftersplit",{source:a,features:g})}}return b},geomsToFeatures:function(a,b){var c=a.clone();delete c.geometry;for(var d,e=0,f=b.length;e<f;++e)d=c.clone(),d.geometry=b[e],d.state=OpenLayers.State.INSERT,b[e]=d},destroy:function(){this.active&&this.deactivate();OpenLayers.Control.prototype.destroy.call(this)},CLASS_NAME:"OpenLayers.Control.Split"});OpenLayers.Layer.WMTS=OpenLayers.Class(OpenLayers.Layer.Grid,{isBaseLayer:!0,version:"1.0.0",requestEncoding:"KVP",url:null,layer:null,matrixSet:null,style:null,format:"image/jpeg",tileOrigin:null,tileFullExtent:null,formatSuffix:null,matrixIds:null,dimensions:null,params:null,zoomOffset:0,serverResolutions:null,formatSuffixMap:{"image/png":"png","image/png8":"png","image/png24":"png","image/png32":"png",png:"png","image/jpeg":"jpg","image/jpg":"jpg",jpeg:"jpg",jpg:"jpg"},matrix:null,initialize:function(a){var b=
{url:!0,layer:!0,style:!0,matrixSet:!0},c;for(c in b)if(!(c in a))throw Error("Missing property '"+c+"' in layer configuration.");a.params=OpenLayers.Util.upperCaseObject(a.params);OpenLayers.Layer.Grid.prototype.initialize.apply(this,[a.name,a.url,a.params,a]);this.formatSuffix||(this.formatSuffix=this.formatSuffixMap[this.format]||this.format.split("/").pop());if(this.matrixIds&&(a=this.matrixIds.length)&&"string"===typeof this.matrixIds[0])for(b=this.matrixIds,this.matrixIds=Array(a),c=0;c<a;++c)this.matrixIds[c]=
{identifier:b[c]}},setMap:function(){OpenLayers.Layer.Grid.prototype.setMap.apply(this,arguments)},updateMatrixProperties:function(){if(this.matrix=this.getMatrix())this.matrix.topLeftCorner&&(this.tileOrigin=this.matrix.topLeftCorner),this.matrix.tileWidth&&this.matrix.tileHeight&&(this.tileSize=new OpenLayers.Size(this.matrix.tileWidth,this.matrix.tileHeight)),this.tileOrigin||(this.tileOrigin=new OpenLayers.LonLat(this.maxExtent.left,this.maxExtent.top)),this.tileFullExtent||(this.tileFullExtent=
this.maxExtent)},moveTo:function(a,b,c){!b&&this.matrix||this.updateMatrixProperties();return OpenLayers.Layer.Grid.prototype.moveTo.apply(this,arguments)},clone:function(a){null==a&&(a=new OpenLayers.Layer.WMTS(this.options));return a=OpenLayers.Layer.Grid.prototype.clone.apply(this,[a])},getIdentifier:function(){return this.getServerZoom()},getMatrix:function(){var a;if(this.matrixIds&&0!==this.matrixIds.length)if("scaleDenominator"in this.matrixIds[0])for(var b=OpenLayers.METERS_PER_INCH*OpenLayers.INCHES_PER_UNIT[this.units]*
this.getServerResolution()/2.8E-4,c=Number.POSITIVE_INFINITY,d,e=0,f=this.matrixIds.length;e<f;++e)d=Math.abs(1-this.matrixIds[e].scaleDenominator/b),d<c&&(c=d,a=this.matrixIds[e]);else a=this.matrixIds[this.getIdentifier()];else a={identifier:this.getIdentifier()};return a},getTileInfo:function(a){var b=this.getServerResolution(),c=(a.lon-this.tileOrigin.lon)/(b*this.tileSize.w);a=(this.tileOrigin.lat-a.lat)/(b*this.tileSize.h);var b=Math.floor(c),d=Math.floor(a);return{col:b,row:d,i:Math.floor((c-
b)*this.tileSize.w),j:Math.floor((a-d)*this.tileSize.h)}},getURL:function(a){a=this.adjustBounds(a);var b="";if(!this.tileFullExtent||this.tileFullExtent.intersectsBounds(a)){a=a.getCenterLonLat();var c=this.getTileInfo(a);a=this.dimensions;var d,b=OpenLayers.Util.isArray(this.url)?this.selectUrl([this.version,this.style,this.matrixSet,this.matrix.identifier,c.row,c.col].join(),this.url):this.url;if("REST"===this.requestEncoding.toUpperCase())if(d=this.params,-1!==b.indexOf("{")){b=b.replace(/\{/g,
"${");c={style:this.style,Style:this.style,TileMatrixSet:this.matrixSet,TileMatrix:this.matrix.identifier,TileRow:c.row,TileCol:c.col};if(a){var e,f;for(f=a.length-1;0<=f;--f)e=a[f],c[e]=d[e.toUpperCase()]}b=OpenLayers.String.format(b,c)}else{e=this.version+"/"+this.layer+"/"+this.style+"/";if(a)for(f=0;f<a.length;f++)d[a[f]]&&(e=e+d[a[f]]+"/");e=e+this.matrixSet+"/"+this.matrix.identifier+"/"+c.row+"/"+c.col+"."+this.formatSuffix;b.match(/\/$/)||(b+="/");b+=e}else"KVP"===this.requestEncoding.toUpperCase()&&
(d={SERVICE:"WMTS",REQUEST:"GetTile",VERSION:this.version,LAYER:this.layer,STYLE:this.style,TILEMATRIXSET:this.matrixSet,TILEMATRIX:this.matrix.identifier,TILEROW:c.row,TILECOL:c.col,FORMAT:this.format},b=OpenLayers.Layer.Grid.prototype.getFullRequestString.apply(this,[d]))}return b},mergeNewParams:function(a){if("KVP"===this.requestEncoding.toUpperCase())return OpenLayers.Layer.Grid.prototype.mergeNewParams.apply(this,[OpenLayers.Util.upperCaseObject(a)])},CLASS_NAME:"OpenLayers.Layer.WMTS"});OpenLayers.Protocol.SOS.v1_0_0=OpenLayers.Class(OpenLayers.Protocol,{fois:null,formatOptions:null,initialize:function(a){OpenLayers.Protocol.prototype.initialize.apply(this,[a]);a.format||(this.format=new OpenLayers.Format.SOSGetFeatureOfInterest(this.formatOptions))},destroy:function(){this.options&&!this.options.format&&this.format.destroy();this.format=null;OpenLayers.Protocol.prototype.destroy.apply(this)},read:function(a){a=OpenLayers.Util.extend({},a);OpenLayers.Util.applyDefaults(a,this.options||
{});var b=new OpenLayers.Protocol.Response({requestType:"read"}),c=this.format,c=OpenLayers.Format.XML.prototype.write.apply(c,[c.writeNode("sos:GetFeatureOfInterest",{fois:this.fois})]);b.priv=OpenLayers.Request.POST({url:a.url,callback:this.createCallback(this.handleRead,b,a),data:c});return b},handleRead:function(a,b){if(b.callback){var c=a.priv;200<=c.status&&300>c.status?(a.features=this.parseFeatures(c),a.code=OpenLayers.Protocol.Response.SUCCESS):a.code=OpenLayers.Protocol.Response.FAILURE;
b.callback.call(b.scope,a)}},parseFeatures:function(a){var b=a.responseXML;b&&b.documentElement||(b=a.responseText);return!b||0>=b.length?null:this.format.read(b)},CLASS_NAME:"OpenLayers.Protocol.SOS.v1_0_0"});OpenLayers.Layer.KaMapCache=OpenLayers.Class(OpenLayers.Layer.KaMap,{IMAGE_EXTENSIONS:{jpeg:"jpg",gif:"gif",png:"png",png8:"png",png24:"png",dithered:"png"},DEFAULT_FORMAT:"jpeg",initialize:function(a,b,c,d){OpenLayers.Layer.KaMap.prototype.initialize.apply(this,arguments);this.extension=this.IMAGE_EXTENSIONS[this.params.i.toLowerCase()||this.DEFAULT_FORMAT]},getURL:function(a){a=this.adjustBounds(a);var b=this.map.getResolution(),c=Math.round(1E4*this.map.getScale())/1E4,d=Math.round(a.left/b);a=
-Math.round(a.top/b);var b=Math.floor(d/this.tileSize.w/this.params.metaTileSize.w)*this.tileSize.w*this.params.metaTileSize.w,e=Math.floor(a/this.tileSize.h/this.params.metaTileSize.h)*this.tileSize.h*this.params.metaTileSize.h,c=["/",this.params.map,"/",c,"/",this.params.g.replace(/\s/g,"_"),"/def/t",e,"/l",b,"/t",a,"l",d,".",this.extension],d=this.url;OpenLayers.Util.isArray(d)&&(d=this.selectUrl(c.join(""),d));return d+c.join("")},CLASS_NAME:"OpenLayers.Layer.KaMapCache"});OpenLayers.Protocol.WFS.v1_1_0=OpenLayers.Class(OpenLayers.Protocol.WFS.v1,{version:"1.1.0",initialize:function(a){OpenLayers.Protocol.WFS.v1.prototype.initialize.apply(this,arguments);this.outputFormat&&!this.readFormat&&("gml2"==this.outputFormat.toLowerCase()?this.readFormat=new OpenLayers.Format.GML.v2({featureType:this.featureType,featureNS:this.featureNS,geometryName:this.geometryName}):"json"==this.outputFormat.toLowerCase()&&(this.readFormat=new OpenLayers.Format.GeoJSON))},CLASS_NAME:"OpenLayers.Protocol.WFS.v1_1_0"});OpenLayers.Format.WMSCapabilities.v1_1_1=OpenLayers.Class(OpenLayers.Format.WMSCapabilities.v1_1,{version:"1.1.1",readers:{wms:OpenLayers.Util.applyDefaults({SRS:function(a,b){b.srs[this.getChildValue(a)]=!0}},OpenLayers.Format.WMSCapabilities.v1_1.prototype.readers.wms)},CLASS_NAME:"OpenLayers.Format.WMSCapabilities.v1_1_1"});OpenLayers.Format.WMSCapabilities.v1_1_1_WMSC=OpenLayers.Class(OpenLayers.Format.WMSCapabilities.v1_1_1,{version:"1.1.1",profile:"WMSC",readers:{wms:OpenLayers.Util.applyDefaults({VendorSpecificCapabilities:function(a,b){b.vendorSpecific={tileSets:[]};this.readChildNodes(a,b.vendorSpecific)},TileSet:function(a,b){var c={srs:{},bbox:{},resolutions:[]};this.readChildNodes(a,c);b.tileSets.push(c)},Resolutions:function(a,b){for(var c=this.getChildValue(a).split(" "),d=0,e=c.length;d<e;d++)""!=c[d]&&b.resolutions.push(parseFloat(c[d]))},
Width:function(a,b){b.width=parseInt(this.getChildValue(a))},Height:function(a,b){b.height=parseInt(this.getChildValue(a))},Layers:function(a,b){b.layers=this.getChildValue(a)},Styles:function(a,b){b.styles=this.getChildValue(a)}},OpenLayers.Format.WMSCapabilities.v1_1_1.prototype.readers.wms)},CLASS_NAME:"OpenLayers.Format.WMSCapabilities.v1_1_1_WMSC"});OpenLayers.Control.LayerSwitcher=OpenLayers.Class(OpenLayers.Control,{layerStates:null,layersDiv:null,baseLayersDiv:null,baseLayers:null,dataLbl:null,dataLayersDiv:null,dataLayers:null,minimizeDiv:null,maximizeDiv:null,ascending:!0,initialize:function(a){OpenLayers.Control.prototype.initialize.apply(this,arguments);this.layerStates=[]},destroy:function(){this.clearLayersArray("base");this.clearLayersArray("data");this.map.events.un({buttonclick:this.onButtonClick,addlayer:this.redraw,changelayer:this.redraw,
removelayer:this.redraw,changebaselayer:this.redraw,scope:this});this.events.unregister("buttonclick",this,this.onButtonClick);OpenLayers.Control.prototype.destroy.apply(this,arguments)},setMap:function(a){OpenLayers.Control.prototype.setMap.apply(this,arguments);this.map.events.on({addlayer:this.redraw,changelayer:this.redraw,removelayer:this.redraw,changebaselayer:this.redraw,scope:this});this.outsideViewport?(this.events.attachToElement(this.div),this.events.register("buttonclick",this,this.onButtonClick)):
this.map.events.register("buttonclick",this,this.onButtonClick)},draw:function(){OpenLayers.Control.prototype.draw.apply(this);this.loadContents();this.outsideViewport||this.minimizeControl();this.redraw();return this.div},onButtonClick:function(a){a=a.buttonElement;a===this.minimizeDiv?this.minimizeControl():a===this.maximizeDiv?this.maximizeControl():a._layerSwitcher===this.id&&(a["for"]&&(a=document.getElementById(a["for"])),a.disabled||("radio"==a.type?(a.checked=!0,this.map.setBaseLayer(this.map.getLayer(a._layer))):
(a.checked=!a.checked,this.updateMap())))},clearLayersArray:function(a){this[a+"LayersDiv"].innerHTML="";this[a+"Layers"]=[]},checkRedraw:function(){if(!this.layerStates.length||this.map.layers.length!=this.layerStates.length)return!0;for(var a=0,b=this.layerStates.length;a<b;a++){var c=this.layerStates[a],d=this.map.layers[a];if(c.name!=d.name||c.inRange!=d.inRange||c.id!=d.id||c.visibility!=d.visibility)return!0}return!1},redraw:function(){if(!this.checkRedraw())return this.div;this.clearLayersArray("base");
this.clearLayersArray("data");var a=!1,b=!1,c=this.map.layers.length;this.layerStates=Array(c);for(var d=0;d<c;d++){var e=this.map.layers[d];this.layerStates[d]={name:e.name,visibility:e.visibility,inRange:e.inRange,id:e.id}}var f=this.map.layers.slice();this.ascending||f.reverse();d=0;for(c=f.length;d<c;d++){var e=f[d],g=e.isBaseLayer;if(e.displayInLayerSwitcher){g?b=!0:a=!0;var h=g?e==this.map.baseLayer:e.getVisibility(),k=document.createElement("input"),l=OpenLayers.Util.createUniqueID(this.id+
"_input_");k.id=l;k.name=g?this.id+"_baseLayers":e.name;k.type=g?"radio":"checkbox";k.value=e.name;k.checked=h;k.defaultChecked=h;k.className="olButton";k._layer=e.id;k._layerSwitcher=this.id;g||e.inRange||(k.disabled=!0);h=document.createElement("label");h["for"]=k.id;OpenLayers.Element.addClass(h,"labelSpan olButton");h._layer=e.id;h._layerSwitcher=this.id;g||e.inRange||(h.style.color="gray");h.innerHTML=e.name;h.style.verticalAlign=g?"bottom":"baseline";l=document.createElement("br");(g?this.baseLayers:
this.dataLayers).push({layer:e,inputElem:k,labelSpan:h});e=g?this.baseLayersDiv:this.dataLayersDiv;e.appendChild(k);e.appendChild(h);e.appendChild(l)}}this.dataLbl.style.display=a?"":"none";this.baseLbl.style.display=b?"":"none";return this.div},updateMap:function(){for(var a=0,b=this.baseLayers.length;a<b;a++){var c=this.baseLayers[a];c.inputElem.checked&&this.map.setBaseLayer(c.layer,!1)}a=0;for(b=this.dataLayers.length;a<b;a++)c=this.dataLayers[a],c.layer.setVisibility(c.inputElem.checked)},maximizeControl:function(a){this.div.style.width=
"";this.div.style.height="";this.showControls(!1);null!=a&&OpenLayers.Event.stop(a)},minimizeControl:function(a){this.div.style.width="0px";this.div.style.height="0px";this.showControls(!0);null!=a&&OpenLayers.Event.stop(a)},showControls:function(a){this.maximizeDiv.style.display=a?"":"none";this.minimizeDiv.style.display=a?"none":"";this.layersDiv.style.display=a?"none":""},loadContents:function(){this.layersDiv=document.createElement("div");this.layersDiv.id=this.id+"_layersDiv";OpenLayers.Element.addClass(this.layersDiv,
"layersDiv");this.baseLbl=document.createElement("div");this.baseLbl.innerHTML=OpenLayers.i18n("Base Layer");OpenLayers.Element.addClass(this.baseLbl,"baseLbl");this.baseLayersDiv=document.createElement("div");OpenLayers.Element.addClass(this.baseLayersDiv,"baseLayersDiv");this.dataLbl=document.createElement("div");this.dataLbl.innerHTML=OpenLayers.i18n("Overlays");OpenLayers.Element.addClass(this.dataLbl,"dataLbl");this.dataLayersDiv=document.createElement("div");OpenLayers.Element.addClass(this.dataLayersDiv,
"dataLayersDiv");this.ascending?(this.layersDiv.appendChild(this.baseLbl),this.layersDiv.appendChild(this.baseLayersDiv),this.layersDiv.appendChild(this.dataLbl),this.layersDiv.appendChild(this.dataLayersDiv)):(this.layersDiv.appendChild(this.dataLbl),this.layersDiv.appendChild(this.dataLayersDiv),this.layersDiv.appendChild(this.baseLbl),this.layersDiv.appendChild(this.baseLayersDiv));this.div.appendChild(this.layersDiv);var a=OpenLayers.Util.getImageLocation("layer-switcher-maximize.png");this.maximizeDiv=
OpenLayers.Util.createAlphaImageDiv("OpenLayers_Control_MaximizeDiv",null,null,a,"absolute");OpenLayers.Element.addClass(this.maximizeDiv,"maximizeDiv olButton");this.maximizeDiv.style.display="none";this.div.appendChild(this.maximizeDiv);a=OpenLayers.Util.getImageLocation("layer-switcher-minimize.png");this.minimizeDiv=OpenLayers.Util.createAlphaImageDiv("OpenLayers_Control_MinimizeDiv",null,null,a,"absolute");OpenLayers.Element.addClass(this.minimizeDiv,"minimizeDiv olButton");this.minimizeDiv.style.display=
"none";this.div.appendChild(this.minimizeDiv)},CLASS_NAME:"OpenLayers.Control.LayerSwitcher"});OpenLayers.Format.Atom=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{atom:"http://www.w3.org/2005/Atom",georss:"http://www.georss.org/georss"},feedTitle:"untitled",defaultEntryTitle:"untitled",gmlParser:null,xy:!1,read:function(a){"string"==typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));return this.parseFeatures(a)},write:function(a){var b;if(OpenLayers.Util.isArray(a)){b=this.createElementNSPlus("atom:feed");b.appendChild(this.createElementNSPlus("atom:title",{value:this.feedTitle}));
for(var c=0,d=a.length;c<d;c++)b.appendChild(this.buildEntryNode(a[c]))}else b=this.buildEntryNode(a);return OpenLayers.Format.XML.prototype.write.apply(this,[b])},buildContentNode:function(a){var b=this.createElementNSPlus("atom:content",{attributes:{type:a.type||null}});if(a.src)b.setAttribute("src",a.src);else if("text"==a.type||null==a.type)b.appendChild(this.createTextNode(a.value));else if("html"==a.type){if("string"!=typeof a.value)throw"HTML content must be in form of an escaped string";b.appendChild(this.createTextNode(a.value))}else"xhtml"==
a.type?b.appendChild(a.value):"xhtml"==a.type||a.type.match(/(\+|\/)xml$/)?b.appendChild(a.value):b.appendChild(this.createTextNode(a.value));return b},buildEntryNode:function(a){var b=a.attributes,c=b.atom||{},d=this.createElementNSPlus("atom:entry");if(c.authors)for(var e=OpenLayers.Util.isArray(c.authors)?c.authors:[c.authors],f=0,g=e.length;f<g;f++)d.appendChild(this.buildPersonConstructNode("author",e[f]));if(c.categories)for(var e=OpenLayers.Util.isArray(c.categories)?c.categories:[c.categories],
h,f=0,g=e.length;f<g;f++)h=e[f],d.appendChild(this.createElementNSPlus("atom:category",{attributes:{term:h.term,scheme:h.scheme||null,label:h.label||null}}));c.content&&d.appendChild(this.buildContentNode(c.content));if(c.contributors)for(e=OpenLayers.Util.isArray(c.contributors)?c.contributors:[c.contributors],f=0,g=e.length;f<g;f++)d.appendChild(this.buildPersonConstructNode("contributor",e[f]));a.fid&&d.appendChild(this.createElementNSPlus("atom:id",{value:a.fid}));if(c.links)for(e=OpenLayers.Util.isArray(c.links)?
c.links:[c.links],f=0,g=e.length;f<g;f++)h=e[f],d.appendChild(this.createElementNSPlus("atom:link",{attributes:{href:h.href,rel:h.rel||null,type:h.type||null,hreflang:h.hreflang||null,title:h.title||null,length:h.length||null}}));c.published&&d.appendChild(this.createElementNSPlus("atom:published",{value:c.published}));c.rights&&d.appendChild(this.createElementNSPlus("atom:rights",{value:c.rights}));(c.summary||b.description)&&d.appendChild(this.createElementNSPlus("atom:summary",{value:c.summary||
b.description}));d.appendChild(this.createElementNSPlus("atom:title",{value:c.title||b.title||this.defaultEntryTitle}));c.updated&&d.appendChild(this.createElementNSPlus("atom:updated",{value:c.updated}));a.geometry&&(b=this.createElementNSPlus("georss:where"),b.appendChild(this.buildGeometryNode(a.geometry)),d.appendChild(b));return d},initGmlParser:function(){this.gmlParser=new OpenLayers.Format.GML.v3({xy:this.xy,featureNS:"http://example.com#feature",internalProjection:this.internalProjection,
externalProjection:this.externalProjection})},buildGeometryNode:function(a){this.gmlParser||this.initGmlParser();return this.gmlParser.writeNode("feature:_geometry",a).firstChild},buildPersonConstructNode:function(a,b){var c=["uri","email"],d=this.createElementNSPlus("atom:"+a);d.appendChild(this.createElementNSPlus("atom:name",{value:b.name}));for(var e=0,f=c.length;e<f;e++)b[c[e]]&&d.appendChild(this.createElementNSPlus("atom:"+c[e],{value:b[c[e]]}));return d},getFirstChildValue:function(a,b,c,
d){return(a=this.getElementsByTagNameNS(a,b,c))&&0<a.length?this.getChildValue(a[0],d):d},parseFeature:function(a){var b={},c=null,d=null,e=null,f=this.namespaces.atom;this.parsePersonConstructs(a,"author",b);d=this.getElementsByTagNameNS(a,f,"category");0<d.length&&(b.categories=[]);for(var g=0,h=d.length;g<h;g++){c={};c.term=d[g].getAttribute("term");if(e=d[g].getAttribute("scheme"))c.scheme=e;if(e=d[g].getAttribute("label"))c.label=e;b.categories.push(c)}d=this.getElementsByTagNameNS(a,f,"content");
if(0<d.length){c={};if(e=d[0].getAttribute("type"))c.type=e;(e=d[0].getAttribute("src"))?c.src=e:("text"==c.type||"html"==c.type||null==c.type?c.value=this.getFirstChildValue(a,f,"content",null):"xhtml"==c.type||c.type.match(/(\+|\/)xml$/)?c.value=this.getChildEl(d[0]):c.value=this.getFirstChildValue(a,f,"content",null),b.content=c)}this.parsePersonConstructs(a,"contributor",b);b.id=this.getFirstChildValue(a,f,"id",null);d=this.getElementsByTagNameNS(a,f,"link");0<d.length&&(b.links=Array(d.length));
for(var k=["rel","type","hreflang","title","length"],g=0,h=d.length;g<h;g++){c={};c.href=d[g].getAttribute("href");for(var l=0,m=k.length;l<m;l++)(e=d[g].getAttribute(k[l]))&&(c[k[l]]=e);b.links[g]=c}if(c=this.getFirstChildValue(a,f,"published",null))b.published=c;if(c=this.getFirstChildValue(a,f,"rights",null))b.rights=c;if(c=this.getFirstChildValue(a,f,"summary",null))b.summary=c;b.title=this.getFirstChildValue(a,f,"title",null);b.updated=this.getFirstChildValue(a,f,"updated",null);c={title:b.title,
description:b.summary,atom:b};a=this.parseLocations(a)[0];a=new OpenLayers.Feature.Vector(a,c);a.fid=b.id;return a},parseFeatures:function(a){var b=[],c=this.getElementsByTagNameNS(a,this.namespaces.atom,"entry");0==c.length&&(c=[a]);a=0;for(var d=c.length;a<d;a++)b.push(this.parseFeature(c[a]));return b},parseLocations:function(a){var b=this.namespaces.georss,c={components:[]},d=this.getElementsByTagNameNS(a,b,"where");if(d&&0<d.length){this.gmlParser||this.initGmlParser();for(var e=0,f=d.length;e<
f;e++)this.gmlParser.readChildNodes(d[e],c)}c=c.components;if((d=this.getElementsByTagNameNS(a,b,"point"))&&0<d.length)for(e=0,f=d.length;e<f;e++){var g=OpenLayers.String.trim(d[e].firstChild.nodeValue).split(/\s+/);2!=g.length&&(g=OpenLayers.String.trim(d[e].firstChild.nodeValue).split(/\s*,\s*/));c.push(new OpenLayers.Geometry.Point(g[1],g[0]))}var h=this.getElementsByTagNameNS(a,b,"line");if(h&&0<h.length)for(var k,e=0,f=h.length;e<f;e++){d=OpenLayers.String.trim(h[e].firstChild.nodeValue).split(/\s+/);
k=[];for(var l=0,m=d.length;l<m;l+=2)g=new OpenLayers.Geometry.Point(d[l+1],d[l]),k.push(g);c.push(new OpenLayers.Geometry.LineString(k))}if((a=this.getElementsByTagNameNS(a,b,"polygon"))&&0<a.length)for(e=0,f=a.length;e<f;e++){d=OpenLayers.String.trim(a[e].firstChild.nodeValue).split(/\s+/);k=[];l=0;for(m=d.length;l<m;l+=2)g=new OpenLayers.Geometry.Point(d[l+1],d[l]),k.push(g);c.push(new OpenLayers.Geometry.Polygon([new OpenLayers.Geometry.LinearRing(k)]))}if(this.internalProjection&&this.externalProjection)for(e=
0,f=c.length;e<f;e++)c[e]&&c[e].transform(this.externalProjection,this.internalProjection);return c},parsePersonConstructs:function(a,b,c){var d=[],e=this.namespaces.atom;a=this.getElementsByTagNameNS(a,e,b);for(var f=["uri","email"],g=0,h=a.length;g<h;g++){var k={};k.name=this.getFirstChildValue(a[g],e,"name",null);for(var l=0,m=f.length;l<m;l++){var n=this.getFirstChildValue(a[g],e,f[l],null);n&&(k[f[l]]=n)}d.push(k)}0<d.length&&(c[b+"s"]=d)},CLASS_NAME:"OpenLayers.Format.Atom"});OpenLayers.Control.KeyboardDefaults=OpenLayers.Class(OpenLayers.Control,{autoActivate:!0,slideFactor:75,observeElement:null,draw:function(){this.handler=new OpenLayers.Handler.Keyboard(this,{keydown:this.defaultKeyPress},{observeElement:this.observeElement||document})},defaultKeyPress:function(a){var b,c=!0;b=OpenLayers.Event.element(a);if(!b||"INPUT"!=b.tagName&&"TEXTAREA"!=b.tagName&&"SELECT"!=b.tagName){switch(a.keyCode){case OpenLayers.Event.KEY_LEFT:this.map.pan(-this.slideFactor,0);break;case OpenLayers.Event.KEY_RIGHT:this.map.pan(this.slideFactor,
0);break;case OpenLayers.Event.KEY_UP:this.map.pan(0,-this.slideFactor);break;case OpenLayers.Event.KEY_DOWN:this.map.pan(0,this.slideFactor);break;case 33:b=this.map.getSize();this.map.pan(0,-0.75*b.h);break;case 34:b=this.map.getSize();this.map.pan(0,0.75*b.h);break;case 35:b=this.map.getSize();this.map.pan(0.75*b.w,0);break;case 36:b=this.map.getSize();this.map.pan(-0.75*b.w,0);break;case 43:case 61:case 187:case 107:this.map.zoomIn();break;case 45:case 109:case 189:case 95:this.map.zoomOut();
break;default:c=!1}c&&OpenLayers.Event.stop(a)}},CLASS_NAME:"OpenLayers.Control.KeyboardDefaults"});OpenLayers.Format.WMTSCapabilities.v1_0_0=OpenLayers.Class(OpenLayers.Format.OWSCommon.v1_1_0,{version:"1.0.0",namespaces:{ows:"http://www.opengis.net/ows/1.1",wmts:"http://www.opengis.net/wmts/1.0",xlink:"http://www.w3.org/1999/xlink"},yx:null,defaultPrefix:"wmts",initialize:function(a){OpenLayers.Format.XML.prototype.initialize.apply(this,[a]);this.options=a;a=OpenLayers.Util.extend({},OpenLayers.Format.WMTSCapabilities.prototype.yx);this.yx=OpenLayers.Util.extend(a,this.yx)},read:function(a){"string"==
typeof a&&(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));a&&9==a.nodeType&&(a=a.documentElement);var b={};this.readNode(a,b);b.version=this.version;return b},readers:{wmts:{Capabilities:function(a,b){this.readChildNodes(a,b)},Contents:function(a,b){b.contents={};b.contents.layers=[];b.contents.tileMatrixSets={};this.readChildNodes(a,b.contents)},Layer:function(a,b){var c={styles:[],formats:[],dimensions:[],tileMatrixSetLinks:[],layers:[]};this.readChildNodes(a,c);b.layers.push(c)},Style:function(a,
b){var c={};c.isDefault="true"===a.getAttribute("isDefault");this.readChildNodes(a,c);b.styles.push(c)},Format:function(a,b){b.formats.push(this.getChildValue(a))},TileMatrixSetLink:function(a,b){var c={};this.readChildNodes(a,c);b.tileMatrixSetLinks.push(c)},TileMatrixSet:function(a,b){if(b.layers){var c={matrixIds:[]};this.readChildNodes(a,c);b.tileMatrixSets[c.identifier]=c}else b.tileMatrixSet=this.getChildValue(a)},TileMatrix:function(a,b){var c={supportedCRS:b.supportedCRS};this.readChildNodes(a,
c);b.matrixIds.push(c)},ScaleDenominator:function(a,b){b.scaleDenominator=parseFloat(this.getChildValue(a))},TopLeftCorner:function(a,b){var c=this.getChildValue(a).split(" "),d;b.supportedCRS&&(d=b.supportedCRS.replace(/urn:ogc:def:crs:(\w+):.+:(\w+)$/,"urn:ogc:def:crs:$1::$2"),d=!!this.yx[d]);b.topLeftCorner=d?new OpenLayers.LonLat(c[1],c[0]):new OpenLayers.LonLat(c[0],c[1])},TileWidth:function(a,b){b.tileWidth=parseInt(this.getChildValue(a))},TileHeight:function(a,b){b.tileHeight=parseInt(this.getChildValue(a))},
MatrixWidth:function(a,b){b.matrixWidth=parseInt(this.getChildValue(a))},MatrixHeight:function(a,b){b.matrixHeight=parseInt(this.getChildValue(a))},ResourceURL:function(a,b){b.resourceUrl=b.resourceUrl||{};var c=a.getAttribute("resourceType");b.resourceUrls||(b.resourceUrls=[]);c=b.resourceUrl[c]={format:a.getAttribute("format"),template:a.getAttribute("template"),resourceType:c};b.resourceUrls.push(c)},WSDL:function(a,b){b.wsdl={};b.wsdl.href=a.getAttribute("xlink:href")},ServiceMetadataURL:function(a,
b){b.serviceMetadataUrl={};b.serviceMetadataUrl.href=a.getAttribute("xlink:href")},LegendURL:function(a,b){b.legend={};b.legend.href=a.getAttribute("xlink:href");b.legend.format=a.getAttribute("format")},Dimension:function(a,b){var c={values:[]};this.readChildNodes(a,c);b.dimensions.push(c)},Default:function(a,b){b["default"]=this.getChildValue(a)},Value:function(a,b){b.values.push(this.getChildValue(a))}},ows:OpenLayers.Format.OWSCommon.v1_1_0.prototype.readers.ows},CLASS_NAME:"OpenLayers.Format.WMTSCapabilities.v1_0_0"});
// source --> https://ermafa-passage.de/wp-content/plugins/osm/js/OSM/openlayers/OpenStreetMap.js?ver=6.9.4 
/**
 * Class: OpenLayers.Layer.OSM.Mapnik
 *
 * Inherits from:
 *  - <OpenLayers.Layer.OSM>
 */
OpenLayers.Layer.OSM.Mapnik = OpenLayers.Class(OpenLayers.Layer.OSM, {
    /**
     * Constructor: OpenLayers.Layer.OSM.Mapnik
     *
     * Parameters:
     * name - {String}
     * options - {Object} Hashtable of extra options to tag onto the layer
     */
    initialize: function(name, options) {
        var url = [
            "https://a.tile.openstreetmap.org/${z}/${x}/${y}.png",
            "https://b.tile.openstreetmap.org/${z}/${x}/${y}.png",
            "https://c.tile.openstreetmap.org/${z}/${x}/${y}.png"
        ];
        options = OpenLayers.Util.extend({
            numZoomLevels: 20,
            attribution: "&copy; <a href='http://www.openstreetmap.org/copyright'>OpenStreetMap</a> contributors; <a href='https://www.hyumika.com'>OSM Plugin</a>",
            buffer: 0,
            tileOptions: {crossOriginKeyword: null},
            transitionEffect: "resize"
        }, options);
        var newArguments = [name, url, options];
        OpenLayers.Layer.OSM.prototype.initialize.apply(this, newArguments);
    },

    CLASS_NAME: "OpenLayers.Layer.OSM.Mapnik"
});

/**
 * Class: OpenLayers.Layer.OSM.CycleMap
 *
 * Inherits from:
 *  - <OpenLayers.Layer.OSM>
 */
OpenLayers.Layer.OSM.CycleMap = OpenLayers.Class(OpenLayers.Layer.OSM, {
    /**
     * Constructor: OpenLayers.Layer.OSM.CycleMap
     *
     * Parameters:
     * name - {String}
     * options - {Object} Hashtable of extra options to tag onto the layer
     */
    initialize: function(name, options) {
        var url = [
            "https://a.tile.opencyclemap.org/cycle/${z}/${x}/${y}.png",
            "https://b.tile.opencyclemap.org/cycle/${z}/${x}/${y}.png",
            "https://c.tile.opencyclemap.org/cycle/${z}/${x}/${y}.png"
        ];
        options = OpenLayers.Util.extend({
            numZoomLevels: 19,
            attribution: "&copy; <a href='http://www.openstreetmap.org/copyright'>OpenStreetMap</a>  contributors, Tiles courtesy of <a href='http://www.opencyclemap.org'>Andy Allan</a>; <a href='https://www.hyumika.com'>OSM Plugin</a>",
            buffer: 0,
            tileOptions: {crossOriginKeyword: null},
            transitionEffect: "resize"
        }, options);
        var newArguments = [name, url, options];
        OpenLayers.Layer.OSM.prototype.initialize.apply(this, newArguments);
    },

    CLASS_NAME: "OpenLayers.Layer.OSM.CycleMap"
});


/**
 * Class: OpenLayers.Layer.OSM.StamenWC
 *
 * Inherits from:
 *  - <OpenLayers.Layer.OSM>
 */
OpenLayers.Layer.OSM.StamenWC = OpenLayers.Class(OpenLayers.Layer.OSM, {
    /**
     * Constructor: OpenLayers.Layer.OSM.StamenWC
     *
     * Parameters:
     * name - {String}
     * options - {Object} Hashtable of extra options to tag onto the layer
     */
    initialize: function(name, options) {
        var url = [
            "https://a.tile.stamen.com/watercolor/${z}/${x}/${y}.jpg",
            "https://b.tile.stamen.com/watercolor/${z}/${x}/${y}.jpg",
            "https://c.tile.stamen.com/watercolor/${z}/${x}/${y}.jpg"
        ];
        options = OpenLayers.Util.extend({
            numZoomLevels: 19,
            attribution: "<a href=\"http://map.stamen.com\">Map tiles</a> by <a href=\"http://stamen.com\">Stamen Design</a>, under <a href=\"http://creativecommons.org/licenses/by/3.0\">CC BY 3.0</a>. Data by <a href=\"http://openstreetmap.org\">OpenStreetMap</a>  and <a href=\"https://www.hyumika.com\">OSM Plugin</a>",
            buffer: 0,
            tileOptions: {crossOriginKeyword: null},
            transitionEffect: "resize"
        }, options);
        var newArguments = [name, url, options];
        OpenLayers.Layer.OSM.prototype.initialize.apply(this, newArguments);
    },

    CLASS_NAME: "OpenLayers.Layer.OSM.StamenWC"
});
/**
 * Class: OpenLayers.Layer.OSM.StamenToner
 *
 * Inherits from:
 *  - <OpenLayers.Layer.OSM>
 */
OpenLayers.Layer.OSM.StamenToner = OpenLayers.Class(OpenLayers.Layer.OSM, {
    /**
     * Constructor: OpenLayers.Layer.OSM.StamenToner
     *
     * Parameters:
     * name - {String}
     * options - {Object} Hashtable of extra options to tag onto the layer
     */
    initialize: function(name, options) {
        var url = [
            "https://a.tile.stamen.com/toner/${z}/${x}/${y}.jpg",
            "https://b.tile.stamen.com/toner/${z}/${x}/${y}.jpg",
            "https://c.tile.stamen.com/toner/${z}/${x}/${y}.jpg"
        ];
        options = OpenLayers.Util.extend({
            numZoomLevels: 19,
            attribution: "<a href=\"http://map.stamen.com\">Map tiles</a> by <a href=\"http://stamen.com\">Stamen Design</a>, under <a href=\"http://creativecommons.org/licenses/by/3.0\">CC BY 3.0</a>. Data by <a href=\"http://openstreetmap.org\">OpenStreetMap</a> and <a href=\"https://www.hyumika.com\">OSM Plugin</a>",
            buffer: 0,
            tileOptions: {crossOriginKeyword: null},
            transitionEffect: "resize"
        }, options);
        var newArguments = [name, url, options];
        OpenLayers.Layer.OSM.prototype.initialize.apply(this, newArguments);
    },

    CLASS_NAME: "OpenLayers.Layer.OSM.StamenToner"
});
/**
 * Class: OpenLayers.Layer.OSM.TransportMap
 *
 * Inherits from:
 *  - <OpenLayers.Layer.OSM>
 */
OpenLayers.Layer.OSM.TransportMap = OpenLayers.Class(OpenLayers.Layer.OSM, {
    /**
     * Constructor: OpenLayers.Layer.OSM.TransportMap
     *
     * Parameters:
     * name - {String}
     * options - {Object} Hashtable of extra options to tag onto the layer
     */
    initialize: function(name, options) {
        var url = [
            "https://a.tile2.opencyclemap.org/transport/${z}/${x}/${y}.png",
            "https://b.tile2.opencyclemap.org/transport/${z}/${x}/${y}.png",
            "https://c.tile2.opencyclemap.org/transport/${z}/${x}/${y}.png"
        ];
        options = OpenLayers.Util.extend({
            numZoomLevels: 19,
            attribution: "&copy; <a href='http://www.openstreetmap.org/copyright'>OpenStreetMap</a> contributors, Tiles courtesy of <a href='http://www.opencyclemap.org'>Andy Allan</a>,  and <a href=\"https://www.hyumika.com\">OSM Plugin</a>",
            buffer: 0,
            transitionEffect: "resize"
        }, options);
        var newArguments = [name, url, options];
        OpenLayers.Layer.OSM.prototype.initialize.apply(this, newArguments);
    },

    CLASS_NAME: "OpenLayers.Layer.OSM.TransportMap"
});
// source --> https://ermafa-passage.de/wp-content/plugins/osm/js/OSeaM/harbours.js?ver=6.9.4 
/******************************************************************************
 Copyright 2008 - 2011 Xavier Le Bourdon, Christoph Böhme, Mitja Kleider

 This file originates from the Openstreetbugs project and was modified
 by Matthias Hoffmann and Olaf Hannemann for the OpenSeaMap project.

 This file is free software: you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
 the Free Software Foundation, either version 3 of the License, or
 (at your option) any later version.

 This file is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with this file.  If not, see <http://www.gnu.org/licenses/>.
 ******************************************************************************/

/******************************************************************************
 This file implements the client-side of the harbour display.
 Version 0.1.5  03.10.2011
 ******************************************************************************/

// List of downloaded harbours:
var harbours = new Array();

var selectControlHarbour;

// Current state of the user interface. This is used
// to keep track which popups are displayed.
var harbour_state = 0;
var harbour_current_feature = null;
var popuptime=0;


// AJAX functions--------------------------------------------------------------------------------------------

// Request harbours from the server.
function make_harbour_request(params) {
    var url = "";
    for (var name in params) {
        url += (url.indexOf("?") > -1) ? "&" : "?";
        url += encodeURIComponent(name) + "=" + encodeURIComponent(params[name]);
    }
    // Example: http://dev.openseamap.org/website/map/api/getHarbours.php?b=43.16098&t=43.46375&l=16.23863&r=17.39219&ucid=0&maxSize=5&zoom=11
    var skgUrl="http://dev.openseamap.org/website/map/api/getHarbours.php"+url;

    var script = document.createElement("script");
    script.src = skgUrl;
    script.type = "text/javascript";
    document.body.appendChild(script);
}

// This function is called from the scripts that are returned on make_harbour_request calls.
function putHarbourMarker(id, lon, lat, names, link, type) {

    if (!harbour_exist(id,type)) {
        var name = names.split("-");
        if(type==-1) {
            type = determineHarbourType(name[0]);
        }
        var popupText = "<b>" + name[0] +"</b>&nbsp;&nbsp;&nbsp;&nbsp;<br/>";
        if (typeof name[1] != "undefined") {
            popupText += name[1];
        }
        if (typeof name[2] != "undefined") {
            popupText += "<br/><i>" + name[2] + "</i>";
        }
        if (link != '') {
            popupText += "<br/><br/><a href='" + link + "' target='blank'>" + linkTextSkipperGuide + "</a>";
        }
        popupText += "<br/><a href='http://openportguide.org/cgi-bin/weather/weather.pl/weather.png?var=meteogram&nx=614&ny=750&lat=" + lat + "&lon=" + lon + "&lang=" + language + "&unit=metric&label=" + convert2Locode(name[0]) + "' target='blank'>" + linkTextWeatherHarbour + "</a>";
        create_harbour_marker(lon2x(lon), lat2y(lat), popupText, type);

        var harbour = {id: id, name: names, lat: lat, lon: lon, type: type, feature: null};
        harbours.push(harbour);
    }
}


// Harbour management----------------------------------------------------------------------------------------

// Downloads new harbours from the server.
function refreshHarbours() {

    if (refreshHarbours.call_count == undefined) {
        refreshHarbours.call_count = 0;
    } else {
        ++refreshHarbours.call_count;
    }
    bounds = map.getExtent().toArray();
    var b = y2lat(bounds[1]).toFixed(5);
    var t = y2lat(bounds[3]).toFixed(5);
    var l = x2lon(bounds[0]).toFixed(5);
    var r = x2lon(bounds[2]).toFixed(5);

    var params = { "b": b, "t": t, "l": l, "r": r, "ucid": refreshHarbours.call_count, "maxSize":getHarbourVisibility(zoom), "zoom":zoom};
    make_harbour_request(params);
}

// Check if a harbour has been downloaded already.
function harbour_exist(id,type) {
    for (var i in harbours) {
        if (harbours[i].id == id && (harbours[i].type == type
            || type==-1 && (harbours[i].type==5
                ||harbours[i].type==6 ))) {
            return true;
        }
    }

    return false;
}

function isWPI(type) {
    /**********************************
    1 = L
    2 = M
    3 = S
    4 = V (Very small)
    5 = Marina (representative skipperguide)
    6 = Anchorage (representative skipperguide)
    7 = other descr. skipperguide
    ***********************************/
    if(type<=4) {
        return true;
    }
    return false;
}

function determineHarbourType(myName){
    for (var i in harbours) {
        var otherName = harbours[i].name.split("-");
        if(myName==otherName[0]) {
            return 6;
        }
    }
    return 5;
}

function getHarbourVisibility(zoom){
    var maxType=1;
    if(zoom>=7) {
        maxType=2;
    }
    if(zoom>=8) {
        maxType=3;
    }
    if(zoom>=9) {
        maxType=4;
    }
    if(zoom>=10) {
        maxType=6;
    }

 return maxType;
}

// Return a harbour description from the list of downloaded harbours.
function get_harbour(id,type) {
    for (var i in harbours) {
        if (harbours[i].id == id && harbours[i].type == type) {
            return harbours[i];
        }
    }

    return '';
}

function create_harbour_marker(x, y, popupText, type) {
    var layer_poi_icon_style = OpenLayers.Util.extend({});
    var harbour_marker = new OpenLayers.Geometry.Point(x, y);
    var maxType = getHarbourVisibility(zoom);

    if(type <= maxType){
        if (isWPI(type)) {
            layer_poi_icon_style.externalGraphic = './resources/places/harbour_32.png';
        } else {
            if (type == 6) {
                layer_poi_icon_style.externalGraphic = './resources/places/anchorage_32.png';
            } else {
                layer_poi_icon_style.externalGraphic = './resources/places/marina_32.png';
            }
        }
        layer_poi_icon_style.graphicWidth = 24;
        layer_poi_icon_style.graphicHeight = 24;

        if(zoom>=5 ||refreshHarbours.call_count>0) {
            var pointFeature = new OpenLayers.Feature.Vector(harbour_marker, null, layer_poi_icon_style);
            pointFeature.popupClass = OpenLayers.Class(OpenLayers.Popup.FramedCloud);
            pointFeature.data.popupContentHTML = popupText;
            layer_pois.addFeatures([pointFeature]);
        }
    }
};
// source --> https://ermafa-passage.de/wp-content/plugins/osm/js/OSeaM/map_utils.js?ver=6.9.4 
/******************************************************************************
 Javascript OpenLayers map_utils
 author Olaf Hannemann
 license GPL V3
 version 0.1.3
 date 11.09.2011

 This file is free software: you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
 the Free Software Foundation, either version 3 of the License, or
 (at your option) any later version.

 This file is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License (http://www.gnu.org/licenses/) for more details.
 ******************************************************************************/

// Constants-------------------------------------------------------------------
var earthRadius = 6371.221; //Km

// Projections-----------------------------------------------------------------
var projMerc = new OpenLayers.Projection("EPSG:900913");
var proj4326 = new OpenLayers.Projection("EPSG:4326");

// Zoom------------------------------------------------------------------------
var zoomUnits= [
    30*3600,    // zoom=0
    30*3600,
    15*3600,
    10*3600,
    5*3600,
    5*3600,
    2*3600,
    1*3600,
    30*60,
    20*60,
    10*60,      // zoom=10
    5*60,
    2*60,
    1*60,
    30,
    30,
    12,
    6,
    6,
    3           // zoom=19
];

// Transformations-------------------------------------------------------------
function Lon2Merc(value) {
    return 20037508.34 * value / 180;
}

function Lat2Merc(value) {
    var PI = 3.14159265358979323846;
    lat = Math.log(Math.tan( (90 + value) * PI / 360)) / (PI / 180);
    return 20037508.34 * value / 180;
}

function plusfacteur(a) {
    return a * (20037508.34 / 180);
}

function moinsfacteur(a) {
    return a / (20037508.34 / 180);
}

function y2lat(a) {
    return 180/Math.PI * (2 * Math.atan(Math.exp(moinsfacteur(a)*Math.PI/180)) - Math.PI/2);
}

function lat2y(a) {
    return plusfacteur(180/Math.PI * Math.log(Math.tan(Math.PI/4+a*(Math.PI/180)/2)));
}

function x2lon(a) {
    return moinsfacteur(a);
}

function lon2x(a) {
    return plusfacteur(a);
}

function km2nm(a) {
    return a * 0.540;
}

function lat2DegreeMinute(buffLat) {
    var ns = buffLat >= 0 ? 'N' : 'S';
    var lat_m = Math.abs(buffLat*60).toFixed(3);
    var lat_d = Math.floor (lat_m/60);
    lat_m -= lat_d*60;

    return ns + lat_d + "°" + format2FixedLenght(lat_m, 6, 3) + "'";
}

function lon2DegreeMinute(buffLon) {
    var we = buffLon >= 0 ? 'E' : 'W';
    var lon_m = Math.abs(buffLon*60).toFixed(3);
    var lon_d = Math.floor (lon_m/60);
    lon_m -= lon_d*60;

    return we + lon_d + "°" + format2FixedLenght(lon_m, 6, 3) + "'";
}

function lonLatToMercator(ll) {
    return new OpenLayers.LonLat(lon2x(ll.lon), lat2y(ll.lat));
}

// shorten coordinate to 5 digits in decimal fraction
function shorter_coord(coord) {
    return Math.round(coord*100000)/100000;
}


// Common utilities------------------------------------------------------------
function jumpTo(lon, lat, zoom) {
    var lonlat = new OpenLayers.LonLat(lon, lat);
    lonlat.transform(proj4326, projMerc);
    map.setCenter(lonlat, zoom);
}

function getTileURL(bounds) {
    var res = this.map.getResolution();
    var x = Math.round((bounds.left - this.maxExtent.left) / (res * this.tileSize.w));
    var y = Math.round((this.maxExtent.top - bounds.top) / (res * this.tileSize.h));
    var z = this.map.getZoom();
    var limit = Math.pow(2, z);
    if (y < 0 || y >= limit) {
        return null;
    } else {
        x = ((x % limit) + limit) % limit;
        url = this.url;
        path= z + "/" + x + "/" + y + "." + this.type;
        if (url instanceof Array) {
            url = this.selectUrl(path, url);
        }
        return url+path;
    }
}

function getTileURLAsParams(bounds) {
    var res = this.map.getResolution();
    var x = Math.round((bounds.left - this.maxExtent.left) / (res * this.tileSize.w));
    var y = Math.round((this.maxExtent.top - bounds.top) / (res * this.tileSize.h));
    var z = this.map.getZoom();

    var limit = Math.pow(2, z);

    if (y < 0 || y >= limit) {
        return OpenLayers.Util.getImagesLocation() + "404.png";
    } else {
        x = ((x % limit) + limit) % limit;
        return this.url + "x=" + x + "&y=" + y + "&z=" + z;
    }
}

function addMarker(layer, buffLon, buffLat, popupContentHTML) {
    var pos = new OpenLayers.LonLat(buffLon, buffLat);
    pos.transform(proj4326, projMerc);
    var mFeature = new OpenLayers.Feature(layer, pos);
    mFeature.closeBox = true;
    mFeature.popupClass = OpenLayers.Class(OpenLayers.Popup.FramedCloud, {minSize: new OpenLayers.Size(260, 100) } );
    mFeature.data.popupContentHTML = popupContentHTML;

    var size = new OpenLayers.Size(32,32);
    var offset = new OpenLayers.Pixel(-(size.w/2), -size.h);
    var icon = new OpenLayers.Icon('resources/icons/Needle_Red_32.png', size, offset);

    var marker = new OpenLayers.Marker(pos, icon);
    marker.feature = mFeature;

    var markerClick = function(evt) {
        if (this.popup == null) {
            this.popup = this.createPopup(this.closeBox);
            map.addPopup(this.popup);
            this.popup.show();
        } else {
            this.popup.toggle();
        }
        OpenLayers.Event.stop(evt);
    };


    layer.addMarker(marker);
    if (popupContentHTML != -1) {
        marker.events.register("mousedown", mFeature, markerClick);
        map.addPopup(mFeature.createPopup(mFeature.closeBox));
    }
}

// Vector layer utilities------------------------------------------------------
function getLineSegments(line) {
    var numSegments = line.components.length - 1;
    var segments = new Array(numSegments), point1, point2;
    for(var i = 0; i < numSegments; ++i) {
        point1 = line.components[i];
        point2 = line.components[i + 1];
        segments[i] = {
            x1: point1.x,
            y1: point1.y,
            x2: point2.x,
            y2: point2.y
        };
    }

    return segments;
}

function getLineSegmentLength(segment) {
    return Math.sqrt( Math.pow((segment.x2 -segment.x1),2) + Math.pow((segment.y2 -segment.y1),2) );
}

function getDistance(latA, latB, lonA, lonB) {
    var dLat = OpenLayers.Util.rad(latB - latA);
    var dLon = OpenLayers.Util.rad(lonB - lonA);
    var lat1 = OpenLayers.Util.rad(latA);
    var lat2 = OpenLayers.Util.rad(latB);

    var a = Math.PI/2-lat2;
    var b = Math.PI/2-lat1;
    var c = Math.acos(Math.cos(a)*Math.cos(b)+Math.sin(a)*Math.sin(b)*Math.cos(dLon));
    var d = km2nm(earthRadius * c);

    return d;
}

function getBearing(latA, latB, lonA, lonB) {
    var dLat = OpenLayers.Util.rad(latB-latA);
    var dLon = OpenLayers.Util.rad(lonB-lonA);
    var lat1 = OpenLayers.Util.rad(latA);
    var lat2 = OpenLayers.Util.rad(latB);

    var y = Math.sin(dLon) * Math.cos(lat2);
    var x = Math.cos(lat1)*Math.sin(lat2) -
        Math.sin(lat1)*Math.cos(lat2)*Math.cos(dLon);
    var brng = OpenLayers.Util.deg(Math.atan2(y, x));

    return (brng + 360) % 360;
};
// source --> https://ermafa-passage.de/wp-content/plugins/osm/js/OSeaM/utilities.js?ver=6.9.4 
/******************************************************************************
 Javascript Utilities
 author Olaf Hannemann
 license GPL V3
 version 0.1.4
 date 13.08.2011

 This file is free software: you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
 the Free Software Foundation, either version 3 of the License, or
 (at your option) any later version.

 This file is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License (http://www.gnu.org/licenses/)for more details.
 ******************************************************************************/

function setCookie(key, value) {
    var expireDate = new Date;
    expireDate.setMonth(expireDate.getMonth() + 6);
    document.cookie = key + "=" + value + ";" + "expires=" + expireDate.toGMTString() + ";";
}

function getCookie(argument) {
    var buff = document.cookie;
    var args = buff.split(";");
    for(i = 0; i < args.length; i++) {
        var a = args[i].split("=");
        if(trim(a[0]) == argument) {
            return trim(a[1]);
        }
    }

    return "-1";
}

function getArgument(argument) {
    if(window.location.search != "") {
        // We have parameters
        var undef = document.URL.split("?");
        var args = undef[1].split("&");
        for(i = 0; i < args.length; i++) {
            var a = args[i].split("=");
            if(a[0] == argument) {
                return a[1];
            }
        }
        return "-1";
    }
    return "-1";
}

function checkKeyReturn(e) {
    if (e.keyCode == 13) {
        return true;
    }

    return false;
}

function trim(buffer) {
      return buffer.replace(/^\s+/, '').replace(/\s+$/, '');
}

function convert2Web(buffer) {
    buffer = buffer.replace('&', '&amp;');
    buffer = buffer.replace('<', '&lt;');
    buffer = buffer.replace('>', '&gt;');
    buffer = buffer.replace('\'', '&apos;');
    buffer = buffer.replace('\"', '&quot;');

    return buffer
}

function convert2Ascii(buffer) {
    buffer = buffer.replace('ü', 'ue');
    buffer = buffer.replace('ö', 'oe');
    buffer = buffer.replace('ä', 'ae');
    buffer = buffer.replace('ß', 'ss');
    buffer = buffer.replace('ø', 'oe');

    return buffer
}

function convert2Locode(buffer) {
    buffer = buffer.replace('ü', 'u');
    buffer = buffer.replace('ö', 'o');
    buffer = buffer.replace('ä', 'a');
    buffer = buffer.replace('ß', 'ss');
    buffer = buffer.replace('ø', 'o');

    return buffer
}

function convert2Text(buffer) {
    buffer = buffer.replace(/%20/g, ' ');
    buffer = buffer.replace(/&#176;/g, '°');

    return buffer
}

function format2FixedLenght(number, length, fraclength) {
    var text = number.toFixed(fraclength);
    while (text.length < length) text = "0"+text;
    return text;
}

function loadXMLDoc(name) {
    if (window.XMLHttpRequest) {
        xhttp=new XMLHttpRequest();
    } else {
        xhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
    xhttp.open("GET",name,false);
    xhttp.send();

    return xhttp.responseXML;
};
// source --> https://ermafa-passage.de/wp-content/plugins/osm/js/osm-plugin-lib.js?ver=6.9.4 
/*
  OSM OpenLayers for OSM wordpress plugin
  plugin: http://wp-osm-plugin.hyumika.com
  blog:   http://www.hyumika.com
*/

// Display Disc / Circles
function osm_getFeatureDiscCenter(a_tileLayer, a_discLayer, a_lon, a_lat, a_radius, a_centeropac, a_centercol, a_strw, a_strcol, a_stropac, a_fillcol, a_fillopac) 
{
    var lonLat = new OpenLayers.LonLat(a_lon, a_lat).transform(a_tileLayer.displayProjection, a_tileLayer.projection);

    var discStyle    = { strokeColor: a_strcol,
                         strokeOpacity: a_stropac,
                         strokeWidth: a_strw,
                         fillColor: a_fillcol,
                         fillOpacity: a_fillopac
                       };
    var centerStyle  = { strokeColor: a_centercol,
                         strokeOpacity: a_centeropac,
                         strokeWidth: a_strw,
                         fillColor: a_centercol,
                         fillOpacity: a_centeropac
                       };

    var radius = a_radius / Math.cos(a_lat*(Math.PI/180));

    var disc = OpenLayers.Geometry.Polygon.createRegularPolygon(
                                             new OpenLayers.Geometry.Point(lonLat.lon, lonLat.lat),
                                             radius,
                                             200); // nombre de faces
                 
    var center = OpenLayers.Geometry.Polygon.createRegularPolygon(
                                             new OpenLayers.Geometry.Point(lonLat.lon, lonLat.lat),
                                             1,   // taille dans lunite de la carte
                                             5);  // nombre de faces
                 

    var featureDisc   = new OpenLayers.Feature.Vector(disc,null,discStyle);
    var featureCenter = new OpenLayers.Feature.Vector(center,null,centerStyle);
    a_discLayer.addFeatures([featureDisc,featureCenter]);
}

// Draw line
function osm_setLinePoints(a_tileLayer, a_lineLayer, a_strw, a_strcol, a_stropac, a_Points)
{
  var Points = new Array();

  for (var i = 0; i < a_Points.length; i++) {
   // var lonLat = new OpenLayers.LonLat(a_Points[i]["lon"], a_Points[i]["lat"]).transform(new OpenLayers.Projection("EPSG:4326"), a_tileLayer.getProjectionObject());
   var lonLat = new OpenLayers.LonLat(a_Points[i]["lon"], a_Points[i]["lat"]).transform(a_tileLayer.displayProjection, a_tileLayer.projection);
    Points[i] = new OpenLayers.Geometry.Point(lonLat.lon, lonLat.lat);
  }
  var line = new OpenLayers.Geometry.LineString(Points);
  var style = { 
    strokeColor: a_strcol, 
    strokeOpacity: a_stropac, 
    strokeWidth: a_strw 
   };

  var lineFeature = new OpenLayers.Feature.Vector(line, null, style);
  a_lineLayer.addFeatures([lineFeature]);
}


// Clickhandler / Shorcode generator

function osm_getIconSize(a_IconName){
  Icon = new Object();
  if (a_IconName.match('mic_')) {
    Icon["height"] = "37";
    Icon["width"] = "32";
    Icon["offset_height"] = "-37";
    Icon["offset_width"] = "-16";
  }
  else if (a_IconName.match('wpttemp')){
    Icon["height"] = "24";
    Icon["width"] = "24";
    Icon["offset_height"] = "-24";
    Icon["offset_width"] = "-0";
  }
  else if ((a_IconName == "camping.png") || (a_IconName == "friends.png") || (a_IconName == "guest_house.png") || (a_IconName == "home.png") || (a_IconName == "toilets.png")  || (a_IconName == "hotel.png")){
    Icon["height"] = "32";
    Icon["width"] = "32";
    Icon["offset_height"] = "-16";
    Icon["offset_width"] = "-16";
  }
  else if ((a_IconName == "hostel.png") || (a_IconName == "restaurant.png")){
    Icon["height"] = "24";
    Icon["width"] = "24";
    Icon["offset_height"] = "-12";
    Icon["offset_width"] = "-12";
  }
  else if (a_IconName == "marker_blue.png"){
    Icon["height"] = "24";
    Icon["width"] = "24";
    Icon["offset_height"] = "-24";
    Icon["offset_width"] = "0";
  }
  else if (a_IconName == "airport.png"){
    Icon["height"] = "32";
    Icon["width"] = "31";
    Icon["offset_height"] = "-16";
    Icon["offset_width"] = "-16";
  }
  else if (a_IconName == "bus.png"){
    Icon["height"] = "32";
    Icon["width"] = "26";
    Icon["offset_height"] = "-16";
    Icon["offset_width"] = "-13";
  }
  else if (a_IconName == "geocache.png"){
    Icon["height"] = "25";
    Icon["width"] = "25";
    Icon["offset_height"] = "-12";
    Icon["offset_width"] = "-12";
  }
  else if (a_IconName == "motorbike.png"){
    Icon["height"] = "23";
    Icon["width"] = "32";
    Icon["offset_height"] = "-12";
    Icon["offset_width"] = "-16";
  }
  else if (a_IconName == "services.png"){
    Icon["height"] = "28";
    Icon["width"] = "32";
    Icon["offset_height"] = "-14";
    Icon["offset_width"] = "-16";
  }
  else if (a_IconName == "styria_linux.png"){
    Icon["height"] = "50";
    Icon["width"] = "36";
    Icon["offset_height"] = "-25";
    Icon["offset_width"] = "-18";
  }
  else if (a_IconName == "marker_posts.png"){
    Icon["height"] = "2";
    Icon["width"] = "2";
    Icon["offset_height"] = "-1";
    Icon["offset_width"] = "-1";
  }
  else {
    Icon["height"] = "32";
    Icon["width"] = "32";
    Icon["offset_height"] = "-16";
    Icon["offset_width"] = "-16";
  }
  return Icon;
}

// Clickhandler / Shorcode generator

function osm_getRadioValue(a_Form){
  if (a_Form == "Markerform"){
    for (var i=0; i < document.Markerform.Art.length; i++){
      if (document.Markerform.Art[i].checked){
        var rad_val = document.Markerform.Art[i].value;
        return rad_val;
      }
    }
    return "undefined";
  }
  else if (a_Form == "GPXcolourform"){
    for (var i=0; i < document.GPXcolourform.Gpx_colour.length; i++){
      if (document.GPXcolourform.Gpx_colour[i].checked){
        var rad_val = document.GPXcolourform.Gpx_colour[i].value;
        return rad_val;
      }
    }
    return "undefined";
  }
  else if (a_Form == "Bordercolourform"){
    for (var i=0; i < document.Bordercolourform.Border_colour.length; i++){
      if (document.Bordercolourform.Border_colour[i].checked){
        var rad_val = document.Bordercolourform.Border_colour[i].value;
        return rad_val;
      }
    }
    return "undefined";
  }
  else if (a_Form == "Naviform"){
    for (var i=0; i < document.Naviform.Navi_Link.length; i++){
      if (document.Naviform.Navi_Link[i].checked){
        var rad_val = document.Naviform.Navi_Link[i].value;
        return rad_val;
      }
    }
    return "undefined";
  }
  else if (a_Form == "ControlStyleform"){
    for (var i=0; i < document.ControlStyleform.Cntrl_style.length; i++){
      if (document.ControlStyleform.Cntrl_style[i].checked){
        var rad_val = document.ControlStyleform.Cntrl_style[i].value;
        return rad_val;
      }
    }
    return "undefined";
  }
  return "not implemented";
}

function osm_saveGeotag() {
  if ((osm_ajax_object.lat == '') || (osm_ajax_object.lon == '')) {
    alert('Place geotag in the map before save');
  } else {
    var data = {
      action: 'act_saveGeotag',
      lat: osm_ajax_object.lat,
      lon: osm_ajax_object.lon,
      icon: osm_ajax_object.icon,
      post_id: osm_ajax_object.post_id,
      geotag_nonce: osm_ajax_object.geotag_nonce
    };

    jQuery.post(osm_ajax_object.ajax_url, data, function(response) {
      var div = document.getElementById("Geotag_Div");

      if (response.success) {
        div.innerHTML = '<span style="color:green;">' + response.data + '</span>';
      } else {
        div.innerHTML = '<span style="color:red;">Error: ' + response.data + '</span>';
      }
    });
  }
}


function osm_savePostMarker() {
  if ((osm_ajax_object.MarkerLat === '') || (osm_ajax_object.MarkerLon === '')) {
    alert('Place marker in the map before save');
    return;
  }

  var data = {
    action: 'act_saveMarker',
    MarkerId: osm_ajax_object.MarkerId,
    MarkerLat: osm_ajax_object.MarkerLat,
    MarkerLon: osm_ajax_object.MarkerLon,
    MarkerIcon: osm_ajax_object.MarkerIcon,
    MarkerText: osm_ajax_object.MarkerText,
    MarkerName: osm_ajax_object.MarkerName,
    post_id: osm_ajax_object.post_id,
    marker_nonce: osm_ajax_object.marker_nonce,
  };

  jQuery.post(osm_ajax_object.ajax_url, data, function(response) {
    var div = document.getElementById("Marker_Div");

    if (!response || typeof response.success === 'undefined') {
      div.innerHTML = '<span style="color:red;">Unexpected server response.</span>';
      return;
    }

    if (response.success) {
      div.innerHTML = '<span style="color:green;">' + response.data + '</span>';
    } else {
      div.innerHTML = '<span style="color:red;">Error: ' + response.data + '</span>';
    }
  }, 'json'); // <-- explizit als JSON erwarten
}



function getTileURL(bounds) {
  var res = this.map.getResolution();
  var x = Math.round((bounds.left - this.maxExtent.left) / (res * this.tileSize.w));
  var y = Math.round((this.maxExtent.top - bounds.top) / (res * this.tileSize.h));
  var z = this.map.getZoom();
  var limit = Math.pow(2, z);
  if (y < 0 || y >= limit) {
    return null;
  } 
  else {
    x = ((x % limit) + limit) % limit;
    url = this.url;
    path= z + "/" + x + "/" + y + "." + this.type;
    if (url instanceof Array) {
      url = this.selectUrl(path, url);
    }
    return url+path;
  }
}

// http://trac.openlayers.org/changeset/9023
function osm_getTileURL(bounds) {
    var res = this.map.getResolution();
    var x = Math.round((bounds.left - this.maxExtent.left) / (res * this.tileSize.w));
    var y = Math.round((this.maxExtent.top - bounds.top) / (res * this.tileSize.h));
    var z = this.map.getZoom();
    var limit = Math.pow(2, z);

    if (y < 0 || y >= limit) {
        return OpenLayers.Util.getImagesLocation() + "404.png";
    } else {
        x = ((x % limit) + limit) % limit;
        return this.url + z + "/" + x + "/" + y + "." + this.type;
    }
}


function AddMarker(a_tileLayer, a_marker_distance)
{
    var ll;
    var feature;
    var marker;

    var popup_maxwidth = 999;
    var popup_maxheight = 250;

    // Combine marker with a distance lower then 12 pixels
    var PopUpArray = CombineNearMarker(a_marker_distance, a_tileLayer);

    // Create marker
    for (var i = 0; i < PopUpArray.length; i++)
    {
        // Convert coordinates
        ll = new OpenLayers.LonLat(PopUpArray[i].Lon, PopUpArray[i].Lat).transform(a_tileLayer.displayProjection, a_tileLayer.projection);

        // Create pop-up
        feature = new OpenLayers.Feature(markers, ll, data);
        feature.closeBox = true;
        feature.popupClass = OpenLayers.Class(OpenLayers.Popup.FramedCloud,
        {
            "autoSize": true,
            /*
             * For "panMapIfOutOfView" and "keepInMap" see:
             * http://permalink.gmane.org/gmane.comp.gis.openlayers.user/25702
             */ 
            "panMapIfOutOfView": false,
            "keepInMap": false,
            "contentDisplayClass": "olPopupContent",
            maxSize: new OpenLayers.Size(popup_maxwidth, popup_maxheight)
        });
        //feature.data.overflow = "hidden";

        // Create pop-up text
        var TextArray = PopUpArray[i].Text;
        var Text = 0;
        for (var j = 0; j < TextArray.length; j++)
        {
        	if(j == 0)
        	    Text = TextArray[j];
        	else
        		Text += "<br>" + TextArray[j];
        }

        feature.data.popupContentHTML = Text;

        a_tileLayer.addPopup(feature.createPopup(feature.closeBox));
        feature.popup.toggle();

        // Create marker
        if (PopUpArray[i].Count > 1) // If we have a combined marker than take an onther icon
        {
            marker = new OpenLayers.Marker(ll, data2.icon.clone());
        }
        else
        {
            marker = new OpenLayers.Marker(ll, data.icon.clone());
        }

        marker.feature = feature;
        marker.events.register("mousedown", feature, markerClick);
        markers.addMarker(marker);
    }
}

function CombineNearMarker(PixelDiff, a_tileLayer)
{
    var px1 = a_tileLayer.getLonLatFromPixel(new OpenLayers.Pixel(0, 0));
    var px2 = a_tileLayer.getLonLatFromPixel(new OpenLayers.Pixel(PixelDiff, 0));
    var PixelLonLatDiff = Math.abs(px1.lon - px2.lon);

    var PopUpArray = new Array();
    var isNowPopUp = 0;

    // Read all markers
    for (var i = 0; i < MarkerArray.length; i++)
    {
        isNowPopUp = 0;

        // Get the position of marker1 coordinates in pixel
        var ll = new OpenLayers.LonLat(MarkerArray[i].Lon, MarkerArray[i].Lat).transform(a_tileLayer.displayProjection, a_tileLayer.projection);
        var pixel = a_tileLayer.getPixelFromLonLat(ll);
        var LonTemp1 = ll.lon;
        var LatTemp1 = ll.lat;

        // Use only the visible markers
        if (pixel.x >= 0 && pixel.x <= a_tileLayer.size.w && pixel.y >= 0 && pixel.y <= a_tileLayer.size.h)
        {
            // Check if marker near to this marker exist
            for (var j = 0; j < PopUpArray.length; j++)
            {
                // Get the position of marker2 coordinates in pixel
                var ll = new OpenLayers.LonLat(PopUpArray[j].Lon, PopUpArray[j].Lat).transform(a_tileLayer.displayProjection, a_tileLayer.projection);
                var LonTemp2 = ll.lon;
                var LatTemp2 = ll.lat;

                // Calculate difference of these two marker in pixel
                var LonDiff = Math.abs(LonTemp1 - LonTemp2);
                var LatDiff = Math.abs(LatTemp1 - LatTemp2);

                // Check the distance
                if (LonDiff <= PixelLonLatDiff && LatDiff <= PixelLonLatDiff)
                {
                    var Count = PopUpArray[j].Count;
                    // Add this link to the existing marker
                    PopUpArray[j].Text[Count] = MarkerArray[i].Text;
                    // Calculate the mean position of these combined markers
                    PopUpArray[j].Lat = (PopUpArray[j].Lat + MarkerArray[i].Lat) / 2;
                    PopUpArray[j].Lon = (PopUpArray[j].Lon + MarkerArray[i].Lon) / 2;
                    Count++;
                    PopUpArray[j].Count = Count;
                    isNowPopUp = 1;
                }
            }

            // Add a new marker to the list
            if (isNowPopUp == 0)
            {
                PopUpArray.push(
                {
                    Text: new Array(MarkerArray[i].Text),
                    Lon: MarkerArray[i].Lon,
                    Lat: MarkerArray[i].Lat,
                    Count: 1
                });
            }
        }
    }

    return PopUpArray;
}

document.addEventListener('DOMContentLoaded', function () {
  // EventListener für Marker speichern und Shortcode generieren
  const markerBtn = document.getElementById('osm-save-marker-btn');
  if (markerBtn) {
    markerBtn.addEventListener('click', function () {
      osm_savePostMarker();
      osm_generateAddMarkerSC();
    });
  }

  // EventListener für Geotag speichern
  const geotagBtn = document.getElementById('osm-save-geotag-btn');
  if (geotagBtn) {
    geotagBtn.addEventListener('click', function () {
      osm_saveGeotag();
    });
  }
  
  // EventListener für generate File ShortCode
  const FileSCBtn = document.getElementById('osm-gen-file-sc-btn');
  if (FileSCBtn) {
    FileSCBtn.addEventListener('click', function () {
      osm_generateFileSC();
    });
  }
  
  // EventListener für generate tagged post ShortCode
  const GenTPSCBtn = document.getElementById('osm-gen-tagged-post-sc-btn');
  if (GenTPSCBtn) {
    GenTPSCBtn.addEventListener('click', function () {
      osm_generateTaggedPostsSC();
    });
  }
  
  const clusterRadio = document.getElementById('tagged_marker_cluster');
  if (clusterRadio) {
    clusterRadio.addEventListener('change', function () {
      if (this.checked) {
        osm_showTaggedSCmap();
      }
    });
  }
  
  
  const radios = document.querySelectorAll('input[name="tagged_marker_style"]');
  radios.forEach(function (radio) {
    radio.addEventListener('change', function () {
      console.log("Marker Style gewählt:", this.value);
      osm_showTaggedSCmap(); 
    });
  });
  
  const selectionBox = document.getElementById('show_selection_box');
  if (selectionBox) {
    selectionBox.addEventListener('change', function () {
      osm_showFileSCmap();
    });
  }
  
});
// source --> https://ermafa-passage.de/wp-content/plugins/osm/js/polyfill/v2/polyfill.min.js?features=requestAnimationFrame%2CElement.prototype.classList%2CURL&amp;ver=6.9.4 
/*
The MIT License (MIT)

Copyright (c) 2019 Financial Times

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

 Disable minification (remove `.min` from URL path) for more info 
*/

(function(undefined) {}).call('object' === typeof window && window || 'object' === typeof self && self || 'object' === typeof global && global || {});
// source --> https://ermafa-passage.de/wp-content/plugins/osm/js/OL/10.4.0/ol.js?ver=6.9.4 
var ol=function(){"use strict";var t="add",e="remove",i="propertychange",n="change",r="error",s="contextmenu",o="click",a="dblclick",l="dragenter",h="dragover",c="drop",u="keydown",d="keypress",g="load",f="touchmove",p="wheel";class m{constructor(){this.disposed=!1}dispose(){this.disposed||(this.disposed=!0,this.disposeInternal())}disposeInternal(){}}function _(t,e,i){let n,r;i=i||y;let s=0,o=t.length,a=!1;for(;s<o;)n=s+(o-s>>1),r=+i(t[n],e),r<0?s=n+1:(o=n,a=!r);return a?s:~s}function y(t,e){return t>e?1:t<e?-1:0}function x(t,e){return t<e?1:t>e?-1:0}function v(t,e,i){if(t[0]<=e)return 0;const n=t.length;if(e<=t[n-1])return n-1;if("function"==typeof i){for(let r=1;r<n;++r){const n=t[r];if(n===e)return r;if(n<e)return i(e,t[r-1],n)>0?r-1:r}return n-1}if(i>0){for(let i=1;i<n;++i)if(t[i]<e)return i-1;return n-1}if(i<0){for(let i=1;i<n;++i)if(t[i]<=e)return i;return n-1}for(let i=1;i<n;++i){if(t[i]==e)return i;if(t[i]<e)return t[i-1]-e<e-t[i]?i-1:i}return n-1}function E(t,e,i){for(;e<i;){const n=t[e];t[e]=t[i],t[i]=n,++e,--i}}function S(t,e){const i=Array.isArray(e)?e:[e],n=i.length;for(let e=0;e<n;e++)t[t.length]=i[e]}function w(t,e){const i=t.length;if(i!==e.length)return!1;for(let n=0;n<i;n++)if(t[n]!==e[n])return!1;return!0}function T(t,e,i){const n=e||y;return t.every((function(e,r){if(0===r)return!0;const s=n(t[r-1],e);return!(s>0||i&&0===s)}))}function C(){return!0}function R(){return!1}function b(){}function P(t){let e,i,n;return function(){const r=Array.prototype.slice.call(arguments);return i&&this===n&&w(r,i)||(n=this,i=r,e=t.apply(this,arguments)),e}}function I(t){return function(){let e;try{e=t()}catch(t){return Promise.reject(t)}return e instanceof Promise?e:Promise.resolve(e)}()}function L(t){for(const e in t)delete t[e]}function F(t){let e;for(e in t)return!1;return!e}class M{constructor(t){this.propagationStopped,this.defaultPrevented,this.type=t,this.target=null}preventDefault(){this.defaultPrevented=!0}stopPropagation(){this.propagationStopped=!0}}function A(t){t.stopPropagation()}class O extends m{constructor(t){super(),this.eventTarget_=t,this.pendingRemovals_=null,this.dispatching_=null,this.listeners_=null}addEventListener(t,e){if(!t||!e)return;const i=this.listeners_||(this.listeners_={}),n=i[t]||(i[t]=[]);n.includes(e)||n.push(e)}dispatchEvent(t){const e="string"==typeof t,i=e?t:t.type,n=this.listeners_&&this.listeners_[i];if(!n)return;const r=e?new M(t):t;r.target||(r.target=this.eventTarget_||this);const s=this.dispatching_||(this.dispatching_={}),o=this.pendingRemovals_||(this.pendingRemovals_={});let a;i in s||(s[i]=0,o[i]=0),++s[i];for(let t=0,e=n.length;t<e;++t)if(a="handleEvent"in n[t]?n[t].handleEvent(r):n[t].call(this,r),!1===a||r.propagationStopped){a=!1;break}if(0==--s[i]){let t=o[i];for(delete o[i];t--;)this.removeEventListener(i,b);delete s[i]}return a}disposeInternal(){this.listeners_&&L(this.listeners_)}getListeners(t){return this.listeners_&&this.listeners_[t]||void 0}hasListener(t){return!!this.listeners_&&(t?t in this.listeners_:Object.keys(this.listeners_).length>0)}removeEventListener(t,e){if(!this.listeners_)return;const i=this.listeners_[t];if(!i)return;const n=i.indexOf(e);-1!==n&&(this.pendingRemovals_&&t in this.pendingRemovals_?(i[n]=b,++this.pendingRemovals_[t]):(i.splice(n,1),0===i.length&&delete this.listeners_[t]))}}function D(t,e,i,n,r){if(r){const r=i;i=function(s){return t.removeEventListener(e,i),r.call(n??this,s)}}else n&&n!==t&&(i=i.bind(n));const s={target:t,type:e,listener:i};return t.addEventListener(e,i),s}function N(t,e,i,n){return D(t,e,i,n,!0)}function k(t){t&&t.target&&(t.target.removeEventListener(t.type,t.listener),L(t))}class G extends O{constructor(){super(),this.on=this.onInternal,this.once=this.onceInternal,this.un=this.unInternal,this.revision_=0}changed(){++this.revision_,this.dispatchEvent(n)}getRevision(){return this.revision_}onInternal(t,e){if(Array.isArray(t)){const i=t.length,n=new Array(i);for(let r=0;r<i;++r)n[r]=D(this,t[r],e);return n}return D(this,t,e)}onceInternal(t,e){let i;if(Array.isArray(t)){const n=t.length;i=new Array(n);for(let r=0;r<n;++r)i[r]=N(this,t[r],e)}else i=N(this,t,e);return e.ol_key=i,i}unInternal(t,e){const i=e.ol_key;if(i)j(i);else if(Array.isArray(t))for(let i=0,n=t.length;i<n;++i)this.removeEventListener(t[i],e);else this.removeEventListener(t,e)}}function j(t){if(Array.isArray(t))for(let e=0,i=t.length;e<i;++e)k(t[e]);else k(t)}function U(){throw new Error("Unimplemented abstract method.")}G.prototype.on,G.prototype.once,G.prototype.un;let B=0;function z(t){return t.ol_uid||(t.ol_uid=String(++B))}class X extends M{constructor(t,e,i){super(t),this.key=e,this.oldValue=i}}class V extends G{constructor(t){super(),this.on,this.once,this.un,z(this),this.values_=null,void 0!==t&&this.setProperties(t)}get(t){let e;return this.values_&&this.values_.hasOwnProperty(t)&&(e=this.values_[t]),e}getKeys(){return this.values_&&Object.keys(this.values_)||[]}getProperties(){return this.values_&&Object.assign({},this.values_)||{}}getPropertiesInternal(){return this.values_}hasProperties(){return!!this.values_}notify(t,e){let n;n=`change:${t}`,this.hasListener(n)&&this.dispatchEvent(new X(n,t,e)),n=i,this.hasListener(n)&&this.dispatchEvent(new X(n,t,e))}addChangeListener(t,e){this.addEventListener(`change:${t}`,e)}removeChangeListener(t,e){this.removeEventListener(`change:${t}`,e)}set(t,e,i){const n=this.values_||(this.values_={});if(i)n[t]=e;else{const i=n[t];n[t]=e,i!==e&&this.notify(t,i)}}setProperties(t,e){for(const i in t)this.set(i,t[i],e)}applyProperties(t){t.values_&&Object.assign(this.values_||(this.values_={}),t.values_)}unset(t,e){if(this.values_&&t in this.values_){const i=this.values_[t];delete this.values_[t],F(this.values_)&&(this.values_=null),e||this.notify(t,i)}}}const $="length";class W extends M{constructor(t,e,i){super(t),this.element=e,this.index=i}}class Z extends V{constructor(t,e){if(super(),this.on,this.once,this.un,e=e||{},this.unique_=!!e.unique,this.array_=t||[],this.unique_)for(let t=0,e=this.array_.length;t<e;++t)this.assertUnique_(this.array_[t],t);this.updateLength_()}clear(){for(;this.getLength()>0;)this.pop()}extend(t){for(let e=0,i=t.length;e<i;++e)this.push(t[e]);return this}forEach(t){const e=this.array_;for(let i=0,n=e.length;i<n;++i)t(e[i],i,e)}getArray(){return this.array_}item(t){return this.array_[t]}getLength(){return this.get($)}insertAt(e,i){if(e<0||e>this.getLength())throw new Error("Index out of bounds: "+e);this.unique_&&this.assertUnique_(i),this.array_.splice(e,0,i),this.updateLength_(),this.dispatchEvent(new W(t,i,e))}pop(){return this.removeAt(this.getLength()-1)}push(t){this.unique_&&this.assertUnique_(t);const e=this.getLength();return this.insertAt(e,t),this.getLength()}remove(t){const e=this.array_;for(let i=0,n=e.length;i<n;++i)if(e[i]===t)return this.removeAt(i)}removeAt(t){if(t<0||t>=this.getLength())return;const i=this.array_[t];return this.array_.splice(t,1),this.updateLength_(),this.dispatchEvent(new W(e,i,t)),i}setAt(i,n){if(i>=this.getLength())return void this.insertAt(i,n);if(i<0)throw new Error("Index out of bounds: "+i);this.unique_&&this.assertUnique_(n,i);const r=this.array_[i];this.array_[i]=n,this.dispatchEvent(new W(e,r,i)),this.dispatchEvent(new W(t,n,i))}updateLength_(){this.set($,this.array_.length)}assertUnique_(t,e){for(let i=0,n=this.array_.length;i<n;++i)if(this.array_[i]===t&&i!==e)throw new Error("Duplicate item added to a unique collection")}}var Y=0,H=1,K=2,q=3,J=4;function Q(t){return Math.pow(t,3)}function tt(t){return 1-Q(1-t)}function et(t){return 3*t*t-2*t*t*t}function it(t){return t}class nt extends O{constructor(t,e,i){super(),i=i||{},this.tileCoord=t,this.state=e,this.key="",this.transition_=void 0===i.transition?250:i.transition,this.transitionStarts_={},this.interpolate=!!i.interpolate}changed(){this.dispatchEvent(n)}release(){this.setState(J)}getKey(){return this.key+"/"+this.tileCoord}getTileCoord(){return this.tileCoord}getState(){return this.state}setState(t){if(this.state!==J){if(this.state!==q&&this.state>t)throw new Error("Tile load sequence violation");this.state=t,this.changed()}}load(){U()}getAlpha(t,e){if(!this.transition_)return 1;let i=this.transitionStarts_[t];if(i){if(-1===i)return 1}else i=e,this.transitionStarts_[t]=i;const n=e-i+1e3/60;return n>=this.transition_?1:Q(n/this.transition_)}inTransition(t){return!!this.transition_&&-1!==this.transitionStarts_[t]}endTransition(t){this.transition_&&(this.transitionStarts_[t]=-1)}disposeInternal(){this.release(),super.disposeInternal()}}const rt="undefined"!=typeof navigator&&void 0!==navigator.userAgent?navigator.userAgent.toLowerCase():"",st=rt.includes("firefox"),ot=rt.includes("safari")&&!rt.includes("chrom"),at=ot&&(rt.includes("version/15.4")||/cpu (os|iphone os) 15_4 like mac os x/.test(rt)),lt=rt.includes("webkit")&&!rt.includes("edge"),ht=rt.includes("macintosh"),ct="undefined"!=typeof devicePixelRatio?devicePixelRatio:1,ut="undefined"!=typeof WorkerGlobalScope&&"undefined"!=typeof OffscreenCanvas&&self instanceof WorkerGlobalScope,dt="undefined"!=typeof Image&&Image.prototype.decode,gt="function"==typeof createImageBitmap,ft=function(){let t=!1;try{const e=Object.defineProperty({},"passive",{get:function(){t=!0}});window.addEventListener("_",null,e),window.removeEventListener("_",null,e)}catch{}return t}();function pt(t,e,i,n){let r;return r=i&&i.length?i.shift():ut?new OffscreenCanvas(t||300,e||300):document.createElement("canvas"),t&&(r.width=t),e&&(r.height=e),r.getContext("2d",n)}let mt;function _t(){return mt||(mt=pt(1,1)),mt}function yt(t){const e=t.canvas;e.width=1,e.height=1,t.clearRect(0,0,1,1)}function xt(t){let e=t.offsetWidth;const i=getComputedStyle(t);return e+=parseInt(i.marginLeft,10)+parseInt(i.marginRight,10),e}function vt(t){let e=t.offsetHeight;const i=getComputedStyle(t);return e+=parseInt(i.marginTop,10)+parseInt(i.marginBottom,10),e}function Et(t,e){const i=e.parentNode;i&&i.replaceChild(t,e)}function St(t){for(;t.lastChild;)t.lastChild.remove()}function wt(t,e){const i=t.childNodes;for(let n=0;;++n){const r=i[n],s=e[n];if(!r&&!s)break;r!==s&&(r?s?t.insertBefore(s,r):(t.removeChild(r),--n):t.appendChild(s))}}function Tt(t){return t instanceof Image||t instanceof HTMLCanvasElement||t instanceof HTMLVideoElement||t instanceof ImageBitmap?t:null}function Ct(t){return t instanceof Uint8Array||t instanceof Uint8ClampedArray||t instanceof Float32Array||t instanceof DataView?t:null}const Rt=new Error("disposed");let bt=null;function Pt(t){bt||(bt=pt(t.width,t.height,void 0,{willReadFrequently:!0}));const e=bt.canvas,i=t.width;e.width!==i&&(e.width=i);const n=t.height;return e.height!==n&&(e.height=n),bt.clearRect(0,0,i,n),bt.drawImage(t,0,0),bt.getImageData(0,0,i,n).data}const It=[256,256];class Lt extends nt{constructor(t){const e=Y;super(t.tileCoord,e,{transition:t.transition,interpolate:t.interpolate}),this.loader_=t.loader,this.data_=null,this.error_=null,this.size_=t.size||null,this.controller_=t.controller||null}getSize(){if(this.size_)return this.size_;const t=Tt(this.data_);return t?[t.width,t.height]:It}getData(){return this.data_}getError(){return this.error_}load(){if(this.state!==Y&&this.state!==q)return;this.state=H,this.changed();const t=this;this.loader_().then((function(e){t.data_=e,t.state=K,t.changed()})).catch((function(e){t.error_=e,t.state=q,t.changed()}))}disposeInternal(){this.controller_&&(this.controller_.abort(Rt),this.controller_=null),super.disposeInternal()}}function Ft(t,e){if(!t)throw new Error(e)}class Mt extends V{constructor(t){if(super(),this.on,this.once,this.un,this.id_=void 0,this.geometryName_="geometry",this.style_=null,this.styleFunction_=void 0,this.geometryChangeKey_=null,this.addChangeListener(this.geometryName_,this.handleGeometryChanged_),t)if("function"==typeof t.getSimplifiedGeometry){const e=t;this.setGeometry(e)}else{const e=t;this.setProperties(e)}}clone(){const t=new Mt(this.hasProperties()?this.getProperties():null);t.setGeometryName(this.getGeometryName());const e=this.getGeometry();e&&t.setGeometry(e.clone());const i=this.getStyle();return i&&t.setStyle(i),t}getGeometry(){return this.get(this.geometryName_)}getId(){return this.id_}getGeometryName(){return this.geometryName_}getStyle(){return this.style_}getStyleFunction(){return this.styleFunction_}handleGeometryChange_(){this.changed()}handleGeometryChanged_(){this.geometryChangeKey_&&(k(this.geometryChangeKey_),this.geometryChangeKey_=null);const t=this.getGeometry();t&&(this.geometryChangeKey_=D(t,n,this.handleGeometryChange_,this)),this.changed()}setGeometry(t){this.set(this.geometryName_,t)}setStyle(t){this.style_=t,this.styleFunction_=t?At(t):void 0,this.changed()}setId(t){this.id_=t,this.changed()}setGeometryName(t){this.removeChangeListener(this.geometryName_,this.handleGeometryChanged_),this.geometryName_=t,this.addChangeListener(this.geometryName_,this.handleGeometryChanged_),this.handleGeometryChanged_()}}function At(t){if("function"==typeof t)return t;let e;if(Array.isArray(t))e=t;else{Ft("function"==typeof t.getZIndex,"Expected an `ol/style/Style` or an array of `ol/style/Style.js`");e=[t]}return function(){return e}}var Ot={UNKNOWN:0,INTERSECTING:1,ABOVE:2,RIGHT:4,BELOW:8,LEFT:16};function Dt(t){const e=Xt();for(let i=0,n=t.length;i<n;++i)qt(e,t[i]);return e}function Nt(t,e,i){return i?(i[0]=t[0]-e,i[1]=t[1]-e,i[2]=t[2]+e,i[3]=t[3]+e,i):[t[0]-e,t[1]-e,t[2]+e,t[3]+e]}function kt(t,e){return e?(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e):t.slice()}function Gt(t,e,i){let n,r;return n=e<t[0]?t[0]-e:t[2]<e?e-t[2]:0,r=i<t[1]?t[1]-i:t[3]<i?i-t[3]:0,n*n+r*r}function jt(t,e){return Bt(t,e[0],e[1])}function Ut(t,e){return t[0]<=e[0]&&e[2]<=t[2]&&t[1]<=e[1]&&e[3]<=t[3]}function Bt(t,e,i){return t[0]<=e&&e<=t[2]&&t[1]<=i&&i<=t[3]}function zt(t,e){const i=t[0],n=t[1],r=t[2],s=t[3],o=e[0],a=e[1];let l=Ot.UNKNOWN;return o<i?l|=Ot.LEFT:o>r&&(l|=Ot.RIGHT),a<n?l|=Ot.BELOW:a>s&&(l|=Ot.ABOVE),l===Ot.UNKNOWN&&(l=Ot.INTERSECTING),l}function Xt(){return[1/0,1/0,-1/0,-1/0]}function Vt(t,e,i,n,r){return r?(r[0]=t,r[1]=e,r[2]=i,r[3]=n,r):[t,e,i,n]}function $t(t){return Vt(1/0,1/0,-1/0,-1/0,t)}function Wt(t,e){const i=t[0],n=t[1];return Vt(i,n,i,n,e)}function Zt(t,e,i,n,r){return Qt($t(r),t,e,i,n)}function Yt(t,e){return t[0]==e[0]&&t[2]==e[2]&&t[1]==e[1]&&t[3]==e[3]}function Ht(t,e,i){return Math.abs(t[0]-e[0])<i&&Math.abs(t[2]-e[2])<i&&Math.abs(t[1]-e[1])<i&&Math.abs(t[3]-e[3])<i}function Kt(t,e){return e[0]<t[0]&&(t[0]=e[0]),e[2]>t[2]&&(t[2]=e[2]),e[1]<t[1]&&(t[1]=e[1]),e[3]>t[3]&&(t[3]=e[3]),t}function qt(t,e){e[0]<t[0]&&(t[0]=e[0]),e[0]>t[2]&&(t[2]=e[0]),e[1]<t[1]&&(t[1]=e[1]),e[1]>t[3]&&(t[3]=e[1])}function Jt(t,e){for(let i=0,n=e.length;i<n;++i)qt(t,e[i]);return t}function Qt(t,e,i,n,r){for(;i<n;i+=r)ee(t,e[i],e[i+1]);return t}function te(t,e){for(let i=0,n=e.length;i<n;++i)Jt(t,e[i]);return t}function ee(t,e,i){t[0]=Math.min(t[0],e),t[1]=Math.min(t[1],i),t[2]=Math.max(t[2],e),t[3]=Math.max(t[3],i)}function ie(t,e){let i;return i=e(re(t)),i||(i=e(se(t)),i||(i=e(ge(t)),i||(i=e(de(t)),i||!1)))}function ne(t){let e=0;return me(t)||(e=fe(t)*ce(t)),e}function re(t){return[t[0],t[1]]}function se(t){return[t[2],t[1]]}function oe(t){return[(t[0]+t[2])/2,(t[1]+t[3])/2]}function ae(t,e){let i;if("bottom-left"===e)i=re(t);else if("bottom-right"===e)i=se(t);else if("top-left"===e)i=de(t);else{if("top-right"!==e)throw new Error("Invalid corner");i=ge(t)}return i}function le(t,e,i,n,r){const[s,o,a,l,h,c,u,d]=he(t,e,i,n);return Vt(Math.min(s,a,h,u),Math.min(o,l,c,d),Math.max(s,a,h,u),Math.max(o,l,c,d),r)}function he(t,e,i,n){const r=e*n[0]/2,s=e*n[1]/2,o=Math.cos(i),a=Math.sin(i),l=r*o,h=r*a,c=s*o,u=s*a,d=t[0],g=t[1];return[d-l+u,g-h-c,d-l-u,g-h+c,d+l-u,g+h+c,d+l+u,g+h-c,d-l+u,g-h-c]}function ce(t){return t[3]-t[1]}function ue(t,e,i){const n=i||[1/0,1/0,-1/0,-1/0];return pe(t,e)?(t[0]>e[0]?n[0]=t[0]:n[0]=e[0],t[1]>e[1]?n[1]=t[1]:n[1]=e[1],t[2]<e[2]?n[2]=t[2]:n[2]=e[2],t[3]<e[3]?n[3]=t[3]:n[3]=e[3]):$t(n),n}function de(t){return[t[0],t[3]]}function ge(t){return[t[2],t[3]]}function fe(t){return t[2]-t[0]}function pe(t,e){return t[0]<=e[2]&&t[2]>=e[0]&&t[1]<=e[3]&&t[3]>=e[1]}function me(t){return t[2]<t[0]||t[3]<t[1]}function _e(t,e){return e?(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e):t}function ye(t,e){const i=(t[2]-t[0])/2*(e-1),n=(t[3]-t[1])/2*(e-1);t[0]-=i,t[2]+=i,t[1]-=n,t[3]+=n}function xe(t,e,i){let n=!1;const r=zt(t,e),s=zt(t,i);if(r===Ot.INTERSECTING||s===Ot.INTERSECTING)n=!0;else{const o=t[0],a=t[1],l=t[2],h=t[3],c=e[0],u=e[1],d=i[0],g=i[1],f=(g-u)/(d-c);let p,m;s&Ot.ABOVE&&!(r&Ot.ABOVE)&&(p=d-(g-h)/f,n=p>=o&&p<=l),n||!(s&Ot.RIGHT)||r&Ot.RIGHT||(m=g-(d-l)*f,n=m>=a&&m<=h),n||!(s&Ot.BELOW)||r&Ot.BELOW||(p=d-(g-a)/f,n=p>=o&&p<=l),n||!(s&Ot.LEFT)||r&Ot.LEFT||(m=g-(d-o)*f,n=m>=a&&m<=h)}return n}function ve(t,e,i,n){if(me(t))return $t(i);let r=[];if(n>1){const e=t[2]-t[0],i=t[3]-t[1];for(let s=0;s<n;++s)r.push(t[0]+e*s/n,t[1],t[2],t[1]+i*s/n,t[2]-e*s/n,t[3],t[0],t[3]-i*s/n)}else r=[t[0],t[1],t[2],t[1],t[2],t[3],t[0],t[3]];e(r,r,2);const s=[],o=[];for(let t=0,e=r.length;t<e;t+=2)s.push(r[t]),o.push(r[t+1]);return function(t,e,i){return Vt(Math.min.apply(null,t),Math.min.apply(null,e),Math.max.apply(null,t),Math.max.apply(null,e),i)}(s,o,i)}function Ee(t,e){const i=e.getExtent(),n=oe(t);if(e.canWrapX()&&(n[0]<i[0]||n[0]>=i[2])){const e=fe(i),r=Math.floor((n[0]-i[0])/e)*e;t[0]-=r,t[2]-=r}return t}function Se(t,e,i){if(e.canWrapX()){const n=e.getExtent();if(!isFinite(t[0])||!isFinite(t[2]))return[[n[0],t[1],n[2],t[3]]];Ee(t,e);const r=fe(n);if(fe(t)>r&&!i)return[[n[0],t[1],n[2],t[3]]];if(t[0]<n[0])return[[t[0]+r,t[1],n[2],t[3]],[n[0],t[1],t[2],t[3]]];if(t[2]>n[2])return[[t[0],t[1],n[2],t[3]],[n[0],t[1],t[2]-r,t[3]]]}return[t]}function we(t,e,i){return Math.min(Math.max(t,e),i)}function Te(t,e,i,n,r,s){const o=r-i,a=s-n;if(0!==o||0!==a){const l=((t-i)*o+(e-n)*a)/(o*o+a*a);l>1?(i=r,n=s):l>0&&(i+=o*l,n+=a*l)}return Ce(t,e,i,n)}function Ce(t,e,i,n){const r=i-t,s=n-e;return r*r+s*s}function Re(t){const e=t.length;for(let i=0;i<e;i++){let n=i,r=Math.abs(t[i][i]);for(let s=i+1;s<e;s++){const e=Math.abs(t[s][i]);e>r&&(r=e,n=s)}if(0===r)return null;const s=t[n];t[n]=t[i],t[i]=s;for(let n=i+1;n<e;n++){const r=-t[n][i]/t[i][i];for(let s=i;s<e+1;s++)i==s?t[n][s]=0:t[n][s]+=r*t[i][s]}}const i=new Array(e);for(let n=e-1;n>=0;n--){i[n]=t[n][e]/t[n][n];for(let r=n-1;r>=0;r--)t[r][e]-=t[r][n]*i[n]}return i}function be(t){return 180*t/Math.PI}function Pe(t){return t*Math.PI/180}function Ie(t,e){const i=t%e;return i*e<0?i+e:i}function Le(t,e,i){return t+i*(e-t)}function Fe(t,e){const i=Math.pow(10,e);return Math.round(t*i)/i}function Me(t,e){return Math.round(Fe(t,e))}function Ae(t,e){return Math.floor(Fe(t,e))}function Oe(t,e){return Math.ceil(Fe(t,e))}function De(t,e,i){if(t>=e&&t<i)return t;const n=i-e;return((t-e)%n+n)%n+e}const Ne=6371008.8;function ke(t,e,i){i=i||Ne;const n=Pe(t[1]),r=Pe(e[1]),s=(r-n)/2,o=Pe(e[0]-t[0])/2,a=Math.sin(s)*Math.sin(s)+Math.sin(o)*Math.sin(o)*Math.cos(n)*Math.cos(r);return 2*i*Math.atan2(Math.sqrt(a),Math.sqrt(1-a))}function Ge(t,e){let i=0;for(let n=0,r=t.length;n<r-1;++n)i+=ke(t[n],t[n+1],e);return i}function je(t,e){let i=0;const n=t.length;let r=t[n-1][0],s=t[n-1][1];for(let e=0;e<n;e++){const n=t[e][0],o=t[e][1];i+=Pe(n-r)*(2+Math.sin(Pe(s))+Math.sin(Pe(o))),r=n,s=o}return i*e*e/2}function Ue(t,e,i,n){n=n||Ne;const r=Pe(t[1]),s=Pe(t[0]),o=e/n,a=Math.asin(Math.sin(r)*Math.cos(o)+Math.cos(r)*Math.sin(o)*Math.cos(i));return[be(s+Math.atan2(Math.sin(i)*Math.sin(o)*Math.cos(r),Math.cos(o)-Math.sin(r)*Math.sin(a))),be(a)]}const Be={info:1,warn:2,error:3,none:4};let ze=Be.info;function Xe(...t){ze>Be.warn||console.warn(...t)}function Ve(...t){ze>Be.error||console.error(...t)}function $e(t,e,i){const n=void 0!==i?t.toFixed(i):""+t;let r=n.indexOf(".");return r=-1===r?n.length:r,r>e?n:new Array(1+e-r).join("0")+n}function We(t,e){const i=(""+t).split("."),n=(""+e).split(".");for(let t=0;t<Math.max(i.length,n.length);t++){const e=parseInt(i[t]||"0",10),r=parseInt(n[t]||"0",10);if(e>r)return 1;if(r>e)return-1}return 0}function Ze(t,e){return t[0]+=+e[0],t[1]+=+e[1],t}function Ye(t,e){const i=e.getRadius(),n=e.getCenter(),r=n[0],s=n[1];let o=t[0]-r;const a=t[1]-s;0===o&&0===a&&(o=1);const l=Math.sqrt(o*o+a*a);return[r+i*o/l,s+i*a/l]}function He(t,e){const i=t[0],n=t[1],r=e[0],s=e[1],o=r[0],a=r[1],l=s[0],h=s[1],c=l-o,u=h-a,d=0===c&&0===u?0:(c*(i-o)+u*(n-a))/(c*c+u*u||0);let g,f;return d<=0?(g=o,f=a):d>=1?(g=l,f=h):(g=o+d*c,f=a+d*u),[g,f]}function Ke(t,e,i){const n=Ie(e+180,360)-180,r=Math.abs(3600*n),s=i||0;let o=Math.floor(r/3600),a=Math.floor((r-3600*o)/60),l=Fe(r-3600*o-60*a,s);l>=60&&(l=0,a+=1),a>=60&&(a=0,o+=1);let h=o+"°";return 0===a&&0===l||(h+=" "+$e(a,2)+"′"),0!==l&&(h+=" "+$e(l,2,s)+"″"),0!==n&&(h+=" "+t.charAt(n<0?1:0)),h}function qe(t,e,i){return t?e.replace("{x}",t[0].toFixed(i)).replace("{y}",t[1].toFixed(i)):""}function Je(t,e){let i=!0;for(let n=t.length-1;n>=0;--n)if(t[n]!=e[n]){i=!1;break}return i}function Qe(t,e){const i=Math.cos(e),n=Math.sin(e),r=t[0]*i-t[1]*n,s=t[1]*i+t[0]*n;return t[0]=r,t[1]=s,t}function ti(t,e){return t[0]*=e,t[1]*=e,t}function ei(t,e){const i=t[0]-e[0],n=t[1]-e[1];return i*i+n*n}function ii(t,e){return Math.sqrt(ei(t,e))}function ni(t,e){return ei(t,He(t,e))}function ri(t,e){return qe(t,"{x}, {y}",e)}function si(t,e){if(e.canWrapX()){const i=fe(e.getExtent()),n=oi(t,e,i);n&&(t[0]-=n*i)}return t}function oi(t,e,i){const n=e.getExtent();let r=0;return e.canWrapX()&&(t[0]<n[0]||t[0]>n[2])&&(i=i||fe(n),r=Math.floor((t[0]-n[0])/i)),r}const ai={9001:"m",9002:"ft",9003:"us-ft",9101:"radians",9102:"degrees"};function li(t){return ai[t]}const hi={radians:6370997/(2*Math.PI),degrees:2*Math.PI*6370997/360,ft:.3048,m:1,"us-ft":1200/3937};class ci{constructor(t){this.code_=t.code,this.units_=t.units,this.extent_=void 0!==t.extent?t.extent:null,this.worldExtent_=void 0!==t.worldExtent?t.worldExtent:null,this.axisOrientation_=void 0!==t.axisOrientation?t.axisOrientation:"enu",this.global_=void 0!==t.global&&t.global,this.canWrapX_=!(!this.global_||!this.extent_),this.getPointResolutionFunc_=t.getPointResolution,this.defaultTileGrid_=null,this.metersPerUnit_=t.metersPerUnit}canWrapX(){return this.canWrapX_}getCode(){return this.code_}getExtent(){return this.extent_}getUnits(){return this.units_}getMetersPerUnit(){return this.metersPerUnit_||hi[this.units_]}getWorldExtent(){return this.worldExtent_}getAxisOrientation(){return this.axisOrientation_}isGlobal(){return this.global_}setGlobal(t){this.global_=t,this.canWrapX_=!(!t||!this.extent_)}getDefaultTileGrid(){return this.defaultTileGrid_}setDefaultTileGrid(t){this.defaultTileGrid_=t}setExtent(t){this.extent_=t,this.canWrapX_=!(!this.global_||!t)}setWorldExtent(t){this.worldExtent_=t}setGetPointResolution(t){this.getPointResolutionFunc_=t}getPointResolutionFunc(){return this.getPointResolutionFunc_}}const ui=6378137,di=Math.PI*ui,gi=[-di,-di,di,di],fi=[-180,-85,180,85],pi=ui*Math.log(Math.tan(Math.PI/2));class mi extends ci{constructor(t){super({code:t,units:"m",extent:gi,global:!0,worldExtent:fi,getPointResolution:function(t,e){return t/Math.cosh(e[1]/ui)}})}}const _i=[new mi("EPSG:3857"),new mi("EPSG:102100"),new mi("EPSG:102113"),new mi("EPSG:900913"),new mi("http://www.opengis.net/def/crs/EPSG/0/3857"),new mi("http://www.opengis.net/gml/srs/epsg.xml#3857")];function yi(t,e,i,n){const r=t.length;i=i>1?i:2,n=n??i,void 0===e&&(e=i>2?t.slice():new Array(r));for(let i=0;i<r;i+=n){e[i]=di*t[i]/180;let n=ui*Math.log(Math.tan(Math.PI*(+t[i+1]+90)/360));n>pi?n=pi:n<-pi&&(n=-pi),e[i+1]=n}return e}function xi(t,e,i,n){const r=t.length;i=i>1?i:2,n=n??i,void 0===e&&(e=i>2?t.slice():new Array(r));for(let i=0;i<r;i+=n)e[i]=180*t[i]/di,e[i+1]=360*Math.atan(Math.exp(t[i+1]/ui))/Math.PI-90;return e}const vi=6378137,Ei=[-180,-90,180,90],Si=Math.PI*vi/180;class wi extends ci{constructor(t,e){super({code:t,units:"degrees",extent:Ei,axisOrientation:e,global:!0,metersPerUnit:Si,worldExtent:Ei})}}const Ti=[new wi("CRS:84"),new wi("EPSG:4326","neu"),new wi("urn:ogc:def:crs:OGC:1.3:CRS84"),new wi("urn:ogc:def:crs:OGC:2:84"),new wi("http://www.opengis.net/def/crs/OGC/1.3/CRS84"),new wi("http://www.opengis.net/gml/srs/epsg.xml#4326","neu"),new wi("http://www.opengis.net/def/crs/EPSG/0/4326","neu")];let Ci={};function Ri(){Ci={}}function bi(t){return Ci[t]||Ci[t.replace(/urn:(x-)?ogc:def:crs:EPSG:(.*:)?(\w+)$/,"EPSG:$3")]||null}function Pi(t,e){Ci[t]=e}let Ii={};function Li(){Ii={}}function Fi(t,e,i){const n=t.getCode(),r=e.getCode();n in Ii||(Ii[n]={}),Ii[n][r]=i}function Mi(t,e){return t in Ii&&e in Ii[t]?Ii[t][e]:null}const Ai=.9996,Oi=.00669438,Di=Oi*Oi,Ni=Di*Oi,ki=Oi/(1-Oi),Gi=Math.sqrt(1-Oi),ji=(1-Gi)/(1+Gi),Ui=ji*ji,Bi=Ui*ji,zi=Bi*ji,Xi=zi*ji,Vi=1-Oi/4-3*Di/64-5*Ni/256,$i=3*Oi/8+3*Di/32+45*Ni/1024,Wi=15*Di/256+45*Ni/1024,Zi=35*Ni/3072,Yi=1.5*ji-27/32*Bi+269/512*Xi,Hi=21/16*Ui-55/32*zi,Ki=151/96*Bi-417/128*Xi,qi=1097/512*zi,Ji=6378137;function Qi(t,e,i){const n=t-5e5,r=(i.north?e:e-1e7)/Ai/(Ji*Vi),s=r+Yi*Math.sin(2*r)+Hi*Math.sin(4*r)+Ki*Math.sin(6*r)+qi*Math.sin(8*r),o=Math.sin(s),a=o*o,l=Math.cos(s),h=o/l,c=h*h,u=c*c,d=1-Oi*a,g=Math.sqrt(1-Oi*a),f=ki*l**2,p=f*f,m=n/(Ji/g*Ai),_=m*m,y=_*m,x=y*m,v=x*m,E=s-h/((1-Oi)/d)*(_/2-x/24*(5+3*c+10*f-4*p-9*ki))+v*m/720*(61+90*c+298*f+45*u-252*ki-3*p);let S=(m-y/6*(1+2*c+f)+v/120*(5-2*f+28*c-3*p+8*ki+24*u))/l;return S=De(S+Pe(on(i.number)),-Math.PI,Math.PI),[be(S),be(E)]}const tn=-80,en=84,nn=-180,rn=180;function sn(t,e,i){t=De(t,nn,rn),e<tn?e=tn:e>en&&(e=en);const n=Pe(e),r=Math.sin(n),s=Math.cos(n),o=r/s,a=o*o,l=a*a,h=Pe(t),c=Pe(on(i.number)),u=Ji/Math.sqrt(1-Oi*r**2),d=ki*s**2,g=s*De(h-c,-Math.PI,Math.PI),f=g*g,p=f*g,m=p*g,_=m*g,y=_*g,x=Ji*(Vi*n-$i*Math.sin(2*n)+Wi*Math.sin(4*n)-Zi*Math.sin(6*n)),v=Ai*u*(g+p/6*(1-a+d)+_/120*(5-18*a+l+72*d-58*ki))+5e5;let E=Ai*(x+u*o*(f/2+m/24*(5-a+9*d+4*d**2)+y/720*(61-58*a+l+600*d-330*ki)));return i.north||(E+=1e7),[v,E]}function on(t){return 6*(t-1)-180+3}const an=[/^EPSG:(\d+)$/,/^urn:ogc:def:crs:EPSG::(\d+)$/,/^http:\/\/www\.opengis\.net\/def\/crs\/EPSG\/0\/(\d+)$/];function ln(t){let e=0;for(const i of an){const n=t.match(i);if(n){e=parseInt(n[1]);break}}if(!e)return null;let i=0,n=!1;return e>32700&&e<32761?i=e-32700:e>32600&&e<32661&&(n=!0,i=e-32600),i?{number:i,north:n}:null}function hn(t,e){return function(i,n,r,s){const o=i.length;r=r>1?r:2,s=s??r,n||(n=r>2?i.slice():new Array(o));for(let r=0;r<o;r+=s){const s=i[r],o=i[r+1],a=t(s,o,e);n[r]=a[0],n[r+1]=a[1]}return n}}function cn(t){return ln(t)?new ci({code:t,units:"m"}):null}function un(t){const e=ln(t.getCode());return e?{forward:hn(sn,e),inverse:hn(Qi,e)}:null}const dn=[un],gn=[cn];let fn=!0;function pn(t){fn=!(void 0===t||t)}function mn(t,e){if(void 0!==e)for(let i=0,n=t.length;i<n;++i)e[i]=t[i];else e=t.slice();return e}function _n(t,e){if(void 0!==e&&t!==e){for(let i=0,n=t.length;i<n;++i)e[i]=t[i];t=e}return t}function yn(t){Pi(t.getCode(),t),Fi(t,t,mn)}function xn(t){t.forEach(yn)}function vn(t){if("string"!=typeof t)return t;const e=bi(t);if(e)return e;for(const e of gn){const i=e(t);if(i)return i}return null}function En(t,e,i,n){let r;const s=(t=vn(t)).getPointResolutionFunc();if(s){if(r=s(e,i),n&&n!==t.getUnits()){const e=t.getMetersPerUnit();e&&(r=r*e/hi[n])}}else{const s=t.getUnits();if("degrees"==s&&!n||"degrees"==n)r=e;else{const o=In(t,vn("EPSG:4326"));if(o||"degrees"===s){let t=[i[0]-e/2,i[1],i[0]+e/2,i[1],i[0],i[1]-e/2,i[0],i[1]+e/2];t=o(t,t,2);r=(ke(t.slice(0,2),t.slice(2,4))+ke(t.slice(4,6),t.slice(6,8)))/2}else r=e*t.getMetersPerUnit();const a=n?hi[n]:t.getMetersPerUnit();void 0!==a&&(r/=a)}}return r}function Sn(t){xn(t),t.forEach((function(e){t.forEach((function(t){e!==t&&Fi(e,t,mn)}))}))}function wn(t,e,i,n){t.forEach((function(t){e.forEach((function(e){Fi(t,e,i),Fi(e,t,n)}))}))}function Tn(t,e){return t?"string"==typeof t?vn(t):t:vn(e)}function Cn(t){return function(e,i,n,r){const s=e.length;n=void 0!==n?n:2,r=r??n,i=void 0!==i?i:new Array(s);for(let o=0;o<s;o+=r){const s=t(e.slice(o,o+n)),a=s.length;for(let t=0,n=r;t<n;++t)i[o+t]=t>=a?e[o+t]:s[t]}return i}}function Rn(t,e,i,n){const r=vn(t),s=vn(e);Fi(r,s,Cn(i)),Fi(s,r,Cn(n))}function bn(t,e){const i=Mn(t,void 0!==e?e:"EPSG:3857","EPSG:4326"),n=i[0];return(n<-180||n>180)&&(i[0]=Ie(n+180,360)-180),i}function Pn(t,e){if(t===e)return!0;const i=t.getUnits()===e.getUnits();if(t.getCode()===e.getCode())return i;return In(t,e)===mn&&i}function In(t,e){const i=t.getCode(),n=e.getCode();let r=Mi(i,n);if(r)return r;let s=null,o=null;for(const i of dn)s||(s=i(t)),o||(o=i(e));if(!s&&!o)return null;const a="EPSG:4326";if(o)if(s)r=Ln(s.inverse,o.forward);else{const t=Mi(i,a);t&&(r=Ln(t,o.forward))}else{const t=Mi(a,n);t&&(r=Ln(s.inverse,t))}return r&&(yn(t),yn(e),Fi(t,e,r)),r}function Ln(t,e){return function(i,n,r,s){return n=t(i,n,r,s),e(n,n,r,s)}}function Fn(t,e){return In(vn(t),vn(e))}function Mn(t,e,i){const n=Fn(e,i);if(!n){const t=vn(e).getCode(),n=vn(i).getCode();throw new Error(`No transform available between ${t} and ${n}`)}return n(t,void 0,t.length)}function An(t,e,i,n){return ve(t,Fn(e,i),void 0,n)}let On=null;function Dn(t){On=vn(t)}function Nn(){return On}function kn(t,e){return On?Mn(t,e,On):t}function Gn(t,e){return On?Mn(t,On,e):(fn&&!Je(t,[0,0])&&t[0]>=-180&&t[0]<=180&&t[1]>=-90&&t[1]<=90&&(fn=!1,Xe("Call useGeographic() from ol/proj once to work with [longitude, latitude] coordinates.")),t)}function jn(t,e){return On?An(t,e,On):t}function Un(t,e){return On?An(t,On,e):t}function Bn(t,e){if(!On)return t;const i=vn(e).getMetersPerUnit(),n=On.getMetersPerUnit();return i&&n?t*i/n:t}function zn(t,e){if(!On)return t;const i=vn(e).getMetersPerUnit(),n=On.getMetersPerUnit();return i&&n?t*n/i:t}function Xn(t,e,i){return function(n){let r,s;if(t.canWrapX()){const e=t.getExtent(),o=fe(e);s=oi(n=n.slice(0),t,o),s&&(n[0]=n[0]-s*o),n[0]=we(n[0],e[0],e[2]),n[1]=we(n[1],e[1],e[3]),r=i(n)}else r=i(n);return s&&e.canWrapX()&&(r[0]+=s*fe(e.getExtent())),r}}function Vn(){Sn(_i),Sn(Ti),wn(Ti,_i,yi,xi)}Vn();const $n=new Array(6);function Wn(){return[1,0,0,1,0,0]}function Zn(t){return Hn(t,1,0,0,1,0,0)}function Yn(t,e){const i=t[0],n=t[1],r=t[2],s=t[3],o=t[4],a=t[5],l=e[0],h=e[1],c=e[2],u=e[3],d=e[4],g=e[5];return t[0]=i*l+r*h,t[1]=n*l+s*h,t[2]=i*c+r*u,t[3]=n*c+s*u,t[4]=i*d+r*g+o,t[5]=n*d+s*g+a,t}function Hn(t,e,i,n,r,s,o){return t[0]=e,t[1]=i,t[2]=n,t[3]=r,t[4]=s,t[5]=o,t}function Kn(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t}function qn(t,e){const i=e[0],n=e[1];return e[0]=t[0]*i+t[2]*n+t[4],e[1]=t[1]*i+t[3]*n+t[5],e}function Jn(t,e){const i=Math.cos(e),n=Math.sin(e);return Yn(t,Hn($n,i,n,-n,i,0,0))}function Qn(t,e,i){return Yn(t,Hn($n,e,0,0,i,0,0))}function tr(t,e,i){return Yn(t,Hn($n,1,0,0,1,e,i))}function er(t,e,i,n,r,s,o,a){const l=Math.sin(s),h=Math.cos(s);return t[0]=n*h,t[1]=r*l,t[2]=-n*l,t[3]=r*h,t[4]=o*n*h-a*n*l+e,t[5]=o*r*l+a*r*h+i,t}function ir(t,e){const i=nr(e);Ft(0!==i,"Transformation matrix cannot be inverted");const n=e[0],r=e[1],s=e[2],o=e[3],a=e[4],l=e[5];return t[0]=o/i,t[1]=-r/i,t[2]=-s/i,t[3]=n/i,t[4]=(s*l-o*a)/i,t[5]=-(n*l-r*a)/i,t}function nr(t){return t[0]*t[3]-t[1]*t[2]}const rr=[1e6,1e6,1e6,1e6,2,2];function sr(t){return"matrix("+t.map(((t,e)=>Math.round(t*rr[e])/rr[e])).join(", ")+")"}function or(t,e,i,n,r,s,o){s=s||[],o=o||2;let a=0;for(let l=e;l<i;l+=n){const e=t[l],i=t[l+1];s[a++]=r[0]*e+r[2]*i+r[4],s[a++]=r[1]*e+r[3]*i+r[5];for(let e=2;e<o;e++)s[a++]=t[l+e]}return s&&s.length!=a&&(s.length=a),s}function ar(t,e,i,n,r,s,o){o=o||[];const a=Math.cos(r),l=Math.sin(r),h=s[0],c=s[1];let u=0;for(let r=e;r<i;r+=n){const e=t[r]-h,i=t[r+1]-c;o[u++]=h+e*a-i*l,o[u++]=c+e*l+i*a;for(let e=r+2;e<r+n;++e)o[u++]=t[e]}return o&&o.length!=u&&(o.length=u),o}function lr(t,e,i,n,r,s,o,a){a=a||[];const l=o[0],h=o[1];let c=0;for(let o=e;o<i;o+=n){const e=t[o]-l,i=t[o+1]-h;a[c++]=l+r*e,a[c++]=h+s*i;for(let e=o+2;e<o+n;++e)a[c++]=t[e]}return a&&a.length!=c&&(a.length=c),a}function hr(t,e,i,n,r,s,o){o=o||[];let a=0;for(let l=e;l<i;l+=n){o[a++]=t[l]+r,o[a++]=t[l+1]+s;for(let e=l+2;e<l+n;++e)o[a++]=t[e]}return o&&o.length!=a&&(o.length=a),o}const cr=[1,0,0,1,0,0],ur=[NaN,NaN];class dr extends V{constructor(){super(),this.extent_=[1/0,1/0,-1/0,-1/0],this.extentRevision_=-1,this.simplifiedGeometryMaxMinSquaredTolerance=0,this.simplifiedGeometryRevision=0,this.simplifyTransformedInternal=P(((t,e,i)=>{if(!i)return this.getSimplifiedGeometry(e);const n=this.clone();return n.applyTransform(i),n.getSimplifiedGeometry(e)}))}simplifyTransformed(t,e){return this.simplifyTransformedInternal(this.getRevision(),t,e)}clone(){return U()}closestPointXY(t,e,i,n){return U()}containsXY(t,e){return 0===this.closestPointXY(t,e,ur,Number.MIN_VALUE)}getClosestPoint(t,e){return e=e||[NaN,NaN],this.closestPointXY(t[0],t[1],e,1/0),e}intersectsCoordinate(t){return this.containsXY(t[0],t[1])}computeExtent(t){return U()}getExtent(t){if(this.extentRevision_!=this.getRevision()){const t=this.computeExtent(this.extent_);(isNaN(t[0])||isNaN(t[1]))&&$t(t),this.extentRevision_=this.getRevision()}return _e(this.extent_,t)}rotate(t,e){U()}scale(t,e,i){U()}simplify(t){return this.getSimplifiedGeometry(t*t)}getSimplifiedGeometry(t){return U()}getType(){return U()}applyTransform(t){U()}intersectsExtent(t){return U()}translate(t,e){U()}transform(t,e){const i=vn(t),n="tile-pixels"==i.getUnits()?function(t,n,r){const s=i.getExtent(),o=i.getWorldExtent(),a=ce(o)/ce(s);er(cr,o[0],o[3],a,-a,0,0,0);const l=or(t,0,t.length,r,cr,n),h=Fn(i,e);return h?h(l,l,r):l}:Fn(i,e);return this.applyTransform(n),this}}class gr extends dr{constructor(){super(),this.layout="XY",this.stride=2,this.flatCoordinates}computeExtent(t){return Zt(this.flatCoordinates,0,this.flatCoordinates.length,this.stride,t)}getCoordinates(){return U()}getFirstCoordinate(){return this.flatCoordinates.slice(0,this.stride)}getFlatCoordinates(){return this.flatCoordinates}getLastCoordinate(){return this.flatCoordinates.slice(this.flatCoordinates.length-this.stride)}getLayout(){return this.layout}getSimplifiedGeometry(t){if(this.simplifiedGeometryRevision!==this.getRevision()&&(this.simplifiedGeometryMaxMinSquaredTolerance=0,this.simplifiedGeometryRevision=this.getRevision()),t<0||0!==this.simplifiedGeometryMaxMinSquaredTolerance&&t<=this.simplifiedGeometryMaxMinSquaredTolerance)return this;const e=this.getSimplifiedGeometryInternal(t);return e.getFlatCoordinates().length<this.flatCoordinates.length?e:(this.simplifiedGeometryMaxMinSquaredTolerance=t,this)}getSimplifiedGeometryInternal(t){return this}getStride(){return this.stride}setFlatCoordinates(t,e){this.stride=pr(t),this.layout=t,this.flatCoordinates=e}setCoordinates(t,e){U()}setLayout(t,e,i){let n;if(t)n=pr(t);else{for(let t=0;t<i;++t){if(0===e.length)return this.layout="XY",void(this.stride=2);e=e[0]}n=e.length,t=fr(n)}this.layout=t,this.stride=n}applyTransform(t){this.flatCoordinates&&(t(this.flatCoordinates,this.flatCoordinates,this.layout.startsWith("XYZ")?3:2,this.stride),this.changed())}rotate(t,e){const i=this.getFlatCoordinates();if(i){const n=this.getStride();ar(i,0,i.length,n,t,e,i),this.changed()}}scale(t,e,i){void 0===e&&(e=t),i||(i=oe(this.getExtent()));const n=this.getFlatCoordinates();if(n){const r=this.getStride();lr(n,0,n.length,r,t,e,i,n),this.changed()}}translate(t,e){const i=this.getFlatCoordinates();if(i){const n=this.getStride();hr(i,0,i.length,n,t,e,i),this.changed()}}}function fr(t){let e;return 2==t?e="XY":3==t?e="XYZ":4==t&&(e="XYZM"),e}function pr(t){let e;return"XY"==t?e=2:"XYZ"==t||"XYM"==t?e=3:"XYZM"==t&&(e=4),e}function mr(t,e,i){const n=t.getFlatCoordinates();if(!n)return null;const r=t.getStride();return or(n,0,n.length,r,e,i)}function _r(t,e,i,n){let r=0;const s=t[i-n],o=t[i-n+1];let a=0,l=0;for(;e<i;e+=n){const i=t[e]-s,n=t[e+1]-o;r+=l*i-a*n,a=i,l=n}return r/2}function yr(t,e,i,n){let r=0;for(let s=0,o=i.length;s<o;++s){const o=i[s];r+=_r(t,e,o,n),e=o}return r}function xr(t,e,i,n){let r=0;for(let s=0,o=i.length;s<o;++s){const o=i[s];r+=yr(t,e,o,n),e=o[o.length-1]}return r}function vr(t,e,i,n,r,s,o){const a=t[e],l=t[e+1],h=t[i]-a,c=t[i+1]-l;let u;if(0===h&&0===c)u=e;else{const d=((r-a)*h+(s-l)*c)/(h*h+c*c);if(d>1)u=i;else{if(d>0){for(let r=0;r<n;++r)o[r]=Le(t[e+r],t[i+r],d);return void(o.length=n)}u=e}}for(let e=0;e<n;++e)o[e]=t[u+e];o.length=n}function Er(t,e,i,n,r){let s=t[e],o=t[e+1];for(e+=n;e<i;e+=n){const i=t[e],n=t[e+1],a=Ce(s,o,i,n);a>r&&(r=a),s=i,o=n}return r}function Sr(t,e,i,n,r){for(let s=0,o=i.length;s<o;++s){const o=i[s];r=Er(t,e,o,n,r),e=o}return r}function wr(t,e,i,n,r){for(let s=0,o=i.length;s<o;++s){const o=i[s];r=Sr(t,e,o,n,r),e=o[o.length-1]}return r}function Tr(t,e,i,n,r,s,o,a,l,h,c){if(e==i)return h;let u,d;if(0===r){if(d=Ce(o,a,t[e],t[e+1]),d<h){for(u=0;u<n;++u)l[u]=t[e+u];return l.length=n,d}return h}c=c||[NaN,NaN];let g=e+n;for(;g<i;)if(vr(t,g-n,g,n,o,a,c),d=Ce(o,a,c[0],c[1]),d<h){for(h=d,u=0;u<n;++u)l[u]=c[u];l.length=n,g+=n}else g+=n*Math.max((Math.sqrt(d)-Math.sqrt(h))/r|0,1);if(s&&(vr(t,i-n,e,n,o,a,c),d=Ce(o,a,c[0],c[1]),d<h)){for(h=d,u=0;u<n;++u)l[u]=c[u];l.length=n}return h}function Cr(t,e,i,n,r,s,o,a,l,h,c){c=c||[NaN,NaN];for(let u=0,d=i.length;u<d;++u){const d=i[u];h=Tr(t,e,d,n,r,s,o,a,l,h,c),e=d}return h}function Rr(t,e,i,n,r,s,o,a,l,h,c){c=c||[NaN,NaN];for(let u=0,d=i.length;u<d;++u){const d=i[u];h=Cr(t,e,d,n,r,s,o,a,l,h,c),e=d[d.length-1]}return h}function br(t,e,i,n){for(let n=0,r=i.length;n<r;++n)t[e++]=i[n];return e}function Pr(t,e,i,n){for(let r=0,s=i.length;r<s;++r){const s=i[r];for(let i=0;i<n;++i)t[e++]=s[i]}return e}function Ir(t,e,i,n,r){r=r||[];let s=0;for(let o=0,a=i.length;o<a;++o){const a=Pr(t,e,i[o],n);r[s++]=a,e=a}return r.length=s,r}function Lr(t,e,i,n,r){r=r||[];let s=0;for(let o=0,a=i.length;o<a;++o){const a=Ir(t,e,i[o],n,r[s]);0===a.length&&(a[0]=e),r[s++]=a,e=a[a.length-1]}return r.length=s,r}function Fr(t,e,i,n,r){r=void 0!==r?r:[];let s=0;for(let o=e;o<i;o+=n)r[s++]=t.slice(o,o+n);return r.length=s,r}function Mr(t,e,i,n,r){r=void 0!==r?r:[];let s=0;for(let o=0,a=i.length;o<a;++o){const a=i[o];r[s++]=Fr(t,e,a,n,r[s]),e=a}return r.length=s,r}function Ar(t,e,i,n,r){r=void 0!==r?r:[];let s=0;for(let o=0,a=i.length;o<a;++o){const a=i[o];r[s++]=1===a.length&&a[0]===e?[]:Mr(t,e,a,n,r[s]),e=a[a.length-1]}return r.length=s,r}function Or(t,e,i,n,r,s,o){const a=(i-e)/n;if(a<3){for(;e<i;e+=n)s[o++]=t[e],s[o++]=t[e+1];return o}const l=new Array(a);l[0]=1,l[a-1]=1;const h=[e,i-n];let c=0;for(;h.length>0;){const i=h.pop(),s=h.pop();let o=0;const a=t[s],u=t[s+1],d=t[i],g=t[i+1];for(let e=s+n;e<i;e+=n){const i=Te(t[e],t[e+1],a,u,d,g);i>o&&(c=e,o=i)}o>r&&(l[(c-e)/n]=1,s+n<c&&h.push(s,c),c+n<i&&h.push(c,i))}for(let i=0;i<a;++i)l[i]&&(s[o++]=t[e+i*n],s[o++]=t[e+i*n+1]);return o}function Dr(t,e,i,n,r,s,o,a){for(let l=0,h=i.length;l<h;++l){const h=i[l];o=Or(t,e,h,n,r,s,o),a.push(o),e=h}return o}function Nr(t,e,i,n,r,s,o){if(i<=e+n){for(;e<i;e+=n)s[o++]=t[e],s[o++]=t[e+1];return o}let a=t[e],l=t[e+1];s[o++]=a,s[o++]=l;let h=a,c=l;for(e+=n;e<i;e+=n)h=t[e],c=t[e+1],Ce(a,l,h,c)>r&&(s[o++]=h,s[o++]=c,a=h,l=c);return h==a&&c==l||(s[o++]=h,s[o++]=c),o}function kr(t,e){return e*Math.round(t/e)}function Gr(t,e,i,n,r,s,o){if(e==i)return o;let a,l,h=kr(t[e],r),c=kr(t[e+1],r);e+=n,s[o++]=h,s[o++]=c;do{if(a=kr(t[e],r),l=kr(t[e+1],r),(e+=n)==i)return s[o++]=a,s[o++]=l,o}while(a==h&&l==c);for(;e<i;){const i=kr(t[e],r),u=kr(t[e+1],r);if(e+=n,i==a&&u==l)continue;const d=a-h,g=l-c,f=i-h,p=u-c;d*p==g*f&&(d<0&&f<d||d==f||d>0&&f>d)&&(g<0&&p<g||g==p||g>0&&p>g)?(a=i,l=u):(s[o++]=a,s[o++]=l,h=a,c=l,a=i,l=u)}return s[o++]=a,s[o++]=l,o}function jr(t,e,i,n,r,s,o,a){for(let l=0,h=i.length;l<h;++l){const h=i[l];o=Gr(t,e,h,n,r,s,o),a.push(o),e=h}return o}function Ur(t,e,i,n,r,s,o,a){for(let l=0,h=i.length;l<h;++l){const h=i[l],c=[];o=jr(t,e,h,n,r,s,o,c),a.push(c),e=h[h.length-1]}return o}class Br extends gr{constructor(t,e){super(),this.maxDelta_=-1,this.maxDeltaRevision_=-1,void 0===e||Array.isArray(t[0])?this.setCoordinates(t,e):this.setFlatCoordinates(e,t)}clone(){return new Br(this.flatCoordinates.slice(),this.layout)}closestPointXY(t,e,i,n){return n<Gt(this.getExtent(),t,e)?n:(this.maxDeltaRevision_!=this.getRevision()&&(this.maxDelta_=Math.sqrt(Er(this.flatCoordinates,0,this.flatCoordinates.length,this.stride,0)),this.maxDeltaRevision_=this.getRevision()),Tr(this.flatCoordinates,0,this.flatCoordinates.length,this.stride,this.maxDelta_,!0,t,e,i,n))}getArea(){return _r(this.flatCoordinates,0,this.flatCoordinates.length,this.stride)}getCoordinates(){return Fr(this.flatCoordinates,0,this.flatCoordinates.length,this.stride)}getSimplifiedGeometryInternal(t){const e=[];return e.length=Or(this.flatCoordinates,0,this.flatCoordinates.length,this.stride,t,e,0),new Br(e,"XY")}getType(){return"LinearRing"}intersectsExtent(t){return!1}setCoordinates(t,e){this.setLayout(e,t,1),this.flatCoordinates||(this.flatCoordinates=[]),this.flatCoordinates.length=Pr(this.flatCoordinates,0,t,this.stride),this.changed()}}class zr extends gr{constructor(t,e){super(),this.setCoordinates(t,e)}clone(){const t=new zr(this.flatCoordinates.slice(),this.layout);return t.applyProperties(this),t}closestPointXY(t,e,i,n){const r=this.flatCoordinates,s=Ce(t,e,r[0],r[1]);if(s<n){const t=this.stride;for(let e=0;e<t;++e)i[e]=r[e];return i.length=t,s}return n}getCoordinates(){return this.flatCoordinates.slice()}computeExtent(t){return Wt(this.flatCoordinates,t)}getType(){return"Point"}intersectsExtent(t){return Bt(t,this.flatCoordinates[0],this.flatCoordinates[1])}setCoordinates(t,e){this.setLayout(e,t,0),this.flatCoordinates||(this.flatCoordinates=[]),this.flatCoordinates.length=br(this.flatCoordinates,0,t,this.stride),this.changed()}}function Xr(t,e,i,n,r){return!ie(r,(function(r){return!Vr(t,e,i,n,r[0],r[1])}))}function Vr(t,e,i,n,r,s){let o=0,a=t[i-n],l=t[i-n+1];for(;e<i;e+=n){const i=t[e],n=t[e+1];l<=s?n>s&&(i-a)*(s-l)-(r-a)*(n-l)>0&&o++:n<=s&&(i-a)*(s-l)-(r-a)*(n-l)<0&&o--,a=i,l=n}return 0!==o}function $r(t,e,i,n,r,s){if(0===i.length)return!1;if(!Vr(t,e,i[0],n,r,s))return!1;for(let e=1,o=i.length;e<o;++e)if(Vr(t,i[e-1],i[e],n,r,s))return!1;return!0}function Wr(t,e,i,n,r,s){if(0===i.length)return!1;for(let o=0,a=i.length;o<a;++o){const a=i[o];if($r(t,e,a,n,r,s))return!0;e=a[a.length-1]}return!1}function Zr(t,e,i,n,r,s,o){let a,l,h,c,u,d,g;const f=r[s+1],p=[];for(let r=0,s=i.length;r<s;++r){const s=i[r];for(c=t[s-n],d=t[s-n+1],a=e;a<s;a+=n)u=t[a],g=t[a+1],(f<=d&&g<=f||d<=f&&f<=g)&&(h=(f-d)/(g-d)*(u-c)+c,p.push(h)),c=u,d=g}let m=NaN,_=-1/0;for(p.sort(y),c=p[0],a=1,l=p.length;a<l;++a){u=p[a];const r=Math.abs(u-c);r>_&&(h=(c+u)/2,$r(t,e,i,n,h,f)&&(m=h,_=r)),c=u}return isNaN(m)&&(m=r[s]),o?(o.push(m,f,_),o):[m,f,_]}function Yr(t,e,i,n,r){let s=[];for(let o=0,a=i.length;o<a;++o){const a=i[o];s=Zr(t,e,a,n,r,2*o,s),e=a[a.length-1]}return s}function Hr(t,e,i,n,r){let s;for(e+=n;e<i;e+=n)if(s=r(t.slice(e-n,e),t.slice(e,e+n)),s)return s;return!1}function Kr(t,e,i,n,r,s){return s=s??Qt([1/0,1/0,-1/0,-1/0],t,e,i,n),!!pe(r,s)&&(s[0]>=r[0]&&s[2]<=r[2]||s[1]>=r[1]&&s[3]<=r[3]||Hr(t,e,i,n,(function(t,e){return xe(r,t,e)})))}function qr(t,e,i,n,r){for(let s=0,o=i.length;s<o;++s){if(Kr(t,e,i[s],n,r))return!0;e=i[s]}return!1}function Jr(t,e,i,n,r){return!!Kr(t,e,i,n,r)||(!!Vr(t,e,i,n,r[0],r[1])||(!!Vr(t,e,i,n,r[0],r[3])||(!!Vr(t,e,i,n,r[2],r[1])||!!Vr(t,e,i,n,r[2],r[3]))))}function Qr(t,e,i,n,r){if(!Jr(t,e,i[0],n,r))return!1;if(1===i.length)return!0;for(let e=1,s=i.length;e<s;++e)if(Xr(t,i[e-1],i[e],n,r)&&!Kr(t,i[e-1],i[e],n,r))return!1;return!0}function ts(t,e,i,n,r){for(let s=0,o=i.length;s<o;++s){const o=i[s];if(Qr(t,e,o,n,r))return!0;e=o[o.length-1]}return!1}function es(t,e,i,n){for(;e<i-n;){for(let r=0;r<n;++r){const s=t[e+r];t[e+r]=t[i-n+r],t[i-n+r]=s}e+=n,i-=n}}function is(t,e,i,n){let r=0,s=t[i-n],o=t[i-n+1];for(;e<i;e+=n){const i=t[e],n=t[e+1];r+=(i-s)*(n+o),s=i,o=n}return 0===r?void 0:r>0}function ns(t,e,i,n,r){r=void 0!==r&&r;for(let s=0,o=i.length;s<o;++s){const o=i[s],a=is(t,e,o,n);if(0===s){if(r&&a||!r&&!a)return!1}else if(r&&!a||!r&&a)return!1;e=o}return!0}function rs(t,e,i,n,r){for(let s=0,o=i.length;s<o;++s){const o=i[s];if(!ns(t,e,o,n,r))return!1;o.length&&(e=o[o.length-1])}return!0}function ss(t,e,i,n,r){r=void 0!==r&&r;for(let s=0,o=i.length;s<o;++s){const o=i[s],a=is(t,e,o,n);(0===s?r&&a||!r&&!a:r&&!a||!r&&a)&&es(t,e,o,n),e=o}return e}function os(t,e,i,n,r){for(let s=0,o=i.length;s<o;++s)e=ss(t,e,i[s],n,r);return e}function as(t,e){const i=[];let n,r=0,s=0;for(let o=0,a=e.length;o<a;++o){const a=e[o],l=is(t,r,a,2);if(void 0===n&&(n=l),l===n)i.push(e.slice(s,o+1));else{if(0===i.length)continue;i[i.length-1].push(e[s])}s=o+1,r=a}return i}class ls extends gr{constructor(t,e,i){super(),this.ends_=[],this.flatInteriorPointRevision_=-1,this.flatInteriorPoint_=null,this.maxDelta_=-1,this.maxDeltaRevision_=-1,this.orientedRevision_=-1,this.orientedFlatCoordinates_=null,void 0!==e&&i?(this.setFlatCoordinates(e,t),this.ends_=i):this.setCoordinates(t,e)}appendLinearRing(t){this.flatCoordinates?S(this.flatCoordinates,t.getFlatCoordinates()):this.flatCoordinates=t.getFlatCoordinates().slice(),this.ends_.push(this.flatCoordinates.length),this.changed()}clone(){const t=new ls(this.flatCoordinates.slice(),this.layout,this.ends_.slice());return t.applyProperties(this),t}closestPointXY(t,e,i,n){return n<Gt(this.getExtent(),t,e)?n:(this.maxDeltaRevision_!=this.getRevision()&&(this.maxDelta_=Math.sqrt(Sr(this.flatCoordinates,0,this.ends_,this.stride,0)),this.maxDeltaRevision_=this.getRevision()),Cr(this.flatCoordinates,0,this.ends_,this.stride,this.maxDelta_,!0,t,e,i,n))}containsXY(t,e){return $r(this.getOrientedFlatCoordinates(),0,this.ends_,this.stride,t,e)}getArea(){return yr(this.getOrientedFlatCoordinates(),0,this.ends_,this.stride)}getCoordinates(t){let e;return void 0!==t?(e=this.getOrientedFlatCoordinates().slice(),ss(e,0,this.ends_,this.stride,t)):e=this.flatCoordinates,Mr(e,0,this.ends_,this.stride)}getEnds(){return this.ends_}getFlatInteriorPoint(){if(this.flatInteriorPointRevision_!=this.getRevision()){const t=oe(this.getExtent());this.flatInteriorPoint_=Zr(this.getOrientedFlatCoordinates(),0,this.ends_,this.stride,t,0),this.flatInteriorPointRevision_=this.getRevision()}return this.flatInteriorPoint_}getInteriorPoint(){return new zr(this.getFlatInteriorPoint(),"XYM")}getLinearRingCount(){return this.ends_.length}getLinearRing(t){return t<0||this.ends_.length<=t?null:new Br(this.flatCoordinates.slice(0===t?0:this.ends_[t-1],this.ends_[t]),this.layout)}getLinearRings(){const t=this.layout,e=this.flatCoordinates,i=this.ends_,n=[];let r=0;for(let s=0,o=i.length;s<o;++s){const o=i[s],a=new Br(e.slice(r,o),t);n.push(a),r=o}return n}getOrientedFlatCoordinates(){if(this.orientedRevision_!=this.getRevision()){const t=this.flatCoordinates;ns(t,0,this.ends_,this.stride)?this.orientedFlatCoordinates_=t:(this.orientedFlatCoordinates_=t.slice(),this.orientedFlatCoordinates_.length=ss(this.orientedFlatCoordinates_,0,this.ends_,this.stride)),this.orientedRevision_=this.getRevision()}return this.orientedFlatCoordinates_}getSimplifiedGeometryInternal(t){const e=[],i=[];return e.length=jr(this.flatCoordinates,0,this.ends_,this.stride,Math.sqrt(t),e,0,i),new ls(e,"XY",i)}getType(){return"Polygon"}intersectsExtent(t){return Qr(this.getOrientedFlatCoordinates(),0,this.ends_,this.stride,t)}setCoordinates(t,e){this.setLayout(e,t,2),this.flatCoordinates||(this.flatCoordinates=[]);const i=Ir(this.flatCoordinates,0,t,this.stride,this.ends_);this.flatCoordinates.length=0===i.length?0:i[i.length-1],this.changed()}}function hs(t,e,i,n){i=i||32;const r=[];for(let s=0;s<i;++s)S(r,Ue(t,e,2*Math.PI*s/i,n));return r.push(r[0],r[1]),new ls(r,"XY",[r.length])}function cs(t){if(me(t))throw new Error("Cannot create polygon from empty extent");const e=t[0],i=t[1],n=t[2],r=t[3],s=[e,i,e,r,n,r,n,i,e,i];return new ls(s,"XY",[s.length])}function us(t,e,i){e=e||32;const n=t.getStride(),r=t.getLayout(),s=t.getCenter(),o=n*(e+1),a=new Array(o);for(let t=0;t<o;t+=n){a[t]=0,a[t+1]=0;for(let e=2;e<n;e++)a[t+e]=s[e]}const l=[a.length],h=new ls(a,r,l);return ds(h,s,t.getRadius(),i),h}function ds(t,e,i,n){const r=t.getFlatCoordinates(),s=t.getStride(),o=r.length/s-1,a=n||0;for(let t=0;t<=o;++t){const n=t*s,l=a+2*Ie(t,o)*Math.PI/o;r[n]=e[0]+i*Math.cos(l),r[n+1]=e[1]+i*Math.sin(l)}t.changed()}const gs="accuracy",fs="accuracyGeometry",ps="altitude",ms="altitudeAccuracy",_s="heading",ys="position",xs="projection",vs="speed",Es="tracking",Ss="trackingOptions",ws="error";class Ts extends M{constructor(t){super(ws),this.code=t.code,this.message=t.message}}var Cs={IDLE:0,LOADING:1,LOADED:2,ERROR:3,EMPTY:4};class Rs extends O{constructor(t,e,i,n){super(),this.extent=t,this.pixelRatio_=i,this.resolution=e,this.state="function"==typeof n?Cs.IDLE:n,this.image_=null,this.loader="function"==typeof n?n:null}changed(){this.dispatchEvent(n)}getExtent(){return this.extent}getImage(){return this.image_}getPixelRatio(){return this.pixelRatio_}getResolution(){return this.resolution}getState(){return this.state}load(){if(this.state==Cs.IDLE&&this.loader){this.state=Cs.LOADING,this.changed();const t=this.getResolution(),e=Array.isArray(t)?t[0]:t;I((()=>this.loader(this.getExtent(),e,this.getPixelRatio()))).then((t=>{"image"in t&&(this.image_=t.image),"extent"in t&&(this.extent=t.extent),"resolution"in t&&(this.resolution=t.resolution),"pixelRatio"in t&&(this.pixelRatio_=t.pixelRatio),(t instanceof HTMLImageElement||gt&&t instanceof ImageBitmap||t instanceof HTMLCanvasElement||t instanceof HTMLVideoElement)&&(this.image_=t),this.state=Cs.LOADED})).catch((t=>{this.state=Cs.ERROR,console.error(t)})).finally((()=>this.changed()))}}setImage(t){this.image_=t}setResolution(t){this.resolution=t}}function bs(t,e,i){const n=t;let s=!0,o=!1,a=!1;const l=[N(n,g,(function(){a=!0,o||e()}))];return n.src&&dt?(o=!0,n.decode().then((function(){s&&e()})).catch((function(t){s&&(a?e():i())}))):l.push(N(n,r,i)),function(){s=!1,l.forEach(k)}}function Ps(t,e){return new Promise(((i,n)=>{function r(){o(),i(t)}function s(){o(),n(new Error("Image load error"))}function o(){t.removeEventListener("load",r),t.removeEventListener("error",s)}t.addEventListener("load",r),t.addEventListener("error",s),e&&(t.src=e)}))}function Is(t,e){return e&&(t.src=e),t.src&&dt?new Promise(((e,i)=>t.decode().then((()=>e(t))).catch((n=>t.complete&&t.width?e(t):i(n))))):Ps(t)}function Ls(t,e){return e&&(t.src=e),t.src&&dt&&gt?t.decode().then((()=>createImageBitmap(t))).catch((e=>{if(t.complete&&t.width)return t;throw e})):Is(t)}class Fs extends Rs{constructor(t,e,i,n,r){super(t,e,i,void 0!==r?Cs.IDLE:Cs.LOADED),this.loader_=void 0!==r?r:null,this.canvas_=n,this.error_=null}getError(){return this.error_}handleLoad_(t){t?(this.error_=t,this.state=Cs.ERROR):this.state=Cs.LOADED,this.changed()}load(){this.state==Cs.IDLE&&(this.state=Cs.LOADING,this.changed(),this.loader_(this.handleLoad_.bind(this)))}getImage(){return this.canvas_}}class Ms extends nt{constructor(t,e,i,n,r,s){super(t,e,s),this.crossOrigin_=n,this.src_=i,this.key=i,this.image_=new Image,null!==n&&(this.image_.crossOrigin=n),this.unlisten_=null,this.tileLoadFunction_=r}getImage(){return this.image_}setImage(t){this.image_=t,this.state=K,this.unlistenImage_(),this.changed()}handleImageError_(){this.state=q,this.unlistenImage_(),this.image_=function(){const t=pt(1,1);return t.fillStyle="rgba(0,0,0,0)",t.fillRect(0,0,1,1),t.canvas}(),this.changed()}handleImageLoad_(){const t=this.image_;t.naturalWidth&&t.naturalHeight?this.state=K:this.state=J,this.unlistenImage_(),this.changed()}load(){this.state==q&&(this.state=Y,this.image_=new Image,null!==this.crossOrigin_&&(this.image_.crossOrigin=this.crossOrigin_)),this.state==Y&&(this.state=H,this.changed(),this.tileLoadFunction_(this,this.src_),this.unlisten_=bs(this.image_,this.handleImageLoad_.bind(this),this.handleImageError_.bind(this)))}unlistenImage_(){this.unlisten_&&(this.unlisten_(),this.unlisten_=null)}disposeInternal(){this.unlistenImage_(),this.image_=null,super.disposeInternal()}}class As{constructor(t,e,i){this.decay_=t,this.minVelocity_=e,this.delay_=i,this.points_=[],this.angle_=0,this.initialVelocity_=0}begin(){this.points_.length=0,this.angle_=0,this.initialVelocity_=0}update(t,e){this.points_.push(t,e,Date.now())}end(){if(this.points_.length<6)return!1;const t=Date.now()-this.delay_,e=this.points_.length-3;if(this.points_[e+2]<t)return!1;let i=e-3;for(;i>0&&this.points_[i+2]>t;)i-=3;const n=this.points_[e+2]-this.points_[i+2];if(n<1e3/60)return!1;const r=this.points_[e]-this.points_[i],s=this.points_[e+1]-this.points_[i+1];return this.angle_=Math.atan2(s,r),this.initialVelocity_=Math.sqrt(r*r+s*s)/n,this.initialVelocity_>this.minVelocity_}getDistance(){return(this.minVelocity_-this.initialVelocity_)/this.decay_}getAngle(){return this.angle_}}class Os extends M{constructor(t,e,i){super(t),this.map=e,this.frameState=void 0!==i?i:null}}class Ds extends Os{constructor(t,e,i,n,r,s){super(t,e,r),this.originalEvent=i,this.pixel_=null,this.coordinate_=null,this.dragging=void 0!==n&&n,this.activePointers=s}get pixel(){return this.pixel_||(this.pixel_=this.map.getEventPixel(this.originalEvent)),this.pixel_}set pixel(t){this.pixel_=t}get coordinate(){return this.coordinate_||(this.coordinate_=this.map.getCoordinateFromPixel(this.pixel)),this.coordinate_}set coordinate(t){this.coordinate_=t}preventDefault(){super.preventDefault(),"preventDefault"in this.originalEvent&&this.originalEvent.preventDefault()}stopPropagation(){super.stopPropagation(),"stopPropagation"in this.originalEvent&&this.originalEvent.stopPropagation()}}var Ns={SINGLECLICK:"singleclick",CLICK:o,DBLCLICK:a,POINTERDRAG:"pointerdrag",POINTERMOVE:"pointermove",POINTERDOWN:"pointerdown",POINTERUP:"pointerup",POINTEROVER:"pointerover",POINTEROUT:"pointerout",POINTERENTER:"pointerenter",POINTERLEAVE:"pointerleave",POINTERCANCEL:"pointercancel"},ks="pointermove",Gs="pointerdown",js="pointerup",Us="pointerout";class Bs extends O{constructor(t,e){super(t),this.map_=t,this.clickTimeoutId_,this.emulateClicks_=!1,this.dragging_=!1,this.dragListenerKeys_=[],this.moveTolerance_=void 0===e?1:e,this.down_=null;const i=this.map_.getViewport();this.activePointers_=[],this.trackedTouches_={},this.element_=i,this.pointerdownListenerKey_=D(i,Gs,this.handlePointerDown_,this),this.originalPointerMoveEvent_,this.relayedListenerKey_=D(i,ks,this.relayMoveEvent_,this),this.boundHandleTouchMove_=this.handleTouchMove_.bind(this),this.element_.addEventListener(f,this.boundHandleTouchMove_,!!ft&&{passive:!1})}emulateClick_(t){let e=new Ds(Ns.CLICK,this.map_,t);this.dispatchEvent(e),void 0!==this.clickTimeoutId_?(clearTimeout(this.clickTimeoutId_),this.clickTimeoutId_=void 0,e=new Ds(Ns.DBLCLICK,this.map_,t),this.dispatchEvent(e)):this.clickTimeoutId_=setTimeout((()=>{this.clickTimeoutId_=void 0;const e=new Ds(Ns.SINGLECLICK,this.map_,t);this.dispatchEvent(e)}),250)}updateActivePointers_(t){const e=t,i=e.pointerId;if(e.type==Ns.POINTERUP||e.type==Ns.POINTERCANCEL){delete this.trackedTouches_[i];for(const t in this.trackedTouches_)if(this.trackedTouches_[t].target!==e.target){delete this.trackedTouches_[t];break}}else e.type!=Ns.POINTERDOWN&&e.type!=Ns.POINTERMOVE||(this.trackedTouches_[i]=e);this.activePointers_=Object.values(this.trackedTouches_)}handlePointerUp_(t){this.updateActivePointers_(t);const e=new Ds(Ns.POINTERUP,this.map_,t,void 0,void 0,this.activePointers_);this.dispatchEvent(e),this.emulateClicks_&&!e.defaultPrevented&&!this.dragging_&&this.isMouseActionButton_(t)&&this.emulateClick_(this.down_),0===this.activePointers_.length&&(this.dragListenerKeys_.forEach(k),this.dragListenerKeys_.length=0,this.dragging_=!1,this.down_=null)}isMouseActionButton_(t){return 0===t.button}handlePointerDown_(t){this.emulateClicks_=0===this.activePointers_.length,this.updateActivePointers_(t);const e=new Ds(Ns.POINTERDOWN,this.map_,t,void 0,void 0,this.activePointers_);if(this.dispatchEvent(e),this.down_=new PointerEvent(t.type,t),Object.defineProperty(this.down_,"target",{writable:!1,value:t.target}),0===this.dragListenerKeys_.length){const t=this.map_.getOwnerDocument();this.dragListenerKeys_.push(D(t,Ns.POINTERMOVE,this.handlePointerMove_,this),D(t,Ns.POINTERUP,this.handlePointerUp_,this),D(this.element_,Ns.POINTERCANCEL,this.handlePointerUp_,this)),this.element_.getRootNode&&this.element_.getRootNode()!==t&&this.dragListenerKeys_.push(D(this.element_.getRootNode(),Ns.POINTERUP,this.handlePointerUp_,this))}}handlePointerMove_(t){if(this.isMoving_(t)){this.updateActivePointers_(t),this.dragging_=!0;const e=new Ds(Ns.POINTERDRAG,this.map_,t,this.dragging_,void 0,this.activePointers_);this.dispatchEvent(e)}}relayMoveEvent_(t){this.originalPointerMoveEvent_=t;const e=!(!this.down_||!this.isMoving_(t));this.dispatchEvent(new Ds(Ns.POINTERMOVE,this.map_,t,e))}handleTouchMove_(t){const e=this.originalPointerMoveEvent_;e&&!e.defaultPrevented||"boolean"==typeof t.cancelable&&!0!==t.cancelable||t.preventDefault()}isMoving_(t){return this.dragging_||Math.abs(t.clientX-this.down_.clientX)>this.moveTolerance_||Math.abs(t.clientY-this.down_.clientY)>this.moveTolerance_}disposeInternal(){this.relayedListenerKey_&&(k(this.relayedListenerKey_),this.relayedListenerKey_=null),this.element_.removeEventListener(f,this.boundHandleTouchMove_),this.pointerdownListenerKey_&&(k(this.pointerdownListenerKey_),this.pointerdownListenerKey_=null),this.dragListenerKeys_.forEach(k),this.dragListenerKeys_.length=0,this.element_=null,super.disposeInternal()}}var zs="postrender",Xs="movestart",Vs="moveend",$s="loadstart",Ws="loadend",Zs="layergroup",Ys="size",Hs="target",Ks="view";const qs=1/0;class Js{constructor(t,e){this.priorityFunction_=t,this.keyFunction_=e,this.elements_=[],this.priorities_=[],this.queuedElements_={}}clear(){this.elements_.length=0,this.priorities_.length=0,L(this.queuedElements_)}dequeue(){const t=this.elements_,e=this.priorities_,i=t[0];1==t.length?(t.length=0,e.length=0):(t[0]=t.pop(),e[0]=e.pop(),this.siftUp_(0));const n=this.keyFunction_(i);return delete this.queuedElements_[n],i}enqueue(t){Ft(!(this.keyFunction_(t)in this.queuedElements_),"Tried to enqueue an `element` that was already added to the queue");const e=this.priorityFunction_(t);return e!=qs&&(this.elements_.push(t),this.priorities_.push(e),this.queuedElements_[this.keyFunction_(t)]=!0,this.siftDown_(0,this.elements_.length-1),!0)}getCount(){return this.elements_.length}getLeftChildIndex_(t){return 2*t+1}getRightChildIndex_(t){return 2*t+2}getParentIndex_(t){return t-1>>1}heapify_(){let t;for(t=(this.elements_.length>>1)-1;t>=0;t--)this.siftUp_(t)}isEmpty(){return 0===this.elements_.length}isKeyQueued(t){return t in this.queuedElements_}isQueued(t){return this.isKeyQueued(this.keyFunction_(t))}siftUp_(t){const e=this.elements_,i=this.priorities_,n=e.length,r=e[t],s=i[t],o=t;for(;t<n>>1;){const r=this.getLeftChildIndex_(t),s=this.getRightChildIndex_(t),o=s<n&&i[s]<i[r]?s:r;e[t]=e[o],i[t]=i[o],t=o}e[t]=r,i[t]=s,this.siftDown_(o,t)}siftDown_(t,e){const i=this.elements_,n=this.priorities_,r=i[e],s=n[e];for(;e>t;){const t=this.getParentIndex_(e);if(!(n[t]>s))break;i[e]=i[t],n[e]=n[t],e=t}i[e]=r,n[e]=s}reprioritize(){const t=this.priorityFunction_,e=this.elements_,i=this.priorities_;let n=0;const r=e.length;let s,o,a;for(o=0;o<r;++o)s=e[o],a=t(s),a==qs?delete this.queuedElements_[this.keyFunction_(s)]:(i[n]=a,e[n++]=s);e.length=n,i.length=n,this.heapify_()}}class Qs extends Js{constructor(t,e){super((e=>t.apply(null,e)),(t=>t[0].getKey())),this.boundHandleTileChange_=this.handleTileChange.bind(this),this.tileChangeCallback_=e,this.tilesLoading_=0,this.tilesLoadingKeys_={}}enqueue(t){const e=super.enqueue(t);if(e){t[0].addEventListener(n,this.boundHandleTileChange_)}return e}getTilesLoading(){return this.tilesLoading_}handleTileChange(t){const e=t.target,i=e.getState();if(i===K||i===q||i===J){i!==q&&e.removeEventListener(n,this.boundHandleTileChange_);const t=e.getKey();t in this.tilesLoadingKeys_&&(delete this.tilesLoadingKeys_[t],--this.tilesLoading_),this.tileChangeCallback_()}}loadMoreTiles(t,e){let i=0;for(;this.tilesLoading_<t&&i<e&&this.getCount()>0;){const t=this.dequeue()[0],e=t.getKey();t.getState()!==Y||e in this.tilesLoadingKeys_||(this.tilesLoadingKeys_[e]=!0,++this.tilesLoading_,++i,t.load())}}}function to(t,e,i,n,r){if(!t||!(i in t.wantedTiles))return qs;if(!t.wantedTiles[i][e.getKey()])return qs;const s=t.viewState.center,o=n[0]-s[0],a=n[1]-s[1];return 65536*Math.log(r)+Math.sqrt(o*o+a*a)/r}var eo=0,io=1,no={CENTER:"center",RESOLUTION:"resolution",ROTATION:"rotation"};function ro(t,e,i){return function(n,r,s,o,a){if(!n)return;if(!r&&!e)return n;const l=e?0:s[0]*r,h=e?0:s[1]*r,c=a?a[0]:0,u=a?a[1]:0;let d=t[0]+l/2+c,g=t[2]-l/2+c,f=t[1]+h/2+u,p=t[3]-h/2+u;d>g&&(d=(g+d)/2,g=d),f>p&&(f=(p+f)/2,p=f);let m=we(n[0],d,g),_=we(n[1],f,p);if(o&&i&&r){const t=30*r;m+=-t*Math.log(1+Math.max(0,d-n[0])/t)+t*Math.log(1+Math.max(0,n[0]-g)/t),_+=-t*Math.log(1+Math.max(0,f-n[1])/t)+t*Math.log(1+Math.max(0,n[1]-p)/t)}return[m,_]}}function so(t){return t}function oo(t,e,i,n){const r=fe(e)/i[0],s=ce(e)/i[1];return n?Math.min(t,Math.max(r,s)):Math.min(t,Math.min(r,s))}function ao(t,e,i){let n=Math.min(t,e);return n*=Math.log(1+50*Math.max(0,t/e-1))/50+1,i&&(n=Math.max(n,i),n/=Math.log(1+50*Math.max(0,i/t-1))/50+1),we(n,i/2,2*e)}function lo(t,e,i,n){return e=void 0===e||e,function(r,s,o,a){if(void 0!==r){const l=t[0],h=t[t.length-1],c=i?oo(l,i,o,n):l;if(a)return e?ao(r,c,h):we(r,h,c);const u=Math.min(c,r),d=Math.floor(v(t,u,s));return t[d]>c&&d<t.length-1?t[d+1]:t[d]}}}function ho(t,e,i,n,r,s){return n=void 0===n||n,i=void 0!==i?i:0,function(o,a,l,h){if(void 0!==o){const c=r?oo(e,r,l,s):e;if(h)return n?ao(o,c,i):we(o,i,c);const u=1e-9,d=Math.ceil(Math.log(e/c)/Math.log(t)-u),g=-a*(.5-u)+.5,f=Math.min(c,o),p=Math.floor(Math.log(e/f)/Math.log(t)+g),m=Math.max(d,p);return we(e/Math.pow(t,m),i,c)}}}function co(t,e,i,n,r){return i=void 0===i||i,function(s,o,a,l){if(void 0!==s){const o=n?oo(t,n,a,r):t;return i&&l?ao(s,o,e):we(s,e,o)}}}function uo(t){if(void 0!==t)return 0}function go(t){if(void 0!==t)return t}function fo(t){const e=2*Math.PI/t;return function(t,i){return i?t:void 0!==t?t=Math.floor(t/e+.5)*e:void 0}}function po(t){const e=void 0===t?Pe(5):t;return function(t,i){return i||void 0===t?t:Math.abs(t)<=e?0:t}}const mo=42,_o=256;class yo extends V{constructor(t){super(),this.on,this.once,this.un,t=Object.assign({},t),this.hints_=[0,0],this.animations_=[],this.updateAnimationKey_,this.projection_=Tn(t.projection,"EPSG:3857"),this.viewportSize_=[100,100],this.targetCenter_=null,this.targetResolution_,this.targetRotation_,this.nextCenter_=null,this.nextResolution_,this.nextRotation_,this.cancelAnchor_=void 0,t.projection&&pn(),t.center&&(t.center=Gn(t.center,this.projection_)),t.extent&&(t.extent=Un(t.extent,this.projection_)),this.applyOptions_(t)}applyOptions_(t){const e=Object.assign({},t);for(const t in no)delete e[t];this.setProperties(e,!0);const i=Eo(t);this.maxResolution_=i.maxResolution,this.minResolution_=i.minResolution,this.zoomFactor_=i.zoomFactor,this.resolutions_=t.resolutions,this.padding_=t.padding,this.minZoom_=i.minZoom;const n=vo(t),r=i.constraint,s=So(t);this.constraints_={center:n,resolution:r,rotation:s},this.setRotation(void 0!==t.rotation?t.rotation:0),this.setCenterInternal(void 0!==t.center?t.center:null),void 0!==t.resolution?this.setResolution(t.resolution):void 0!==t.zoom&&this.setZoom(t.zoom)}get padding(){return this.padding_}set padding(t){let e=this.padding_;this.padding_=t;const i=this.getCenterInternal();if(i){const n=t||[0,0,0,0];e=e||[0,0,0,0];const r=this.getResolution(),s=r/2*(n[3]-e[3]+e[1]-n[1]),o=r/2*(n[0]-e[0]+e[2]-n[2]);this.setCenterInternal([i[0]+s,i[1]-o])}}getUpdatedOptions_(t){const e=this.getProperties();return void 0!==e.resolution?e.resolution=this.getResolution():e.zoom=this.getZoom(),e.center=this.getCenterInternal(),e.rotation=this.getRotation(),Object.assign({},e,t)}animate(t){this.isDef()&&!this.getAnimating()&&this.resolveConstraints(0);const e=new Array(arguments.length);for(let t=0;t<e.length;++t){let i=arguments[t];i.center&&(i=Object.assign({},i),i.center=Gn(i.center,this.getProjection())),i.anchor&&(i=Object.assign({},i),i.anchor=Gn(i.anchor,this.getProjection())),e[t]=i}this.animateInternal.apply(this,e)}animateInternal(t){let e,i=arguments.length;i>1&&"function"==typeof arguments[i-1]&&(e=arguments[i-1],--i);let n=0;for(;n<i&&!this.isDef();++n){const t=arguments[n];t.center&&this.setCenterInternal(t.center),void 0!==t.zoom?this.setZoom(t.zoom):t.resolution&&this.setResolution(t.resolution),void 0!==t.rotation&&this.setRotation(t.rotation)}if(n===i)return void(e&&xo(e,!0));let r=Date.now(),s=this.targetCenter_.slice(),o=this.targetResolution_,a=this.targetRotation_;const l=[];for(;n<i;++n){const t=arguments[n],i={start:r,complete:!1,anchor:t.anchor,duration:void 0!==t.duration?t.duration:1e3,easing:t.easing||et,callback:e};if(t.center&&(i.sourceCenter=s,i.targetCenter=t.center.slice(),s=i.targetCenter),void 0!==t.zoom?(i.sourceResolution=o,i.targetResolution=this.getResolutionForZoom(t.zoom),o=i.targetResolution):t.resolution&&(i.sourceResolution=o,i.targetResolution=t.resolution,o=i.targetResolution),void 0!==t.rotation){i.sourceRotation=a;const e=Ie(t.rotation-a+Math.PI,2*Math.PI)-Math.PI;i.targetRotation=a+e,a=i.targetRotation}wo(i)?i.complete=!0:r+=i.duration,l.push(i)}this.animations_.push(l),this.setHint(eo,1),this.updateAnimations_()}getAnimating(){return this.hints_[eo]>0}getInteracting(){return this.hints_[io]>0}cancelAnimations(){let t;this.setHint(eo,-this.hints_[eo]);for(let e=0,i=this.animations_.length;e<i;++e){const i=this.animations_[e];if(i[0].callback&&xo(i[0].callback,!1),!t)for(let e=0,n=i.length;e<n;++e){const n=i[e];if(!n.complete){t=n.anchor;break}}}this.animations_.length=0,this.cancelAnchor_=t,this.nextCenter_=null,this.nextResolution_=NaN,this.nextRotation_=NaN}updateAnimations_(){if(void 0!==this.updateAnimationKey_&&(cancelAnimationFrame(this.updateAnimationKey_),this.updateAnimationKey_=void 0),!this.getAnimating())return;const t=Date.now();let e=!1;for(let i=this.animations_.length-1;i>=0;--i){const n=this.animations_[i];let r=!0;for(let i=0,s=n.length;i<s;++i){const s=n[i];if(s.complete)continue;const o=t-s.start;let a=s.duration>0?o/s.duration:1;a>=1?(s.complete=!0,a=1):r=!1;const l=s.easing(a);if(s.sourceCenter){const t=s.sourceCenter[0],e=s.sourceCenter[1],i=s.targetCenter[0],n=s.targetCenter[1];this.nextCenter_=s.targetCenter;const r=t+l*(i-t),o=e+l*(n-e);this.targetCenter_=[r,o]}if(s.sourceResolution&&s.targetResolution){const t=1===l?s.targetResolution:s.sourceResolution+l*(s.targetResolution-s.sourceResolution);if(s.anchor){const e=this.getViewportSize_(this.getRotation()),i=this.constraints_.resolution(t,0,e,!0);this.targetCenter_=this.calculateCenterZoom(i,s.anchor)}this.nextResolution_=s.targetResolution,this.targetResolution_=t,this.applyTargetState_(!0)}if(void 0!==s.sourceRotation&&void 0!==s.targetRotation){const t=1===l?Ie(s.targetRotation+Math.PI,2*Math.PI)-Math.PI:s.sourceRotation+l*(s.targetRotation-s.sourceRotation);if(s.anchor){const e=this.constraints_.rotation(t,!0);this.targetCenter_=this.calculateCenterRotate(e,s.anchor)}this.nextRotation_=s.targetRotation,this.targetRotation_=t}if(this.applyTargetState_(!0),e=!0,!s.complete)break}if(r){this.animations_[i]=null,this.setHint(eo,-1),this.nextCenter_=null,this.nextResolution_=NaN,this.nextRotation_=NaN;const t=n[0].callback;t&&xo(t,!0)}}this.animations_=this.animations_.filter(Boolean),e&&void 0===this.updateAnimationKey_&&(this.updateAnimationKey_=requestAnimationFrame(this.updateAnimations_.bind(this)))}calculateCenterRotate(t,e){let i;const n=this.getCenterInternal();return void 0!==n&&(i=[n[0]-e[0],n[1]-e[1]],Qe(i,t-this.getRotation()),Ze(i,e)),i}calculateCenterZoom(t,e){let i;const n=this.getCenterInternal(),r=this.getResolution();if(void 0!==n&&void 0!==r){i=[e[0]-t*(e[0]-n[0])/r,e[1]-t*(e[1]-n[1])/r]}return i}getViewportSize_(t){const e=this.viewportSize_;if(t){const i=e[0],n=e[1];return[Math.abs(i*Math.cos(t))+Math.abs(n*Math.sin(t)),Math.abs(i*Math.sin(t))+Math.abs(n*Math.cos(t))]}return e}setViewportSize(t){this.viewportSize_=Array.isArray(t)?t.slice():[100,100],this.getAnimating()||this.resolveConstraints(0)}getCenter(){const t=this.getCenterInternal();return t?kn(t,this.getProjection()):t}getCenterInternal(){return this.get(no.CENTER)}getConstraints(){return this.constraints_}getConstrainResolution(){return this.get("constrainResolution")}getHints(t){return void 0!==t?(t[0]=this.hints_[0],t[1]=this.hints_[1],t):this.hints_.slice()}calculateExtent(t){return jn(this.calculateExtentInternal(t),this.getProjection())}calculateExtentInternal(t){t=t||this.getViewportSizeMinusPadding_();const e=this.getCenterInternal();Ft(e,"The view center is not defined");const i=this.getResolution();Ft(void 0!==i,"The view resolution is not defined");const n=this.getRotation();return Ft(void 0!==n,"The view rotation is not defined"),le(e,i,n,t)}getMaxResolution(){return this.maxResolution_}getMinResolution(){return this.minResolution_}getMaxZoom(){return this.getZoomForResolution(this.minResolution_)}setMaxZoom(t){this.applyOptions_(this.getUpdatedOptions_({maxZoom:t}))}getMinZoom(){return this.getZoomForResolution(this.maxResolution_)}setMinZoom(t){this.applyOptions_(this.getUpdatedOptions_({minZoom:t}))}setConstrainResolution(t){this.applyOptions_(this.getUpdatedOptions_({constrainResolution:t}))}getProjection(){return this.projection_}getResolution(){return this.get(no.RESOLUTION)}getResolutions(){return this.resolutions_}getResolutionForExtent(t,e){return this.getResolutionForExtentInternal(Un(t,this.getProjection()),e)}getResolutionForExtentInternal(t,e){e=e||this.getViewportSizeMinusPadding_();const i=fe(t)/e[0],n=ce(t)/e[1];return Math.max(i,n)}getResolutionForValueFunction(t){t=t||2;const e=this.getConstrainedResolution(this.maxResolution_),i=this.minResolution_,n=Math.log(e/i)/Math.log(t);return function(i){return e/Math.pow(t,i*n)}}getRotation(){return this.get(no.ROTATION)}getValueForResolutionFunction(t){const e=Math.log(t||2),i=this.getConstrainedResolution(this.maxResolution_),n=this.minResolution_,r=Math.log(i/n)/e;return function(t){return Math.log(i/t)/e/r}}getViewportSizeMinusPadding_(t){let e=this.getViewportSize_(t);const i=this.padding_;return i&&(e=[e[0]-i[1]-i[3],e[1]-i[0]-i[2]]),e}getState(){const t=this.getProjection(),e=this.getResolution(),i=this.getRotation();let n=this.getCenterInternal();const r=this.padding_;if(r){const t=this.getViewportSizeMinusPadding_();n=To(n,this.getViewportSize_(),[t[0]/2+r[3],t[1]/2+r[0]],e,i)}return{center:n.slice(0),projection:void 0!==t?t:null,resolution:e,nextCenter:this.nextCenter_,nextResolution:this.nextResolution_,nextRotation:this.nextRotation_,rotation:i,zoom:this.getZoom()}}getViewStateAndExtent(){return{viewState:this.getState(),extent:this.calculateExtent()}}getZoom(){let t;const e=this.getResolution();return void 0!==e&&(t=this.getZoomForResolution(e)),t}getZoomForResolution(t){let e,i,n=this.minZoom_||0;if(this.resolutions_){const r=v(this.resolutions_,t,1);n=r,e=this.resolutions_[r],i=r==this.resolutions_.length-1?2:e/this.resolutions_[r+1]}else e=this.maxResolution_,i=this.zoomFactor_;return n+Math.log(e/t)/Math.log(i)}getResolutionForZoom(t){if(this.resolutions_?.length){if(1===this.resolutions_.length)return this.resolutions_[0];const e=we(Math.floor(t),0,this.resolutions_.length-2),i=this.resolutions_[e]/this.resolutions_[e+1];return this.resolutions_[e]/Math.pow(i,we(t-e,0,1))}return this.maxResolution_/Math.pow(this.zoomFactor_,t-this.minZoom_)}fit(t,e){let i;if(Ft(Array.isArray(t)||"function"==typeof t.getSimplifiedGeometry,"Invalid extent or geometry provided as `geometry`"),Array.isArray(t)){Ft(!me(t),"Cannot fit empty extent provided as `geometry`");i=cs(Un(t,this.getProjection()))}else if("Circle"===t.getType()){const e=Un(t.getExtent(),this.getProjection());i=cs(e),i.rotate(this.getRotation(),oe(e))}else{const e=Nn();i=e?t.clone().transform(e,this.getProjection()):t}this.fitInternal(i,e)}rotatedExtentForGeometry(t){const e=this.getRotation(),i=Math.cos(e),n=Math.sin(-e),r=t.getFlatCoordinates(),s=t.getStride();let o=1/0,a=1/0,l=-1/0,h=-1/0;for(let t=0,e=r.length;t<e;t+=s){const e=r[t]*i-r[t+1]*n,s=r[t]*n+r[t+1]*i;o=Math.min(o,e),a=Math.min(a,s),l=Math.max(l,e),h=Math.max(h,s)}return[o,a,l,h]}fitInternal(t,e){let i=(e=e||{}).size;i||(i=this.getViewportSizeMinusPadding_());const n=void 0!==e.padding?e.padding:[0,0,0,0],r=void 0!==e.nearest&&e.nearest;let s;s=void 0!==e.minResolution?e.minResolution:void 0!==e.maxZoom?this.getResolutionForZoom(e.maxZoom):0;const o=this.rotatedExtentForGeometry(t);let a=this.getResolutionForExtentInternal(o,[i[0]-n[1]-n[3],i[1]-n[0]-n[2]]);a=isNaN(a)?s:Math.max(a,s),a=this.getConstrainedResolution(a,r?0:1);const l=this.getRotation(),h=Math.sin(l),c=Math.cos(l),u=oe(o);u[0]+=(n[1]-n[3])/2*a,u[1]+=(n[0]-n[2])/2*a;const d=u[0]*c-u[1]*h,g=u[1]*c+u[0]*h,f=this.getConstrainedCenter([d,g],a),p=e.callback?e.callback:b;void 0!==e.duration?this.animateInternal({resolution:a,center:f,duration:e.duration,easing:e.easing},p):(this.targetResolution_=a,this.targetCenter_=f,this.applyTargetState_(!1,!0),xo(p,!0))}centerOn(t,e,i){this.centerOnInternal(Gn(t,this.getProjection()),e,i)}centerOnInternal(t,e,i){this.setCenterInternal(To(t,e,i,this.getResolution(),this.getRotation()))}calculateCenterShift(t,e,i,n){let r;const s=this.padding_;if(s&&t){const o=this.getViewportSizeMinusPadding_(-i),a=To(t,n,[o[0]/2+s[3],o[1]/2+s[0]],e,i);r=[t[0]-a[0],t[1]-a[1]]}return r}isDef(){return!!this.getCenterInternal()&&void 0!==this.getResolution()}adjustCenter(t){const e=kn(this.targetCenter_,this.getProjection());this.setCenter([e[0]+t[0],e[1]+t[1]])}adjustCenterInternal(t){const e=this.targetCenter_;this.setCenterInternal([e[0]+t[0],e[1]+t[1]])}adjustResolution(t,e){e=e&&Gn(e,this.getProjection()),this.adjustResolutionInternal(t,e)}adjustResolutionInternal(t,e){const i=this.getAnimating()||this.getInteracting(),n=this.getViewportSize_(this.getRotation()),r=this.constraints_.resolution(this.targetResolution_*t,0,n,i);e&&(this.targetCenter_=this.calculateCenterZoom(r,e)),this.targetResolution_*=t,this.applyTargetState_()}adjustZoom(t,e){this.adjustResolution(Math.pow(this.zoomFactor_,-t),e)}adjustRotation(t,e){e&&(e=Gn(e,this.getProjection())),this.adjustRotationInternal(t,e)}adjustRotationInternal(t,e){const i=this.getAnimating()||this.getInteracting(),n=this.constraints_.rotation(this.targetRotation_+t,i);e&&(this.targetCenter_=this.calculateCenterRotate(n,e)),this.targetRotation_+=t,this.applyTargetState_()}setCenter(t){this.setCenterInternal(t?Gn(t,this.getProjection()):t)}setCenterInternal(t){this.targetCenter_=t,this.applyTargetState_()}setHint(t,e){return this.hints_[t]+=e,this.changed(),this.hints_[t]}setResolution(t){this.targetResolution_=t,this.applyTargetState_()}setRotation(t){this.targetRotation_=t,this.applyTargetState_()}setZoom(t){this.setResolution(this.getResolutionForZoom(t))}applyTargetState_(t,e){const i=this.getAnimating()||this.getInteracting()||e,n=this.constraints_.rotation(this.targetRotation_,i),r=this.getViewportSize_(n),s=this.constraints_.resolution(this.targetResolution_,0,r,i),o=this.constraints_.center(this.targetCenter_,s,r,i,this.calculateCenterShift(this.targetCenter_,s,n,r));this.get(no.ROTATION)!==n&&this.set(no.ROTATION,n),this.get(no.RESOLUTION)!==s&&(this.set(no.RESOLUTION,s),this.set("zoom",this.getZoom(),!0)),o&&this.get(no.CENTER)&&Je(this.get(no.CENTER),o)||this.set(no.CENTER,o),this.getAnimating()&&!t&&this.cancelAnimations(),this.cancelAnchor_=void 0}resolveConstraints(t,e,i){t=void 0!==t?t:200;const n=e||0,r=this.constraints_.rotation(this.targetRotation_),s=this.getViewportSize_(r),o=this.constraints_.resolution(this.targetResolution_,n,s),a=this.constraints_.center(this.targetCenter_,o,s,!1,this.calculateCenterShift(this.targetCenter_,o,r,s));if(0===t&&!this.cancelAnchor_)return this.targetResolution_=o,this.targetRotation_=r,this.targetCenter_=a,void this.applyTargetState_();i=i||(0===t?this.cancelAnchor_:void 0),this.cancelAnchor_=void 0,this.getResolution()===o&&this.getRotation()===r&&this.getCenterInternal()&&Je(this.getCenterInternal(),a)||(this.getAnimating()&&this.cancelAnimations(),this.animateInternal({rotation:r,center:a,resolution:o,duration:t,easing:tt,anchor:i}))}beginInteraction(){this.resolveConstraints(0),this.setHint(io,1)}endInteraction(t,e,i){i=i&&Gn(i,this.getProjection()),this.endInteractionInternal(t,e,i)}endInteractionInternal(t,e,i){this.getInteracting()&&(this.setHint(io,-1),this.resolveConstraints(t,e,i))}getConstrainedCenter(t,e){const i=this.getViewportSize_(this.getRotation());return this.constraints_.center(t,e||this.getResolution(),i)}getConstrainedZoom(t,e){const i=this.getResolutionForZoom(t);return this.getZoomForResolution(this.getConstrainedResolution(i,e))}getConstrainedResolution(t,e){e=e||0;const i=this.getViewportSize_(this.getRotation());return this.constraints_.resolution(t,e,i)}}function xo(t,e){setTimeout((function(){t(e)}),0)}function vo(t){if(void 0!==t.extent){const e=void 0===t.smoothExtentConstraint||t.smoothExtentConstraint;return ro(t.extent,t.constrainOnlyCenter,e)}const e=Tn(t.projection,"EPSG:3857");if(!0!==t.multiWorld&&e.isGlobal()){const t=e.getExtent().slice();return t[0]=-1/0,t[2]=1/0,ro(t,!1,!1)}return so}function Eo(t){let e,i,n;let r=void 0!==t.minZoom?t.minZoom:0,s=void 0!==t.maxZoom?t.maxZoom:28;const o=void 0!==t.zoomFactor?t.zoomFactor:2,a=void 0!==t.multiWorld&&t.multiWorld,l=void 0===t.smoothResolutionConstraint||t.smoothResolutionConstraint,h=void 0!==t.showFullExtent&&t.showFullExtent,c=Tn(t.projection,"EPSG:3857"),u=c.getExtent();let d=t.constrainOnlyCenter,g=t.extent;if(a||g||!c.isGlobal()||(d=!1,g=u),void 0!==t.resolutions){const o=t.resolutions;i=o[r],n=void 0!==o[s]?o[s]:o[o.length-1],e=t.constrainResolution?lo(o,l,!d&&g,h):co(i,n,l,!d&&g,h)}else{const a=(u?Math.max(fe(u),ce(u)):360*hi.degrees/c.getMetersPerUnit())/_o/Math.pow(2,0),f=a/Math.pow(2,28);i=t.maxResolution,void 0!==i?r=0:i=a/Math.pow(o,r),n=t.minResolution,void 0===n&&(n=void 0!==t.maxZoom?void 0!==t.maxResolution?i/Math.pow(o,s):a/Math.pow(o,s):f),s=r+Math.floor(Math.log(i/n)/Math.log(o)),n=i/Math.pow(o,s-r),e=t.constrainResolution?ho(o,i,n,l,!d&&g,h):co(i,n,l,!d&&g,h)}return{constraint:e,maxResolution:i,minResolution:n,minZoom:r,zoomFactor:o}}function So(t){if(void 0===t.enableRotation||t.enableRotation){const e=t.constrainRotation;return void 0===e||!0===e?po():!1===e?go:"number"==typeof e?fo(e):go}return uo}function wo(t){return!(t.sourceCenter&&t.targetCenter&&!Je(t.sourceCenter,t.targetCenter))&&(t.sourceResolution===t.targetResolution&&t.sourceRotation===t.targetRotation)}function To(t,e,i,n,r){const s=Math.cos(-r);let o=Math.sin(-r),a=t[0]*s-t[1]*o,l=t[1]*s+t[0]*o;a+=(e[0]/2-i[0])*n,l+=(i[1]-e[1]/2)*n,o=-o;return[a*s-l*o,l*s+a*o]}const Co="ol-hidden",Ro="ol-selectable",bo="ol-unselectable",Po="ol-unsupported",Io="ol-control",Lo="ol-collapsed",Fo=new RegExp(["^\\s*(?=(?:(?:[-a-z]+\\s*){0,2}(italic|oblique))?)","(?=(?:(?:[-a-z]+\\s*){0,2}(small-caps))?)","(?=(?:(?:[-a-z]+\\s*){0,2}(bold(?:er)?|lighter|[1-9]00 ))?)","(?:(?:normal|\\1|\\2|\\3)\\s*){0,3}((?:xx?-)?","(?:small|large)|medium|smaller|larger|[\\.\\d]+(?:\\%|in|[cem]m|ex|p[ctx]))","(?:\\s*\\/\\s*(normal|[\\.\\d]+(?:\\%|in|[cem]m|ex|p[ctx])?))","?\\s*([-,\\\"\\'\\sa-z]+?)\\s*$"].join(""),"i"),Mo=["style","variant","weight","size","lineHeight","family"],Ao=function(t){const e=t.match(Fo);if(!e)return null;const i={lineHeight:"normal",size:"1.2em",style:"normal",weight:"normal",variant:"normal"};for(let t=0,n=Mo.length;t<n;++t){const n=e[t+1];void 0!==n&&(i[Mo[t]]=n)}return i.families=i.family.split(/,\s?/),i};class Oo extends V{constructor(t){super();const e=t.element;!e||t.target||e.style.pointerEvents||(e.style.pointerEvents="auto"),this.element=e||null,this.target_=null,this.map_=null,this.listenerKeys=[],t.render&&(this.render=t.render),t.target&&this.setTarget(t.target)}disposeInternal(){this.element?.remove(),super.disposeInternal()}getMap(){return this.map_}setMap(t){this.map_&&this.element?.remove();for(let t=0,e=this.listenerKeys.length;t<e;++t)k(this.listenerKeys[t]);if(this.listenerKeys.length=0,this.map_=t,t){const e=this.target_??t.getOverlayContainerStopEvent();this.element&&e.appendChild(this.element),this.render!==b&&this.listenerKeys.push(D(t,zs,this.render,this)),t.render()}}render(t){}setTarget(t){this.target_="string"==typeof t?document.getElementById(t):t}}class Do extends Oo{constructor(t){t=t||{},super({element:document.createElement("div"),render:t.render,target:t.target}),this.ulElement_=document.createElement("ul"),this.collapsed_=void 0===t.collapsed||t.collapsed,this.userCollapsed_=this.collapsed_,this.overrideCollapsible_=void 0!==t.collapsible,this.collapsible_=void 0===t.collapsible||t.collapsible,this.collapsible_||(this.collapsed_=!1),this.attributions_=t.attributions;const e=void 0!==t.className?t.className:"ol-attribution",i=void 0!==t.tipLabel?t.tipLabel:"Attributions",n=void 0!==t.expandClassName?t.expandClassName:e+"-expand",r=void 0!==t.collapseLabel?t.collapseLabel:"›",s=void 0!==t.collapseClassName?t.collapseClassName:e+"-collapse";"string"==typeof r?(this.collapseLabel_=document.createElement("span"),this.collapseLabel_.textContent=r,this.collapseLabel_.className=s):this.collapseLabel_=r;const a=void 0!==t.label?t.label:"i";"string"==typeof a?(this.label_=document.createElement("span"),this.label_.textContent=a,this.label_.className=n):this.label_=a;const l=this.collapsible_&&!this.collapsed_?this.collapseLabel_:this.label_;this.toggleButton_=document.createElement("button"),this.toggleButton_.setAttribute("type","button"),this.toggleButton_.setAttribute("aria-expanded",String(!this.collapsed_)),this.toggleButton_.title=i,this.toggleButton_.appendChild(l),this.toggleButton_.addEventListener(o,this.handleClick_.bind(this),!1);const h=e+" "+bo+" "+Io+(this.collapsed_&&this.collapsible_?" "+Lo:"")+(this.collapsible_?"":" ol-uncollapsible"),c=this.element;c.className=h,c.appendChild(this.toggleButton_),c.appendChild(this.ulElement_),this.renderedAttributions_=[],this.renderedVisible_=!0}collectSourceAttributions_(t){const e=this.getMap().getAllLayers(),i=new Set(e.flatMap((e=>e.getAttributions(t))));if(void 0!==this.attributions_&&(Array.isArray(this.attributions_)?this.attributions_.forEach((t=>i.add(t))):i.add(this.attributions_)),!this.overrideCollapsible_){const t=!e.some((t=>!1===t.getSource()?.getAttributionsCollapsible()));this.setCollapsible(t)}return Array.from(i)}async updateElement_(t){if(!t)return void(this.renderedVisible_&&(this.element.style.display="none",this.renderedVisible_=!1));const e=await Promise.all(this.collectSourceAttributions_(t).map((t=>I((()=>t))))),i=e.length>0;if(this.renderedVisible_!=i&&(this.element.style.display=i?"":"none",this.renderedVisible_=i),!w(e,this.renderedAttributions_)){St(this.ulElement_);for(let t=0,i=e.length;t<i;++t){const i=document.createElement("li");i.innerHTML=e[t],this.ulElement_.appendChild(i)}this.renderedAttributions_=e}}handleClick_(t){t.preventDefault(),this.handleToggle_(),this.userCollapsed_=this.collapsed_}handleToggle_(){this.element.classList.toggle(Lo),this.collapsed_?Et(this.collapseLabel_,this.label_):Et(this.label_,this.collapseLabel_),this.collapsed_=!this.collapsed_,this.toggleButton_.setAttribute("aria-expanded",String(!this.collapsed_))}getCollapsible(){return this.collapsible_}setCollapsible(t){this.collapsible_!==t&&(this.collapsible_=t,this.element.classList.toggle("ol-uncollapsible"),this.userCollapsed_&&this.handleToggle_())}setCollapsed(t){this.userCollapsed_=t,this.collapsible_&&this.collapsed_!==t&&this.handleToggle_()}getCollapsed(){return this.collapsed_}render(t){this.updateElement_(t.frameState)}}class No extends Oo{constructor(t){t=t||{},super({element:document.createElement("div"),render:t.render,target:t.target});const e=void 0!==t.className?t.className:"ol-rotate",i=void 0!==t.label?t.label:"⇧",n=void 0!==t.compassClassName?t.compassClassName:"ol-compass";this.label_=null,"string"==typeof i?(this.label_=document.createElement("span"),this.label_.className=n,this.label_.textContent=i):(this.label_=i,this.label_.classList.add(n));const r=t.tipLabel?t.tipLabel:"Reset rotation",s=document.createElement("button");s.className=e+"-reset",s.setAttribute("type","button"),s.title=r,s.appendChild(this.label_),s.addEventListener(o,this.handleClick_.bind(this),!1);const a=e+" "+bo+" "+Io,l=this.element;l.className=a,l.appendChild(s),this.callResetNorth_=t.resetNorth?t.resetNorth:void 0,this.duration_=void 0!==t.duration?t.duration:250,this.autoHide_=void 0===t.autoHide||t.autoHide,this.rotation_=void 0,this.autoHide_&&this.element.classList.add(Co)}handleClick_(t){t.preventDefault(),void 0!==this.callResetNorth_?this.callResetNorth_():this.resetNorth_()}resetNorth_(){const t=this.getMap().getView();if(!t)return;const e=t.getRotation();void 0!==e&&(this.duration_>0&&e%(2*Math.PI)!=0?t.animate({rotation:0,duration:this.duration_,easing:tt}):t.setRotation(0))}render(t){const e=t.frameState;if(!e)return;const i=e.viewState.rotation;if(i!=this.rotation_){const t="rotate("+i+"rad)";if(this.autoHide_){const t=this.element.classList.contains(Co);t||0!==i?t&&0!==i&&this.element.classList.remove(Co):this.element.classList.add(Co)}this.label_.style.transform=t}this.rotation_=i}}class ko extends Oo{constructor(t){t=t||{},super({element:document.createElement("div"),target:t.target});const e=void 0!==t.className?t.className:"ol-zoom",i=void 0!==t.delta?t.delta:1,n=void 0!==t.zoomInClassName?t.zoomInClassName:e+"-in",r=void 0!==t.zoomOutClassName?t.zoomOutClassName:e+"-out",s=void 0!==t.zoomInLabel?t.zoomInLabel:"+",a=void 0!==t.zoomOutLabel?t.zoomOutLabel:"–",l=void 0!==t.zoomInTipLabel?t.zoomInTipLabel:"Zoom in",h=void 0!==t.zoomOutTipLabel?t.zoomOutTipLabel:"Zoom out",c=document.createElement("button");c.className=n,c.setAttribute("type","button"),c.title=l,c.appendChild("string"==typeof s?document.createTextNode(s):s),c.addEventListener(o,this.handleClick_.bind(this,i),!1);const u=document.createElement("button");u.className=r,u.setAttribute("type","button"),u.title=h,u.appendChild("string"==typeof a?document.createTextNode(a):a),u.addEventListener(o,this.handleClick_.bind(this,-i),!1);const d=e+" "+bo+" "+Io,g=this.element;g.className=d,g.appendChild(c),g.appendChild(u),this.duration_=void 0!==t.duration?t.duration:250}handleClick_(t,e){e.preventDefault(),this.zoomByDelta_(t)}zoomByDelta_(t){const e=this.getMap().getView();if(!e)return;const i=e.getZoom();if(void 0!==i){const n=e.getConstrainedZoom(i+t);this.duration_>0?(e.getAnimating()&&e.cancelAnimations(),e.animate({zoom:n,duration:this.duration_,easing:tt})):e.setZoom(n)}}}function Go(t){t=t||{};const e=new Z;(void 0===t.zoom||t.zoom)&&e.push(new ko(t.zoomOptions));(void 0===t.rotate||t.rotate)&&e.push(new No(t.rotateOptions));return(void 0===t.attribution||t.attribution)&&e.push(new Do(t.attributionOptions)),e}var jo="active";class Uo extends V{constructor(t){super(),this.on,this.once,this.un,t&&t.handleEvent&&(this.handleEvent=t.handleEvent),this.map_=null,this.setActive(!0)}getActive(){return this.get(jo)}getMap(){return this.map_}handleEvent(t){return!0}setActive(t){this.set(jo,t)}setMap(t){this.map_=t}}function Bo(t,e,i){const n=t.getCenterInternal();if(n){const r=[n[0]+e[0],n[1]+e[1]];t.animateInternal({duration:void 0!==i?i:250,easing:it,center:t.getConstrainedCenter(r)})}}function zo(t,e,i,n){const r=t.getZoom();if(void 0===r)return;const s=t.getConstrainedZoom(r+e),o=t.getResolutionForZoom(s);t.getAnimating()&&t.cancelAnimations(),t.animate({resolution:o,anchor:i,duration:void 0!==n?n:250,easing:tt})}class Xo extends Uo{constructor(t){super(),t=t||{},this.delta_=t.delta?t.delta:1,this.duration_=void 0!==t.duration?t.duration:250}handleEvent(t){let e=!1;if(t.type==Ns.DBLCLICK){const i=t.originalEvent,n=t.map,r=t.coordinate,s=i.shiftKey?-this.delta_:this.delta_;zo(n.getView(),s,r,this.duration_),i.preventDefault(),e=!0}return!e}}function Vo(t){const e=arguments;return function(t){let i=!0;for(let n=0,r=e.length;n<r&&(i=i&&e[n](t),i);++n);return i}}const $o=function(t){const e=t.originalEvent;return e.altKey&&!(e.metaKey||e.ctrlKey)&&!e.shiftKey},Wo=function(t){const e=t.originalEvent;return e.altKey&&!(e.metaKey||e.ctrlKey)&&e.shiftKey},Zo=function(t){const e=t.map.getTargetElement(),i=e.getRootNode(),n=t.map.getOwnerDocument().activeElement;return i instanceof ShadowRoot?i.host.contains(n):e.contains(n)},Yo=function(t){const e=t.map.getTargetElement(),i=e.getRootNode();return!(i instanceof ShadowRoot?i.host:e).hasAttribute("tabindex")||Zo(t)},Ho=C,Ko=function(t){const e=t.originalEvent;return 0==e.button&&!(lt&&ht&&e.ctrlKey)},qo=R,Jo=function(t){return t.type==Ns.SINGLECLICK},Qo=function(t){const e=t.originalEvent;return!e.altKey&&!(e.metaKey||e.ctrlKey)&&!e.shiftKey},ta=function(t){const e=t.originalEvent;return ht?e.metaKey:e.ctrlKey},ea=function(t){const e=t.originalEvent;return!e.altKey&&!(e.metaKey||e.ctrlKey)&&e.shiftKey},ia=function(t){const e=t.originalEvent,i=e.target.tagName;return"INPUT"!==i&&"SELECT"!==i&&"TEXTAREA"!==i&&!e.target.isContentEditable},na=function(t){const e=t.originalEvent;return Ft(void 0!==e,"mapBrowserEvent must originate from a pointer event"),"mouse"==e.pointerType},ra=function(t){const e=t.originalEvent;return Ft(void 0!==e,"mapBrowserEvent must originate from a pointer event"),e.isPrimary&&0===e.button};class sa extends Uo{constructor(t){super(t=t||{}),t.handleDownEvent&&(this.handleDownEvent=t.handleDownEvent),t.handleDragEvent&&(this.handleDragEvent=t.handleDragEvent),t.handleMoveEvent&&(this.handleMoveEvent=t.handleMoveEvent),t.handleUpEvent&&(this.handleUpEvent=t.handleUpEvent),t.stopDown&&(this.stopDown=t.stopDown),this.handlingDownUpSequence=!1,this.targetPointers=[]}getPointerCount(){return this.targetPointers.length}handleDownEvent(t){return!1}handleDragEvent(t){}handleEvent(t){if(!t.originalEvent)return!0;let e=!1;if(this.updateTrackedPointers_(t),this.handlingDownUpSequence){if(t.type==Ns.POINTERDRAG)this.handleDragEvent(t),t.originalEvent.preventDefault();else if(t.type==Ns.POINTERUP){const e=this.handleUpEvent(t);this.handlingDownUpSequence=e&&this.targetPointers.length>0}}else if(t.type==Ns.POINTERDOWN){const i=this.handleDownEvent(t);this.handlingDownUpSequence=i,e=this.stopDown(i)}else t.type==Ns.POINTERMOVE&&this.handleMoveEvent(t);return!e}handleMoveEvent(t){}handleUpEvent(t){return!1}stopDown(t){return t}updateTrackedPointers_(t){t.activePointers&&(this.targetPointers=t.activePointers)}}function oa(t){const e=t.length;let i=0,n=0;for(let r=0;r<e;r++)i+=t[r].clientX,n+=t[r].clientY;return{clientX:i/e,clientY:n/e}}class aa extends sa{constructor(t){super({stopDown:R}),t=t||{},this.kinetic_=t.kinetic,this.lastCentroid=null,this.lastPointersCount_,this.panning_=!1;const e=t.condition?t.condition:Vo(Qo,ra);this.condition_=t.onFocusOnly?Vo(Yo,e):e,this.noKinetic_=!1}handleDragEvent(t){const e=t.map;this.panning_||(this.panning_=!0,e.getView().beginInteraction());const i=this.targetPointers,n=e.getEventPixel(oa(i));if(i.length==this.lastPointersCount_){if(this.kinetic_&&this.kinetic_.update(n[0],n[1]),this.lastCentroid){const e=[this.lastCentroid[0]-n[0],n[1]-this.lastCentroid[1]],i=t.map.getView();ti(e,i.getResolution()),Qe(e,i.getRotation()),i.adjustCenterInternal(e)}}else this.kinetic_&&this.kinetic_.begin();this.lastCentroid=n,this.lastPointersCount_=i.length,t.originalEvent.preventDefault()}handleUpEvent(t){const e=t.map,i=e.getView();if(0===this.targetPointers.length){if(!this.noKinetic_&&this.kinetic_&&this.kinetic_.end()){const t=this.kinetic_.getDistance(),n=this.kinetic_.getAngle(),r=i.getCenterInternal(),s=e.getPixelFromCoordinateInternal(r),o=e.getCoordinateFromPixelInternal([s[0]-t*Math.cos(n),s[1]-t*Math.sin(n)]);i.animateInternal({center:i.getConstrainedCenter(o),duration:500,easing:tt})}return this.panning_&&(this.panning_=!1,i.endInteraction()),!1}return this.kinetic_&&this.kinetic_.begin(),this.lastCentroid=null,!0}handleDownEvent(t){if(this.targetPointers.length>0&&this.condition_(t)){const e=t.map.getView();return this.lastCentroid=null,e.getAnimating()&&e.cancelAnimations(),this.kinetic_&&this.kinetic_.begin(),this.noKinetic_=this.targetPointers.length>1,!0}return!1}}class la extends sa{constructor(t){t=t||{},super({stopDown:R}),this.condition_=t.condition?t.condition:Wo,this.lastAngle_=void 0,this.duration_=void 0!==t.duration?t.duration:250}handleDragEvent(t){if(!na(t))return;const e=t.map,i=e.getView();if(i.getConstraints().rotation===uo)return;const n=e.getSize(),r=t.pixel,s=Math.atan2(n[1]/2-r[1],r[0]-n[0]/2);if(void 0!==this.lastAngle_){const t=s-this.lastAngle_;i.adjustRotationInternal(-t)}this.lastAngle_=s}handleUpEvent(t){if(!na(t))return!0;return t.map.getView().endInteraction(this.duration_),!1}handleDownEvent(t){if(!na(t))return!1;if(Ko(t)&&this.condition_(t)){return t.map.getView().beginInteraction(),this.lastAngle_=void 0,!0}return!1}}class ha extends m{constructor(t){super(),this.geometry_=null,this.element_=document.createElement("div"),this.element_.style.position="absolute",this.element_.style.pointerEvents="auto",this.element_.className="ol-box "+t,this.map_=null,this.startPixel_=null,this.endPixel_=null}disposeInternal(){this.setMap(null)}render_(){const t=this.startPixel_,e=this.endPixel_,i="px",n=this.element_.style;n.left=Math.min(t[0],e[0])+i,n.top=Math.min(t[1],e[1])+i,n.width=Math.abs(e[0]-t[0])+i,n.height=Math.abs(e[1]-t[1])+i}setMap(t){if(this.map_){this.map_.getOverlayContainer().removeChild(this.element_);const t=this.element_.style;t.left="inherit",t.top="inherit",t.width="inherit",t.height="inherit"}this.map_=t,this.map_&&this.map_.getOverlayContainer().appendChild(this.element_)}setPixels(t,e){this.startPixel_=t,this.endPixel_=e,this.createOrUpdateGeometry(),this.render_()}createOrUpdateGeometry(){if(!this.map_)return;const t=this.startPixel_,e=this.endPixel_,i=[t,[t[0],e[1]],e,[e[0],t[1]]].map(this.map_.getCoordinateFromPixelInternal,this.map_);i[4]=i[0].slice(),this.geometry_?this.geometry_.setCoordinates([i]):this.geometry_=new ls([i])}getGeometry(){return this.geometry_}}const ca="boxstart",ua="boxdrag",da="boxend",ga="boxcancel";class fa extends M{constructor(t,e,i){super(t),this.coordinate=e,this.mapBrowserEvent=i}}class pa extends sa{constructor(t){super(),this.on,this.once,this.un,t=t??{},this.box_=new ha(t.className||"ol-dragbox"),this.minArea_=t.minArea??64,t.onBoxEnd&&(this.onBoxEnd=t.onBoxEnd),this.startPixel_=null,this.condition_=t.condition??Ko,this.boxEndCondition_=t.boxEndCondition??this.defaultBoxEndCondition}defaultBoxEndCondition(t,e,i){const n=i[0]-e[0],r=i[1]-e[1];return n*n+r*r>=this.minArea_}getGeometry(){return this.box_.getGeometry()}handleDragEvent(t){this.startPixel_&&(this.box_.setPixels(this.startPixel_,t.pixel),this.dispatchEvent(new fa(ua,t.coordinate,t)))}handleUpEvent(t){if(!this.startPixel_)return!1;const e=this.boxEndCondition_(t,this.startPixel_,t.pixel);return e&&this.onBoxEnd(t),this.dispatchEvent(new fa(e?da:ga,t.coordinate,t)),this.box_.setMap(null),this.startPixel_=null,!1}handleDownEvent(t){return!!this.condition_(t)&&(this.startPixel_=t.pixel,this.box_.setMap(t.map),this.box_.setPixels(this.startPixel_,this.startPixel_),this.dispatchEvent(new fa(ca,t.coordinate,t)),!0)}onBoxEnd(t){}setActive(t){t||(this.box_.setMap(null),this.startPixel_&&(this.dispatchEvent(new fa(ga,this.startPixel_,null)),this.startPixel_=null)),super.setActive(t)}setMap(t){this.getMap()&&(this.box_.setMap(null),this.startPixel_&&(this.dispatchEvent(new fa(ga,this.startPixel_,null)),this.startPixel_=null)),super.setMap(t)}}class ma extends pa{constructor(t){super({condition:(t=t||{}).condition?t.condition:ea,className:t.className||"ol-dragzoom",minArea:t.minArea}),this.duration_=void 0!==t.duration?t.duration:200,this.out_=void 0!==t.out&&t.out}onBoxEnd(t){const e=this.getMap().getView();let i=this.getGeometry();if(this.out_){const t=e.rotatedExtentForGeometry(i),n=e.getResolutionForExtentInternal(t),r=e.getResolution()/n;i=i.clone(),i.scale(r*r)}e.fitInternal(i,{duration:this.duration_,easing:tt})}}var _a="ArrowLeft",ya="ArrowUp",xa="ArrowRight",va="ArrowDown";class Ea extends Uo{constructor(t){super(),t=t||{},this.defaultCondition_=function(t){return Qo(t)&&ia(t)},this.condition_=void 0!==t.condition?t.condition:this.defaultCondition_,this.duration_=void 0!==t.duration?t.duration:100,this.pixelDelta_=void 0!==t.pixelDelta?t.pixelDelta:128}handleEvent(t){let e=!1;if(t.type==u){const i=t.originalEvent,n=i.key;if(this.condition_(t)&&(n==va||n==_a||n==xa||n==ya)){const r=t.map.getView(),s=r.getResolution()*this.pixelDelta_;let o=0,a=0;n==va?a=-s:n==_a?o=-s:n==xa?o=s:a=s;const l=[o,a];Qe(l,r.getRotation()),Bo(r,l,this.duration_),i.preventDefault(),e=!0}}return!e}}class Sa extends Uo{constructor(t){super(),t=t||{},this.condition_=t.condition?t.condition:function(t){return!ta(t)&&ia(t)},this.delta_=t.delta?t.delta:1,this.duration_=void 0!==t.duration?t.duration:100}handleEvent(t){let e=!1;if(t.type==u||t.type==d){const i=t.originalEvent,n=i.key;if(this.condition_(t)&&("+"===n||"-"===n)){const r=t.map,s="+"===n?this.delta_:-this.delta_;zo(r.getView(),s,void 0,this.duration_),i.preventDefault(),e=!0}}return!e}}class wa extends Uo{constructor(t){super(t=t||{}),this.totalDelta_=0,this.lastDelta_=0,this.maxDelta_=void 0!==t.maxDelta?t.maxDelta:1,this.duration_=void 0!==t.duration?t.duration:250,this.timeout_=void 0!==t.timeout?t.timeout:80,this.useAnchor_=void 0===t.useAnchor||t.useAnchor,this.constrainResolution_=void 0!==t.constrainResolution&&t.constrainResolution;const e=t.condition?t.condition:Ho;this.condition_=t.onFocusOnly?Vo(Yo,e):e,this.lastAnchor_=null,this.startTime_=void 0,this.timeoutId_,this.mode_=void 0,this.trackpadEventGap_=400,this.trackpadTimeoutId_,this.deltaPerZoom_=300}endInteraction_(){this.trackpadTimeoutId_=void 0;const t=this.getMap();if(!t)return;t.getView().endInteraction(void 0,this.lastDelta_?this.lastDelta_>0?1:-1:0,this.lastAnchor_?t.getCoordinateFromPixel(this.lastAnchor_):null)}handleEvent(t){if(!this.condition_(t))return!0;if(t.type!==p)return!0;const e=t.map,i=t.originalEvent;let n;if(i.preventDefault(),this.useAnchor_&&(this.lastAnchor_=t.pixel),t.type==p&&(n=i.deltaY,st&&i.deltaMode===WheelEvent.DOM_DELTA_PIXEL&&(n/=ct),i.deltaMode===WheelEvent.DOM_DELTA_LINE&&(n*=40)),0===n)return!1;this.lastDelta_=n;const r=Date.now();void 0===this.startTime_&&(this.startTime_=r),(!this.mode_||r-this.startTime_>this.trackpadEventGap_)&&(this.mode_=Math.abs(n)<4?"trackpad":"wheel");const s=e.getView();if("trackpad"===this.mode_&&!s.getConstrainResolution()&&!this.constrainResolution_)return this.trackpadTimeoutId_?clearTimeout(this.trackpadTimeoutId_):(s.getAnimating()&&s.cancelAnimations(),s.beginInteraction()),this.trackpadTimeoutId_=setTimeout(this.endInteraction_.bind(this),this.timeout_),s.adjustZoom(-n/this.deltaPerZoom_,this.lastAnchor_?e.getCoordinateFromPixel(this.lastAnchor_):null),this.startTime_=r,!1;this.totalDelta_+=n;const o=Math.max(this.timeout_-(r-this.startTime_),0);return clearTimeout(this.timeoutId_),this.timeoutId_=setTimeout(this.handleWheelZoom_.bind(this,e),o),!1}handleWheelZoom_(t){const e=t.getView();e.getAnimating()&&e.cancelAnimations();let i=-we(this.totalDelta_,-this.maxDelta_*this.deltaPerZoom_,this.maxDelta_*this.deltaPerZoom_)/this.deltaPerZoom_;(e.getConstrainResolution()||this.constrainResolution_)&&(i=i?i>0?1:-1:0),zo(e,i,this.lastAnchor_?t.getCoordinateFromPixel(this.lastAnchor_):null,this.duration_),this.mode_=void 0,this.totalDelta_=0,this.lastAnchor_=null,this.startTime_=void 0,this.timeoutId_=void 0}setMouseAnchor(t){this.useAnchor_=t,t||(this.lastAnchor_=null)}}class Ta extends sa{constructor(t){const e=t=t||{};e.stopDown||(e.stopDown=R),super(e),this.anchor_=null,this.lastAngle_=void 0,this.rotating_=!1,this.rotationDelta_=0,this.threshold_=void 0!==t.threshold?t.threshold:.3,this.duration_=void 0!==t.duration?t.duration:250}handleDragEvent(t){let e=0;const i=this.targetPointers[0],n=this.targetPointers[1],r=Math.atan2(n.clientY-i.clientY,n.clientX-i.clientX);if(void 0!==this.lastAngle_){const t=r-this.lastAngle_;this.rotationDelta_+=t,!this.rotating_&&Math.abs(this.rotationDelta_)>this.threshold_&&(this.rotating_=!0),e=t}this.lastAngle_=r;const s=t.map,o=s.getView();o.getConstraints().rotation!==uo&&(this.anchor_=s.getCoordinateFromPixelInternal(s.getEventPixel(oa(this.targetPointers))),this.rotating_&&(s.render(),o.adjustRotationInternal(e,this.anchor_)))}handleUpEvent(t){if(this.targetPointers.length<2){return t.map.getView().endInteraction(this.duration_),!1}return!0}handleDownEvent(t){if(this.targetPointers.length>=2){const e=t.map;return this.anchor_=null,this.lastAngle_=void 0,this.rotating_=!1,this.rotationDelta_=0,this.handlingDownUpSequence||e.getView().beginInteraction(),!0}return!1}}class Ca extends sa{constructor(t){const e=t=t||{};e.stopDown||(e.stopDown=R),super(e),this.anchor_=null,this.duration_=void 0!==t.duration?t.duration:400,this.lastDistance_=void 0,this.lastScaleDelta_=1}handleDragEvent(t){let e=1;const i=this.targetPointers[0],n=this.targetPointers[1],r=i.clientX-n.clientX,s=i.clientY-n.clientY,o=Math.sqrt(r*r+s*s);void 0!==this.lastDistance_&&(e=this.lastDistance_/o),this.lastDistance_=o;const a=t.map,l=a.getView();1!=e&&(this.lastScaleDelta_=e),this.anchor_=a.getCoordinateFromPixelInternal(a.getEventPixel(oa(this.targetPointers))),a.render(),l.adjustResolutionInternal(e,this.anchor_)}handleUpEvent(t){if(this.targetPointers.length<2){const e=t.map.getView(),i=this.lastScaleDelta_>1?1:-1;return e.endInteraction(this.duration_,i),!1}return!0}handleDownEvent(t){if(this.targetPointers.length>=2){const e=t.map;return this.anchor_=null,this.lastDistance_=void 0,this.lastScaleDelta_=1,this.handlingDownUpSequence||e.getView().beginInteraction(),!0}return!1}}function Ra(t){t=t||{};const e=new Z,i=new As(-.005,.05,100);(void 0===t.altShiftDragRotate||t.altShiftDragRotate)&&e.push(new la);(void 0===t.doubleClickZoom||t.doubleClickZoom)&&e.push(new Xo({delta:t.zoomDelta,duration:t.zoomDuration}));(void 0===t.dragPan||t.dragPan)&&e.push(new aa({onFocusOnly:t.onFocusOnly,kinetic:i}));(void 0===t.pinchRotate||t.pinchRotate)&&e.push(new Ta);(void 0===t.pinchZoom||t.pinchZoom)&&e.push(new Ca({duration:t.zoomDuration}));(void 0===t.keyboard||t.keyboard)&&(e.push(new Ea),e.push(new Sa({delta:t.zoomDelta,duration:t.zoomDuration})));(void 0===t.mouseWheelZoom||t.mouseWheelZoom)&&e.push(new wa({onFocusOnly:t.onFocusOnly,duration:t.zoomDuration}));return(void 0===t.shiftDragZoom||t.shiftDragZoom)&&e.push(new ma({duration:t.zoomDuration})),e}var ba="opacity",Pa="visible",Ia="extent",La="zIndex",Fa="maxResolution",Ma="minResolution",Aa="maxZoom",Oa="minZoom",Da="source",Na="map";class ka extends V{constructor(t){super(),this.on,this.once,this.un,this.background_=t.background;const e=Object.assign({},t);"object"==typeof t.properties&&(delete e.properties,Object.assign(e,t.properties)),e[ba]=void 0!==t.opacity?t.opacity:1,Ft("number"==typeof e[ba],"Layer opacity must be a number"),e[Pa]=void 0===t.visible||t.visible,e[La]=t.zIndex,e[Fa]=void 0!==t.maxResolution?t.maxResolution:1/0,e[Ma]=void 0!==t.minResolution?t.minResolution:0,e[Oa]=void 0!==t.minZoom?t.minZoom:-1/0,e[Aa]=void 0!==t.maxZoom?t.maxZoom:1/0,this.className_=void 0!==e.className?e.className:"ol-layer",delete e.className,this.setProperties(e),this.state_=null}getBackground(){return this.background_}getClassName(){return this.className_}getLayerState(t){const e=this.state_||{layer:this,managed:void 0===t||t},i=this.getZIndex();return e.opacity=we(Math.round(100*this.getOpacity())/100,0,1),e.visible=this.getVisible(),e.extent=this.getExtent(),e.zIndex=void 0!==i||e.managed?i:1/0,e.maxResolution=this.getMaxResolution(),e.minResolution=Math.max(this.getMinResolution(),0),e.minZoom=this.getMinZoom(),e.maxZoom=this.getMaxZoom(),this.state_=e,e}getLayersArray(t){return U()}getLayerStatesArray(t){return U()}getExtent(){return this.get(Ia)}getMaxResolution(){return this.get(Fa)}getMinResolution(){return this.get(Ma)}getMinZoom(){return this.get(Oa)}getMaxZoom(){return this.get(Aa)}getOpacity(){return this.get(ba)}getSourceState(){return U()}getVisible(){return this.get(Pa)}getZIndex(){return this.get(La)}setBackground(t){this.background_=t,this.changed()}setExtent(t){this.set(Ia,t)}setMaxResolution(t){this.set(Fa,t)}setMinResolution(t){this.set(Ma,t)}setMaxZoom(t){this.set(Aa,t)}setMinZoom(t){this.set(Oa,t)}setOpacity(t){Ft("number"==typeof t,"Layer opacity must be a number"),this.set(ba,t)}setVisible(t){this.set(Pa,t)}setZIndex(t){this.set(La,t)}disposeInternal(){this.state_&&(this.state_.layer=null,this.state_=null),super.disposeInternal()}}class Ga extends M{constructor(t,e){super(t),this.layer=e}}const ja="layers";class Ua extends ka{constructor(t){t=t||{};const e=Object.assign({},t);delete e.layers;let i=t.layers;super(e),this.on,this.once,this.un,this.layersListenerKeys_=[],this.listenerKeys_={},this.addChangeListener(ja,this.handleLayersChanged_),i?Array.isArray(i)?i=new Z(i.slice(),{unique:!0}):Ft("function"==typeof i.getArray,"Expected `layers` to be an array or a `Collection`"):i=new Z(void 0,{unique:!0}),this.setLayers(i)}handleLayerChange_(){this.changed()}handleLayersChanged_(){this.layersListenerKeys_.forEach(k),this.layersListenerKeys_.length=0;const i=this.getLayers();this.layersListenerKeys_.push(D(i,t,this.handleLayersAdd_,this),D(i,e,this.handleLayersRemove_,this));for(const t in this.listenerKeys_)this.listenerKeys_[t].forEach(k);L(this.listenerKeys_);const n=i.getArray();for(let t=0,e=n.length;t<e;t++){const e=n[t];this.registerLayerListeners_(e),this.dispatchEvent(new Ga("addlayer",e))}this.changed()}registerLayerListeners_(t){const e=[D(t,i,this.handleLayerChange_,this),D(t,n,this.handleLayerChange_,this)];t instanceof Ua&&e.push(D(t,"addlayer",this.handleLayerGroupAdd_,this),D(t,"removelayer",this.handleLayerGroupRemove_,this)),this.listenerKeys_[z(t)]=e}handleLayerGroupAdd_(t){this.dispatchEvent(new Ga("addlayer",t.layer))}handleLayerGroupRemove_(t){this.dispatchEvent(new Ga("removelayer",t.layer))}handleLayersAdd_(t){const e=t.element;this.registerLayerListeners_(e),this.dispatchEvent(new Ga("addlayer",e)),this.changed()}handleLayersRemove_(t){const e=t.element,i=z(e);this.listenerKeys_[i].forEach(k),delete this.listenerKeys_[i],this.dispatchEvent(new Ga("removelayer",e)),this.changed()}getLayers(){return this.get(ja)}setLayers(t){const e=this.getLayers();if(e){const t=e.getArray();for(let e=0,i=t.length;e<i;++e)this.dispatchEvent(new Ga("removelayer",t[e]))}this.set(ja,t)}getLayersArray(t){return t=void 0!==t?t:[],this.getLayers().forEach((function(e){e.getLayersArray(t)})),t}getLayerStatesArray(t){const e=void 0!==t?t:[],i=e.length;this.getLayers().forEach((function(t){t.getLayerStatesArray(e)}));const n=this.getLayerState();let r=n.zIndex;t||void 0!==n.zIndex||(r=0);for(let t=i,s=e.length;t<s;t++){const i=e[t];i.opacity*=n.opacity,i.visible=i.visible&&n.visible,i.maxResolution=Math.min(i.maxResolution,n.maxResolution),i.minResolution=Math.max(i.minResolution,n.minResolution),i.minZoom=Math.max(i.minZoom,n.minZoom),i.maxZoom=Math.min(i.maxZoom,n.maxZoom),void 0!==n.extent&&(void 0!==i.extent?i.extent=ue(i.extent,n.extent):i.extent=n.extent),void 0===i.zIndex&&(i.zIndex=r)}return e}getSourceState(){return"ready"}}var Ba="prerender",za="postrender",Xa="precompose",Va="postcompose",$a="rendercomplete";class Wa extends ka{constructor(t){const e=Object.assign({},t);delete e.source,super(e),this.on,this.once,this.un,this.mapPrecomposeKey_=null,this.mapRenderKey_=null,this.sourceChangeKey_=null,this.renderer_=null,this.sourceReady_=!1,this.rendered=!1,t.render&&(this.render=t.render),t.map&&this.setMap(t.map),this.addChangeListener(Da,this.handleSourcePropertyChange_);const i=t.source?t.source:null;this.setSource(i)}getLayersArray(t){return(t=t||[]).push(this),t}getLayerStatesArray(t){return(t=t||[]).push(this.getLayerState()),t}getSource(){return this.get(Da)||null}getRenderSource(){return this.getSource()}getSourceState(){const t=this.getSource();return t?t.getState():"undefined"}handleSourceChange_(){this.changed(),this.sourceReady_||"ready"!==this.getSource().getState()||(this.sourceReady_=!0,this.dispatchEvent("sourceready"))}handleSourcePropertyChange_(){this.sourceChangeKey_&&(k(this.sourceChangeKey_),this.sourceChangeKey_=null),this.sourceReady_=!1;const t=this.getSource();t&&(this.sourceChangeKey_=D(t,n,this.handleSourceChange_,this),"ready"===t.getState()&&(this.sourceReady_=!0,setTimeout((()=>{this.dispatchEvent("sourceready")}),0)),this.clearRenderer()),this.changed()}getFeatures(t){return this.renderer_?this.renderer_.getFeatures(t):Promise.resolve([])}getData(t){return this.renderer_&&this.rendered?this.renderer_.getData(t):null}isVisible(t){let e;const i=this.getMapInternal();let n;if(!t&&i&&(t=i.getView()),e=t instanceof yo?{viewState:t.getState(),extent:t.calculateExtent()}:t,!e.layerStatesArray&&i&&(e.layerStatesArray=i.getLayerGroup().getLayerStatesArray()),e.layerStatesArray){if(n=e.layerStatesArray.find((t=>t.layer===this)),!n)return!1}else n=this.getLayerState();const r=this.getExtent();return Za(n,e.viewState)&&(!r||pe(r,e.extent))}getAttributions(t){if(!this.isVisible(t))return[];const e=this.getSource()?.getAttributions();if(!e)return[];let i=e(t instanceof yo?t.getViewStateAndExtent():t);return Array.isArray(i)||(i=[i]),i}render(t,e){const i=this.getRenderer();return i.prepareFrame(t)?(this.rendered=!0,i.renderFrame(t,e)):null}unrender(){this.rendered=!1}getDeclutter(){}renderDeclutter(t,e){}renderDeferred(t){const e=this.getRenderer();e&&e.renderDeferred(t)}setMapInternal(t){t||this.unrender(),this.set(Na,t)}getMapInternal(){return this.get(Na)}setMap(t){this.mapPrecomposeKey_&&(k(this.mapPrecomposeKey_),this.mapPrecomposeKey_=null),t||this.changed(),this.mapRenderKey_&&(k(this.mapRenderKey_),this.mapRenderKey_=null),t&&(this.mapPrecomposeKey_=D(t,Xa,this.handlePrecompose_,this),this.mapRenderKey_=D(this,n,t.render,t),this.changed())}handlePrecompose_(t){const e=t.frameState.layerStatesArray,i=this.getLayerState(!1);Ft(!e.some((t=>t.layer===i.layer)),"A layer can only be added to the map once. Use either `layer.setMap()` or `map.addLayer()`, not both."),e.push(i)}setSource(t){this.set(Da,t)}getRenderer(){return this.renderer_||(this.renderer_=this.createRenderer()),this.renderer_}hasRenderer(){return!!this.renderer_}createRenderer(){return null}clearRenderer(){this.renderer_&&(this.renderer_.dispose(),delete this.renderer_)}disposeInternal(){this.clearRenderer(),this.setSource(null),super.disposeInternal()}}function Za(t,e){if(!t.visible)return!1;const i=e.resolution;if(i<t.minResolution||i>=t.maxResolution)return!1;const n=e.zoom;return n>t.minZoom&&n<=t.maxZoom}function Ya(t,e,i=0,n=t.length-1,r=Ka){for(;n>i;){if(n-i>600){const s=n-i+1,o=e-i+1,a=Math.log(s),l=.5*Math.exp(2*a/3),h=.5*Math.sqrt(a*l*(s-l)/s)*(o-s/2<0?-1:1);Ya(t,e,Math.max(i,Math.floor(e-o*l/s+h)),Math.min(n,Math.floor(e+(s-o)*l/s+h)),r)}const s=t[e];let o=i,a=n;for(Ha(t,i,e),r(t[n],s)>0&&Ha(t,i,n);o<a;){for(Ha(t,o,a),o++,a--;r(t[o],s)<0;)o++;for(;r(t[a],s)>0;)a--}0===r(t[i],s)?Ha(t,i,a):(a++,Ha(t,a,n)),a<=e&&(i=a+1),e<=a&&(n=a-1)}}function Ha(t,e,i){const n=t[e];t[e]=t[i],t[i]=n}function Ka(t,e){return t<e?-1:t>e?1:0}let qa=class{constructor(t=9){this._maxEntries=Math.max(4,t),this._minEntries=Math.max(2,Math.ceil(.4*this._maxEntries)),this.clear()}all(){return this._all(this.data,[])}search(t){let e=this.data;const i=[];if(!ll(t,e))return i;const n=this.toBBox,r=[];for(;e;){for(let s=0;s<e.children.length;s++){const o=e.children[s],a=e.leaf?n(o):o;ll(t,a)&&(e.leaf?i.push(o):al(t,a)?this._all(o,i):r.push(o))}e=r.pop()}return i}collides(t){let e=this.data;if(!ll(t,e))return!1;const i=[];for(;e;){for(let n=0;n<e.children.length;n++){const r=e.children[n],s=e.leaf?this.toBBox(r):r;if(ll(t,s)){if(e.leaf||al(t,s))return!0;i.push(r)}}e=i.pop()}return!1}load(t){if(!t||!t.length)return this;if(t.length<this._minEntries){for(let e=0;e<t.length;e++)this.insert(t[e]);return this}let e=this._build(t.slice(),0,t.length-1,0);if(this.data.children.length)if(this.data.height===e.height)this._splitRoot(this.data,e);else{if(this.data.height<e.height){const t=this.data;this.data=e,e=t}this._insert(e,this.data.height-e.height-1,!0)}else this.data=e;return this}insert(t){return t&&this._insert(t,this.data.height-1),this}clear(){return this.data=hl([]),this}remove(t,e){if(!t)return this;let i=this.data;const n=this.toBBox(t),r=[],s=[];let o,a,l;for(;i||r.length;){if(i||(i=r.pop(),a=r[r.length-1],o=s.pop(),l=!0),i.leaf){const n=Ja(t,i.children,e);if(-1!==n)return i.children.splice(n,1),r.push(i),this._condense(r),this}l||i.leaf||!al(i,n)?a?(o++,i=a.children[o],l=!1):i=null:(r.push(i),s.push(o),o=0,a=i,i=i.children[0])}return this}toBBox(t){return t}compareMinX(t,e){return t.minX-e.minX}compareMinY(t,e){return t.minY-e.minY}toJSON(){return this.data}fromJSON(t){return this.data=t,this}_all(t,e){const i=[];for(;t;)t.leaf?e.push(...t.children):i.push(...t.children),t=i.pop();return e}_build(t,e,i,n){const r=i-e+1;let s,o=this._maxEntries;if(r<=o)return s=hl(t.slice(e,i+1)),Qa(s,this.toBBox),s;n||(n=Math.ceil(Math.log(r)/Math.log(o)),o=Math.ceil(r/Math.pow(o,n-1))),s=hl([]),s.leaf=!1,s.height=n;const a=Math.ceil(r/o),l=a*Math.ceil(Math.sqrt(o));cl(t,e,i,l,this.compareMinX);for(let r=e;r<=i;r+=l){const e=Math.min(r+l-1,i);cl(t,r,e,a,this.compareMinY);for(let i=r;i<=e;i+=a){const r=Math.min(i+a-1,e);s.children.push(this._build(t,i,r,n-1))}}return Qa(s,this.toBBox),s}_chooseSubtree(t,e,i,n){for(;n.push(e),!e.leaf&&n.length-1!==i;){let i,n=1/0,o=1/0;for(let a=0;a<e.children.length;a++){const l=e.children[a],h=rl(l),c=(r=t,s=l,(Math.max(s.maxX,r.maxX)-Math.min(s.minX,r.minX))*(Math.max(s.maxY,r.maxY)-Math.min(s.minY,r.minY))-h);c<o?(o=c,n=h<n?h:n,i=l):c===o&&h<n&&(n=h,i=l)}e=i||e.children[0]}var r,s;return e}_insert(t,e,i){const n=i?t:this.toBBox(t),r=[],s=this._chooseSubtree(n,this.data,e,r);for(s.children.push(t),el(s,n);e>=0&&r[e].children.length>this._maxEntries;)this._split(r,e),e--;this._adjustParentBBoxes(n,r,e)}_split(t,e){const i=t[e],n=i.children.length,r=this._minEntries;this._chooseSplitAxis(i,r,n);const s=this._chooseSplitIndex(i,r,n),o=hl(i.children.splice(s,i.children.length-s));o.height=i.height,o.leaf=i.leaf,Qa(i,this.toBBox),Qa(o,this.toBBox),e?t[e-1].children.push(o):this._splitRoot(i,o)}_splitRoot(t,e){this.data=hl([t,e]),this.data.height=t.height+1,this.data.leaf=!1,Qa(this.data,this.toBBox)}_chooseSplitIndex(t,e,i){let n,r=1/0,s=1/0;for(let o=e;o<=i-e;o++){const e=tl(t,0,o,this.toBBox),a=tl(t,o,i,this.toBBox),l=ol(e,a),h=rl(e)+rl(a);l<r?(r=l,n=o,s=h<s?h:s):l===r&&h<s&&(s=h,n=o)}return n||i-e}_chooseSplitAxis(t,e,i){const n=t.leaf?this.compareMinX:il,r=t.leaf?this.compareMinY:nl;this._allDistMargin(t,e,i,n)<this._allDistMargin(t,e,i,r)&&t.children.sort(n)}_allDistMargin(t,e,i,n){t.children.sort(n);const r=this.toBBox,s=tl(t,0,e,r),o=tl(t,i-e,i,r);let a=sl(s)+sl(o);for(let n=e;n<i-e;n++){const e=t.children[n];el(s,t.leaf?r(e):e),a+=sl(s)}for(let n=i-e-1;n>=e;n--){const e=t.children[n];el(o,t.leaf?r(e):e),a+=sl(o)}return a}_adjustParentBBoxes(t,e,i){for(let n=i;n>=0;n--)el(e[n],t)}_condense(t){for(let e,i=t.length-1;i>=0;i--)0===t[i].children.length?i>0?(e=t[i-1].children,e.splice(e.indexOf(t[i]),1)):this.clear():Qa(t[i],this.toBBox)}};function Ja(t,e,i){if(!i)return e.indexOf(t);for(let n=0;n<e.length;n++)if(i(t,e[n]))return n;return-1}function Qa(t,e){tl(t,0,t.children.length,e,t)}function tl(t,e,i,n,r){r||(r=hl(null)),r.minX=1/0,r.minY=1/0,r.maxX=-1/0,r.maxY=-1/0;for(let s=e;s<i;s++){const e=t.children[s];el(r,t.leaf?n(e):e)}return r}function el(t,e){return t.minX=Math.min(t.minX,e.minX),t.minY=Math.min(t.minY,e.minY),t.maxX=Math.max(t.maxX,e.maxX),t.maxY=Math.max(t.maxY,e.maxY),t}function il(t,e){return t.minX-e.minX}function nl(t,e){return t.minY-e.minY}function rl(t){return(t.maxX-t.minX)*(t.maxY-t.minY)}function sl(t){return t.maxX-t.minX+(t.maxY-t.minY)}function ol(t,e){const i=Math.max(t.minX,e.minX),n=Math.max(t.minY,e.minY),r=Math.min(t.maxX,e.maxX),s=Math.min(t.maxY,e.maxY);return Math.max(0,r-i)*Math.max(0,s-n)}function al(t,e){return t.minX<=e.minX&&t.minY<=e.minY&&e.maxX<=t.maxX&&e.maxY<=t.maxY}function ll(t,e){return e.minX<=t.maxX&&e.minY<=t.maxY&&e.maxX>=t.minX&&e.maxY>=t.minY}function hl(t){return{children:t,height:1,leaf:!0,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0}}function cl(t,e,i,n,r){const s=[e,i];for(;s.length;){if((i=s.pop())-(e=s.pop())<=n)continue;const o=e+Math.ceil((i-e)/n/2)*n;Ya(t,o,e,i,r),s.push(e,o,o,i)}}function ul(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var dl,gl;var fl=ul(gl?dl:(gl=1,dl={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]})),pl={red:0,orange:60,yellow:120,green:180,blue:240,purple:300};var ml={name:"rgb",min:[0,0,0],max:[255,255,255],channel:["red","green","blue"],alias:["RGB"]},_l={name:"hsl",min:[0,0,0],max:[360,100,100],channel:["hue","saturation","lightness"],alias:["HSL"],rgb:function(t){var e,i,n,r,s,o=t[0]/360,a=t[1]/100,l=t[2]/100,h=0;if(0===a)return[s=255*l,s,s];for(e=2*l-(i=l<.5?l*(1+a):l+a-l*a),r=[0,0,0];h<3;)(n=o+1/3*-(h-1))<0?n++:n>1&&n--,s=6*n<1?e+6*(i-e)*n:2*n<1?i:3*n<2?e+(i-e)*(2/3-n)*6:e,r[h++]=255*s;return r}};function yl(t){var e;Array.isArray(t)&&t.raw&&(t=String.raw(...arguments)),t instanceof Number&&(t=+t);var i=function(t){var e,i,n=[],r=1;if("number"==typeof t)return{space:"rgb",values:[t>>>16,(65280&t)>>>8,255&t],alpha:1};if("number"==typeof t)return{space:"rgb",values:[t>>>16,(65280&t)>>>8,255&t],alpha:1};if(t=String(t).toLowerCase(),fl[t])n=fl[t].slice(),i="rgb";else if("transparent"===t)r=0,i="rgb",n=[0,0,0];else if("#"===t[0]){var s=t.slice(1),o=s.length;r=1,o<=4?(n=[parseInt(s[0]+s[0],16),parseInt(s[1]+s[1],16),parseInt(s[2]+s[2],16)],4===o&&(r=parseInt(s[3]+s[3],16)/255)):(n=[parseInt(s[0]+s[1],16),parseInt(s[2]+s[3],16),parseInt(s[4]+s[5],16)],8===o&&(r=parseInt(s[6]+s[7],16)/255)),n[0]||(n[0]=0),n[1]||(n[1]=0),n[2]||(n[2]=0),i="rgb"}else if(e=/^((?:rgba?|hs[lvb]a?|hwba?|cmyk?|xy[zy]|gray|lab|lchu?v?|[ly]uv|lms|oklch|oklab|color))\s*\(([^\)]*)\)/.exec(t)){var a=e[1],l="cmyk"===(i=a.replace(/a$/,""))?4:"gray"===i?1:3;n=e[2].trim().split(/\s*[,\/]\s*|\s+/),"color"===i&&(i=n.shift()),r=(n=n.map((function(t,e){if("%"===t[t.length-1])return t=parseFloat(t)/100,3===e?t:"rgb"===i?255*t:"h"===i[0]?100*t:"l"!==i[0]||e?"lab"===i?125*t:"lch"===i?e<2?150*t:360*t:"o"!==i[0]||e?"oklab"===i?.4*t:"oklch"===i?e<2?.4*t:360*t:t:t:100*t;if("h"===i[e]||2===e&&"h"===i[i.length-1]){if(void 0!==pl[t])return pl[t];if(t.endsWith("deg"))return parseFloat(t);if(t.endsWith("turn"))return 360*parseFloat(t);if(t.endsWith("grad"))return 360*parseFloat(t)/400;if(t.endsWith("rad"))return 180*parseFloat(t)/Math.PI}return"none"===t?0:parseFloat(t)}))).length>l?n.pop():1}else/[0-9](?:\s|\/|,)/.test(t)&&(n=t.match(/([0-9]+)/g).map((function(t){return parseFloat(t)})),i=t.match(/([a-z])/gi)?.join("")?.toLowerCase()||"rgb");return{space:i,values:n,alpha:r}}(t);if(!i.space)return[];const n="h"===i.space[0]?_l.min:ml.min,r="h"===i.space[0]?_l.max:ml.max;return(e=Array(3))[0]=Math.min(Math.max(i.values[0],n[0]),r[0]),e[1]=Math.min(Math.max(i.values[1],n[1]),r[1]),e[2]=Math.min(Math.max(i.values[2],n[2]),r[2]),"h"===i.space[0]&&(e=_l.rgb(e)),e.push(Math.min(Math.max(i.alpha,0),1)),e}ml.hsl=function(t){var e,i,n=t[0]/255,r=t[1]/255,s=t[2]/255,o=Math.min(n,r,s),a=Math.max(n,r,s),l=a-o;return a===o?e=0:n===a?e=(r-s)/l:r===a?e=2+(s-n)/l:s===a&&(e=4+(n-r)/l),(e=Math.min(60*e,360))<0&&(e+=360),i=(o+a)/2,[e,100*(a===o?0:i<=.5?l/(a+o):l/(2-a-o)),100*i]};var xl={name:"xyz",min:[0,0,0],channel:["X","Y","Z"],alias:["XYZ","ciexyz","cie1931"],whitepoint:{2:{A:[109.85,100,35.585],C:[98.074,100,118.232],D50:[96.422,100,82.521],D55:[95.682,100,92.149],D65:[95.045592705167,100,108.9057750759878],D75:[94.972,100,122.638],F2:[99.187,100,67.395],F7:[95.044,100,108.755],F11:[100.966,100,64.37],E:[100,100,100]},10:{A:[111.144,100,35.2],C:[97.285,100,116.145],D50:[96.72,100,81.427],D55:[95.799,100,90.926],D65:[94.811,100,107.304],D75:[94.416,100,120.641],F2:[103.28,100,69.026],F7:[95.792,100,107.687],F11:[103.866,100,65.627],E:[100,100,100]}}};xl.max=xl.whitepoint[2].D65,xl.rgb=function(t,e){e=e||xl.whitepoint[2].E;var i,n,r,s=t[0]/e[0],o=t[1]/e[1],a=t[2]/e[2];return n=-.96924363628087*s+1.87596750150772*o+.041555057407175*a,r=.055630079696993*s+-.20397695888897*o+1.056971514242878*a,i=(i=3.240969941904521*s+-1.537383177570093*o+-.498610760293*a)>.0031308?1.055*Math.pow(i,1/2.4)-.055:i*=12.92,n=n>.0031308?1.055*Math.pow(n,1/2.4)-.055:n*=12.92,r=r>.0031308?1.055*Math.pow(r,1/2.4)-.055:r*=12.92,[255*(i=Math.min(Math.max(0,i),1)),255*(n=Math.min(Math.max(0,n),1)),255*(r=Math.min(Math.max(0,r),1))]},ml.xyz=function(t,e){var i=t[0]/255,n=t[1]/255,r=t[2]/255,s=.21263900587151*(i=i>.04045?Math.pow((i+.055)/1.055,2.4):i/12.92)+.71516867876775*(n=n>.04045?Math.pow((n+.055)/1.055,2.4):n/12.92)+.072192315360733*(r=r>.04045?Math.pow((r+.055)/1.055,2.4):r/12.92),o=.019330818715591*i+.11919477979462*n+.95053215224966*r;return[(.41239079926595*i+.35758433938387*n+.18048078840183*r)*(e=e||xl.whitepoint[2].E)[0],s*e[1],o*e[2]]};var vl={name:"luv",min:[0,-134,-140],max:[100,224,122],channel:["lightness","u","v"],alias:["LUV","cieluv","cie1976"],xyz:function(t,e,i){var n,r,s,o,a,l,h,c,u;if(s=t[0],o=t[1],a=t[2],0===s)return[0,0,0];return e=e||"D65",i=i||2,n=o/(13*s)+4*(h=xl.whitepoint[i][e][0])/(h+15*(c=xl.whitepoint[i][e][1])+3*(u=xl.whitepoint[i][e][2]))||0,r=a/(13*s)+9*c/(h+15*c+3*u)||0,[9*(l=s>8?c*Math.pow((s+16)/116,3):c*s*.0011070564598794539)*n/(4*r)||0,l,l*(12-3*n-20*r)/(4*r)||0]}};xl.luv=function(t,e,i){var n,r,s,o,a,l,h,c,u,d,g;e=e||"D65",i=i||2,d=4*(h=xl.whitepoint[i][e][0])/(h+15*(c=xl.whitepoint[i][e][1])+3*(u=xl.whitepoint[i][e][2])),g=9*c/(h+15*c+3*u),n=4*(o=t[0])/(o+15*(a=t[1])+3*(l=t[2]))||0,r=9*a/(o+15*a+3*l)||0;var f=a/c;return[s=f<=.008856451679035631?903.2962962962961*f:116*Math.pow(f,1/3)-16,13*s*(n-d),13*s*(r-g)]};var El={name:"lchuv",channel:["lightness","chroma","hue"],alias:["LCHuv","cielchuv"],min:[0,0,0],max:[100,100,360],luv:function(t){var e,i=t[0],n=t[1];return e=t[2]/360*2*Math.PI,[i,n*Math.cos(e),n*Math.sin(e)]},xyz:function(t){return vl.xyz(El.luv(t))}};vl.lchuv=function(t){var e=t[0],i=t[1],n=t[2],r=Math.sqrt(i*i+n*n),s=360*Math.atan2(n,i)/2/Math.PI;return s<0&&(s+=360),[e,r,s]},xl.lchuv=function(t){return vl.lchuv(xl.luv(t))};const Sl=[NaN,NaN,NaN,0];function wl(t){return"string"==typeof t?t:Al(t)}const Tl=1024,Cl={};let Rl=0;function bl(t){if(4===t.length)return t;const e=t.slice();return e[3]=1,e}function Pl(t){const e=xl.lchuv(ml.xyz(t));return e[3]=t[3],e}function Il(t){const e=xl.rgb(El.xyz(t));return e[3]=t[3],e}function Ll(t){if("none"===t)return Sl;if(Cl.hasOwnProperty(t))return Cl[t];if(Rl>=Tl){let t=0;for(const e in Cl)0==(3&t++)&&(delete Cl[e],--Rl)}const e=yl(t);if(4!==e.length)throw new Error('failed to parse "'+t+'" as color');for(const i of e)if(isNaN(i))throw new Error('failed to parse "'+t+'" as color');return Ml(e),Cl[t]=e,++Rl,e}function Fl(t){return Array.isArray(t)?t:Ll(t)}function Ml(t){return t[0]=we(t[0]+.5|0,0,255),t[1]=we(t[1]+.5|0,0,255),t[2]=we(t[2]+.5|0,0,255),t[3]=we(t[3],0,1),t}function Al(t){let e=t[0];e!=(0|e)&&(e=e+.5|0);let i=t[1];i!=(0|i)&&(i=i+.5|0);let n=t[2];n!=(0|n)&&(n=n+.5|0);return"rgba("+e+","+i+","+n+","+(void 0===t[3]?1:Math.round(1e3*t[3])/1e3)+")"}function Ol(t){return t[0]>0&&t[1]>0}function Dl(t,e,i){return void 0===i&&(i=[0,0]),i[0]=t[0]*e+.5|0,i[1]=t[1]*e+.5|0,i}function Nl(t,e){return Array.isArray(t)?t:(void 0===e?e=[t,t]:(e[0]=t,e[1]=t),e)}let kl=0;const Gl=1<<kl++,jl=1<<kl++,Ul=1<<kl++,Bl=1<<kl++,zl=1<<kl++,Xl=1<<kl++,Vl=Math.pow(2,6)-1,$l={[Gl]:"boolean",[jl]:"number",[Ul]:"string",[Bl]:"color",[zl]:"number[]",[Xl]:"size"},Wl=Object.keys($l).map(Number).sort(y);function Zl(t){const e=[];for(const i of Wl)Yl(t,i)&&e.push($l[i]);return 0===e.length?"untyped":e.length<3?e.join(" or "):e.slice(0,-1).join(", ")+", or "+e[e.length-1]}function Yl(t,e){return(t&e)===e}function Hl(t,e){return t===e}class Kl{constructor(t,e){if(!function(t){return t in $l}(t))throw new Error(`literal expressions must have a specific type, got ${Zl(t)}`);this.type=t,this.value=e}}class ql{constructor(t,e,...i){this.type=t,this.operator=e,this.args=i}}function Jl(){return{variables:new Set,properties:new Set,featureId:!1,geometryType:!1,mapState:!1}}function Ql(t,e,i){switch(typeof t){case"boolean":if(Hl(e,Ul))return new Kl(Ul,t?"true":"false");if(!Yl(e,Gl))throw new Error(`got a boolean, but expected ${Zl(e)}`);return new Kl(Gl,t);case"number":if(Hl(e,Xl))return new Kl(Xl,Nl(t));if(Hl(e,Gl))return new Kl(Gl,!!t);if(Hl(e,Ul))return new Kl(Ul,t.toString());if(!Yl(e,jl))throw new Error(`got a number, but expected ${Zl(e)}`);return new Kl(jl,t);case"string":if(Hl(e,Bl))return new Kl(Bl,Ll(t));if(Hl(e,Gl))return new Kl(Gl,!!t);if(!Yl(e,Ul))throw new Error(`got a string, but expected ${Zl(e)}`);return new Kl(Ul,t)}if(!Array.isArray(t))throw new Error("expression must be an array or a primitive value");if(0===t.length)throw new Error("empty expression");if("string"==typeof t[0])return function(t,e,i){const n=t[0],r=eh[n];if(!r)throw new Error(`unknown operator: ${n}`);return r(t,e,i)}(t,e,i);for(const e of t)if("number"!=typeof e)throw new Error("expected an array of numbers");if(Hl(e,Xl)){if(2!==t.length)throw new Error(`expected an array of two values for a size, got ${t.length}`);return new Kl(Xl,t)}if(Hl(e,Bl)){if(3===t.length)return new Kl(Bl,[...t,1]);if(4===t.length)return new Kl(Bl,t);throw new Error(`expected an array of 3 or 4 values for a color, got ${t.length}`)}if(!Yl(e,zl))throw new Error(`got an array of numbers, but expected ${Zl(e)}`);return new Kl(zl,t)}const th={Get:"get",Var:"var",Concat:"concat",GeometryType:"geometry-type",LineMetric:"line-metric",Any:"any",All:"all",Not:"!",Resolution:"resolution",Zoom:"zoom",Time:"time",Equal:"==",NotEqual:"!=",GreaterThan:">",GreaterThanOrEqualTo:">=",LessThan:"<",LessThanOrEqualTo:"<=",Multiply:"*",Divide:"/",Add:"+",Subtract:"-",Clamp:"clamp",Mod:"%",Pow:"^",Abs:"abs",Floor:"floor",Ceil:"ceil",Round:"round",Sin:"sin",Cos:"cos",Atan:"atan",Sqrt:"sqrt",Match:"match",Between:"between",Interpolate:"interpolate",Coalesce:"coalesce",Case:"case",In:"in",Number:"number",String:"string",Array:"array",Color:"color",Id:"id",Band:"band",Palette:"palette",ToString:"to-string",Has:"has"},eh={[th.Get]:hh(sh(1,1/0),ih),[th.Var]:hh(sh(1,1),(function(t,e,i){const n=t[1];if("string"!=typeof n)throw new Error("expected a string argument for var operation");return i.variables.add(n),[new Kl(Ul,n)]})),[th.Has]:hh(sh(1,1/0),ih),[th.Id]:hh((function(t,e,i){i.featureId=!0}),rh),[th.Concat]:hh(sh(2,1/0),ah(Ul)),[th.GeometryType]:hh((function(t,e,i){i.geometryType=!0}),rh),[th.LineMetric]:hh(rh),[th.Resolution]:hh(nh,rh),[th.Zoom]:hh(nh,rh),[th.Time]:hh(nh,rh),[th.Any]:hh(sh(2,1/0),ah(Gl)),[th.All]:hh(sh(2,1/0),ah(Gl)),[th.Not]:hh(sh(1,1),ah(Gl)),[th.Equal]:hh(sh(2,2),ah(Vl)),[th.NotEqual]:hh(sh(2,2),ah(Vl)),[th.GreaterThan]:hh(sh(2,2),ah(jl)),[th.GreaterThanOrEqualTo]:hh(sh(2,2),ah(jl)),[th.LessThan]:hh(sh(2,2),ah(jl)),[th.LessThanOrEqualTo]:hh(sh(2,2),ah(jl)),[th.Multiply]:hh(sh(2,1/0),oh),[th.Coalesce]:hh(sh(2,1/0),oh),[th.Divide]:hh(sh(2,2),ah(jl)),[th.Add]:hh(sh(2,1/0),ah(jl)),[th.Subtract]:hh(sh(2,2),ah(jl)),[th.Clamp]:hh(sh(3,3),ah(jl)),[th.Mod]:hh(sh(2,2),ah(jl)),[th.Pow]:hh(sh(2,2),ah(jl)),[th.Abs]:hh(sh(1,1),ah(jl)),[th.Floor]:hh(sh(1,1),ah(jl)),[th.Ceil]:hh(sh(1,1),ah(jl)),[th.Round]:hh(sh(1,1),ah(jl)),[th.Sin]:hh(sh(1,1),ah(jl)),[th.Cos]:hh(sh(1,1),ah(jl)),[th.Atan]:hh(sh(1,2),ah(jl)),[th.Sqrt]:hh(sh(1,1),ah(jl)),[th.Match]:hh(sh(4,1/0),lh,(function(t,e,i){const n=t.length-1,r=Ul|jl|Gl,s=Ql(t[1],r,i),o=Ql(t[t.length-1],e,i),a=new Array(n-2);for(let e=0;e<n-2;e+=2){try{const n=Ql(t[e+2],s.type,i);a[e]=n}catch(t){throw new Error(`failed to parse argument ${e+1} of match expression: ${t.message}`)}try{const n=Ql(t[e+3],o.type,i);a[e+1]=n}catch(t){throw new Error(`failed to parse argument ${e+2} of match expression: ${t.message}`)}}return[s,...a,o]})),[th.Between]:hh(sh(3,3),ah(jl)),[th.Interpolate]:hh(sh(6,1/0),lh,(function(t,e,i){const n=t[1];let r;switch(n[0]){case"linear":r=1;break;case"exponential":const t=n[1];if("number"!=typeof t||t<=0)throw new Error(`expected a number base for exponential interpolation, got ${JSON.stringify(t)} instead`);r=t;break;default:throw new Error(`invalid interpolation type: ${JSON.stringify(n)}`)}const s=new Kl(jl,r);let o;try{o=Ql(t[2],jl,i)}catch(t){throw new Error(`failed to parse argument 1 in interpolate expression: ${t.message}`)}const a=new Array(t.length-3);for(let n=0;n<a.length;n+=2){try{const e=Ql(t[n+3],jl,i);a[n]=e}catch(t){throw new Error(`failed to parse argument ${n+2} for interpolate expression: ${t.message}`)}try{const r=Ql(t[n+4],e,i);a[n+1]=r}catch(t){throw new Error(`failed to parse argument ${n+3} for interpolate expression: ${t.message}`)}}return[s,o,...a]})),[th.Case]:hh(sh(3,1/0),(function(t,e,i){const n=t[0],r=t.length-1;if(r%2==0)throw new Error(`expected an odd number of arguments for ${n}, got ${r} instead`)}),(function(t,e,i){const n=Ql(t[t.length-1],e,i),r=new Array(t.length-1);for(let e=0;e<r.length-1;e+=2){try{const n=Ql(t[e+1],Gl,i);r[e]=n}catch(t){throw new Error(`failed to parse argument ${e} of case expression: ${t.message}`)}try{const s=Ql(t[e+2],n.type,i);r[e+1]=s}catch(t){throw new Error(`failed to parse argument ${e+1} of case expression: ${t.message}`)}}return r[r.length-1]=n,r})),[th.In]:hh(sh(2,2),(function(t,e,i){let n,r=t[2];if(!Array.isArray(r))throw new Error('the second argument for the "in" operator must be an array');if("string"==typeof r[0]){if("literal"!==r[0])throw new Error('for the "in" operator, a string array should be wrapped in a "literal" operator to disambiguate from expressions');if(!Array.isArray(r[1]))throw new Error('failed to parse "in" expression: the literal operator must be followed by an array');r=r[1],n=Ul}else n=jl;const s=new Array(r.length);for(let t=0;t<s.length;t++)try{const e=Ql(r[t],n,i);s[t]=e}catch(e){throw new Error(`failed to parse haystack item ${t} for "in" expression: ${e.message}`)}return[Ql(t[1],n,i),...s]})),[th.Number]:hh(sh(1,1/0),ah(Vl)),[th.String]:hh(sh(1,1/0),ah(Vl)),[th.Array]:hh(sh(1,1/0),ah(jl)),[th.Color]:hh(sh(1,4),ah(jl)),[th.Band]:hh(sh(1,3),ah(jl)),[th.Palette]:hh(sh(2,2),(function(t,e,i){let n;try{n=Ql(t[1],jl,i)}catch(t){throw new Error(`failed to parse first argument in palette expression: ${t.message}`)}const r=t[2];if(!Array.isArray(r))throw new Error("the second argument of palette must be an array");const s=new Array(r.length);for(let t=0;t<s.length;t++){let e;try{e=Ql(r[t],Bl,i)}catch(e){throw new Error(`failed to parse color at index ${t} in palette expression: ${e.message}`)}if(!(e instanceof Kl))throw new Error(`the palette color at index ${t} must be a literal value`);s[t]=e}return[n,...s]})),[th.ToString]:hh(sh(1,1),ah(Gl|jl|Ul|Bl))};function ih(t,e,i){const n=t.length-1,r=new Array(n);for(let e=0;e<n;++e){const n=t[e+1];switch(typeof n){case"number":r[e]=new Kl(jl,n);break;case"string":r[e]=new Kl(Ul,n);break;default:throw new Error(`expected a string key or numeric array index for a get operation, got ${n}`)}0===e&&i.properties.add(String(n))}return r}function nh(t,e,i){i.mapState=!0}function rh(t,e,i){const n=t[0];if(1!==t.length)throw new Error(`expected no arguments for ${n} operation`);return[]}function sh(t,e){return function(i,n,r){const s=i[0],o=i.length-1;if(t===e){if(o!==t){throw new Error(`expected ${t} argument${1===t?"":"s"} for ${s}, got ${o}`)}}else if(o<t||o>e){throw new Error(`expected ${e===1/0?`${t} or more`:`${t} to ${e}`} arguments for ${s}, got ${o}`)}}}function oh(t,e,i){const n=t.length-1,r=new Array(n);for(let s=0;s<n;++s){const n=Ql(t[s+1],e,i);r[s]=n}return r}function ah(t){return function(e,i,n){const r=e.length-1,s=new Array(r);for(let i=0;i<r;++i){const r=Ql(e[i+1],t,n);s[i]=r}return s}}function lh(t,e,i){const n=t[0],r=t.length-1;if(r%2==1)throw new Error(`expected an even number of arguments for operation ${n}, got ${r} instead`)}function hh(...t){return function(e,i,n){const r=e[0];let s;for(let r=0;r<t.length;r++){const o=t[r](e,i,n);if(r==t.length-1){if(!o)throw new Error("expected last argument validator to return the parsed args");s=o}}return new ql(i,r,...s)}}function ch(t){if(!t)return"";const e=t.getType();switch(e){case"Point":case"LineString":case"Polygon":return e;case"MultiPoint":case"MultiLineString":case"MultiPolygon":return e.substring(5);case"Circle":return"Polygon";case"GeometryCollection":return ch(t.getGeometries()[0]);default:return""}}function uh(){return{variables:{},properties:{},resolution:NaN,featureId:null,geometryType:""}}function dh(t,e,i){return gh(Ql(t,e,i))}function gh(t,e){if(t instanceof Kl){if(t.type===Bl&&"string"==typeof t.value){const e=Ll(t.value);return function(){return e}}return function(){return t.value}}const i=t.operator;switch(i){case th.Number:case th.String:case th.Coalesce:return function(t,e){const i=t.operator,n=t.args.length,r=new Array(n);for(let e=0;e<n;++e)r[e]=gh(t.args[e]);switch(i){case th.Coalesce:return t=>{for(let e=0;e<n;++e){const i=r[e](t);if(null!=i)return i}throw new Error("Expected one of the values to be non-null")};case th.Number:case th.String:return t=>{for(let e=0;e<n;++e){const n=r[e](t);if(typeof n===i)return n}throw new Error(`Expected one of the values to be a ${i}`)};default:throw new Error(`Unsupported assertion operator ${i}`)}}(t);case th.Get:case th.Var:case th.Has:return function(t,e){const i=t.args[0],n=i.value;switch(t.operator){case th.Get:return e=>{const i=t.args;let r=e.properties[n];for(let t=1,e=i.length;t<e;++t){r=r[i[t].value]}return r};case th.Var:return t=>t.variables[n];case th.Has:return e=>{const i=t.args;if(!(n in e.properties))return!1;let r=e.properties[n];for(let t=1,e=i.length;t<e;++t){const e=i[t].value;if(!r||!Object.hasOwn(r,e))return!1;r=r[e]}return!0};default:throw new Error(`Unsupported accessor operator ${t.operator}`)}}(t);case th.Id:return t=>t.featureId;case th.GeometryType:return t=>t.geometryType;case th.Concat:{const e=t.args.map((t=>gh(t)));return t=>"".concat(...e.map((e=>e(t).toString())))}case th.Resolution:return t=>t.resolution;case th.Any:case th.All:case th.Between:case th.In:case th.Not:return function(t,e){const i=t.operator,n=t.args.length,r=new Array(n);for(let e=0;e<n;++e)r[e]=gh(t.args[e]);switch(i){case th.Any:return t=>{for(let e=0;e<n;++e)if(r[e](t))return!0;return!1};case th.All:return t=>{for(let e=0;e<n;++e)if(!r[e](t))return!1;return!0};case th.Between:return t=>{const e=r[0](t),i=r[1](t),n=r[2](t);return e>=i&&e<=n};case th.In:return t=>{const e=r[0](t);for(let i=1;i<n;++i)if(e===r[i](t))return!0;return!1};case th.Not:return t=>!r[0](t);default:throw new Error(`Unsupported logical operator ${i}`)}}(t);case th.Equal:case th.NotEqual:case th.LessThan:case th.LessThanOrEqualTo:case th.GreaterThan:case th.GreaterThanOrEqualTo:return function(t,e){const i=t.operator,n=gh(t.args[0]),r=gh(t.args[1]);switch(i){case th.Equal:return t=>n(t)===r(t);case th.NotEqual:return t=>n(t)!==r(t);case th.LessThan:return t=>n(t)<r(t);case th.LessThanOrEqualTo:return t=>n(t)<=r(t);case th.GreaterThan:return t=>n(t)>r(t);case th.GreaterThanOrEqualTo:return t=>n(t)>=r(t);default:throw new Error(`Unsupported comparison operator ${i}`)}}(t);case th.Multiply:case th.Divide:case th.Add:case th.Subtract:case th.Clamp:case th.Mod:case th.Pow:case th.Abs:case th.Floor:case th.Ceil:case th.Round:case th.Sin:case th.Cos:case th.Atan:case th.Sqrt:return function(t,e){const i=t.operator,n=t.args.length,r=new Array(n);for(let e=0;e<n;++e)r[e]=gh(t.args[e]);switch(i){case th.Multiply:return t=>{let e=1;for(let i=0;i<n;++i)e*=r[i](t);return e};case th.Divide:return t=>r[0](t)/r[1](t);case th.Add:return t=>{let e=0;for(let i=0;i<n;++i)e+=r[i](t);return e};case th.Subtract:return t=>r[0](t)-r[1](t);case th.Clamp:return t=>{const e=r[0](t),i=r[1](t);if(e<i)return i;const n=r[2](t);return e>n?n:e};case th.Mod:return t=>r[0](t)%r[1](t);case th.Pow:return t=>Math.pow(r[0](t),r[1](t));case th.Abs:return t=>Math.abs(r[0](t));case th.Floor:return t=>Math.floor(r[0](t));case th.Ceil:return t=>Math.ceil(r[0](t));case th.Round:return t=>Math.round(r[0](t));case th.Sin:return t=>Math.sin(r[0](t));case th.Cos:return t=>Math.cos(r[0](t));case th.Atan:return 2===n?t=>Math.atan2(r[0](t),r[1](t)):t=>Math.atan(r[0](t));case th.Sqrt:return t=>Math.sqrt(r[0](t));default:throw new Error(`Unsupported numeric operator ${i}`)}}(t);case th.Case:return function(t,e){const i=t.args.length,n=new Array(i);for(let e=0;e<i;++e)n[e]=gh(t.args[e]);return t=>{for(let e=0;e<i-1;e+=2){if(n[e](t))return n[e+1](t)}return n[i-1](t)}}(t);case th.Match:return function(t,e){const i=t.args.length,n=new Array(i);for(let e=0;e<i;++e)n[e]=gh(t.args[e]);return t=>{const e=n[0](t);for(let r=1;r<i;r+=2)if(e===n[r](t))return n[r+1](t);return n[i-1](t)}}(t);case th.Interpolate:return function(t,e){const i=t.args.length,n=new Array(i);for(let e=0;e<i;++e)n[e]=gh(t.args[e]);return t=>{const e=n[0](t),r=n[1](t);let s,o;for(let a=2;a<i;a+=2){const i=n[a](t);let l=n[a+1](t);const h=Array.isArray(l);if(h&&(l=bl(l)),i>=r)return 2===a?l:h?ph(e,r,s,o,i,l):fh(e,r,s,o,i,l);s=i,o=l}return o}}(t);case th.ToString:return function(t,e){const i=t.operator,n=t.args.length,r=new Array(n);for(let e=0;e<n;++e)r[e]=gh(t.args[e]);if(i===th.ToString)return e=>{const i=r[0](e);return t.args[0].type===Bl?Al(i):i.toString()};throw new Error(`Unsupported convert operator ${i}`)}(t);default:throw new Error(`Unsupported operator ${i}`)}}function fh(t,e,i,n,r,s){const o=r-i;if(0===o)return n;const a=e-i;return n+(1===t?a/o:(Math.pow(t,a)-1)/(Math.pow(t,o)-1))*(s-n)}function ph(t,e,i,n,r,s){if(0===r-i)return n;const o=Pl(n),a=Pl(s);let l=a[2]-o[2];l>180?l-=360:l<-180&&(l+=360);return Ml(Il([fh(t,e,i,o[0],r,a[0]),fh(t,e,i,o[1],r,a[1]),o[2]+fh(t,e,i,0,r,l),fh(t,e,i,n[3],r,s[3])]))}class mh{constructor(){this.cache_={},this.patternCache_={},this.cacheSize_=0,this.maxCacheSize_=1024}clear(){this.cache_={},this.patternCache_={},this.cacheSize_=0}canExpireCache(){return this.cacheSize_>this.maxCacheSize_}expire(){if(this.canExpireCache()){let t=0;for(const e in this.cache_){const i=this.cache_[e];0!=(3&t++)||i.hasListener()||(delete this.cache_[e],delete this.patternCache_[e],--this.cacheSize_)}}}get(t,e,i){const n=_h(t,e,i);return n in this.cache_?this.cache_[n]:null}getPattern(t,e,i){const n=_h(t,e,i);return n in this.patternCache_?this.patternCache_[n]:null}set(t,e,i,n,r){const s=_h(t,e,i),o=s in this.cache_;this.cache_[s]=n,r&&(n.getImageState()===Cs.IDLE&&n.load(),n.getImageState()===Cs.LOADING?n.ready().then((()=>{this.patternCache_[s]=_t().createPattern(n.getImage(1),"repeat")})):this.patternCache_[s]=_t().createPattern(n.getImage(1),"repeat")),o||++this.cacheSize_}setSize(t){this.maxCacheSize_=t,this.expire()}}function _h(t,e,i){return e+":"+t+":"+(i?Fl(i):"null")}const yh=new mh;let xh=null;class vh extends O{constructor(t,e,i,n,r){super(),this.hitDetectionImage_=null,this.image_=t,this.crossOrigin_=i,this.canvas_={},this.color_=r,this.imageState_=void 0===n?Cs.IDLE:n,this.size_=t&&t.width&&t.height?[t.width,t.height]:null,this.src_=e,this.tainted_,this.ready_=null}initializeImage_(){this.image_=new Image,null!==this.crossOrigin_&&(this.image_.crossOrigin=this.crossOrigin_)}isTainted_(){if(void 0===this.tainted_&&this.imageState_===Cs.LOADED){xh||(xh=pt(1,1,void 0,{willReadFrequently:!0})),xh.drawImage(this.image_,0,0);try{xh.getImageData(0,0,1,1),this.tainted_=!1}catch{xh=null,this.tainted_=!0}}return!0===this.tainted_}dispatchChangeEvent_(){this.dispatchEvent(n)}handleImageError_(){this.imageState_=Cs.ERROR,this.dispatchChangeEvent_()}handleImageLoad_(){this.imageState_=Cs.LOADED,this.size_=[this.image_.width,this.image_.height],this.dispatchChangeEvent_()}getImage(t){return this.image_||this.initializeImage_(),this.replaceColor_(t),this.canvas_[t]?this.canvas_[t]:this.image_}getPixelRatio(t){return this.replaceColor_(t),this.canvas_[t]?t:1}getImageState(){return this.imageState_}getHitDetectionImage(){if(this.image_||this.initializeImage_(),!this.hitDetectionImage_)if(this.isTainted_()){const t=this.size_[0],e=this.size_[1],i=pt(t,e);i.fillRect(0,0,t,e),this.hitDetectionImage_=i.canvas}else this.hitDetectionImage_=this.image_;return this.hitDetectionImage_}getSize(){return this.size_}getSrc(){return this.src_}load(){if(this.imageState_===Cs.IDLE){this.image_||this.initializeImage_(),this.imageState_=Cs.LOADING;try{void 0!==this.src_&&(this.image_.src=this.src_)}catch{this.handleImageError_()}this.image_ instanceof HTMLImageElement&&Is(this.image_,this.src_).then((t=>{this.image_=t,this.handleImageLoad_()})).catch(this.handleImageError_.bind(this))}}replaceColor_(t){if(!this.color_||this.canvas_[t]||this.imageState_!==Cs.LOADED)return;const e=this.image_,i=pt(Math.ceil(e.width*t),Math.ceil(e.height*t)),n=i.canvas;i.scale(t,t),i.drawImage(e,0,0),i.globalCompositeOperation="multiply",i.fillStyle=wl(this.color_),i.fillRect(0,0,n.width/t,n.height/t),i.globalCompositeOperation="destination-in",i.drawImage(e,0,0),this.canvas_[t]=n}ready(){return this.ready_||(this.ready_=new Promise((t=>{if(this.imageState_===Cs.LOADED||this.imageState_===Cs.ERROR)t();else{const e=()=>{this.imageState_!==Cs.LOADED&&this.imageState_!==Cs.ERROR||(this.removeEventListener(n,e),t())};this.addEventListener(n,e)}}))),this.ready_}}function Eh(t,e,i,n,r,s){let o=void 0===e?void 0:yh.get(e,i,r);return o||(o=new vh(t,t&&"src"in t?t.src||void 0:e,i,n,r),yh.set(e,i,r,o,s)),s&&o&&!yh.getPattern(e,i,r)&&yh.set(e,i,r,o,s),o}function Sh(t){return t?Array.isArray(t)?Al(t):"object"==typeof t&&"src"in t?function(t){if(!t.offset||!t.size)return yh.getPattern(t.src,"anonymous",t.color);const e=t.src+":"+t.offset,i=yh.getPattern(e,void 0,t.color);if(i)return i;const n=yh.get(t.src,"anonymous",null);if(n.getImageState()!==Cs.LOADED)return null;const r=pt(t.size[0],t.size[1]);return r.drawImage(n.getImage(1),t.offset[0],t.offset[1],t.size[0],t.size[1],0,0,t.size[0],t.size[1]),Eh(r.canvas,e,void 0,Cs.LOADED,t.color,!0),yh.getPattern(e,void 0,t.color)}(t):t:null}const wh="10px sans-serif",Th="#000",Ch="round",Rh=[],bh="round",Ph=10,Ih="#000",Lh="center",Fh="middle",Mh=[0,0,0,0],Ah=new V;let Oh,Dh=null;const Nh={},kh=function(){const t="32px ",e=["monospace","serif"],i=e.length,n="wmytzilWMYTZIL@#/&?$%10";let r,s;function o(r,o,a){let l=!0;for(let h=0;h<i;++h){const i=e[h];if(s=Uh(r+" "+o+" "+t+i,n),a!=i){const e=Uh(r+" "+o+" "+t+a+","+i,n);l=l&&e!=s}}return!!l}function a(){let t=!0;const e=Ah.getKeys();for(let i=0,n=e.length;i<n;++i){const n=e[i];if(Ah.get(n)<100){const[e,i,r]=n.split("\n");o(e,i,r)?(L(Nh),Dh=null,Oh=void 0,Ah.set(n,100)):(Ah.set(n,Ah.get(n)+1,!0),t=!1)}}t&&(clearInterval(r),r=void 0)}return function(t){const e=Ao(t);if(!e)return;const i=e.families;for(let t=0,n=i.length;t<n;++t){const n=i[t],s=e.style+"\n"+e.weight+"\n"+n;void 0===Ah.get(s)&&(Ah.set(s,100,!0),o(e.style,e.weight,n)||(Ah.set(s,0,!0),void 0===r&&(r=setInterval(a,32))))}}}(),Gh=function(){let t;return function(e){let i=Nh[e];if(null==i){if(ut){const t=Ao(e),n=jh(e,"Žg");i=(isNaN(Number(t.lineHeight))?1.2:Number(t.lineHeight))*(n.actualBoundingBoxAscent+n.actualBoundingBoxDescent)}else t||(t=document.createElement("div"),t.innerHTML="M",t.style.minHeight="0",t.style.maxHeight="none",t.style.height="auto",t.style.padding="0",t.style.border="none",t.style.position="absolute",t.style.display="block",t.style.left="-99999px"),t.style.font=e,document.body.appendChild(t),i=t.offsetHeight,document.body.removeChild(t);Nh[e]=i}return i}}();function jh(t,e){return Dh||(Dh=pt(1,1)),t!=Oh&&(Dh.font=t,Oh=Dh.font),Dh.measureText(e)}function Uh(t,e){return jh(t,e).width}function Bh(t,e,i){if(e in i)return i[e];const n=e.split("\n").reduce(((e,i)=>Math.max(e,Uh(t,i))),0);return i[e]=n,n}function zh(t,e){const i=[],n=[],r=[];let s=0,o=0,a=0,l=0;for(let h=0,c=e.length;h<=c;h+=2){const u=e[h];if("\n"===u||h===c){s=Math.max(s,o),r.push(o),o=0,a+=l,l=0;continue}const d=e[h+1]||t.font,g=Uh(d,u);i.push(g),o+=g;const f=Gh(d);n.push(f),l=Math.max(l,f)}return{width:s,height:a,widths:i,heights:n,lineWidths:r}}function Xh(t,e,i,n,r,s,o,a,l,h,c){t.save(),1!==i&&(void 0===t.globalAlpha?t.globalAlpha=t=>t.globalAlpha*=i:t.globalAlpha*=i),e&&t.transform.apply(t,e),n.contextInstructions?(t.translate(l,h),t.scale(c[0],c[1]),function(t,e){const i=t.contextInstructions;for(let t=0,n=i.length;t<n;t+=2)Array.isArray(i[t+1])?e[i[t]].apply(e,i[t+1]):e[i[t]]=i[t+1]}(n,t)):c[0]<0||c[1]<0?(t.translate(l,h),t.scale(c[0],c[1]),t.drawImage(n,r,s,o,a,0,0,o,a)):t.drawImage(n,r,s,o,a,l,h,o*c[0],a*c[1]),t.restore()}class Vh{constructor(t){this.opacity_=t.opacity,this.rotateWithView_=t.rotateWithView,this.rotation_=t.rotation,this.scale_=t.scale,this.scaleArray_=Nl(t.scale),this.displacement_=t.displacement,this.declutterMode_=t.declutterMode}clone(){const t=this.getScale();return new Vh({opacity:this.getOpacity(),scale:Array.isArray(t)?t.slice():t,rotation:this.getRotation(),rotateWithView:this.getRotateWithView(),displacement:this.getDisplacement().slice(),declutterMode:this.getDeclutterMode()})}getOpacity(){return this.opacity_}getRotateWithView(){return this.rotateWithView_}getRotation(){return this.rotation_}getScale(){return this.scale_}getScaleArray(){return this.scaleArray_}getDisplacement(){return this.displacement_}getDeclutterMode(){return this.declutterMode_}getAnchor(){return U()}getImage(t){return U()}getHitDetectionImage(){return U()}getPixelRatio(t){return 1}getImageState(){return U()}getImageSize(){return U()}getOrigin(){return U()}getSize(){return U()}setDisplacement(t){this.displacement_=t}setOpacity(t){this.opacity_=t}setRotateWithView(t){this.rotateWithView_=t}setRotation(t){this.rotation_=t}setScale(t){this.scale_=t,this.scaleArray_=Nl(t)}listenImageChange(t){U()}load(){U()}unlistenImageChange(t){U()}ready(){return Promise.resolve()}}class $h extends Vh{constructor(t){super({opacity:1,rotateWithView:void 0!==t.rotateWithView&&t.rotateWithView,rotation:void 0!==t.rotation?t.rotation:0,scale:void 0!==t.scale?t.scale:1,displacement:void 0!==t.displacement?t.displacement:[0,0],declutterMode:t.declutterMode}),this.hitDetectionCanvas_=null,this.fill_=void 0!==t.fill?t.fill:null,this.origin_=[0,0],this.points_=t.points,this.radius=t.radius,this.radius2_=t.radius2,this.angle_=void 0!==t.angle?t.angle:0,this.stroke_=void 0!==t.stroke?t.stroke:null,this.size_,this.renderOptions_,this.imageState_=this.fill_&&this.fill_.loading()?Cs.LOADING:Cs.LOADED,this.imageState_===Cs.LOADING&&this.ready().then((()=>this.imageState_=Cs.LOADED)),this.render()}clone(){const t=this.getScale(),e=new $h({fill:this.getFill()?this.getFill().clone():void 0,points:this.getPoints(),radius:this.getRadius(),radius2:this.getRadius2(),angle:this.getAngle(),stroke:this.getStroke()?this.getStroke().clone():void 0,rotation:this.getRotation(),rotateWithView:this.getRotateWithView(),scale:Array.isArray(t)?t.slice():t,displacement:this.getDisplacement().slice(),declutterMode:this.getDeclutterMode()});return e.setOpacity(this.getOpacity()),e}getAnchor(){const t=this.size_,e=this.getDisplacement(),i=this.getScaleArray();return[t[0]/2-e[0]/i[0],t[1]/2+e[1]/i[1]]}getAngle(){return this.angle_}getFill(){return this.fill_}setFill(t){this.fill_=t,this.render()}getHitDetectionImage(){return this.hitDetectionCanvas_||(this.hitDetectionCanvas_=this.createHitDetectionCanvas_(this.renderOptions_)),this.hitDetectionCanvas_}getImage(t){const e=this.fill_?.getKey(),i=`${t},${this.angle_},${this.radius},${this.radius2_},${this.points_},${e}`+Object.values(this.renderOptions_).join(",");let n=yh.get(i,null,null)?.getImage(1);if(!n){const e=this.renderOptions_,r=Math.ceil(e.size*t),s=pt(r,r);this.draw_(e,s,t),n=s.canvas,yh.set(i,null,null,new vh(n,void 0,null,Cs.LOADED,null))}return n}getPixelRatio(t){return t}getImageSize(){return this.size_}getImageState(){return this.imageState_}getOrigin(){return this.origin_}getPoints(){return this.points_}getRadius(){return this.radius}getRadius2(){return this.radius2_}getSize(){return this.size_}getStroke(){return this.stroke_}setStroke(t){this.stroke_=t,this.render()}listenImageChange(t){}load(){}unlistenImageChange(t){}calculateLineJoinSize_(t,e,i){if(0===e||this.points_===1/0||"bevel"!==t&&"miter"!==t)return e;let n=this.radius,r=void 0===this.radius2_?n:this.radius2_;if(n<r){const t=n;n=r,r=t}const s=void 0===this.radius2_?this.points_:2*this.points_,o=2*Math.PI/s,a=r*Math.sin(o),l=n-Math.sqrt(r*r-a*a),h=Math.sqrt(a*a+l*l),c=h/a;if("miter"===t&&c<=i)return c*e;const u=e/2/c,d=e/2*(l/h),g=Math.sqrt((n+u)*(n+u)+d*d)-n;if(void 0===this.radius2_||"bevel"===t)return 2*g;const f=n*Math.sin(o),p=r-Math.sqrt(n*n-f*f),m=Math.sqrt(f*f+p*p)/f;if(m<=i){const t=m*e/2-r-n;return 2*Math.max(g,t)}return 2*g}createRenderOptions(){let t,e=Ch,i=bh,n=0,r=null,s=0,o=0;this.stroke_&&(t=Sh(this.stroke_.getColor()??Ih),o=this.stroke_.getWidth()??1,r=this.stroke_.getLineDash(),s=this.stroke_.getLineDashOffset()??0,i=this.stroke_.getLineJoin()??bh,e=this.stroke_.getLineCap()??Ch,n=this.stroke_.getMiterLimit()??Ph);const a=this.calculateLineJoinSize_(i,o,n),l=Math.max(this.radius,this.radius2_||0);return{strokeStyle:t,strokeWidth:o,size:Math.ceil(2*l+a),lineCap:e,lineDash:r,lineDashOffset:s,lineJoin:i,miterLimit:n}}render(){this.renderOptions_=this.createRenderOptions();const t=this.renderOptions_.size;this.hitDetectionCanvas_=null,this.size_=[t,t]}draw_(t,e,i){if(e.scale(i,i),e.translate(t.size/2,t.size/2),this.createPath_(e),this.fill_){let t=this.fill_.getColor();null===t&&(t=Th),e.fillStyle=Sh(t),e.fill()}t.strokeStyle&&(e.strokeStyle=t.strokeStyle,e.lineWidth=t.strokeWidth,t.lineDash&&(e.setLineDash(t.lineDash),e.lineDashOffset=t.lineDashOffset),e.lineCap=t.lineCap,e.lineJoin=t.lineJoin,e.miterLimit=t.miterLimit,e.stroke())}createHitDetectionCanvas_(t){let e;if(this.fill_){let i=this.fill_.getColor(),n=0;"string"==typeof i&&(i=Fl(i)),null===i?n=1:Array.isArray(i)&&(n=4===i.length?i[3]:1),0===n&&(e=pt(t.size,t.size),this.drawHitDetectionCanvas_(t,e))}return e?e.canvas:this.getImage(1)}createPath_(t){let e=this.points_;const i=this.radius;if(e===1/0)t.arc(0,0,i,0,2*Math.PI);else{const n=void 0===this.radius2_?i:this.radius2_;void 0!==this.radius2_&&(e*=2);const r=this.angle_-Math.PI/2,s=2*Math.PI/e;for(let o=0;o<e;o++){const e=r+o*s,a=o%2==0?i:n;t.lineTo(a*Math.cos(e),a*Math.sin(e))}t.closePath()}}drawHitDetectionCanvas_(t,e){e.translate(t.size/2,t.size/2),this.createPath_(e),e.fillStyle=Th,e.fill(),t.strokeStyle&&(e.strokeStyle=t.strokeStyle,e.lineWidth=t.strokeWidth,t.lineDash&&(e.setLineDash(t.lineDash),e.lineDashOffset=t.lineDashOffset),e.lineJoin=t.lineJoin,e.miterLimit=t.miterLimit,e.stroke())}ready(){return this.fill_?this.fill_.ready():Promise.resolve()}}class Wh extends $h{constructor(t){super({points:1/0,fill:(t=t||{radius:5}).fill,radius:t.radius,stroke:t.stroke,scale:void 0!==t.scale?t.scale:1,rotation:void 0!==t.rotation?t.rotation:0,rotateWithView:void 0!==t.rotateWithView&&t.rotateWithView,displacement:void 0!==t.displacement?t.displacement:[0,0],declutterMode:t.declutterMode})}clone(){const t=this.getScale(),e=new Wh({fill:this.getFill()?this.getFill().clone():void 0,stroke:this.getStroke()?this.getStroke().clone():void 0,radius:this.getRadius(),scale:Array.isArray(t)?t.slice():t,rotation:this.getRotation(),rotateWithView:this.getRotateWithView(),displacement:this.getDisplacement().slice(),declutterMode:this.getDeclutterMode()});return e.setOpacity(this.getOpacity()),e}setRadius(t){this.radius=t,this.render()}}class Zh{constructor(t){t=t||{},this.patternImage_=null,this.color_=null,void 0!==t.color&&this.setColor(t.color)}clone(){const t=this.getColor();return new Zh({color:Array.isArray(t)?t.slice():t||void 0})}getColor(){return this.color_}setColor(t){if(null!==t&&"object"==typeof t&&"src"in t){const e=Eh(null,t.src,"anonymous",void 0,t.offset?null:t.color?t.color:null,!(t.offset&&t.size));e.ready().then((()=>{this.patternImage_=null})),e.getImageState()===Cs.IDLE&&e.load(),e.getImageState()===Cs.LOADING&&(this.patternImage_=e)}this.color_=t}getKey(){const t=this.getColor();return t?t instanceof CanvasPattern||t instanceof CanvasGradient?z(t):"object"==typeof t&&"src"in t?t.src+":"+t.offset:Fl(t).toString():""}loading(){return!!this.patternImage_}ready(){return this.patternImage_?this.patternImage_.ready():Promise.resolve()}}function Yh(t,e,i,n){return void 0!==i&&void 0!==n?[i/t,n/e]:void 0!==i?i/t:void 0!==n?n/e:1}class Hh extends Vh{constructor(t){const e=void 0!==(t=t||{}).opacity?t.opacity:1,i=void 0!==t.rotation?t.rotation:0,n=void 0!==t.scale?t.scale:1,r=void 0!==t.rotateWithView&&t.rotateWithView;super({opacity:e,rotation:i,scale:n,displacement:void 0!==t.displacement?t.displacement:[0,0],rotateWithView:r,declutterMode:t.declutterMode}),this.anchor_=void 0!==t.anchor?t.anchor:[.5,.5],this.normalizedAnchor_=null,this.anchorOrigin_=void 0!==t.anchorOrigin?t.anchorOrigin:"top-left",this.anchorXUnits_=void 0!==t.anchorXUnits?t.anchorXUnits:"fraction",this.anchorYUnits_=void 0!==t.anchorYUnits?t.anchorYUnits:"fraction",this.crossOrigin_=void 0!==t.crossOrigin?t.crossOrigin:null;const s=void 0!==t.img?t.img:null;let o,a=t.src;if(Ft(!(void 0!==a&&s),"`image` and `src` cannot be provided at the same time"),void 0!==a&&0!==a.length||!s||(a=s.src||z(s)),Ft(void 0!==a&&a.length>0,"A defined and non-empty `src` or `image` must be provided"),Ft(!((void 0!==t.width||void 0!==t.height)&&void 0!==t.scale),"`width` or `height` cannot be provided together with `scale`"),void 0!==t.src?o=Cs.IDLE:void 0!==s&&(o="complete"in s?s.complete?s.src?Cs.LOADED:Cs.IDLE:Cs.LOADING:Cs.LOADED),this.color_=void 0!==t.color?Fl(t.color):null,this.iconImage_=Eh(s,a,this.crossOrigin_,o,this.color_),this.offset_=void 0!==t.offset?t.offset:[0,0],this.offsetOrigin_=void 0!==t.offsetOrigin?t.offsetOrigin:"top-left",this.origin_=null,this.size_=void 0!==t.size?t.size:null,this.initialOptions_,void 0!==t.width||void 0!==t.height){let e,i;if(t.size)[e,i]=t.size;else{const n=this.getImage(1);if(n.width&&n.height)e=n.width,i=n.height;else if(n instanceof HTMLImageElement){this.initialOptions_=t;const e=()=>{if(this.unlistenImageChange(e),!this.initialOptions_)return;const i=this.iconImage_.getSize();this.setScale(Yh(i[0],i[1],t.width,t.height))};return void this.listenImageChange(e)}}void 0!==e&&this.setScale(Yh(e,i,t.width,t.height))}}clone(){let t,e,i;return this.initialOptions_?(e=this.initialOptions_.width,i=this.initialOptions_.height):(t=this.getScale(),t=Array.isArray(t)?t.slice():t),new Hh({anchor:this.anchor_.slice(),anchorOrigin:this.anchorOrigin_,anchorXUnits:this.anchorXUnits_,anchorYUnits:this.anchorYUnits_,color:this.color_&&this.color_.slice?this.color_.slice():this.color_||void 0,crossOrigin:this.crossOrigin_,offset:this.offset_.slice(),offsetOrigin:this.offsetOrigin_,opacity:this.getOpacity(),rotateWithView:this.getRotateWithView(),rotation:this.getRotation(),scale:t,width:e,height:i,size:null!==this.size_?this.size_.slice():void 0,src:this.getSrc(),displacement:this.getDisplacement().slice(),declutterMode:this.getDeclutterMode()})}getAnchor(){let t=this.normalizedAnchor_;if(!t){t=this.anchor_;const e=this.getSize();if("fraction"==this.anchorXUnits_||"fraction"==this.anchorYUnits_){if(!e)return null;t=this.anchor_.slice(),"fraction"==this.anchorXUnits_&&(t[0]*=e[0]),"fraction"==this.anchorYUnits_&&(t[1]*=e[1])}if("top-left"!=this.anchorOrigin_){if(!e)return null;t===this.anchor_&&(t=this.anchor_.slice()),"top-right"!=this.anchorOrigin_&&"bottom-right"!=this.anchorOrigin_||(t[0]=-t[0]+e[0]),"bottom-left"!=this.anchorOrigin_&&"bottom-right"!=this.anchorOrigin_||(t[1]=-t[1]+e[1])}this.normalizedAnchor_=t}const e=this.getDisplacement(),i=this.getScaleArray();return[t[0]-e[0]/i[0],t[1]+e[1]/i[1]]}setAnchor(t){this.anchor_=t,this.normalizedAnchor_=null}getColor(){return this.color_}getImage(t){return this.iconImage_.getImage(t)}getPixelRatio(t){return this.iconImage_.getPixelRatio(t)}getImageSize(){return this.iconImage_.getSize()}getImageState(){return this.iconImage_.getImageState()}getHitDetectionImage(){return this.iconImage_.getHitDetectionImage()}getOrigin(){if(this.origin_)return this.origin_;let t=this.offset_;if("top-left"!=this.offsetOrigin_){const e=this.getSize(),i=this.iconImage_.getSize();if(!e||!i)return null;t=t.slice(),"top-right"!=this.offsetOrigin_&&"bottom-right"!=this.offsetOrigin_||(t[0]=i[0]-e[0]-t[0]),"bottom-left"!=this.offsetOrigin_&&"bottom-right"!=this.offsetOrigin_||(t[1]=i[1]-e[1]-t[1])}return this.origin_=t,this.origin_}getSrc(){return this.iconImage_.getSrc()}getSize(){return this.size_?this.size_:this.iconImage_.getSize()}getWidth(){const t=this.getScaleArray();return this.size_?this.size_[0]*t[0]:this.iconImage_.getImageState()==Cs.LOADED?this.iconImage_.getSize()[0]*t[0]:void 0}getHeight(){const t=this.getScaleArray();return this.size_?this.size_[1]*t[1]:this.iconImage_.getImageState()==Cs.LOADED?this.iconImage_.getSize()[1]*t[1]:void 0}setScale(t){delete this.initialOptions_,super.setScale(t)}listenImageChange(t){this.iconImage_.addEventListener(n,t)}load(){this.iconImage_.load()}unlistenImageChange(t){this.iconImage_.removeEventListener(n,t)}ready(){return this.iconImage_.ready()}}class Kh{constructor(t){t=t||{},this.color_=void 0!==t.color?t.color:null,this.lineCap_=t.lineCap,this.lineDash_=void 0!==t.lineDash?t.lineDash:null,this.lineDashOffset_=t.lineDashOffset,this.lineJoin_=t.lineJoin,this.miterLimit_=t.miterLimit,this.width_=t.width}clone(){const t=this.getColor();return new Kh({color:Array.isArray(t)?t.slice():t||void 0,lineCap:this.getLineCap(),lineDash:this.getLineDash()?this.getLineDash().slice():void 0,lineDashOffset:this.getLineDashOffset(),lineJoin:this.getLineJoin(),miterLimit:this.getMiterLimit(),width:this.getWidth()})}getColor(){return this.color_}getLineCap(){return this.lineCap_}getLineDash(){return this.lineDash_}getLineDashOffset(){return this.lineDashOffset_}getLineJoin(){return this.lineJoin_}getMiterLimit(){return this.miterLimit_}getWidth(){return this.width_}setColor(t){this.color_=t}setLineCap(t){this.lineCap_=t}setLineDash(t){this.lineDash_=t}setLineDashOffset(t){this.lineDashOffset_=t}setLineJoin(t){this.lineJoin_=t}setMiterLimit(t){this.miterLimit_=t}setWidth(t){this.width_=t}}class qh{constructor(t){t=t||{},this.geometry_=null,this.geometryFunction_=ic,void 0!==t.geometry&&this.setGeometry(t.geometry),this.fill_=void 0!==t.fill?t.fill:null,this.image_=void 0!==t.image?t.image:null,this.renderer_=void 0!==t.renderer?t.renderer:null,this.hitDetectionRenderer_=void 0!==t.hitDetectionRenderer?t.hitDetectionRenderer:null,this.stroke_=void 0!==t.stroke?t.stroke:null,this.text_=void 0!==t.text?t.text:null,this.zIndex_=t.zIndex}clone(){let t=this.getGeometry();return t&&"object"==typeof t&&(t=t.clone()),new qh({geometry:t??void 0,fill:this.getFill()?this.getFill().clone():void 0,image:this.getImage()?this.getImage().clone():void 0,renderer:this.getRenderer()??void 0,stroke:this.getStroke()?this.getStroke().clone():void 0,text:this.getText()?this.getText().clone():void 0,zIndex:this.getZIndex()})}getRenderer(){return this.renderer_}setRenderer(t){this.renderer_=t}setHitDetectionRenderer(t){this.hitDetectionRenderer_=t}getHitDetectionRenderer(){return this.hitDetectionRenderer_}getGeometry(){return this.geometry_}getGeometryFunction(){return this.geometryFunction_}getFill(){return this.fill_}setFill(t){this.fill_=t}getImage(){return this.image_}setImage(t){this.image_=t}getStroke(){return this.stroke_}setStroke(t){this.stroke_=t}getText(){return this.text_}setText(t){this.text_=t}getZIndex(){return this.zIndex_}setGeometry(t){"function"==typeof t?this.geometryFunction_=t:"string"==typeof t?this.geometryFunction_=function(e){return e.get(t)}:t?void 0!==t&&(this.geometryFunction_=function(){return t}):this.geometryFunction_=ic,this.geometry_=t}setZIndex(t){this.zIndex_=t}}function Jh(t){let e;if("function"==typeof t)e=t;else{let i;if(Array.isArray(t))i=t;else{Ft("function"==typeof t.getZIndex,"Expected an `Style` or an array of `Style`");i=[t]}e=function(){return i}}return e}let Qh=null;function tc(t,e){if(!Qh){const t=new Zh({color:"rgba(255,255,255,0.4)"}),e=new Kh({color:"#3399CC",width:1.25});Qh=[new qh({image:new Wh({fill:t,stroke:e,radius:5}),fill:t,stroke:e})]}return Qh}function ec(){const t={},e=[255,255,255,1],i=[0,153,255,1];return t.Polygon=[new qh({fill:new Zh({color:[255,255,255,.5]})})],t.MultiPolygon=t.Polygon,t.LineString=[new qh({stroke:new Kh({color:e,width:5})}),new qh({stroke:new Kh({color:i,width:3})})],t.MultiLineString=t.LineString,t.Circle=t.Polygon.concat(t.LineString),t.Point=[new qh({image:new Wh({radius:6,fill:new Zh({color:i}),stroke:new Kh({color:e,width:1.5})}),zIndex:1/0})],t.MultiPoint=t.Point,t.GeometryCollection=t.Polygon.concat(t.LineString,t.Point),t}function ic(t){return t.getGeometry()}class nc{constructor(t){t=t||{},this.font_=t.font,this.rotation_=t.rotation,this.rotateWithView_=t.rotateWithView,this.keepUpright_=t.keepUpright,this.scale_=t.scale,this.scaleArray_=Nl(void 0!==t.scale?t.scale:1),this.text_=t.text,this.textAlign_=t.textAlign,this.justify_=t.justify,this.repeat_=t.repeat,this.textBaseline_=t.textBaseline,this.fill_=void 0!==t.fill?t.fill:new Zh({color:"#333"}),this.maxAngle_=void 0!==t.maxAngle?t.maxAngle:Math.PI/4,this.placement_=void 0!==t.placement?t.placement:"point",this.overflow_=!!t.overflow,this.stroke_=void 0!==t.stroke?t.stroke:null,this.offsetX_=void 0!==t.offsetX?t.offsetX:0,this.offsetY_=void 0!==t.offsetY?t.offsetY:0,this.backgroundFill_=t.backgroundFill?t.backgroundFill:null,this.backgroundStroke_=t.backgroundStroke?t.backgroundStroke:null,this.padding_=void 0===t.padding?null:t.padding,this.declutterMode_=t.declutterMode}clone(){const t=this.getScale();return new nc({font:this.getFont(),placement:this.getPlacement(),repeat:this.getRepeat(),maxAngle:this.getMaxAngle(),overflow:this.getOverflow(),rotation:this.getRotation(),rotateWithView:this.getRotateWithView(),keepUpright:this.getKeepUpright(),scale:Array.isArray(t)?t.slice():t,text:this.getText(),textAlign:this.getTextAlign(),justify:this.getJustify(),textBaseline:this.getTextBaseline(),fill:this.getFill()?this.getFill().clone():void 0,stroke:this.getStroke()?this.getStroke().clone():void 0,offsetX:this.getOffsetX(),offsetY:this.getOffsetY(),backgroundFill:this.getBackgroundFill()?this.getBackgroundFill().clone():void 0,backgroundStroke:this.getBackgroundStroke()?this.getBackgroundStroke().clone():void 0,padding:this.getPadding()||void 0,declutterMode:this.getDeclutterMode()})}getOverflow(){return this.overflow_}getFont(){return this.font_}getMaxAngle(){return this.maxAngle_}getPlacement(){return this.placement_}getRepeat(){return this.repeat_}getOffsetX(){return this.offsetX_}getOffsetY(){return this.offsetY_}getFill(){return this.fill_}getRotateWithView(){return this.rotateWithView_}getKeepUpright(){return this.keepUpright_}getRotation(){return this.rotation_}getScale(){return this.scale_}getScaleArray(){return this.scaleArray_}getStroke(){return this.stroke_}getText(){return this.text_}getTextAlign(){return this.textAlign_}getJustify(){return this.justify_}getTextBaseline(){return this.textBaseline_}getBackgroundFill(){return this.backgroundFill_}getBackgroundStroke(){return this.backgroundStroke_}getPadding(){return this.padding_}getDeclutterMode(){return this.declutterMode_}setOverflow(t){this.overflow_=t}setFont(t){this.font_=t}setMaxAngle(t){this.maxAngle_=t}setOffsetX(t){this.offsetX_=t}setOffsetY(t){this.offsetY_=t}setPlacement(t){this.placement_=t}setRepeat(t){this.repeat_=t}setRotateWithView(t){this.rotateWithView_=t}setKeepUpright(t){this.keepUpright_=t}setFill(t){this.fill_=t}setRotation(t){this.rotation_=t}setScale(t){this.scale_=t,this.scaleArray_=Nl(void 0!==t?t:1)}setStroke(t){this.stroke_=t}setText(t){this.text_=t}setTextAlign(t){this.textAlign_=t}setJustify(t){this.justify_=t}setTextBaseline(t){this.textBaseline_=t}setBackgroundFill(t){this.backgroundFill_=t}setBackgroundStroke(t){this.backgroundStroke_=t}setPadding(t){this.padding_=t}}function rc(t){return!0}function sc(t){const e=Jl(),i=ac(t,e),n={variables:{},properties:{},resolution:NaN,featureId:null,geometryType:""};return function(t,r){if(n.properties=t.getPropertiesInternal(),n.resolution=r,e.featureId){const e=t.getId();n.featureId=void 0!==e?e:null}return e.geometryType&&(n.geometryType=ch(t.getGeometry())),i(n)}}function oc(t){const e=Jl(),i=t.length,n=new Array(i);for(let r=0;r<i;++r)n[r]=lc(t[r],e);const r={variables:{},properties:{},resolution:NaN,featureId:null,geometryType:""},s=new Array(i);return function(t,o){if(r.properties=t.getPropertiesInternal(),r.resolution=o,e.featureId){const e=t.getId();r.featureId=void 0!==e?e:null}let a=0;for(let t=0;t<i;++t){const e=n[t](r);e&&(s[a]=e,a+=1)}return s.length=a,s}}function ac(t,e){const i=t.length,n=new Array(i);for(let r=0;r<i;++r){const i=t[r],s="filter"in i?dh(i.filter,Gl,e):rc;let o;if(Array.isArray(i.style)){const t=i.style.length;o=new Array(t);for(let n=0;n<t;++n)o[n]=lc(i.style[n],e)}else o=[lc(i.style,e)];n[r]={filter:s,styles:o}}return function(e){const r=[];let s=!1;for(let o=0;o<i;++o){if((0,n[o].filter)(e)&&(!t[o].else||!s)){s=!0;for(const t of n[o].styles){const i=t(e);i&&r.push(i)}}}return r}}function lc(t,e){const i=hc(t,"",e),n=cc(t,"",e),r=function(t,e){const i="text-",n=dc(t,i+"value",e);if(!n)return null;const r=hc(t,i,e),s=hc(t,i+"background-",e),o=cc(t,i,e),a=cc(t,i+"background-",e),l=dc(t,i+"font",e),h=uc(t,i+"max-angle",e),c=uc(t,i+"offset-x",e),u=uc(t,i+"offset-y",e),d=gc(t,i+"overflow",e),g=dc(t,i+"placement",e),f=uc(t,i+"repeat",e),p=yc(t,i+"scale",e),m=gc(t,i+"rotate-with-view",e),_=uc(t,i+"rotation",e),y=dc(t,i+"align",e),x=dc(t,i+"justify",e),v=dc(t,i+"baseline",e),E=gc(t,i+"keep-upright",e),S=pc(t,i+"padding",e),w=Sc(t,i+"declutter-mode"),T=new nc({declutterMode:w});return function(t){if(T.setText(n(t)),r&&T.setFill(r(t)),s&&T.setBackgroundFill(s(t)),o&&T.setStroke(o(t)),a&&T.setBackgroundStroke(a(t)),l&&T.setFont(l(t)),h&&T.setMaxAngle(h(t)),c&&T.setOffsetX(c(t)),u&&T.setOffsetY(u(t)),d&&T.setOverflow(d(t)),g){const e=g(t);if("point"!==e&&"line"!==e)throw new Error("Expected point or line for text-placement");T.setPlacement(e)}if(f&&T.setRepeat(f(t)),p&&T.setScale(p(t)),m&&T.setRotateWithView(m(t)),_&&T.setRotation(_(t)),y){const e=y(t);if("left"!==e&&"center"!==e&&"right"!==e&&"end"!==e&&"start"!==e)throw new Error("Expected left, right, center, start, or end for text-align");T.setTextAlign(e)}if(x){const e=x(t);if("left"!==e&&"right"!==e&&"center"!==e)throw new Error("Expected left, right, or center for text-justify");T.setJustify(e)}if(v){const e=v(t);if("bottom"!==e&&"top"!==e&&"middle"!==e&&"alphabetic"!==e&&"hanging"!==e)throw new Error("Expected bottom, top, middle, alphabetic, or hanging for text-baseline");T.setTextBaseline(e)}return S&&T.setPadding(S(t)),E&&T.setKeepUpright(E(t)),T}}(t,e),s=function(t,e){if("icon-src"in t)return function(t,e){const i="icon-",n=i+"src",r=Tc(t[n],n),s=mc(t,i+"anchor",e),o=yc(t,i+"scale",e),a=uc(t,i+"opacity",e),l=mc(t,i+"displacement",e),h=uc(t,i+"rotation",e),c=gc(t,i+"rotate-with-view",e),u=vc(t,i+"anchor-origin"),d=Ec(t,i+"anchor-x-units"),g=Ec(t,i+"anchor-y-units"),f=function(t,e){const i=t[e];if(void 0===i)return;return Rc(i,e)}(t,i+"color"),p=function(t,e){const i=t[e];if(void 0===i)return;if("string"!=typeof i)throw new Error(`Expected a string for ${e}`);return i}(t,i+"cross-origin"),m=function(t,e){const i=t[e];if(void 0===i)return;return wc(i,e)}(t,i+"offset"),_=vc(t,i+"offset-origin"),y=xc(t,i+"width"),x=xc(t,i+"height"),v=function(t,e){const i=t[e];if(void 0===i)return;if("number"==typeof i)return Nl(i);if(!Array.isArray(i))throw new Error(`Expected a number or size array for ${e}`);if(2!==i.length||"number"!=typeof i[0]||"number"!=typeof i[1])throw new Error(`Expected a number or size array for ${e}`);return i}(t,i+"size"),E=Sc(t,i+"declutter-mode"),S=new Hh({src:r,anchorOrigin:u,anchorXUnits:d,anchorYUnits:g,color:f,crossOrigin:p,offset:m,offsetOrigin:_,height:x,width:y,size:v,declutterMode:E});return function(t){return a&&S.setOpacity(a(t)),l&&S.setDisplacement(l(t)),h&&S.setRotation(h(t)),c&&S.setRotateWithView(c(t)),o&&S.setScale(o(t)),s&&S.setAnchor(s(t)),S}}(t,e);if("shape-points"in t)return function(t,e){const i="shape-",n=i+"points",r=i+"radius",s=Cc(t[n],n),o=Cc(t[r],r),a=hc(t,i,e),l=cc(t,i,e),h=yc(t,i+"scale",e),c=mc(t,i+"displacement",e),u=uc(t,i+"rotation",e),d=gc(t,i+"rotate-with-view",e),g=xc(t,i+"radius2"),f=xc(t,i+"angle"),p=Sc(t,i+"declutter-mode"),m=new $h({points:s,radius:o,radius2:g,angle:f,declutterMode:p});return function(t){return a&&m.setFill(a(t)),l&&m.setStroke(l(t)),c&&m.setDisplacement(c(t)),u&&m.setRotation(u(t)),d&&m.setRotateWithView(d(t)),h&&m.setScale(h(t)),m}}(t,e);if("circle-radius"in t)return function(t,e){const i="circle-",n=hc(t,i,e),r=cc(t,i,e),s=uc(t,i+"radius",e),o=yc(t,i+"scale",e),a=mc(t,i+"displacement",e),l=uc(t,i+"rotation",e),h=gc(t,i+"rotate-with-view",e),c=Sc(t,i+"declutter-mode"),u=new Wh({radius:5,declutterMode:c});return function(t){return s&&u.setRadius(s(t)),n&&u.setFill(n(t)),r&&u.setStroke(r(t)),a&&u.setDisplacement(a(t)),l&&u.setRotation(l(t)),h&&u.setRotateWithView(h(t)),o&&u.setScale(o(t)),u}}(t,e);return null}(t,e),o=uc(t,"z-index",e);if(!(i||n||r||s||F(t)))throw new Error("No fill, stroke, point, or text symbolizer properties in style: "+JSON.stringify(t));const a=new qh;return function(t){let e=!0;if(i){const n=i(t);n&&(e=!1),a.setFill(n)}if(n){const i=n(t);i&&(e=!1),a.setStroke(i)}if(r){const i=r(t);i&&(e=!1),a.setText(i)}if(s){const i=s(t);i&&(e=!1),a.setImage(i)}return o&&a.setZIndex(o(t)),e?null:a}}function hc(t,e,i){let n;if(e+"fill-pattern-src"in t)n=function(t,e,i){const n=dc(t,e+"pattern-src",i),r=_c(t,e+"pattern-offset",i),s=_c(t,e+"pattern-size",i),o=fc(t,e+"color",i);return function(t){return{src:n(t),offset:r&&r(t),size:s&&s(t),color:o&&o(t)}}}(t,e+"fill-",i);else{if("none"===t[e+"fill-color"])return t=>null;n=fc(t,e+"fill-color",i)}if(!n)return null;const r=new Zh;return function(t){const e=n(t);return e===Sl?null:(r.setColor(e),r)}}function cc(t,e,i){const n=uc(t,e+"stroke-width",i),r=fc(t,e+"stroke-color",i);if(!n&&!r)return null;const s=dc(t,e+"stroke-line-cap",i),o=dc(t,e+"stroke-line-join",i),a=pc(t,e+"stroke-line-dash",i),l=uc(t,e+"stroke-line-dash-offset",i),h=uc(t,e+"stroke-miter-limit",i),c=new Kh;return function(t){if(r){const e=r(t);if(e===Sl)return null;c.setColor(e)}if(n&&c.setWidth(n(t)),s){const e=s(t);if("butt"!==e&&"round"!==e&&"square"!==e)throw new Error("Expected butt, round, or square line cap");c.setLineCap(e)}if(o){const e=o(t);if("bevel"!==e&&"round"!==e&&"miter"!==e)throw new Error("Expected bevel, round, or miter line join");c.setLineJoin(e)}return a&&c.setLineDash(a(t)),l&&c.setLineDashOffset(l(t)),h&&c.setMiterLimit(h(t)),c}}function uc(t,e,i){if(!(e in t))return;const n=dh(t[e],jl,i);return function(t){return Cc(n(t),e)}}function dc(t,e,i){if(!(e in t))return null;const n=dh(t[e],Ul,i);return function(t){return Tc(n(t),e)}}function gc(t,e,i){if(!(e in t))return null;const n=dh(t[e],Gl,i);return function(t){const i=n(t);if("boolean"!=typeof i)throw new Error(`Expected a boolean for ${e}`);return i}}function fc(t,e,i){if(!(e in t))return null;const n=dh(t[e],Bl,i);return function(t){return Rc(n(t),e)}}function pc(t,e,i){if(!(e in t))return null;const n=dh(t[e],zl,i);return function(t){return wc(n(t),e)}}function mc(t,e,i){if(!(e in t))return null;const n=dh(t[e],zl,i);return function(t){const i=wc(n(t),e);if(2!==i.length)throw new Error(`Expected two numbers for ${e}`);return i}}function _c(t,e,i){if(!(e in t))return null;const n=dh(t[e],zl,i);return function(t){return bc(n(t),e)}}function yc(t,e,i){if(!(e in t))return null;const n=dh(t[e],zl|jl,i);return function(t){return function(t,e){if("number"==typeof t)return t;return bc(t,e)}(n(t),e)}}function xc(t,e){const i=t[e];if(void 0!==i){if("number"!=typeof i)throw new Error(`Expected a number for ${e}`);return i}}function vc(t,e){const i=t[e];if(void 0!==i){if("bottom-left"!==i&&"bottom-right"!==i&&"top-left"!==i&&"top-right"!==i)throw new Error(`Expected bottom-left, bottom-right, top-left, or top-right for ${e}`);return i}}function Ec(t,e){const i=t[e];if(void 0!==i){if("pixels"!==i&&"fraction"!==i)throw new Error(`Expected pixels or fraction for ${e}`);return i}}function Sc(t,e){const i=t[e];if(void 0!==i){if("string"!=typeof i)throw new Error(`Expected a string for ${e}`);if("declutter"!==i&&"obstacle"!==i&&"none"!==i)throw new Error(`Expected declutter, obstacle, or none for ${e}`);return i}}function wc(t,e){if(!Array.isArray(t))throw new Error(`Expected an array for ${e}`);const i=t.length;for(let n=0;n<i;++n)if("number"!=typeof t[n])throw new Error(`Expected an array of numbers for ${e}`);return t}function Tc(t,e){if("string"!=typeof t)throw new Error(`Expected a string for ${e}`);return t}function Cc(t,e){if("number"!=typeof t)throw new Error(`Expected a number for ${e}`);return t}function Rc(t,e){if("string"==typeof t)return t;const i=wc(t,e),n=i.length;if(n<3||n>4)throw new Error(`Expected a color with 3 or 4 values for ${e}`);return i}function bc(t,e){const i=wc(t,e);if(2!==i.length)throw new Error(`Expected an array of two numbers for ${e}`);return i}const Pc="renderOrder";class Ic extends Wa{constructor(t){t=t||{};const e=Object.assign({},t);delete e.style,delete e.renderBuffer,delete e.updateWhileAnimating,delete e.updateWhileInteracting,super(e),this.declutter_=t.declutter?String(t.declutter):void 0,this.renderBuffer_=void 0!==t.renderBuffer?t.renderBuffer:100,this.style_=null,this.styleFunction_=void 0,this.setStyle(t.style),this.updateWhileAnimating_=void 0!==t.updateWhileAnimating&&t.updateWhileAnimating,this.updateWhileInteracting_=void 0!==t.updateWhileInteracting&&t.updateWhileInteracting}getDeclutter(){return this.declutter_}getFeatures(t){return super.getFeatures(t)}getRenderBuffer(){return this.renderBuffer_}getRenderOrder(){return this.get(Pc)}getStyle(){return this.style_}getStyleFunction(){return this.styleFunction_}getUpdateWhileAnimating(){return this.updateWhileAnimating_}getUpdateWhileInteracting(){return this.updateWhileInteracting_}renderDeclutter(t,e){const i=this.getDeclutter();i in t.declutter==!1&&(t.declutter[i]=new qa(9)),this.getRenderer().renderDeclutter(t,e)}setRenderOrder(t){this.set(Pc,t)}setStyle(t){this.style_=void 0===t?tc:t;const e=function(t){if(void 0===t)return tc;if(!t)return null;if("function"==typeof t)return t;if(t instanceof qh)return t;if(!Array.isArray(t))return oc([t]);if(0===t.length)return[];const e=t.length,i=t[0];if(i instanceof qh){const i=new Array(e);for(let n=0;n<e;++n){const e=t[n];if(!(e instanceof qh))throw new Error("Expected a list of style instances");i[n]=e}return i}if("style"in i){const i=new Array(e);for(let n=0;n<e;++n){const e=t[n];if(!("style"in e))throw new Error("Expected a list of rules with a style property");i[n]=e}return sc(i)}const n=t;return oc(n)}(t);this.styleFunction_=null===t?void 0:Jh(e),this.changed()}setDeclutter(t){this.declutter_=t?String(t):void 0,this.changed()}}class Lc extends M{constructor(t,e,i,n){super(t),this.inversePixelTransform=e,this.frameState=i,this.context=n}}class Fc extends m{constructor(t){super(),this.map_=t}dispatchRenderEvent(t,e){U()}calculateMatrices2D(t){const e=t.viewState,i=t.coordinateToPixelTransform,n=t.pixelToCoordinateTransform;er(i,t.size[0]/2,t.size[1]/2,1/e.resolution,-1/e.resolution,-e.rotation,-e.center[0],-e.center[1]),ir(n,i)}forEachFeatureAtCoordinate(t,e,i,n,r,s,o,a){let l;const h=e.viewState;function c(t,e,i,n){return r.call(s,e,t?i:null,n)}const u=h.projection,d=si(t.slice(),u),g=[[0,0]];if(u.canWrapX()&&n){const t=fe(u.getExtent());g.push([-t,0],[t,0])}const f=e.layerStatesArray,p=f.length,m=[],_=[];for(let n=0;n<g.length;n++)for(let r=p-1;r>=0;--r){const s=f[r],u=s.layer;if(u.hasRenderer()&&Za(s,h)&&o.call(a,u)){const r=u.getRenderer(),o=u.getSource();if(r&&o){const a=o.getWrapX()?d:t,h=c.bind(null,s.managed);_[0]=a[0]+g[n][0],_[1]=a[1]+g[n][1],l=r.forEachFeatureAtCoordinate(_,e,i,h,m)}if(l)return l}}if(0===m.length)return;const y=1/m.length;return m.forEach(((t,e)=>t.distanceSq+=e*y)),m.sort(((t,e)=>t.distanceSq-e.distanceSq)),m.some((t=>l=t.callback(t.feature,t.layer,t.geometry))),l}hasFeatureAtCoordinate(t,e,i,n,r,s){return void 0!==this.forEachFeatureAtCoordinate(t,e,i,n,C,this,r,s)}getMap(){return this.map_}renderFrame(t){U()}scheduleExpireIconCache(t){yh.canExpireCache()&&t.postRenderFunctions.push(Mc)}}function Mc(t,e){yh.expire()}class Ac extends Fc{constructor(t){super(t),this.fontChangeListenerKey_=D(Ah,i,t.redrawText,t),this.element_=document.createElement("div");const e=this.element_.style;e.position="absolute",e.width="100%",e.height="100%",e.zIndex="0",this.element_.className=bo+" ol-layers";const n=t.getViewport();n.insertBefore(this.element_,n.firstChild||null),this.children_=[],this.renderedVisible_=!0}dispatchRenderEvent(t,e){const i=this.getMap();if(i.hasListener(t)){const n=new Lc(t,void 0,e);i.dispatchEvent(n)}}disposeInternal(){k(this.fontChangeListenerKey_),this.element_.remove(),super.disposeInternal()}renderFrame(t){if(!t)return void(this.renderedVisible_&&(this.element_.style.display="none",this.renderedVisible_=!1));this.calculateMatrices2D(t),this.dispatchRenderEvent(Xa,t);const e=t.layerStatesArray.sort(((t,e)=>t.zIndex-e.zIndex));e.some((t=>t.layer instanceof Ic&&t.layer.getDeclutter()))&&(t.declutter={});const i=t.viewState;this.children_.length=0;const n=[];let r=null;for(let s=0,o=e.length;s<o;++s){const o=e[s];t.layerIndex=s;const a=o.layer,l=a.getSourceState();if(!Za(o,i)||"ready"!=l&&"undefined"!=l){a.unrender();continue}const h=a.render(t,r);h&&(h!==r&&(this.children_.push(h),r=h),n.push(o))}this.declutter(t,n),wt(this.element_,this.children_),this.dispatchRenderEvent(Va,t),this.renderedVisible_||(this.element_.style.display="",this.renderedVisible_=!0),this.scheduleExpireIconCache(t)}declutter(t,e){if(t.declutter){for(let i=e.length-1;i>=0;--i){const n=e[i],r=n.layer;r.getDeclutter()&&r.renderDeclutter(t,n)}e.forEach((e=>e.layer.renderDeferred(t)))}}}function Oc(t){t instanceof Wa?t.setMapInternal(null):t instanceof Ua&&t.getLayers().forEach(Oc)}function Dc(t,e){if(t instanceof Wa)t.setMapInternal(e);else if(t instanceof Ua){const i=t.getLayers().getArray();for(let t=0,n=i.length;t<n;++t)Dc(i[t],e)}}let Nc=class extends V{constructor(i){super(),i=i||{},this.on,this.once,this.un;const n=function(t){let e=null;void 0!==t.keyboardEventTarget&&(e="string"==typeof t.keyboardEventTarget?document.getElementById(t.keyboardEventTarget):t.keyboardEventTarget);const i={},n=t.layers&&"function"==typeof t.layers.getLayers?t.layers:new Ua({layers:t.layers});let r,s,o;i[Zs]=n,i[Hs]=t.target,i[Ks]=t.view instanceof yo?t.view:new yo,void 0!==t.controls&&(Array.isArray(t.controls)?r=new Z(t.controls.slice()):(Ft("function"==typeof t.controls.getArray,"Expected `controls` to be an array or an `ol/Collection.js`"),r=t.controls));void 0!==t.interactions&&(Array.isArray(t.interactions)?s=new Z(t.interactions.slice()):(Ft("function"==typeof t.interactions.getArray,"Expected `interactions` to be an array or an `ol/Collection.js`"),s=t.interactions));void 0!==t.overlays?Array.isArray(t.overlays)?o=new Z(t.overlays.slice()):(Ft("function"==typeof t.overlays.getArray,"Expected `overlays` to be an array or an `ol/Collection.js`"),o=t.overlays):o=new Z;return{controls:r,interactions:s,keyboardEventTarget:e,overlays:o,values:i}}(i);this.renderComplete_=!1,this.loaded_=!0,this.boundHandleBrowserEvent_=this.handleBrowserEvent.bind(this),this.maxTilesLoading_=void 0!==i.maxTilesLoading?i.maxTilesLoading:16,this.pixelRatio_=void 0!==i.pixelRatio?i.pixelRatio:ct,this.postRenderTimeoutHandle_,this.animationDelayKey_,this.animationDelay_=this.animationDelay_.bind(this),this.coordinateToPixelTransform_=[1,0,0,1,0,0],this.pixelToCoordinateTransform_=[1,0,0,1,0,0],this.frameIndex_=0,this.frameState_=null,this.previousExtent_=null,this.viewPropertyListenerKey_=null,this.viewChangeListenerKey_=null,this.layerGroupPropertyListenerKeys_=null,this.viewport_=document.createElement("div"),this.viewport_.className="ol-viewport"+("ontouchstart"in window?" ol-touch":""),this.viewport_.style.position="relative",this.viewport_.style.overflow="hidden",this.viewport_.style.width="100%",this.viewport_.style.height="100%",this.overlayContainer_=document.createElement("div"),this.overlayContainer_.style.position="absolute",this.overlayContainer_.style.zIndex="0",this.overlayContainer_.style.width="100%",this.overlayContainer_.style.height="100%",this.overlayContainer_.style.pointerEvents="none",this.overlayContainer_.className="ol-overlaycontainer",this.viewport_.appendChild(this.overlayContainer_),this.overlayContainerStopEvent_=document.createElement("div"),this.overlayContainerStopEvent_.style.position="absolute",this.overlayContainerStopEvent_.style.zIndex="0",this.overlayContainerStopEvent_.style.width="100%",this.overlayContainerStopEvent_.style.height="100%",this.overlayContainerStopEvent_.style.pointerEvents="none",this.overlayContainerStopEvent_.className="ol-overlaycontainer-stopevent",this.viewport_.appendChild(this.overlayContainerStopEvent_),this.mapBrowserEventHandler_=null,this.moveTolerance_=i.moveTolerance,this.keyboardEventTarget_=n.keyboardEventTarget,this.targetChangeHandlerKeys_=null,this.targetElement_=null,this.resizeObserver_=new ResizeObserver((()=>this.updateSize())),this.controls=n.controls||Go(),this.interactions=n.interactions||Ra({onFocusOnly:!0}),this.overlays_=n.overlays,this.overlayIdIndex_={},this.renderer_=null,this.postRenderFunctions_=[],this.tileQueue_=new Qs(this.getTilePriority.bind(this),this.handleTileChange_.bind(this)),this.addChangeListener(Zs,this.handleLayerGroupChanged_),this.addChangeListener(Ks,this.handleViewChanged_),this.addChangeListener(Ys,this.handleSizeChanged_),this.addChangeListener(Hs,this.handleTargetChanged_),this.setProperties(n.values);const r=this;!i.view||i.view instanceof yo||i.view.then((function(t){r.setView(new yo(t))})),this.controls.addEventListener(t,(t=>{t.element.setMap(this)})),this.controls.addEventListener(e,(t=>{t.element.setMap(null)})),this.interactions.addEventListener(t,(t=>{t.element.setMap(this)})),this.interactions.addEventListener(e,(t=>{t.element.setMap(null)})),this.overlays_.addEventListener(t,(t=>{this.addOverlayInternal_(t.element)})),this.overlays_.addEventListener(e,(t=>{const e=t.element.getId();void 0!==e&&delete this.overlayIdIndex_[e.toString()],t.element.setMap(null)})),this.controls.forEach((t=>{t.setMap(this)})),this.interactions.forEach((t=>{t.setMap(this)})),this.overlays_.forEach(this.addOverlayInternal_.bind(this))}addControl(t){this.getControls().push(t)}addInteraction(t){this.getInteractions().push(t)}addLayer(t){this.getLayerGroup().getLayers().push(t)}handleLayerAdd_(t){Dc(t.layer,this)}addOverlay(t){this.getOverlays().push(t)}addOverlayInternal_(t){const e=t.getId();void 0!==e&&(this.overlayIdIndex_[e.toString()]=t),t.setMap(this)}disposeInternal(){this.controls.clear(),this.interactions.clear(),this.overlays_.clear(),this.resizeObserver_.disconnect(),this.setTarget(null),super.disposeInternal()}forEachFeatureAtPixel(t,e,i){if(!this.frameState_||!this.renderer_)return;const n=this.getCoordinateFromPixelInternal(t),r=void 0!==(i=void 0!==i?i:{}).hitTolerance?i.hitTolerance:0,s=void 0!==i.layerFilter?i.layerFilter:C,o=!1!==i.checkWrapped;return this.renderer_.forEachFeatureAtCoordinate(n,this.frameState_,r,o,e,null,s,null)}getFeaturesAtPixel(t,e){const i=[];return this.forEachFeatureAtPixel(t,(function(t){i.push(t)}),e),i}getAllLayers(){const t=[];return function e(i){i.forEach((function(i){i instanceof Ua?e(i.getLayers()):t.push(i)}))}(this.getLayers()),t}hasFeatureAtPixel(t,e){if(!this.frameState_||!this.renderer_)return!1;const i=this.getCoordinateFromPixelInternal(t),n=void 0!==(e=void 0!==e?e:{}).layerFilter?e.layerFilter:C,r=void 0!==e.hitTolerance?e.hitTolerance:0,s=!1!==e.checkWrapped;return this.renderer_.hasFeatureAtCoordinate(i,this.frameState_,r,s,n,null)}getEventCoordinate(t){return this.getCoordinateFromPixel(this.getEventPixel(t))}getEventCoordinateInternal(t){return this.getCoordinateFromPixelInternal(this.getEventPixel(t))}getEventPixel(t){const e=this.viewport_.getBoundingClientRect(),i=this.getSize(),n=e.width/i[0],r=e.height/i[1],s="changedTouches"in t?t.changedTouches[0]:t;return[(s.clientX-e.left)/n,(s.clientY-e.top)/r]}getTarget(){return this.get(Hs)}getTargetElement(){return this.targetElement_}getCoordinateFromPixel(t){return kn(this.getCoordinateFromPixelInternal(t),this.getView().getProjection())}getCoordinateFromPixelInternal(t){const e=this.frameState_;return e?qn(e.pixelToCoordinateTransform,t.slice()):null}getControls(){return this.controls}getOverlays(){return this.overlays_}getOverlayById(t){const e=this.overlayIdIndex_[t.toString()];return void 0!==e?e:null}getInteractions(){return this.interactions}getLayerGroup(){return this.get(Zs)}setLayers(t){const e=this.getLayerGroup();if(t instanceof Z)return void e.setLayers(t);const i=e.getLayers();i.clear(),i.extend(t)}getLayers(){return this.getLayerGroup().getLayers()}getLoadingOrNotReady(){const t=this.getLayerGroup().getLayerStatesArray();for(let e=0,i=t.length;e<i;++e){const i=t[e];if(!i.visible)continue;const n=i.layer.getRenderer();if(n&&!n.ready)return!0;const r=i.layer.getSource();if(r&&r.loading)return!0}return!1}getPixelFromCoordinate(t){const e=Gn(t,this.getView().getProjection());return this.getPixelFromCoordinateInternal(e)}getPixelFromCoordinateInternal(t){const e=this.frameState_;return e?qn(e.coordinateToPixelTransform,t.slice(0,2)):null}getRenderer(){return this.renderer_}getSize(){return this.get(Ys)}getView(){return this.get(Ks)}getViewport(){return this.viewport_}getOverlayContainer(){return this.overlayContainer_}getOverlayContainerStopEvent(){return this.overlayContainerStopEvent_}getOwnerDocument(){const t=this.getTargetElement();return t?t.ownerDocument:document}getTilePriority(t,e,i,n){return to(this.frameState_,t,e,i,n)}handleBrowserEvent(t,e){e=e||t.type;const i=new Ds(e,this,t);this.handleMapBrowserEvent(i)}handleMapBrowserEvent(t){if(!this.frameState_)return;const e=t.originalEvent,i=e.type;if(i===Gs||i===p||i===u){const t=this.getOwnerDocument(),i=this.viewport_.getRootNode?this.viewport_.getRootNode():t,n=e.target,r=i instanceof ShadowRoot?i.host===n?i.host.ownerDocument:i:i===t?t.documentElement:i;if(this.overlayContainerStopEvent_.contains(n)||!r.contains(n))return}if(t.frameState=this.frameState_,!1!==this.dispatchEvent(t)){const e=this.getInteractions().getArray().slice();for(let i=e.length-1;i>=0;i--){const n=e[i];if(n.getMap()!==this||!n.getActive()||!this.getTargetElement())continue;if(!n.handleEvent(t)||t.propagationStopped)break}}}handlePostRender(){const t=this.frameState_,e=this.tileQueue_;if(!e.isEmpty()){let i=this.maxTilesLoading_,n=i;if(t){const e=t.viewHints;if(e[eo]||e[io]){const e=Date.now()-t.time>8;i=e?0:8,n=e?0:2}}e.getTilesLoading()<i&&(e.reprioritize(),e.loadMoreTiles(i,n))}t&&this.renderer_&&!t.animate&&(this.renderComplete_?(this.hasListener($a)&&this.renderer_.dispatchRenderEvent($a,t),!1===this.loaded_&&(this.loaded_=!0,this.dispatchEvent(new Os(Ws,this,t)))):!0===this.loaded_&&(this.loaded_=!1,this.dispatchEvent(new Os($s,this,t))));const i=this.postRenderFunctions_;if(t)for(let e=0,n=i.length;e<n;++e)i[e](this,t);i.length=0}handleSizeChanged_(){this.getView()&&!this.getView().getAnimating()&&this.getView().resolveConstraints(0),this.render()}handleTargetChanged_(){if(this.mapBrowserEventHandler_){for(let t=0,e=this.targetChangeHandlerKeys_.length;t<e;++t)k(this.targetChangeHandlerKeys_[t]);this.targetChangeHandlerKeys_=null,this.viewport_.removeEventListener(s,this.boundHandleBrowserEvent_),this.viewport_.removeEventListener(p,this.boundHandleBrowserEvent_),this.mapBrowserEventHandler_.dispose(),this.mapBrowserEventHandler_=null,this.viewport_.remove()}if(this.targetElement_){this.resizeObserver_.unobserve(this.targetElement_);const t=this.targetElement_.getRootNode();t instanceof ShadowRoot&&this.resizeObserver_.unobserve(t.host),this.setSize(void 0)}const t=this.getTarget(),e="string"==typeof t?document.getElementById(t):t;if(this.targetElement_=e,e){e.appendChild(this.viewport_),this.renderer_||(this.renderer_=new Ac(this)),this.mapBrowserEventHandler_=new Bs(this,this.moveTolerance_);for(const t in Ns)this.mapBrowserEventHandler_.addEventListener(Ns[t],this.handleMapBrowserEvent.bind(this));let t;if(this.viewport_.addEventListener(s,this.boundHandleBrowserEvent_,!1),this.viewport_.addEventListener(p,this.boundHandleBrowserEvent_,!!ft&&{passive:!1}),this.keyboardEventTarget_)t=this.keyboardEventTarget_;else{const i=e.getRootNode();t=i instanceof ShadowRoot?i.host:e}this.targetChangeHandlerKeys_=[D(t,u,this.handleBrowserEvent,this),D(t,d,this.handleBrowserEvent,this)];const i=e.getRootNode();i instanceof ShadowRoot&&this.resizeObserver_.observe(i.host),this.resizeObserver_.observe(e)}else this.renderer_&&(clearTimeout(this.postRenderTimeoutHandle_),this.postRenderTimeoutHandle_=void 0,this.postRenderFunctions_.length=0,this.renderer_.dispose(),this.renderer_=null),this.animationDelayKey_&&(cancelAnimationFrame(this.animationDelayKey_),this.animationDelayKey_=void 0);this.updateSize()}handleTileChange_(){this.render()}handleViewPropertyChanged_(){this.render()}handleViewChanged_(){this.viewPropertyListenerKey_&&(k(this.viewPropertyListenerKey_),this.viewPropertyListenerKey_=null),this.viewChangeListenerKey_&&(k(this.viewChangeListenerKey_),this.viewChangeListenerKey_=null);const t=this.getView();t&&(this.updateViewportSize_(this.getSize()),this.viewPropertyListenerKey_=D(t,i,this.handleViewPropertyChanged_,this),this.viewChangeListenerKey_=D(t,n,this.handleViewPropertyChanged_,this),t.resolveConstraints(0)),this.render()}handleLayerGroupChanged_(){this.layerGroupPropertyListenerKeys_&&(this.layerGroupPropertyListenerKeys_.forEach(k),this.layerGroupPropertyListenerKeys_=null);const t=this.getLayerGroup();t&&(this.handleLayerAdd_(new Ga("addlayer",t)),this.layerGroupPropertyListenerKeys_=[D(t,i,this.render,this),D(t,n,this.render,this),D(t,"addlayer",this.handleLayerAdd_,this),D(t,"removelayer",this.handleLayerRemove_,this)]),this.render()}isRendered(){return!!this.frameState_}animationDelay_(){this.animationDelayKey_=void 0,this.renderFrame_(Date.now())}renderSync(){this.animationDelayKey_&&cancelAnimationFrame(this.animationDelayKey_),this.animationDelay_()}redrawText(){const t=this.getLayerGroup().getLayerStatesArray();for(let e=0,i=t.length;e<i;++e){const i=t[e].layer;i.hasRenderer()&&i.getRenderer().handleFontsChanged()}}render(){this.renderer_&&void 0===this.animationDelayKey_&&(this.animationDelayKey_=requestAnimationFrame(this.animationDelay_))}removeControl(t){return this.getControls().remove(t)}removeInteraction(t){return this.getInteractions().remove(t)}removeLayer(t){return this.getLayerGroup().getLayers().remove(t)}handleLayerRemove_(t){Oc(t.layer)}removeOverlay(t){return this.getOverlays().remove(t)}renderFrame_(t){const e=this.getSize(),i=this.getView(),n=this.frameState_;let r=null;if(void 0!==e&&Ol(e)&&i&&i.isDef()){const n=i.getHints(this.frameState_?this.frameState_.viewHints:void 0),s=i.getState();if(r={animate:!1,coordinateToPixelTransform:this.coordinateToPixelTransform_,declutter:null,extent:le(s.center,s.resolution,s.rotation,e),index:this.frameIndex_++,layerIndex:0,layerStatesArray:this.getLayerGroup().getLayerStatesArray(),pixelRatio:this.pixelRatio_,pixelToCoordinateTransform:this.pixelToCoordinateTransform_,postRenderFunctions:[],size:e,tileQueue:this.tileQueue_,time:t,usedTiles:{},viewState:s,viewHints:n,wantedTiles:{},mapId:z(this),renderTargets:{}},s.nextCenter&&s.nextResolution){const t=isNaN(s.nextRotation)?s.rotation:s.nextRotation;r.nextExtent=le(s.nextCenter,s.nextResolution,t,e)}}if(this.frameState_=r,this.renderer_.renderFrame(r),r){if(r.animate&&this.render(),Array.prototype.push.apply(this.postRenderFunctions_,r.postRenderFunctions),n){(!this.previousExtent_||!me(this.previousExtent_)&&!Yt(r.extent,this.previousExtent_))&&(this.dispatchEvent(new Os(Xs,this,n)),this.previousExtent_=$t(this.previousExtent_))}this.previousExtent_&&!r.viewHints[eo]&&!r.viewHints[io]&&!Yt(r.extent,this.previousExtent_)&&(this.dispatchEvent(new Os(Vs,this,r)),kt(r.extent,this.previousExtent_))}this.dispatchEvent(new Os(zs,this,r)),this.renderComplete_=(this.hasListener($s)||this.hasListener(Ws)||this.hasListener($a))&&!this.tileQueue_.getTilesLoading()&&!this.tileQueue_.getCount()&&!this.getLoadingOrNotReady(),this.postRenderTimeoutHandle_||(this.postRenderTimeoutHandle_=setTimeout((()=>{this.postRenderTimeoutHandle_=void 0,this.handlePostRender()}),0))}setLayerGroup(t){const e=this.getLayerGroup();e&&this.handleLayerRemove_(new Ga("removelayer",e)),this.set(Zs,t)}setSize(t){this.set(Ys,t)}setTarget(t){this.set(Hs,t)}setView(t){if(!t||t instanceof yo)return void this.set(Ks,t);this.set(Ks,new yo);const e=this;t.then((function(t){e.setView(new yo(t))}))}updateSize(){const t=this.getTargetElement();let e;if(t){const i=getComputedStyle(t),n=t.offsetWidth-parseFloat(i.borderLeftWidth)-parseFloat(i.paddingLeft)-parseFloat(i.paddingRight)-parseFloat(i.borderRightWidth),r=t.offsetHeight-parseFloat(i.borderTopWidth)-parseFloat(i.paddingTop)-parseFloat(i.paddingBottom)-parseFloat(i.borderBottomWidth);isNaN(n)||isNaN(r)||(e=[Math.max(0,n),Math.max(0,r)],!Ol(e)&&(t.offsetWidth||t.offsetHeight||t.getClientRects().length)&&Xe("No map visible because the map container's width or height are 0."))}const i=this.getSize();!e||i&&w(e,i)||(this.setSize(e),this.updateViewportSize_(e))}updateViewportSize_(t){const e=this.getView();e&&e.setViewportSize(t)}};const kc="element",Gc="map",jc="offset",Uc="position",Bc="positioning";class zc extends V{constructor(t){super(),this.on,this.once,this.un,this.options=t,this.id=t.id,this.insertFirst=void 0===t.insertFirst||t.insertFirst,this.stopEvent=void 0===t.stopEvent||t.stopEvent,this.element=document.createElement("div"),this.element.className=void 0!==t.className?t.className:"ol-overlay-container "+Ro,this.element.style.position="absolute",this.element.style.pointerEvents="auto",this.autoPan=!0===t.autoPan?{}:t.autoPan||void 0,this.rendered={transform_:"",visible:!0},this.mapPostrenderListenerKey=null,this.addChangeListener(kc,this.handleElementChanged),this.addChangeListener(Gc,this.handleMapChanged),this.addChangeListener(jc,this.handleOffsetChanged),this.addChangeListener(Uc,this.handlePositionChanged),this.addChangeListener(Bc,this.handlePositioningChanged),void 0!==t.element&&this.setElement(t.element),this.setOffset(void 0!==t.offset?t.offset:[0,0]),this.setPositioning(t.positioning||"top-left"),void 0!==t.position&&this.setPosition(t.position)}getElement(){return this.get(kc)}getId(){return this.id}getMap(){return this.get(Gc)||null}getOffset(){return this.get(jc)}getPosition(){return this.get(Uc)}getPositioning(){return this.get(Bc)}handleElementChanged(){St(this.element);const t=this.getElement();t&&this.element.appendChild(t)}handleMapChanged(){this.mapPostrenderListenerKey&&(this.element?.remove(),k(this.mapPostrenderListenerKey),this.mapPostrenderListenerKey=null);const t=this.getMap();if(t){this.mapPostrenderListenerKey=D(t,zs,this.render,this),this.updatePixelPosition();const e=this.stopEvent?t.getOverlayContainerStopEvent():t.getOverlayContainer();this.insertFirst?e.insertBefore(this.element,e.childNodes[0]||null):e.appendChild(this.element),this.performAutoPan()}}render(){this.updatePixelPosition()}handleOffsetChanged(){this.updatePixelPosition()}handlePositionChanged(){this.updatePixelPosition(),this.performAutoPan()}handlePositioningChanged(){this.updatePixelPosition()}setElement(t){this.set(kc,t)}setMap(t){this.set(Gc,t)}setOffset(t){this.set(jc,t)}setPosition(t){this.set(Uc,t)}performAutoPan(){this.autoPan&&this.panIntoView(this.autoPan)}panIntoView(t){const e=this.getMap();if(!e||!e.getTargetElement()||!this.get(Uc))return;const i=this.getRect(e.getTargetElement(),e.getSize()),n=this.getElement(),r=this.getRect(n,[xt(n),vt(n)]),s=void 0===(t=t||{}).margin?20:t.margin;if(!Ut(i,r)){const n=r[0]-i[0],o=i[2]-r[2],a=r[1]-i[1],l=i[3]-r[3],h=[0,0];if(n<0?h[0]=n-s:o<0&&(h[0]=Math.abs(o)+s),a<0?h[1]=a-s:l<0&&(h[1]=Math.abs(l)+s),0!==h[0]||0!==h[1]){const i=e.getView().getCenterInternal(),n=e.getPixelFromCoordinateInternal(i);if(!n)return;const r=[n[0]+h[0],n[1]+h[1]],s=t.animation||{};e.getView().animateInternal({center:e.getCoordinateFromPixelInternal(r),duration:s.duration,easing:s.easing})}}}getRect(t,e){const i=t.getBoundingClientRect(),n=i.left+window.pageXOffset,r=i.top+window.pageYOffset;return[n,r,n+e[0],r+e[1]]}setPositioning(t){this.set(Bc,t)}setVisible(t){this.rendered.visible!==t&&(this.element.style.display=t?"":"none",this.rendered.visible=t)}updatePixelPosition(){const t=this.getMap(),e=this.getPosition();if(!t||!t.isRendered()||!e)return void this.setVisible(!1);const i=t.getPixelFromCoordinate(e),n=t.getSize();this.updateRenderedPosition(i,n)}updateRenderedPosition(t,e){const i=this.element.style,n=this.getOffset(),r=this.getPositioning();this.setVisible(!0);let s="0%",o="0%";"bottom-right"==r||"center-right"==r||"top-right"==r?s="-100%":"bottom-center"!=r&&"center-center"!=r&&"top-center"!=r||(s="-50%"),"bottom-left"==r||"bottom-center"==r||"bottom-right"==r?o="-100%":"center-left"!=r&&"center-center"!=r&&"center-right"!=r||(o="-50%");const a=`translate(${s}, ${o}) translate(${Math.round(t[0]+n[0])+"px"}, ${Math.round(t[1]+n[1])+"px"})`;this.rendered.transform_!=a&&(this.rendered.transform_=a,i.transform=a)}getOptions(){return this.options}}class Xc{constructor(t,e,i,n){this.minX=t,this.maxX=e,this.minY=i,this.maxY=n}contains(t){return this.containsXY(t[1],t[2])}containsTileRange(t){return this.minX<=t.minX&&t.maxX<=this.maxX&&this.minY<=t.minY&&t.maxY<=this.maxY}containsXY(t,e){return this.minX<=t&&t<=this.maxX&&this.minY<=e&&e<=this.maxY}equals(t){return this.minX==t.minX&&this.minY==t.minY&&this.maxX==t.maxX&&this.maxY==t.maxY}extend(t){t.minX<this.minX&&(this.minX=t.minX),t.maxX>this.maxX&&(this.maxX=t.maxX),t.minY<this.minY&&(this.minY=t.minY),t.maxY>this.maxY&&(this.maxY=t.maxY)}getHeight(){return this.maxY-this.minY+1}getSize(){return[this.getWidth(),this.getHeight()]}getWidth(){return this.maxX-this.minX+1}intersects(t){return this.minX<=t.maxX&&this.maxX>=t.minX&&this.minY<=t.maxY&&this.maxY>=t.minY}}function Vc(t,e,i,n,r){return void 0!==r?(r.minX=t,r.maxX=e,r.minY=i,r.maxY=n,r):new Xc(t,e,i,n)}const $c=[];class Wc extends nt{constructor(t,e,i,n,r){super(t,e,{transition:0}),this.context_=null,this.executorGroups={},this.loadingSourceTiles=0,this.hitDetectionImageData={},this.replayState_={},this.sourceTiles=[],this.errorTileKeys={},this.wantedResolution,this.getSourceTiles=n.bind(void 0,this),this.removeSourceTiles_=r,this.wrappedTileCoord=i}getContext(){return this.context_||(this.context_=pt(1,1,$c)),this.context_}hasContext(){return!!this.context_}getImage(){return this.hasContext()?this.getContext().canvas:null}getReplayState(t){const e=z(t);return e in this.replayState_||(this.replayState_[e]={dirty:!1,renderedRenderOrder:null,renderedResolution:NaN,renderedRevision:-1,renderedTileResolution:NaN,renderedTileRevision:-1,renderedTileZ:-1}),this.replayState_[e]}load(){this.getSourceTiles()}release(){this.context_&&(yt(this.context_),$c.push(this.context_.canvas),this.context_=null),this.removeSourceTiles_(this),this.sourceTiles.length=0,super.release()}}let Zc,Yc=class extends nt{constructor(t,e,i,n,r,s){super(t,e,s),this.extent=null,this.format_=n,this.features_=null,this.loader_,this.projection=null,this.resolution,this.tileLoadFunction_=r,this.url_=i,this.key=i}getTileUrl(){return this.url_}getFormat(){return this.format_}getFeatures(){return this.features_}load(){this.state==Y&&(this.setState(H),this.tileLoadFunction_(this,this.url_),this.loader_&&this.loader_(this.extent,this.resolution,this.projection))}onLoad(t,e){this.setFeatures(t)}onError(){this.setState(q)}setFeatures(t){this.features_=t,this.setState(K)}setLoader(t){this.loader_=t}},Hc=!1;function Kc(t,e,i,n,r,s,o){const a=new XMLHttpRequest;a.open("GET","function"==typeof t?t(i,n,r):t,!0),"arraybuffer"==e.getType()&&(a.responseType="arraybuffer"),a.withCredentials=Hc,a.onload=function(t){if(!a.status||a.status>=200&&a.status<300){const t=e.getType();try{let n;"text"==t||"json"==t?n=a.responseText:"xml"==t?n=a.responseXML||a.responseText:"arraybuffer"==t&&(n=a.response),n?s(e.readFeatures(n,{extent:i,featureProjection:r}),e.readProjection(n)):o()}catch{o()}}else o()},a.onerror=o,a.send()}function qc(t,e){return function(i,n,r,s,o){Kc(t,e,i,n,r,((t,e)=>{this.addFeatures(t),void 0!==s&&s(t)}),o||b)}}function Jc(t,e){return[[-1/0,-1/0,1/0,1/0]]}function Qc(t,e,i,n){const r=document.createElement("script"),s="olc_"+z(e);function o(){delete window[s],r.parentNode.removeChild(r)}r.async=!0,r.src=t+(t.includes("?")?"&":"?")+(n||"callback")+"="+s;const a=setTimeout((function(){o(),i&&i()}),1e4);window[s]=function(t){clearTimeout(a),o(),e(t)},document.head.appendChild(r)}class tu extends Error{constructor(t){super("Unexpected response status: "+t.status),this.name="ResponseError",this.response=t}}class eu extends Error{constructor(t){super("Failed to issue request"),this.name="ClientError",this.client=t}}function iu(t){return new Promise((function(e,i){const n=new XMLHttpRequest;n.addEventListener("load",(function(t){const n=t.target;if(!n.status||n.status>=200&&n.status<300){let t;try{t=JSON.parse(n.responseText)}catch(t){const e="Error parsing response text as JSON: "+t.message;return void i(new Error(e))}e(t)}else i(new tu(n))})),n.addEventListener("error",(function(t){i(new eu(t.target))})),n.open("GET",t),n.setRequestHeader("Accept","application/json"),n.send()}))}function nu(t,e){return e.includes("://")?e:new URL(e,t).href}class ru{drawCustom(t,e,i,n,r){}drawGeometry(t){}setStyle(t){}drawCircle(t,e,i){}drawFeature(t,e,i){}drawGeometryCollection(t,e,i){}drawLineString(t,e,i){}drawMultiLineString(t,e,i){}drawMultiPoint(t,e,i){}drawMultiPolygon(t,e,i){}drawPoint(t,e,i){}drawPolygon(t,e,i){}drawText(t,e,i){}setFillStrokeStyle(t,e){}setImageStyle(t,e){}setTextStyle(t,e){}}class su extends ru{constructor(t,e,i,n,r,s,o){super(),this.context_=t,this.pixelRatio_=e,this.extent_=i,this.transform_=n,this.transformRotation_=n?Fe(Math.atan2(n[1],n[0]),10):0,this.viewRotation_=r,this.squaredTolerance_=s,this.userTransform_=o,this.contextFillState_=null,this.contextStrokeState_=null,this.contextTextState_=null,this.fillState_=null,this.strokeState_=null,this.image_=null,this.imageAnchorX_=0,this.imageAnchorY_=0,this.imageHeight_=0,this.imageOpacity_=0,this.imageOriginX_=0,this.imageOriginY_=0,this.imageRotateWithView_=!1,this.imageRotation_=0,this.imageScale_=[0,0],this.imageWidth_=0,this.text_="",this.textOffsetX_=0,this.textOffsetY_=0,this.textRotateWithView_=!1,this.textRotation_=0,this.textScale_=[0,0],this.textFillState_=null,this.textStrokeState_=null,this.textState_=null,this.pixelCoordinates_=[],this.tmpLocalTransform_=[1,0,0,1,0,0]}drawImages_(t,e,i,n){if(!this.image_)return;const r=or(t,e,i,n,this.transform_,this.pixelCoordinates_),s=this.context_,o=this.tmpLocalTransform_,a=s.globalAlpha;1!=this.imageOpacity_&&(s.globalAlpha=a*this.imageOpacity_);let l=this.imageRotation_;0===this.transformRotation_&&(l-=this.viewRotation_),this.imageRotateWithView_&&(l+=this.viewRotation_);for(let t=0,e=r.length;t<e;t+=2){const e=r[t]-this.imageAnchorX_,i=r[t+1]-this.imageAnchorY_;if(0!==l||1!=this.imageScale_[0]||1!=this.imageScale_[1]){const t=e+this.imageAnchorX_,n=i+this.imageAnchorY_;er(o,t,n,1,1,l,-t,-n),s.save(),s.transform.apply(s,o),s.translate(t,n),s.scale(this.imageScale_[0],this.imageScale_[1]),s.drawImage(this.image_,this.imageOriginX_,this.imageOriginY_,this.imageWidth_,this.imageHeight_,-this.imageAnchorX_,-this.imageAnchorY_,this.imageWidth_,this.imageHeight_),s.restore()}else s.drawImage(this.image_,this.imageOriginX_,this.imageOriginY_,this.imageWidth_,this.imageHeight_,e,i,this.imageWidth_,this.imageHeight_)}1!=this.imageOpacity_&&(s.globalAlpha=a)}drawText_(t,e,i,n){if(!this.textState_||""===this.text_)return;this.textFillState_&&this.setContextFillState_(this.textFillState_),this.textStrokeState_&&this.setContextStrokeState_(this.textStrokeState_),this.setContextTextState_(this.textState_);const r=or(t,e,i,n,this.transform_,this.pixelCoordinates_),s=this.context_;let o=this.textRotation_;for(0===this.transformRotation_&&(o-=this.viewRotation_),this.textRotateWithView_&&(o+=this.viewRotation_);e<i;e+=n){const t=r[e]+this.textOffsetX_,i=r[e+1]+this.textOffsetY_;0!==o||1!=this.textScale_[0]||1!=this.textScale_[1]?(s.save(),s.translate(t-this.textOffsetX_,i-this.textOffsetY_),s.rotate(o),s.translate(this.textOffsetX_,this.textOffsetY_),s.scale(this.textScale_[0],this.textScale_[1]),this.textStrokeState_&&s.strokeText(this.text_,0,0),this.textFillState_&&s.fillText(this.text_,0,0),s.restore()):(this.textStrokeState_&&s.strokeText(this.text_,t,i),this.textFillState_&&s.fillText(this.text_,t,i))}}moveToLineTo_(t,e,i,n,r){const s=this.context_,o=or(t,e,i,n,this.transform_,this.pixelCoordinates_);s.moveTo(o[0],o[1]);let a=o.length;r&&(a-=2);for(let t=2;t<a;t+=2)s.lineTo(o[t],o[t+1]);return r&&s.closePath(),i}drawRings_(t,e,i,n){for(let r=0,s=i.length;r<s;++r)e=this.moveToLineTo_(t,e,i[r],n,!0);return e}drawCircle(t){if(this.squaredTolerance_&&(t=t.simplifyTransformed(this.squaredTolerance_,this.userTransform_)),pe(this.extent_,t.getExtent())){if(this.fillState_||this.strokeState_){this.fillState_&&this.setContextFillState_(this.fillState_),this.strokeState_&&this.setContextStrokeState_(this.strokeState_);const e=mr(t,this.transform_,this.pixelCoordinates_),i=e[2]-e[0],n=e[3]-e[1],r=Math.sqrt(i*i+n*n),s=this.context_;s.beginPath(),s.arc(e[0],e[1],r,0,2*Math.PI),this.fillState_&&s.fill(),this.strokeState_&&s.stroke()}""!==this.text_&&this.drawText_(t.getCenter(),0,2,2)}}setStyle(t){this.setFillStrokeStyle(t.getFill(),t.getStroke()),this.setImageStyle(t.getImage()),this.setTextStyle(t.getText())}setTransform(t){this.transform_=t}drawGeometry(t){switch(t.getType()){case"Point":this.drawPoint(t);break;case"LineString":this.drawLineString(t);break;case"Polygon":this.drawPolygon(t);break;case"MultiPoint":this.drawMultiPoint(t);break;case"MultiLineString":this.drawMultiLineString(t);break;case"MultiPolygon":this.drawMultiPolygon(t);break;case"GeometryCollection":this.drawGeometryCollection(t);break;case"Circle":this.drawCircle(t)}}drawFeature(t,e){const i=e.getGeometryFunction()(t);i&&(this.setStyle(e),this.drawGeometry(i))}drawGeometryCollection(t){const e=t.getGeometriesArray();for(let t=0,i=e.length;t<i;++t)this.drawGeometry(e[t])}drawPoint(t){this.squaredTolerance_&&(t=t.simplifyTransformed(this.squaredTolerance_,this.userTransform_));const e=t.getFlatCoordinates(),i=t.getStride();this.image_&&this.drawImages_(e,0,e.length,i),""!==this.text_&&this.drawText_(e,0,e.length,i)}drawMultiPoint(t){this.squaredTolerance_&&(t=t.simplifyTransformed(this.squaredTolerance_,this.userTransform_));const e=t.getFlatCoordinates(),i=t.getStride();this.image_&&this.drawImages_(e,0,e.length,i),""!==this.text_&&this.drawText_(e,0,e.length,i)}drawLineString(t){if(this.squaredTolerance_&&(t=t.simplifyTransformed(this.squaredTolerance_,this.userTransform_)),pe(this.extent_,t.getExtent())){if(this.strokeState_){this.setContextStrokeState_(this.strokeState_);const e=this.context_,i=t.getFlatCoordinates();e.beginPath(),this.moveToLineTo_(i,0,i.length,t.getStride(),!1),e.stroke()}if(""!==this.text_){const e=t.getFlatMidpoint();this.drawText_(e,0,2,2)}}}drawMultiLineString(t){this.squaredTolerance_&&(t=t.simplifyTransformed(this.squaredTolerance_,this.userTransform_));const e=t.getExtent();if(pe(this.extent_,e)){if(this.strokeState_){this.setContextStrokeState_(this.strokeState_);const e=this.context_,i=t.getFlatCoordinates();let n=0;const r=t.getEnds(),s=t.getStride();e.beginPath();for(let t=0,e=r.length;t<e;++t)n=this.moveToLineTo_(i,n,r[t],s,!1);e.stroke()}if(""!==this.text_){const e=t.getFlatMidpoints();this.drawText_(e,0,e.length,2)}}}drawPolygon(t){if(this.squaredTolerance_&&(t=t.simplifyTransformed(this.squaredTolerance_,this.userTransform_)),pe(this.extent_,t.getExtent())){if(this.strokeState_||this.fillState_){this.fillState_&&this.setContextFillState_(this.fillState_),this.strokeState_&&this.setContextStrokeState_(this.strokeState_);const e=this.context_;e.beginPath(),this.drawRings_(t.getOrientedFlatCoordinates(),0,t.getEnds(),t.getStride()),this.fillState_&&e.fill(),this.strokeState_&&e.stroke()}if(""!==this.text_){const e=t.getFlatInteriorPoint();this.drawText_(e,0,2,2)}}}drawMultiPolygon(t){if(this.squaredTolerance_&&(t=t.simplifyTransformed(this.squaredTolerance_,this.userTransform_)),pe(this.extent_,t.getExtent())){if(this.strokeState_||this.fillState_){this.fillState_&&this.setContextFillState_(this.fillState_),this.strokeState_&&this.setContextStrokeState_(this.strokeState_);const e=this.context_,i=t.getOrientedFlatCoordinates();let n=0;const r=t.getEndss(),s=t.getStride();e.beginPath();for(let t=0,e=r.length;t<e;++t){const e=r[t];n=this.drawRings_(i,n,e,s)}this.fillState_&&e.fill(),this.strokeState_&&e.stroke()}if(""!==this.text_){const e=t.getFlatInteriorPoints();this.drawText_(e,0,e.length,2)}}}setContextFillState_(t){const e=this.context_,i=this.contextFillState_;i?i.fillStyle!=t.fillStyle&&(i.fillStyle=t.fillStyle,e.fillStyle=t.fillStyle):(e.fillStyle=t.fillStyle,this.contextFillState_={fillStyle:t.fillStyle})}setContextStrokeState_(t){const e=this.context_,i=this.contextStrokeState_;i?(i.lineCap!=t.lineCap&&(i.lineCap=t.lineCap,e.lineCap=t.lineCap),w(i.lineDash,t.lineDash)||e.setLineDash(i.lineDash=t.lineDash),i.lineDashOffset!=t.lineDashOffset&&(i.lineDashOffset=t.lineDashOffset,e.lineDashOffset=t.lineDashOffset),i.lineJoin!=t.lineJoin&&(i.lineJoin=t.lineJoin,e.lineJoin=t.lineJoin),i.lineWidth!=t.lineWidth&&(i.lineWidth=t.lineWidth,e.lineWidth=t.lineWidth),i.miterLimit!=t.miterLimit&&(i.miterLimit=t.miterLimit,e.miterLimit=t.miterLimit),i.strokeStyle!=t.strokeStyle&&(i.strokeStyle=t.strokeStyle,e.strokeStyle=t.strokeStyle)):(e.lineCap=t.lineCap,e.setLineDash(t.lineDash),e.lineDashOffset=t.lineDashOffset,e.lineJoin=t.lineJoin,e.lineWidth=t.lineWidth,e.miterLimit=t.miterLimit,e.strokeStyle=t.strokeStyle,this.contextStrokeState_={lineCap:t.lineCap,lineDash:t.lineDash,lineDashOffset:t.lineDashOffset,lineJoin:t.lineJoin,lineWidth:t.lineWidth,miterLimit:t.miterLimit,strokeStyle:t.strokeStyle})}setContextTextState_(t){const e=this.context_,i=this.contextTextState_,n=t.textAlign?t.textAlign:Lh;i?(i.font!=t.font&&(i.font=t.font,e.font=t.font),i.textAlign!=n&&(i.textAlign=n,e.textAlign=n),i.textBaseline!=t.textBaseline&&(i.textBaseline=t.textBaseline,e.textBaseline=t.textBaseline)):(e.font=t.font,e.textAlign=n,e.textBaseline=t.textBaseline,this.contextTextState_={font:t.font,textAlign:n,textBaseline:t.textBaseline})}setFillStrokeStyle(t,e){if(t){const e=t.getColor();this.fillState_={fillStyle:Sh(e||Th)}}else this.fillState_=null;if(e){const t=e.getColor(),i=e.getLineCap(),n=e.getLineDash(),r=e.getLineDashOffset(),s=e.getLineJoin(),o=e.getWidth(),a=e.getMiterLimit(),l=n||Rh;this.strokeState_={lineCap:void 0!==i?i:Ch,lineDash:1===this.pixelRatio_?l:l.map((t=>t*this.pixelRatio_)),lineDashOffset:(r||0)*this.pixelRatio_,lineJoin:void 0!==s?s:bh,lineWidth:(void 0!==o?o:1)*this.pixelRatio_,miterLimit:void 0!==a?a:Ph,strokeStyle:Sh(t||Ih)}}else this.strokeState_=null}setImageStyle(t){let e;if(!t||!(e=t.getSize()))return void(this.image_=null);const i=t.getPixelRatio(this.pixelRatio_),n=t.getAnchor(),r=t.getOrigin();this.image_=t.getImage(this.pixelRatio_),this.imageAnchorX_=n[0]*i,this.imageAnchorY_=n[1]*i,this.imageHeight_=e[1]*i,this.imageOpacity_=t.getOpacity(),this.imageOriginX_=r[0],this.imageOriginY_=r[1],this.imageRotateWithView_=t.getRotateWithView(),this.imageRotation_=t.getRotation();const s=t.getScaleArray();this.imageScale_=[s[0]*this.pixelRatio_/i,s[1]*this.pixelRatio_/i],this.imageWidth_=e[0]*i}setTextStyle(t){if(t){const e=t.getFill();if(e){const t=e.getColor();this.textFillState_={fillStyle:Sh(t||Th)}}else this.textFillState_=null;const i=t.getStroke();if(i){const t=i.getColor(),e=i.getLineCap(),n=i.getLineDash(),r=i.getLineDashOffset(),s=i.getLineJoin(),o=i.getWidth(),a=i.getMiterLimit();this.textStrokeState_={lineCap:void 0!==e?e:Ch,lineDash:n||Rh,lineDashOffset:r||0,lineJoin:void 0!==s?s:bh,lineWidth:void 0!==o?o:1,miterLimit:void 0!==a?a:Ph,strokeStyle:Sh(t||Ih)}}else this.textStrokeState_=null;const n=t.getFont(),r=t.getOffsetX(),s=t.getOffsetY(),o=t.getRotateWithView(),a=t.getRotation(),l=t.getScaleArray(),h=t.getText(),c=t.getTextAlign(),u=t.getTextBaseline();this.textState_={font:void 0!==n?n:wh,textAlign:void 0!==c?c:Lh,textBaseline:void 0!==u?u:Fh},this.text_=void 0!==h?Array.isArray(h)?h.reduce(((t,e,i)=>t+(i%2?" ":e)),""):h:"",this.textOffsetX_=void 0!==r?this.pixelRatio_*r:0,this.textOffsetY_=void 0!==s?this.pixelRatio_*s:0,this.textRotateWithView_=void 0!==o&&o,this.textRotation_=void 0!==a?a:0,this.textScale_=[this.pixelRatio_*l[0],this.pixelRatio_*l[1]]}else this.text_=""}}const ou=.5,au={Point:function(t,e,i,n,r,s){const o=i.getImage(),a=i.getText(),l=a&&a.getText(),h=s&&o&&l?{}:void 0;if(o){if(o.getImageState()!=Cs.LOADED)return;const s=t.getBuilder(i.getZIndex(),"Image");s.setImageStyle(o,h),s.drawPoint(e,n,r)}if(l){const s=t.getBuilder(i.getZIndex(),"Text");s.setTextStyle(a,h),s.drawText(e,n,r)}},LineString:function(t,e,i,n,r){const s=i.getStroke();if(s){const o=t.getBuilder(i.getZIndex(),"LineString");o.setFillStrokeStyle(null,s),o.drawLineString(e,n,r)}const o=i.getText();if(o&&o.getText()){const s=t.getBuilder(i.getZIndex(),"Text");s.setTextStyle(o),s.drawText(e,n,r)}},Polygon:function(t,e,i,n,r){const s=i.getFill(),o=i.getStroke();if(s||o){const a=t.getBuilder(i.getZIndex(),"Polygon");a.setFillStrokeStyle(s,o),a.drawPolygon(e,n,r)}const a=i.getText();if(a&&a.getText()){const s=t.getBuilder(i.getZIndex(),"Text");s.setTextStyle(a),s.drawText(e,n,r)}},MultiPoint:function(t,e,i,n,r,s){const o=i.getImage(),a=o&&0!==o.getOpacity(),l=i.getText(),h=l&&l.getText(),c=s&&a&&h?{}:void 0;if(a){if(o.getImageState()!=Cs.LOADED)return;const s=t.getBuilder(i.getZIndex(),"Image");s.setImageStyle(o,c),s.drawMultiPoint(e,n,r)}if(h){const s=t.getBuilder(i.getZIndex(),"Text");s.setTextStyle(l,c),s.drawText(e,n,r)}},MultiLineString:function(t,e,i,n,r){const s=i.getStroke();if(s){const o=t.getBuilder(i.getZIndex(),"LineString");o.setFillStrokeStyle(null,s),o.drawMultiLineString(e,n,r)}const o=i.getText();if(o&&o.getText()){const s=t.getBuilder(i.getZIndex(),"Text");s.setTextStyle(o),s.drawText(e,n,r)}},MultiPolygon:function(t,e,i,n,r){const s=i.getFill(),o=i.getStroke();if(o||s){const a=t.getBuilder(i.getZIndex(),"Polygon");a.setFillStrokeStyle(s,o),a.drawMultiPolygon(e,n,r)}const a=i.getText();if(a&&a.getText()){const s=t.getBuilder(i.getZIndex(),"Text");s.setTextStyle(a),s.drawText(e,n,r)}},GeometryCollection:function(t,e,i,n,r,s){const o=e.getGeometriesArray();let a,l;for(a=0,l=o.length;a<l;++a){(0,au[o[a].getType()])(t,o[a],i,n,r,s)}},Circle:function(t,e,i,n,r){const s=i.getFill(),o=i.getStroke();if(s||o){const a=t.getBuilder(i.getZIndex(),"Circle");a.setFillStrokeStyle(s,o),a.drawCircle(e,n,r)}const a=i.getText();if(a&&a.getText()){const r=t.getBuilder(i.getZIndex(),"Text");r.setTextStyle(a),r.drawText(e,n)}}};function lu(t,e){return parseInt(z(t),10)-parseInt(z(e),10)}function hu(t,e){const i=cu(t,e);return i*i}function cu(t,e){return ou*t/e}function uu(t,e,i,n,r,s,o,a){const l=[],h=i.getImage();if(h){let t=!0;const e=h.getImageState();e==Cs.LOADED||e==Cs.ERROR?t=!1:e==Cs.IDLE&&h.load(),t&&l.push(h.ready())}const c=i.getFill();c&&c.loading()&&l.push(c.ready());const u=l.length>0;return u&&Promise.all(l).then((()=>r(null))),function(t,e,i,n,r,s,o){const a=i.getGeometryFunction()(e);if(!a)return;const l=a.simplifyTransformed(n,r),h=i.getRenderer();if(h)du(t,l,i,e,o);else{(0,au[l.getType()])(t,l,i,e,o,s)}}(t,e,i,n,s,o,a),u}function du(t,e,i,n,r){if("GeometryCollection"==e.getType()){const s=e.getGeometries();for(let e=0,o=s.length;e<o;++e)du(t,s[e],i,n,r);return}t.getBuilder(i.getZIndex(),"Default").drawCustom(e,n,i.getRenderer(),i.getHitDetectionRenderer(),r)}function gu(t){if(!(t.context instanceof CanvasRenderingContext2D))throw new Error("Only works for render events from Canvas 2D layers");const e=t.inversePixelTransform[0],i=t.inversePixelTransform[1],n=Math.sqrt(e*e+i*i),r=t.frameState,s=Yn(t.inversePixelTransform.slice(),r.coordinateToPixelTransform),o=hu(r.viewState.resolution,n);let a;const l=Nn();return l&&(a=In(l,r.viewState.projection)),new su(t.context,n,r.extent,s,r.viewState.rotation,o,a)}let fu;const pu=[];function mu(t,e,i,n,r){t.beginPath(),t.moveTo(0,0),t.lineTo(e,i),t.lineTo(n,r),t.closePath(),t.save(),t.clip(),t.fillRect(0,0,Math.max(e,n)+1,Math.max(i,r)),t.restore()}function _u(t,e){return Math.abs(t[4*e]-210)>2||Math.abs(t[4*e+3]-191.25)>2}function yu(t,e,i,n){const r=Mn(i,e,t);let s=En(e,n,i);const o=e.getMetersPerUnit();void 0!==o&&(s*=o);const a=t.getMetersPerUnit();void 0!==a&&(s/=a);const l=t.getExtent();if(!l||jt(l,r)){const e=En(t,s,r)/s;isFinite(e)&&e>0&&(s/=e)}return s}function xu(t,e,i,n){const r=oe(i);let s=yu(t,e,r,n);return(!isFinite(s)||s<=0)&&ie(i,(function(i){return s=yu(t,e,i,n),isFinite(s)&&s>0})),s}function vu(t,e,i,n,r,s,o,a,l,h,c,u,d,g){const f=pt(Math.round(i*t),Math.round(i*e),pu);if(u||(f.imageSmoothingEnabled=!1),0===l.length)return f.canvas;function p(t){return Math.round(t*i)/i}f.scale(i,i),f.globalCompositeOperation="lighter";const m=[1/0,1/0,-1/0,-1/0];let _;l.forEach((function(t,e,i){Kt(m,t.extent)}));const y=i/n,x=(u?1:1+Math.pow(2,-24))/y;if(!d||1!==l.length||0!==h){if(_=pt(Math.round(fe(m)*y),Math.round(ce(m)*y),pu),u||(_.imageSmoothingEnabled=!1),r&&g){const t=(r[0]-m[0])*y,e=-(r[3]-m[3])*y,i=fe(r)*y,n=ce(r)*y;_.rect(t,e,i,n),_.clip()}l.forEach((function(t,e,i){if(t.image.width>0&&t.image.height>0){if(t.clipExtent){_.save();const e=(t.clipExtent[0]-m[0])*y,i=-(t.clipExtent[3]-m[3])*y,n=fe(t.clipExtent)*y,r=ce(t.clipExtent)*y;_.rect(u?e:Math.round(e),u?i:Math.round(i),u?n:Math.round(e+n)-Math.round(e),u?r:Math.round(i+r)-Math.round(i)),_.clip()}const e=(t.extent[0]-m[0])*y,i=-(t.extent[3]-m[3])*y,n=fe(t.extent)*y,r=ce(t.extent)*y;_.drawImage(t.image,h,h,t.image.width-2*h,t.image.height-2*h,u?e:Math.round(e),u?i:Math.round(i),u?n:Math.round(e+n)-Math.round(e),u?r:Math.round(i+r)-Math.round(i)),t.clipExtent&&_.restore()}}))}const v=de(o);return a.getTriangles().forEach((function(t,e,i){const n=t.source,r=t.target;let o=n[0][0],a=n[0][1],h=n[1][0],c=n[1][1],d=n[2][0],g=n[2][1];const y=p((r[0][0]-v[0])/s),E=p(-(r[0][1]-v[1])/s),S=p((r[1][0]-v[0])/s),w=p(-(r[1][1]-v[1])/s),T=p((r[2][0]-v[0])/s),C=p(-(r[2][1]-v[1])/s),R=o,b=a;o=0,a=0,h-=R,c-=b,d-=R,g-=b;const P=Re([[h,c,0,0,S-y],[d,g,0,0,T-y],[0,0,h,c,w-E],[0,0,d,g,C-E]]);if(!P)return;if(f.save(),f.beginPath(),function(){if(void 0===fu){const t=pt(6,6,pu);t.globalCompositeOperation="lighter",t.fillStyle="rgba(210, 0, 0, 0.75)",mu(t,4,5,4,0),mu(t,4,5,0,5);const e=t.getImageData(0,0,3,3).data;fu=_u(e,0)||_u(e,4)||_u(e,8),yt(t),pu.push(t.canvas)}return fu}()||!u){f.moveTo(S,w);const t=4,e=y-S,i=E-w;for(let n=0;n<t;n++)f.lineTo(S+p((n+1)*e/t),w+p(n*i/(t-1))),n!=t-1&&f.lineTo(S+p((n+1)*e/t),w+p((n+1)*i/(t-1)));f.lineTo(T,C)}else f.moveTo(S,w),f.lineTo(y,E),f.lineTo(T,C);let I;if(f.clip(),f.transform(P[0],P[2],P[1],P[3],y,E),f.translate(m[0]-R,m[3]-b),_)I=_.canvas,f.scale(x,-x);else{const t=l[0],e=t.extent;I=t.image,f.scale(fe(e)/I.width,-ce(e)/I.height)}f.drawImage(I,0,0),f.restore()})),_&&(yt(_),pu.push(_.canvas)),c&&(f.save(),f.globalCompositeOperation="source-over",f.strokeStyle="black",f.lineWidth=1,a.getTriangles().forEach((function(t,e,i){const n=t.target,r=(n[0][0]-v[0])/s,o=-(n[0][1]-v[1])/s,a=(n[1][0]-v[0])/s,l=-(n[1][1]-v[1])/s,h=(n[2][0]-v[0])/s,c=-(n[2][1]-v[1])/s;f.beginPath(),f.moveTo(a,l),f.lineTo(r,o),f.lineTo(h,c),f.closePath(),f.stroke()})),f.restore()),f.canvas}function Eu(t){return Array.isArray(t)?Math.min(...t):t}class Su{constructor(t){this.highWaterMark=void 0!==t?t:2048,this.count_=0,this.entries_={},this.oldest_=null,this.newest_=null}deleteOldest(){const t=this.pop();t instanceof m&&t.dispose()}canExpireCache(){return this.highWaterMark>0&&this.getCount()>this.highWaterMark}expireCache(t){for(;this.canExpireCache();)this.deleteOldest()}clear(){for(;this.oldest_;)this.deleteOldest()}containsKey(t){return this.entries_.hasOwnProperty(t)}forEach(t){let e=this.oldest_;for(;e;)t(e.value_,e.key_,this),e=e.newer}get(t,e){const i=this.entries_[t];return Ft(void 0!==i,"Tried to get a value for a key that does not exist in the cache"),i===this.newest_||(i===this.oldest_?(this.oldest_=this.oldest_.newer,this.oldest_.older=null):(i.newer.older=i.older,i.older.newer=i.newer),i.newer=null,i.older=this.newest_,this.newest_.newer=i,this.newest_=i),i.value_}remove(t){const e=this.entries_[t];return Ft(void 0!==e,"Tried to get a value for a key that does not exist in the cache"),e===this.newest_?(this.newest_=e.older,this.newest_&&(this.newest_.newer=null)):e===this.oldest_?(this.oldest_=e.newer,this.oldest_&&(this.oldest_.older=null)):(e.newer.older=e.older,e.older.newer=e.newer),delete this.entries_[t],--this.count_,e.value_}getCount(){return this.count_}getKeys(){const t=new Array(this.count_);let e,i=0;for(e=this.newest_;e;e=e.older)t[i++]=e.key_;return t}getValues(){const t=new Array(this.count_);let e,i=0;for(e=this.newest_;e;e=e.older)t[i++]=e.value_;return t}peekLast(){return this.oldest_.value_}peekLastKey(){return this.oldest_.key_}peekFirstKey(){return this.newest_.key_}peek(t){return this.entries_[t]?.value_}pop(){const t=this.oldest_;return delete this.entries_[t.key_],t.newer&&(t.newer.older=null),this.oldest_=t.newer,this.oldest_||(this.newest_=null),--this.count_,t.value_}replace(t,e){this.get(t),this.entries_[t].value_=e}set(t,e){Ft(!(t in this.entries_),"Tried to set a value for a key that is used already");const i={key_:t,newer:null,older:this.newest_,value_:e};this.newest_?this.newest_.newer=i:this.oldest_=i,this.newest_=i,this.entries_[t]=i,++this.count_}setSize(t){this.highWaterMark=t}}function wu(t,e,i,n){return void 0!==n?(n[0]=t,n[1]=e,n[2]=i,n):[t,e,i]}function Tu(t,e,i){return t+"/"+e+"/"+i}function Cu(t){return Tu(t[0],t[1],t[2])}function Ru(t){return bu(t[0],t[1],t[2])}function bu(t,e,i){return(e<<t)+i}function Pu(t,e){const i=t[0],n=t[1],r=t[2];if(e.getMinZoom()>i||i>e.getMaxZoom())return!1;const s=e.getFullTileRange(i);return!s||s.containsXY(n,r)}const Iu=[0,0,0];class Lu{constructor(t){let e;if(this.minZoom=void 0!==t.minZoom?t.minZoom:0,this.resolutions_=t.resolutions,Ft(T(this.resolutions_,((t,e)=>e-t),!0),"`resolutions` must be sorted in descending order"),!t.origins)for(let t=0,i=this.resolutions_.length-1;t<i;++t)if(e){if(this.resolutions_[t]/this.resolutions_[t+1]!==e){e=void 0;break}}else e=this.resolutions_[t]/this.resolutions_[t+1];this.zoomFactor_=e,this.maxZoom=this.resolutions_.length-1,this.origin_=void 0!==t.origin?t.origin:null,this.origins_=null,void 0!==t.origins&&(this.origins_=t.origins,Ft(this.origins_.length==this.resolutions_.length,"Number of `origins` and `resolutions` must be equal"));const i=t.extent;void 0===i||this.origin_||this.origins_||(this.origin_=de(i)),Ft(!this.origin_&&this.origins_||this.origin_&&!this.origins_,"Either `origin` or `origins` must be configured, never both"),this.tileSizes_=null,void 0!==t.tileSizes&&(this.tileSizes_=t.tileSizes,Ft(this.tileSizes_.length==this.resolutions_.length,"Number of `tileSizes` and `resolutions` must be equal")),this.tileSize_=void 0!==t.tileSize?t.tileSize:this.tileSizes_?null:_o,Ft(!this.tileSize_&&this.tileSizes_||this.tileSize_&&!this.tileSizes_,"Either `tileSize` or `tileSizes` must be configured, never both"),this.extent_=void 0!==i?i:null,this.fullTileRanges_=null,this.tmpSize_=[0,0],this.tmpExtent_=[0,0,0,0],void 0!==t.sizes?this.fullTileRanges_=t.sizes.map(((t,e)=>{const n=new Xc(Math.min(0,t[0]),Math.max(t[0]-1,-1),Math.min(0,t[1]),Math.max(t[1]-1,-1));if(i){const t=this.getTileRangeForExtentAndZ(i,e);n.minX=Math.max(t.minX,n.minX),n.maxX=Math.min(t.maxX,n.maxX),n.minY=Math.max(t.minY,n.minY),n.maxY=Math.min(t.maxY,n.maxY)}return n})):i&&this.calculateTileRanges_(i)}forEachTileCoord(t,e,i){const n=this.getTileRangeForExtentAndZ(t,e);for(let t=n.minX,r=n.maxX;t<=r;++t)for(let r=n.minY,s=n.maxY;r<=s;++r)i([e,t,r])}forEachTileCoordParentTileRange(t,e,i,n){let r,s,o,a=null,l=t[0]-1;for(2===this.zoomFactor_?(s=t[1],o=t[2]):a=this.getTileCoordExtent(t,n);l>=this.minZoom;){if(void 0!==s&&void 0!==o?(s=Math.floor(s/2),o=Math.floor(o/2),r=Vc(s,s,o,o,i)):r=this.getTileRangeForExtentAndZ(a,l,i),e(l,r))return!0;--l}return!1}getExtent(){return this.extent_}getMaxZoom(){return this.maxZoom}getMinZoom(){return this.minZoom}getOrigin(t){return this.origin_?this.origin_:this.origins_[t]}getResolution(t){return this.resolutions_[t]}getResolutions(){return this.resolutions_}getTileCoordChildTileRange(t,e,i){if(t[0]<this.maxZoom){if(2===this.zoomFactor_){const i=2*t[1],n=2*t[2];return Vc(i,i+1,n,n+1,e)}const n=this.getTileCoordExtent(t,i||this.tmpExtent_);return this.getTileRangeForExtentAndZ(n,t[0]+1,e)}return null}getTileRangeForTileCoordAndZ(t,e,i){if(e>this.maxZoom||e<this.minZoom)return null;const n=t[0],r=t[1],s=t[2];if(e===n)return Vc(r,s,r,s,i);if(this.zoomFactor_){const t=Math.pow(this.zoomFactor_,e-n),o=Math.floor(r*t),a=Math.floor(s*t);if(e<n)return Vc(o,o,a,a,i);return Vc(o,Math.floor(t*(r+1))-1,a,Math.floor(t*(s+1))-1,i)}const o=this.getTileCoordExtent(t,this.tmpExtent_);return this.getTileRangeForExtentAndZ(o,e,i)}getTileRangeForExtentAndZ(t,e,i){this.getTileCoordForXYAndZ_(t[0],t[3],e,!1,Iu);const n=Iu[1],r=Iu[2];this.getTileCoordForXYAndZ_(t[2],t[1],e,!0,Iu);return Vc(n,Iu[1],r,Iu[2],i)}getTileCoordCenter(t){const e=this.getOrigin(t[0]),i=this.getResolution(t[0]),n=Nl(this.getTileSize(t[0]),this.tmpSize_);return[e[0]+(t[1]+.5)*n[0]*i,e[1]-(t[2]+.5)*n[1]*i]}getTileCoordExtent(t,e){const i=this.getOrigin(t[0]),n=this.getResolution(t[0]),r=Nl(this.getTileSize(t[0]),this.tmpSize_),s=i[0]+t[1]*r[0]*n,o=i[1]-(t[2]+1)*r[1]*n;return Vt(s,o,s+r[0]*n,o+r[1]*n,e)}getTileCoordForCoordAndResolution(t,e,i){return this.getTileCoordForXYAndResolution_(t[0],t[1],e,!1,i)}getTileCoordForXYAndResolution_(t,e,i,n,r){const s=this.getZForResolution(i),o=i/this.getResolution(s),a=this.getOrigin(s),l=Nl(this.getTileSize(s),this.tmpSize_);let h=o*(t-a[0])/i/l[0],c=o*(a[1]-e)/i/l[1];return n?(h=Oe(h,5)-1,c=Oe(c,5)-1):(h=Ae(h,5),c=Ae(c,5)),wu(s,h,c,r)}getTileCoordForXYAndZ_(t,e,i,n,r){const s=this.getOrigin(i),o=this.getResolution(i),a=Nl(this.getTileSize(i),this.tmpSize_);let l=(t-s[0])/o/a[0],h=(s[1]-e)/o/a[1];return n?(l=Oe(l,5)-1,h=Oe(h,5)-1):(l=Ae(l,5),h=Ae(h,5)),wu(i,l,h,r)}getTileCoordForCoordAndZ(t,e,i){return this.getTileCoordForXYAndZ_(t[0],t[1],e,!1,i)}getTileCoordResolution(t){return this.resolutions_[t[0]]}getTileSize(t){return this.tileSize_?this.tileSize_:this.tileSizes_[t]}getFullTileRange(t){return this.fullTileRanges_?this.fullTileRanges_[t]:this.extent_?this.getTileRangeForExtentAndZ(this.extent_,t):null}getZForResolution(t,e){return we(v(this.resolutions_,t,e||0),this.minZoom,this.maxZoom)}tileCoordIntersectsViewport(t,e){return Jr(e,0,e.length,2,this.getTileCoordExtent(t))}calculateTileRanges_(t){const e=this.resolutions_.length,i=new Array(e);for(let n=this.minZoom;n<e;++n)i[n]=this.getTileRangeForExtentAndZ(t,n);this.fullTileRanges_=i}}class Fu extends Lu{constructor(t){super({extent:t.extent,origin:t.origin,origins:t.origins,resolutions:t.resolutions,tileSize:t.tileSize,tileSizes:t.tileSizes,sizes:t.sizes}),this.matrixIds_=t.matrixIds}getMatrixId(t){return this.matrixIds_[t]}getMatrixIds(){return this.matrixIds_}}function Mu(t,e,i){const n=[],r=[],s=[],o=[],a=[];i=void 0!==i?i:[];const l="TileMatrix",h="Identifier",c="ScaleDenominator",u="TopLeftCorner",d=vn(t.SupportedCRS),g=d.getMetersPerUnit(),f=d.getAxisOrientation().startsWith("ne");return t[l].sort((function(t,e){return e[c]-t[c]})),t[l].forEach((function(e){let d;if(d=!(i.length>0)||i.find((function(i){return e[h]==i[l]||!e[h].includes(":")&&t[h]+":"+e[h]===i[l]})),d){r.push(e[h]);const t=28e-5*e[c]/g,i=e.TileWidth,l=e.TileHeight;f?s.push([e[u][1],e[u][0]]):s.push(e[u]),n.push(t),o.push(i==l?i:[i,l]),a.push([e.MatrixWidth,e.MatrixHeight])}})),new Fu({extent:e,origins:s,resolutions:n,matrixIds:r,tileSizes:o,sizes:a})}function Au(t){let e=t.getDefaultTileGrid();return e||(e=Gu(t),t.setDefaultTileGrid(e)),e}function Ou(t,e,i){const n=e[0],r=t.getTileCoordCenter(e),s=ju(i);if(!jt(s,r)){const e=fe(s),i=Math.ceil((s[0]-r[0])/e);return r[0]+=e*i,t.getTileCoordForCoordAndZ(r,n)}return e}function Du(t,e,i,n){n=void 0!==n?n:"top-left";const r=ku(t,e,i);return new Lu({extent:t,origin:ae(t,n),resolutions:r,tileSize:i})}function Nu(t){const e=t||{},i=e.extent||vn("EPSG:3857").getExtent(),n={extent:i,minZoom:e.minZoom,tileSize:e.tileSize,resolutions:ku(i,e.maxZoom,e.tileSize,e.maxResolution)};return new Lu(n)}function ku(t,e,i,n){e=void 0!==e?e:mo,i=Nl(void 0!==i?i:_o);const r=ce(t),s=fe(t);n=n>0?n:Math.max(s/i[0],r/i[1]);const o=e+1,a=new Array(o);for(let t=0;t<o;++t)a[t]=n/Math.pow(2,t);return a}function Gu(t,e,i,n){return Du(ju(t),e,i,n)}function ju(t){let e=(t=vn(t)).getExtent();if(!e){const i=180*hi.degrees/t.getMetersPerUnit();e=Vt(-i,-i,i,i)}return e}function Uu(t,e){const i=[];Object.keys(e).forEach((function(t){null!==e[t]&&void 0!==e[t]&&i.push(t+"="+encodeURIComponent(e[t]))}));const n=i.join("&");return t=t.replace(/[?&]$/,""),(t+=t.includes("?")?"&":"?")+n}const Bu=/\{z\}/g,zu=/\{x\}/g,Xu=/\{y\}/g,Vu=/\{-y\}/g;function $u(t,e,i,n,r){return t.replace(Bu,e.toString()).replace(zu,i.toString()).replace(Xu,n.toString()).replace(Vu,(function(){if(void 0===r)throw new Error("If the URL template has a {-y} placeholder, the grid extent must be known");return(r-n).toString()}))}function Wu(t,e,i,n){return t[Ie(bu(e,i,n),t.length)]}function Zu(t){const e=[];let i=/\{([a-z])-([a-z])\}/.exec(t);if(i){const n=i[1].charCodeAt(0),r=i[2].charCodeAt(0);let s;for(s=n;s<=r;++s)e.push(t.replace(i[0],String.fromCharCode(s)));return e}if(i=/\{(\d+)-(\d+)\}/.exec(t),i){const n=parseInt(i[2],10);for(let r=parseInt(i[1],10);r<=n;r++)e.push(t.replace(i[0],r.toString()));return e}return e.push(t),e}function Yu(t,e){return function(i,n,r){if(!i)return;let s;const o=i[0];if(e){const t=e.getFullTileRange(o);t&&(s=t.getHeight()-1)}return $u(t,o,i[1],i[2],s)}}function Hu(t,e){const i=t.length,n=new Array(i);for(let r=0;r<i;++r)n[r]=Yu(t[r],e);return Ku(n)}function Ku(t){return 1===t.length?t[0]:function(e,i,n){if(!e)return;const r=Ie(Ru(e),t.length);return t[r](e,i,n)}}function qu(t,e,i){}class Ju{constructor(t,e,i,n,r,s,o){this.sourceProj_=t,this.targetProj_=e;let a={};const l=o?Cn((t=>qn(o,Mn(t,this.targetProj_,this.sourceProj_)))):Fn(this.targetProj_,this.sourceProj_);this.transformInv_=function(t){const e=t[0]+"/"+t[1];return a[e]||(a[e]=l(t)),a[e]},this.maxSourceExtent_=n,this.errorThresholdSquared_=r*r,this.triangles_=[],this.wrapsXInSource_=!1,this.canWrapXInSource_=this.sourceProj_.canWrapX()&&!!n&&!!this.sourceProj_.getExtent()&&fe(n)>=fe(this.sourceProj_.getExtent()),this.sourceWorldWidth_=this.sourceProj_.getExtent()?fe(this.sourceProj_.getExtent()):null,this.targetWorldWidth_=this.targetProj_.getExtent()?fe(this.targetProj_.getExtent()):null;const h=de(i),c=ge(i),u=se(i),d=re(i),g=this.transformInv_(h),f=this.transformInv_(c),p=this.transformInv_(u),m=this.transformInv_(d),_=10+(s?Math.max(0,Math.ceil(Math.log2(ne(i)/(s*s*256*256)))):0);if(this.addQuad_(h,c,u,d,g,f,p,m,_),this.wrapsXInSource_){let t=1/0;this.triangles_.forEach((function(e,i,n){t=Math.min(t,e.source[0][0],e.source[1][0],e.source[2][0])})),this.triangles_.forEach((e=>{if(Math.max(e.source[0][0],e.source[1][0],e.source[2][0])-t>this.sourceWorldWidth_/2){const i=[[e.source[0][0],e.source[0][1]],[e.source[1][0],e.source[1][1]],[e.source[2][0],e.source[2][1]]];i[0][0]-t>this.sourceWorldWidth_/2&&(i[0][0]-=this.sourceWorldWidth_),i[1][0]-t>this.sourceWorldWidth_/2&&(i[1][0]-=this.sourceWorldWidth_),i[2][0]-t>this.sourceWorldWidth_/2&&(i[2][0]-=this.sourceWorldWidth_);const n=Math.min(i[0][0],i[1][0],i[2][0]);Math.max(i[0][0],i[1][0],i[2][0])-n<this.sourceWorldWidth_/2&&(e.source=i)}}))}a={}}addTriangle_(t,e,i,n,r,s){this.triangles_.push({source:[n,r,s],target:[t,e,i]})}addQuad_(t,e,i,n,r,s,o,a,l){const h=Dt([r,s,o,a]),c=this.sourceWorldWidth_?fe(h)/this.sourceWorldWidth_:null,u=this.sourceWorldWidth_,d=this.sourceProj_.canWrapX()&&c>.5&&c<1;let g=!1;if(l>0){if(this.targetProj_.isGlobal()&&this.targetWorldWidth_){g=fe(Dt([t,e,i,n]))/this.targetWorldWidth_>.25||g}!d&&this.sourceProj_.isGlobal()&&c&&(g=c>.25||g)}if(!g&&this.maxSourceExtent_&&isFinite(h[0])&&isFinite(h[1])&&isFinite(h[2])&&isFinite(h[3])&&!pe(h,this.maxSourceExtent_))return;let f=0;if(!(g||isFinite(r[0])&&isFinite(r[1])&&isFinite(s[0])&&isFinite(s[1])&&isFinite(o[0])&&isFinite(o[1])&&isFinite(a[0])&&isFinite(a[1])))if(l>0)g=!0;else if(f=(isFinite(r[0])&&isFinite(r[1])?0:8)+(isFinite(s[0])&&isFinite(s[1])?0:4)+(isFinite(o[0])&&isFinite(o[1])?0:2)+(isFinite(a[0])&&isFinite(a[1])?0:1),1!=f&&2!=f&&4!=f&&8!=f)return;if(l>0){if(!g){const e=[(t[0]+i[0])/2,(t[1]+i[1])/2],n=this.transformInv_(e);let s;if(d){s=(Ie(r[0],u)+Ie(o[0],u))/2-Ie(n[0],u)}else s=(r[0]+o[0])/2-n[0];const a=(r[1]+o[1])/2-n[1];g=s*s+a*a>this.errorThresholdSquared_}if(g){if(Math.abs(t[0]-i[0])<=Math.abs(t[1]-i[1])){const h=[(e[0]+i[0])/2,(e[1]+i[1])/2],c=this.transformInv_(h),u=[(n[0]+t[0])/2,(n[1]+t[1])/2],d=this.transformInv_(u);this.addQuad_(t,e,h,u,r,s,c,d,l-1),this.addQuad_(u,h,i,n,d,c,o,a,l-1)}else{const h=[(t[0]+e[0])/2,(t[1]+e[1])/2],c=this.transformInv_(h),u=[(i[0]+n[0])/2,(i[1]+n[1])/2],d=this.transformInv_(u);this.addQuad_(t,h,u,n,r,c,d,a,l-1),this.addQuad_(h,e,i,u,c,s,o,d,l-1)}return}}if(d){if(!this.canWrapXInSource_)return;this.wrapsXInSource_=!0}0==(11&f)&&this.addTriangle_(t,i,n,r,o,a),0==(14&f)&&this.addTriangle_(t,i,e,r,o,s),f&&(0==(13&f)&&this.addTriangle_(e,n,t,s,a,r),0==(7&f)&&this.addTriangle_(e,n,i,s,a,o))}calculateSourceExtent(){const t=[1/0,1/0,-1/0,-1/0];return this.triangles_.forEach((function(e,i,n){const r=e.source;qt(t,r[0]),qt(t,r[1]),qt(t,r[2])})),t}getTriangles(){return this.triangles_}}const Qu=.5;class td extends nt{constructor(t,e,i,n,r,s,o,a,l,h,c,u){super(r,Y,u),this.renderEdges_=void 0!==c&&c,this.pixelRatio_=o,this.gutter_=a,this.canvas_=null,this.sourceTileGrid_=e,this.targetTileGrid_=n,this.wrappedTileCoord_=s||r,this.sourceTiles_=[],this.sourcesListenerKeys_=null,this.sourceZ_=0,this.clipExtent_=t.canWrapX()?t.getExtent():void 0;const d=n.getTileCoordExtent(this.wrappedTileCoord_),g=this.targetTileGrid_.getExtent();let f=this.sourceTileGrid_.getExtent();const p=g?ue(d,g):d;if(0===ne(p))return void(this.state=J);const m=t.getExtent();m&&(f=f?ue(f,m):m);const _=n.getResolution(this.wrappedTileCoord_[0]),y=xu(t,i,p,_);if(!isFinite(y)||y<=0)return void(this.state=J);const x=void 0!==h?h:Qu;if(this.triangulation_=new Ju(t,i,p,f,y*x,_),0===this.triangulation_.getTriangles().length)return void(this.state=J);this.sourceZ_=e.getZForResolution(y);let v=this.triangulation_.calculateSourceExtent();if(f&&(t.canWrapX()?(v[1]=we(v[1],f[1],f[3]),v[3]=we(v[3],f[1],f[3])):v=ue(v,f)),ne(v)){let i=0,n=0;t.canWrapX()&&(i=fe(m),n=Math.floor((v[0]-m[0])/i));Se(v.slice(),t,!0).forEach((t=>{const r=e.getTileRangeForExtentAndZ(t,this.sourceZ_);for(let t=r.minX;t<=r.maxX;t++)for(let e=r.minY;e<=r.maxY;e++){const r=l(this.sourceZ_,t,e,o);if(r){const t=n*i;this.sourceTiles_.push({tile:r,offset:t})}}++n})),0===this.sourceTiles_.length&&(this.state=J)}else this.state=J}getImage(){return this.canvas_}reproject_(){const t=[];if(this.sourceTiles_.forEach((e=>{const i=e.tile;if(i&&i.getState()==K){const n=this.sourceTileGrid_.getTileCoordExtent(i.tileCoord);n[0]+=e.offset,n[2]+=e.offset;const r=this.clipExtent_?.slice();r&&(r[0]+=e.offset,r[2]+=e.offset),t.push({extent:n,clipExtent:r,image:i.getImage()})}})),this.sourceTiles_.length=0,0===t.length)this.state=q;else{const e=this.wrappedTileCoord_[0],i=this.targetTileGrid_.getTileSize(e),n="number"==typeof i?i:i[0],r="number"==typeof i?i:i[1],s=this.targetTileGrid_.getResolution(e),o=this.sourceTileGrid_.getResolution(this.sourceZ_),a=this.targetTileGrid_.getTileCoordExtent(this.wrappedTileCoord_);this.canvas_=vu(n,r,this.pixelRatio_,o,this.sourceTileGrid_.getExtent(),s,a,this.triangulation_,t,this.gutter_,this.renderEdges_,this.interpolate),this.state=K}this.changed()}load(){if(this.state==Y){this.state=H,this.changed();let t=0;this.sourcesListenerKeys_=[],this.sourceTiles_.forEach((({tile:e})=>{const i=e.getState();if(i==Y||i==H){t++;const i=D(e,n,(n=>{const r=e.getState();r!=K&&r!=q&&r!=J||(k(i),t--,0===t&&(this.unlistenSources_(),this.reproject_()))}));this.sourcesListenerKeys_.push(i)}})),0===t?setTimeout(this.reproject_.bind(this),0):this.sourceTiles_.forEach((function({tile:t},e,i){t.getState()==Y&&t.load()}))}}unlistenSources_(){this.sourcesListenerKeys_.forEach(k),this.sourcesListenerKeys_=null}release(){this.canvas_&&(yt(this.canvas_.getContext("2d")),pu.push(this.canvas_),this.canvas_=null),super.release()}}class ed extends V{constructor(t){super(),this.projection=vn(t.projection),this.attributions_=id(t.attributions),this.attributionsCollapsible_=t.attributionsCollapsible??!0,this.loading=!1,this.state_=void 0!==t.state?t.state:"ready",this.wrapX_=void 0!==t.wrapX&&t.wrapX,this.interpolate_=!!t.interpolate,this.viewResolver=null,this.viewRejector=null;const e=this;this.viewPromise_=new Promise((function(t,i){e.viewResolver=t,e.viewRejector=i}))}getAttributions(){return this.attributions_}getAttributionsCollapsible(){return this.attributionsCollapsible_}getProjection(){return this.projection}getResolutions(t){return null}getView(){return this.viewPromise_}getState(){return this.state_}getWrapX(){return this.wrapX_}getInterpolate(){return this.interpolate_}refresh(){this.changed()}setAttributions(t){this.attributions_=id(t),this.changed()}setState(t){this.state_=t,this.changed()}}function id(t){return t?"function"==typeof t?t:(Array.isArray(t)||(t=[t]),e=>t):null}class nd extends ed{constructor(t){super({attributions:t.attributions,attributionsCollapsible:t.attributionsCollapsible,projection:t.projection,state:t.state,wrapX:t.wrapX,interpolate:t.interpolate}),this.on,this.once,this.un,this.tilePixelRatio_=void 0!==t.tilePixelRatio?t.tilePixelRatio:1,this.tileGrid=void 0!==t.tileGrid?t.tileGrid:null;const e=[256,256];this.tileGrid&&Nl(this.tileGrid.getTileSize(this.tileGrid.getMinZoom()),e),this.tmpSize=[0,0],this.key_=t.key||z(this),this.tileOptions={transition:t.transition,interpolate:t.interpolate},this.zDirection=t.zDirection?t.zDirection:0}getGutterForProjection(t){return 0}getKey(){return this.key_}setKey(t){this.key_!==t&&(this.key_=t,this.changed())}getResolutions(t){const e=t?this.getTileGridForProjection(t):this.tileGrid;return e?e.getResolutions():null}getTile(t,e,i,n,r){return U()}getTileGrid(){return this.tileGrid}getTileGridForProjection(t){return this.tileGrid?this.tileGrid:Au(t)}getTilePixelRatio(t){return this.tilePixelRatio_}getTilePixelSize(t,e,i){const n=this.getTileGridForProjection(i),r=this.getTilePixelRatio(e),s=Nl(n.getTileSize(t),this.tmpSize);return 1==r?s:Dl(s,r,this.tmpSize)}getTileCoordForTileUrlFunction(t,e){const i=void 0!==e?e:this.getProjection(),n=void 0!==e?this.getTileGridForProjection(i):this.tileGrid||this.getTileGridForProjection(i);return this.getWrapX()&&i.isGlobal()&&(t=Ou(n,t,i)),Pu(t,n)?t:null}clear(){}refresh(){this.clear(),super.refresh()}}class rd extends M{constructor(t,e){super(t),this.tile=e}}var sd="tileloadstart",od="tileloadend",ad="tileloaderror";class ld extends nd{constructor(t){super({attributions:t.attributions,cacheSize:t.cacheSize,projection:t.projection,state:t.state,tileGrid:t.tileGrid,tilePixelRatio:t.tilePixelRatio,wrapX:t.wrapX,transition:t.transition,interpolate:t.interpolate,key:t.key,attributionsCollapsible:t.attributionsCollapsible,zDirection:t.zDirection}),this.generateTileUrlFunction_=this.tileUrlFunction===ld.prototype.tileUrlFunction,this.tileLoadFunction=t.tileLoadFunction,t.tileUrlFunction&&(this.tileUrlFunction=t.tileUrlFunction),this.urls=null,t.urls?this.setUrls(t.urls):t.url&&this.setUrl(t.url),this.tileLoadingKeys_={}}getTileLoadFunction(){return this.tileLoadFunction}getTileUrlFunction(){return Object.getPrototypeOf(this).tileUrlFunction===this.tileUrlFunction?this.tileUrlFunction.bind(this):this.tileUrlFunction}getUrls(){return this.urls}handleTileChange(t){const e=t.target,i=z(e),n=e.getState();let r;n==H?(this.tileLoadingKeys_[i]=!0,r=sd):i in this.tileLoadingKeys_&&(delete this.tileLoadingKeys_[i],r=n==q?ad:n==K?od:void 0),null!=r&&this.dispatchEvent(new rd(r,e))}setTileLoadFunction(t){this.tileLoadFunction=t,this.changed()}setTileUrlFunction(t,e){this.tileUrlFunction=t,void 0!==e?this.setKey(e):this.changed()}setUrl(t){const e=Zu(t);this.urls=e,this.setUrls(e)}setUrls(t){this.urls=t;const e=t.join("\n");this.generateTileUrlFunction_?this.setTileUrlFunction(Hu(t,this.tileGrid),e):this.setKey(e)}tileUrlFunction(t,e,i){}}class hd extends ld{constructor(t){super({attributions:t.attributions,cacheSize:t.cacheSize,projection:t.projection,state:t.state,tileGrid:t.tileGrid,tileLoadFunction:t.tileLoadFunction?t.tileLoadFunction:cd,tilePixelRatio:t.tilePixelRatio,tileUrlFunction:t.tileUrlFunction,url:t.url,urls:t.urls,wrapX:t.wrapX,transition:t.transition,interpolate:void 0===t.interpolate||t.interpolate,key:t.key,attributionsCollapsible:t.attributionsCollapsible,zDirection:t.zDirection}),this.crossOrigin=void 0!==t.crossOrigin?t.crossOrigin:null,this.tileClass=void 0!==t.tileClass?t.tileClass:Ms,this.tileGridForProjection={},this.reprojectionErrorThreshold_=t.reprojectionErrorThreshold,this.renderReprojectionEdges_=!1}getGutterForProjection(t){return this.getProjection()&&t&&!Pn(this.getProjection(),t)?0:this.getGutter()}getGutter(){return 0}getKey(){let t=super.getKey();return this.getInterpolate()||(t+=":disable-interpolation"),t}getTileGridForProjection(t){const e=this.getProjection();if(this.tileGrid&&(!e||Pn(e,t)))return this.tileGrid;const i=z(t);return i in this.tileGridForProjection||(this.tileGridForProjection[i]=Au(t)),this.tileGridForProjection[i]}createTile_(t,e,i,r,s,o){const a=[t,e,i],l=this.getTileCoordForTileUrlFunction(a,s),h=l?this.tileUrlFunction(l,r,s):void 0,c=new this.tileClass(a,void 0!==h?Y:J,void 0!==h?h:"",this.crossOrigin,this.tileLoadFunction,this.tileOptions);return c.key=o,c.addEventListener(n,this.handleTileChange.bind(this)),c}getTile(t,e,i,n,r){const s=this.getProjection();if(!s||!r||Pn(s,r))return this.getTileInternal(t,e,i,n,s||r);const o=[t,e,i],a=this.getKey(),l=this.getTileGridForProjection(s),h=this.getTileGridForProjection(r),c=this.getTileCoordForTileUrlFunction(o,r),u=new td(s,l,r,h,o,c,this.getTilePixelRatio(n),this.getGutter(),((t,e,i,n)=>this.getTileInternal(t,e,i,n,s)),this.reprojectionErrorThreshold_,this.renderReprojectionEdges_,this.tileOptions);return u.key=a,u}getTileInternal(t,e,i,n,r){const s=this.getKey();return this.createTile_(t,e,i,n,r,s)}setRenderReprojectionEdges(t){this.renderReprojectionEdges_!=t&&(this.renderReprojectionEdges_=t,this.changed())}setTileGridForProjection(t,e){const i=vn(t);if(i){const t=z(i);t in this.tileGridForProjection||(this.tileGridForProjection[t]=e)}}}function cd(t,e){t.getImage().src=e}function ud(t){const e=t[0],i=new Array(e);let n,r,s=1<<e-1;for(n=0;n<e;++n)r=48,t[1]&s&&(r+=1),t[2]&s&&(r+=2),i[n]=String.fromCharCode(r),s>>=1;return i.join("")}class dd extends hd{constructor(t){const e=void 0!==(t=t||{}).projection?t.projection:"EPSG:3857",i=void 0!==t.tileGrid?t.tileGrid:Nu({extent:ju(e),maxResolution:t.maxResolution,maxZoom:t.maxZoom,minZoom:t.minZoom,tileSize:t.tileSize});super({attributions:t.attributions,cacheSize:t.cacheSize,crossOrigin:t.crossOrigin,interpolate:t.interpolate,projection:e,reprojectionErrorThreshold:t.reprojectionErrorThreshold,tileGrid:i,tileLoadFunction:t.tileLoadFunction,tilePixelRatio:t.tilePixelRatio,tileUrlFunction:t.tileUrlFunction,url:t.url,urls:t.urls,wrapX:void 0===t.wrapX||t.wrapX,transition:t.transition,attributionsCollapsible:t.attributionsCollapsible,zDirection:t.zDirection}),this.gutter_=void 0!==t.gutter?t.gutter:0}getGutter(){return this.gutter_}}function gd(t,e,i,n){const r=[];let s=[1/0,1/0,-1/0,-1/0];for(let o=0,a=i.length;o<a;++o){const a=i[o];s=Zt(t,e,a[0],n),r.push((s[0]+s[2])/2,(s[1]+s[3])/2),e=a[a.length-1]}return r}function fd(t,e,i,n,r,s,o){let a,l;const h=(i-e)/n;if(1===h)a=e;else if(2===h)a=e,l=r;else if(0!==h){let s=t[e],o=t[e+1],h=0;const c=[0];for(let r=e+n;r<i;r+=n){const e=t[r],i=t[r+1];h+=Math.sqrt((e-s)*(e-s)+(i-o)*(i-o)),c.push(h),s=e,o=i}const u=r*h,d=_(c,u);d<0?(l=(u-c[-d-2])/(c[-d-1]-c[-d-2]),a=e+(-d-2)*n):a=e+d*n}o=o>1?o:2,s=s||new Array(o);for(let e=0;e<o;++e)s[e]=void 0===a?NaN:void 0===l?t[a+e]:Le(t[a+e],t[a+n+e],l);return s}function pd(t,e,i,n,r,s){if(i==e)return null;let o;if(r<t[e+n-1])return s?(o=t.slice(e,e+n),o[n-1]=r,o):null;if(t[i-1]<r)return s?(o=t.slice(i-n,i),o[n-1]=r,o):null;if(r==t[e+n-1])return t.slice(e,e+n);let a=e/n,l=i/n;for(;a<l;){const e=a+l>>1;r<t[(e+1)*n-1]?l=e:a=e+1}const h=t[a*n-1];if(r==h)return t.slice((a-1)*n,(a-1)*n+n);const c=(r-h)/(t[(a+1)*n-1]-h);o=[];for(let e=0;e<n-1;++e)o.push(Le(t[(a-1)*n+e],t[a*n+e],c));return o.push(r),o}function md(t,e,i,n,r,s,o){if(o)return pd(t,e,i[i.length-1],n,r,s);let a;if(r<t[n-1])return s?(a=t.slice(0,n),a[n-1]=r,a):null;if(t[t.length-1]<r)return s?(a=t.slice(t.length-n),a[n-1]=r,a):null;for(let s=0,o=i.length;s<o;++s){const o=i[s];if(e!=o){if(r<t[e+n-1])return null;if(r<=t[o-1])return pd(t,e,o,n,r,!1);e=o}}return null}class _d extends gr{constructor(t,e,i){super(),void 0!==i&&void 0===e?this.setFlatCoordinates(i,t):(e=e||0,this.setCenterAndRadius(t,e,i))}clone(){const t=new _d(this.flatCoordinates.slice(),void 0,this.layout);return t.applyProperties(this),t}closestPointXY(t,e,i,n){const r=this.flatCoordinates,s=t-r[0],o=e-r[1],a=s*s+o*o;if(a<n){if(0===a)for(let t=0;t<this.stride;++t)i[t]=r[t];else{const t=this.getRadius()/Math.sqrt(a);i[0]=r[0]+t*s,i[1]=r[1]+t*o;for(let t=2;t<this.stride;++t)i[t]=r[t]}return i.length=this.stride,a}return n}containsXY(t,e){const i=this.flatCoordinates,n=t-i[0],r=e-i[1];return n*n+r*r<=this.getRadiusSquared_()}getCenter(){return this.flatCoordinates.slice(0,this.stride)}computeExtent(t){const e=this.flatCoordinates,i=e[this.stride]-e[0];return Vt(e[0]-i,e[1]-i,e[0]+i,e[1]+i,t)}getRadius(){return Math.sqrt(this.getRadiusSquared_())}getRadiusSquared_(){const t=this.flatCoordinates[this.stride]-this.flatCoordinates[0],e=this.flatCoordinates[this.stride+1]-this.flatCoordinates[1];return t*t+e*e}getType(){return"Circle"}intersectsExtent(t){if(pe(t,this.getExtent())){const e=this.getCenter();return t[0]<=e[0]&&t[2]>=e[0]||(t[1]<=e[1]&&t[3]>=e[1]||ie(t,this.intersectsCoordinate.bind(this)))}return!1}setCenter(t){const e=this.stride,i=this.flatCoordinates[e]-this.flatCoordinates[0],n=t.slice();n[e]=n[0]+i;for(let i=1;i<e;++i)n[e+i]=t[i];this.setFlatCoordinates(this.layout,n),this.changed()}setCenterAndRadius(t,e,i){this.setLayout(i,t,0),this.flatCoordinates||(this.flatCoordinates=[]);const n=this.flatCoordinates;let r=br(n,0,t,this.stride);n[r++]=n[0]+e;for(let t=1,e=this.stride;t<e;++t)n[r++]=n[t];n.length=r,this.changed()}getCoordinates(){return null}setCoordinates(t,e){}setRadius(t){this.flatCoordinates[this.stride]=this.flatCoordinates[0]+t,this.changed()}rotate(t,e){const i=this.getCenter(),n=this.getStride();this.setCenter(ar(i,0,i.length,n,t,e,i)),this.changed()}}_d.prototype.transform;class yd extends dr{constructor(t){super(),this.geometries_=t,this.changeEventsKeys_=[],this.listenGeometriesChange_()}unlistenGeometriesChange_(){this.changeEventsKeys_.forEach(k),this.changeEventsKeys_.length=0}listenGeometriesChange_(){const t=this.geometries_;for(let e=0,i=t.length;e<i;++e)this.changeEventsKeys_.push(D(t[e],n,this.changed,this))}clone(){const t=new yd(xd(this.geometries_));return t.applyProperties(this),t}closestPointXY(t,e,i,n){if(n<Gt(this.getExtent(),t,e))return n;const r=this.geometries_;for(let s=0,o=r.length;s<o;++s)n=r[s].closestPointXY(t,e,i,n);return n}containsXY(t,e){const i=this.geometries_;for(let n=0,r=i.length;n<r;++n)if(i[n].containsXY(t,e))return!0;return!1}computeExtent(t){$t(t);const e=this.geometries_;for(let i=0,n=e.length;i<n;++i)Kt(t,e[i].getExtent());return t}getGeometries(){return xd(this.geometries_)}getGeometriesArray(){return this.geometries_}getGeometriesArrayRecursive(){let t=[];const e=this.geometries_;for(let i=0,n=e.length;i<n;++i)e[i].getType()===this.getType()?t=t.concat(e[i].getGeometriesArrayRecursive()):t.push(e[i]);return t}getSimplifiedGeometry(t){if(this.simplifiedGeometryRevision!==this.getRevision()&&(this.simplifiedGeometryMaxMinSquaredTolerance=0,this.simplifiedGeometryRevision=this.getRevision()),t<0||0!==this.simplifiedGeometryMaxMinSquaredTolerance&&t<this.simplifiedGeometryMaxMinSquaredTolerance)return this;const e=[],i=this.geometries_;let n=!1;for(let r=0,s=i.length;r<s;++r){const s=i[r],o=s.getSimplifiedGeometry(t);e.push(o),o!==s&&(n=!0)}if(n){return new yd(e)}return this.simplifiedGeometryMaxMinSquaredTolerance=t,this}getType(){return"GeometryCollection"}intersectsExtent(t){const e=this.geometries_;for(let i=0,n=e.length;i<n;++i)if(e[i].intersectsExtent(t))return!0;return!1}isEmpty(){return 0===this.geometries_.length}rotate(t,e){const i=this.geometries_;for(let n=0,r=i.length;n<r;++n)i[n].rotate(t,e);this.changed()}scale(t,e,i){i||(i=oe(this.getExtent()));const n=this.geometries_;for(let r=0,s=n.length;r<s;++r)n[r].scale(t,e,i);this.changed()}setGeometries(t){this.setGeometriesArray(xd(t))}setGeometriesArray(t){this.unlistenGeometriesChange_(),this.geometries_=t,this.listenGeometriesChange_(),this.changed()}applyTransform(t){const e=this.geometries_;for(let i=0,n=e.length;i<n;++i)e[i].applyTransform(t);this.changed()}translate(t,e){const i=this.geometries_;for(let n=0,r=i.length;n<r;++n)i[n].translate(t,e);this.changed()}disposeInternal(){this.unlistenGeometriesChange_(),super.disposeInternal()}}function xd(t){return t.map((t=>t.clone()))}function vd(t,e,i,n){let r=t[e],s=t[e+1],o=0;for(let a=e+n;a<i;a+=n){const e=t[a],i=t[a+1];o+=Math.sqrt((e-r)*(e-r)+(i-s)*(i-s)),r=e,s=i}return o}class Ed extends gr{constructor(t,e){super(),this.flatMidpoint_=null,this.flatMidpointRevision_=-1,this.maxDelta_=-1,this.maxDeltaRevision_=-1,void 0===e||Array.isArray(t[0])?this.setCoordinates(t,e):this.setFlatCoordinates(e,t)}appendCoordinate(t){S(this.flatCoordinates,t),this.changed()}clone(){const t=new Ed(this.flatCoordinates.slice(),this.layout);return t.applyProperties(this),t}closestPointXY(t,e,i,n){return n<Gt(this.getExtent(),t,e)?n:(this.maxDeltaRevision_!=this.getRevision()&&(this.maxDelta_=Math.sqrt(Er(this.flatCoordinates,0,this.flatCoordinates.length,this.stride,0)),this.maxDeltaRevision_=this.getRevision()),Tr(this.flatCoordinates,0,this.flatCoordinates.length,this.stride,this.maxDelta_,!1,t,e,i,n))}forEachSegment(t){return Hr(this.flatCoordinates,0,this.flatCoordinates.length,this.stride,t)}getCoordinateAtM(t,e){return"XYM"!=this.layout&&"XYZM"!=this.layout?null:(e=void 0!==e&&e,pd(this.flatCoordinates,0,this.flatCoordinates.length,this.stride,t,e))}getCoordinates(){return Fr(this.flatCoordinates,0,this.flatCoordinates.length,this.stride)}getCoordinateAt(t,e){return fd(this.flatCoordinates,0,this.flatCoordinates.length,this.stride,t,e,this.stride)}getLength(){return vd(this.flatCoordinates,0,this.flatCoordinates.length,this.stride)}getFlatMidpoint(){return this.flatMidpointRevision_!=this.getRevision()&&(this.flatMidpoint_=this.getCoordinateAt(.5,this.flatMidpoint_??void 0),this.flatMidpointRevision_=this.getRevision()),this.flatMidpoint_}getSimplifiedGeometryInternal(t){const e=[];return e.length=Or(this.flatCoordinates,0,this.flatCoordinates.length,this.stride,t,e,0),new Ed(e,"XY")}getType(){return"LineString"}intersectsExtent(t){return Kr(this.flatCoordinates,0,this.flatCoordinates.length,this.stride,t,this.getExtent())}setCoordinates(t,e){this.setLayout(e,t,1),this.flatCoordinates||(this.flatCoordinates=[]),this.flatCoordinates.length=Pr(this.flatCoordinates,0,t,this.stride),this.changed()}}class Sd extends gr{constructor(t,e,i){if(super(),this.ends_=[],this.maxDelta_=-1,this.maxDeltaRevision_=-1,Array.isArray(t[0]))this.setCoordinates(t,e);else if(void 0!==e&&i)this.setFlatCoordinates(e,t),this.ends_=i;else{const e=t,i=[],n=[];for(let t=0,r=e.length;t<r;++t){S(i,e[t].getFlatCoordinates()),n.push(i.length)}const r=0===e.length?this.getLayout():e[0].getLayout();this.setFlatCoordinates(r,i),this.ends_=n}}appendLineString(t){S(this.flatCoordinates,t.getFlatCoordinates().slice()),this.ends_.push(this.flatCoordinates.length),this.changed()}clone(){const t=new Sd(this.flatCoordinates.slice(),this.layout,this.ends_.slice());return t.applyProperties(this),t}closestPointXY(t,e,i,n){return n<Gt(this.getExtent(),t,e)?n:(this.maxDeltaRevision_!=this.getRevision()&&(this.maxDelta_=Math.sqrt(Sr(this.flatCoordinates,0,this.ends_,this.stride,0)),this.maxDeltaRevision_=this.getRevision()),Cr(this.flatCoordinates,0,this.ends_,this.stride,this.maxDelta_,!1,t,e,i,n))}getCoordinateAtM(t,e,i){return"XYM"!=this.layout&&"XYZM"!=this.layout||0===this.flatCoordinates.length?null:(e=void 0!==e&&e,i=void 0!==i&&i,md(this.flatCoordinates,0,this.ends_,this.stride,t,e,i))}getCoordinates(){return Mr(this.flatCoordinates,0,this.ends_,this.stride)}getEnds(){return this.ends_}getLineString(t){return t<0||this.ends_.length<=t?null:new Ed(this.flatCoordinates.slice(0===t?0:this.ends_[t-1],this.ends_[t]),this.layout)}getLineStrings(){const t=this.flatCoordinates,e=this.ends_,i=this.layout,n=[];let r=0;for(let s=0,o=e.length;s<o;++s){const o=e[s],a=new Ed(t.slice(r,o),i);n.push(a),r=o}return n}getFlatMidpoints(){const t=[],e=this.flatCoordinates;let i=0;const n=this.ends_,r=this.stride;for(let s=0,o=n.length;s<o;++s){const o=n[s];S(t,fd(e,i,o,r,.5)),i=o}return t}getSimplifiedGeometryInternal(t){const e=[],i=[];return e.length=Dr(this.flatCoordinates,0,this.ends_,this.stride,t,e,0,i),new Sd(e,"XY",i)}getType(){return"MultiLineString"}intersectsExtent(t){return qr(this.flatCoordinates,0,this.ends_,this.stride,t)}setCoordinates(t,e){this.setLayout(e,t,2),this.flatCoordinates||(this.flatCoordinates=[]);const i=Ir(this.flatCoordinates,0,t,this.stride,this.ends_);this.flatCoordinates.length=0===i.length?0:i[i.length-1],this.changed()}}class wd extends gr{constructor(t,e){super(),e&&!Array.isArray(t[0])?this.setFlatCoordinates(e,t):this.setCoordinates(t,e)}appendPoint(t){S(this.flatCoordinates,t.getFlatCoordinates()),this.changed()}clone(){const t=new wd(this.flatCoordinates.slice(),this.layout);return t.applyProperties(this),t}closestPointXY(t,e,i,n){if(n<Gt(this.getExtent(),t,e))return n;const r=this.flatCoordinates,s=this.stride;for(let o=0,a=r.length;o<a;o+=s){const a=Ce(t,e,r[o],r[o+1]);if(a<n){n=a;for(let t=0;t<s;++t)i[t]=r[o+t];i.length=s}}return n}getCoordinates(){return Fr(this.flatCoordinates,0,this.flatCoordinates.length,this.stride)}getPoint(t){const e=this.flatCoordinates.length/this.stride;return t<0||e<=t?null:new zr(this.flatCoordinates.slice(t*this.stride,(t+1)*this.stride),this.layout)}getPoints(){const t=this.flatCoordinates,e=this.layout,i=this.stride,n=[];for(let r=0,s=t.length;r<s;r+=i){const s=new zr(t.slice(r,r+i),e);n.push(s)}return n}getType(){return"MultiPoint"}intersectsExtent(t){const e=this.flatCoordinates,i=this.stride;for(let n=0,r=e.length;n<r;n+=i){if(Bt(t,e[n],e[n+1]))return!0}return!1}setCoordinates(t,e){this.setLayout(e,t,1),this.flatCoordinates||(this.flatCoordinates=[]),this.flatCoordinates.length=Pr(this.flatCoordinates,0,t,this.stride),this.changed()}}class Td extends gr{constructor(t,e,i){if(super(),this.endss_=[],this.flatInteriorPointsRevision_=-1,this.flatInteriorPoints_=null,this.maxDelta_=-1,this.maxDeltaRevision_=-1,this.orientedRevision_=-1,this.orientedFlatCoordinates_=null,!i&&!Array.isArray(t[0])){const n=t,r=[],s=[];for(let t=0,e=n.length;t<e;++t){const e=n[t],i=r.length,o=e.getEnds();for(let t=0,e=o.length;t<e;++t)o[t]+=i;S(r,e.getFlatCoordinates()),s.push(o)}e=0===n.length?this.getLayout():n[0].getLayout(),t=r,i=s}void 0!==e&&i?(this.setFlatCoordinates(e,t),this.endss_=i):this.setCoordinates(t,e)}appendPolygon(t){let e;if(this.flatCoordinates){const i=this.flatCoordinates.length;S(this.flatCoordinates,t.getFlatCoordinates()),e=t.getEnds().slice();for(let t=0,n=e.length;t<n;++t)e[t]+=i}else this.flatCoordinates=t.getFlatCoordinates().slice(),e=t.getEnds().slice(),this.endss_.push();this.endss_.push(e),this.changed()}clone(){const t=this.endss_.length,e=new Array(t);for(let i=0;i<t;++i)e[i]=this.endss_[i].slice();const i=new Td(this.flatCoordinates.slice(),this.layout,e);return i.applyProperties(this),i}closestPointXY(t,e,i,n){return n<Gt(this.getExtent(),t,e)?n:(this.maxDeltaRevision_!=this.getRevision()&&(this.maxDelta_=Math.sqrt(wr(this.flatCoordinates,0,this.endss_,this.stride,0)),this.maxDeltaRevision_=this.getRevision()),Rr(this.getOrientedFlatCoordinates(),0,this.endss_,this.stride,this.maxDelta_,!0,t,e,i,n))}containsXY(t,e){return Wr(this.getOrientedFlatCoordinates(),0,this.endss_,this.stride,t,e)}getArea(){return xr(this.getOrientedFlatCoordinates(),0,this.endss_,this.stride)}getCoordinates(t){let e;return void 0!==t?(e=this.getOrientedFlatCoordinates().slice(),os(e,0,this.endss_,this.stride,t)):e=this.flatCoordinates,Ar(e,0,this.endss_,this.stride)}getEndss(){return this.endss_}getFlatInteriorPoints(){if(this.flatInteriorPointsRevision_!=this.getRevision()){const t=gd(this.flatCoordinates,0,this.endss_,this.stride);this.flatInteriorPoints_=Yr(this.getOrientedFlatCoordinates(),0,this.endss_,this.stride,t),this.flatInteriorPointsRevision_=this.getRevision()}return this.flatInteriorPoints_}getInteriorPoints(){return new wd(this.getFlatInteriorPoints().slice(),"XYM")}getOrientedFlatCoordinates(){if(this.orientedRevision_!=this.getRevision()){const t=this.flatCoordinates;rs(t,0,this.endss_,this.stride)?this.orientedFlatCoordinates_=t:(this.orientedFlatCoordinates_=t.slice(),this.orientedFlatCoordinates_.length=os(this.orientedFlatCoordinates_,0,this.endss_,this.stride)),this.orientedRevision_=this.getRevision()}return this.orientedFlatCoordinates_}getSimplifiedGeometryInternal(t){const e=[],i=[];return e.length=Ur(this.flatCoordinates,0,this.endss_,this.stride,Math.sqrt(t),e,0,i),new Td(e,"XY",i)}getPolygon(t){if(t<0||this.endss_.length<=t)return null;let e;if(0===t)e=0;else{const i=this.endss_[t-1];e=i[i.length-1]}const i=this.endss_[t].slice(),n=i[i.length-1];if(0!==e)for(let t=0,n=i.length;t<n;++t)i[t]-=e;return new ls(this.flatCoordinates.slice(e,n),this.layout,i)}getPolygons(){const t=this.layout,e=this.flatCoordinates,i=this.endss_,n=[];let r=0;for(let s=0,o=i.length;s<o;++s){const o=i[s].slice(),a=o[o.length-1];if(0!==r)for(let t=0,e=o.length;t<e;++t)o[t]-=r;const l=new ls(e.slice(r,a),t,o);n.push(l),r=a}return n}getType(){return"MultiPolygon"}intersectsExtent(t){return ts(this.getOrientedFlatCoordinates(),0,this.endss_,this.stride,t)}setCoordinates(t,e){this.setLayout(e,t,3),this.flatCoordinates||(this.flatCoordinates=[]);const i=Lr(this.flatCoordinates,0,t,this.stride,this.endss_);if(0===i.length)this.flatCoordinates.length=0;else{const t=i[i.length-1];this.flatCoordinates.length=0===t.length?0:t[t.length-1]}this.changed()}}const Cd=[1,0,0,1,0,0];class Rd{constructor(t,e,i,n,r,s){this.styleFunction,this.extent_,this.id_=s,this.type_=t,this.flatCoordinates_=e,this.flatInteriorPoints_=null,this.flatMidpoints_=null,this.ends_=i||null,this.properties_=r,this.squaredTolerance_,this.stride_=n,this.simplifiedGeometry_}get(t){return this.properties_[t]}getExtent(){return this.extent_||(this.extent_="Point"===this.type_?Wt(this.flatCoordinates_):Zt(this.flatCoordinates_,0,this.flatCoordinates_.length,2)),this.extent_}getFlatInteriorPoint(){if(!this.flatInteriorPoints_){const t=oe(this.getExtent());this.flatInteriorPoints_=Zr(this.flatCoordinates_,0,this.ends_,2,t,0)}return this.flatInteriorPoints_}getFlatInteriorPoints(){if(!this.flatInteriorPoints_){const t=as(this.flatCoordinates_,this.ends_),e=gd(this.flatCoordinates_,0,t,2);this.flatInteriorPoints_=Yr(this.flatCoordinates_,0,t,2,e)}return this.flatInteriorPoints_}getFlatMidpoint(){return this.flatMidpoints_||(this.flatMidpoints_=fd(this.flatCoordinates_,0,this.flatCoordinates_.length,2,.5)),this.flatMidpoints_}getFlatMidpoints(){if(!this.flatMidpoints_){this.flatMidpoints_=[];const t=this.flatCoordinates_;let e=0;const i=this.ends_;for(let n=0,r=i.length;n<r;++n){const r=i[n],s=fd(t,e,r,2,.5);S(this.flatMidpoints_,s),e=r}}return this.flatMidpoints_}getId(){return this.id_}getOrientedFlatCoordinates(){return this.flatCoordinates_}getGeometry(){return this}getSimplifiedGeometry(t){return this}simplifyTransformed(t,e){return this}getProperties(){return this.properties_}getPropertiesInternal(){return this.properties_}getStride(){return this.stride_}getStyleFunction(){return this.styleFunction}getType(){return this.type_}transform(t){const e=(t=vn(t)).getExtent(),i=t.getWorldExtent();if(e&&i){const t=ce(i)/ce(e);er(Cd,i[0],i[3],t,-t,0,0,0),or(this.flatCoordinates_,0,this.flatCoordinates_.length,2,Cd,this.flatCoordinates_)}}applyTransform(t){t(this.flatCoordinates_,this.flatCoordinates_,this.stride_)}clone(){return new Rd(this.type_,this.flatCoordinates_.slice(),this.ends_?.slice(),this.stride_,Object.assign({},this.properties_),this.id_)}getEnds(){return this.ends_}enableSimplifyTransformed(){return this.simplifyTransformed=P(((t,e)=>{if(t===this.squaredTolerance_)return this.simplifiedGeometry_;this.simplifiedGeometry_=this.clone(),e&&this.simplifiedGeometry_.applyTransform(e);const i=this.simplifiedGeometry_.getFlatCoordinates();let n;switch(this.type_){case"LineString":i.length=Or(i,0,this.simplifiedGeometry_.flatCoordinates_.length,this.simplifiedGeometry_.stride_,t,i,0),n=[i.length];break;case"MultiLineString":n=[],i.length=Dr(i,0,this.simplifiedGeometry_.ends_,this.simplifiedGeometry_.stride_,t,i,0,n);break;case"Polygon":n=[],i.length=jr(i,0,this.simplifiedGeometry_.ends_,this.simplifiedGeometry_.stride_,Math.sqrt(t),i,0,n)}return n&&(this.simplifiedGeometry_=new Rd(this.type_,i,n,2,this.properties_,this.id_)),this.squaredTolerance_=t,this.simplifiedGeometry_})),this}}function bd(t){const e=t.getType();switch(e){case"Point":return new zr(t.getFlatCoordinates());case"MultiPoint":return new wd(t.getFlatCoordinates(),"XY");case"LineString":return new Ed(t.getFlatCoordinates(),"XY");case"MultiLineString":return new Sd(t.getFlatCoordinates(),"XY",t.getEnds());case"Polygon":const i=t.getFlatCoordinates(),n=t.getEnds(),r=as(i,n);return r.length>1?new Td(i,"XY",r):new ls(i,"XY",n);default:throw new Error("Invalid geometry type:"+e)}}Rd.prototype.getFlatCoordinates=Rd.prototype.getOrientedFlatCoordinates;class Pd{constructor(t){this.rbush_=new qa(t),this.items_={}}insert(t,e){const i={minX:t[0],minY:t[1],maxX:t[2],maxY:t[3],value:e};this.rbush_.insert(i),this.items_[z(e)]=i}load(t,e){const i=new Array(e.length);for(let n=0,r=e.length;n<r;n++){const r=t[n],s=e[n],o={minX:r[0],minY:r[1],maxX:r[2],maxY:r[3],value:s};i[n]=o,this.items_[z(s)]=o}this.rbush_.load(i)}remove(t){const e=z(t),i=this.items_[e];return delete this.items_[e],null!==this.rbush_.remove(i)}update(t,e){const i=this.items_[z(e)];Yt([i.minX,i.minY,i.maxX,i.maxY],t)||(this.remove(e),this.insert(t,e))}getAll(){return this.rbush_.all().map((function(t){return t.value}))}getInExtent(t){const e={minX:t[0],minY:t[1],maxX:t[2],maxY:t[3]};return this.rbush_.search(e).map((function(t){return t.value}))}forEach(t){return this.forEach_(this.getAll(),t)}forEachInExtent(t,e){return this.forEach_(this.getInExtent(t),e)}forEach_(t,e){let i;for(let n=0,r=t.length;n<r;n++)if(i=e(t[n]),i)return i;return i}isEmpty(){return F(this.items_)}clear(){this.rbush_.clear(),this.items_={}}getExtent(t){const e=this.rbush_.toJSON();return Vt(e.minX,e.minY,e.maxX,e.maxY,t)}concat(t){this.rbush_.load(t.rbush_.all());for(const e in t.items_)this.items_[e]=t.items_[e]}}var Id="addfeature",Ld="changefeature",Fd="clear",Md="removefeature",Ad="featuresloadstart",Od="featuresloadend",Dd="featuresloaderror";class Nd extends M{constructor(t,e,i){super(t),this.feature=e,this.features=i}}class kd extends ed{constructor(t){super({attributions:(t=t||{}).attributions,interpolate:!0,projection:void 0,state:"ready",wrapX:void 0===t.wrapX||t.wrapX}),this.on,this.once,this.un,this.loader_=b,this.format_=t.format||null,this.overlaps_=void 0===t.overlaps||t.overlaps,this.url_=t.url,void 0!==t.loader?this.loader_=t.loader:void 0!==this.url_&&(Ft(this.format_,"`format` must be set when `url` is set"),this.loader_=qc(this.url_,this.format_)),this.strategy_=void 0!==t.strategy?t.strategy:Jc;const e=void 0===t.useSpatialIndex||t.useSpatialIndex;let i,n;this.featuresRtree_=e?new Pd:null,this.loadedExtentsRtree_=new Pd,this.loadingExtentsCount_=0,this.nullGeometryFeatures_={},this.idIndex_={},this.uidIndex_={},this.featureChangeKeys_={},this.featuresCollection_=null,Array.isArray(t.features)?n=t.features:t.features&&(i=t.features,n=i.getArray()),e||void 0!==i||(i=new Z(n)),void 0!==n&&this.addFeaturesInternal(n),void 0!==i&&this.bindFeaturesCollection_(i)}addFeature(t){this.addFeatureInternal(t),this.changed()}addFeatureInternal(t){const e=z(t);if(!this.addToIndex_(e,t))return void(this.featuresCollection_&&this.featuresCollection_.remove(t));this.setupChangeEvents_(e,t);const i=t.getGeometry();if(i){const e=i.getExtent();this.featuresRtree_&&this.featuresRtree_.insert(e,t)}else this.nullGeometryFeatures_[e]=t;this.dispatchEvent(new Nd(Id,t))}setupChangeEvents_(t,e){e instanceof Rd||(this.featureChangeKeys_[t]=[D(e,n,this.handleFeatureChange_,this),D(e,i,this.handleFeatureChange_,this)])}addToIndex_(t,e){let i=!0;if(void 0!==e.getId()){const t=String(e.getId());if(t in this.idIndex_)if(e instanceof Rd){const n=this.idIndex_[t];n instanceof Rd?Array.isArray(n)?n.push(e):this.idIndex_[t]=[n,e]:i=!1}else i=!1;else this.idIndex_[t]=e}return i&&(Ft(!(t in this.uidIndex_),"The passed `feature` was already added to the source"),this.uidIndex_[t]=e),i}addFeatures(t){this.addFeaturesInternal(t),this.changed()}addFeaturesInternal(t){const e=[],i=[],n=[];for(let e=0,n=t.length;e<n;e++){const n=t[e],r=z(n);this.addToIndex_(r,n)&&i.push(n)}for(let t=0,r=i.length;t<r;t++){const r=i[t],s=z(r);this.setupChangeEvents_(s,r);const o=r.getGeometry();if(o){const t=o.getExtent();e.push(t),n.push(r)}else this.nullGeometryFeatures_[s]=r}if(this.featuresRtree_&&this.featuresRtree_.load(e,n),this.hasListener(Id))for(let t=0,e=i.length;t<e;t++)this.dispatchEvent(new Nd(Id,i[t]))}bindFeaturesCollection_(i){let n=!1;this.addEventListener(Id,(function(t){n||(n=!0,i.push(t.feature),n=!1)})),this.addEventListener(Md,(function(t){n||(n=!0,i.remove(t.feature),n=!1)})),i.addEventListener(t,(t=>{n||(n=!0,this.addFeature(t.element),n=!1)})),i.addEventListener(e,(t=>{n||(n=!0,this.removeFeature(t.element),n=!1)})),this.featuresCollection_=i}clear(t){if(t){for(const t in this.featureChangeKeys_){this.featureChangeKeys_[t].forEach(k)}this.featuresCollection_||(this.featureChangeKeys_={},this.idIndex_={},this.uidIndex_={})}else if(this.featuresRtree_){this.featuresRtree_.forEach((t=>{this.removeFeatureInternal(t)}));for(const t in this.nullGeometryFeatures_)this.removeFeatureInternal(this.nullGeometryFeatures_[t])}this.featuresCollection_&&this.featuresCollection_.clear(),this.featuresRtree_&&this.featuresRtree_.clear(),this.nullGeometryFeatures_={};const e=new Nd(Fd);this.dispatchEvent(e),this.changed()}forEachFeature(t){if(this.featuresRtree_)return this.featuresRtree_.forEach(t);this.featuresCollection_&&this.featuresCollection_.forEach(t)}forEachFeatureAtCoordinateDirect(t,e){const i=[t[0],t[1],t[0],t[1]];return this.forEachFeatureInExtent(i,(function(i){const n=i.getGeometry();if(n instanceof Rd||n.intersectsCoordinate(t))return e(i)}))}forEachFeatureInExtent(t,e){if(this.featuresRtree_)return this.featuresRtree_.forEachInExtent(t,e);this.featuresCollection_&&this.featuresCollection_.forEach(e)}forEachFeatureIntersectingExtent(t,e){return this.forEachFeatureInExtent(t,(function(i){const n=i.getGeometry();if(n instanceof Rd||n.intersectsExtent(t)){const t=e(i);if(t)return t}}))}getFeaturesCollection(){return this.featuresCollection_}getFeatures(){let t;return this.featuresCollection_?t=this.featuresCollection_.getArray().slice(0):this.featuresRtree_&&(t=this.featuresRtree_.getAll(),F(this.nullGeometryFeatures_)||S(t,Object.values(this.nullGeometryFeatures_))),t}getFeaturesAtCoordinate(t){const e=[];return this.forEachFeatureAtCoordinateDirect(t,(function(t){e.push(t)})),e}getFeaturesInExtent(t,e){if(this.featuresRtree_){if(!(e&&e.canWrapX()&&this.getWrapX()))return this.featuresRtree_.getInExtent(t);const i=Se(t,e);return[].concat(...i.map((t=>this.featuresRtree_.getInExtent(t))))}return this.featuresCollection_?this.featuresCollection_.getArray().slice(0):[]}getClosestFeatureToCoordinate(t,e){const i=t[0],n=t[1];let r=null;const s=[NaN,NaN];let o=1/0;const a=[-1/0,-1/0,1/0,1/0];return e=e||C,this.featuresRtree_.forEachInExtent(a,(function(t){if(e(t)){const e=t.getGeometry(),l=o;if(o=e instanceof Rd?0:e.closestPointXY(i,n,s,o),o<l){r=t;const e=Math.sqrt(o);a[0]=i-e,a[1]=n-e,a[2]=i+e,a[3]=n+e}}})),r}getExtent(t){return this.featuresRtree_.getExtent(t)}getFeatureById(t){const e=this.idIndex_[t.toString()];return void 0!==e?e:null}getFeatureByUid(t){const e=this.uidIndex_[t];return void 0!==e?e:null}getFormat(){return this.format_}getOverlaps(){return this.overlaps_}getUrl(){return this.url_}handleFeatureChange_(t){const e=t.target,i=z(e),n=e.getGeometry();if(n){const t=n.getExtent();i in this.nullGeometryFeatures_?(delete this.nullGeometryFeatures_[i],this.featuresRtree_&&this.featuresRtree_.insert(t,e)):this.featuresRtree_&&this.featuresRtree_.update(t,e)}else i in this.nullGeometryFeatures_||(this.featuresRtree_&&this.featuresRtree_.remove(e),this.nullGeometryFeatures_[i]=e);const r=e.getId();if(void 0!==r){const t=r.toString();this.idIndex_[t]!==e&&(this.removeFromIdIndex_(e),this.idIndex_[t]=e)}else this.removeFromIdIndex_(e),this.uidIndex_[i]=e;this.changed(),this.dispatchEvent(new Nd(Ld,e))}hasFeature(t){const e=t.getId();return void 0!==e?e in this.idIndex_:z(t)in this.uidIndex_}isEmpty(){return this.featuresRtree_?this.featuresRtree_.isEmpty()&&F(this.nullGeometryFeatures_):!this.featuresCollection_||0===this.featuresCollection_.getLength()}loadFeatures(t,e,i){const n=this.loadedExtentsRtree_,r=this.strategy_(t,e,i);for(let t=0,s=r.length;t<s;++t){const s=r[t];n.forEachInExtent(s,(function(t){return Ut(t.extent,s)}))||(++this.loadingExtentsCount_,this.dispatchEvent(new Nd(Ad)),this.loader_.call(this,s,e,i,(t=>{--this.loadingExtentsCount_,this.dispatchEvent(new Nd(Od,void 0,t))}),(()=>{--this.loadingExtentsCount_,this.dispatchEvent(new Nd(Dd))})),n.insert(s,{extent:s.slice()}))}this.loading=!(this.loader_.length<4)&&this.loadingExtentsCount_>0}refresh(){this.clear(!0),this.loadedExtentsRtree_.clear(),super.refresh()}removeLoadedExtent(t){const e=this.loadedExtentsRtree_,i=e.forEachInExtent(t,(function(e){if(Yt(e.extent,t))return e}));i&&e.remove(i)}removeFeatures(t){let e=!1;for(let i=0,n=t.length;i<n;++i)e=this.removeFeatureInternal(t[i])||e;e&&this.changed()}removeFeature(t){if(!t)return;this.removeFeatureInternal(t)&&this.changed()}removeFeatureInternal(t){const e=z(t);if(!(e in this.uidIndex_))return!1;e in this.nullGeometryFeatures_?delete this.nullGeometryFeatures_[e]:this.featuresRtree_&&this.featuresRtree_.remove(t);const i=this.featureChangeKeys_[e];i?.forEach(k),delete this.featureChangeKeys_[e];const n=t.getId();if(void 0!==n){const e=n.toString(),i=this.idIndex_[e];i===t?delete this.idIndex_[e]:Array.isArray(i)&&(i.splice(i.indexOf(t),1),1===i.length&&(this.idIndex_[e]=i[0]))}return delete this.uidIndex_[e],this.hasListener(Md)&&this.dispatchEvent(new Nd(Md,t)),!0}removeFromIdIndex_(t){for(const e in this.idIndex_)if(this.idIndex_[e]===t){delete this.idIndex_[e];break}}setLoader(t){this.loader_=t}setUrl(t){Ft(this.format_,"`format` must be set when `url` is set"),this.url_=t,this.setLoader(qc(t,this.format_))}setOverlaps(t){this.overlaps_=t,this.changed()}}function Gd(){return[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}function jd(t,e){return t[0]=e[0],t[1]=e[1],t[4]=e[2],t[5]=e[3],t[12]=e[4],t[13]=e[5],t}function Ud(t,e,i,n,r,s,o){const a=1/(t-e),l=1/(i-n),h=1/(r-s);return(o=o??[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1])[0]=-2*a,o[1]=0,o[2]=0,o[3]=0,o[4]=0,o[5]=-2*l,o[6]=0,o[7]=0,o[8]=0,o[9]=0,o[10]=2*h,o[11]=0,o[12]=(t+e)*a,o[13]=(n+i)*l,o[14]=(s+r)*h,o[15]=1,o}function Bd(t,e,i,n,r){return(r=r??[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1])[0]=t[0]*e,r[1]=t[1]*e,r[2]=t[2]*e,r[3]=t[3]*e,r[4]=t[4]*i,r[5]=t[5]*i,r[6]=t[6]*i,r[7]=t[7]*i,r[8]=t[8]*n,r[9]=t[9]*n,r[10]=t[10]*n,r[11]=t[11]*n,r[12]=t[12],r[13]=t[13],r[14]=t[14],r[15]=t[15],r}function zd(t,e,i,n,r){let s,o,a,l,h,c,u,d,g,f,p,m;return t===(r=r??[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1])?(r[12]=t[0]*e+t[4]*i+t[8]*n+t[12],r[13]=t[1]*e+t[5]*i+t[9]*n+t[13],r[14]=t[2]*e+t[6]*i+t[10]*n+t[14],r[15]=t[3]*e+t[7]*i+t[11]*n+t[15]):(s=t[0],o=t[1],a=t[2],l=t[3],h=t[4],c=t[5],u=t[6],d=t[7],g=t[8],f=t[9],p=t[10],m=t[11],r[0]=s,r[1]=o,r[2]=a,r[3]=l,r[4]=h,r[5]=c,r[6]=u,r[7]=d,r[8]=g,r[9]=f,r[10]=p,r[11]=m,r[12]=s*e+h*i+g*n+t[12],r[13]=o*e+c*i+f*n+t[13],r[14]=a*e+u*i+p*n+t[14],r[15]=l*e+d*i+m*n+t[15]),r}function Xd(t,e,i,n){return(n=n??[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1])[0]=1,n[1]=0,n[2]=0,n[3]=0,n[4]=0,n[5]=1,n[6]=0,n[7]=0,n[8]=0,n[9]=0,n[10]=1,n[11]=0,n[12]=t,n[13]=e,n[14]=i,n[15]=1,n}class Vd{constructor(t){this.gl_=t,this.program_=Wd(t,"\n  precision mediump float;\n\n  varying vec2 v_texcoord;\n\n  uniform sampler2D u_texture;\n\n  void main() {\n    if (\n      v_texcoord.x < 0.0 ||\n      v_texcoord.y < 0.0 ||\n      v_texcoord.x > 1.0 ||\n      v_texcoord.y > 1.0\n    ) {\n      discard;\n    }\n    gl_FragColor = texture2D(u_texture, v_texcoord);\n  }\n","\n  attribute vec4 a_position;\n  attribute vec4 a_texcoord;\n\n  uniform mat4 u_matrix;\n  uniform mat4 u_textureMatrix;\n\n  varying vec2 v_texcoord;\n\n  void main() {\n    gl_Position = u_matrix * a_position;\n    vec2 texcoord = (u_textureMatrix * a_texcoord).xy;\n    v_texcoord = texcoord;\n  }\n"),this.positionLocation=t.getAttribLocation(this.program_,"a_position"),this.texcoordLocation=t.getAttribLocation(this.program_,"a_texcoord"),this.matrixLocation=t.getUniformLocation(this.program_,"u_matrix"),this.textureMatrixLocation=t.getUniformLocation(this.program_,"u_textureMatrix"),this.textureLocation=t.getUniformLocation(this.program_,"u_texture"),this.positionBuffer=t.createBuffer(),t.bindBuffer(t.ARRAY_BUFFER,this.positionBuffer),this.positions=[0,0,0,1,1,0,1,0,0,1,1,1],t.bufferData(t.ARRAY_BUFFER,new Float32Array(this.positions),t.STATIC_DRAW),this.texcoordBuffer=t.createBuffer(),t.bindBuffer(t.ARRAY_BUFFER,this.texcoordBuffer),this.texcoords=[0,0,0,1,1,0,1,0,0,1,1,1],t.bufferData(t.ARRAY_BUFFER,new Float32Array(this.texcoords),t.STATIC_DRAW)}drawImage(t,e,i,n,r,s,o,a,l,h,c,u,d){const g=this.gl_;void 0===a&&(a=n),void 0===l&&(l=r),void 0===s&&(s=e),void 0===o&&(o=i),void 0===h&&(h=s),void 0===c&&(c=o),void 0===u&&(u=g.canvas.width),void 0===d&&(d=g.canvas.height),g.bindTexture(g.TEXTURE_2D,t),g.useProgram(this.program_),g.bindBuffer(g.ARRAY_BUFFER,this.positionBuffer),g.enableVertexAttribArray(this.positionLocation),g.vertexAttribPointer(this.positionLocation,2,g.FLOAT,!1,0,0),g.bindBuffer(g.ARRAY_BUFFER,this.texcoordBuffer),g.enableVertexAttribArray(this.texcoordLocation),g.vertexAttribPointer(this.texcoordLocation,2,g.FLOAT,!1,0,0);let f=Ud(0,u,0,d,-1,1);f=zd(f,a,l,0),f=Bd(f,h,c,1),g.uniformMatrix4fv(this.matrixLocation,!1,f);let p=Xd(n/e,r/i,0);p=Bd(p,s/e,o/i,1),g.uniformMatrix4fv(this.textureMatrixLocation,!1,p),g.uniform1i(this.textureLocation,0),g.drawArrays(g.TRIANGLES,0,this.positions.length/2)}}function $d(t,e,i){const n=t.createShader(e);if(null===n)throw new Error("Shader compilation failed");if(t.shaderSource(n,i),t.compileShader(n),!t.getShaderParameter(n,t.COMPILE_STATUS)){const e=t.getShaderInfoLog(n);if(null===e)throw new Error("Shader info log creation failed");throw new Error(e)}return n}function Wd(t,e,i){const n=t.createProgram(),r=$d(t,t.VERTEX_SHADER,i),s=$d(t,t.FRAGMENT_SHADER,e);if(null===n)throw new Error("Program creation failed");if(t.attachShader(n,r),t.attachShader(n,s),t.linkProgram(n),!t.getProgramParameter(n,t.LINK_STATUS)){if(null===t.getProgramInfoLog(n))throw new Error("Program info log creation failed");throw new Error}return n}function Zd(t,e,i,n){let r;return r=i&&i.length?i.shift():ut?new OffscreenCanvas(t||300,e||300):document.createElement("canvas"),t&&(r.width=t),e&&(r.height=e),r.getContext("webgl",n)}function Yd(t){const e=t.canvas;e.width=1,e.height=1,t.clear(t.COLOR_BUFFER_BIT|t.DEPTH_BUFFER_BIT|t.STENCIL_BUFFER_BIT)}const Hd=[];function Kd(t,e,i,n,r,s,o,a,l,h,c,u,d,g){const f=Math.round(n*e),p=Math.round(n*i);let m,_;if(t.canvas.width=f,t.canvas.height=p,_=t.createTexture(),t.bindTexture(t.TEXTURE_2D,_),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),d?(t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR)):(t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.NEAREST)),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,f,p,0,t.RGBA,c,null),m=t.createFramebuffer(),t.bindFramebuffer(t.FRAMEBUFFER,m),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,_,0),null===m)throw new Error("Could not create framebuffer");if(null===_)throw new Error("Could not create texture");if(0===l.length)return{width:f,height:p,framebuffer:m,texture:_};const y=[1/0,1/0,-1/0,-1/0];let x,v,E;l.forEach((function(t,e,i){Kt(y,t.extent)}));const S=1/r;if(g&&1===l.length&&0===h)x=l[0].texture,v=l[0].width,E=l[0].width;else{if(x=t.createTexture(),null===_)throw new Error("Could not create texture");v=Math.round(fe(y)*S),E=Math.round(ce(y)*S);const e=t.getParameter(t.MAX_TEXTURE_SIZE),i=Math.max(v,E),n=i>e?e/i:1,r=Math.round(v*n),s=Math.round(E*n);t.bindTexture(t.TEXTURE_2D,x),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),d?(t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR)):(t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.NEAREST)),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,r,s,0,t.RGBA,c,null);const o=t.createFramebuffer();t.bindFramebuffer(t.FRAMEBUFFER,o),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,x,0);const a=new Vd(t);l.forEach((function(e,i,l){const c=(e.extent[0]-y[0])*S*n,u=-(e.extent[3]-y[3])*S*n,g=fe(e.extent)*S*n,f=ce(e.extent)*S*n;if(t.bindFramebuffer(t.FRAMEBUFFER,o),t.viewport(0,0,r,s),e.clipExtent){const i=(e.clipExtent[0]-y[0])*S*n,r=-(e.clipExtent[3]-y[3])*S*n,s=fe(e.clipExtent)*S*n,o=ce(e.clipExtent)*S*n;t.enable(t.SCISSOR_TEST),t.scissor(d?i:Math.round(i),d?r:Math.round(r),d?s:Math.round(i+s)-Math.round(i),d?o:Math.round(r+o)-Math.round(r))}a.drawImage(e.texture,e.width,e.height,h,h,e.width-2*h,e.height-2*h,d?c:Math.round(c),d?u:Math.round(u),d?g:Math.round(c+g)-Math.round(c),d?f:Math.round(u+f)-Math.round(u),r,s),t.disable(t.SCISSOR_TEST)})),t.deleteFramebuffer(o)}const w=de(o),T=de(y),C=t=>{const e=(t[0][0]-w[0])/s*n,i=-(t[0][1]-w[1])/s*n;return{u1:(t[1][0]-w[0])/s*n,v1:-(t[1][1]-w[1])/s*n,u0:e,v0:i,u2:(t[2][0]-w[0])/s*n,v2:-(t[2][1]-w[1])/s*n}};t.bindFramebuffer(t.FRAMEBUFFER,m),t.viewport(0,0,f,p);{const e=[],i=[],n=Wd(t,"\n  precision mediump float;\n\n  varying vec2 v_texcoord;\n\n  uniform sampler2D u_texture;\n\n  void main() {\n    if (v_texcoord.x < 0.0 || v_texcoord.x > 1.0 || v_texcoord.y < 0.0 || v_texcoord.y > 1.0) {\n      discard;\n    }\n    gl_FragColor = texture2D(u_texture, v_texcoord);\n  }\n","\n  attribute vec4 a_position;\n  attribute vec2 a_texcoord;\n\n  varying vec2 v_texcoord;\n\n  uniform mat4 u_matrix;\n\n  void main() {\n     gl_Position = u_matrix * a_position;\n     v_texcoord = a_texcoord;\n  }\n");t.useProgram(n);const s=t.getUniformLocation(n,"u_texture");t.bindTexture(t.TEXTURE_2D,x),t.uniform1i(s,0),a.getTriangles().forEach((function(t,n,s){const o=t.source,a=t.target,{u1:l,v1:h,u0:c,v0:u,u2:d,v2:g}=C(a),f=(o[0][0]-T[0])/r/v,p=-(o[0][1]-T[1])/r/E,m=(o[1][0]-T[0])/r/v,_=-(o[1][1]-T[1])/r/E,y=(o[2][0]-T[0])/r/v,x=-(o[2][1]-T[1])/r/E;e.push(l,h,c,u,d,g),i.push(m,_,f,p,y,x)}));const o=Ud(0,f,p,0,-1,1),l=t.getUniformLocation(n,"u_matrix");t.uniformMatrix4fv(l,!1,o);const h=t.getAttribLocation(n,"a_position"),c=t.createBuffer();t.bindBuffer(t.ARRAY_BUFFER,c),t.bufferData(t.ARRAY_BUFFER,new Float32Array(e),t.STATIC_DRAW),t.vertexAttribPointer(h,2,t.FLOAT,!1,0,0),t.enableVertexAttribArray(h);const u=t.getAttribLocation(n,"a_texcoord"),d=t.createBuffer();t.bindBuffer(t.ARRAY_BUFFER,d),t.bufferData(t.ARRAY_BUFFER,new Float32Array(i),t.STATIC_DRAW),t.vertexAttribPointer(u,2,t.FLOAT,!1,0,0),t.enableVertexAttribArray(u),t.drawArrays(t.TRIANGLES,0,e.length/2)}if(u){const e=Wd(t,"\n  precision mediump float;\n\n  uniform vec4 u_val;\n  void main() {\n     gl_FragColor = u_val;\n  }\n","\n  attribute vec4 a_position;\n\n  uniform mat4 u_matrix;\n\n  void main() {\n     gl_Position = u_matrix * a_position;\n  }\n");t.useProgram(e);const i=Ud(0,f,p,0,-1,1),n=t.getUniformLocation(e,"u_matrix");t.uniformMatrix4fv(n,!1,i);const r=Array.isArray(u)?u:[0,0,0,255],s=t.getUniformLocation(e,"u_val");t.uniform4fv(s,r);const o=t.getAttribLocation(e,"a_position"),l=t.createBuffer();t.bindBuffer(t.ARRAY_BUFFER,l),t.vertexAttribPointer(o,2,t.FLOAT,!1,0,0),t.enableVertexAttribArray(o);const h=a.getTriangles().reduce((function(t,e){const i=e.target,{u1:n,v1:r,u0:s,v0:o,u2:a,v2:l}=C(i);return t.concat([n,r,s,o,s,o,a,l,a,l,n,r])}),[]);t.bufferData(t.ARRAY_BUFFER,new Float32Array(h),t.STATIC_DRAW),t.drawArrays(t.LINES,0,h.length/2)}return{width:f,height:p,framebuffer:m,texture:_}}class qd extends Lt{constructor(t){super({tileCoord:t.tileCoord,loader:()=>Promise.resolve(new Uint8ClampedArray(4)),interpolate:t.interpolate,transition:t.transition}),this.renderEdges_=void 0!==t.renderEdges&&t.renderEdges,this.pixelRatio_=t.pixelRatio,this.gutter_=t.gutter,this.reprojData_=null,this.reprojError_=null,this.reprojSize_=void 0,this.sourceTileGrid_=t.sourceTileGrid,this.targetTileGrid_=t.targetTileGrid,this.wrappedTileCoord_=t.wrappedTileCoord||t.tileCoord,this.sourceTiles_=[],this.sourcesListenerKeys_=null,this.sourceZ_=0;const e=t.sourceProj,i=e.getExtent(),n=t.sourceTileGrid.getExtent();this.clipExtent_=e.canWrapX()?n?ue(i,n):i:n;const r=this.targetTileGrid_.getTileCoordExtent(this.wrappedTileCoord_),s=this.targetTileGrid_.getExtent();let o=this.sourceTileGrid_.getExtent();const a=s?ue(r,s):r;if(0===ne(a))return void(this.state=J);i&&(o=o?ue(o,i):i);const l=this.targetTileGrid_.getResolution(this.wrappedTileCoord_[0]),h=t.targetProj,c=xu(e,h,a,l);if(!isFinite(c)||c<=0)return void(this.state=J);const u=void 0!==t.errorThreshold?t.errorThreshold:Qu;if(this.triangulation_=new Ju(e,h,a,o,c*u,l,t.transformMatrix),0===this.triangulation_.getTriangles().length)return void(this.state=J);this.sourceZ_=this.sourceTileGrid_.getZForResolution(c);let d=this.triangulation_.calculateSourceExtent();if(o&&(e.canWrapX()?(d[1]=we(d[1],o[1],o[3]),d[3]=we(d[3],o[1],o[3])):d=ue(d,o)),ne(d)){let n=0,r=0;e.canWrapX()&&(n=fe(i),r=Math.floor((d[0]-i[0])/n));Se(d.slice(),e,!0).forEach((e=>{const i=this.sourceTileGrid_.getTileRangeForExtentAndZ(e,this.sourceZ_),s=t.getTileFunction;for(let t=i.minX;t<=i.maxX;t++)for(let e=i.minY;e<=i.maxY;e++){const i=s(this.sourceZ_,t,e,this.pixelRatio_);if(i){const t=r*n;this.sourceTiles_.push({tile:i,offset:t})}}++r})),0===this.sourceTiles_.length&&(this.state=J)}else this.state=J}getSize(){return this.reprojSize_}getData(){return this.reprojData_}getError(){return this.reprojError_}reproject_(){const t=[];let e=!1;if(this.sourceTiles_.forEach((i=>{const n=i.tile;if(!n||n.getState()!==K)return;const r=n.getSize(),s=this.gutter_;let o;const a=Ct(n.getData());a?o=a:(e=!0,o=Pt(Tt(n.getData())));const l=[r[0]+2*s,r[1]+2*s],h=o instanceof Float32Array,c=l[0]*l[1],u=h?Float32Array:Uint8ClampedArray,d=new u(o.buffer),g=u.BYTES_PER_ELEMENT,f=g*d.length/c,p=d.byteLength/l[1],m=Math.floor(p/g/l[0]),_=this.sourceTileGrid_.getTileCoordExtent(n.tileCoord);_[0]+=i.offset,_[2]+=i.offset;const y=this.clipExtent_?.slice();y&&(y[0]+=i.offset,y[2]+=i.offset),t.push({extent:_,clipExtent:y,data:d,dataType:u,bytesPerPixel:f,pixelSize:l,bandCount:m})})),this.sourceTiles_.length=0,0===t.length)return this.state=q,void this.changed();const i=this.wrappedTileCoord_[0],n=this.targetTileGrid_.getTileSize(i),r="number"==typeof n?n:n[0],s="number"==typeof n?n:n[1],o=r*this.pixelRatio_,a=s*this.pixelRatio_,l=this.targetTileGrid_.getResolution(i),h=this.sourceTileGrid_.getResolution(this.sourceZ_),c=this.targetTileGrid_.getTileCoordExtent(this.wrappedTileCoord_),u=t[0].bandCount,d=new t[0].dataType(u*o*a),g=Zd(o,a,Hd,{premultipliedAlpha:!1,antialias:!1});let f;const p=g.RGBA;let m;if(t[0].dataType==Float32Array){m=g.FLOAT,g.getExtension("WEBGL_color_buffer_float"),g.getExtension("OES_texture_float"),g.getExtension("EXT_float_blend");f=null!==g.getExtension("OES_texture_float_linear")&&this.interpolate}else m=g.UNSIGNED_BYTE,f=this.interpolate;for(let e=Math.ceil(u/4)-1;e>=0;--e){const i=[];for(let n=0,r=t.length;n<r;++n){const r=t[n],s=r.pixelSize,o=s[0],a=s[1],l=new r.dataType(4*o*a),h=r.data;let c=4*e;for(let t=0,e=l.length;t<e;t+=4)l[t]=h[c],l[t+1]=h[c+1],l[t+2]=h[c+2],l[t+3]=h[c+3],c+=u;const d=g.createTexture();g.bindTexture(g.TEXTURE_2D,d),f?(g.texParameteri(g.TEXTURE_2D,g.TEXTURE_MIN_FILTER,g.LINEAR),g.texParameteri(g.TEXTURE_2D,g.TEXTURE_MAG_FILTER,g.LINEAR)):(g.texParameteri(g.TEXTURE_2D,g.TEXTURE_MIN_FILTER,g.NEAREST),g.texParameteri(g.TEXTURE_2D,g.TEXTURE_MAG_FILTER,g.NEAREST)),g.texParameteri(g.TEXTURE_2D,g.TEXTURE_WRAP_S,g.CLAMP_TO_EDGE),g.texParameteri(g.TEXTURE_2D,g.TEXTURE_WRAP_T,g.CLAMP_TO_EDGE),g.texImage2D(g.TEXTURE_2D,0,p,o,a,0,p,m,l),i.push({extent:r.extent,clipExtent:r.clipExtent,texture:d,width:o,height:a})}const{framebuffer:n,width:o,height:a}=Kd(g,r,s,this.pixelRatio_,h,l,c,this.triangulation_,i,this.gutter_,m,this.renderEdges_,f),_=o,y=4*a,x=new t[0].dataType(_*y);g.bindFramebuffer(g.FRAMEBUFFER,n),g.readPixels(0,0,o,a,g.RGBA,m,x);let v=4*e;for(let t=0,e=x.length;t<e;t+=4){const e=(_-1-(t/y|0))*y+t%y;d[v]=x[e],d[v+1]=x[e+1],d[v+2]=x[e+2],d[v+3]=x[e+3],v+=u}}if(Yd(g),Hd.push(g.canvas),e){const t=pt(r,s),e=new ImageData(d,r);t.putImageData(e,0,0),this.reprojData_=t.canvas}else this.reprojData_=d;this.reprojSize_=[Math.round(o),Math.round(a)],this.state=K,this.changed()}load(){if(this.state!==Y&&this.state!==q)return;this.state=H,this.changed();let t=0;this.sourcesListenerKeys_=[],this.sourceTiles_.forEach((({tile:e})=>{const i=e.getState();if(i!==Y&&i!==H)return;t++;const r=D(e,n,(()=>{const i=e.getState();i!=K&&i!=q&&i!=J||(k(r),t--,0===t&&(this.unlistenSources_(),this.reproject_()))}));this.sourcesListenerKeys_.push(r)})),0===t?setTimeout(this.reproject_.bind(this),0):this.sourceTiles_.forEach((function({tile:t}){t.getState()==Y&&t.load()}))}unlistenSources_(){this.sourcesListenerKeys_.forEach(k),this.sourcesListenerKeys_=null}}class Jd extends nd{constructor(t){const e=void 0===t.projection?"EPSG:3857":t.projection;let i=t.tileGrid;void 0===i&&e&&(i=Nu({extent:ju(e),maxResolution:t.maxResolution,maxZoom:t.maxZoom,minZoom:t.minZoom,tileSize:t.tileSize})),super({cacheSize:.1,attributions:t.attributions,attributionsCollapsible:t.attributionsCollapsible,projection:e,tileGrid:i,state:t.state,wrapX:t.wrapX,transition:t.transition,interpolate:t.interpolate,key:t.key,zDirection:t.zDirection}),this.gutter_=void 0!==t.gutter?t.gutter:0,this.tileSize_=t.tileSize?Nl(t.tileSize):null,this.tileSizes_=null,this.tileLoadingKeys_={},this.loader_=t.loader,this.handleTileChange_=this.handleTileChange_.bind(this),this.bandCount=void 0===t.bandCount?4:t.bandCount,this.tileGridForProjection_={},this.crossOrigin_=t.crossOrigin||"anonymous",this.transformMatrix=null}setTileSizes(t){this.tileSizes_=t}getTileSize(t){if(this.tileSizes_)return this.tileSizes_[t];if(this.tileSize_)return this.tileSize_;const e=this.getTileGrid();return e?Nl(e.getTileSize(t)):[256,256]}getGutterForProjection(t){const e=this.getProjection();return e&&!Pn(e,t)||this.transformMatrix?0:this.gutter_}setLoader(t){this.loader_=t}getReprojTile_(t,e,i,n,r){const s=this.tileGrid||this.getTileGridForProjection(r||n),o=Math.max.apply(null,s.getResolutions().map(((t,e)=>{const i=Nl(s.getTileSize(e)),n=this.getTileSize(e);return Math.max(n[0]/i[0],n[1]/i[1])}))),a=this.getTileGridForProjection(n),l=[t,e,i],h=this.getTileCoordForTileUrlFunction(l,n),c=Object.assign({sourceProj:r||n,sourceTileGrid:s,targetProj:n,targetTileGrid:a,tileCoord:l,wrappedTileCoord:h,pixelRatio:o,gutter:this.gutter_,getTileFunction:(t,e,i,n)=>this.getTile(t,e,i,n),transformMatrix:this.transformMatrix},this.tileOptions),u=new qd(c);return u.key=this.getKey(),u}getTile(t,e,i,r,s){const o=this.getProjection();if(s&&(o&&!Pn(o,s)||this.transformMatrix))return this.getReprojTile_(t,e,i,s,o);const a=this.getTileSize(t),l=this.loader_,h=new AbortController,c={signal:h.signal,crossOrigin:this.crossOrigin_},u=this.getTileCoordForTileUrlFunction([t,e,i]);if(!u)return null;const d=u[0],g=u[1],f=u[2],p=this.getTileGrid()?.getFullTileRange(d);p&&(c.maxY=p.getHeight()-1);const m=Object.assign({tileCoord:[t,e,i],loader:function(){return I((function(){return l(d,g,f,c)}))},size:a,controller:h},this.tileOptions),_=new Lt(m);return _.key=this.getKey(),_.addEventListener(n,this.handleTileChange_),_}handleTileChange_(t){const e=t.target,i=z(e),n=e.getState();let r;n==H?(this.tileLoadingKeys_[i]=!0,r=sd):i in this.tileLoadingKeys_&&(delete this.tileLoadingKeys_[i],r=n==q?ad:n==K?od:void 0),r&&this.dispatchEvent(new rd(r,e))}getTileGridForProjection(t){const e=this.getProjection();if(this.tileGrid&&(!e||Pn(e,t))&&!this.transformMatrix)return this.tileGrid;const i=z(t);return i in this.tileGridForProjection_||(this.tileGridForProjection_[i]=Au(t)),this.tileGridForProjection_[i]}setTileGridForProjection(t,e){const i=vn(t);if(i){const t=z(i);t in this.tileGridForProjection_||(this.tileGridForProjection_[t]=e)}}}function Qd(t,e){if(!t)return!1;if(!0===t)return!0;if(3!==e.getSamplesPerPixel())return!1;const i=e.fileDirectory.PhotometricInterpretation,n=GeoTIFF.globals.photometricInterpretations;return i===n.CMYK||i===n.YCbCr||i===n.CIELab||i===n.ICCLab}const tg="STATISTICS_MAXIMUM",eg="STATISTICS_MINIMUM";let ig;function ng(t){try{return t.getBoundingBox(!0)}catch{return[0,0,t.getWidth(),t.getHeight()]}}function rg(t){try{return t.getOrigin().slice(0,2)}catch{return[0,t.getHeight()]}}function sg(t,e){try{return t.getResolution(e)}catch{return[e.getWidth()/t.getWidth(),e.getHeight()/t.getHeight()]}}function og(t){const e=t.geoKeys;if(!e)return null;if(e.ProjectedCSTypeGeoKey&&32767!==e.ProjectedCSTypeGeoKey){const t="EPSG:"+e.ProjectedCSTypeGeoKey;let i=vn(t);if(!i){const n=li(e.ProjLinearUnitsGeoKey);n&&(i=new ci({code:t,units:n}))}return i}if(e.GeographicTypeGeoKey&&32767!==e.GeographicTypeGeoKey){const t="EPSG:"+e.GeographicTypeGeoKey;let i=vn(t);if(!i){const n=li(e.GeogAngularUnitsGeoKey);n&&(i=new ci({code:t,units:n}))}return i}return null}function ag(t){return t.getImageCount().then((function(e){const i=new Array(e);for(let n=0;n<e;++n)i[n]=t.getImage(n);return Promise.all(i)}))}function lg(t,e){let i;return i=t.blob?GeoTIFF.fromBlob(t.blob):t.overviews?GeoTIFF.fromUrls(t.url,t.overviews,e):GeoTIFF.fromUrl(t.url,e),i.then(ag)}function hg(t,e,i,n,r){if(Array.isArray(t)){const s=t.length;if(!Array.isArray(e)||s!=e.length){const t=new Error(n);throw r(t),t}for(let o=0;o<s;++o)hg(t[o],e[o],i,n,r)}else if(Math.abs(t-e)>i*t)throw new Error(n)}function cg(t){return t instanceof Int8Array?127:t instanceof Uint8Array||t instanceof Uint8ClampedArray?255:t instanceof Int16Array?32767:t instanceof Uint16Array?65535:t instanceof Int32Array?2147483647:t instanceof Uint32Array?4294967295:t instanceof Float32Array?34e37:255}class ug extends Jd{constructor(t){super({state:"loading",tileGrid:null,projection:t.projection||null,transition:t.transition,interpolate:!1!==t.interpolate,wrapX:t.wrapX}),this.sourceInfo_=t.sources;const e=this.sourceInfo_.length;this.sourceOptions_=t.sourceOptions,this.sourceImagery_=new Array(e),this.sourceMasks_=new Array(e),this.resolutionFactors_=new Array(e),this.samplesPerPixel_,this.nodataValues_,this.metadata_,this.normalize_=!1!==t.normalize,this.addAlpha_=!1,this.error_=null,this.convertToRGB_=t.convertToRGB||!1,this.setKey(this.sourceInfo_.map((t=>t.url)).join(","));const i=this,n=new Array(e);for(let t=0;t<e;++t)n[t]=lg(this.sourceInfo_[t],this.sourceOptions_);Promise.all(n).then((function(t){i.configure_(t)})).catch((function(t){Ve(t),i.error_=t,i.setState("error")}))}getError(){return this.error_}determineProjection(t){const e=t[0];for(let t=e.length-1;t>=0;--t){const i=og(e[t]);if(i){this.projection=i;break}}}determineTransformMatrix(t){const e=t[0];for(let t=e.length-1;t>=0;--t){const i=e[t].fileDirectory.ModelTransformation;if(i){const[t,e,n,r,s,o,a,l]=i,h=Yn(Yn([1/Math.sqrt(t*t+s*s),0,0,-1/Math.sqrt(e*e+o*o),r,l],[t,s,e,o,0,0]),[1,0,0,1,-r,-l]);this.transformMatrix=h,this.addAlpha_=!0;break}}}configure_(t){let e,i,n,r,s;const o=new Array(t.length),a=new Array(t.length),l=new Array(t.length);let h=0;const c=t.length;for(let u=0;u<c;++u){const c=[],d=[];t[u].forEach((t=>{4==(4&(t.fileDirectory.NewSubfileType||0))?d.push(t):c.push(t)}));const g=c.length;if(d.length>0&&d.length!==g)throw new Error(`Expected one mask per image found ${d.length} masks and ${g} images`);let f,p;const m=new Array(g),_=new Array(g),y=new Array(g);a[u]=new Array(g),l[u]=new Array(g);for(let t=0;t<g;++t){const e=c[t],i=e.getGDALNoData();l[u][t]=e.getGDALMetadata(0),a[u][t]=i;const n=this.sourceInfo_[u].bands;o[u]=n?n.length:e.getSamplesPerPixel();const r=g-(t+1);f||(f=ng(e)),p||(p=rg(e));const s=sg(e,c[0]);y[r]=s[0];const h=[e.getTileWidth(),e.getTileHeight()];h[0]!==h[1]&&h[1]<256&&(h[0]=256,h[1]=256),m[r]=h;const d=s[0]/Math.abs(s[1]);_[r]=[h[0],h[1]/d]}if(e?ue(e,f,e):e=f,i){hg(i,p,0,`Origin mismatch for source ${u}, got [${p}] but expected [${i}]`,this.viewRejector)}else i=p;if(s){s.length-h>y.length&&(h=s.length-y.length);const t=s[s.length-1]/y[y.length-1];this.resolutionFactors_[u]=t;const e=y.map((e=>e*t)),i=`Resolution mismatch for source ${u}, got [${e}] but expected [${s}]`;hg(s.slice(h,s.length),e,.02,i,this.viewRejector)}else s=y,this.resolutionFactors_[u]=1;n?hg(n.slice(h,n.length),_,.01,`Tile size mismatch for source ${u}`,this.viewRejector):n=_,r?hg(r.slice(h,r.length),m,0,`Tile size mismatch for source ${u}`,this.viewRejector):r=m,this.sourceImagery_[u]=c.reverse(),this.sourceMasks_[u]=d.reverse()}for(let t=0,e=this.sourceImagery_.length;t<e;++t){const e=this.sourceImagery_[t];for(;e.length<s.length;)e.unshift(void 0)}this.getProjection()||this.determineProjection(t),this.determineTransformMatrix(t),this.samplesPerPixel_=o,this.nodataValues_=a,this.metadata_=l;t:for(let t=0;t<c;++t){if(void 0!==this.sourceInfo_[t].nodata){this.addAlpha_=!0;break}if(this.sourceMasks_[t].length){this.addAlpha_=!0;break}const e=a[t],i=this.sourceInfo_[t].bands;if(i){for(let t=0;t<i.length;++t)if(null!==e[i[t]-1]){this.addAlpha_=!0;break t}}else for(let t=0;t<e.length;++t)if(null!==e[t]){this.addAlpha_=!0;break t}}let u=this.addAlpha_?1:0;for(let t=0;t<c;++t)u+=o[t];this.bandCount=u;const d=new Lu({extent:e,minZoom:h,origin:i,resolutions:s,tileSizes:n});this.tileGrid=d,this.setTileSizes(r),this.setLoader(this.loadTile_.bind(this)),this.setState("ready");2===s.length?s=[s[0],s[1],s[1]/2]:1===s.length&&(s=[2*s[0],s[0],s[0]/2]);let g=e;if(this.transformMatrix){const t=ir([1,0,0,1,0,0],this.transformMatrix.slice());g=ve(e,Cn((e=>qn(t,e))))}this.viewResolver({showFullExtent:!0,projection:this.projection,resolutions:s,center:kn(oe(g),this.projection),extent:jn(g,this.projection),zoom:1})}loadTile_(t,e,i,n){const r=this.getTileSize(t),s=this.sourceImagery_.length,o=new Array(2*s),a=this.nodataValues_,l=this.sourceInfo_,h=(ig||(ig=new GeoTIFF.Pool),ig);for(let c=0;c<s;++c){const u=l[c],d=this.resolutionFactors_[c],g=[Math.round(e*(r[0]*d)),Math.round(i*(r[1]*d)),Math.round((e+1)*(r[0]*d)),Math.round((i+1)*(r[1]*d))],f=this.sourceImagery_[c][t];let p,m;u.bands&&(p=u.bands.map((function(t){return t-1}))),m="nodata"in u&&null!==u.nodata?u.nodata:p?p.map((function(t){return a[c][t]})):a[c];const _={window:g,width:r[0],height:r[1],samples:p,fillValue:m,pool:h,interleave:!1,signal:n.signal};Qd(this.convertToRGB_,f)?o[c]=f.readRGB(_):o[c]=f.readRasters(_);const y=s+c,x=this.sourceMasks_[c][t];x?o[y]=x.readRasters({window:g,width:r[0],height:r[1],samples:[0],pool:h,interleave:!1}):o[y]=Promise.resolve(null)}return Promise.all(o).then(this.composeTile_.bind(this,r)).catch((function(t){throw Ve(t),t}))}composeTile_(t,e){const i=this.metadata_,n=this.sourceInfo_,r=this.sourceImagery_.length,s=this.bandCount,o=this.samplesPerPixel_,a=this.nodataValues_,l=this.normalize_,h=this.addAlpha_,c=t[0]*t[1],u=c*s;let d;d=l?new Uint8Array(u):new Float32Array(u);let g=0;for(let t=0;t<c;++t){let s=h;for(let c=0;c<r;++c){const u=n[c];let p,m,_=u.min,y=u.max;if(l){const t=i[c][0];void 0===_&&(_=t&&eg in t?parseFloat(t[eg]):(f=e[c][0])instanceof Int8Array?-128:f instanceof Int16Array?-32768:f instanceof Int32Array?-2147483648:f instanceof Float32Array?12e-39:0),void 0===y&&(y=t&&tg in t?parseFloat(t[tg]):cg(e[c][0])),p=255/(y-_),m=-_*p}for(let i=0;i<o[c];++i){const n=e[c][i][t];let r;if(r=l?we(p*n+m,0,255):n,h){let t=u.nodata;if(void 0===t){let e;e=u.bands?u.bands[i]-1:i,t=a[c][e]}const e=isNaN(t);(!e&&n!==t||e&&!isNaN(n))&&(s=!1,d[g]=r)}else d[g]=r;g++}if(!s){const i=e[r+c];i&&!i[0][t]&&(s=!0)}}h&&(s||(d[g]=255),g++)}var f;return d}}ug.prototype.getView;const dg="version1",gg="version2",fg="version3",pg={};pg[dg]={level0:{supports:[],formats:[],qualities:["native"]},level1:{supports:["regionByPx","sizeByW","sizeByH","sizeByPct"],formats:["jpg"],qualities:["native"]},level2:{supports:["regionByPx","regionByPct","sizeByW","sizeByH","sizeByPct","sizeByConfinedWh","sizeByWh"],formats:["jpg","png"],qualities:["native","color","grey","bitonal"]}},pg[gg]={level0:{supports:[],formats:["jpg"],qualities:["default"]},level1:{supports:["regionByPx","sizeByW","sizeByH","sizeByPct"],formats:["jpg"],qualities:["default"]},level2:{supports:["regionByPx","regionByPct","sizeByW","sizeByH","sizeByPct","sizeByConfinedWh","sizeByDistortedWh","sizeByWh"],formats:["jpg","png"],qualities:["default","bitonal"]}},pg[fg]={level0:{supports:[],formats:["jpg"],qualities:["default"]},level1:{supports:["regionByPx","regionSquare","sizeByW","sizeByH","sizeByWh"],formats:["jpg"],qualities:["default"]},level2:{supports:["regionByPx","regionSquare","regionByPct","sizeByW","sizeByH","sizeByPct","sizeByConfinedWh","sizeByWh"],formats:["jpg","png"],qualities:["default"]}},pg.none={none:{supports:[],formats:[],qualities:[]}};const mg=/^https?:\/\/library\.stanford\.edu\/iiif\/image-api\/(?:1\.1\/)?compliance\.html#level[0-2]$/,_g=/^https?:\/\/iiif\.io\/api\/image\/2\/level[0-2](?:\.json)?$/,yg=/(^https?:\/\/iiif\.io\/api\/image\/3\/level[0-2](?:\.json)?$)|(^level[0-2]$)/;const xg={};xg[dg]=function(t){let e=t.getComplianceLevelSupportedFeatures();return void 0===e&&(e=pg[dg].level0),{url:void 0===t.imageInfo["@id"]?void 0:t.imageInfo["@id"].replace(/\/?(?:info\.json)?$/g,""),supports:e.supports,formats:[...e.formats,void 0===t.imageInfo.formats?[]:t.imageInfo.formats],qualities:[...e.qualities,void 0===t.imageInfo.qualities?[]:t.imageInfo.qualities],resolutions:t.imageInfo.scale_factors,tileSize:void 0!==t.imageInfo.tile_width?void 0!==t.imageInfo.tile_height?[t.imageInfo.tile_width,t.imageInfo.tile_height]:[t.imageInfo.tile_width,t.imageInfo.tile_width]:null!=t.imageInfo.tile_height?[t.imageInfo.tile_height,t.imageInfo.tile_height]:void 0}},xg[gg]=function(t){const e=t.getComplianceLevelSupportedFeatures(),i=Array.isArray(t.imageInfo.profile)&&t.imageInfo.profile.length>1,n=i&&t.imageInfo.profile[1].supports?t.imageInfo.profile[1].supports:[],r=i&&t.imageInfo.profile[1].formats?t.imageInfo.profile[1].formats:[],s=i&&t.imageInfo.profile[1].qualities?t.imageInfo.profile[1].qualities:[];return{url:t.imageInfo["@id"].replace(/\/?(?:info\.json)?$/g,""),sizes:void 0===t.imageInfo.sizes?void 0:t.imageInfo.sizes.map((function(t){return[t.width,t.height]})),tileSize:void 0===t.imageInfo.tiles?void 0:[t.imageInfo.tiles.map((function(t){return t.width}))[0],t.imageInfo.tiles.map((function(t){return void 0===t.height?t.width:t.height}))[0]],resolutions:void 0===t.imageInfo.tiles?void 0:t.imageInfo.tiles.map((function(t){return t.scaleFactors}))[0],supports:[...e.supports,...n],formats:[...e.formats,...r],qualities:[...e.qualities,...s]}},xg[fg]=function(t){const e=t.getComplianceLevelSupportedFeatures(),i=void 0===t.imageInfo.extraFormats?e.formats:[...e.formats,...t.imageInfo.extraFormats],n=void 0!==t.imageInfo.preferredFormats&&Array.isArray(t.imageInfo.preferredFormats)&&t.imageInfo.preferredFormats.length>0?t.imageInfo.preferredFormats.filter((function(t){return["jpg","png","gif"].includes(t)})).reduce((function(t,e){return void 0===t&&i.includes(e)?e:t}),void 0):void 0;return{url:t.imageInfo.id,sizes:void 0===t.imageInfo.sizes?void 0:t.imageInfo.sizes.map((function(t){return[t.width,t.height]})),tileSize:void 0===t.imageInfo.tiles?void 0:[t.imageInfo.tiles.map((function(t){return t.width}))[0],t.imageInfo.tiles.map((function(t){return t.height}))[0]],resolutions:void 0===t.imageInfo.tiles?void 0:t.imageInfo.tiles.map((function(t){return t.scaleFactors}))[0],supports:void 0===t.imageInfo.extraFeatures?e.supports:[...e.supports,...t.imageInfo.extraFeatures],formats:i,qualities:void 0===t.imageInfo.extraQualities?e.qualities:[...e.qualities,...t.imageInfo.extraQualities],preferredFormat:n}};let vg=class extends Ms{constructor(t,e,i,n,r,s,o){super(e,i,n,r,s,o),this.zoomifyImage_=null,this.tileSize_=t}getImage(){if(this.zoomifyImage_)return this.zoomifyImage_;const t=super.getImage();if(this.state==K){const e=this.tileSize_;if(t.width==e[0]&&t.height==e[1])return this.zoomifyImage_=t,t;const i=pt(e[0],e[1]);return i.drawImage(t,0,0),this.zoomifyImage_=i.canvas,i.canvas}return t}};function Eg(t){return t.toLocaleString("en",{maximumFractionDigits:10})}class Sg extends Rs{constructor(t,e,i,n,r,s,o){let a=t.getExtent();a&&t.canWrapX()&&(a=a.slice(),a[0]=-1/0,a[2]=1/0);let l=e.getExtent();l&&e.canWrapX()&&(l=l.slice(),l[0]=-1/0,l[2]=1/0);const h=l?ue(i,l):i,c=yu(t,e,oe(h),n),u=new Ju(t,e,h,a,.5*c,n),d=u.calculateSourceExtent(),g=me(d)?null:s(d,c,r),f=g?Cs.IDLE:Cs.EMPTY,p=g?g.getPixelRatio():1;super(i,n,p,f),this.targetProj_=e,this.maxSourceExtent_=a,this.triangulation_=u,this.targetResolution_=n,this.targetExtent_=i,this.sourceImage_=g,this.sourcePixelRatio_=p,this.interpolate_=o,this.canvas_=null,this.sourceListenerKey_=null}disposeInternal(){this.state==Cs.LOADING&&this.unlistenSource_(),super.disposeInternal()}getImage(){return this.canvas_}getProjection(){return this.targetProj_}reproject_(){const t=this.sourceImage_.getState();if(t==Cs.LOADED){const t=fe(this.targetExtent_)/this.targetResolution_,e=ce(this.targetExtent_)/this.targetResolution_;this.canvas_=vu(t,e,this.sourcePixelRatio_,Eu(this.sourceImage_.getResolution()),this.maxSourceExtent_,this.targetResolution_,this.targetExtent_,this.triangulation_,[{extent:this.sourceImage_.getExtent(),image:this.sourceImage_.getImage()}],0,void 0,this.interpolate_,!0)}this.state=t,this.changed()}load(){if(this.state==Cs.IDLE){this.state=Cs.LOADING,this.changed();const t=this.sourceImage_.getState();t==Cs.LOADED||t==Cs.ERROR?this.reproject_():(this.sourceListenerKey_=D(this.sourceImage_,n,(t=>{const e=this.sourceImage_.getState();e!=Cs.LOADED&&e!=Cs.ERROR||(this.unlistenSource_(),this.reproject_())})),this.sourceImage_.load())}}unlistenSource_(){k(this.sourceListenerKey_),this.sourceListenerKey_=null}}const wg=4,Tg="imageloadstart",Cg="imageloadend",Rg="imageloaderror";class bg extends M{constructor(t,e){super(t),this.image=e}}class Pg extends ed{constructor(t){super({attributions:t.attributions,projection:t.projection,state:t.state,interpolate:void 0===t.interpolate||t.interpolate}),this.on,this.once,this.un,this.loader=t.loader||null,this.resolutions_=void 0!==t.resolutions?t.resolutions:null,this.reprojectedImage_=null,this.reprojectedRevision_=0,this.image=null,this.wantedExtent_,this.wantedResolution_,this.static_=!!t.loader&&0===t.loader.length,this.wantedProjection_=null}getResolutions(){return this.resolutions_}setResolutions(t){this.resolutions_=t}findNearestResolution(t){const e=this.getResolutions();if(e){t=e[v(e,t,0)]}return t}getImage(t,e,i,n){const r=this.getProjection();if(!r||!n||Pn(r,n))return r&&(n=r),this.getImageInternal(t,e,i,n);if(this.reprojectedImage_){if(this.reprojectedRevision_==this.getRevision()&&Pn(this.reprojectedImage_.getProjection(),n)&&this.reprojectedImage_.getResolution()==e&&Yt(this.reprojectedImage_.getExtent(),t))return this.reprojectedImage_;this.reprojectedImage_.dispose(),this.reprojectedImage_=null}return this.reprojectedImage_=new Sg(r,n,t,e,i,((t,e,i)=>this.getImageInternal(t,e,i,r)),this.getInterpolate()),this.reprojectedRevision_=this.getRevision(),this.reprojectedImage_}getImageInternal(t,e,i,r){if(this.loader){const s=Lg(t,e,i,1),o=this.findNearestResolution(e);if(this.image&&(this.static_||this.wantedProjection_===r&&(this.wantedExtent_&&Ut(this.wantedExtent_,s)||Ut(this.image.getExtent(),s))&&(this.wantedResolution_&&Eu(this.wantedResolution_)===o||Eu(this.image.getResolution())===o)))return this.image;this.wantedProjection_=r,this.wantedExtent_=s,this.wantedResolution_=o,this.image=new Rs(s,o,i,this.loader),this.image.addEventListener(n,this.handleImageChange.bind(this))}return this.image}handleImageChange(t){const e=t.target;let i;switch(e.getState()){case Cs.LOADING:this.loading=!0,i=Tg;break;case Cs.LOADED:this.loading=!1,i=Cg;break;case Cs.ERROR:this.loading=!1,i=Rg;break;default:return}this.hasListener(i)&&this.dispatchEvent(new bg(i,e))}}function Ig(t,e){t.getImage().src=e}function Lg(t,e,i,n){const r=e/i,s=oe(t),o=Oe(fe(t)/r,wg),a=Oe(ce(t)/r,wg);return le(s,r,0,[o+2*Oe((n-1)*o/2,wg),a+2*Oe((n-1)*a/2,wg)])}function Fg(t,e,i,n,r,s){const o=r.getCode().split(/:(?=\d+$)/).pop(),a=i/n,l=[Me(fe(e)/a,wg),Me(ce(e)/a,wg)];s.SIZE=l[0]+","+l[1],s.BBOX=e.join(","),s.BBOXSR=o,s.IMAGESR=o,s.DPI=Math.round(s.DPI?s.DPI*n:90*n);return Uu(t.replace(/MapServer\/?$/,"MapServer/export").replace(/ImageServer\/?$/,"ImageServer/exportImage"),s)}function Mg(t){const e=t.load?t.load:Ls,i=vn(t.projection||"EPSG:3857"),n=t.ratio??1.5,r=t.crossOrigin??null;return function(s,o,a){a=t.hidpi?a:1;const l={F:"image",FORMAT:"PNG32",TRANSPARENT:!0};Object.assign(l,t.params),s=Lg(s,o,a,n);const h=Fg(t.url,s,o,a,i,l),c=new Image;return c.crossOrigin=r,e(c,h).then((t=>{const e=fe(s)/t.width*a;return{image:t,extent:s,resolution:e,pixelRatio:a}}))}}function Ag(t,e,i,n,r,s,o){const a=function(t,e,i,n){const r=fe(t),s=ce(t),o=e[0],a=e[1],l=.0254/n;return a*r>o*s?r*i/(o*l):s*i/(a*l)}(i,n,s,o),l=oe(i),h={OPERATION:r?"GETDYNAMICMAPOVERLAYIMAGE":"GETMAPIMAGE",VERSION:"2.0.0",LOCALE:"en",CLIENTAGENT:"ol/source/ImageMapGuide source",CLIP:"1",SETDISPLAYDPI:o,SETDISPLAYWIDTH:Math.round(n[0]),SETDISPLAYHEIGHT:Math.round(n[1]),SETVIEWSCALE:a,SETVIEWCENTERX:l[0],SETVIEWCENTERY:l[1]};return Object.assign(h,e),Uu(t,h)}function Og(t){const e=t.load||Ls,i=t.useOverlay??!1,n=t.metersPerUnit||1,r=t.displayDpi||96,s=t.ratio??1,o=t.crossOrigin??null;return function(a,l,h){const c=new Image;c.crossOrigin=o;const u=fe(a=Lg(a,l,h,s))/l,d=ce(a)/l,g=[u*h,d*h],f=Ag(t.url,t.params,a,g,i,n,r);return e(c,f).then((t=>({image:t,extent:a,pixelRatio:h})))}}function Dg(t){const e=t.load||Ls,i=t.imageExtent,n=t.crossOrigin??null;return()=>{const r=new Image;return r.crossOrigin=n,e(r,t.url).then((t=>{const e=fe(i)/t.width,n=ce(i)/t.height;return{image:t,extent:i,resolution:e!==n?[e,n]:n,pixelRatio:1}}))}}const Ng=new Error("Image failed to load");function kg(t,e,i,n,r){return new Promise(((s,o)=>{const a=new Image;a.crossOrigin=r.crossOrigin??null,a.addEventListener("load",(()=>s(a))),a.addEventListener("error",(()=>o(Ng))),a.src=$u(t,e,i,n,r.maxY)}))}function Gg(t){return function(e,i,n,r){return kg(Wu(t,e,i,n),e,i,n,r)}}function jg(t){let e;if(Array.isArray(t))e=Gg(t);else if("string"==typeof t){e=Gg(Zu(t))}else{if("function"!=typeof t)throw new Error("The url option must be a single template, an array of templates, or a function for getting a URL");i=t,e=function(t,e,n,r){return kg(i(t,e,n,r),t,e,n,r)}}var i;return e}let Ug=0;function Bg(t){return Array.isArray(t)?t.join("\n"):"string"==typeof t?t:(++Ug,"url-function-key-"+Ug)}class zg extends Jd{constructor(t){let e,i=(t=t||{}).loader;t.url&&(i=jg(t.url),e=Bg(t.url));const n=i?t.state:"loading",r=void 0===t.wrapX||t.wrapX;super({loader:i,key:e,attributions:t.attributions,attributionsCollapsible:t.attributionsCollapsible,maxZoom:t.maxZoom,minZoom:t.minZoom,tileSize:t.tileSize,gutter:t.gutter,maxResolution:t.maxResolution,projection:t.projection,tileGrid:t.tileGrid,state:n,wrapX:r,transition:t.transition,interpolate:!1!==t.interpolate,crossOrigin:t.crossOrigin,zDirection:t.zDirection})}setUrl(t){const e=jg(t);this.setLoader(e),this.setKey(Bg(t)),"ready"!==this.getState()&&this.setState("ready")}}const Xg="1.3.0",Vg=[101,101];function $g(t,e,i,n,r){r.WIDTH=i[0],r.HEIGHT=i[1];const s=n.getAxisOrientation(),o=We(r.VERSION,"1.3")>=0;r[o?"CRS":"SRS"]=n.getCode();const a=o&&s.startsWith("ne")?[e[1],e[0],e[3],e[2]]:e;return r.BBOX=a.join(","),Uu(t,r)}function Wg(t,e,i,n,r,s,o){s=Object.assign({REQUEST:"GetMap"},s);const a=e/i,l=[Me(fe(t)/a,wg),Me(ce(t)/a,wg)];if(1!=i)switch(o){case"geoserver":const t=90*i+.5|0;"FORMAT_OPTIONS"in s?s.FORMAT_OPTIONS+=";dpi:"+t:s.FORMAT_OPTIONS="dpi:"+t;break;case"mapserver":s.MAP_RESOLUTION=90*i;break;case"carmentaserver":case"qgis":s.DPI=90*i;break;default:throw new Error("Unknown `serverType` configured")}return $g(r,t,l,n,s)}function Zg(t,e){return Object.assign({REQUEST:e,SERVICE:"WMS",VERSION:Xg,FORMAT:"image/png",STYLES:"",TRANSPARENT:"TRUE"},t)}function Yg(t){const e=void 0===t.hidpi||t.hidpi,i=vn(t.projection||"EPSG:3857"),n=t.ratio||1.5,r=t.load||Ls,s=t.crossOrigin??null;return(o,a,l)=>{o=Lg(o,a,l,n),1==l||e&&void 0!==t.serverType||(l=1);const h=Wg(o,a,l,i,t.url,Zg(t.params,"GetMap"),t.serverType),c=new Image;return c.crossOrigin=s,r(c,h).then((t=>({image:t,extent:o,pixelRatio:l})))}}function Hg(t,e,i){if(void 0===t.url)return;const n=vn(t.projection||"EPSG:3857"),r=le(e,i,0,Vg),s={QUERY_LAYERS:t.params.LAYERS,INFO_FORMAT:"application/json"};Object.assign(s,Zg(t.params,"GetFeatureInfo"),t.params);const o=Ae((e[0]-r[0])/i,wg),a=Ae((r[3]-e[1])/i,wg),l=We(s.VERSION,"1.3")>=0;return s[l?"I":"X"]=o,s[l?"J":"Y"]=a,$g(t.url,r,Vg,n,s)}function Kg(t,e){if(void 0===t.url)return;const i={SERVICE:"WMS",VERSION:Xg,REQUEST:"GetLegendGraphic",FORMAT:"image/png"};if(void 0!==e){const n=vn(t.projection||"EPSG:3857").getMetersPerUnit()||1,r=28e-5;i.SCALE=e*n/r}if(Object.assign(i,t.params),void 0!==t.params&&void 0===i.LAYER){const t=i.LAYERS;if(!(!Array.isArray(t)||1!==t.length))return;i.LAYER=t}return Uu(t.url,i)}const qg={"image/png":!0,"image/jpeg":!0,"image/gif":!0,"image/webp":!0},Jg={"application/vnd.mapbox-vector-tile":!0,"application/geo+json":!0};function Qg(t,e){if(!e.length)return t;const i=new URL(t,"file:/");if(i.pathname.split("/").includes("collections"))return Ve('The "collections" query parameter cannot be added to collection endpoints'),t;const n=e.map((t=>encodeURIComponent(t))).join(",");i.searchParams.append("collections",n);return`${t.split("?")[0]}?${decodeURIComponent(i.searchParams.toString())}`}function tf(t,e,i){let n,r;for(let i=0;i<t.length;++i){const s=t[i];if("item"===s.rel){if(s.type===e){n=s.href;break}(qg[s.type]||!r&&s.type.startsWith("image/"))&&(r=s.href)}}if(!n){if(!r)throw new Error('Could not find "item" link');n=r}return i&&(n=Qg(n,i)),n}function ef(t,e,i,n){let r,s;const o={};for(let i=0;i<t.length;++i){const n=t[i];if(o[n.type]=n.href,"item"===n.rel){if(n.type===e){r=n.href;break}Jg[n.type]&&(s=n.href)}}if(!r&&i)for(let t=0;t<i.length;++t){const e=i[t];if(o[e]){r=o[e];break}}if(!r){if(!s)throw new Error('Could not find "item" link');r=s}return n&&(r=Qg(r,n)),r}function nf(t,e,i,n){let r=t.projection;if(!r&&("string"==typeof e.crs?r=vn(e.crs):"uri"in e.crs&&(r=vn(e.crs.uri)),!r))throw new Error(`Unsupported CRS: ${JSON.stringify(e.crs)}`);const s=e.orderedAxes,o=!(s?s.slice(0,2).map((t=>t.replace(/E|X|Lon/i,"e").replace(/N|Y|Lat/i,"n"))).join(""):r.getAxisOrientation()).startsWith("en"),a=e.tileMatrices,l={};for(let t=0;t<a.length;++t){const e=a[t];l[e.id]=e}const h={},c=[];if(n)for(let t=0;t<n.length;++t){const e=n[t],i=e.tileMatrix;c.push(i),h[i]=e}else for(let t=0;t<a.length;++t){const e=a[t].id;c.push(e)}const u=c.length,d=new Array(u),g=new Array(u),f=new Array(u),p=new Array(u),m=[-1/0,-1/0,1/0,1/0];for(let t=0;t<u;++t){const e=c[t],i=l[e],n=i.pointOfOrigin;d[t]=o?[n[1],n[0]]:n,g[t]=i.cellSize,f[t]=[i.matrixWidth,i.matrixHeight],p[t]=[i.tileWidth,i.tileHeight];const r=h[e];if(r){const e=i.cellSize*i.tileWidth,n=d[t][0]+r.minTileCol*e,s=d[t][0]+(r.maxTileCol+1)*e,o=i.cellSize*i.tileHeight;let a,l;"bottomLeft"===i.cornerOfOrigin?(a=d[t][1]+r.minTileRow*o,l=d[t][1]+(r.maxTileRow+1)*o):(a=d[t][1]-(r.maxTileRow+1)*o,l=d[t][1]-r.minTileRow*o),ue(m,[n,a,s,l],m)}}const _=new Lu({origins:d,resolutions:g,sizes:f,tileSizes:p,extent:n?m:void 0}),y=t.context,x=t.url;return{grid:_,projection:r,urlTemplate:i,urlFunction:function(t,e,r){if(!t)return;const s=c[t[0]],o=l[s],a="bottomLeft"===o.cornerOfOrigin,u={tileMatrix:s,tileCol:t[1],tileRow:a?-t[2]-1:t[2]};if(n){const t=h[o.id];if(u.tileCol<t.minTileCol||u.tileCol>t.maxTileCol||u.tileRow<t.minTileRow||u.tileRow>t.maxTileRow)return}Object.assign(u,y);const d=i.replace(/\{(\w+?)\}/g,(function(t,e){return u[e]}));return nu(x,d)}}}function rf(t){return iu(t.url).then((function(e){return function(t,e){const i=e.tileMatrixSetLimits;let n;if("map"===e.dataType)n=tf(e.links,t.mediaType,t.collections);else{if("vector"!==e.dataType)throw new Error('Expected tileset data type to be "map" or "vector"');n=ef(e.links,t.mediaType,t.supportedMediaTypes,t.collections)}if(e.tileMatrixSet)return nf(t,e.tileMatrixSet,n,i);const r=e.links.find((t=>"http://www.opengis.net/def/rel/ogc/1.0/tiling-scheme"===t.rel));if(!r)throw new Error("Expected http://www.opengis.net/def/rel/ogc/1.0/tiling-scheme link or tileMatrixSet");const s=r.href;return iu(nu(t.url,s)).then((function(e){return nf(t,e,n,i)}))}(t,e)}))}class sf extends ld{constructor(t){const e=t.projection||"EPSG:3857",i=t.extent||ju(e),n=t.tileGrid||Nu({extent:i,maxResolution:t.maxResolution,maxZoom:void 0!==t.maxZoom?t.maxZoom:22,minZoom:t.minZoom,tileSize:t.tileSize||512});super({attributions:t.attributions,attributionsCollapsible:t.attributionsCollapsible,cacheSize:t.cacheSize,interpolate:!0,projection:e,state:t.state,tileGrid:n,tileLoadFunction:t.tileLoadFunction?t.tileLoadFunction:of,tileUrlFunction:t.tileUrlFunction,url:t.url,urls:t.urls,wrapX:void 0===t.wrapX||t.wrapX,transition:t.transition,zDirection:void 0===t.zDirection?1:t.zDirection}),this.format_=t.format?t.format:null,this.tileKeysBySourceTileUrl_={},this.sourceTiles_={},this.overlaps_=null==t.overlaps||t.overlaps,this.tileClass=t.tileClass?t.tileClass:Yc,this.tileGrids_={}}getOverlaps(){return this.overlaps_}getSourceTiles(t,e,i){if(i.getState()===Y){i.setState(H);const r=i.wrappedTileCoord,s=this.getTileGridForProjection(e),o=s.getTileCoordExtent(r),a=r[0],l=s.getResolution(a);Nt(o,-l,o);const h=this.tileGrid,c=h.getExtent();c&&ue(o,c,o);const u=h.getZForResolution(l,this.zDirection);h.forEachTileCoord(o,u,(r=>{const s=this.tileUrlFunction(r,t,e);this.sourceTiles_[s]||(this.sourceTiles_[s]=new this.tileClass(r,s?Y:J,s,this.format_,this.tileLoadFunction));const o=this.sourceTiles_[s];i.sourceTiles.push(o),this.tileKeysBySourceTileUrl_[s]||(this.tileKeysBySourceTileUrl_[s]=[]),this.tileKeysBySourceTileUrl_[s].push(i.getKey());const a=o.getState();if(a<K){const t=e=>{this.handleTileChange(e);const r=o.getState();if(r===K||r===q){const e=o.getKey();e in i.errorTileKeys?o.getState()===K&&delete i.errorTileKeys[e]:i.loadingSourceTiles--,r===q?i.errorTileKeys[e]=!0:o.removeEventListener(n,t),0===i.loadingSourceTiles&&i.setState(F(i.errorTileKeys)?K:q)}};o.addEventListener(n,t),i.loadingSourceTiles++}a===Y&&(o.extent=h.getTileCoordExtent(r),o.projection=e,o.resolution=h.getResolution(r[0]),o.load())})),i.loadingSourceTiles||i.setState(i.sourceTiles.some((t=>t.getState()===q))?q:K)}return i.sourceTiles}removeSourceTiles(t){const e=t.getKey(),i=t.sourceTiles;for(let t=0,n=i.length;t<n;++t){const n=i[t].getTileUrl();if(!this.tileKeysBySourceTileUrl_[n])return;const r=this.tileKeysBySourceTileUrl_[n].indexOf(e);-1!==r&&(this.tileKeysBySourceTileUrl_[n].splice(r,1),0===this.tileKeysBySourceTileUrl_[n].length&&(delete this.tileKeysBySourceTileUrl_[n],delete this.sourceTiles_[n]))}}getTile(t,e,i,n,r){const s=[t,e,i];let o=this.getTileCoordForTileUrlFunction(s,r);const a=this.getTileGrid().getExtent(),l=this.getTileGridForProjection(r);if(o&&a){const e=l.getTileCoordExtent(o);Nt(e,-l.getResolution(t),e),pe(a,e)||(o=null)}let h=!0;if(null!==o){const e=this.tileGrid,i=l.getResolution(t),s=e.getZForResolution(i,1),a=l.getTileCoordExtent(o);Nt(a,-i,a),e.forEachTileCoord(a,s,(t=>{h=h&&!this.tileUrlFunction(t,n,r)}))}const c=new Wc(s,h?J:Y,o,this.getSourceTiles.bind(this,n,r),this.removeSourceTiles.bind(this));return c.key=this.getKey(),c}getTileGridForProjection(t){const e=t.getCode();let i=this.tileGrids_[e];if(!i){const t=this.tileGrid,n=t.getResolutions().slice(),r=n.map((function(e,i){return t.getOrigin(i)})),s=n.map((function(e,i){return t.getTileSize(i)})),o=mo+1;for(let t=n.length;t<o;++t)n.push(n[t-1]/2),r.push(r[t-1]),s.push(s[t-1]);i=new Lu({extent:t.getExtent(),origins:r,resolutions:n,tileSizes:s}),this.tileGrids_[e]=i}return i}getTilePixelRatio(t){return t}getTilePixelSize(t,e,i){const n=Nl(this.getTileGridForProjection(i).getTileSize(t),this.tmpSize);return[Math.round(n[0]*e),Math.round(n[1]*e)]}setOverlaps(t){this.overlaps_=t,this.changed()}}function of(t,e){t.setLoader((function(i,n,r){Kc(e,t.getFormat(),i,n,r,t.onLoad.bind(t),t.onError.bind(t))}))}const af='&#169; <a href="https://www.openstreetmap.org/copyright" target="_blank">OpenStreetMap</a> contributors.<a href="https://www.HyuMiKa.com"> Plugin</a>';class lf{constructor(){this.instructions_=[],this.zIndex=0,this.offset_=0,this.context_=new Proxy(_t(),{get:(t,e)=>{if("function"==typeof _t()[e])return this.instructions_[this.zIndex+this.offset_]||(this.instructions_[this.zIndex+this.offset_]=[]),this.instructions_[this.zIndex+this.offset_].push(e),this.pushMethodArgs_},set:(t,e,i)=>(this.instructions_[this.zIndex+this.offset_]||(this.instructions_[this.zIndex+this.offset_]=[]),this.instructions_[this.zIndex+this.offset_].push(e,i),!0)})}pushMethodArgs_=(...t)=>(this.instructions_[this.zIndex+this.offset_].push(t),this);pushFunction(t){this.instructions_[this.zIndex+this.offset_].push(t)}getContext(){return this.context_}draw(t){this.instructions_.forEach((e=>{for(let i=0,n=e.length;i<n;++i){const n=e[i];if("function"==typeof n){n(t);continue}const r=e[++i];if("function"==typeof t[n])t[n](...r);else{if("function"==typeof r){t[n]=r(t);continue}t[n]=r}}}))}clear(){this.instructions_.length=0,this.zIndex=0,this.offset_=0}offset(){this.offset_=this.instructions_.length,this.zIndex=0}}class hf extends G{constructor(t){super(),this.ready=!0,this.boundHandleImageChange_=this.handleImageChange_.bind(this),this.layer_=t,this.staleKeys_=new Array,this.maxStaleKeys=5}getStaleKeys(){return this.staleKeys_}prependStaleKey(t){this.staleKeys_.unshift(t),this.staleKeys_.length>this.maxStaleKeys&&(this.staleKeys_.length=this.maxStaleKeys)}getFeatures(t){return U()}getData(t){return null}prepareFrame(t){return U()}renderFrame(t,e){return U()}forEachFeatureAtCoordinate(t,e,i,n,r){}getLayer(){return this.layer_}handleFontsChanged(){}handleImageChange_(t){const e=t.target;e.getState()!==Cs.LOADED&&e.getState()!==Cs.ERROR||this.renderIfReadyAndVisible()}loadImage(t){let e=t.getState();return e!=Cs.LOADED&&e!=Cs.ERROR&&t.addEventListener(n,this.boundHandleImageChange_),e==Cs.IDLE&&(t.load(),e=t.getState()),e==Cs.LOADED}renderIfReadyAndVisible(){const t=this.getLayer();t&&t.getVisible()&&"ready"===t.getSourceState()&&t.changed()}renderDeferred(t){}disposeInternal(){delete this.layer_,super.disposeInternal()}}const cf=[];let uf=null;class df extends hf{constructor(t){super(t),this.container=null,this.renderedResolution,this.tempTransform=[1,0,0,1,0,0],this.pixelTransform=[1,0,0,1,0,0],this.inversePixelTransform=[1,0,0,1,0,0],this.context=null,this.deferredContext_=null,this.containerReused=!1,this.frameState=null}getImageData(t,e,i){let n;uf||(uf=pt(1,1,void 0,{willReadFrequently:!0})),uf.clearRect(0,0,1,1);try{uf.drawImage(t,e,i,1,1,0,0,1,1),n=uf.getImageData(0,0,1,1).data}catch{return uf=null,null}return n}getBackground(t){let e=this.getLayer().getBackground();return"function"==typeof e&&(e=e(t.viewState.resolution)),e||void 0}useContainer(t,e,i){const n=this.getLayer().getClassName();let r,s;if(t&&t.className===n&&(!i||t&&t.style.backgroundColor&&w(Fl(t.style.backgroundColor),Fl(i)))){const e=t.firstElementChild;e instanceof HTMLCanvasElement&&(s=e.getContext("2d"))}if(s&&s.canvas.style.transform===e?(this.container=t,this.context=s,this.containerReused=!0):this.containerReused?(this.container=null,this.context=null,this.containerReused=!1):this.container&&(this.container.style.backgroundColor=null),!this.container){r=document.createElement("div"),r.className=n;let t=r.style;t.position="absolute",t.width="100%",t.height="100%",s=pt();const e=s.canvas;r.appendChild(e),t=e.style,t.position="absolute",t.left="0",t.transformOrigin="top left",this.container=r,this.context=s}this.containerReused||!i||this.container.style.backgroundColor||(this.container.style.backgroundColor=i)}clipUnrotated(t,e,i){const n=de(i),r=ge(i),s=se(i),o=re(i);qn(e.coordinateToPixelTransform,n),qn(e.coordinateToPixelTransform,r),qn(e.coordinateToPixelTransform,s),qn(e.coordinateToPixelTransform,o);const a=this.inversePixelTransform;qn(a,n),qn(a,r),qn(a,s),qn(a,o),t.save(),t.beginPath(),t.moveTo(Math.round(n[0]),Math.round(n[1])),t.lineTo(Math.round(r[0]),Math.round(r[1])),t.lineTo(Math.round(s[0]),Math.round(s[1])),t.lineTo(Math.round(o[0]),Math.round(o[1])),t.clip()}prepareContainer(t,e){const i=t.extent,n=t.viewState.resolution,r=t.viewState.rotation,s=t.pixelRatio,o=Math.round(fe(i)/n*s),a=Math.round(ce(i)/n*s);er(this.pixelTransform,t.size[0]/2,t.size[1]/2,1/s,1/s,r,-o/2,-a/2),ir(this.inversePixelTransform,this.pixelTransform);const l=sr(this.pixelTransform);if(this.useContainer(e,l,this.getBackground(t)),!this.containerReused){const t=this.context.canvas;t.width!=o||t.height!=a?(t.width=o,t.height=a):this.context.clearRect(0,0,o,a),l!==t.style.transform&&(t.style.transform=l)}}dispatchRenderEvent_(t,e,i){const n=this.getLayer();if(n.hasListener(t)){const r=new Lc(t,this.inversePixelTransform,i,e);n.dispatchEvent(r)}}preRender(t,e){this.frameState=e,e.declutter||this.dispatchRenderEvent_(Ba,t,e)}postRender(t,e){e.declutter||this.dispatchRenderEvent_(za,t,e)}renderDeferredInternal(t){}getRenderContext(t){return t.declutter&&!this.deferredContext_&&(this.deferredContext_=new lf),t.declutter?this.deferredContext_.getContext():this.context}renderDeferred(t){t.declutter&&(this.dispatchRenderEvent_(Ba,this.context,t),t.declutter&&this.deferredContext_&&(this.deferredContext_.draw(this.context),this.deferredContext_.clear()),this.renderDeferredInternal(t),this.dispatchRenderEvent_(za,this.context,t))}getRenderTransform(t,e,i,n,r,s,o){const a=r/2,l=s/2,h=n/e,c=-h,u=-t[0]+o,d=-t[1];return er(this.tempTransform,a,l,h,c,-i,u,d)}disposeInternal(){delete this.frameState,super.disposeInternal()}}class gf extends df{constructor(t){super(t),this.image=null}getImage(){return this.image?this.image.getImage():null}prepareFrame(t){const e=t.layerStatesArray[t.layerIndex],i=t.pixelRatio,n=t.viewState,r=n.resolution,s=this.getLayer().getSource(),o=t.viewHints;let a=t.extent;if(void 0!==e.extent&&(a=ue(a,Un(e.extent,n.projection))),!o[eo]&&!o[io]&&!me(a))if(s){const t=n.projection,e=s.getImage(a,r,i,t);e&&(this.loadImage(e)?this.image=e:e.getState()===Cs.EMPTY&&(this.image=null))}else this.image=null;return!!this.image}getData(t){const e=this.frameState;if(!e)return null;const i=this.getLayer(),n=qn(e.pixelToCoordinateTransform,t.slice()),r=i.getExtent();if(r&&!jt(r,n))return null;const s=this.image.getExtent(),o=this.image.getImage(),a=fe(s),l=Math.floor(o.width*((n[0]-s[0])/a));if(l<0||l>=o.width)return null;const h=ce(s),c=Math.floor(o.height*((s[3]-n[1])/h));return c<0||c>=o.height?null:this.getImageData(o,l,c)}renderFrame(t,e){const i=this.image,n=i.getExtent(),r=i.getResolution(),[s,o]=Array.isArray(r)?r:[r,r],a=i.getPixelRatio(),l=t.layerStatesArray[t.layerIndex],h=t.pixelRatio,c=t.viewState,u=c.center,d=c.resolution,g=h*s/(d*a),f=h*o/(d*a);this.prepareContainer(t,e);const p=this.context.canvas.width,m=this.context.canvas.height,_=this.getRenderContext(t);let y=!1,x=!0;if(l.extent){const e=Un(l.extent,c.projection);x=pe(e,t.extent),y=x&&!Ut(e,t.extent),y&&this.clipUnrotated(_,t,e)}const v=i.getImage(),E=er(this.tempTransform,p/2,m/2,g,f,0,a*(n[0]-u[0])/s,a*(u[1]-n[3])/o);this.renderedResolution=o*h/a;const S=v.width*E[0],w=v.height*E[3];if(this.getLayer().getSource().getInterpolate()||(_.imageSmoothingEnabled=!1),this.preRender(_,t),x&&S>=.5&&w>=.5){const t=E[4],e=E[5],i=l.opacity;1!==i&&(_.save(),_.globalAlpha=i),_.drawImage(v,0,0,+v.width,+v.height,t,e,S,w),1!==i&&_.restore()}return this.postRender(this.context,t),y&&_.restore(),_.imageSmoothingEnabled=!0,this.container}}class ff extends Wa{constructor(t){super(t=t||{})}}class pf extends ff{constructor(t){super(t)}createRenderer(){return new gf(this)}getData(t){return super.getData(t)}}function mf(t,e,i,n){return`${t},${Tu(e,i,n)}`}function _f(t,e,i){if(!(i in t))return t[i]=new Set([e]),!0;const n=t[i],r=n.has(e);return r||n.add(e),!r}function yf(t,e,i){const n=t[i];return!!n&&n.delete(e)}function xf(t,e){const i=t.layerStatesArray[t.layerIndex];i.extent&&(e=ue(e,Un(i.extent,t.viewState.projection)));const n=i.layer.getRenderSource();if(!n.getWrapX()){const i=n.getTileGridForProjection(t.viewState.projection).getExtent();i&&(e=ue(e,i))}return e}class vf extends df{constructor(t,e){super(t),e=e||{},this.extentChanged=!0,this.renderComplete=!1,this.renderedExtent_=null,this.renderedPixelRatio,this.renderedProjection=null,this.renderedRevision_,this.renderedTiles=[],this.renderedSourceKey_,this.renderedSourceRevision_,this.tempExtent=[1/0,1/0,-1/0,-1/0],this.tempTileRange_=new Xc(0,0,0,0),this.tempTileCoord_=wu(0,0,0);const i=void 0!==e.cacheSize?e.cacheSize:512;this.tileCache_=new Su(i),this.maxStaleKeys=.5*i}getTileCache(){return this.tileCache_}getOrCreateTile(t,e,i,n){const r=this.tileCache_,s=this.getLayer().getSource(),o=mf(s.getKey(),t,e,i);let a;if(r.containsKey(o))a=r.get(o);else{if(a=s.getTile(t,e,i,n.pixelRatio,n.viewState.projection),!a)return null;r.set(o,a)}return a}getTile(t,e,i,n){const r=this.getOrCreateTile(t,e,i,n);return r||null}getData(t){const e=this.frameState;if(!e)return null;const i=this.getLayer(),n=qn(e.pixelToCoordinateTransform,t.slice()),r=i.getExtent();if(r&&!jt(r,n))return null;const s=e.viewState,o=i.getRenderSource(),a=o.getTileGridForProjection(s.projection),l=o.getTilePixelRatio(e.pixelRatio);for(let t=a.getZForResolution(s.resolution);t>=a.getMinZoom();--t){const i=a.getTileCoordForCoordAndZ(n,t),r=this.getTile(t,i[1],i[2],e);if(!r||r.getState()!==K)continue;const h=a.getOrigin(t),c=Nl(a.getTileSize(t)),u=a.getResolution(t);let d;if(r instanceof Ms||r instanceof td)d=r.getImage();else{if(!(r instanceof Lt))continue;if(d=Tt(r.getData()),!d)continue}const g=Math.floor(l*((n[0]-h[0])/u-i[1]*c[0])),f=Math.floor(l*((h[1]-n[1])/u-i[2]*c[1])),p=Math.round(l*o.getGutterForProjection(s.projection));return this.getImageData(d,g+p,f+p)}return null}prepareFrame(t){this.renderedProjection?t.viewState.projection!==this.renderedProjection&&(this.tileCache_.clear(),this.renderedProjection=t.viewState.projection):this.renderedProjection=t.viewState.projection;const e=this.getLayer().getSource();if(!e)return!1;const i=e.getRevision();return this.renderedRevision_?this.renderedRevision_!==i&&(this.renderedRevision_=i,this.renderedSourceKey_===e.getKey()&&this.tileCache_.clear()):this.renderedRevision_=i,!0}enqueueTiles(t,e,i,n,r){const s=t.viewState,o=this.getLayer(),a=o.getRenderSource(),l=a.getTileGridForProjection(s.projection),h=z(a);h in t.wantedTiles||(t.wantedTiles[h]={});const c=t.wantedTiles[h],u=o.getMapInternal(),d=Math.max(i-r,l.getMinZoom(),l.getZForResolution(Math.min(o.getMaxResolution(),u?u.getView().getResolutionForZoom(Math.max(o.getMinZoom(),0)):l.getResolution(0)),a.zDirection)),g=s.rotation,f=g?he(s.center,s.resolution,g,t.size):void 0;for(let r=i;r>=d;--r){const i=l.getTileRangeForExtentAndZ(e,r,this.tempTileRange_),s=l.getResolution(r);for(let e=i.minX;e<=i.maxX;++e)for(let o=i.minY;o<=i.maxY;++o){if(g&&!l.tileCoordIntersectsViewport([r,e,o],f))continue;const i=this.getTile(r,e,o,t);if(!i)continue;if(!_f(n,i,r))continue;const a=i.getKey();if(c[a]=!0,i.getState()===Y&&!t.tileQueue.isKeyQueued(a)){const n=wu(r,e,o,this.tempTileCoord_);t.tileQueue.enqueue([i,h,l.getTileCoordCenter(n),s])}}}}findStaleTile_(t,e){const i=this.tileCache_,n=t[0],r=t[1],s=t[2],o=this.getStaleKeys();for(let t=0;t<o.length;++t){const a=mf(o[t],n,r,s);if(i.containsKey(a)){const t=i.peek(a);if(t.getState()===K)return t.endTransition(z(this)),_f(e,t,n),!0}}return!1}findAltTiles_(t,e,i,n){const r=t.getTileRangeForTileCoordAndZ(e,i,this.tempTileRange_);if(!r)return!1;let s=!0;const o=this.tileCache_,a=this.getLayer().getRenderSource().getKey();for(let t=r.minX;t<=r.maxX;++t)for(let e=r.minY;e<=r.maxY;++e){const r=mf(a,i,t,e);let l=!1;if(o.containsKey(r)){const t=o.peek(r);t.getState()===K&&(_f(n,t,i),l=!0)}l||(s=!1)}return s}renderFrame(t,e){let i=!0;this.renderComplete=!0;const n=t.layerStatesArray[t.layerIndex],r=t.viewState,s=r.projection,o=r.resolution,a=r.center,l=t.pixelRatio,h=this.getLayer(),c=h.getSource(),u=c.getTileGridForProjection(s),d=u.getZForResolution(o,c.zDirection),g=u.getResolution(d),f=c.getKey();this.renderedSourceKey_?this.renderedSourceKey_!==f&&(this.prependStaleKey(this.renderedSourceKey_),this.renderedSourceKey_=f):this.renderedSourceKey_=f;let p=t.extent;const m=c.getTilePixelRatio(l);this.prepareContainer(t,e);const _=this.context.canvas.width,x=this.context.canvas.height,v=n.extent&&Un(n.extent,s);v&&(p=ue(p,Un(n.extent,s)));const E=g*_/2/m,S=g*x/2/m,w=[a[0]-E,a[1]-S,a[0]+E,a[1]+S],T={};this.renderedTiles.length=0;const C=h.getPreload();if(t.nextExtent){const e=u.getZForResolution(r.nextResolution,c.zDirection),i=xf(t,t.nextExtent);this.enqueueTiles(t,i,e,T,C)}const R=xf(t,p);if(this.enqueueTiles(t,R,d,T,0),C>0&&setTimeout((()=>{this.enqueueTiles(t,R,d-1,T,C-1)}),0),!(d in T))return this.container;const b=z(this),P=t.time;for(const e of T[d]){const n=e.getState();if(n===J)continue;const r=e.tileCoord;if(n===K){if(1===e.getAlpha(b,P)){e.endTransition(b);continue}}n!==Y&&(i=!1),n!==q&&(this.renderComplete=!1);if(this.findStaleTile_(r,T)){yf(T,e,d),t.animate=!0;continue}if(this.findAltTiles_(u,r,d+1,T))continue;const s=u.getMinZoom();for(let t=d-1;t>=s;--t){if(this.findAltTiles_(u,r,t,T))break}}const I=g/o*l/m,L=this.getRenderContext(t);er(this.tempTransform,_/2,x/2,I,I,0,-_/2,-x/2),n.extent&&this.clipUnrotated(L,t,v),c.getInterpolate()||(L.imageSmoothingEnabled=!1),this.preRender(L,t);const F=Object.keys(T).map(Number);let M;F.sort(y);const A=[],O=[];for(let e=F.length-1;e>=0;--e){const i=F[e],n=c.getTilePixelSize(i,l,s),r=u.getResolution(i)/g,o=n[0]*r*I,a=n[1]*r*I,h=u.getTileCoordForCoordAndZ(de(w),i),d=u.getTileCoordExtent(h),f=qn(this.tempTransform,[m*(d[0]-w[0])/g,m*(w[3]-d[3])/g]),p=m*c.getGutterForProjection(s);for(const e of T[i]){if(e.getState()!==K)continue;const n=e.tileCoord,r=h[1]-n[1],s=Math.round(f[0]-(r-1)*o),l=h[2]-n[2],u=Math.round(f[1]-(l-1)*a),d=Math.round(f[0]-r*o),g=Math.round(f[1]-l*a),m=s-d,_=u-g,y=1===F.length;let x=!1;M=[d,g,d+m,g,d+m,g+_,d,g+_];for(let t=0,e=A.length;t<e;++t)if(!y&&i<O[t]){const e=A[t];pe([d,g,d+m,g+_],[e[0],e[3],e[4],e[7]])&&(x||(L.save(),x=!0),L.beginPath(),L.moveTo(M[0],M[1]),L.lineTo(M[2],M[3]),L.lineTo(M[4],M[5]),L.lineTo(M[6],M[7]),L.moveTo(e[6],e[7]),L.lineTo(e[4],e[5]),L.lineTo(e[2],e[3]),L.lineTo(e[0],e[1]),L.clip())}A.push(M),O.push(i),this.drawTile(e,t,d,g,m,_,p,y),x&&L.restore(),this.renderedTiles.unshift(e),this.updateUsedTiles(t.usedTiles,c,e)}}if(this.renderedResolution=g,this.extentChanged=!this.renderedExtent_||!Yt(this.renderedExtent_,w),this.renderedExtent_=w,this.renderedPixelRatio=l,this.postRender(this.context,t),n.extent&&L.restore(),L.imageSmoothingEnabled=!0,this.renderComplete){const e=(t,e)=>{const i=z(c),n=e.wantedTiles[i],r=n?Object.keys(n).length:0;this.updateCacheSize(r),this.tileCache_.expireCache()};t.postRenderFunctions.push(e)}return this.renderComplete||i||(t.animate=!0),this.container}updateCacheSize(t){this.tileCache_.highWaterMark=Math.max(this.tileCache_.highWaterMark,2*t)}drawTile(t,e,i,n,r,s,o,a){let l;if(t instanceof Lt){if(l=Tt(t.getData()),!l)throw new Error("Rendering array data is not yet supported")}else l=this.getTileImage(t);if(!l)return;const h=this.getRenderContext(e),c=z(this),u=e.layerStatesArray[e.layerIndex],d=u.opacity*(a?t.getAlpha(c,e.time):1),g=d!==h.globalAlpha;g&&(h.save(),h.globalAlpha=d),h.drawImage(l,o,o,l.width-2*o,l.height-2*o,i,n,r,s),g&&h.restore(),d!==u.opacity?e.animate=!0:a&&t.endTransition(c)}getImage(){const t=this.context;return t?t.canvas:null}getTileImage(t){return t.getImage()}updateUsedTiles(t,e,i){const n=z(e);n in t||(t[n]={}),t[n][i.getKey()]=!0}}var Ef="preload",Sf="useInterimTilesOnError";class wf extends Wa{constructor(t){t=t||{};const e=Object.assign({},t),i=t.cacheSize;delete t.cacheSize,delete e.preload,delete e.useInterimTilesOnError,super(e),this.on,this.once,this.un,this.cacheSize_=i,this.setPreload(void 0!==t.preload?t.preload:0),this.setUseInterimTilesOnError(void 0===t.useInterimTilesOnError||t.useInterimTilesOnError)}getCacheSize(){return this.cacheSize_}getPreload(){return this.get(Ef)}setPreload(t){this.set(Ef,t)}getUseInterimTilesOnError(){return this.get(Sf)}setUseInterimTilesOnError(t){this.set(Sf,t)}getData(t){return super.getData(t)}}class Tf extends wf{constructor(t){super(t)}createRenderer(){return new vf(this,{cacheSize:this.getCacheSize()})}}function Cf(t){return function(e){const i=e.buffers,n=e.meta,r=e.imageOps,s=e.width,o=e.height,a=i.length,l=i[0].byteLength;if(r){const e=new Array(a);for(let t=0;t<a;++t)e[t]=new ImageData(new Uint8ClampedArray(i[t]),s,o);return t(e,n).data.buffer}const h=new Uint8ClampedArray(l),c=new Array(a),u=new Array(a);for(let t=0;t<a;++t)c[t]=new Uint8ClampedArray(i[t]),u[t]=[0,0,0,0];for(let e=0;e<l;e+=4){for(let t=0;t<a;++t){const i=c[t];u[t][0]=i[e],u[t][1]=i[e+1],u[t][2]=i[e+2],u[t][3]=i[e+3]}const i=t(u,n);h[e]=i[0],h[e+1]=i[1],h[e+2]=i[2],h[e+3]=i[3]}return h.buffer}}function Rf(t,e){const i=Object.keys(t.lib||{}).map((function(e){return"const "+e+" = "+t.lib[e].toString()+";"})).concat(["const __minion__ = ("+Cf.toString()+")(",t.operation.toString(),");",'self.addEventListener("message", function(event) {',"  const buffer = __minion__(event.data);","  self.postMessage({buffer: buffer, meta: event.data.meta}, [buffer]);","});"]),n=new Worker("undefined"==typeof Blob?"data:text/javascript;base64,"+Buffer.from(i.join("\n"),"binary").toString("base64"):URL.createObjectURL(new Blob(i,{type:"text/javascript"})));return n.addEventListener("message",e),n}class bf extends m{constructor(t){let e;super(),this.imageOps_=!!t.imageOps,e=0===t.threads?0:this.imageOps_?1:t.threads||1;const i=new Array(e);if(e)for(let n=0;n<e;++n)i[n]=Rf(t,this.onWorkerMessage_.bind(this,n));else i[0]=function(t,e){const i=Cf(t.operation);let n=!1;return{postMessage:function(t){setTimeout((function(){n||e({data:{buffer:i(t),meta:t.meta}})}),0)},terminate:function(){n=!0}}}(t,this.onWorkerMessage_.bind(this,0));this.workers_=i,this.queue_=[],this.maxQueueLength_=t.queue||1/0,this.running_=0,this.dataLookup_={},this.job_=null}process(t,e,i){this.enqueue_({inputs:t,meta:e,callback:i}),this.dispatch_()}enqueue_(t){for(this.queue_.push(t);this.queue_.length>this.maxQueueLength_;)this.queue_.shift().callback(null,null)}dispatch_(){if(this.running_||0===this.queue_.length)return;const t=this.queue_.shift();this.job_=t;const e=t.inputs[0].width,i=t.inputs[0].height,n=t.inputs.map((function(t){return t.data.buffer})),r=this.workers_.length;if(this.running_=r,1===r)return void this.workers_[0].postMessage({buffers:n,meta:t.meta,imageOps:this.imageOps_,width:e,height:i},n);const s=t.inputs[0].data.length,o=4*Math.ceil(s/4/r);for(let s=0;s<r;++s){const r=s*o,a=[];for(let t=0,e=n.length;t<e;++t)a.push(n[t].slice(r,r+o));this.workers_[s].postMessage({buffers:a,meta:t.meta,imageOps:this.imageOps_,width:e,height:i},a)}}onWorkerMessage_(t,e){this.disposed||(this.dataLookup_[t]=e.data,--this.running_,0===this.running_&&this.resolveJob_())}resolveJob_(){const t=this.job_,e=this.workers_.length;let i,n;if(1===e)i=new Uint8ClampedArray(this.dataLookup_[0].buffer),n=this.dataLookup_[0].meta;else{const r=t.inputs[0].data.length;i=new Uint8ClampedArray(r),n=new Array(e);const s=4*Math.ceil(r/4/e);for(let t=0;t<e;++t){const e=this.dataLookup_[t].buffer,r=t*s;i.set(new Uint8ClampedArray(e),r),n[t]=this.dataLookup_[t].meta}}this.job_=null,this.dataLookup_={},t.callback(null,new ImageData(i,t.inputs[0].width,t.inputs[0].height),n),this.dispatch_()}disposeInternal(){for(let t=0;t<this.workers_.length;++t)this.workers_[t].terminate();this.workers_.length=0}}const Pf="beforeoperations",If="afteroperations";class Lf extends M{constructor(t,e,i){super(t),this.extent=e.extent,this.resolution=e.viewState.resolution/e.pixelRatio,this.data=i}}class Ff extends Pg{constructor(t){super({projection:null}),this.on,this.once,this.un,this.processor_=null,this.operationType_=void 0!==t.operationType?t.operationType:"pixel",this.threads_=void 0!==t.threads?t.threads:1,this.layers_=function(t){const e=t.length,i=new Array(e);for(let n=0;n<e;++n)i[n]=Of(t[n]);return i}(t.sources);const e=this.changed.bind(this);for(let t=0,i=this.layers_.length;t<i;++t)this.layers_[t].addEventListener(n,e);var i;this.useResolutions_=null!==t.resolutions,this.tileQueue_=new Qs((function(){return 1}),this.processSources_.bind(this)),this.requestedFrameState_,this.renderedImageCanvas_=null,this.renderedRevision_,this.frameState_={animate:!1,coordinateToPixelTransform:[1,0,0,1,0,0],declutter:null,extent:null,index:0,layerIndex:0,layerStatesArray:(i=this.layers_,i.map((function(t){return t.getLayerState()}))),pixelRatio:1,pixelToCoordinateTransform:[1,0,0,1,0,0],postRenderFunctions:[],size:[0,0],tileQueue:this.tileQueue_,time:Date.now(),usedTiles:{},viewState:{rotation:0},viewHints:[],wantedTiles:{},mapId:z(this),renderTargets:{}},this.setAttributions((function(e){const i=[];for(let n=0,r=t.sources.length;n<r;++n){const r=t.sources[n],s=r instanceof ed?r:r.getSource();if(!s)continue;const o=s.getAttributions()?.(e);"string"==typeof o?i.push(o):void 0!==o&&i.push(...o)}return i})),void 0!==t.operation&&this.setOperation(t.operation,t.lib)}setOperation(t,e){this.processor_&&this.processor_.dispose(),this.processor_=new bf({operation:t,imageOps:"image"===this.operationType_,queue:1,lib:e,threads:this.threads_}),this.changed()}updateFrameState_(t,e,i){const n=Object.assign({},this.frameState_);n.viewState=Object.assign({},n.viewState);const r=oe(t);n.size[0]=Math.ceil(fe(t)/e),n.size[1]=Math.ceil(ce(t)/e),n.extent=[r[0]-n.size[0]*e/2,r[1]-n.size[1]*e/2,r[0]+n.size[0]*e/2,r[1]+n.size[1]*e/2],n.time=Date.now();const s=n.viewState;return s.center=r,s.projection=i,s.resolution=e,n}allSourcesReady_(){let t,e=!0;for(let i=0,n=this.layers_.length;i<n;++i)if(t=this.layers_[i].getSource(),!t||"ready"!==t.getState()){e=!1;break}return e}getImage(t,e,i,n){if(!this.allSourcesReady_())return null;this.tileQueue_.loadMoreTiles(16,16),e=this.findNearestResolution(e);const r=this.updateFrameState_(t,e,n);if(this.requestedFrameState_=r,this.renderedImageCanvas_){const t=this.renderedImageCanvas_.getResolution(),i=this.renderedImageCanvas_.getExtent();e===t&&Yt(r.extent,i)||(this.renderedImageCanvas_=null)}return this.renderedImageCanvas_&&this.getRevision()===this.renderedRevision_||this.processSources_(),r.animate&&requestAnimationFrame(this.changed.bind(this)),this.renderedImageCanvas_}processSources_(){const t=this.requestedFrameState_,e=this.layers_.length,i=new Array(e);for(let n=0;n<e;++n){t.layerIndex=n,t.renderTargets={};const e=Af(this.layers_[n],t);if(!e)return;i[n]=e}const n={};this.dispatchEvent(new Lf(Pf,t,n)),this.processor_.process(i,n,this.onWorkerComplete_.bind(this,t))}onWorkerComplete_(t,e,i,n){if(e||!i)return;const r=t.extent,s=t.viewState.resolution;if(s!==this.requestedFrameState_.viewState.resolution||!Yt(r,this.requestedFrameState_.extent))return;let o;if(this.renderedImageCanvas_)o=this.renderedImageCanvas_.getImage().getContext("2d");else{o=pt(Math.round(fe(r)/s),Math.round(ce(r)/s)),this.renderedImageCanvas_=new Fs(r,s,1,o.canvas)}o.putImageData(i,0,0),t.animate?requestAnimationFrame(this.changed.bind(this)):this.changed(),this.renderedRevision_=this.getRevision(),this.dispatchEvent(new Lf(If,t,n))}getResolutions(t){if(!this.useResolutions_)return null;let e=super.getResolutions();if(!e)for(let i=0,n=this.layers_.length;i<n;++i){if(e=this.layers_[i].getSource().getResolutions(t),e)break}return e}disposeInternal(){this.processor_&&this.processor_.dispose(),super.disposeInternal()}}Ff.prototype.dispose;let Mf=null;function Af(t,e){const i=t.getRenderer();if(!i)throw new Error("Unsupported layer type: "+t);if(!i.prepareFrame(e))return null;const n=e.size[0],r=e.size[1];if(0===n||0===r)return null;const s=i.renderFrame(e,null);let o;if(s instanceof HTMLCanvasElement)o=s;else{if(s&&(o=s.firstElementChild),!(o instanceof HTMLCanvasElement))throw new Error("Unsupported rendered element: "+o);if(o.width===n&&o.height===r){return o.getContext("2d").getImageData(0,0,n,r)}}if(Mf){const t=Mf.canvas;t.width!==n||t.height!==r?Mf=pt(n,r,void 0,{willReadFrequently:!0}):Mf.clearRect(0,0,n,r)}else Mf=pt(n,r,void 0,{willReadFrequently:!0});return Mf.drawImage(o,0,0,n,r),Mf.getImageData(0,0,n,r)}function Of(t){let e;return t instanceof ed?t instanceof nd?e=new Tf({source:t}):t instanceof Pg&&(e=new pf({source:t})):e=t,e}const Df={stamen_terrain:{extension:"png"},stamen_terrain_background:{extension:"png"},stamen_terrain_labels:{extension:"png"},stamen_terrain_lines:{extension:"png"},stamen_toner_background:{extension:"png"},stamen_toner:{extension:"png"},stamen_toner_labels:{extension:"png"},stamen_toner_lines:{extension:"png"},stamen_toner_lite:{extension:"png"},stamen_watercolor:{extension:"jpg"},alidade_smooth:{extension:"png"},alidade_smooth_dark:{extension:"png"},alidade_satellite:{extension:"png"},outdoors:{extension:"png"},osm_bright:{extension:"png"}},Nf={stamen_terrain:{minZoom:0,maxZoom:18,retina:!0},stamen_toner:{minZoom:0,maxZoom:20,retina:!0},stamen_watercolor:{minZoom:1,maxZoom:18,retina:!1}};class kf extends nt{constructor(t,e,i,n,r,s){super(t,e),this.src_=i,this.extent_=n,this.preemptive_=r,this.grid_=null,this.keys_=null,this.data_=null,this.jsonp_=s}getImage(){return null}getData(t){if(!this.grid_||!this.keys_)return null;const e=(t[0]-this.extent_[0])/(this.extent_[2]-this.extent_[0]),i=(t[1]-this.extent_[1])/(this.extent_[3]-this.extent_[1]),n=this.grid_[Math.floor((1-i)*this.grid_.length)];if("string"!=typeof n)return null;let r=n.charCodeAt(Math.floor(e*n.length));r>=93&&r--,r>=35&&r--,r-=32;let s=null;if(r in this.keys_){const t=this.keys_[r];s=this.data_&&t in this.data_?this.data_[t]:t}return s}forDataAtCoordinate(t,e,i){this.state==J&&!0===i?(this.state=Y,N(this,n,(i=>{e(this.getData(t))})),this.loadInternal_()):!0===i?setTimeout((()=>{e(this.getData(t))}),0):e(this.getData(t))}getKey(){return this.src_}handleError_(){this.state=q,this.changed()}handleLoad_(t){this.grid_=t.grid,this.keys_=t.keys,this.data_=t.data,this.state=K,this.changed()}loadInternal_(){if(this.state==Y)if(this.state=H,this.jsonp_)Qc(this.src_,this.handleLoad_.bind(this),this.handleError_.bind(this));else{const t=new XMLHttpRequest;t.addEventListener("load",this.onXHRLoad_.bind(this)),t.addEventListener("error",this.onXHRError_.bind(this)),t.open("GET",this.src_),t.send()}}onXHRLoad_(t){const e=t.target;if(!e.status||e.status>=200&&e.status<300){let t;try{t=JSON.parse(e.responseText)}catch{return void this.handleError_()}this.handleLoad_(t)}else this.handleError_()}onXHRError_(t){this.handleError_()}load(){this.preemptive_?this.loadInternal_():this.setState(J)}}const Gf=34962,jf=34963,Uf=35044,Bf=35048,zf=5126,Xf=["experimental-webgl","webgl","webkit-3d","moz-webgl"];function Vf(t,e){e=Object.assign({preserveDrawingBuffer:!0,antialias:!at},e);const i=Xf.length;for(let n=0;n<i;++n)try{const i=t.getContext(Xf[n],e);if(i)return i}catch{}return null}let $f=null;const Wf="http://www.w3.org/2001/XMLSchema-instance";function Zf(t,e){return _p().createElementNS(t,e)}function Yf(t,e){return Hf(t,e,[]).join("")}function Hf(t,e,i){if(t.nodeType==Node.CDATA_SECTION_NODE||t.nodeType==Node.TEXT_NODE)e?i.push(String(t.nodeValue).replace(/(\r\n|\r|\n)/g,"")):i.push(t.nodeValue);else{let n;for(n=t.firstChild;n;n=n.nextSibling)Hf(n,e,i)}return i}function Kf(t){return"documentElement"in t}function qf(t,e,i){return t.getAttributeNS(e,i)||""}function Jf(t){return(new DOMParser).parseFromString(t,"application/xml")}function Qf(t,e){return function(i,n){const r=t.call(e??this,i,n);if(void 0!==r){S(n[n.length-1],r)}}}function tp(t,e){return function(i,n){const r=t.call(e??this,i,n);if(void 0!==r){n[n.length-1].push(r)}}}function ep(t,e){return function(i,n){const r=t.call(e??this,i,n);void 0!==r&&(n[n.length-1]=r)}}function ip(t,e,i){return function(n,r){const s=t.call(i??this,n,r);if(void 0!==s){const t=r[r.length-1],i=void 0!==e?e:n.localName;let o;i in t?o=t[i]:(o=[],t[i]=o),o.push(s)}}}function np(t,e,i){return function(n,r){const s=t.call(i??this,n,r);if(void 0!==s){r[r.length-1][void 0!==e?e:n.localName]=s}}}function rp(t,e){return function(i,n,r){t.call(e??this,i,n,r);r[r.length-1].node.appendChild(i)}}function sp(t,e){let i,n;return function(e,r,s){if(void 0===i){i={};const r={};r[e.localName]=t,i[e.namespaceURI]=r,n=op(e.localName)}dp(i,n,r,s)}}function op(t,e){return function(i,n,r){const s=n[n.length-1].node;let o=t;void 0===o&&(o=r);return Zf(void 0!==e?e:s.namespaceURI,o)}}const ap=op();function lp(t,e){const i=e.length,n=new Array(i);for(let r=0;r<i;++r)n[r]=t[e[r]];return n}function hp(t,e,i){let n,r;for(i=void 0!==i?i:{},n=0,r=t.length;n<r;++n)i[t[n]]=e;return i}function cp(t,e,i,n){let r;for(r=e.firstElementChild;r;r=r.nextElementSibling){const e=t[r.namespaceURI];if(void 0!==e){const t=e[r.localName];void 0!==t&&t.call(n,r,i)}}}function up(t,e,i,n,r){return n.push(t),cp(e,i,n,r),n.pop()}function dp(t,e,i,n,r,s){const o=(void 0!==r?r:i).length;let a,l;for(let h=0;h<o;++h)a=i[h],void 0!==a&&(l=e.call(s,a,n,void 0!==r?r[h]:void 0),void 0!==l&&t[l.namespaceURI][l.localName].call(s,l,a,n))}function gp(t,e,i,n,r,s,o){return r.push(t),dp(e,i,n,r,s,o),r.pop()}let fp,pp;function mp(){return void 0===fp&&"undefined"!=typeof XMLSerializer&&(fp=new XMLSerializer),fp}function _p(){return void 0===pp&&"undefined"!=typeof document&&(pp=document.implementation.createDocument("","",null)),pp}class yp extends O{constructor(t){super(),this.tile,this.handleTileChange_=this.handleTileChange_.bind(this),this.gutter=t.gutter||0,this.helper=t.helper,this.loaded=!1,this.ready=!1}setTile(t){if(t!==this.tile)if(this.tile&&this.tile.removeEventListener(n,this.handleTileChange_),this.tile=t,this.loaded=t.getState()===K,this.loaded)this.uploadTile();else{if(t instanceof Ms){const e=t.getImage();e instanceof Image&&!e.crossOrigin&&(e.crossOrigin="anonymous")}t.addEventListener(n,this.handleTileChange_)}}uploadTile(){U()}setReady(){this.ready=!0,this.dispatchEvent(n)}handleTileChange_(){this.tile.getState()===K&&(this.loaded=!0,this.uploadTile())}setHelper(t){this.helper=t,this.helper&&this.loaded&&this.uploadTile()}disposeInternal(){this.setHelper(null),this.tile.removeEventListener(n,this.handleTileChange_)}}const xp=Uf;class vp{constructor(t,e){this.array_=null,this.type_=t,Ft(t===Gf||t===jf,"A `WebGLArrayBuffer` must either be of type `ELEMENT_ARRAY_BUFFER` or `ARRAY_BUFFER`"),this.usage_=void 0!==e?e:xp}ofSize(t){return this.array_=new(Ep(this.type_))(t),this}fromArray(t){return this.array_=Ep(this.type_).from(t),this}fromArrayBuffer(t){return this.array_=new(Ep(this.type_))(t),this}getType(){return this.type_}getArray(){return this.array_}setArray(t){const e=Ep(this.type_);if(!(t instanceof e))throw new Error(`Expected ${e}`);this.array_=t}getUsage(){return this.usage_}getSize(){return this.array_?this.array_.length:0}}function Ep(t){switch(t){case Gf:return Float32Array;case jf:return Uint32Array;default:return Float32Array}}var Sp="webglcontextlost",wp="webglcontextrestored";class Tp{constructor(t){this.gl_=t.webGlContext;const e=this.gl_;this.scaleRatio_=t.scaleRatio||1,this.renderTargetTexture_=e.createTexture(),this.renderTargetTextureSize_=null,this.frameBuffer_=e.createFramebuffer(),this.depthBuffer_=e.createRenderbuffer();const i=e.createShader(e.VERTEX_SHADER);e.shaderSource(i,t.vertexShader||"\n  precision mediump float;\n\n  attribute vec2 a_position;\n  varying vec2 v_texCoord;\n  varying vec2 v_screenCoord;\n\n  uniform vec2 u_screenSize;\n\n  void main() {\n    v_texCoord = a_position * 0.5 + 0.5;\n    v_screenCoord = v_texCoord * u_screenSize;\n    gl_Position = vec4(a_position, 0.0, 1.0);\n  }\n"),e.compileShader(i);const n=e.createShader(e.FRAGMENT_SHADER);e.shaderSource(n,t.fragmentShader||"\n  precision mediump float;\n\n  uniform sampler2D u_image;\n  uniform float u_opacity;\n\n  varying vec2 v_texCoord;\n\n  void main() {\n    gl_FragColor = texture2D(u_image, v_texCoord) * u_opacity;\n  }\n"),e.compileShader(n),this.renderTargetProgram_=e.createProgram(),e.attachShader(this.renderTargetProgram_,i),e.attachShader(this.renderTargetProgram_,n),e.linkProgram(this.renderTargetProgram_),this.renderTargetVerticesBuffer_=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,this.renderTargetVerticesBuffer_),e.bufferData(e.ARRAY_BUFFER,new Float32Array([-1,-1,1,-1,-1,1,1,-1,1,1,-1,1]),e.STATIC_DRAW),this.renderTargetAttribLocation_=e.getAttribLocation(this.renderTargetProgram_,"a_position"),this.renderTargetUniformLocation_=e.getUniformLocation(this.renderTargetProgram_,"u_screenSize"),this.renderTargetOpacityLocation_=e.getUniformLocation(this.renderTargetProgram_,"u_opacity"),this.renderTargetTextureLocation_=e.getUniformLocation(this.renderTargetProgram_,"u_image"),this.uniforms_=[],t.uniforms&&Object.keys(t.uniforms).forEach((i=>{this.uniforms_.push({value:t.uniforms[i],location:e.getUniformLocation(this.renderTargetProgram_,i)})}))}getRenderTargetTexture(){return this.renderTargetTexture_}getGL(){return this.gl_}init(t){const e=this.getGL(),i=[e.drawingBufferWidth*this.scaleRatio_,e.drawingBufferHeight*this.scaleRatio_];if(e.bindFramebuffer(e.FRAMEBUFFER,this.getFrameBuffer()),e.bindRenderbuffer(e.RENDERBUFFER,this.getDepthBuffer()),e.viewport(0,0,i[0],i[1]),!this.renderTargetTextureSize_||this.renderTargetTextureSize_[0]!==i[0]||this.renderTargetTextureSize_[1]!==i[1]){this.renderTargetTextureSize_=i;const t=0,n=e.RGBA,r=0,s=e.RGBA,o=e.UNSIGNED_BYTE,a=null;e.bindTexture(e.TEXTURE_2D,this.renderTargetTexture_),e.texImage2D(e.TEXTURE_2D,t,n,i[0],i[1],r,s,o,a),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,this.renderTargetTexture_,0),e.renderbufferStorage(e.RENDERBUFFER,e.DEPTH_COMPONENT16,i[0],i[1]),e.framebufferRenderbuffer(e.FRAMEBUFFER,e.DEPTH_ATTACHMENT,e.RENDERBUFFER,this.depthBuffer_)}}apply(t,e,i,n){const r=this.getGL(),s=t.size;if(r.bindFramebuffer(r.FRAMEBUFFER,e?e.getFrameBuffer():null),r.activeTexture(r.TEXTURE0),r.bindTexture(r.TEXTURE_2D,this.renderTargetTexture_),!e){const e=z(r.canvas);if(!t.renderTargets[e]){const i=r.getContextAttributes();i&&i.preserveDrawingBuffer&&(r.clearColor(0,0,0,0),r.clearDepth(1),r.clear(r.COLOR_BUFFER_BIT|r.DEPTH_BUFFER_BIT)),t.renderTargets[e]=!0}}r.disable(r.DEPTH_TEST),r.enable(r.BLEND),r.blendFunc(r.ONE,r.ONE_MINUS_SRC_ALPHA),r.viewport(0,0,r.drawingBufferWidth,r.drawingBufferHeight),r.bindBuffer(r.ARRAY_BUFFER,this.renderTargetVerticesBuffer_),r.useProgram(this.renderTargetProgram_),r.enableVertexAttribArray(this.renderTargetAttribLocation_),r.vertexAttribPointer(this.renderTargetAttribLocation_,2,r.FLOAT,!1,0,0),r.uniform2f(this.renderTargetUniformLocation_,s[0],s[1]),r.uniform1i(this.renderTargetTextureLocation_,0);const o=t.layerStatesArray[t.layerIndex].opacity;r.uniform1f(this.renderTargetOpacityLocation_,o),this.applyUniforms(t),i&&i(r,t),r.drawArrays(r.TRIANGLES,0,6),n&&n(r,t)}getFrameBuffer(){return this.frameBuffer_}getDepthBuffer(){return this.depthBuffer_}applyUniforms(t){const e=this.getGL();let i,n=1;this.uniforms_.forEach((function(r){if(i="function"==typeof r.value?r.value(t):r.value,i instanceof HTMLCanvasElement||i instanceof ImageData)r.texture||(r.texture=e.createTexture()),e.activeTexture(e[`TEXTURE${n}`]),e.bindTexture(e.TEXTURE_2D,r.texture),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),i instanceof ImageData?e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,i.width,i.height,0,e.UNSIGNED_BYTE,new Uint8Array(i.data)):e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,i),e.uniform1i(r.location,n++);else if(Array.isArray(i))switch(i.length){case 2:return void e.uniform2f(r.location,i[0],i[1]);case 3:return void e.uniform3f(r.location,i[0],i[1],i[2]);case 4:return void e.uniform4f(r.location,i[0],i[1],i[2],i[3]);default:return}else"number"==typeof i&&e.uniform1f(r.location,i)}))}}const Cp={PROJECTION_MATRIX:"u_projectionMatrix",SCREEN_TO_WORLD_MATRIX:"u_screenToWorldMatrix",TIME:"u_time",ZOOM:"u_zoom",RESOLUTION:"u_resolution",ROTATION:"u_rotation",VIEWPORT_SIZE_PX:"u_viewportSizePx",PIXEL_RATIO:"u_pixelRatio",HIT_DETECTION:"u_hitDetection"},Rp={UNSIGNED_BYTE:5121,UNSIGNED_SHORT:5123,UNSIGNED_INT:5125,FLOAT:zf},bp={};function Pp(t){return"shared/"+t}let Ip=0;class Lp extends m{constructor(t){super(),t=t||{},this.boundHandleWebGLContextLost_=this.handleWebGLContextLost.bind(this),this.boundHandleWebGLContextRestored_=this.handleWebGLContextRestored.bind(this),this.canvasCacheKey_=t.canvasCacheKey?Pp(t.canvasCacheKey):function(){const t="unique/"+Ip;return Ip+=1,t}(),this.gl_=function(t){let e=bp[t];if(!e){const i=document.createElement("canvas");i.width=1,i.height=1,i.style.position="absolute",i.style.left="0",e={users:0,context:Vf(i)},bp[t]=e}return e.users+=1,e.context}(this.canvasCacheKey_),this.bufferCache_={},this.extensionCache_={},this.currentProgram_=null,this.needsToBeRecreated_=!1;const e=this.gl_.canvas;e.addEventListener(Sp,this.boundHandleWebGLContextLost_),e.addEventListener(wp,this.boundHandleWebGLContextRestored_),this.offsetRotateMatrix_=[1,0,0,1,0,0],this.offsetScaleMatrix_=[1,0,0,1,0,0],this.tmpMat4_=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],this.uniformLocationsByProgram_={},this.attribLocationsByProgram_={},this.uniforms_=[],t.uniforms&&this.setUniforms(t.uniforms),this.postProcessPasses_=t.postProcesses?t.postProcesses.map((t=>new Tp({webGlContext:this.gl_,scaleRatio:t.scaleRatio,vertexShader:t.vertexShader,fragmentShader:t.fragmentShader,uniforms:t.uniforms}))):[new Tp({webGlContext:this.gl_})],this.shaderCompileErrors_=null,this.startTime_=Date.now()}setUniforms(t){this.uniforms_=[],this.addUniforms(t)}addUniforms(t){for(const e in t)this.uniforms_.push({name:e,value:t[e]})}canvasCacheKeyMatches(t){return this.canvasCacheKey_===Pp(t)}getExtension(t){if(t in this.extensionCache_)return this.extensionCache_[t];const e=this.gl_.getExtension(t);return this.extensionCache_[t]=e,e}bindBuffer(t){const e=this.gl_,i=z(t);let n=this.bufferCache_[i];if(!n){n={buffer:t,webGlBuffer:e.createBuffer()},this.bufferCache_[i]=n}e.bindBuffer(t.getType(),n.webGlBuffer)}flushBufferData(t){const e=this.gl_;this.bindBuffer(t),e.bufferData(t.getType(),t.getArray(),t.getUsage())}deleteBuffer(t){const e=z(t);delete this.bufferCache_[e]}disposeInternal(){const t=this.gl_.canvas;t.removeEventListener(Sp,this.boundHandleWebGLContextLost_),t.removeEventListener(wp,this.boundHandleWebGLContextRestored_),function(t){const e=bp[t];if(!e)return;if(e.users-=1,e.users>0)return;const i=e.context,n=i.getExtension("WEBGL_lose_context");n&&n.loseContext();const r=i.canvas;r.width=1,r.height=1,delete bp[t]}(this.canvasCacheKey_),delete this.gl_}prepareDraw(t,e,i){const n=this.gl_,r=this.getCanvas(),s=t.size,o=t.pixelRatio;r.width===s[0]*o&&r.height===s[1]*o||(r.width=s[0]*o,r.height=s[1]*o,r.style.width=s[0]+"px",r.style.height=s[1]+"px");for(let e=this.postProcessPasses_.length-1;e>=0;e--)this.postProcessPasses_[e].init(t);n.bindTexture(n.TEXTURE_2D,null),n.clearColor(0,0,0,0),n.depthRange(0,1),n.clearDepth(1),n.clear(n.COLOR_BUFFER_BIT|n.DEPTH_BUFFER_BIT),n.enable(n.BLEND),n.blendFunc(n.ONE,e?n.ZERO:n.ONE_MINUS_SRC_ALPHA),i?(n.enable(n.DEPTH_TEST),n.depthFunc(n.LEQUAL)):n.disable(n.DEPTH_TEST)}bindFrameBuffer(t,e){const i=this.getGL();i.bindFramebuffer(i.FRAMEBUFFER,t),e&&i.framebufferTexture2D(i.FRAMEBUFFER,i.COLOR_ATTACHMENT0,i.TEXTURE_2D,e,0)}bindInitialFrameBuffer(){const t=this.getGL(),e=this.postProcessPasses_[0].getFrameBuffer();t.bindFramebuffer(t.FRAMEBUFFER,e);const i=this.postProcessPasses_[0].getRenderTargetTexture();t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,i,0)}bindTexture(t,e,i){const n=this.gl_;n.activeTexture(n.TEXTURE0+e),n.bindTexture(n.TEXTURE_2D,t),n.uniform1i(this.getUniformLocation(i),e)}bindAttribute(t,e,i){const n=this.getGL();this.bindBuffer(t);const r=this.getAttributeLocation(e);n.enableVertexAttribArray(r),n.vertexAttribPointer(r,i,n.FLOAT,!1,0,0)}prepareDrawToRenderTarget(t,e,i,n){const r=this.gl_,s=e.getSize();r.bindFramebuffer(r.FRAMEBUFFER,e.getFramebuffer()),r.bindRenderbuffer(r.RENDERBUFFER,e.getDepthbuffer()),r.viewport(0,0,s[0],s[1]),r.bindTexture(r.TEXTURE_2D,e.getTexture()),r.clearColor(0,0,0,0),r.depthRange(0,1),r.clearDepth(1),r.clear(r.COLOR_BUFFER_BIT|r.DEPTH_BUFFER_BIT),r.enable(r.BLEND),r.blendFunc(r.ONE,i?r.ZERO:r.ONE_MINUS_SRC_ALPHA),n?(r.enable(r.DEPTH_TEST),r.depthFunc(r.LEQUAL)):r.disable(r.DEPTH_TEST)}drawElements(t,e){const i=this.gl_;this.getExtension("OES_element_index_uint");const n=i.UNSIGNED_INT,r=e-t,s=4*t;i.drawElements(i.TRIANGLES,r,n,s)}finalizeDraw(t,e,i){for(let n=0,r=this.postProcessPasses_.length;n<r;n++)n===r-1?this.postProcessPasses_[n].apply(t,null,e,i):this.postProcessPasses_[n].apply(t,this.postProcessPasses_[n+1])}getCanvas(){return this.gl_.canvas}getGL(){return this.gl_}applyFrameState(t){const e=t.size,i=t.viewState.rotation,n=t.pixelRatio;this.setUniformFloatValue(Cp.TIME,.001*(Date.now()-this.startTime_)),this.setUniformFloatValue(Cp.ZOOM,t.viewState.zoom),this.setUniformFloatValue(Cp.RESOLUTION,t.viewState.resolution),this.setUniformFloatValue(Cp.PIXEL_RATIO,n),this.setUniformFloatVec2(Cp.VIEWPORT_SIZE_PX,[e[0],e[1]]),this.setUniformFloatValue(Cp.ROTATION,i)}applyHitDetectionUniform(t){const e=this.getUniformLocation(Cp.HIT_DETECTION);this.getGL().uniform1i(e,t?1:0),t&&this.setUniformFloatValue(Cp.PIXEL_RATIO,.5)}applyUniforms(t){const e=this.gl_;let i,n=0;this.uniforms_.forEach((r=>{if(i="function"==typeof r.value?r.value(t):r.value,i instanceof HTMLCanvasElement||i instanceof HTMLImageElement||i instanceof ImageData||i instanceof WebGLTexture){i instanceof WebGLTexture&&!r.texture?(r.prevValue=void 0,r.texture=i):r.texture||(r.prevValue=void 0,r.texture=e.createTexture()),this.bindTexture(r.texture,n,r.name),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE);const t=!(i instanceof HTMLImageElement)||i.complete;i instanceof WebGLTexture||!t||r.prevValue===i||(r.prevValue=i,e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,i)),n++}else if(Array.isArray(i)&&6===i.length)this.setUniformMatrixValue(r.name,jd(this.tmpMat4_,i));else if(Array.isArray(i)&&i.length<=4)switch(i.length){case 2:return void e.uniform2f(this.getUniformLocation(r.name),i[0],i[1]);case 3:return void e.uniform3f(this.getUniformLocation(r.name),i[0],i[1],i[2]);case 4:return void e.uniform4f(this.getUniformLocation(r.name),i[0],i[1],i[2],i[3]);default:return}else"number"==typeof i&&e.uniform1f(this.getUniformLocation(r.name),i)}))}useProgram(t,e){this.gl_.useProgram(t),this.currentProgram_=t,e&&(this.applyFrameState(e),this.applyUniforms(e))}compileShader(t,e){const i=this.gl_,n=i.createShader(e);return i.shaderSource(n,t),i.compileShader(n),n}getProgram(t,e){const i=this.gl_,n=this.compileShader(t,i.FRAGMENT_SHADER),r=this.compileShader(e,i.VERTEX_SHADER),s=i.createProgram();if(i.attachShader(s,n),i.attachShader(s,r),i.linkProgram(s),!i.getShaderParameter(n,i.COMPILE_STATUS)){const t=`Fragment shader compilation failed: ${i.getShaderInfoLog(n)}`;throw new Error(t)}if(i.deleteShader(n),!i.getShaderParameter(r,i.COMPILE_STATUS)){const t=`Vertex shader compilation failed: ${i.getShaderInfoLog(r)}`;throw new Error(t)}if(i.deleteShader(r),!i.getProgramParameter(s,i.LINK_STATUS)){const t=`GL program linking failed: ${i.getProgramInfoLog(s)}`;throw new Error(t)}return s}getUniformLocation(t){const e=z(this.currentProgram_);return void 0===this.uniformLocationsByProgram_[e]&&(this.uniformLocationsByProgram_[e]={}),void 0===this.uniformLocationsByProgram_[e][t]&&(this.uniformLocationsByProgram_[e][t]=this.gl_.getUniformLocation(this.currentProgram_,t)),this.uniformLocationsByProgram_[e][t]}getAttributeLocation(t){const e=z(this.currentProgram_);return void 0===this.attribLocationsByProgram_[e]&&(this.attribLocationsByProgram_[e]={}),void 0===this.attribLocationsByProgram_[e][t]&&(this.attribLocationsByProgram_[e][t]=this.gl_.getAttribLocation(this.currentProgram_,t)),this.attribLocationsByProgram_[e][t]}makeProjectionTransform(t,e){const i=t.size,n=t.viewState.rotation,r=t.viewState.resolution,s=t.viewState.center;return er(e,0,0,2/(r*i[0]),2/(r*i[1]),-n,-s[0],-s[1]),e}setUniformFloatValue(t,e){this.gl_.uniform1f(this.getUniformLocation(t),e)}setUniformFloatVec2(t,e){this.gl_.uniform2fv(this.getUniformLocation(t),e)}setUniformFloatVec4(t,e){this.gl_.uniform4fv(this.getUniformLocation(t),e)}setUniformMatrixValue(t,e){this.gl_.uniformMatrix4fv(this.getUniformLocation(t),!1,e)}enableAttributeArray_(t,e,i,n,r){const s=this.getAttributeLocation(t);s<0||(this.gl_.enableVertexAttribArray(s),this.gl_.vertexAttribPointer(s,e,i,!1,n,r))}enableAttributes(t){const e=Fp(t);let i=0;for(let n=0;n<t.length;n++){const r=t[n];this.enableAttributeArray_(r.name,r.size,r.type||zf,e,i),i+=r.size*Mp(r.type)}}handleWebGLContextLost(t){L(this.bufferCache_),this.currentProgram_=null,t.preventDefault()}handleWebGLContextRestored(){this.needsToBeRecreated_=!0}needsToBeRecreated(){return this.needsToBeRecreated_}createTexture(t,e,i,n){const r=this.gl_;i=i||r.createTexture();const s=n?r.NEAREST:r.LINEAR;r.bindTexture(r.TEXTURE_2D,i),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MIN_FILTER,s),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MAG_FILTER,s),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_S,r.CLAMP_TO_EDGE),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_T,r.CLAMP_TO_EDGE);const o=r.RGBA,a=r.RGBA,l=r.UNSIGNED_BYTE;return e instanceof Uint8Array?r.texImage2D(r.TEXTURE_2D,0,o,t[0],t[1],0,a,l,e):e?r.texImage2D(r.TEXTURE_2D,0,o,a,l,e):r.texImage2D(r.TEXTURE_2D,0,o,t[0],t[1],0,a,l,null),i}}function Fp(t){let e=0;for(let i=0;i<t.length;i++){const n=t[i];e+=n.size*Mp(n.type)}return e}function Mp(t){switch(t){case Rp.UNSIGNED_BYTE:return Uint8Array.BYTES_PER_ELEMENT;case Rp.UNSIGNED_SHORT:return Uint16Array.BYTES_PER_ELEMENT;case Rp.UNSIGNED_INT:return Uint32Array.BYTES_PER_ELEMENT;case Rp.FLOAT:default:return Float32Array.BYTES_PER_ELEMENT}}class Ap{constructor(t,e){this.name=t,this.data=e,this.texture_=null}getTexture(t){if(!this.texture_){const e=t.createTexture();t.bindTexture(t.TEXTURE_2D,e),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.NEAREST),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,this.data.length/4,1,0,t.RGBA,t.UNSIGNED_BYTE,this.data),this.texture_=e}return this.texture_}delete(t){this.texture_&&t.deleteTexture(this.texture_),this.texture_=null}}const Op=new Uint8Array(4);class Dp{constructor(t,e){this.helper_=t;const i=t.getGL();this.texture_=i.createTexture(),this.framebuffer_=i.createFramebuffer(),this.depthbuffer_=i.createRenderbuffer(),this.size_=e||[1,1],this.data_=new Uint8Array(0),this.dataCacheDirty_=!0,this.updateSize_()}setSize(t){w(t,this.size_)||(this.size_[0]=t[0],this.size_[1]=t[1],this.updateSize_())}getSize(){return this.size_}clearCachedData(){this.dataCacheDirty_=!0}readAll(){if(this.dataCacheDirty_){const t=this.size_,e=this.helper_.getGL();e.bindFramebuffer(e.FRAMEBUFFER,this.framebuffer_),e.readPixels(0,0,t[0],t[1],e.RGBA,e.UNSIGNED_BYTE,this.data_),this.dataCacheDirty_=!1}return this.data_}readPixel(t,e){if(t<0||e<0||t>this.size_[0]||e>=this.size_[1])return Op[0]=0,Op[1]=0,Op[2]=0,Op[3]=0,Op;this.readAll();const i=Math.floor(t)+(this.size_[1]-Math.floor(e)-1)*this.size_[0];return Op[0]=this.data_[4*i],Op[1]=this.data_[4*i+1],Op[2]=this.data_[4*i+2],Op[3]=this.data_[4*i+3],Op}getTexture(){return this.texture_}getFramebuffer(){return this.framebuffer_}getDepthbuffer(){return this.depthbuffer_}updateSize_(){const t=this.size_,e=this.helper_.getGL();this.texture_=this.helper_.createTexture(t,null,this.texture_),e.bindFramebuffer(e.FRAMEBUFFER,this.framebuffer_),e.viewport(0,0,t[0],t[1]),e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,this.texture_,0),e.bindRenderbuffer(e.RENDERBUFFER,this.depthbuffer_),e.renderbufferStorage(e.RENDERBUFFER,e.DEPTH_COMPONENT16,t[0],t[1]),e.framebufferRenderbuffer(e.FRAMEBUFFER,e.DEPTH_ATTACHMENT,e.RENDERBUFFER,this.depthbuffer_),this.data_=new Uint8Array(t[0]*t[1]*4)}}function Np(t,e,i){const n=i?t.LINEAR:t.NEAREST;t.bindTexture(t.TEXTURE_2D,e),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,n),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,n)}function kp(t,e,i,n,r,s){const o=t.getGL();let a,l;if(i instanceof Float32Array){a=o.FLOAT,t.getExtension("OES_texture_float");l=null!==t.getExtension("OES_texture_float_linear")}else a=o.UNSIGNED_BYTE,l=!0;Np(o,e,s&&l);const h=i.byteLength/n[1];let c,u=1;switch(h%8==0?u=8:h%4==0?u=4:h%2==0&&(u=2),r){case 1:c=o.LUMINANCE;break;case 2:c=o.LUMINANCE_ALPHA;break;case 3:c=o.RGB;break;case 4:c=o.RGBA;break;default:throw new Error(`Unsupported number of bands: ${r}`)}const d=o.getParameter(o.UNPACK_ALIGNMENT);o.pixelStorei(o.UNPACK_ALIGNMENT,u),o.texImage2D(o.TEXTURE_2D,0,c,n[0],n[1],0,c,a,i),o.pixelStorei(o.UNPACK_ALIGNMENT,d)}let Gp=null;class jp extends yp{constructor(t){super(t),this.textures=[],this.renderSize_=Nl(t.grid.getTileSize(t.tile.tileCoord[0])),this.bandCount=NaN;const e=new vp(Gf,Uf);e.fromArray([0,1,1,1,1,0,0,0]),this.helper.flushBufferData(e),this.coords=e,this.setTile(t.tile)}setHelper(t){const e=this.helper?.getGL();if(e){this.helper.deleteBuffer(this.coords);for(let t=0;t<this.textures.length;++t)e.deleteTexture(this.textures[t])}super.setHelper(t),t&&t.flushBufferData(this.coords)}uploadTile(){const t=this.helper,e=t.getGL(),i=this.tile;let n;this.textures.length=0,n=i instanceof Ms||i instanceof td?i.getImage():i.getData();const r=Tt(n);if(r){const t=e.createTexture();return this.textures.push(t),this.bandCount=4,function(t,e,i,n){Np(t,e,n),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,i)}(e,t,r,i.interpolate),void this.setReady()}n=Ct(n);const s=i.getSize(),o=[s[0]+2*this.gutter,s[1]+2*this.gutter],a=n instanceof Float32Array,l=o[0]*o[1],h=a?Float32Array:Uint8Array,c=h.BYTES_PER_ELEMENT,u=n.byteLength/o[1];this.bandCount=Math.floor(u/c/o[0]);const d=Math.ceil(this.bandCount/4);if(1===d){const r=e.createTexture();return this.textures.push(r),kp(t,r,n,o,this.bandCount,i.interpolate),void this.setReady()}const g=new Array(d);for(let t=0;t<d;++t){const i=e.createTexture();this.textures.push(i);const n=t<d-1?4:(this.bandCount-1)%4+1;g[t]=new h(l*n)}let f=0,p=0;const m=o[0]*this.bandCount;for(let t=0;t<o[1];++t){for(let t=0;t<m;++t){const e=n[p+t],i=Math.floor(f/this.bandCount),r=t%this.bandCount,s=g[Math.floor(r/4)];s[i*(s.length/l)+r%4]=e,++f}p+=u/c}for(let e=0;e<d;++e){const n=this.textures[e],r=g[e];kp(t,n,r,o,r.length/l,i.interpolate)}this.setReady()}getImagePixelData_(t,e,i){const n=this.gutter,r=this.renderSize_[0],s=this.renderSize_[1];Gp||(Gp=pt(1,1,void 0,{willReadFrequently:!0})),Gp.clearRect(0,0,1,1);const o=t.width-2*n,a=t.height-2*n,l=n+Math.floor(o*(e/r)),h=n+Math.floor(a*(i/s));let c;try{Gp.drawImage(t,l,h,1,1,0,0,1,1),c=Gp.getImageData(0,0,1,1).data}catch{return Gp=null,null}return c}getArrayPixelData_(t,e,i,n){const r=this.gutter,s=this.renderSize_[0],o=this.renderSize_[1],a=e[0],l=e[1],h=a+2*r,c=l+2*r,u=r+Math.floor(a*(i/s)),d=r+Math.floor(l*(n/o));if(t instanceof DataView){const e=t.byteLength/(h*c),i=e*(d*h+u),n=t.buffer.slice(i,i+e);return new DataView(n)}const g=this.bandCount*(d*h+u);return t.slice(g,g+this.bandCount)}getPixelData(t,e){if(!this.loaded)return null;if(this.tile instanceof Lt){const i=this.tile.getData(),n=Ct(i);if(n){const i=this.tile.getSize();return this.getArrayPixelData_(n,i,t,e)}return this.getImagePixelData_(Tt(i),t,e)}return this.getImagePixelData_(this.tile.getImage(),t,e)}}class Up extends hf{constructor(t,e){super(t),e=e||{},this.inversePixelTransform_=[1,0,0,1,0,0],this.postProcesses_=e.postProcesses,this.uniforms_=e.uniforms,this.helper,this.onMapChanged_=()=>{this.clearCache(),this.removeHelper()},t.addChangeListener(Na,this.onMapChanged_),this.dispatchPreComposeEvent=this.dispatchPreComposeEvent.bind(this),this.dispatchPostComposeEvent=this.dispatchPostComposeEvent.bind(this)}dispatchPreComposeEvent(t,e){const i=this.getLayer();if(i.hasListener(Xa)){const n=new Lc(Xa,void 0,e,t);i.dispatchEvent(n)}}dispatchPostComposeEvent(t,e){const i=this.getLayer();if(i.hasListener(Va)){const n=new Lc(Va,void 0,e,t);i.dispatchEvent(n)}}reset(t){this.uniforms_=t.uniforms,this.helper&&this.helper.setUniforms(this.uniforms_)}removeHelper(){this.helper&&(this.helper.dispose(),delete this.helper)}prepareFrame(t){if(this.getLayer().getRenderSource()){let e,i=!0,n=-1;for(let r=0,s=t.layerStatesArray.length;r<s;r++){const s=t.layerStatesArray[r].layer,o=s.getRenderer();if(!(o instanceof Up)){i=!0;continue}const a=s.getClassName();if((i||a!==e)&&(n+=1,i=!1),e=a,o===this)break}const r="map/"+t.mapId+"/group/"+n;this.helper&&this.helper.canvasCacheKeyMatches(r)&&!this.helper.needsToBeRecreated()||(this.removeHelper(),this.helper=new Lp({postProcesses:this.postProcesses_,uniforms:this.uniforms_,canvasCacheKey:r}),e&&(this.helper.getCanvas().className=e),this.afterHelperCreated())}return this.prepareFrameInternal(t)}afterHelperCreated(){}prepareFrameInternal(t){return!0}clearCache(){}disposeInternal(){this.clearCache(),this.removeHelper(),this.getLayer()?.removeChangeListener(Na,this.onMapChanged_),super.disposeInternal()}dispatchRenderEvent_(t,e,i){const n=this.getLayer();if(n.hasListener(t)){er(this.inversePixelTransform_,0,0,i.pixelRatio,-i.pixelRatio,0,0,-i.size[1]);const r=new Lc(t,this.inversePixelTransform_,i,e);n.dispatchEvent(r)}}preRender(t,e){this.dispatchRenderEvent_(Ba,t,e)}postRender(t,e){this.dispatchRenderEvent_(za,t,e)}}const Bp={TILE_TRANSFORM:"u_tileTransform",TRANSITION_ALPHA:"u_transitionAlpha",DEPTH:"u_depth",RENDER_EXTENT:"u_renderExtent",PATTERN_ORIGIN:"u_patternOrigin",RESOLUTION:"u_resolution",ZOOM:"u_zoom",GLOBAL_ALPHA:"u_globalAlpha",PROJECTION_MATRIX:"u_projectionMatrix",SCREEN_TO_WORLD_MATRIX:"u_screenToWorldMatrix"};function zp(t){return 1/(t+2)}function Xp(){return{tileIds:new Set,representationsByZ:{}}}function Vp(t,e){return t.tileIds.has(z(e))}function $p(t,e,i){const n=t.representationsByZ;i in n||(n[i]=new Set),n[i].add(e),t.tileIds.add(z(e.tile))}function Wp(t,e){const i=t.layerStatesArray[t.layerIndex];i.extent&&(e=ue(e,Un(i.extent,t.viewState.projection)));const n=i.layer.getRenderSource();if(!n.getWrapX()){const i=n.getTileGridForProjection(t.viewState.projection).getExtent();i&&(e=ue(e,i))}return e}function Zp(t,e){return`${t.getKey()},${t.getRevision()},${Cu(e)}`}class Yp extends Up{constructor(t,e){super(t,{uniforms:e.uniforms,postProcesses:e.postProcesses}),this.renderComplete=!1,this.tileTransform_=[1,0,0,1,0,0],this.tempMat4=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],this.tempTileRange_=new Xc(0,0,0,0),this.tempTileCoord_=wu(0,0,0),this.tempSize_=[0,0];const i=void 0!==e.cacheSize?e.cacheSize:512;this.tileRepresentationCache=new Su(i),this.frameState=null,this.renderedProjection_=void 0}reset(t){super.reset({uniforms:t.uniforms})}prepareFrameInternal(t){this.renderedProjection_?t.viewState.projection!==this.renderedProjection_&&(this.clearCache(),this.renderedProjection_=t.viewState.projection):this.renderedProjection_=t.viewState.projection;const e=this.getLayer().getRenderSource();return!!e&&(!me(Wp(t,t.extent))&&"ready"===e.getState())}createTileRepresentation(t){return U()}enqueueTiles(t,e,i,n,r){const s=t.viewState,o=this.getLayer(),a=o.getRenderSource(),l=a.getTileGridForProjection(s.projection),h=a.getGutterForProjection(s.projection),c=z(a);c in t.wantedTiles||(t.wantedTiles[c]={});const u=t.wantedTiles[c],d=this.tileRepresentationCache,g=o.getMapInternal(),f=Math.max(i-r,l.getMinZoom(),l.getZForResolution(Math.min(o.getMaxResolution(),g?g.getView().getResolutionForZoom(Math.max(o.getMinZoom(),0)):l.getResolution(0)),a.zDirection)),p=s.rotation,m=p?he(s.center,s.resolution,p,t.size):void 0;for(let r=i;r>=f;--r){const i=l.getTileRangeForExtentAndZ(e,r,this.tempTileRange_),o=l.getResolution(r);for(let e=i.minX;e<=i.maxX;++e)for(let g=i.minY;g<=i.maxY;++g){if(p&&!l.tileCoordIntersectsViewport([r,e,g],m))continue;const i=wu(r,e,g,this.tempTileCoord_),f=Zp(a,i);let _,y;if(d.containsKey(f)&&(_=d.get(f),y=_.tile),!(_&&_.tile.key===a.getKey()||(y=a.getTile(r,e,g,t.pixelRatio,s.projection),y)))continue;if(Vp(n,y))continue;_?_.setTile(y):(_=this.createTileRepresentation({tile:y,grid:l,helper:this.helper,gutter:h}),d.set(f,_)),$p(n,_,r);const x=y.getKey();u[x]=!0,y.getState()===Y&&(t.tileQueue.isKeyQueued(x)||t.tileQueue.enqueue([y,c,l.getTileCoordCenter(i),o]))}}}beforeTilesRender(t,e){this.helper.prepareDraw(this.frameState,!e,!0)}beforeTilesMaskRender(t){return!1}renderTile(t,e,i,n,r,s,o,a,l,h,c){}renderTileMask(t,e,i,n){}drawTile_(t,e,i,n,r,s,o){if(!e.ready)return;const a=e.tile.tileCoord,l=Cu(a),h=l in s?s[l]:1,c=o.getResolution(i),u=Nl(o.getTileSize(i),this.tempSize_),d=o.getOrigin(i),g=o.getTileCoordExtent(a),f=h<1?-1:zp(i);h<1&&(t.animate=!0);const p=t.viewState,m=p.center[0],_=p.center[1],y=u[0]+2*n,x=u[1]+2*n,v=y/x,E=(m-d[0])/(u[0]*c),S=(d[1]-_)/(u[1]*c),w=p.resolution/c,T=a[1],C=a[2];Zn(this.tileTransform_),Qn(this.tileTransform_,2/(t.size[0]*w/y),-2/(t.size[1]*w/y)),Jn(this.tileTransform_,p.rotation),Qn(this.tileTransform_,1,1/v),tr(this.tileTransform_,(u[0]*(T-E)-n)/y,(u[1]*(C-S)-n)/x),this.renderTile(e,this.tileTransform_,t,r,c,u,d,g,f,n,h)}renderFrame(t){this.frameState=t,this.renderComplete=!0;const e=this.helper.getGL();this.preRender(e,t);const i=t.viewState,n=this.getLayer(),r=n.getRenderSource(),s=r.getTileGridForProjection(i.projection),o=r.getGutterForProjection(i.projection),a=Wp(t,t.extent),l=s.getZForResolution(i.resolution,r.zDirection),h=Xp(),c=n.getPreload();if(t.nextExtent){const e=s.getZForResolution(i.nextResolution,r.zDirection),n=Wp(t,t.nextExtent);this.enqueueTiles(t,n,e,h,c)}this.enqueueTiles(t,a,l,h,0),c>0&&setTimeout((()=>{this.enqueueTiles(t,a,l-1,h,c-1)}),0);const u={};let d=!1;const g=h.representationsByZ;if(l in g){const e=z(this),i=t.time;for(const t of g[l]){const n=t.tile;if(n.getState()===J)continue;const r=n.tileCoord;if(t.ready){const t=n.getAlpha(e,i);if(1===t){n.endTransition(e);continue}d=!0;u[Cu(r)]=t}this.renderComplete=!1;if(this.findAltTiles_(s,r,l+1,h))continue;const o=s.getMinZoom();for(let t=l-1;t>=o;--t){if(this.findAltTiles_(s,r,t,h))break}}}const f=Object.keys(g).map(Number).sort(x);if(this.beforeTilesMaskRender(t))for(let t=0,e=f.length;t<e;++t){const e=f[t];for(const t of g[e]){const i=t.tile.tileCoord;if(Cu(i)in u)continue;const n=s.getTileCoordExtent(i);this.renderTileMask(t,e,n,zp(e))}}this.beforeTilesRender(t,d);for(let e=0,i=f.length;e<i;++e){const i=f[e];for(const e of g[i]){Cu(e.tile.tileCoord)in u||this.drawTile_(t,e,i,o,a,u,s)}}if(l in g)for(const e of g[l]){Cu(e.tile.tileCoord)in u&&this.drawTile_(t,e,l,o,a,u,s)}this.beforeFinalize(t),this.helper.finalizeDraw(t,this.dispatchPreComposeEvent,this.dispatchPostComposeEvent);const p=this.helper.getCanvas(),m=this.tileRepresentationCache;for(;m.canExpireCache();){m.pop().dispose()}return this.postRender(e,t),p}beforeFinalize(t){}findAltTiles_(t,e,i,n){const r=t.getTileRangeForTileCoordAndZ(e,i,this.tempTileRange_);if(!r)return!1;let s=!0;const o=this.tileRepresentationCache,a=this.getLayer().getRenderSource();for(let t=r.minX;t<=r.maxX;++t)for(let e=r.minY;e<=r.maxY;++e){const r=Zp(a,[i,t,e]);let l=!1;if(o.containsKey(r)){const t=o.get(r);t.ready&&!Vp(n,t.tile)&&($p(n,t,i),l=!0)}l||(s=!1)}return s}clearCache(){super.clearCache();const t=this.tileRepresentationCache;t.forEach((t=>t.dispose())),t.clear()}afterHelperCreated(){super.afterHelperCreated(),this.tileRepresentationCache.forEach((t=>t.setHelper(this.helper)))}disposeInternal(){super.disposeInternal(),delete this.frameState}}const Hp={...Bp,TILE_TEXTURE_ARRAY:"u_tileTextures",TEXTURE_PIXEL_WIDTH:"u_texturePixelWidth",TEXTURE_PIXEL_HEIGHT:"u_texturePixelHeight",TEXTURE_RESOLUTION:"u_textureResolution",TEXTURE_ORIGIN_X:"u_textureOriginX",TEXTURE_ORIGIN_Y:"u_textureOriginY"},Kp={TEXTURE_COORD:"a_textureCoord"},qp=[{name:Kp.TEXTURE_COORD,size:2,type:Rp.FLOAT}];class Jp extends Yp{constructor(t,e){super(t,e),this.program_,this.vertexShader_=e.vertexShader,this.fragmentShader_=e.fragmentShader,this.indices_=new vp(jf,Uf),this.indices_.fromArray([0,1,3,1,2,3]),this.paletteTextures_=e.paletteTextures||[]}reset(t){if(super.reset(t),this.helper){const t=this.helper.getGL();for(const e of this.paletteTextures_)e.delete(t)}if(this.vertexShader_=t.vertexShader,this.fragmentShader_=t.fragmentShader,this.paletteTextures_=t.paletteTextures||[],this.helper){this.program_=this.helper.getProgram(this.fragmentShader_,this.vertexShader_);const t=this.helper.getGL();for(const e of this.paletteTextures_)e.getTexture(t)}}afterHelperCreated(){super.afterHelperCreated();const t=this.helper.getGL();for(const e of this.paletteTextures_)e.getTexture(t);this.program_=this.helper.getProgram(this.fragmentShader_,this.vertexShader_),this.helper.flushBufferData(this.indices_)}removeHelper(){if(this.helper){const t=this.helper.getGL();for(const e of this.paletteTextures_)e.delete(t)}super.removeHelper()}createTileRepresentation(t){return new jp(t)}beforeTilesRender(t,e){super.beforeTilesRender(t,e),this.helper.useProgram(this.program_,t)}renderTile(t,e,i,n,r,s,o,a,l,h,c){const u=this.helper.getGL();this.helper.bindBuffer(t.coords),this.helper.bindBuffer(this.indices_),this.helper.enableAttributes(qp);let d=0;for(;d<t.textures.length;){const e=`${Hp.TILE_TEXTURE_ARRAY}[${d}]`;this.helper.bindTexture(t.textures[d],d,e),++d}for(let t=0;t<this.paletteTextures_.length;++t){const e=this.paletteTextures_[t],i=e.getTexture(u);this.helper.bindTexture(i,d,e.name),++d}const g=i.viewState,f=s[0]+2*h,p=s[1]+2*h,m=t.tile.tileCoord,_=m[1],y=m[2];this.helper.setUniformMatrixValue(Hp.TILE_TRANSFORM,jd(this.tempMat4,e)),this.helper.setUniformFloatValue(Hp.TRANSITION_ALPHA,c),this.helper.setUniformFloatValue(Hp.DEPTH,l);let x=n;h>0&&(x=a,ue(x,n,x)),this.helper.setUniformFloatVec4(Hp.RENDER_EXTENT,x),this.helper.setUniformFloatValue(Hp.RESOLUTION,g.resolution),this.helper.setUniformFloatValue(Hp.ZOOM,g.zoom),this.helper.setUniformFloatValue(Hp.TEXTURE_PIXEL_WIDTH,f),this.helper.setUniformFloatValue(Hp.TEXTURE_PIXEL_HEIGHT,p),this.helper.setUniformFloatValue(Hp.TEXTURE_RESOLUTION,r),this.helper.setUniformFloatValue(Hp.TEXTURE_ORIGIN_X,o[0]+_*s[0]*r-h*r),this.helper.setUniformFloatValue(Hp.TEXTURE_ORIGIN_Y,o[1]-y*s[1]*r+h*r),this.helper.drawElements(0,this.indices_.getSize())}getData(t){if(!this.helper.getGL())return null;const e=this.frameState;if(!e)return null;const i=this.getLayer(),n=qn(e.pixelToCoordinateTransform,t.slice()),r=e.viewState,s=i.getExtent();if(s&&!jt(Un(s,r.projection),n))return null;const o=i.getSources(Dt([n]),r.resolution);let a,l,h;for(a=o.length-1;a>=0;--a)if(l=o[a],"ready"===l.getState()){if(h=l.getTileGridForProjection(r.projection),l.getWrapX())break;const t=h.getExtent();if(!t||jt(t,n))break}if(a<0)return null;const c=this.tileRepresentationCache;for(let t=h.getZForResolution(r.resolution);t>=h.getMinZoom();--t){const e=h.getTileCoordForCoordAndZ(n,t),i=Zp(l,e);if(!c.containsKey(i))continue;const r=c.get(i);if(r.tile.getState()===J)return null;if(!r.loaded)continue;const s=h.getOrigin(t),o=Nl(h.getTileSize(t)),a=h.getResolution(t),u=(n[0]-s[0])/a-e[1]*o[0],d=(s[1]-n[1])/a-e[2]*o[1];return r.getPixelData(u,d)}return null}disposeInternal(){const t=this.helper;if(t){const e=t.getGL();for(const t of this.paletteTextures_)t.delete(e);this.paletteTextures_.length=0,e.deleteProgram(this.program_),delete this.program_,t.deleteBuffer(this.indices_)}super.disposeInternal(),delete this.indices_}}function Qp(t){const e=t.toString();return e.includes(".")?e:e+".0"}function tm(t){if(t.length<2||t.length>4)throw new Error("`formatArray` can only output `vec2`, `vec3` or `vec4` arrays.");return`vec${t.length}(${t.map(Qp).join(", ")})`}function em(t){const e=Fl(t),i=e.length>3?e[3]:1;return tm([e[0]/255,e[1]/255,e[2]/255,i])}function im(t){return tm(Nl(t))}const nm={};let rm=0;function sm(t){return t in nm||(nm[t]=rm++),nm[t]}function om(t){return Qp(sm(t))}function am(t){return"u_var_"+t}function lm(){return{inFragmentShader:!1,variables:{},properties:{},functions:{},bandCount:0,featureId:!1,geometryType:!1}}const hm="getBandValue",cm="u_paletteTextures",um="featureId",dm="geometryType";function gm(t,e,i,n){return mm(Ql(t,e,i),e,n)}function fm(t){return(e,i,n)=>{const r=i.args.length,s=new Array(r);for(let t=0;t<r;++t)s[t]=mm(i.args[t],n,e);return t(s,e)}}const pm={[th.Get]:(t,e)=>{const i=e.args[0].value;i in t.properties||(t.properties[i]={name:i,type:e.type});return(t.inFragmentShader?"v_prop_":"a_prop_")+i},[th.Id]:t=>{t.featureId=!0;return(t.inFragmentShader?"v_":"a_")+um},[th.GeometryType]:t=>{t.geometryType=!0;return(t.inFragmentShader?"v_":"a_")+dm},[th.LineMetric]:()=>"currentLineMetric",[th.Var]:(t,e)=>{const i=e.args[0].value;return i in t.variables||(t.variables[i]={name:i,type:e.type}),am(i)},[th.Resolution]:()=>"u_resolution",[th.Zoom]:()=>"u_zoom",[th.Time]:()=>"u_time",[th.Any]:fm((t=>`(${t.join(" || ")})`)),[th.All]:fm((t=>`(${t.join(" && ")})`)),[th.Not]:fm((([t])=>`(!${t})`)),[th.Equal]:fm((([t,e])=>`(${t} == ${e})`)),[th.NotEqual]:fm((([t,e])=>`(${t} != ${e})`)),[th.GreaterThan]:fm((([t,e])=>`(${t} > ${e})`)),[th.GreaterThanOrEqualTo]:fm((([t,e])=>`(${t} >= ${e})`)),[th.LessThan]:fm((([t,e])=>`(${t} < ${e})`)),[th.LessThanOrEqualTo]:fm((([t,e])=>`(${t} <= ${e})`)),[th.Multiply]:fm((t=>`(${t.join(" * ")})`)),[th.Divide]:fm((([t,e])=>`(${t} / ${e})`)),[th.Add]:fm((t=>`(${t.join(" + ")})`)),[th.Subtract]:fm((([t,e])=>`(${t} - ${e})`)),[th.Clamp]:fm((([t,e,i])=>`clamp(${t}, ${e}, ${i})`)),[th.Mod]:fm((([t,e])=>`mod(${t}, ${e})`)),[th.Pow]:fm((([t,e])=>`pow(${t}, ${e})`)),[th.Abs]:fm((([t])=>`abs(${t})`)),[th.Floor]:fm((([t])=>`floor(${t})`)),[th.Ceil]:fm((([t])=>`ceil(${t})`)),[th.Round]:fm((([t])=>`floor(${t} + 0.5)`)),[th.Sin]:fm((([t])=>`sin(${t})`)),[th.Cos]:fm((([t])=>`cos(${t})`)),[th.Atan]:fm((([t,e])=>void 0!==e?`atan(${t}, ${e})`:`atan(${t})`)),[th.Sqrt]:fm((([t])=>`sqrt(${t})`)),[th.Match]:fm((t=>{const e=t[0],i=t[t.length-1];let n=null;for(let r=t.length-3;r>=1;r-=2){n=`(${e} == ${t[r]} ? ${t[r+1]} : ${n||i})`}return n})),[th.Between]:fm((([t,e,i])=>`(${t} >= ${e} && ${t} <= ${i})`)),[th.Interpolate]:fm((([t,e,...i])=>{let n="";for(let r=0;r<i.length-2;r+=2){const s=i[r],o=n||i[r+1],a=i[r+2],l=i[r+3];let h;h=t===Qp(1)?`(${e} - ${s}) / (${a} - ${s})`:`(pow(${t}, (${e} - ${s})) - 1.0) / (pow(${t}, (${a} - ${s})) - 1.0)`,n=`mix(${o}, ${l}, clamp(${h}, 0.0, 1.0))`}return n})),[th.Case]:fm((t=>{const e=t[t.length-1];let i=null;for(let n=t.length-3;n>=0;n-=2){i=`(${t[n]} ? ${t[n+1]} : ${i||e})`}return i})),[th.In]:fm((([t,...e],i)=>{const n=function(t,e){return`operator_${t}_${Object.keys(e.functions).length}`}("in",i),r=[];for(let t=0;t<e.length;t+=1)r.push(`  if (inputValue == ${e[t]}) { return true; }`);return i.functions[n]=`bool ${n}(float inputValue) {\n${r.join("\n")}\n  return false;\n}`,`${n}(${t})`})),[th.Array]:fm((t=>`vec${t.length}(${t.join(", ")})`)),[th.Color]:fm((t=>{if(1===t.length)return`vec4(vec3(${t[0]} / 255.0), 1.0)`;if(2===t.length)return`vec4(vec3(${t[0]} / 255.0), ${t[1]})`;const e=t.slice(0,3).map((t=>`${t} / 255.0`));if(3===t.length)return`vec4(${e.join(", ")}, 1.0)`;const i=t[3];return`vec4(${e.join(", ")}, ${i})`})),[th.Band]:fm((([t,e,i],n)=>{if(!(hm in n.functions)){let t="";const e=n.bandCount||1;for(let i=0;i<e;i++){const n=Math.floor(i/4);let r=i%4;i===e-1&&1===r&&(r=3);t+=`  if (band == ${i+1}.0) {\n    return texture2D(${`${Hp.TILE_TEXTURE_ARRAY}[${n}]`}, v_textureCoord + vec2(dx, dy))[${r}];\n  }\n`}n.functions[hm]=`float getBandValue(float band, float xOffset, float yOffset) {\n  float dx = xOffset / ${Hp.TEXTURE_PIXEL_WIDTH};\n  float dy = yOffset / ${Hp.TEXTURE_PIXEL_HEIGHT};\n${t}\n}`}return`${hm}(${t}, ${e??"0.0"}, ${i??"0.0"})`})),[th.Palette]:(t,e)=>{const[i,...n]=e.args,r=n.length,s=new Uint8Array(4*r);for(let t=0;t<n.length;t++){const e=Fl(n[t].value),i=4*t;s[i]=e[0],s[i+1]=e[1],s[i+2]=e[2],s[i+3]=255*e[3]}t.paletteTextures||(t.paletteTextures=[]);const o=`${cm}[${t.paletteTextures.length}]`,a=new Ap(o,s);t.paletteTextures.push(a);return`texture2D(${o}, vec2((${mm(i,jl,t)} + 0.5) / ${r}.0, 0.5))`}};function mm(t,e,i){if(t instanceof ql){const n=pm[t.operator];if(void 0===n)throw new Error(`No compiler defined for this operator: ${JSON.stringify(t.operator)}`);return n(i,t,e)}if((t.type&jl)>0)return Qp(t.value);if((t.type&Gl)>0)return t.value.toString();if((t.type&Ul)>0)return om(t.value.toString());if((t.type&Bl)>0)return em(t.value);if((t.type&zl)>0)return tm(t.value);if((t.type&Xl)>0)return im(t.value);throw new Error(`Unexpected expression ${t.value} (expected type ${Zl(e)})`)}function _m(t,e,i=2){const n=e&&e.length,r=n?e[0]*i:t.length;let s=ym(t,0,r,i,!0);const o=[];if(!s||s.next===s.prev)return o;let a,l,h;if(n&&(s=function(t,e,i,n){const r=[];for(let i=0,s=e.length;i<s;i++){const o=ym(t,e[i]*n,i<s-1?e[i+1]*n:t.length,n,!1);o===o.next&&(o.steiner=!0),r.push(Im(o))}r.sort(Cm);for(let t=0;t<r.length;t++)i=Rm(r[t],i);return i}(t,e,s,i)),t.length>80*i){a=1/0,l=1/0;let e=-1/0,n=-1/0;for(let s=i;s<r;s+=i){const i=t[s],r=t[s+1];i<a&&(a=i),r<l&&(l=r),i>e&&(e=i),r>n&&(n=r)}h=Math.max(e-a,n-l),h=0!==h?32767/h:0}return vm(s,o,i,a,l,h,0),o}function ym(t,e,i,n,r){let s;if(r===function(t,e,i,n){let r=0;for(let s=e,o=i-n;s<i;s+=n)r+=(t[o]-t[s])*(t[s+1]+t[o+1]),o=s;return r}(t,e,i,n)>0)for(let r=e;r<i;r+=n)s=Um(r/n|0,t[r],t[r+1],s);else for(let r=i-n;r>=e;r-=n)s=Um(r/n|0,t[r],t[r+1],s);return s&&Om(s,s.next)&&(Bm(s),s=s.next),s}function xm(t,e){if(!t)return t;e||(e=t);let i,n=t;do{if(i=!1,n.steiner||!Om(n,n.next)&&0!==Am(n.prev,n,n.next))n=n.next;else{if(Bm(n),n=e=n.prev,n===n.next)break;i=!0}}while(i||n!==e);return e}function vm(t,e,i,n,r,s,o){if(!t)return;!o&&s&&function(t,e,i,n){let r=t;do{0===r.z&&(r.z=Pm(r.x,r.y,e,i,n)),r.prevZ=r.prev,r.nextZ=r.next,r=r.next}while(r!==t);r.prevZ.nextZ=null,r.prevZ=null,function(t){let e,i=1;do{let n,r=t;t=null;let s=null;for(e=0;r;){e++;let o=r,a=0;for(let t=0;t<i&&(a++,o=o.nextZ,o);t++);let l=i;for(;a>0||l>0&&o;)0!==a&&(0===l||!o||r.z<=o.z)?(n=r,r=r.nextZ,a--):(n=o,o=o.nextZ,l--),s?s.nextZ=n:t=n,n.prevZ=s,s=n;r=o}s.nextZ=null,i*=2}while(e>1)}(r)}(t,n,r,s);let a=t;for(;t.prev!==t.next;){const l=t.prev,h=t.next;if(s?Sm(t,n,r,s):Em(t))e.push(l.i,t.i,h.i),Bm(t),t=h.next,a=h.next;else if((t=h)===a){o?1===o?vm(t=wm(xm(t),e),e,i,n,r,s,2):2===o&&Tm(t,e,i,n,r,s):vm(xm(t),e,i,n,r,s,1);break}}}function Em(t){const e=t.prev,i=t,n=t.next;if(Am(e,i,n)>=0)return!1;const r=e.x,s=i.x,o=n.x,a=e.y,l=i.y,h=n.y,c=Math.min(r,s,o),u=Math.min(a,l,h),d=Math.max(r,s,o),g=Math.max(a,l,h);let f=n.next;for(;f!==e;){if(f.x>=c&&f.x<=d&&f.y>=u&&f.y<=g&&Fm(r,a,s,l,o,h,f.x,f.y)&&Am(f.prev,f,f.next)>=0)return!1;f=f.next}return!0}function Sm(t,e,i,n){const r=t.prev,s=t,o=t.next;if(Am(r,s,o)>=0)return!1;const a=r.x,l=s.x,h=o.x,c=r.y,u=s.y,d=o.y,g=Math.min(a,l,h),f=Math.min(c,u,d),p=Math.max(a,l,h),m=Math.max(c,u,d),_=Pm(g,f,e,i,n),y=Pm(p,m,e,i,n);let x=t.prevZ,v=t.nextZ;for(;x&&x.z>=_&&v&&v.z<=y;){if(x.x>=g&&x.x<=p&&x.y>=f&&x.y<=m&&x!==r&&x!==o&&Fm(a,c,l,u,h,d,x.x,x.y)&&Am(x.prev,x,x.next)>=0)return!1;if(x=x.prevZ,v.x>=g&&v.x<=p&&v.y>=f&&v.y<=m&&v!==r&&v!==o&&Fm(a,c,l,u,h,d,v.x,v.y)&&Am(v.prev,v,v.next)>=0)return!1;v=v.nextZ}for(;x&&x.z>=_;){if(x.x>=g&&x.x<=p&&x.y>=f&&x.y<=m&&x!==r&&x!==o&&Fm(a,c,l,u,h,d,x.x,x.y)&&Am(x.prev,x,x.next)>=0)return!1;x=x.prevZ}for(;v&&v.z<=y;){if(v.x>=g&&v.x<=p&&v.y>=f&&v.y<=m&&v!==r&&v!==o&&Fm(a,c,l,u,h,d,v.x,v.y)&&Am(v.prev,v,v.next)>=0)return!1;v=v.nextZ}return!0}function wm(t,e){let i=t;do{const n=i.prev,r=i.next.next;!Om(n,r)&&Dm(n,i,i.next,r)&&Gm(n,r)&&Gm(r,n)&&(e.push(n.i,i.i,r.i),Bm(i),Bm(i.next),i=t=r),i=i.next}while(i!==t);return xm(i)}function Tm(t,e,i,n,r,s){let o=t;do{let t=o.next.next;for(;t!==o.prev;){if(o.i!==t.i&&Mm(o,t)){let a=jm(o,t);return o=xm(o,o.next),a=xm(a,a.next),vm(o,e,i,n,r,s,0),void vm(a,e,i,n,r,s,0)}t=t.next}o=o.next}while(o!==t)}function Cm(t,e){let i=t.x-e.x;if(0===i&&(i=t.y-e.y,0===i)){i=(t.next.y-t.y)/(t.next.x-t.x)-(e.next.y-e.y)/(e.next.x-e.x)}return i}function Rm(t,e){const i=function(t,e){let i=e;const n=t.x,r=t.y;let s,o=-1/0;if(Om(t,i))return i;do{if(Om(t,i.next))return i.next;if(r<=i.y&&r>=i.next.y&&i.next.y!==i.y){const t=i.x+(r-i.y)*(i.next.x-i.x)/(i.next.y-i.y);if(t<=n&&t>o&&(o=t,s=i.x<i.next.x?i:i.next,t===n))return s}i=i.next}while(i!==e);if(!s)return null;const a=s,l=s.x,h=s.y;let c=1/0;i=s;do{if(n>=i.x&&i.x>=l&&n!==i.x&&Lm(r<h?n:o,r,l,h,r<h?o:n,r,i.x,i.y)){const e=Math.abs(r-i.y)/(n-i.x);Gm(i,t)&&(e<c||e===c&&(i.x>s.x||i.x===s.x&&bm(s,i)))&&(s=i,c=e)}i=i.next}while(i!==a);return s}(t,e);if(!i)return e;const n=jm(i,t);return xm(n,n.next),xm(i,i.next)}function bm(t,e){return Am(t.prev,t,e.prev)<0&&Am(e.next,t,t.next)<0}function Pm(t,e,i,n,r){return(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=(t-i)*r|0)|t<<8))|t<<4))|t<<2))|t<<1))|(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=(e-n)*r|0)|e<<8))|e<<4))|e<<2))|e<<1))<<1}function Im(t){let e=t,i=t;do{(e.x<i.x||e.x===i.x&&e.y<i.y)&&(i=e),e=e.next}while(e!==t);return i}function Lm(t,e,i,n,r,s,o,a){return(r-o)*(e-a)>=(t-o)*(s-a)&&(t-o)*(n-a)>=(i-o)*(e-a)&&(i-o)*(s-a)>=(r-o)*(n-a)}function Fm(t,e,i,n,r,s,o,a){return!(t===o&&e===a)&&Lm(t,e,i,n,r,s,o,a)}function Mm(t,e){return t.next.i!==e.i&&t.prev.i!==e.i&&!function(t,e){let i=t;do{if(i.i!==t.i&&i.next.i!==t.i&&i.i!==e.i&&i.next.i!==e.i&&Dm(i,i.next,t,e))return!0;i=i.next}while(i!==t);return!1}(t,e)&&(Gm(t,e)&&Gm(e,t)&&function(t,e){let i=t,n=!1;const r=(t.x+e.x)/2,s=(t.y+e.y)/2;do{i.y>s!=i.next.y>s&&i.next.y!==i.y&&r<(i.next.x-i.x)*(s-i.y)/(i.next.y-i.y)+i.x&&(n=!n),i=i.next}while(i!==t);return n}(t,e)&&(Am(t.prev,t,e.prev)||Am(t,e.prev,e))||Om(t,e)&&Am(t.prev,t,t.next)>0&&Am(e.prev,e,e.next)>0)}function Am(t,e,i){return(e.y-t.y)*(i.x-e.x)-(e.x-t.x)*(i.y-e.y)}function Om(t,e){return t.x===e.x&&t.y===e.y}function Dm(t,e,i,n){const r=km(Am(t,e,i)),s=km(Am(t,e,n)),o=km(Am(i,n,t)),a=km(Am(i,n,e));return r!==s&&o!==a||(!(0!==r||!Nm(t,i,e))||(!(0!==s||!Nm(t,n,e))||(!(0!==o||!Nm(i,t,n))||!(0!==a||!Nm(i,e,n)))))}function Nm(t,e,i){return e.x<=Math.max(t.x,i.x)&&e.x>=Math.min(t.x,i.x)&&e.y<=Math.max(t.y,i.y)&&e.y>=Math.min(t.y,i.y)}function km(t){return t>0?1:t<0?-1:0}function Gm(t,e){return Am(t.prev,t,t.next)<0?Am(t,e,t.next)>=0&&Am(t,t.prev,e)>=0:Am(t,e,t.prev)<0||Am(t,t.next,e)<0}function jm(t,e){const i=zm(t.i,t.x,t.y),n=zm(e.i,e.x,e.y),r=t.next,s=e.prev;return t.next=e,e.prev=t,i.next=r,r.prev=i,n.next=i,i.prev=n,s.next=n,n.prev=s,n}function Um(t,e,i,n){const r=zm(t,e,i);return n?(r.next=n.next,r.prev=n,n.next.prev=r,n.next=r):(r.prev=r,r.next=r),r}function Bm(t){t.next.prev=t.prev,t.prev.next=t.next,t.prevZ&&(t.prevZ.nextZ=t.nextZ),t.nextZ&&(t.nextZ.prevZ=t.prevZ)}function zm(t,e,i){return{i:t,x:e,y:i,prev:null,next:null,z:0,prevZ:null,nextZ:null,steiner:!1}}const Xm=.985,Vm=[],$m={vertexPosition:0,indexPosition:0};function Wm(t,e,i,n,r){t[e+0]=i,t[e+1]=n,t[e+2]=r}function Zm(t,e){const i=256,n=255;return(e=e||[])[0]=Math.floor(t/i/i/i)/n,e[1]=Math.floor(t/i/i)%i/n,e[2]=Math.floor(t/i)%i/n,e[3]=t%i/n,e}function Ym(t){let e=0;const i=256,n=255;return e+=Math.round(t[0]*i*i*i*n),e+=Math.round(t[1]*i*i*n),e+=Math.round(t[2]*i*n),e+=Math.round(t[3]*n),e}function Hm(t){const e=Array.isArray(t)?t:[t];if("style"in e[0]){const t=[],i=e,n=[];for(const e of i){const i=Array.isArray(e.style)?e.style:[e.style];let r=e.filter;e.else&&n.length&&(r=["all",...n.map((t=>["!",t]))],e.filter&&r.push(e.filter),r.length<3&&(r=r[1])),e.filter&&n.push(e.filter);const s=i.map((t=>({style:t,...r&&{filter:r}})));t.push(...s)}return t}return"builder"in e[0]?e:e.map((t=>({style:t})))}function Km(){return{"fill-color":"rgba(255,255,255,0.4)","stroke-color":"#3399CC","stroke-width":1.25,"circle-radius":5,"circle-fill-color":"rgba(255,255,255,0.4)","circle-stroke-width":1.25,"circle-stroke-color":"#3399CC"}}const qm="#ifdef GL_FRAGMENT_PRECISION_HIGH\nprecision highp float;\n#else\nprecision mediump float;\n#endif\nuniform mat4 u_projectionMatrix;\nuniform mat4 u_screenToWorldMatrix;\nuniform vec2 u_viewportSizePx;\nuniform float u_pixelRatio;\nuniform float u_globalAlpha;\nuniform float u_time;\nuniform float u_zoom;\nuniform float u_resolution;\nuniform float u_rotation;\nuniform vec4 u_renderExtent;\nuniform vec2 u_patternOrigin;\nuniform float u_depth;\nuniform mediump int u_hitDetection;\n\nconst float PI = 3.141592653589793238;\nconst float TWO_PI = 2.0 * PI;\nfloat currentLineMetric = 0.; // an actual value will be used in the stroke shaders\n",Jm={"fill-color":"rgba(255,255,255,0.4)","stroke-color":"#3399CC","stroke-width":1.25,"circle-radius":5,"circle-fill-color":"rgba(255,255,255,0.4)","circle-stroke-width":1.25,"circle-stroke-color":"#3399CC"};class Qm{constructor(){this.uniforms_=[],this.attributes_=[],this.varyings_=[],this.hasSymbol_=!1,this.symbolSizeExpression_=`vec2(${Qp(Jm["circle-radius"])} + ${Qp(.5*Jm["circle-stroke-width"])})`,this.symbolRotationExpression_="0.0",this.symbolOffsetExpression_="vec2(0.0)",this.symbolColorExpression_=em(Jm["circle-fill-color"]),this.texCoordExpression_="vec4(0.0, 0.0, 1.0, 1.0)",this.discardExpression_="false",this.symbolRotateWithView_=!1,this.hasStroke_=!1,this.strokeWidthExpression_=Qp(Jm["stroke-width"]),this.strokeColorExpression_=em(Jm["stroke-color"]),this.strokeOffsetExpression_="0.",this.strokeCapExpression_=om("round"),this.strokeJoinExpression_=om("round"),this.strokeMiterLimitExpression_="10.",this.strokeDistanceFieldExpression_="-1000.",this.hasFill_=!1,this.fillColorExpression_=em(Jm["fill-color"]),this.vertexShaderFunctions_=[],this.fragmentShaderFunctions_=[]}addUniform(t){return this.uniforms_.push(t),this}addAttribute(t){return this.attributes_.push(t),this}addVarying(t,e,i){return this.varyings_.push({name:t,type:e,expression:i}),this}setSymbolSizeExpression(t){return this.hasSymbol_=!0,this.symbolSizeExpression_=t,this}getSymbolSizeExpression(){return this.symbolSizeExpression_}setSymbolRotationExpression(t){return this.symbolRotationExpression_=t,this}setSymbolOffsetExpression(t){return this.symbolOffsetExpression_=t,this}getSymbolOffsetExpression(){return this.symbolOffsetExpression_}setSymbolColorExpression(t){return this.hasSymbol_=!0,this.symbolColorExpression_=t,this}getSymbolColorExpression(){return this.symbolColorExpression_}setTextureCoordinateExpression(t){return this.texCoordExpression_=t,this}setFragmentDiscardExpression(t){return this.discardExpression_=t,this}getFragmentDiscardExpression(){return this.discardExpression_}setSymbolRotateWithView(t){return this.symbolRotateWithView_=t,this}setStrokeWidthExpression(t){return this.hasStroke_=!0,this.strokeWidthExpression_=t,this}setStrokeColorExpression(t){return this.hasStroke_=!0,this.strokeColorExpression_=t,this}getStrokeColorExpression(){return this.strokeColorExpression_}setStrokeOffsetExpression(t){return this.strokeOffsetExpression_=t,this}setStrokeCapExpression(t){return this.strokeCapExpression_=t,this}setStrokeJoinExpression(t){return this.strokeJoinExpression_=t,this}setStrokeMiterLimitExpression(t){return this.strokeMiterLimitExpression_=t,this}setStrokeDistanceFieldExpression(t){return this.strokeDistanceFieldExpression_=t,this}setFillColorExpression(t){return this.hasFill_=!0,this.fillColorExpression_=t,this}getFillColorExpression(){return this.fillColorExpression_}addVertexShaderFunction(t){this.vertexShaderFunctions_.includes(t)||this.vertexShaderFunctions_.push(t)}addFragmentShaderFunction(t){this.fragmentShaderFunctions_.includes(t)||this.fragmentShaderFunctions_.push(t)}getSymbolVertexShader(){return this.hasSymbol_?`${qm}\n${this.uniforms_.map((function(t){return"uniform "+t+";"})).join("\n")}\nattribute vec2 a_position;\nattribute float a_index;\nattribute vec4 a_hitColor;\n${this.attributes_.map((function(t){return"attribute "+t+";"})).join("\n")}\nvarying vec2 v_texCoord;\nvarying vec2 v_quadCoord;\nvarying vec4 v_hitColor;\nvarying vec2 v_centerPx;\nvarying float v_angle;\nvarying vec2 v_quadSizePx;\n${this.varyings_.map((function(t){return"varying "+t.type+" "+t.name+";"})).join("\n")}\n${this.vertexShaderFunctions_.join("\n")}\nvec2 pxToScreen(vec2 coordPx) {\n  vec2 scaled = coordPx / u_viewportSizePx / 0.5;\n  return scaled;\n}\n\nvec2 screenToPx(vec2 coordScreen) {\n  return (coordScreen * 0.5 + 0.5) * u_viewportSizePx;\n}\n\nvoid main(void) {\n  v_quadSizePx = ${this.symbolSizeExpression_};\n  vec2 halfSizePx = v_quadSizePx * 0.5;\n  vec2 centerOffsetPx = ${this.symbolOffsetExpression_};\n  vec2 offsetPx = centerOffsetPx;\n  if (a_index == 0.0) {\n    offsetPx -= halfSizePx;\n  } else if (a_index == 1.0) {\n    offsetPx += halfSizePx * vec2(1., -1.);\n  } else if (a_index == 2.0) {\n    offsetPx += halfSizePx;\n  } else {\n    offsetPx += halfSizePx * vec2(-1., 1.);\n  }\n  float angle = ${this.symbolRotationExpression_};\n  ${this.symbolRotateWithView_?"angle += u_rotation;":""}\n  float c = cos(-angle);\n  float s = sin(-angle);\n  offsetPx = vec2(c * offsetPx.x - s * offsetPx.y, s * offsetPx.x + c * offsetPx.y);\n  vec4 center = u_projectionMatrix * vec4(a_position, 0.0, 1.0);\n  gl_Position = center + vec4(pxToScreen(offsetPx), u_depth, 0.);\n  vec4 texCoord = ${this.texCoordExpression_};\n  float u = a_index == 0.0 || a_index == 3.0 ? texCoord.s : texCoord.p;\n  float v = a_index == 2.0 || a_index == 3.0 ? texCoord.t : texCoord.q;\n  v_texCoord = vec2(u, v);\n  v_hitColor = a_hitColor;\n  v_angle = angle;\n  c = cos(-v_angle);\n  s = sin(-v_angle);\n  centerOffsetPx = vec2(c * centerOffsetPx.x - s * centerOffsetPx.y, s * centerOffsetPx.x + c * centerOffsetPx.y); \n  v_centerPx = screenToPx(center.xy) + centerOffsetPx;\n${this.varyings_.map((function(t){return"  "+t.name+" = "+t.expression+";"})).join("\n")}\n}`:null}getSymbolFragmentShader(){return this.hasSymbol_?`${qm}\n${this.uniforms_.map((function(t){return"uniform "+t+";"})).join("\n")}\nvarying vec2 v_texCoord;\nvarying vec4 v_hitColor;\nvarying vec2 v_centerPx;\nvarying float v_angle;\nvarying vec2 v_quadSizePx;\n${this.varyings_.map((function(t){return"varying "+t.type+" "+t.name+";"})).join("\n")}\n${this.fragmentShaderFunctions_.join("\n")}\n\nvoid main(void) {\n  if (${this.discardExpression_}) { discard; }\n  vec2 coordsPx = gl_FragCoord.xy / u_pixelRatio - v_centerPx; // relative to center\n  float c = cos(v_angle);\n  float s = sin(v_angle);\n  coordsPx = vec2(c * coordsPx.x - s * coordsPx.y, s * coordsPx.x + c * coordsPx.y);\n  gl_FragColor = ${this.symbolColorExpression_};\n  gl_FragColor.rgb *= gl_FragColor.a;\n  if (u_hitDetection > 0) {\n    if (gl_FragColor.a < 0.05) { discard; };\n    gl_FragColor = v_hitColor;\n  }\n}`:null}getStrokeVertexShader(){return this.hasStroke_?`${qm}\n${this.uniforms_.map((function(t){return"uniform "+t+";"})).join("\n")}\nattribute vec2 a_segmentStart;\nattribute vec2 a_segmentEnd;\nattribute float a_measureStart;\nattribute float a_measureEnd;\nattribute float a_parameters;\nattribute float a_distance;\nattribute vec2 a_joinAngles;\nattribute vec4 a_hitColor;\n${this.attributes_.map((function(t){return"attribute "+t+";"})).join("\n")}\nvarying vec2 v_segmentStart;\nvarying vec2 v_segmentEnd;\nvarying float v_angleStart;\nvarying float v_angleEnd;\nvarying float v_width;\nvarying vec4 v_hitColor;\nvarying float v_distanceOffsetPx;\nvarying float v_measureStart;\nvarying float v_measureEnd;\n${this.varyings_.map((function(t){return"varying "+t.type+" "+t.name+";"})).join("\n")}\n${this.vertexShaderFunctions_.join("\n")}\nvec2 worldToPx(vec2 worldPos) {\n  vec4 screenPos = u_projectionMatrix * vec4(worldPos, 0.0, 1.0);\n  return (0.5 * screenPos.xy + 0.5) * u_viewportSizePx;\n}\n\nvec4 pxToScreen(vec2 pxPos) {\n  vec2 screenPos = 2.0 * pxPos / u_viewportSizePx - 1.0;\n  return vec4(screenPos, u_depth, 1.0);\n}\n\nbool isCap(float joinAngle) {\n  return joinAngle < -0.1;\n}\n\nvec2 getJoinOffsetDirection(vec2 normalPx, float joinAngle) {\n  float halfAngle = joinAngle / 2.0;\n  float c = cos(halfAngle);\n  float s = sin(halfAngle);\n  vec2 angleBisectorNormal = vec2(s * normalPx.x + c * normalPx.y, -c * normalPx.x + s * normalPx.y);\n  float length = 1.0 / s;\n  return angleBisectorNormal * length;\n}\n\nvec2 getOffsetPoint(vec2 point, vec2 normal, float joinAngle, float offsetPx) {\n  // if on a cap or the join angle is too high, offset the line along the segment normal\n  if (cos(joinAngle) > 0.998 || isCap(joinAngle)) {\n    return point - normal * offsetPx;\n  }\n  // offset is applied along the inverted normal (positive offset goes "right" relative to line direction)\n  return point - getJoinOffsetDirection(normal, joinAngle) * offsetPx;\n}\n\nvoid main(void) {\n  v_angleStart = a_joinAngles.x;\n  v_angleEnd = a_joinAngles.y;\n  float vertexNumber = floor(abs(a_parameters) / 10000. + 0.5);\n  currentLineMetric = vertexNumber < 1.5 ? a_measureStart : a_measureEnd;\n  // we're reading the fractional part while keeping the sign (so -4.12 gives -0.12, 3.45 gives 0.45)\n  float angleTangentSum = fract(abs(a_parameters) / 10000.) * 10000. * sign(a_parameters);\n\n  float lineWidth = ${this.strokeWidthExpression_};\n  float lineOffsetPx = ${this.strokeOffsetExpression_};\n\n  // compute segment start/end in px with offset\n  vec2 segmentStartPx = worldToPx(a_segmentStart);\n  vec2 segmentEndPx = worldToPx(a_segmentEnd);\n  vec2 tangentPx = normalize(segmentEndPx - segmentStartPx);\n  vec2 normalPx = vec2(-tangentPx.y, tangentPx.x);\n  segmentStartPx = getOffsetPoint(segmentStartPx, normalPx, v_angleStart, lineOffsetPx),\n  segmentEndPx = getOffsetPoint(segmentEndPx, normalPx, v_angleEnd, lineOffsetPx);\n  \n  // compute current vertex position\n  float normalDir = vertexNumber < 0.5 || (vertexNumber > 1.5 && vertexNumber < 2.5) ? 1.0 : -1.0;\n  float tangentDir = vertexNumber < 1.5 ? 1.0 : -1.0;\n  float angle = vertexNumber < 1.5 ? v_angleStart : v_angleEnd;\n  vec2 joinDirection;\n  vec2 positionPx = vertexNumber < 1.5 ? segmentStartPx : segmentEndPx;\n  // if angle is too high, do not make a proper join\n  if (cos(angle) > 0.985 || isCap(angle)) {\n    joinDirection = normalPx * normalDir - tangentPx * tangentDir;\n  } else {\n    joinDirection = getJoinOffsetDirection(normalPx * normalDir, angle);\n  }\n  positionPx = positionPx + joinDirection * (lineWidth * 0.5 + 1.); // adding 1 pixel for antialiasing\n  gl_Position = pxToScreen(positionPx);\n\n  v_segmentStart = segmentStartPx;\n  v_segmentEnd = segmentEndPx;\n  v_width = lineWidth;\n  v_hitColor = a_hitColor;\n  v_distanceOffsetPx = a_distance / u_resolution - (lineOffsetPx * angleTangentSum);\n  v_measureStart = a_measureStart;\n  v_measureEnd = a_measureEnd;\n${this.varyings_.map((function(t){return"  "+t.name+" = "+t.expression+";"})).join("\n")}\n}`:null}getStrokeFragmentShader(){return this.hasStroke_?`${qm}\n${this.uniforms_.map((function(t){return"uniform "+t+";"})).join("\n")}\nvarying vec2 v_segmentStart;\nvarying vec2 v_segmentEnd;\nvarying float v_angleStart;\nvarying float v_angleEnd;\nvarying float v_width;\nvarying vec4 v_hitColor;\nvarying float v_distanceOffsetPx;\nvarying float v_measureStart;\nvarying float v_measureEnd;\n${this.varyings_.map((function(t){return"varying "+t.type+" "+t.name+";"})).join("\n")}\n${this.fragmentShaderFunctions_.join("\n")}\n\nvec2 pxToWorld(vec2 pxPos) {\n  vec2 screenPos = 2.0 * pxPos / u_viewportSizePx - 1.0;\n  return (u_screenToWorldMatrix * vec4(screenPos, 0.0, 1.0)).xy;\n}\n\nbool isCap(float joinAngle) {\n  return joinAngle < -0.1;\n}\n\nfloat segmentDistanceField(vec2 point, vec2 start, vec2 end, float width) {\n  vec2 tangent = normalize(end - start);\n  vec2 normal = vec2(-tangent.y, tangent.x);\n  vec2 startToPoint = point - start;\n  return abs(dot(startToPoint, normal)) - width * 0.5;\n}\n\nfloat buttCapDistanceField(vec2 point, vec2 start, vec2 end) {\n  vec2 startToPoint = point - start;\n  vec2 tangent = normalize(end - start);\n  return dot(startToPoint, -tangent);\n}\n\nfloat squareCapDistanceField(vec2 point, vec2 start, vec2 end, float width) {\n  return buttCapDistanceField(point, start, end) - width * 0.5;\n}\n\nfloat roundCapDistanceField(vec2 point, vec2 start, vec2 end, float width) {\n  float onSegment = max(0., 1000. * dot(point - start, end - start)); // this is very high when inside the segment\n  return length(point - start) - width * 0.5 - onSegment;\n}\n\nfloat roundJoinDistanceField(vec2 point, vec2 start, vec2 end, float width) {\n  return roundCapDistanceField(point, start, end, width);\n}\n\nfloat bevelJoinField(vec2 point, vec2 start, vec2 end, float width, float joinAngle) {\n  vec2 startToPoint = point - start;\n  vec2 tangent = normalize(end - start);\n  float c = cos(joinAngle * 0.5);\n  float s = sin(joinAngle * 0.5);\n  float direction = -sign(sin(joinAngle));\n  vec2 bisector = vec2(c * tangent.x - s * tangent.y, s * tangent.x + c * tangent.y);\n  float radius = width * 0.5 * s;\n  return dot(startToPoint, bisector * direction) - radius;\n}\n\nfloat miterJoinDistanceField(vec2 point, vec2 start, vec2 end, float width, float joinAngle) {\n  if (cos(joinAngle) > 0.985) { // avoid risking a division by zero\n    return bevelJoinField(point, start, end, width, joinAngle);\n  }\n  float miterLength = 1. / sin(joinAngle * 0.5);\n  float miterLimit = ${this.strokeMiterLimitExpression_};\n  if (miterLength > miterLimit) {\n    return bevelJoinField(point, start, end, width, joinAngle);\n  }\n  return -1000.;\n}\n\nfloat capDistanceField(vec2 point, vec2 start, vec2 end, float width, float capType) {\n   if (capType == ${om("butt")}) {\n    return buttCapDistanceField(point, start, end);\n  } else if (capType == ${om("square")}) {\n    return squareCapDistanceField(point, start, end, width);\n  }\n  return roundCapDistanceField(point, start, end, width);\n}\n\nfloat joinDistanceField(vec2 point, vec2 start, vec2 end, float width, float joinAngle, float joinType) {\n  if (joinType == ${om("bevel")}) {\n    return bevelJoinField(point, start, end, width, joinAngle);\n  } else if (joinType == ${om("miter")}) {\n    return miterJoinDistanceField(point, start, end, width, joinAngle);\n  }\n  return roundJoinDistanceField(point, start, end, width);\n}\n\nfloat computeSegmentPointDistance(vec2 point, vec2 start, vec2 end, float width, float joinAngle, float capType, float joinType) {\n  if (isCap(joinAngle)) {\n    return capDistanceField(point, start, end, width, capType);\n  }\n  return joinDistanceField(point, start, end, width, joinAngle, joinType);\n}\n\nvoid main(void) {\n  vec2 currentPoint = gl_FragCoord.xy / u_pixelRatio;\n  #ifdef GL_FRAGMENT_PRECISION_HIGH\n  vec2 worldPos = pxToWorld(currentPoint);\n  if (\n    abs(u_renderExtent[0] - u_renderExtent[2]) > 0.0 && (\n      worldPos[0] < u_renderExtent[0] ||\n      worldPos[1] < u_renderExtent[1] ||\n      worldPos[0] > u_renderExtent[2] ||\n      worldPos[1] > u_renderExtent[3]\n    )\n  ) {\n    discard;\n  }\n  #endif\n\n  float segmentLength = length(v_segmentEnd - v_segmentStart);\n  vec2 segmentTangent = (v_segmentEnd - v_segmentStart) / segmentLength;\n  vec2 segmentNormal = vec2(-segmentTangent.y, segmentTangent.x);\n  vec2 startToPoint = currentPoint - v_segmentStart;\n  float lengthToPoint = max(0., min(dot(segmentTangent, startToPoint), segmentLength));\n  float currentLengthPx = lengthToPoint + v_distanceOffsetPx; \n  float currentRadiusPx = abs(dot(segmentNormal, startToPoint));\n  float currentRadiusRatio = dot(segmentNormal, startToPoint) * 2. / v_width;\n  currentLineMetric = mix(v_measureStart, v_measureEnd, lengthToPoint / segmentLength);\n\n  if (${this.discardExpression_}) { discard; }\n\n  vec4 color = ${this.strokeColorExpression_};\n  float capType = ${this.strokeCapExpression_};\n  float joinType = ${this.strokeJoinExpression_};\n  float segmentStartDistance = computeSegmentPointDistance(currentPoint, v_segmentStart, v_segmentEnd, v_width, v_angleStart, capType, joinType);\n  float segmentEndDistance = computeSegmentPointDistance(currentPoint, v_segmentEnd, v_segmentStart, v_width, v_angleEnd, capType, joinType);\n  float distance = max(\n    segmentDistanceField(currentPoint, v_segmentStart, v_segmentEnd, v_width),\n    max(segmentStartDistance, segmentEndDistance)\n  );\n  distance = max(distance, ${this.strokeDistanceFieldExpression_});\n  color.a *= smoothstep(0.5, -0.5, distance);\n  gl_FragColor = color;\n  gl_FragColor.a *= u_globalAlpha;\n  gl_FragColor.rgb *= gl_FragColor.a;\n  if (u_hitDetection > 0) {\n    if (gl_FragColor.a < 0.1) { discard; };\n    gl_FragColor = v_hitColor;\n  }\n}`:null}getFillVertexShader(){return this.hasFill_?`${qm}\n${this.uniforms_.map((function(t){return"uniform "+t+";"})).join("\n")}\nattribute vec2 a_position;\nattribute vec4 a_hitColor;\n${this.attributes_.map((function(t){return"attribute "+t+";"})).join("\n")}\nvarying vec4 v_hitColor;\n${this.varyings_.map((function(t){return"varying "+t.type+" "+t.name+";"})).join("\n")}\n${this.vertexShaderFunctions_.join("\n")}\nvoid main(void) {\n  gl_Position = u_projectionMatrix * vec4(a_position, u_depth, 1.0);\n  v_hitColor = a_hitColor;\n${this.varyings_.map((function(t){return"  "+t.name+" = "+t.expression+";"})).join("\n")}\n}`:null}getFillFragmentShader(){return this.hasFill_?`${qm}\n${this.uniforms_.map((function(t){return"uniform "+t+";"})).join("\n")}\nvarying vec4 v_hitColor;\n${this.varyings_.map((function(t){return"varying "+t.type+" "+t.name+";"})).join("\n")}\n${this.fragmentShaderFunctions_.join("\n")}\nvec2 pxToWorld(vec2 pxPos) {\n  vec2 screenPos = 2.0 * pxPos / u_viewportSizePx - 1.0;\n  return (u_screenToWorldMatrix * vec4(screenPos, 0.0, 1.0)).xy;\n}\n\nvec2 worldToPx(vec2 worldPos) {\n  vec4 screenPos = u_projectionMatrix * vec4(worldPos, 0.0, 1.0);\n  return (0.5 * screenPos.xy + 0.5) * u_viewportSizePx;\n}\n\nvoid main(void) {\n  vec2 pxPos = gl_FragCoord.xy / u_pixelRatio;\n  vec2 pxOrigin = worldToPx(u_patternOrigin);\n  #ifdef GL_FRAGMENT_PRECISION_HIGH\n  vec2 worldPos = pxToWorld(pxPos);\n  if (\n    abs(u_renderExtent[0] - u_renderExtent[2]) > 0.0 && (\n      worldPos[0] < u_renderExtent[0] ||\n      worldPos[1] < u_renderExtent[1] ||\n      worldPos[0] > u_renderExtent[2] ||\n      worldPos[1] > u_renderExtent[3]\n    )\n  ) {\n    discard;\n  }\n  #endif\n  if (${this.discardExpression_}) { discard; }\n  gl_FragColor = ${this.fillColorExpression_};\n  gl_FragColor.a *= u_globalAlpha;\n  gl_FragColor.rgb *= gl_FragColor.a;\n  if (u_hitDetection > 0) {\n    if (gl_FragColor.a < 0.1) { discard; };\n    gl_FragColor = v_hitColor;\n  }\n}`:null}}class t_{constructor(){this.globalCounter_=0,this.refToFeature_=new Map,this.uidToRef_=new Map,this.freeGlobalRef_=[],this.polygonBatch={entries:{},geometriesCount:0,verticesCount:0,ringsCount:0},this.pointBatch={entries:{},geometriesCount:0},this.lineStringBatch={entries:{},geometriesCount:0,verticesCount:0}}addFeatures(t,e){for(let i=0;i<t.length;i++)this.addFeature(t[i],e)}addFeature(t,e){let i=t.getGeometry();i&&(e&&(i=i.clone(),i.applyTransform(e)),this.addGeometry_(i,t))}clearFeatureEntryInPointBatch_(t){const e=z(t),i=this.pointBatch.entries[e];if(i)return this.pointBatch.geometriesCount-=i.flatCoordss.length,delete this.pointBatch.entries[e],i}clearFeatureEntryInLineStringBatch_(t){const e=z(t),i=this.lineStringBatch.entries[e];if(i)return this.lineStringBatch.verticesCount-=i.verticesCount,this.lineStringBatch.geometriesCount-=i.flatCoordss.length,delete this.lineStringBatch.entries[e],i}clearFeatureEntryInPolygonBatch_(t){const e=z(t),i=this.polygonBatch.entries[e];if(i)return this.polygonBatch.verticesCount-=i.verticesCount,this.polygonBatch.ringsCount-=i.ringsCount,this.polygonBatch.geometriesCount-=i.flatCoordss.length,delete this.polygonBatch.entries[e],i}addGeometry_(t,e){const i=t.getType();switch(i){case"GeometryCollection":{const i=t.getGeometriesArray();for(const t of i)this.addGeometry_(t,e);break}case"MultiPolygon":{const n=t;this.addCoordinates_(i,n.getFlatCoordinates(),n.getEndss(),e,z(e),n.getStride());break}case"MultiLineString":{const n=t;this.addCoordinates_(i,n.getFlatCoordinates(),n.getEnds(),e,z(e),n.getStride());break}case"MultiPoint":{const n=t;this.addCoordinates_(i,n.getFlatCoordinates(),null,e,z(e),n.getStride());break}case"Polygon":{const n=t;this.addCoordinates_(i,n.getFlatCoordinates(),n.getEnds(),e,z(e),n.getStride());break}case"Point":{const n=t;this.addCoordinates_(i,n.getFlatCoordinates(),null,e,z(e),n.getStride());break}case"LineString":case"LinearRing":{const n=t,r=n.getStride();this.addCoordinates_(i,n.getFlatCoordinates(),null,e,z(e),r,n.getLayout?.());break}}}addCoordinates_(t,e,i,n,r,s,o){let a;switch(t){case"MultiPolygon":{const t=i;for(let i=0,a=t.length;i<a;i++){let a=t[i];const l=i>0?t[i-1]:null,h=l?l[l.length-1]:0,c=a[a.length-1];a=h>0?a.map((t=>t-h)):a,this.addCoordinates_("Polygon",e.slice(h,c),a,n,r,s,o)}break}case"MultiLineString":{const t=i;for(let i=0,a=t.length;i<a;i++){const a=i>0?t[i-1]:0;this.addCoordinates_("LineString",e.slice(a,t[i]),null,n,r,s,o)}break}case"MultiPoint":for(let t=0,i=e.length;t<i;t+=s)this.addCoordinates_("Point",e.slice(t,t+2),null,n,r,null,null);break;case"Polygon":{const t=i;if(n instanceof Rd){const i=as(e,t);if(i.length>1)return void this.addCoordinates_("MultiPolygon",e,i,n,r,s,o)}this.polygonBatch.entries[r]||(this.polygonBatch.entries[r]=this.addRefToEntry_(r,{feature:n,flatCoordss:[],verticesCount:0,ringsCount:0,ringsVerticesCounts:[]})),a=e.length/s;const l=i.length,h=i.map(((t,e,i)=>e>0?(t-i[e-1])/s:t/s));this.polygonBatch.verticesCount+=a,this.polygonBatch.ringsCount+=l,this.polygonBatch.geometriesCount++,this.polygonBatch.entries[r].flatCoordss.push(function(t,e){if(2===e)return t;return t.filter(((t,i)=>i%e<2))}(e,s)),this.polygonBatch.entries[r].ringsVerticesCounts.push(h),this.polygonBatch.entries[r].verticesCount+=a,this.polygonBatch.entries[r].ringsCount+=l;for(let i=0,a=t.length;i<a;i++){const a=i>0?t[i-1]:0;this.addCoordinates_("LinearRing",e.slice(a,t[i]),null,n,r,s,o)}break}case"Point":this.pointBatch.entries[r]||(this.pointBatch.entries[r]=this.addRefToEntry_(r,{feature:n,flatCoordss:[]})),this.pointBatch.geometriesCount++,this.pointBatch.entries[r].flatCoordss.push(e);break;case"LineString":case"LinearRing":this.lineStringBatch.entries[r]||(this.lineStringBatch.entries[r]=this.addRefToEntry_(r,{feature:n,flatCoordss:[],verticesCount:0})),a=e.length/s,this.lineStringBatch.verticesCount+=a,this.lineStringBatch.geometriesCount++,this.lineStringBatch.entries[r].flatCoordss.push(function(t,e,i){if(3===e&&"XYM"===i)return t;if(4===e)return t.filter(((t,i)=>i%e!=2));if(3===e)return t.map(((t,i)=>i%e!=2?t:0));return new Array(1.5*t.length).fill(0).map(((e,i)=>i%3==2?0:t[Math.round(i/1.5)]))}(e,s,o)),this.lineStringBatch.entries[r].verticesCount+=a}}addRefToEntry_(t,e){const i=this.uidToRef_.get(t),n=i||this.freeGlobalRef_.pop()||++this.globalCounter_;return e.ref=n,i||(this.refToFeature_.set(n,e.feature),this.uidToRef_.set(t,n)),e}returnRef_(t,e){if(!t)throw new Error("This feature has no ref: "+e);this.refToFeature_.delete(t),this.uidToRef_.delete(e),this.freeGlobalRef_.push(t)}changeFeature(t){this.removeFeature(t);const e=t.getGeometry();e&&this.addGeometry_(e,t)}removeFeature(t){let e=this.clearFeatureEntryInPointBatch_(t);e=this.clearFeatureEntryInPolygonBatch_(t)||e,e=this.clearFeatureEntryInLineStringBatch_(t)||e,e&&this.returnRef_(e.ref,z(e.feature))}clear(){this.polygonBatch.entries={},this.polygonBatch.geometriesCount=0,this.polygonBatch.verticesCount=0,this.polygonBatch.ringsCount=0,this.lineStringBatch.entries={},this.lineStringBatch.geometriesCount=0,this.lineStringBatch.verticesCount=0,this.pointBatch.entries={},this.pointBatch.geometriesCount=0,this.globalCounter_=0,this.freeGlobalRef_=[],this.refToFeature_.clear(),this.uidToRef_.clear()}getFeatureFromRef(t){return this.refToFeature_.get(t)}isEmpty(){return 0===this.globalCounter_}filter(t){const e=new t_;for(const i of this.refToFeature_.values())t(i)&&e.addFeature(i);return e}}class e_ extends yp{constructor(t,e){super(t),this.batch_=new t_,this.styleRenderers_=e,this.buffers=[],this.maskVertices=new vp(Gf,Uf),this.setTile(t.tile)}generateMaskBuffer_(){const t=this.tile.getSourceTiles()[0].extent;this.maskVertices.fromArray([t[0],t[1],t[2],t[1],t[2],t[3],t[0],t[3]]),this.helper.flushBufferData(this.maskVertices)}uploadTile(){this.generateMaskBuffer_(),this.batch_.clear();const t=this.tile.getSourceTiles(),e=t.reduce(((t,e)=>t.concat(e.getFeatures())),[]);this.batch_.addFeatures(e);const i=tr([1,0,0,1,0,0],-t[0].extent[0],-t[0].extent[1]),n=this.styleRenderers_.map(((t,e)=>t.generateBuffers(this.batch_,i).then((t=>{this.buffers[e]=t}))));Promise.all(n).then((()=>{this.setReady()}))}disposeInternal(){this.buffers.forEach((t=>{this.disposeBuffers(t)})),super.disposeInternal()}disposeBuffers(t){const e=t=>{for(const e of t)e&&this.helper.deleteBuffer(e)};t.pointBuffers&&e(t.pointBuffers),t.lineStringBuffers&&e(t.lineStringBuffers),t.polygonBuffers&&e(t.polygonBuffers)}}function i_(t,e,i){return gm(e,i,Jl(),t)}function n_(t){const e=Fl(t);return[256*e[0]+e[1],256*e[2]+Math.round(255*e[3])]}function r_(t){return t===Bl||t===Xl?2:t===zl?4:1}function s_(t){const e=r_(t);return e>1?`vec${e}`:"float"}function o_(t){return(JSON.stringify(t).split("").reduce(((t,e)=>(t<<5)-t+e.charCodeAt(0)),0)>>>0).toString()}function a_(t,e,i,n){if(`${n}radius`in t&&"icon-"!==n){let r=i_(i,t[`${n}radius`],jl);if(`${n}radius2`in t){r=`max(${r}, ${i_(i,t[`${n}radius2`],jl)})`}`${n}stroke-width`in t&&(r=`(${r} + ${i_(i,t[`${n}stroke-width`],jl)} * 0.5)`),e.setSymbolSizeExpression(`vec2(${r} * 2. + 0.5)`)}if(`${n}scale`in t){const r=i_(i,t[`${n}scale`],Xl);e.setSymbolSizeExpression(`${e.getSymbolSizeExpression()} * ${r}`)}`${n}displacement`in t&&e.setSymbolOffsetExpression(i_(i,t[`${n}displacement`],zl)),`${n}rotation`in t&&e.setSymbolRotationExpression(i_(i,t[`${n}rotation`],jl)),`${n}rotate-with-view`in t&&e.setSymbolRotateWithView(!!t[`${n}rotate-with-view`])}function l_(t,e,i,n,r){let s="vec4(0.)";if(null!==e&&(s=e),null!==i&&null!==n){s=`mix(${i}, ${s}, ${`smoothstep(-${n} + 0.63, -${n} - 0.58, ${t})`})`}let o=`${s} * vec4(1.0, 1.0, 1.0, ${`(1.0 - smoothstep(-0.63, 0.58, ${t}))`})`;return null!==r&&(o=`${o} * vec4(1.0, 1.0, 1.0, ${r})`),o}function h_(t,e,i,n,r){const s=new Image;s.crossOrigin=void 0===t[`${n}cross-origin`]?"anonymous":t[`${n}cross-origin`],Ft("string"==typeof t[`${n}src`],`WebGL layers do not support expressions for the ${n}src style property`),s.src=t[`${n}src`],i[`u_texture${r}_size`]=()=>s.complete?[s.width,s.height]:[0,0],e.addUniform(`vec2 u_texture${r}_size`);const o=`u_texture${r}_size`;return i[`u_texture${r}`]=s,e.addUniform(`sampler2D u_texture${r}`),o}function c_(t,e,i,n,r){let s=i_(i,t[`${e}offset`],zl);if(`${e}offset-origin`in t)switch(t[`${e}offset-origin`]){case"top-right":s=`vec2(${n}.x, 0.) + ${r} * vec2(-1., 0.) + ${s} * vec2(-1., 1.)`;break;case"bottom-left":s=`vec2(0., ${n}.y) + ${r} * vec2(0., -1.) + ${s} * vec2(1., -1.)`;break;case"bottom-right":s=`${n} - ${r} - ${s}`}return s}function u_(t,e,i){const n={inFragmentShader:!1,variables:{},properties:{},functions:{},bandCount:0,featureId:!1,geometryType:!1},r={inFragmentShader:!1,variables:{},properties:{},functions:{},bandCount:0,featureId:!1,geometryType:!1,inFragmentShader:!0,variables:n.variables},s=new Qm,o={};if("icon-src"in t?function(t,e,i,n,r){let s="vec4(1.0)";"icon-color"in t&&(s=i_(r,t["icon-color"],Bl)),"icon-opacity"in t&&(s=`${s} * vec4(1.0, 1.0, 1.0, ${i_(r,t["icon-opacity"],jl)})`);const o=o_(t["icon-src"]),a=h_(t,e,i,"icon-",o);if(e.setSymbolColorExpression(`${s} * texture2D(u_texture${o}, v_texCoord)`).setSymbolSizeExpression(a),"icon-width"in t&&"icon-height"in t&&e.setSymbolSizeExpression(`vec2(${i_(n,t["icon-width"],jl)}, ${i_(n,t["icon-height"],jl)})`),"icon-offset"in t&&"icon-size"in t){const i=i_(n,t["icon-size"],zl),r=e.getSymbolSizeExpression();e.setSymbolSizeExpression(i);const s=c_(t,"icon-",n,"v_quadSizePx",i);e.setTextureCoordinateExpression(`(vec4((${s}).xyxy) + vec4(0., 0., ${i})) / (${r}).xyxy`)}if(a_(t,e,n,"icon-"),"icon-anchor"in t){const i=i_(n,t["icon-anchor"],zl);let r,s="1.0";"icon-scale"in t&&(s=i_(n,t["icon-scale"],Xl)),r="pixels"===t["icon-anchor-x-units"]&&"pixels"===t["icon-anchor-y-units"]?`${i} * ${s}`:"pixels"===t["icon-anchor-x-units"]?`${i} * vec2(vec2(${s}).x, v_quadSizePx.y)`:"pixels"===t["icon-anchor-y-units"]?`${i} * vec2(v_quadSizePx.x, vec2(${s}).x)`:`${i} * v_quadSizePx`;let o=`v_quadSizePx * vec2(0.5, -0.5) + ${r} * vec2(-1., 1.)`;if("icon-anchor-origin"in t)switch(t["icon-anchor-origin"]){case"top-right":o=`v_quadSizePx * -0.5 + ${r}`;break;case"bottom-left":o=`v_quadSizePx * 0.5 - ${r}`;break;case"bottom-right":o=`v_quadSizePx * vec2(-0.5, 0.5) + ${r} * vec2(1., -1.)`}e.setSymbolOffsetExpression(`${e.getSymbolOffsetExpression()} + ${o}`)}}(t,s,o,n,r):"shape-points"in t?function(t,e,i,n,r){r.functions.round="float round(float v) {\n  return sign(v) * floor(abs(v) + 0.5);\n}",r.functions.starDistanceField="float starDistanceField(vec2 point, float numPoints, float radius, float radius2, float angle) {\n  float startAngle = -PI * 0.5 + angle; // tip starts upwards and rotates clockwise with angle\n  float c = cos(startAngle);\n  float s = sin(startAngle);\n  vec2 pointRotated = vec2(c * point.x - s * point.y, s * point.x + c * point.y);\n  float alpha = TWO_PI / numPoints; // the angle of one sector\n  float beta = atan(pointRotated.y, pointRotated.x);\n  float gamma = round(beta / alpha) * alpha; // angle in sector\n  c = cos(-gamma);\n  s = sin(-gamma);\n  vec2 inSector = vec2(c * pointRotated.x - s * pointRotated.y, abs(s * pointRotated.x + c * pointRotated.y));\n  vec2 tipToPoint = inSector + vec2(-radius, 0.);\n  vec2 edgeNormal = vec2(radius2 * sin(alpha * 0.5), -radius2 * cos(alpha * 0.5) + radius);\n  return dot(normalize(edgeNormal), tipToPoint);\n}",r.functions.regularDistanceField="float regularDistanceField(vec2 point, float numPoints, float radius, float angle) {\n  float startAngle = -PI * 0.5 + angle; // tip starts upwards and rotates clockwise with angle\n  float c = cos(startAngle);\n  float s = sin(startAngle);\n  vec2 pointRotated = vec2(c * point.x - s * point.y, s * point.x + c * point.y);\n  float alpha = TWO_PI / numPoints; // the angle of one sector\n  float radiusIn = radius * cos(PI / numPoints);\n  float beta = atan(pointRotated.y, pointRotated.x);\n  float gamma = round((beta - alpha * 0.5) / alpha) * alpha + alpha * 0.5; // angle in sector from mid\n  c = cos(-gamma);\n  s = sin(-gamma);\n  vec2 inSector = vec2(c * pointRotated.x - s * pointRotated.y, abs(s * pointRotated.x + c * pointRotated.y));\n  return inSector.x - radiusIn;\n}",a_(t,e,n,"shape-");let s=null;"shape-opacity"in t&&(s=i_(r,t["shape-opacity"],jl));let o="coordsPx";"shape-scale"in t&&(o=`coordsPx / ${i_(r,t["shape-scale"],Xl)}`);let a=null;"shape-fill-color"in t&&(a=i_(r,t["shape-fill-color"],Bl));let l=null;"shape-stroke-color"in t&&(l=i_(r,t["shape-stroke-color"],Bl));let h=null;"shape-stroke-width"in t&&(h=i_(r,t["shape-stroke-width"],jl));const c=i_(r,t["shape-points"],jl);let u,d="0.";"shape-angle"in t&&(d=i_(r,t["shape-angle"],jl));let g=i_(r,t["shape-radius"],jl);if(null!==h&&(g=`${g} + ${h} * 0.5`),"shape-radius2"in t){let e=i_(r,t["shape-radius2"],jl);null!==h&&(e=`${e} + ${h} * 0.5`),u=`starDistanceField(${o}, ${c}, ${g}, ${e}, ${d})`}else u=`regularDistanceField(${o}, ${c}, ${g}, ${d})`;const f=l_(u,a,l,h,s);e.setSymbolColorExpression(f)}(t,s,0,n,r):"circle-radius"in t&&function(t,e,i,n,r){r.functions.circleDistanceField="float circleDistanceField(vec2 point, float radius) {\n  return length(point) - radius;\n}",a_(t,e,n,"circle-");let s=null;"circle-opacity"in t&&(s=i_(r,t["circle-opacity"],jl));let o="coordsPx";"circle-scale"in t&&(o=`coordsPx / ${i_(r,t["circle-scale"],Xl)}`);let a=null;"circle-fill-color"in t&&(a=i_(r,t["circle-fill-color"],Bl));let l=null;"circle-stroke-color"in t&&(l=i_(r,t["circle-stroke-color"],Bl));let h=i_(r,t["circle-radius"],jl),c=null;"circle-stroke-width"in t&&(c=i_(r,t["circle-stroke-width"],jl),h=`(${h} + ${c} * 0.5)`);const u=l_(`circleDistanceField(${o}, ${h})`,a,l,c,s);e.setSymbolColorExpression(u)}(t,s,0,n,r),function(t,e,i,n,r){if("stroke-color"in t&&e.setStrokeColorExpression(i_(r,t["stroke-color"],Bl)),"stroke-pattern-src"in t){const n=o_(t["stroke-pattern-src"]),s=h_(t,e,i,"stroke-pattern-",n);let o=s,a="vec2(0.)";"stroke-pattern-offset"in t&&"stroke-pattern-size"in t&&(o=i_(r,t["stroke-pattern-size"],zl),a=c_(t,"stroke-pattern-",r,s,o));let l="0.";"stroke-pattern-spacing"in t&&(l=i_(r,t["stroke-pattern-spacing"],jl)),r.functions.sampleStrokePattern="vec4 sampleStrokePattern(sampler2D texture, vec2 textureSize, vec2 textureOffset, vec2 sampleSize, float spacingPx, float currentLengthPx, float currentRadiusRatio, float lineWidth) {\n  float currentLengthScaled = currentLengthPx * sampleSize.y / lineWidth;\n  float spacingScaled = spacingPx * sampleSize.y / lineWidth;\n  float uCoordPx = mod(currentLengthScaled, (sampleSize.x + spacingScaled));\n  // make sure that we're not sampling too close to the borders to avoid interpolation with outside pixels\n  uCoordPx = clamp(uCoordPx, 0.5, sampleSize.x - 0.5);\n  float vCoordPx = (-currentRadiusRatio * 0.5 + 0.5) * sampleSize.y;\n  vec2 texCoord = (vec2(uCoordPx, vCoordPx) + textureOffset) / textureSize;\n  return texture2D(texture, texCoord);\n}";const h=`u_texture${n}`;let c="1.";"stroke-color"in t&&(c=e.getStrokeColorExpression()),e.setStrokeColorExpression(`${c} * sampleStrokePattern(${h}, ${s}, ${a}, ${o}, ${l}, currentLengthPx, currentRadiusRatio, v_width)`)}if("stroke-width"in t&&e.setStrokeWidthExpression(i_(n,t["stroke-width"],jl)),"stroke-offset"in t&&e.setStrokeOffsetExpression(i_(n,t["stroke-offset"],jl)),"stroke-line-cap"in t&&e.setStrokeCapExpression(i_(n,t["stroke-line-cap"],Ul)),"stroke-line-join"in t&&e.setStrokeJoinExpression(i_(n,t["stroke-line-join"],Ul)),"stroke-miter-limit"in t&&e.setStrokeMiterLimitExpression(i_(n,t["stroke-miter-limit"],jl)),"stroke-line-dash"in t){r.functions.getSingleDashDistance=`float getSingleDashDistance(float distance, float radius, float dashOffset, float dashLength, float dashLengthTotal, float capType) {\n  float localDistance = mod(distance, dashLengthTotal);\n  float distanceSegment = abs(localDistance - dashOffset - dashLength * 0.5) - dashLength * 0.5;\n  distanceSegment = min(distanceSegment, dashLengthTotal - localDistance);\n  if (capType == ${om("square")}) {\n    distanceSegment -= v_width * 0.5;\n  } else if (capType == ${om("round")}) {\n    distanceSegment = min(distanceSegment, sqrt(distanceSegment * distanceSegment + radius * radius) - v_width * 0.5);\n  }\n  return distanceSegment;\n}`;let i=t["stroke-line-dash"].map((t=>i_(r,t,jl)));i.length%2==1&&(i=[...i,...i]);let s="0.";"stroke-line-dash-offset"in t&&(s=i_(n,t["stroke-line-dash-offset"],jl));const o=`dashDistanceField_${o_(t["stroke-line-dash"])}`,a=i.map(((t,e)=>`float dashLength${e} = ${t};`)),l=i.map(((t,e)=>`dashLength${e}`)).join(" + ");let h="0.",c=`getSingleDashDistance(distance, radius, ${h}, dashLength0, totalDashLength, capType)`;for(let t=2;t<i.length;t+=2)h=`${h} + dashLength${t-2} + dashLength${t-1}`,c=`min(${c}, getSingleDashDistance(distance, radius, ${h}, dashLength${t}, totalDashLength, capType))`;r.functions[o]=`float ${o}(float distance, float radius, float capType) {\n  ${a.join("\n  ")}\n  float totalDashLength = ${l};\n  return ${c};\n}`,e.setStrokeDistanceFieldExpression(`${o}(currentLengthPx + ${s}, currentRadiusPx, capType)`)}}(t,s,o,n,r),function(t,e,i,n,r){if("fill-color"in t&&e.setFillColorExpression(i_(r,t["fill-color"],Bl)),"fill-pattern-src"in t){const n=o_(t["fill-pattern-src"]),s=h_(t,e,i,"fill-pattern-",n);let o=s,a="vec2(0.)";"fill-pattern-offset"in t&&"fill-pattern-size"in t&&(o=i_(r,t["fill-pattern-size"],zl),a=c_(t,"fill-pattern-",r,s,o)),r.functions.sampleFillPattern="vec4 sampleFillPattern(sampler2D texture, vec2 textureSize, vec2 textureOffset, vec2 sampleSize, vec2 pxOrigin, vec2 pxPosition) {\n  float scaleRatio = pow(2., mod(u_zoom + 0.5, 1.) - 0.5);\n  vec2 pxRelativePos = pxPosition - pxOrigin;\n  // rotate the relative position from origin by the current view rotation\n  pxRelativePos = vec2(pxRelativePos.x * cos(u_rotation) - pxRelativePos.y * sin(u_rotation), pxRelativePos.x * sin(u_rotation) + pxRelativePos.y * cos(u_rotation));\n  // sample position is computed according to the sample offset & size\n  vec2 samplePos = mod(pxRelativePos / scaleRatio, sampleSize);\n  // also make sure that we're not sampling too close to the borders to avoid interpolation with outside pixels\n  samplePos = clamp(samplePos, vec2(0.5), sampleSize - vec2(0.5));\n  samplePos.y = sampleSize.y - samplePos.y; // invert y axis so that images appear upright\n  return texture2D(texture, (samplePos + textureOffset) / textureSize);\n}";const l=`u_texture${n}`;let h="1.";"fill-color"in t&&(h=e.getFillColorExpression()),e.setFillColorExpression(`${h} * sampleFillPattern(${l}, ${s}, ${a}, ${o}, pxOrigin, pxPos)`)}}(t,s,o,0,r),i){const t=i_(r,i,Gl);s.setFragmentDiscardExpression(`!${t}`)}for(const t in r.variables){const i=r.variables[t],n=am(i.name);let a=s_(i.type);i.type===Bl&&(a="vec4"),s.addUniform(`${a} ${n}`),o[n]=()=>{const t=e[i.name];return"number"==typeof t?t:"boolean"==typeof t?t?1:0:i.type===Bl?Fl(t||"#eee"):"string"==typeof t?sm(t):t}}for(const t in r.properties){const e=r.properties[t];n.properties[t]||(n.properties[t]=e);let i=s_(e.type),o=`a_prop_${e.name}`;e.type===Bl&&(i="vec4",o=`unpackColor(${o})`,s.addVertexShaderFunction("vec4 unpackColor(vec2 packedColor) {\n  return vec4(\n    fract(floor(packedColor[0] / 256.0) / 256.0),\n    fract(packedColor[0] / 256.0),\n    fract(floor(packedColor[1] / 256.0) / 256.0),\n    fract(packedColor[1] / 256.0)\n  );\n}")),s.addVarying(`v_prop_${e.name}`,i,o)}for(const t in n.properties){const e=n.properties[t];s.addAttribute(`${s_(e.type)} a_prop_${e.name}`)}for(const t in n.functions)s.addVertexShaderFunction(n.functions[t]);for(const t in r.functions)s.addFragmentShaderFunction(r.functions[t]);const a={};for(const t in n.properties){const e=n.properties[t],i=t=>{const i=t.get(e.name);return e.type===Bl?n_([...Fl(i||"#eee")]):"string"==typeof i?sm(i):"boolean"==typeof i?i?1:0:i};a[`prop_${e.name}`]={size:r_(e.type),callback:i}}function l(t,e,i,o){const l=n[t],h=r[t];if(!l&&!h)return;const c=s_(i),u=r_(i);s.addAttribute(`${c} a_${e}`),h&&s.addVarying(`v_${e}`,c,`a_${e}`),a[e]={size:u,callback:o}}return l("geometryType",dm,Ul,(t=>sm(ch(t.getGeometry())))),l("featureId",um,Ul|jl,(t=>{const e=t.getId()??null;return"string"==typeof e?sm(e):e})),{builder:s,attributes:a,uniforms:o}}const d_=[512,512];function g_(t){const e=t.split(".")[1].replace(/-/g,"+").replace(/_/g,"/"),i=atob(e).split(""),n=i.length,r=new Array(n);for(let t=0;t<n;++t){const e=i[t];r[t]="%"+("00"+e.charCodeAt(0).toString(16)).slice(-2)}return JSON.parse(decodeURIComponent(r.join("")))}function f_(t){const e="http://www.opengis.net/def/crs/",i=t.getCode();return i.startsWith(e)?i:i.startsWith("EPSG:")?`${e}EPSG/0/${i.slice(5)}`:Pn(t,vn("EPSG:4326"))?`${e}EPSG/0/4326`:i}function p_(t,e){if(!e)return"";let i=e.toString();return e.name&&"function"!==e.name&&i.match(new RegExp("^"+e.name.replace("$","\\$")+"\\b"))&&(i="function "+i),`var ${t} = ${i};`}const m_={TEXTURE:"u_texture",VELOCITY_TEXTURE:"u_velocityTexture",POSITION_TEXTURE:"u_positionTexture",PARTICLE_COUNT_SQRT:"u_particleCountSqrt",MAX_SPEED:"u_maxSpeed",GAIN:"u_gain",OFFSET:"u_offset",IS_FLOAT:"u_isFloat",RANDOM_SEED:"u_randomSeed",SPEED_FACTOR:"u_speedFactor",DROP_RATE:"u_dropRate",DROP_RATE_BUMP:"u_dropRateBump",OPACITY:"u_opacity",ROTATION:Cp.ROTATION,VIEWPORT_SIZE_PX:Cp.VIEWPORT_SIZE_PX},__="a_position",y_="a_index",x_="v_position";class v_ extends Jp{constructor(t,e){super(t,{vertexShader:e.tileVertexShader,fragmentShader:e.tileFragmentShader,cacheSize:e.cacheSize,postProcesses:[{}],uniforms:{[m_.MAX_SPEED]:e.maxSpeed}}),this.particleColorFragmentShader_=e.particleColorFragmentShader,this.velocityTexture_=null,this.particleCountSqrt_=e.particles?Math.ceil(Math.sqrt(e.particles)):256,this.particleIndexBuffer_,this.quadBuffer_,this.particlePositionProgram_,this.particlePositionVertexShader_=e.particlePositionVertexShader,this.particlePositionFragmentShader_=e.particlePositionFragmentShader,this.previousPositionTexture_,this.nextPositionTexture_,this.particleColorProgram_,this.particleColorVertexShader_=e.particleColorVertexShader,this.particleColorFragmentShader_=e.particleColorFragmentShader,this.textureProgram_,this.textureVertexShader_=e.textureVertexShader,this.textureFragmentShader_=e.textureFragmentShader,this.previousTrailsTexture_,this.nextTrailsTexture_,this.fadeOpacity_=.996,this.maxSpeed_=e.maxSpeed,this.speedFactor_=e.speedFactor||.001,this.dropRate_=.003,this.dropRateBump_=.01,this.tempVec2_=[0,0],this.renderedWidth_=0,this.renderedHeight_=0}afterHelperCreated(){super.afterHelperCreated();const t=this.helper,e=t.getGL();this.framebuffer_=e.createFramebuffer();const i=this.particleCountSqrt_*this.particleCountSqrt_,n=new Float32Array(i);for(let t=0;t<i;++t)n[t]=t;const r=new vp(Gf,Uf);r.setArray(n),t.flushBufferData(r),this.particleIndexBuffer_=r;const s=new Float32Array([0,0,1,0,0,1,0,1,1,0,1,1]),o=new vp(Gf,Uf);o.setArray(s),t.flushBufferData(o),this.quadBuffer_=o;const a=new Uint8Array(4*i);for(let t=0;t<a.length;++t)a[t]=Math.floor(256*Math.random());this.previousPositionTexture_=t.createTexture([this.particleCountSqrt_,this.particleCountSqrt_],a,null,!0),this.nextPositionTexture_=t.createTexture([this.particleCountSqrt_,this.particleCountSqrt_],a,null,!0),this.particlePositionProgram_=t.getProgram(this.particlePositionFragmentShader_,this.particlePositionVertexShader_),this.particleColorProgram_=t.getProgram(this.particleColorFragmentShader_,this.particleColorVertexShader_),this.textureProgram_=t.getProgram(this.textureFragmentShader_,this.textureVertexShader_)}createSizeDependentTextures_(){const t=this.helper,e=t.getGL(),i=t.getCanvas(),n=i.width,r=i.height,s=new Uint8Array(n*r*4);this.nextTrailsTexture_&&e.deleteTexture(this.nextTrailsTexture_),this.nextTrailsTexture_=t.createTexture([n,r],s,null,!0),this.previousTrailsTexture_&&e.deleteTexture(this.previousTrailsTexture_),this.previousTrailsTexture_=t.createTexture([n,r],s,null,!0)}beforeFinalize(t){const e=this.helper,i=e.getGL(),n=e.getCanvas(),r=n.width,s=n.height;this.renderedWidth_==r&&this.renderedHeight_==s||this.createSizeDependentTextures_();const o=[r,s];this.velocityTexture_=e.createTexture(o,null,this.velocityTexture_),i.copyTexImage2D(i.TEXTURE_2D,0,i.RGBA,0,0,r,s,0),this.drawParticleTrails_(t),this.updateParticlePositions_(t),t.animate=!0,this.renderedWidth_=r,this.renderedHeight_=s}drawParticleTrails_(t){const e=this.helper,i=e.getGL();e.bindFrameBuffer(this.framebuffer_,this.nextTrailsTexture_),this.drawTexture_(this.previousTrailsTexture_,this.fadeOpacity_),this.drawParticleColor_(t),e.bindInitialFrameBuffer(),i.clearColor(0,0,0,0),i.clear(i.COLOR_BUFFER_BIT),i.enable(i.BLEND),i.blendFunc(i.SRC_ALPHA,i.ONE_MINUS_SRC_ALPHA),this.drawTexture_(this.nextTrailsTexture_,1),i.disable(i.BLEND);const n=this.nextTrailsTexture_;this.nextTrailsTexture_=this.previousTrailsTexture_,this.previousTrailsTexture_=n}drawTexture_(t,e){const i=this.helper,n=i.getGL();i.useProgram(this.textureProgram_),i.bindTexture(t,0,m_.TEXTURE),i.bindAttribute(this.quadBuffer_,__,2),this.helper.setUniformFloatValue(m_.OPACITY,e),n.drawArrays(n.TRIANGLES,0,6)}drawParticleColor_(t){const e=this.helper,i=e.getGL();e.useProgram(this.particleColorProgram_);const n=this.particleCountSqrt_*this.particleCountSqrt_;e.bindAttribute(this.particleIndexBuffer_,y_,1),e.bindTexture(this.previousPositionTexture_,0,m_.POSITION_TEXTURE),e.bindTexture(this.velocityTexture_,1,m_.VELOCITY_TEXTURE),this.helper.setUniformFloatValue(m_.PARTICLE_COUNT_SQRT,this.particleCountSqrt_);const r=this.tempVec2_;r[0]=Math.cos(-t.viewState.rotation),r[1]=Math.sin(-t.viewState.rotation),this.helper.setUniformFloatVec2(m_.ROTATION,r),this.helper.setUniformFloatValue(m_.MAX_SPEED,this.maxSpeed_),i.drawArrays(i.POINTS,0,n)}updateParticlePositions_(t){const e=this.helper,i=e.getGL();e.useProgram(this.particlePositionProgram_),i.viewport(0,0,this.particleCountSqrt_,this.particleCountSqrt_),e.bindFrameBuffer(this.framebuffer_,this.nextPositionTexture_),e.bindTexture(this.previousPositionTexture_,0,m_.POSITION_TEXTURE),e.bindTexture(this.velocityTexture_,1,m_.VELOCITY_TEXTURE),e.bindAttribute(this.quadBuffer_,__,2),e.setUniformFloatValue(m_.RANDOM_SEED,Math.random()),e.setUniformFloatValue(m_.SPEED_FACTOR,this.speedFactor_),e.setUniformFloatValue(m_.DROP_RATE,this.dropRate_),e.setUniformFloatValue(m_.DROP_RATE_BUMP,this.dropRateBump_);const n=this.tempVec2_;n[0]=Math.cos(-t.viewState.rotation),n[1]=Math.sin(-t.viewState.rotation),this.helper.setUniformFloatVec2(m_.ROTATION,n);const r=t.size;this.helper.setUniformFloatVec2(m_.VIEWPORT_SIZE_PX,[r[0],r[1]]),i.drawArrays(i.TRIANGLES,0,6);const s=this.nextPositionTexture_;this.nextPositionTexture_=this.previousPositionTexture_,this.previousPositionTexture_=s}}const E_="GENERATE_POLYGON_BUFFERS",S_="GENERATE_POINT_BUFFERS",w_="GENERATE_LINE_STRING_BUFFERS";function T_(){const t='const t="GENERATE_POLYGON_BUFFERS",e="GENERATE_POINT_BUFFERS",n="GENERATE_LINE_STRING_BUFFERS";function r(t,e,n=2){const r=e&&e.length,o=r?e[0]*n:t.length;let u=x(t,0,o,n,!0);const f=[];if(!u||u.next===u.prev)return f;let s,l,h;if(r&&(u=function(t,e,n,r){const o=[];for(let n=0,i=e.length;n<i;n++){const u=x(t,e[n]*r,n<i-1?e[n+1]*r:t.length,r,!1);u===u.next&&(u.steiner=!0),o.push(p(u))}o.sort(c);for(let t=0;t<o.length;t++)n=a(o[t],n);return n}(t,e,u,n)),t.length>80*n){s=1/0,l=1/0;let e=-1/0,r=-1/0;for(let x=n;x<o;x+=n){const n=t[x],o=t[x+1];n<s&&(s=n),o<l&&(l=o),n>e&&(e=n),o>r&&(r=o)}h=Math.max(e-s,r-l),h=0!==h?32767/h:0}return i(u,f,n,s,l,h,0),f}function x(t,e,n,r,x){let o;if(x===function(t,e,n,r){let x=0;for(let o=e,i=n-r;o<n;o+=r)x+=(t[i]-t[o])*(t[o+1]+t[i+1]),i=o;return x}(t,e,n,r)>0)for(let x=e;x<n;x+=r)o=I(x/r|0,t[x],t[x+1],o);else for(let x=n-r;x>=e;x-=r)o=I(x/r|0,t[x],t[x+1],o);return o&&m(o,o.next)&&(z(o),o=o.next),o}function o(t,e){if(!t)return t;e||(e=t);let n,r=t;do{if(n=!1,r.steiner||!m(r,r.next)&&0!==M(r.prev,r,r.next))r=r.next;else{if(z(r),r=e=r.prev,r===r.next)break;n=!0}}while(n||r!==e);return e}function i(t,e,n,r,x,c,a){if(!t)return;!a&&c&&function(t,e,n,r){let x=t;do{0===x.z&&(x.z=y(x.x,x.y,e,n,r)),x.prevZ=x.prev,x.nextZ=x.next,x=x.next}while(x!==t);x.prevZ.nextZ=null,x.prevZ=null,function(t){let e,n=1;do{let r,x=t;t=null;let o=null;for(e=0;x;){e++;let i=x,u=0;for(let t=0;t<n&&(u++,i=i.nextZ,i);t++);let f=n;for(;u>0||f>0&&i;)0!==u&&(0===f||!i||x.z<=i.z)?(r=x,x=x.nextZ,u--):(r=i,i=i.nextZ,f--),o?o.nextZ=r:t=r,r.prevZ=o,o=r;x=i}o.nextZ=null,n*=2}while(e>1)}(x)}(t,r,x,c);let h=t;for(;t.prev!==t.next;){const y=t.prev,p=t.next;if(c?f(t,r,x,c):u(t))e.push(y.i,t.i,p.i),z(t),t=p.next,h=p.next;else if((t=p)===h){a?1===a?i(t=s(o(t),e),e,n,r,x,c,2):2===a&&l(t,e,n,r,x,c):i(o(t),e,n,r,x,c,1);break}}}function u(t){const e=t.prev,n=t,r=t.next;if(M(e,n,r)>=0)return!1;const x=e.x,o=n.x,i=r.x,u=e.y,f=n.y,s=r.y,l=Math.min(x,o,i),c=Math.min(u,f,s),a=Math.max(x,o,i),h=Math.max(u,f,s);let y=r.next;for(;y!==e;){if(y.x>=l&&y.x<=a&&y.y>=c&&y.y<=h&&g(x,u,o,f,i,s,y.x,y.y)&&M(y.prev,y,y.next)>=0)return!1;y=y.next}return!0}function f(t,e,n,r){const x=t.prev,o=t,i=t.next;if(M(x,o,i)>=0)return!1;const u=x.x,f=o.x,s=i.x,l=x.y,c=o.y,a=i.y,h=Math.min(u,f,s),p=Math.min(l,c,a),v=Math.max(u,f,s),b=Math.max(l,c,a),m=y(h,p,e,n,r),Z=y(v,b,e,n,r);let d=t.prevZ,w=t.nextZ;for(;d&&d.z>=m&&w&&w.z<=Z;){if(d.x>=h&&d.x<=v&&d.y>=p&&d.y<=b&&d!==x&&d!==i&&g(u,l,f,c,s,a,d.x,d.y)&&M(d.prev,d,d.next)>=0)return!1;if(d=d.prevZ,w.x>=h&&w.x<=v&&w.y>=p&&w.y<=b&&w!==x&&w!==i&&g(u,l,f,c,s,a,w.x,w.y)&&M(w.prev,w,w.next)>=0)return!1;w=w.nextZ}for(;d&&d.z>=m;){if(d.x>=h&&d.x<=v&&d.y>=p&&d.y<=b&&d!==x&&d!==i&&g(u,l,f,c,s,a,d.x,d.y)&&M(d.prev,d,d.next)>=0)return!1;d=d.prevZ}for(;w&&w.z<=Z;){if(w.x>=h&&w.x<=v&&w.y>=p&&w.y<=b&&w!==x&&w!==i&&g(u,l,f,c,s,a,w.x,w.y)&&M(w.prev,w,w.next)>=0)return!1;w=w.nextZ}return!0}function s(t,e){let n=t;do{const r=n.prev,x=n.next.next;!m(r,x)&&Z(r,n,n.next,x)&&A(r,x)&&A(x,r)&&(e.push(r.i,n.i,x.i),z(n),z(n.next),n=t=x),n=n.next}while(n!==t);return o(n)}function l(t,e,n,r,x,u){let f=t;do{let t=f.next.next;for(;t!==f.prev;){if(f.i!==t.i&&b(f,t)){let s=E(f,t);return f=o(f,f.next),s=o(s,s.next),i(f,e,n,r,x,u,0),void i(s,e,n,r,x,u,0)}t=t.next}f=f.next}while(f!==t)}function c(t,e){let n=t.x-e.x;if(0===n&&(n=t.y-e.y,0===n)){n=(t.next.y-t.y)/(t.next.x-t.x)-(e.next.y-e.y)/(e.next.x-e.x)}return n}function a(t,e){const n=function(t,e){let n=e;const r=t.x,x=t.y;let o,i=-1/0;if(m(t,n))return n;do{if(m(t,n.next))return n.next;if(x<=n.y&&x>=n.next.y&&n.next.y!==n.y){const t=n.x+(x-n.y)*(n.next.x-n.x)/(n.next.y-n.y);if(t<=r&&t>i&&(i=t,o=n.x<n.next.x?n:n.next,t===r))return o}n=n.next}while(n!==e);if(!o)return null;const u=o,f=o.x,s=o.y;let l=1/0;n=o;do{if(r>=n.x&&n.x>=f&&r!==n.x&&v(x<s?r:i,x,f,s,x<s?i:r,x,n.x,n.y)){const e=Math.abs(x-n.y)/(r-n.x);A(n,t)&&(e<l||e===l&&(n.x>o.x||n.x===o.x&&h(o,n)))&&(o=n,l=e)}n=n.next}while(n!==u);return o}(t,e);if(!n)return e;const r=E(n,t);return o(r,r.next),o(n,n.next)}function h(t,e){return M(t.prev,t,e.prev)<0&&M(e.next,t,t.next)<0}function y(t,e,n,r,x){return(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=(t-n)*x|0)|t<<8))|t<<4))|t<<2))|t<<1))|(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=(e-r)*x|0)|e<<8))|e<<4))|e<<2))|e<<1))<<1}function p(t){let e=t,n=t;do{(e.x<n.x||e.x===n.x&&e.y<n.y)&&(n=e),e=e.next}while(e!==t);return n}function v(t,e,n,r,x,o,i,u){return(x-i)*(e-u)>=(t-i)*(o-u)&&(t-i)*(r-u)>=(n-i)*(e-u)&&(n-i)*(o-u)>=(x-i)*(r-u)}function g(t,e,n,r,x,o,i,u){return!(t===i&&e===u)&&v(t,e,n,r,x,o,i,u)}function b(t,e){return t.next.i!==e.i&&t.prev.i!==e.i&&!function(t,e){let n=t;do{if(n.i!==t.i&&n.next.i!==t.i&&n.i!==e.i&&n.next.i!==e.i&&Z(n,n.next,t,e))return!0;n=n.next}while(n!==t);return!1}(t,e)&&(A(t,e)&&A(e,t)&&function(t,e){let n=t,r=!1;const x=(t.x+e.x)/2,o=(t.y+e.y)/2;do{n.y>o!=n.next.y>o&&n.next.y!==n.y&&x<(n.next.x-n.x)*(o-n.y)/(n.next.y-n.y)+n.x&&(r=!r),n=n.next}while(n!==t);return r}(t,e)&&(M(t.prev,t,e.prev)||M(t,e.prev,e))||m(t,e)&&M(t.prev,t,t.next)>0&&M(e.prev,e,e.next)>0)}function M(t,e,n){return(e.y-t.y)*(n.x-e.x)-(e.x-t.x)*(n.y-e.y)}function m(t,e){return t.x===e.x&&t.y===e.y}function Z(t,e,n,r){const x=w(M(t,e,n)),o=w(M(t,e,r)),i=w(M(n,r,t)),u=w(M(n,r,e));return x!==o&&i!==u||(!(0!==x||!d(t,n,e))||(!(0!==o||!d(t,r,e))||(!(0!==i||!d(n,t,r))||!(0!==u||!d(n,e,r)))))}function d(t,e,n){return e.x<=Math.max(t.x,n.x)&&e.x>=Math.min(t.x,n.x)&&e.y<=Math.max(t.y,n.y)&&e.y>=Math.min(t.y,n.y)}function w(t){return t>0?1:t<0?-1:0}function A(t,e){return M(t.prev,t,t.next)<0?M(t,e,t.next)>=0&&M(t,t.prev,e)>=0:M(t,e,t.prev)<0||M(t,t.next,e)<0}function E(t,e){const n=F(t.i,t.x,t.y),r=F(e.i,e.x,e.y),x=t.next,o=e.prev;return t.next=e,e.prev=t,n.next=x,x.prev=n,r.next=n,n.prev=r,o.next=r,r.prev=o,r}function I(t,e,n,r){const x=F(t,e,n);return r?(x.next=r.next,x.prev=r,r.next.prev=x,r.next=x):(x.prev=x,x.next=x),x}function z(t){t.next.prev=t.prev,t.prev.next=t.next,t.prevZ&&(t.prevZ.nextZ=t.nextZ),t.nextZ&&(t.nextZ.prevZ=t.prevZ)}function F(t,e,n){return{i:t,x:e,y:n,prev:null,next:null,z:0,prevZ:null,nextZ:null,steiner:!1}}function P(t,e){const n=e[0],r=e[1];return e[0]=t[0]*n+t[2]*r+t[4],e[1]=t[1]*n+t[3]*r+t[5],e}function B(t,e){const n=(r=e)[0]*r[3]-r[1]*r[2];var r;!function(t,e){if(!t)throw new Error(e)}(0!==n,"Transformation matrix cannot be inverted");const x=e[0],o=e[1],i=e[2],u=e[3],f=e[4],s=e[5];return t[0]=u/n,t[1]=-o/n,t[2]=-i/n,t[3]=x/n,t[4]=(i*s-u*f)/n,t[5]=-(x*s-o*f)/n,t}new Array(6);const N=[],R={vertexPosition:0,indexPosition:0};function S(t,e,n,r,x){t[e+0]=n,t[e+1]=r,t[e+2]=x}function T(t,e,n,r,x,o){const i=3+x,u=t[e+0],f=t[e+1],s=N;s.length=x;for(let n=0;n<s.length;n++)s[n]=t[e+2+n];let l=o?o.vertexPosition:0,c=o?o.indexPosition:0;const a=l/i;return S(n,l,u,f,0),s.length&&n.set(s,l+3),l+=i,S(n,l,u,f,1),s.length&&n.set(s,l+3),l+=i,S(n,l,u,f,2),s.length&&n.set(s,l+3),l+=i,S(n,l,u,f,3),s.length&&n.set(s,l+3),l+=i,r[c++]=a,r[c++]=a+1,r[c++]=a+3,r[c++]=a+1,r[c++]=a+2,r[c++]=a+3,R.vertexPosition=l,R.indexPosition=c,R}function _(t,e,n,r,x,o,i,u,f,s,l){const c=10+u.length,a=o.length/c,h=[t[e+0],t[e+1]],y=[t[n],t[n+1]],p=t[e+2],v=t[n+2],g=P(f,[...h]),b=P(f,[...y]);function M(t,e,n){const r=Math.sqrt((e[0]-t[0])*(e[0]-t[0])+(e[1]-t[1])*(e[1]-t[1])),x=[(e[0]-t[0])/r,(e[1]-t[1])/r],o=[-x[1],x[0]],i=Math.sqrt((n[0]-t[0])*(n[0]-t[0])+(n[1]-t[1])*(n[1]-t[1])),u=[(n[0]-t[0])/i,(n[1]-t[1])/i],f=0===r||0===i?0:Math.acos((s=u[0]*x[0]+u[1]*x[1],l=-1,c=1,Math.min(Math.max(s,l),c)));var s,l,c;return u[0]*o[0]+u[1]*o[1]>0?f:2*Math.PI-f}let m=-1,Z=-1,d=l;const w=null!==x;if(null!==r){m=M(g,b,P(f,[...[t[r],t[r+1]]])),Math.cos(m)<=.985&&(d+=Math.tan((m-Math.PI)/2))}if(w){Z=M(b,g,P(f,[...[t[x],t[x+1]]])),Math.cos(Z)<=.985&&(d+=Math.tan((Math.PI-Z)/2))}function A(t,e){return 0===e?1e4*t:Math.sign(e)*(1e4*t+Math.abs(e))}return o.push(h[0],h[1],p,y[0],y[1],v,m,Z,s,A(0,l)),o.push(...u),o.push(h[0],h[1],p,y[0],y[1],v,m,Z,s,A(1,l)),o.push(...u),o.push(h[0],h[1],p,y[0],y[1],v,m,Z,s,A(2,l)),o.push(...u),o.push(h[0],h[1],p,y[0],y[1],v,m,Z,s,A(3,l)),o.push(...u),i.push(a,a+1,a+2,a+1,a+3,a+2),{length:s+Math.sqrt((b[0]-g[0])*(b[0]-g[0])+(b[1]-g[1])*(b[1]-g[1])),angle:d}}function O(t,e,n,x,o){const i=2+o;let u=e;const f=t.slice(u,u+o);u+=o;const s=t[u++];let l=0;const c=new Array(s-1);for(let e=0;e<s;e++)l+=t[u++],e<s-1&&(c[e]=l);const a=t.slice(u,u+2*l),h=r(a,c,2);for(let t=0;t<h.length;t++)x.push(h[t]+n.length/i);for(let t=0;t<a.length;t+=2)n.push(a[t],a[t+1],...f);return u+2*l}const U=self;U.onmessage=r=>{const x=r.data;switch(x.type){case e:{const t=3,e=2,n=x.customAttributesSize,r=e+n,o=new Float32Array(x.renderInstructions),i=o.length/r,u=4*i*(n+t),f=new Uint32Array(6*i),s=new Float32Array(u);let l;for(let t=0;t<o.length;t+=r)l=T(o,t,s,f,n,l);const c=Object.assign({vertexBuffer:s.buffer,indexBuffer:f.buffer,renderInstructions:o.buffer},x);U.postMessage(c,[s.buffer,f.buffer,o.buffer]);break}case n:{const t=[],e=[],n=x.customAttributesSize,r=3,o=new Float32Array(x.renderInstructions);let i=0;const u=[1,0,0,1,0,0];let f,s;for(B(u,x.renderInstructionsTransform);i<o.length;){s=Array.from(o.slice(i,i+n)),i+=n,f=o[i++];const x=i,l=i+(f-1)*r,c=o[x]===o[l]&&o[x+1]===o[l+1];let a=0,h=0;for(let n=0;n<f-1;n++){let y=null;n>0?y=i+(n-1)*r:c&&(y=l-r);let p=null;n<f-2?p=i+(n+2)*r:c&&(p=x+r);const v=_(o,i+n*r,i+(n+1)*r,y,p,t,e,s,u,a,h);a=v.length,h=v.angle}i+=f*r}const l=Uint32Array.from(e),c=Float32Array.from(t),a=Object.assign({vertexBuffer:c.buffer,indexBuffer:l.buffer,renderInstructions:o.buffer},x);U.postMessage(a,[c.buffer,l.buffer,o.buffer]);break}case t:{const t=[],e=[],n=x.customAttributesSize,r=new Float32Array(x.renderInstructions);let o=0;for(;o<r.length;)o=O(r,o,t,e,n);const i=Uint32Array.from(e),u=Float32Array.from(t),f=Object.assign({vertexBuffer:u.buffer,indexBuffer:i.buffer,renderInstructions:r.buffer},x);U.postMessage(f,[u.buffer,i.buffer,r.buffer]);break}}};';return new Worker("undefined"==typeof Blob?"data:application/javascript;base64,"+Buffer.from(t,"binary").toString("base64"):URL.createObjectURL(new Blob([t],{type:"application/javascript"})))}function C_(t,e){const i=t.viewState.projection,n=e.getSource().getWrapX()&&i.canWrapX(),r=i.getExtent(),s=t.extent,o=n?fe(r):null,a=n?Math.ceil((s[2]-r[2])/o)+1:1;return[n?Math.floor((s[0]-r[0])/o):0,a,o]}class R_ extends Up{constructor(t,e){const i=e.uniforms||{},n=[1,0,0,1,0,0];i[Cp.PROJECTION_MATRIX]=n,super(t,{uniforms:i,postProcesses:e.postProcesses}),this.sourceRevision_=-1,this.verticesBuffer_=new vp(Gf,Bf),this.indicesBuffer_=new vp(jf,Bf),this.vertexShader_=e.vertexShader,this.fragmentShader_=e.fragmentShader,this.program_,this.hitDetectionEnabled_=e.hitDetectionEnabled??!0;const r=e.attributes?e.attributes.map((function(t){return{name:"a_"+t.name,size:1,type:Rp.FLOAT}})):[];this.attributes=[{name:"a_position",size:2,type:Rp.FLOAT},{name:"a_index",size:1,type:Rp.FLOAT}],this.hitDetectionEnabled_&&(this.attributes.push({name:"a_hitColor",size:4,type:Rp.FLOAT}),this.attributes.push({name:"a_featureUid",size:1,type:Rp.FLOAT})),this.attributes.push(...r),this.customAttributes=e.attributes?e.attributes:[],this.previousExtent_=[1/0,1/0,-1/0,-1/0],this.currentTransform_=n,this.renderTransform_=[1,0,0,1,0,0],this.invertRenderTransform_=[1,0,0,1,0,0],this.renderInstructions_=new Float32Array(0),this.hitRenderTarget_,this.lastSentId=0,this.worker_=T_(),this.worker_.addEventListener("message",(t=>{const e=t.data;if(e.type===S_){const i=e.projectionTransform;this.verticesBuffer_.fromArrayBuffer(e.vertexBuffer),this.helper.flushBufferData(this.verticesBuffer_),this.indicesBuffer_.fromArrayBuffer(e.indexBuffer),this.helper.flushBufferData(this.indicesBuffer_),this.renderTransform_=i,ir(this.invertRenderTransform_,this.renderTransform_),this.renderInstructions_=new Float32Array(t.data.renderInstructions),e.id===this.lastSentId&&(this.ready=!0),this.getLayer().changed()}})),this.featureCache_={},this.featureCount_=0;const s=this.getLayer().getSource();this.sourceListenKeys_=[D(s,Id,this.handleSourceFeatureAdded_,this),D(s,Ld,this.handleSourceFeatureChanged_,this),D(s,Md,this.handleSourceFeatureDelete_,this),D(s,Fd,this.handleSourceFeatureClear_,this)],s.forEachFeature((t=>{const e=t.getGeometry();e&&"Point"===e.getType()&&(this.featureCache_[z(t)]={feature:t,properties:t.getProperties(),flatCoordinates:e.getFlatCoordinates()},this.featureCount_++)}))}afterHelperCreated(){this.program_=this.helper.getProgram(this.fragmentShader_,this.vertexShader_),this.hitDetectionEnabled_&&(this.hitRenderTarget_=new Dp(this.helper)),this.verticesBuffer_.getArray()&&this.helper.flushBufferData(this.verticesBuffer_),this.indicesBuffer_.getArray()&&this.helper.flushBufferData(this.indicesBuffer_)}handleSourceFeatureAdded_(t){const e=t.feature,i=e.getGeometry();i&&"Point"===i.getType()&&(this.featureCache_[z(e)]={feature:e,properties:e.getProperties(),flatCoordinates:i.getFlatCoordinates()},this.featureCount_++)}handleSourceFeatureChanged_(t){const e=t.feature,i=z(e),n=this.featureCache_[i],r=e.getGeometry();n?r&&"Point"===r.getType()?(n.properties=e.getProperties(),n.flatCoordinates=r.getFlatCoordinates()):(delete this.featureCache_[i],this.featureCount_--):r&&"Point"===r.getType()&&(this.featureCache_[i]={feature:e,properties:e.getProperties(),flatCoordinates:r.getFlatCoordinates()},this.featureCount_++)}handleSourceFeatureDelete_(t){const e=z(t.feature);e in this.featureCache_&&(delete this.featureCache_[e],this.featureCount_--)}handleSourceFeatureClear_(){this.featureCache_={},this.featureCount_=0}renderFrame(t){const e=this.helper.getGL();this.preRender(e,t);const[i,n,r]=C_(t,this.getLayer());this.renderWorlds(t,!1,i,n,r),this.helper.finalizeDraw(t,this.dispatchPreComposeEvent,this.dispatchPostComposeEvent),this.hitDetectionEnabled_&&(this.renderWorlds(t,!0,i,n,r),this.hitRenderTarget_.clearCachedData()),this.postRender(e,t);return this.helper.getCanvas()}prepareFrameInternal(t){const e=this.getLayer(),i=e.getSource(),n=t.viewState,r=!t.viewHints[eo]&&!t.viewHints[io],s=!Yt(this.previousExtent_,t.extent),o=this.sourceRevision_<i.getRevision();if(o&&(this.sourceRevision_=i.getRevision()),r&&(s||o)){const r=n.projection,s=n.resolution,o=e instanceof Ic?e.getRenderBuffer():0,a=Nt(t.extent,o*s);i.loadFeatures(a,s,r),this.rebuildBuffers_(t),this.previousExtent_=t.extent.slice()}return this.helper.useProgram(this.program_,t),this.helper.prepareDraw(t),this.helper.bindBuffer(this.verticesBuffer_),this.helper.bindBuffer(this.indicesBuffer_),this.helper.enableAttributes(this.attributes),!0}rebuildBuffers_(t){const e=[1,0,0,1,0,0];this.helper.makeProjectionTransform(t,e);const i=Nn(),n=(this.hitDetectionEnabled_?7:2)+this.customAttributes.length,r=n*this.featureCount_,s=this.renderInstructions_&&this.renderInstructions_.length===r?this.renderInstructions_:new Float32Array(r);this.renderInstructions_=null;let o=[];const a=[];let l=-1;const h=t.viewState.projection;for(const t in this.featureCache_){const n=this.featureCache_[t];if(i?o=Gn(n.flatCoordinates,h):(o[0]=n.flatCoordinates[0],o[1]=n.flatCoordinates[1]),qn(e,o),s[++l]=o[0],s[++l]=o[1],this.hitDetectionEnabled_){const e=Zm(l+5,a);s[++l]=e[0],s[++l]=e[1],s[++l]=e[2],s[++l]=e[3],s[++l]=Number(t)}for(let t=0;t<this.customAttributes.length;t++){const e=this.customAttributes[t].callback(n.feature,n.properties);s[++l]=e}}const c={id:++this.lastSentId,type:S_,renderInstructions:s.buffer,customAttributesSize:n-2};c.projectionTransform=e,this.ready=!1,this.worker_.postMessage(c,[s.buffer])}forEachFeatureAtCoordinate(t,e,i,n,r){if(Ft(this.hitDetectionEnabled_,"`forEachFeatureAtCoordinate` cannot be used on a WebGL layer if the hit detection logic has been disabled using the `disableHitDetection: true` option."),!this.renderInstructions_||!this.hitDetectionEnabled_)return;const s=qn(e.coordinateToPixelTransform,t.slice()),o=this.hitRenderTarget_.readPixel(s[0]/2,s[1]/2),a=Ym([o[0]/255,o[1]/255,o[2]/255,o[3]/255]),l=this.renderInstructions_[a],h=Math.floor(l).toString(),c=this.getLayer().getSource().getFeatureByUid(h);return c?n(c,this.getLayer(),null):void 0}renderWorlds(t,e,i,n,r){let s=i;this.helper.useProgram(this.program_,t),e&&(this.hitRenderTarget_.setSize([Math.floor(t.size[0]/2),Math.floor(t.size[1]/2)]),this.helper.prepareDrawToRenderTarget(t,this.hitRenderTarget_,!0)),this.helper.bindBuffer(this.verticesBuffer_),this.helper.bindBuffer(this.indicesBuffer_),this.helper.enableAttributes(this.attributes);do{this.helper.makeProjectionTransform(t,this.currentTransform_),tr(this.currentTransform_,s*r,0),Yn(this.currentTransform_,this.invertRenderTransform_),this.helper.applyUniforms(t),this.helper.applyHitDetectionUniform(e);const i=this.indicesBuffer_.getSize();this.helper.drawElements(0,i)}while(++s<n)}disposeInternal(){this.worker_.terminate(),this.sourceListenKeys_.forEach((function(t){k(t)})),this.sourceListenKeys_=null,super.disposeInternal()}renderDeclutter(){}}function b_(t,e,i,n){let r=0;for(const s in e){const o=e[s],a=o.callback.call(i,i.feature);t[n+r++]=a?.[0]??a,o.size&&1!==o.size&&(t[n+r++]=a[1],o.size<3||(t[n+r++]=a[2],o.size<4||(t[n+r++]=a[3])))}return r}function P_(t){return Object.keys(t).reduce(((e,i)=>e+(t[i].size||1)),0)}function I_(t,e,i,n){const r=(2+P_(i))*t.geometriesCount;e&&e.length===r||(e=new Float32Array(r));const s=[];let o=0;for(const r in t.entries){const a=t.entries[r];for(let t=0,r=a.flatCoordss.length;t<r;t++)s[0]=a.flatCoordss[t][0],s[1]=a.flatCoordss[t][1],qn(n,s),e[o++]=s[0],e[o++]=s[1],o+=b_(e,i,a,o)}return e}function L_(t,e,i,n){const r=3*t.verticesCount+(1+P_(i))*t.geometriesCount;e&&e.length===r||(e=new Float32Array(r));const s=[];let o=0;for(const r in t.entries){const a=t.entries[r];for(let t=0,r=a.flatCoordss.length;t<r;t++){s.length=a.flatCoordss[t].length,or(a.flatCoordss[t],0,s.length,3,n,s,3),o+=b_(e,i,a,o),e[o++]=s.length/3;for(let t=0,i=s.length;t<i;t+=3)e[o++]=s[t],e[o++]=s[t+1],e[o++]=s[t+2]}}return e}function F_(t,e,i,n){const r=2*t.verticesCount+(1+P_(i))*t.geometriesCount+t.ringsCount;e&&e.length===r||(e=new Float32Array(r));const s=[];let o=0;for(const r in t.entries){const a=t.entries[r];for(let t=0,r=a.flatCoordss.length;t<r;t++){s.length=a.flatCoordss[t].length,or(a.flatCoordss[t],0,s.length,2,n,s),o+=b_(e,i,a,o),e[o++]=a.ringsVerticesCounts[t].length;for(let i=0,n=a.ringsVerticesCounts[t].length;i<n;i++)e[o++]=a.ringsVerticesCounts[t][i];for(let t=0,i=s.length;t<i;t+=2)e[o++]=s[t],e[o++]=s[t+1]}}return e}const M_=[];let A_;function O_(){return A_||(A_=T_()),A_}let D_=0;const N_="a_position",k_="a_index",G_="a_segmentStart",j_="a_segmentEnd",U_="a_measureStart",B_="a_measureEnd",z_="a_parameters",X_="a_joinAngles",V_="a_distance";class $_{constructor(t,e,i,n,r){this.helper_,this.hitDetectionEnabled_=!!n;let s=t;if(!("builder"in t)){const i=t,n=u_(i.style,e,i.filter);s={builder:n.builder,attributes:n.attributes,uniforms:n.uniforms}}this.fillProgram_,this.strokeProgram_,this.symbolProgram_,this.hasFill_=!!s.builder.getFillVertexShader(),this.hasFill_&&(this.fillVertexShader_=s.builder.getFillVertexShader(),this.fillFragmentShader_=s.builder.getFillFragmentShader()),this.hasStroke_=!!s.builder.getStrokeVertexShader(),this.hasStroke_&&(this.strokeVertexShader_=s.builder.getStrokeVertexShader(),this.strokeFragmentShader_=s.builder.getStrokeFragmentShader()),this.hasSymbol_=!!s.builder.getSymbolVertexShader(),this.hasSymbol_&&(this.symbolVertexShader_=s.builder.getSymbolVertexShader(),this.symbolFragmentShader_=s.builder.getSymbolFragmentShader()),this.featureFilter_=null,r&&(this.featureFilter_=this.computeFeatureFilter(r));const o=this.hitDetectionEnabled_?{hitColor:{callback(){return Zm(this.ref,M_)},size:4}}:{};this.customAttributes_=Object.assign({},o,s.attributes),this.uniforms_=s.uniforms;const a=Object.entries(this.customAttributes_).map((([t,e])=>({name:`a_${t}`,size:e.size||1,type:Rp.FLOAT})));this.polygonAttributesDesc_=[{name:N_,size:2,type:Rp.FLOAT},...a],this.lineStringAttributesDesc_=[{name:G_,size:2,type:Rp.FLOAT},{name:U_,size:1,type:Rp.FLOAT},{name:j_,size:2,type:Rp.FLOAT},{name:B_,size:1,type:Rp.FLOAT},{name:X_,size:2,type:Rp.FLOAT},{name:V_,size:1,type:Rp.FLOAT},{name:z_,size:1,type:Rp.FLOAT},...a],this.pointAttributesDesc_=[{name:N_,size:2,type:Rp.FLOAT},{name:k_,size:1,type:Rp.FLOAT},...a],this.setHelper(i)}computeFeatureFilter(t){const e=Jl();let i;try{i=dh(t,Gl,e)}catch{return null}if(e.mapState||e.variables.size>0)return null;const n={variables:{},properties:{},resolution:NaN,featureId:null,geometryType:""};return t=>{if(n.properties=t.getPropertiesInternal(),e.featureId){const e=t.getId();n.featureId=void 0!==e?e:null}return n.geometryType=ch(t.getGeometry()),i(n)}}async generateBuffers(t,e){let i=t;if(this.featureFilter_&&(i=i.filter(this.featureFilter_),i.isEmpty()))return null;const n=this.generateRenderInstructions_(i,e),[r,s,o]=await Promise.all([this.generateBuffersForType_(n.polygonInstructions,"Polygon",e),this.generateBuffersForType_(n.lineStringInstructions,"LineString",e),this.generateBuffersForType_(n.pointInstructions,"Point",e)]);return{polygonBuffers:r,lineStringBuffers:s,pointBuffers:o,invertVerticesTransform:ir([1,0,0,1,0,0],e)}}generateRenderInstructions_(t,e){return{polygonInstructions:this.hasFill_?F_(t.polygonBatch,new Float32Array(0),this.customAttributes_,e):null,lineStringInstructions:this.hasStroke_?L_(t.lineStringBatch,new Float32Array(0),this.customAttributes_,e):null,pointInstructions:this.hasSymbol_?I_(t.pointBatch,new Float32Array(0),this.customAttributes_,e):null}}generateBuffersForType_(t,e,i){if(null===t)return null;const n=D_++;let r;switch(e){case"Polygon":r=E_;break;case"LineString":r=w_;break;case"Point":r=S_}const s={id:n,type:r,renderInstructions:t.buffer,renderInstructionsTransform:i,customAttributesSize:P_(this.customAttributes_)},o=O_();return o.postMessage(s,[t.buffer]),t=null,new Promise((t=>{const e=i=>{const r=i.data;if(r.id!==n)return;if(o.removeEventListener("message",e),!this.helper_.getGL())return;const s=new vp(Gf,Bf).fromArrayBuffer(r.vertexBuffer),a=new vp(jf,Bf).fromArrayBuffer(r.indexBuffer);this.helper_.flushBufferData(s),this.helper_.flushBufferData(a),t([a,s])};o.addEventListener("message",e)}))}render(t,e,i){this.hasFill_&&this.renderInternal_(t.polygonBuffers[0],t.polygonBuffers[1],this.fillProgram_,this.polygonAttributesDesc_,e,i),this.hasStroke_&&this.renderInternal_(t.lineStringBuffers[0],t.lineStringBuffers[1],this.strokeProgram_,this.lineStringAttributesDesc_,e,i),this.hasSymbol_&&this.renderInternal_(t.pointBuffers[0],t.pointBuffers[1],this.symbolProgram_,this.pointAttributesDesc_,e,i)}renderInternal_(t,e,i,n,r,s){const o=t.getSize();0!==o&&(this.helper_.useProgram(i,r),this.helper_.bindBuffer(e),this.helper_.bindBuffer(t),this.helper_.enableAttributes(n),s(),this.helper_.drawElements(0,o))}setHelper(t,e=null){this.helper_=t,this.hasFill_&&(this.fillProgram_=this.helper_.getProgram(this.fillFragmentShader_,this.fillVertexShader_)),this.hasStroke_&&(this.strokeProgram_=this.helper_.getProgram(this.strokeFragmentShader_,this.strokeVertexShader_)),this.hasSymbol_&&(this.symbolProgram_=this.helper_.getProgram(this.symbolFragmentShader_,this.symbolVertexShader_)),this.helper_.addUniforms(this.uniforms_),e&&(e.polygonBuffers&&(this.helper_.flushBufferData(e.polygonBuffers[0]),this.helper_.flushBufferData(e.polygonBuffers[1])),e.lineStringBuffers&&(this.helper_.flushBufferData(e.lineStringBuffers[0]),this.helper_.flushBufferData(e.lineStringBuffers[1])),e.pointBuffers&&(this.helper_.flushBufferData(e.pointBuffers[0]),this.helper_.flushBufferData(e.pointBuffers[1])))}}const W_={...Cp,RENDER_EXTENT:"u_renderExtent",PATTERN_ORIGIN:"u_patternOrigin",GLOBAL_ALPHA:"u_globalAlpha"};class Z_ extends Up{constructor(t,e){super(t,{uniforms:{[W_.RENDER_EXTENT]:[0,0,0,0],[W_.PATTERN_ORIGIN]:[0,0],[W_.GLOBAL_ALPHA]:1},postProcesses:e.postProcesses}),this.hitDetectionEnabled_=!e.disableHitDetection,this.hitRenderTarget_,this.sourceRevision_=-1,this.previousExtent_=[1/0,1/0,-1/0,-1/0],this.currentTransform_=[1,0,0,1,0,0],this.tmpCoords_=[0,0],this.tmpTransform_=[1,0,0,1,0,0],this.tmpMat4_=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],this.currentFrameStateTransform_=[1,0,0,1,0,0],this.styleVariables_={},this.styles_=[],this.styleRenderers_=[],this.buffers_=[],this.applyOptions_(e),this.batch_=new t_,this.initialFeaturesAdded_=!1,this.sourceListenKeys_=null}addInitialFeatures_(t){const e=this.getLayer().getSource(),i=Nn();let n;i&&(n=In(i,t.viewState.projection)),this.batch_.addFeatures(e.getFeatures(),n),this.sourceListenKeys_=[D(e,Id,this.handleSourceFeatureAdded_.bind(this,n)),D(e,Ld,this.handleSourceFeatureChanged_,this),D(e,Md,this.handleSourceFeatureDelete_,this),D(e,Fd,this.handleSourceFeatureClear_,this)]}applyOptions_(t){this.styleVariables_=t.variables,this.styles_=Hm(t.style)}createRenderers_(){this.buffers_=[],this.styleRenderers_=this.styles_.map((t=>new $_(t,this.styleVariables_,this.helper,this.hitDetectionEnabled_,"filter"in t?t.filter:null)))}reset(t){this.applyOptions_(t),this.helper&&this.createRenderers_(),super.reset(t)}afterHelperCreated(){this.styleRenderers_.length?this.styleRenderers_.forEach(((t,e)=>t.setHelper(this.helper,this.buffers_[e]))):this.createRenderers_(),this.hitDetectionEnabled_&&(this.hitRenderTarget_=new Dp(this.helper))}handleSourceFeatureAdded_(t,e){const i=e.feature;this.batch_.addFeature(i,t)}handleSourceFeatureChanged_(t){const e=t.feature;this.batch_.changeFeature(e)}handleSourceFeatureDelete_(t){const e=t.feature;this.batch_.removeFeature(e)}handleSourceFeatureClear_(){this.batch_.clear()}applyUniforms_(t){Kn(this.tmpTransform_,this.currentFrameStateTransform_),Yn(this.tmpTransform_,t),this.helper.setUniformMatrixValue(W_.PROJECTION_MATRIX,jd(this.tmpMat4_,this.tmpTransform_)),ir(this.tmpTransform_,this.tmpTransform_),this.helper.setUniformMatrixValue(W_.SCREEN_TO_WORLD_MATRIX,jd(this.tmpMat4_,this.tmpTransform_)),this.tmpCoords_[0]=0,this.tmpCoords_[1]=0,ir(this.tmpTransform_,t),qn(this.tmpTransform_,this.tmpCoords_),this.helper.setUniformFloatVec2(W_.PATTERN_ORIGIN,this.tmpCoords_)}renderFrame(t){const e=this.helper.getGL();this.preRender(e,t);const[i,n,r]=C_(t,this.getLayer());this.helper.prepareDraw(t),this.renderWorlds(t,!1,i,n,r),this.helper.finalizeDraw(t,this.dispatchPreComposeEvent,this.dispatchPostComposeEvent);const s=this.helper.getCanvas();return this.hitDetectionEnabled_&&(this.renderWorlds(t,!0,i,n,r),this.hitRenderTarget_.clearCachedData()),this.postRender(e,t),s}prepareFrameInternal(t){this.initialFeaturesAdded_||(this.addInitialFeatures_(t),this.initialFeaturesAdded_=!0);const e=this.getLayer(),i=e.getSource(),n=t.viewState,r=!t.viewHints[eo]&&!t.viewHints[io],s=!Yt(this.previousExtent_,t.extent),o=this.sourceRevision_<i.getRevision();if(o&&(this.sourceRevision_=i.getRevision()),r&&(s||o)){const r=n.projection,s=n.resolution,o=e instanceof Ic?e.getRenderBuffer():0,a=Nt(t.extent,o*s),l=Nn();l?i.loadFeatures(jn(a,l),Bn(s,r),l):i.loadFeatures(a,s,r),this.ready=!1;const h=this.helper.makeProjectionTransform(t,[1,0,0,1,0,0]),c=this.styleRenderers_.map(((t,e)=>t.generateBuffers(this.batch_,h).then((t=>{this.buffers_[e]&&this.disposeBuffers(this.buffers_[e]),this.buffers_[e]=t}))));Promise.all(c).then((()=>{this.ready=!0,this.getLayer().changed()})),this.previousExtent_=t.extent.slice()}return!0}renderWorlds(t,e,i,n,r){let s=i;e&&(this.hitRenderTarget_.setSize([Math.floor(t.size[0]/2),Math.floor(t.size[1]/2)]),this.helper.prepareDrawToRenderTarget(t,this.hitRenderTarget_,!0));do{this.helper.makeProjectionTransform(t,this.currentFrameStateTransform_),tr(this.currentFrameStateTransform_,s*r,0);for(let i=0,n=this.styleRenderers_.length;i<n;i++){const n=this.styleRenderers_[i],r=this.buffers_[i];r&&n.render(r,t,(()=>{this.applyUniforms_(r.invertVerticesTransform),this.helper.applyHitDetectionUniform(e)}))}}while(++s<n)}forEachFeatureAtCoordinate(t,e,i,n,r){if(Ft(this.hitDetectionEnabled_,"`forEachFeatureAtCoordinate` cannot be used on a WebGL layer if the hit detection logic has been disabled using the `disableHitDetection: true` option."),!this.styleRenderers_.length||!this.hitDetectionEnabled_)return;const s=qn(e.coordinateToPixelTransform,t.slice()),o=this.hitRenderTarget_.readPixel(s[0]/2,s[1]/2),a=Ym([o[0]/255,o[1]/255,o[2]/255,o[3]/255]),l=this.batch_.getFeatureFromRef(a);return l?n(l,this.getLayer(),null):void 0}disposeBuffers(t){const e=t=>{for(const e of t)e&&this.helper.deleteBuffer(e)};t.pointBuffers&&e(t.pointBuffers),t.lineStringBuffers&&e(t.lineStringBuffers),t.polygonBuffers&&e(t.polygonBuffers)}disposeInternal(){this.buffers_.forEach((t=>{t&&this.disposeBuffers(t)})),this.sourceListenKeys_&&(this.sourceListenKeys_.forEach((function(t){k(t)})),this.sourceListenKeys_=null),super.disposeInternal()}}const Y_={...Bp,TILE_MASK_TEXTURE:"u_depthMask",TILE_ZOOM_LEVEL:"u_tileZoomLevel"},H_={POSITION:"a_position"};class K_ extends Yp{constructor(t,e){super(t,{cacheSize:e.cacheSize,uniforms:{[Y_.PATTERN_ORIGIN]:[0,0],[Y_.TILE_MASK_TEXTURE]:()=>this.tileMaskTarget_.getTexture()}}),this.hitDetectionEnabled_=!e.disableHitDetection,this.styles_=[],this.styleVariables_=e.variables||{},this.styleRenderers_=[],this.currentFrameStateTransform_=[1,0,0,1,0,0],this.tmpTransform_=[1,0,0,1,0,0],this.tmpMat4_=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],this.tileMaskTarget_=null,this.tileMaskIndices_=new vp(jf,Uf),this.tileMaskIndices_.fromArray([0,1,3,1,2,3]),this.tileMaskAttributes_=[{name:H_.POSITION,size:2,type:Rp.FLOAT}],this.tileMaskProgram_,this.applyOptions_(e)}reset(t){super.reset(t),this.applyOptions_(t),this.helper&&(this.createRenderers_(),this.initTileMask_())}applyOptions_(t){this.styles_=Hm(t.style)}createRenderers_(){function t(t){const e=t.getFragmentDiscardExpression(),i=`texture2D(${Y_.TILE_MASK_TEXTURE}, gl_FragCoord.xy / u_pixelRatio / u_viewportSizePx).r * 50. > ${Y_.TILE_ZOOM_LEVEL} + 0.5`;t.setFragmentDiscardExpression("false"!==e?`(${e}) || (${i})`:i),t.addUniform(`sampler2D ${Y_.TILE_MASK_TEXTURE}`),t.addUniform(`float ${Y_.TILE_ZOOM_LEVEL}`)}this.styleRenderers_=this.styles_.map((e=>{let i;if("builder"in e)t(e.builder),i=e;else{const n=u_(e.style,this.styleVariables_,e.filter);t(n.builder),i={builder:n.builder,attributes:n.attributes,uniforms:n.uniforms}}return new $_(i,this.styleVariables_,this.helper,this.hitDetectionEnabled_,"filter"in e?e.filter:null)}))}initTileMask_(){this.tileMaskTarget_=new Dp(this.helper);const t=(new Qm).setFillColorExpression(`vec4(${Y_.TILE_ZOOM_LEVEL} / 50., 0., 0., 1.)`).addUniform(`float ${Y_.TILE_ZOOM_LEVEL}`);this.tileMaskProgram_=this.helper.getProgram(t.getFillFragmentShader(),t.getFillVertexShader()),this.helper.flushBufferData(this.tileMaskIndices_)}afterHelperCreated(){this.createRenderers_(),this.initTileMask_()}createTileRepresentation(t){const e=new e_(t,this.styleRenderers_),i=()=>{e.ready&&(this.getLayer().changed(),e.removeEventListener(n,i))};return e.addEventListener(n,i),e}beforeTilesRender(t,e){super.beforeTilesRender(t,!0),this.helper.makeProjectionTransform(t,this.currentFrameStateTransform_)}beforeTilesMaskRender(t){this.helper.makeProjectionTransform(t,this.currentFrameStateTransform_);const e=t.pixelRatio,i=t.size;return this.tileMaskTarget_.setSize([i[0]*e,i[1]*e]),this.helper.prepareDrawToRenderTarget(t,this.tileMaskTarget_,!0,!0),this.helper.useProgram(this.tileMaskProgram_,t),Kn(this.tmpTransform_,this.currentFrameStateTransform_),this.helper.setUniformMatrixValue(Y_.PROJECTION_MATRIX,jd(this.tmpMat4_,this.tmpTransform_)),ir(this.tmpTransform_,this.currentFrameStateTransform_),this.helper.setUniformMatrixValue(Y_.SCREEN_TO_WORLD_MATRIX,jd(this.tmpMat4_,this.tmpTransform_)),!0}renderTileMask(t,e,i,n){if(!t.ready)return;this.helper.setUniformFloatValue(Y_.DEPTH,n),this.helper.setUniformFloatValue(Y_.TILE_ZOOM_LEVEL,e),this.helper.setUniformFloatVec4(Y_.RENDER_EXTENT,i),this.helper.setUniformFloatValue(Y_.GLOBAL_ALPHA,1),this.helper.bindBuffer(t.maskVertices),this.helper.bindBuffer(this.tileMaskIndices_),this.helper.enableAttributes(this.tileMaskAttributes_);const r=this.tileMaskIndices_.getSize();this.helper.drawElements(0,r)}applyUniforms_(t,e,i,n,r){Kn(this.tmpTransform_,this.currentFrameStateTransform_),Yn(this.tmpTransform_,i),this.helper.setUniformMatrixValue(Y_.PROJECTION_MATRIX,jd(this.tmpMat4_,this.tmpTransform_)),ir(this.tmpTransform_,this.currentFrameStateTransform_),this.helper.setUniformMatrixValue(Y_.SCREEN_TO_WORLD_MATRIX,jd(this.tmpMat4_,this.tmpTransform_)),this.helper.setUniformFloatValue(Y_.GLOBAL_ALPHA,t),this.helper.setUniformFloatValue(Y_.DEPTH,r),this.helper.setUniformFloatValue(Y_.TILE_ZOOM_LEVEL,n),this.helper.setUniformFloatVec4(Y_.RENDER_EXTENT,e)}renderTile(t,e,i,n,r,s,o,a,l,h,c){const u=ue(a,n,a),d=t.tile.getTileCoord()[0];for(let e=0,n=this.styleRenderers_.length;e<n;e++){const n=this.styleRenderers_[e],r=t.buffers[e];r&&n.render(r,i,(()=>{this.applyUniforms_(c,u,r.invertVerticesTransform,d,l)}))}}renderDeclutter(t){}disposeInternal(){super.disposeInternal()}}const q_=0,J_=1,Q_=2,ty=3,ey=4,iy=5,ny=6,ry=7,sy=8,oy=9,ay=10,ly=11,hy=12,cy=[sy],uy=[hy],dy=[J_],gy=[ty];class fy extends ru{constructor(t,e,i,n){super(),this.tolerance=t,this.maxExtent=e,this.pixelRatio=n,this.maxLineWidth=0,this.resolution=i,this.beginGeometryInstruction1_=null,this.beginGeometryInstruction2_=null,this.bufferedMaxExtent_=null,this.instructions=[],this.coordinates=[],this.tmpCoordinate_=[],this.hitDetectionInstructions=[],this.state={}}applyPixelRatio(t){const e=this.pixelRatio;return 1==e?t:t.map((function(t){return t*e}))}appendFlatPointCoordinates(t,e){const i=this.getBufferedMaxExtent(),n=this.tmpCoordinate_,r=this.coordinates;let s=r.length;for(let o=0,a=t.length;o<a;o+=e)n[0]=t[o],n[1]=t[o+1],jt(i,n)&&(r[s++]=n[0],r[s++]=n[1]);return s}appendFlatLineCoordinates(t,e,i,n,r,s){const o=this.coordinates;let a=o.length;const l=this.getBufferedMaxExtent();s&&(e+=n);let h=t[e],c=t[e+1];const u=this.tmpCoordinate_;let d,g,f,p=!0;for(d=e+n;d<i;d+=n)u[0]=t[d],u[1]=t[d+1],f=zt(l,u),f!==g?(p&&(o[a++]=h,o[a++]=c,p=!1),o[a++]=u[0],o[a++]=u[1]):f===Ot.INTERSECTING?(o[a++]=u[0],o[a++]=u[1],p=!1):p=!0,h=u[0],c=u[1],g=f;return(r&&p||d===e+n)&&(o[a++]=h,o[a++]=c),a}drawCustomCoordinates_(t,e,i,n,r){for(let s=0,o=i.length;s<o;++s){const o=i[s],a=this.appendFlatLineCoordinates(t,e,o,n,!1,!1);r.push(a),e=o}return e}drawCustom(t,e,i,n,r){this.beginGeometry(t,e,r);const s=t.getType(),o=t.getStride(),a=this.coordinates.length;let l,h,c,u,d;switch(s){case"MultiPolygon":l=t.getOrientedFlatCoordinates(),u=[];const e=t.getEndss();d=0;for(let t=0,i=e.length;t<i;++t){const i=[];d=this.drawCustomCoordinates_(l,d,e[t],o,i),u.push(i)}this.instructions.push([ey,a,u,t,i,Ar,r]),this.hitDetectionInstructions.push([ey,a,u,t,n||i,Ar,r]);break;case"Polygon":case"MultiLineString":c=[],l="Polygon"==s?t.getOrientedFlatCoordinates():t.getFlatCoordinates(),d=this.drawCustomCoordinates_(l,0,t.getEnds(),o,c),this.instructions.push([ey,a,c,t,i,Mr,r]),this.hitDetectionInstructions.push([ey,a,c,t,n||i,Mr,r]);break;case"LineString":case"Circle":l=t.getFlatCoordinates(),h=this.appendFlatLineCoordinates(l,0,l.length,o,!1,!1),this.instructions.push([ey,a,h,t,i,Fr,r]),this.hitDetectionInstructions.push([ey,a,h,t,n||i,Fr,r]);break;case"MultiPoint":l=t.getFlatCoordinates(),h=this.appendFlatPointCoordinates(l,o),h>a&&(this.instructions.push([ey,a,h,t,i,Fr,r]),this.hitDetectionInstructions.push([ey,a,h,t,n||i,Fr,r]));break;case"Point":l=t.getFlatCoordinates(),this.coordinates.push(l[0],l[1]),h=this.coordinates.length,this.instructions.push([ey,a,h,t,i,void 0,r]),this.hitDetectionInstructions.push([ey,a,h,t,n||i,void 0,r])}this.endGeometry(e)}beginGeometry(t,e,i){this.beginGeometryInstruction1_=[q_,e,0,t,i],this.instructions.push(this.beginGeometryInstruction1_),this.beginGeometryInstruction2_=[q_,e,0,t,i],this.hitDetectionInstructions.push(this.beginGeometryInstruction2_)}finish(){return{instructions:this.instructions,hitDetectionInstructions:this.hitDetectionInstructions,coordinates:this.coordinates}}reverseHitDetectionInstructions(){const t=this.hitDetectionInstructions;let e;t.reverse();const i=t.length;let n,r,s=-1;for(e=0;e<i;++e)n=t[e],r=n[0],r==ry?s=e:r==q_&&(n[2]=e,E(this.hitDetectionInstructions,s,e),s=-1)}fillStyleToState(t,e={}){if(t){const i=t.getColor();e.fillPatternScale=i&&"object"==typeof i&&"src"in i?this.pixelRatio:1,e.fillStyle=Sh(i||Th)}else e.fillStyle=void 0;return e}strokeStyleToState(t,e={}){if(t){const i=t.getColor();e.strokeStyle=Sh(i||Ih);const n=t.getLineCap();e.lineCap=void 0!==n?n:Ch;const r=t.getLineDash();e.lineDash=r?r.slice():Rh;const s=t.getLineDashOffset();e.lineDashOffset=s||0;const o=t.getLineJoin();e.lineJoin=void 0!==o?o:bh;const a=t.getWidth();e.lineWidth=void 0!==a?a:1;const l=t.getMiterLimit();e.miterLimit=void 0!==l?l:Ph,e.lineWidth>this.maxLineWidth&&(this.maxLineWidth=e.lineWidth,this.bufferedMaxExtent_=null)}else e.strokeStyle=void 0,e.lineCap=void 0,e.lineDash=null,e.lineDashOffset=void 0,e.lineJoin=void 0,e.lineWidth=void 0,e.miterLimit=void 0;return e}setFillStrokeStyle(t,e){const i=this.state;this.fillStyleToState(t,i),this.strokeStyleToState(e,i)}createFill(t){const e=t.fillStyle,i=[ay,e];return"string"!=typeof e&&i.push(t.fillPatternScale),i}applyStroke(t){this.instructions.push(this.createStroke(t))}createStroke(t){return[ly,t.strokeStyle,t.lineWidth*this.pixelRatio,t.lineCap,t.lineJoin,t.miterLimit,t.lineDash?this.applyPixelRatio(t.lineDash):null,t.lineDashOffset*this.pixelRatio]}updateFillStyle(t,e){const i=t.fillStyle;"string"==typeof i&&t.currentFillStyle==i||(void 0!==i&&this.instructions.push(e.call(this,t)),t.currentFillStyle=i)}updateStrokeStyle(t,e){const i=t.strokeStyle,n=t.lineCap,r=t.lineDash,s=t.lineDashOffset,o=t.lineJoin,a=t.lineWidth,l=t.miterLimit;(t.currentStrokeStyle!=i||t.currentLineCap!=n||r!=t.currentLineDash&&!w(t.currentLineDash,r)||t.currentLineDashOffset!=s||t.currentLineJoin!=o||t.currentLineWidth!=a||t.currentMiterLimit!=l)&&(void 0!==i&&e.call(this,t),t.currentStrokeStyle=i,t.currentLineCap=n,t.currentLineDash=r,t.currentLineDashOffset=s,t.currentLineJoin=o,t.currentLineWidth=a,t.currentMiterLimit=l)}endGeometry(t){this.beginGeometryInstruction1_[2]=this.instructions.length,this.beginGeometryInstruction1_=null,this.beginGeometryInstruction2_[2]=this.hitDetectionInstructions.length,this.beginGeometryInstruction2_=null;const e=[ry,t];this.instructions.push(e),this.hitDetectionInstructions.push(e)}getBufferedMaxExtent(){if(!this.bufferedMaxExtent_&&(this.bufferedMaxExtent_=kt(this.maxExtent),this.maxLineWidth>0)){const t=this.resolution*(this.maxLineWidth+1)/2;Nt(this.bufferedMaxExtent_,t,this.bufferedMaxExtent_)}return this.bufferedMaxExtent_}}class py extends fy{constructor(t,e,i,n){super(t,e,i,n),this.hitDetectionImage_=null,this.image_=null,this.imagePixelRatio_=void 0,this.anchorX_=void 0,this.anchorY_=void 0,this.height_=void 0,this.opacity_=void 0,this.originX_=void 0,this.originY_=void 0,this.rotateWithView_=void 0,this.rotation_=void 0,this.scale_=void 0,this.width_=void 0,this.declutterMode_=void 0,this.declutterImageWithText_=void 0}drawPoint(t,e,i){if(!this.image_||this.maxExtent&&!jt(this.maxExtent,t.getFlatCoordinates()))return;this.beginGeometry(t,e,i);const n=t.getFlatCoordinates(),r=t.getStride(),s=this.coordinates.length,o=this.appendFlatPointCoordinates(n,r);this.instructions.push([ny,s,o,this.image_,this.anchorX_*this.imagePixelRatio_,this.anchorY_*this.imagePixelRatio_,Math.ceil(this.height_*this.imagePixelRatio_),this.opacity_,this.originX_*this.imagePixelRatio_,this.originY_*this.imagePixelRatio_,this.rotateWithView_,this.rotation_,[this.scale_[0]*this.pixelRatio/this.imagePixelRatio_,this.scale_[1]*this.pixelRatio/this.imagePixelRatio_],Math.ceil(this.width_*this.imagePixelRatio_),this.declutterMode_,this.declutterImageWithText_]),this.hitDetectionInstructions.push([ny,s,o,this.hitDetectionImage_,this.anchorX_,this.anchorY_,this.height_,1,this.originX_,this.originY_,this.rotateWithView_,this.rotation_,this.scale_,this.width_,this.declutterMode_,this.declutterImageWithText_]),this.endGeometry(e)}drawMultiPoint(t,e,i){if(!this.image_)return;this.beginGeometry(t,e,i);const n=t.getFlatCoordinates(),r=[];for(let e=0,i=n.length;e<i;e+=t.getStride())this.maxExtent&&!jt(this.maxExtent,n.slice(e,e+2))||r.push(n[e],n[e+1]);const s=this.coordinates.length,o=this.appendFlatPointCoordinates(r,2);this.instructions.push([ny,s,o,this.image_,this.anchorX_*this.imagePixelRatio_,this.anchorY_*this.imagePixelRatio_,Math.ceil(this.height_*this.imagePixelRatio_),this.opacity_,this.originX_*this.imagePixelRatio_,this.originY_*this.imagePixelRatio_,this.rotateWithView_,this.rotation_,[this.scale_[0]*this.pixelRatio/this.imagePixelRatio_,this.scale_[1]*this.pixelRatio/this.imagePixelRatio_],Math.ceil(this.width_*this.imagePixelRatio_),this.declutterMode_,this.declutterImageWithText_]),this.hitDetectionInstructions.push([ny,s,o,this.hitDetectionImage_,this.anchorX_,this.anchorY_,this.height_,1,this.originX_,this.originY_,this.rotateWithView_,this.rotation_,this.scale_,this.width_,this.declutterMode_,this.declutterImageWithText_]),this.endGeometry(e)}finish(){return this.reverseHitDetectionInstructions(),this.anchorX_=void 0,this.anchorY_=void 0,this.hitDetectionImage_=null,this.image_=null,this.imagePixelRatio_=void 0,this.height_=void 0,this.scale_=void 0,this.opacity_=void 0,this.originX_=void 0,this.originY_=void 0,this.rotateWithView_=void 0,this.rotation_=void 0,this.width_=void 0,super.finish()}setImageStyle(t,e){const i=t.getAnchor(),n=t.getSize(),r=t.getOrigin();this.imagePixelRatio_=t.getPixelRatio(this.pixelRatio),this.anchorX_=i[0],this.anchorY_=i[1],this.hitDetectionImage_=t.getHitDetectionImage(),this.image_=t.getImage(this.pixelRatio),this.height_=n[1],this.opacity_=t.getOpacity(),this.originX_=r[0],this.originY_=r[1],this.rotateWithView_=t.getRotateWithView(),this.rotation_=t.getRotation(),this.scale_=t.getScaleArray(),this.width_=n[0],this.declutterMode_=t.getDeclutterMode(),this.declutterImageWithText_=e}}class my extends fy{constructor(t,e,i,n){super(t,e,i,n)}drawFlatCoordinates_(t,e,i,n){const r=this.coordinates.length,s=this.appendFlatLineCoordinates(t,e,i,n,!1,!1),o=[oy,r,s];return this.instructions.push(o),this.hitDetectionInstructions.push(o),i}drawLineString(t,e,i){const n=this.state,r=n.strokeStyle,s=n.lineWidth;if(void 0===r||void 0===s)return;this.updateStrokeStyle(n,this.applyStroke),this.beginGeometry(t,e,i),this.hitDetectionInstructions.push([ly,n.strokeStyle,n.lineWidth,n.lineCap,n.lineJoin,n.miterLimit,Rh,0],dy);const o=t.getFlatCoordinates(),a=t.getStride();this.drawFlatCoordinates_(o,0,o.length,a),this.hitDetectionInstructions.push(uy),this.endGeometry(e)}drawMultiLineString(t,e,i){const n=this.state,r=n.strokeStyle,s=n.lineWidth;if(void 0===r||void 0===s)return;this.updateStrokeStyle(n,this.applyStroke),this.beginGeometry(t,e,i),this.hitDetectionInstructions.push([ly,n.strokeStyle,n.lineWidth,n.lineCap,n.lineJoin,n.miterLimit,Rh,0],dy);const o=t.getEnds(),a=t.getFlatCoordinates(),l=t.getStride();let h=0;for(let t=0,e=o.length;t<e;++t)h=this.drawFlatCoordinates_(a,h,o[t],l);this.hitDetectionInstructions.push(uy),this.endGeometry(e)}finish(){const t=this.state;return null!=t.lastStroke&&t.lastStroke!=this.coordinates.length&&this.instructions.push(uy),this.reverseHitDetectionInstructions(),this.state=null,super.finish()}applyStroke(t){null!=t.lastStroke&&t.lastStroke!=this.coordinates.length&&(this.instructions.push(uy),t.lastStroke=this.coordinates.length),t.lastStroke=0,super.applyStroke(t),this.instructions.push(dy)}}class _y extends fy{constructor(t,e,i,n){super(t,e,i,n)}drawFlatCoordinatess_(t,e,i,n){const r=this.state,s=void 0!==r.fillStyle,o=void 0!==r.strokeStyle,a=i.length;this.instructions.push(dy),this.hitDetectionInstructions.push(dy);for(let r=0;r<a;++r){const s=i[r],a=this.coordinates.length,l=this.appendFlatLineCoordinates(t,e,s,n,!0,!o),h=[oy,a,l];this.instructions.push(h),this.hitDetectionInstructions.push(h),o&&(this.instructions.push(gy),this.hitDetectionInstructions.push(gy)),e=s}return s&&(this.instructions.push(cy),this.hitDetectionInstructions.push(cy)),o&&(this.instructions.push(uy),this.hitDetectionInstructions.push(uy)),e}drawCircle(t,e,i){const n=this.state,r=n.fillStyle,s=n.strokeStyle;if(void 0===r&&void 0===s)return;this.setFillStrokeStyles_(),this.beginGeometry(t,e,i),void 0!==n.fillStyle&&this.hitDetectionInstructions.push([ay,Th]),void 0!==n.strokeStyle&&this.hitDetectionInstructions.push([ly,n.strokeStyle,n.lineWidth,n.lineCap,n.lineJoin,n.miterLimit,Rh,0]);const o=t.getFlatCoordinates(),a=t.getStride(),l=this.coordinates.length;this.appendFlatLineCoordinates(o,0,o.length,a,!1,!1);const h=[Q_,l];this.instructions.push(dy,h),this.hitDetectionInstructions.push(dy,h),void 0!==n.fillStyle&&(this.instructions.push(cy),this.hitDetectionInstructions.push(cy)),void 0!==n.strokeStyle&&(this.instructions.push(uy),this.hitDetectionInstructions.push(uy)),this.endGeometry(e)}drawPolygon(t,e,i){const n=this.state,r=n.fillStyle,s=n.strokeStyle;if(void 0===r&&void 0===s)return;this.setFillStrokeStyles_(),this.beginGeometry(t,e,i),void 0!==n.fillStyle&&this.hitDetectionInstructions.push([ay,Th]),void 0!==n.strokeStyle&&this.hitDetectionInstructions.push([ly,n.strokeStyle,n.lineWidth,n.lineCap,n.lineJoin,n.miterLimit,Rh,0]);const o=t.getEnds(),a=t.getOrientedFlatCoordinates(),l=t.getStride();this.drawFlatCoordinatess_(a,0,o,l),this.endGeometry(e)}drawMultiPolygon(t,e,i){const n=this.state,r=n.fillStyle,s=n.strokeStyle;if(void 0===r&&void 0===s)return;this.setFillStrokeStyles_(),this.beginGeometry(t,e,i),void 0!==n.fillStyle&&this.hitDetectionInstructions.push([ay,Th]),void 0!==n.strokeStyle&&this.hitDetectionInstructions.push([ly,n.strokeStyle,n.lineWidth,n.lineCap,n.lineJoin,n.miterLimit,Rh,0]);const o=t.getEndss(),a=t.getOrientedFlatCoordinates(),l=t.getStride();let h=0;for(let t=0,e=o.length;t<e;++t)h=this.drawFlatCoordinatess_(a,h,o[t],l);this.endGeometry(e)}finish(){this.reverseHitDetectionInstructions(),this.state=null;const t=this.tolerance;if(0!==t){const e=this.coordinates;for(let i=0,n=e.length;i<n;++i)e[i]=kr(e[i],t)}return super.finish()}setFillStrokeStyles_(){const t=this.state;void 0!==t.fillStyle&&this.updateFillStyle(t,this.createFill),void 0!==t.strokeStyle&&this.updateStrokeStyle(t,this.applyStroke)}}function yy(t,e,i,n,r){const s=[];let o=i,a=0,l=e.slice(i,2);for(;a<t&&o+r<n;){const[i,n]=l.slice(-2),h=e[o+r],c=e[o+r+1],u=Math.sqrt((h-i)*(h-i)+(c-n)*(c-n));if(a+=u,a>=t){const e=(t-a+u)/u,d=Le(i,h,e),g=Le(n,c,e);l.push(d,g),s.push(l),l=[d,g],a==t&&(o+=r),a=0}else if(a<t)l.push(e[o+r],e[o+r+1]),o+=r;else{const t=u-a,e=Le(i,h,t/u),d=Le(n,c,t/u);l.push(e,d),s.push(l),l=[e,d],a=0,o+=r}}return a>0&&s.push(l),s}function xy(t,e,i,n,r){let s,o,a,l,h,c,u,d,g,f,p=i,m=i,_=0,y=0,x=i;for(o=i;o<n;o+=r){const i=e[o],n=e[o+1];void 0!==h&&(g=i-h,f=n-c,l=Math.sqrt(g*g+f*f),void 0!==u&&(y+=a,s=Math.acos((u*g+d*f)/(a*l)),s>t&&(y>_&&(_=y,p=x,m=o),y=0,x=o-r)),a=l,u=g,d=f),h=i,c=n}return y+=l,y>_?[x,o]:[p,m]}const vy={left:0,center:.5,right:1,top:0,middle:.5,hanging:.2,alphabetic:.8,ideographic:.8,bottom:1};class Ey extends fy{constructor(t,e,i,n){super(t,e,i,n),this.labels_=null,this.text_="",this.textOffsetX_=0,this.textOffsetY_=0,this.textRotateWithView_=void 0,this.textKeepUpright_=void 0,this.textRotation_=0,this.textFillState_=null,this.fillStates={},this.fillStates[Th]={fillStyle:Th},this.textStrokeState_=null,this.strokeStates={},this.textState_={},this.textStates={},this.textKey_="",this.fillKey_="",this.strokeKey_="",this.declutterMode_=void 0,this.declutterImageWithText_=void 0}finish(){const t=super.finish();return t.textStates=this.textStates,t.fillStates=this.fillStates,t.strokeStates=this.strokeStates,t}drawText(t,e,i){const n=this.textFillState_,r=this.textStrokeState_,s=this.textState_;if(""===this.text_||!s||!n&&!r)return;const o=this.coordinates;let a=o.length;const l=t.getType();let h=null,c=t.getStride();if("line"!==s.placement||"LineString"!=l&&"MultiLineString"!=l&&"Polygon"!=l&&"MultiPolygon"!=l){let n=s.overflow?null:[];switch(l){case"Point":case"MultiPoint":h=t.getFlatCoordinates();break;case"LineString":h=t.getFlatMidpoint();break;case"Circle":h=t.getCenter();break;case"MultiLineString":h=t.getFlatMidpoints(),c=2;break;case"Polygon":h=t.getFlatInteriorPoint(),s.overflow||n.push(h[2]/this.resolution),c=3;break;case"MultiPolygon":const e=t.getFlatInteriorPoints();h=[];for(let t=0,i=e.length;t<i;t+=3)s.overflow||n.push(e[t+2]/this.resolution),h.push(e[t],e[t+1]);if(0===h.length)return;c=2}const r=this.appendFlatPointCoordinates(h,c);if(r===a)return;if(n&&(r-a)/2!=h.length/c){let t=a/2;n=n.filter(((e,i)=>{const n=o[2*(t+i)]===h[i*c]&&o[2*(t+i)+1]===h[i*c+1];return n||--t,n}))}this.saveTextStates_();const u=s.backgroundFill?this.createFill(this.fillStyleToState(s.backgroundFill)):null,d=s.backgroundStroke?this.createStroke(this.strokeStyleToState(s.backgroundStroke)):null;this.beginGeometry(t,e,i);let g=s.padding;if(g!=Mh&&(s.scale[0]<0||s.scale[1]<0)){let t=s.padding[0],e=s.padding[1],i=s.padding[2],n=s.padding[3];s.scale[0]<0&&(e=-e,n=-n),s.scale[1]<0&&(t=-t,i=-i),g=[t,e,i,n]}const f=this.pixelRatio;this.instructions.push([ny,a,r,null,NaN,NaN,NaN,1,0,0,this.textRotateWithView_,this.textRotation_,[1,1],NaN,this.declutterMode_,this.declutterImageWithText_,g==Mh?Mh:g.map((function(t){return t*f})),u,d,this.text_,this.textKey_,this.strokeKey_,this.fillKey_,this.textOffsetX_,this.textOffsetY_,n]);const p=1/f,m=u?u.slice(0):null;m&&(m[1]=Th),this.hitDetectionInstructions.push([ny,a,r,null,NaN,NaN,NaN,1,0,0,this.textRotateWithView_,this.textRotation_,[p,p],NaN,this.declutterMode_,this.declutterImageWithText_,g,m,d,this.text_,this.textKey_,this.strokeKey_,this.fillKey_?Th:this.fillKey_,this.textOffsetX_,this.textOffsetY_,n]),this.endGeometry(e)}else{if(!pe(this.maxExtent,t.getExtent()))return;let n;if(h=t.getFlatCoordinates(),"LineString"==l)n=[h.length];else if("MultiLineString"==l)n=t.getEnds();else if("Polygon"==l)n=t.getEnds().slice(0,1);else if("MultiPolygon"==l){const e=t.getEndss();n=[];for(let t=0,i=e.length;t<i;++t)n.push(e[t][0])}this.beginGeometry(t,e,i);const r=s.repeat,u=r?void 0:s.textAlign;let d=0;for(let t=0,e=n.length;t<e;++t){let e;e=r?yy(r*this.resolution,h,d,n[t],c):[h.slice(d,n[t])];for(let i=0,r=e.length;i<r;++i){const r=e[i];let l=0,h=r.length;if(null==u){const t=xy(s.maxAngle,r,0,r.length,2);l=t[0],h=t[1]}for(let t=l;t<h;t+=c)o.push(r[t],r[t+1]);const g=o.length;d=n[t],this.drawChars_(a,g),a=g}}this.endGeometry(e)}}saveTextStates_(){const t=this.textStrokeState_,e=this.textState_,i=this.textFillState_,n=this.strokeKey_;t&&(n in this.strokeStates||(this.strokeStates[n]={strokeStyle:t.strokeStyle,lineCap:t.lineCap,lineDashOffset:t.lineDashOffset,lineWidth:t.lineWidth,lineJoin:t.lineJoin,miterLimit:t.miterLimit,lineDash:t.lineDash}));const r=this.textKey_;r in this.textStates||(this.textStates[r]={font:e.font,textAlign:e.textAlign||Lh,justify:e.justify,textBaseline:e.textBaseline||Fh,scale:e.scale});const s=this.fillKey_;i&&(s in this.fillStates||(this.fillStates[s]={fillStyle:i.fillStyle}))}drawChars_(t,e){const i=this.textStrokeState_,n=this.textState_,r=this.strokeKey_,s=this.textKey_,o=this.fillKey_;this.saveTextStates_();const a=this.pixelRatio,l=vy[n.textBaseline],h=this.textOffsetY_*a,c=this.text_,u=i?i.lineWidth*Math.abs(n.scale[0])/2:0;this.instructions.push([iy,t,e,l,n.overflow,o,n.maxAngle,a,h,r,u*a,c,s,1,this.declutterMode_,this.textKeepUpright_]),this.hitDetectionInstructions.push([iy,t,e,l,n.overflow,o?Th:o,n.maxAngle,a,h,r,u*a,c,s,1/a,this.declutterMode_,this.textKeepUpright_])}setTextStyle(t,e){let i,n,r;if(t){const e=t.getFill();e?(n=this.textFillState_,n||(n={},this.textFillState_=n),n.fillStyle=Sh(e.getColor()||Th)):(n=null,this.textFillState_=n);const s=t.getStroke();if(s){r=this.textStrokeState_,r||(r={},this.textStrokeState_=r);const t=s.getLineDash(),e=s.getLineDashOffset(),i=s.getWidth(),n=s.getMiterLimit();r.lineCap=s.getLineCap()||Ch,r.lineDash=t?t.slice():Rh,r.lineDashOffset=void 0===e?0:e,r.lineJoin=s.getLineJoin()||bh,r.lineWidth=void 0===i?1:i,r.miterLimit=void 0===n?Ph:n,r.strokeStyle=Sh(s.getColor()||Ih)}else r=null,this.textStrokeState_=r;i=this.textState_;const o=t.getFont()||wh;kh(o);const a=t.getScaleArray();i.overflow=t.getOverflow(),i.font=o,i.maxAngle=t.getMaxAngle(),i.placement=t.getPlacement(),i.textAlign=t.getTextAlign(),i.repeat=t.getRepeat(),i.justify=t.getJustify(),i.textBaseline=t.getTextBaseline()||Fh,i.backgroundFill=t.getBackgroundFill(),i.backgroundStroke=t.getBackgroundStroke(),i.padding=t.getPadding()||Mh,i.scale=void 0===a?[1,1]:a;const l=t.getOffsetX(),h=t.getOffsetY(),c=t.getRotateWithView(),u=t.getKeepUpright(),d=t.getRotation();this.text_=t.getText()||"",this.textOffsetX_=void 0===l?0:l,this.textOffsetY_=void 0===h?0:h,this.textRotateWithView_=void 0!==c&&c,this.textKeepUpright_=void 0===u||u,this.textRotation_=void 0===d?0:d,this.strokeKey_=r?("string"==typeof r.strokeStyle?r.strokeStyle:z(r.strokeStyle))+r.lineCap+r.lineDashOffset+"|"+r.lineWidth+r.lineJoin+r.miterLimit+"["+r.lineDash.join()+"]":"",this.textKey_=i.font+i.scale+(i.textAlign||"?")+(i.repeat||"?")+(i.justify||"?")+(i.textBaseline||"?"),this.fillKey_=n&&n.fillStyle?"string"==typeof n.fillStyle?n.fillStyle:"|"+z(n.fillStyle):""}else this.text_="";this.declutterMode_=t.getDeclutterMode(),this.declutterImageWithText_=e}}const Sy={Circle:_y,Default:fy,Image:py,LineString:my,Polygon:_y,Text:Ey};class wy{constructor(t,e,i,n){this.tolerance_=t,this.maxExtent_=e,this.pixelRatio_=n,this.resolution_=i,this.buildersByZIndex_={}}finish(){const t={};for(const e in this.buildersByZIndex_){t[e]=t[e]||{};const i=this.buildersByZIndex_[e];for(const n in i){const r=i[n].finish();t[e][n]=r}}return t}getBuilder(t,e){const i=void 0!==t?t.toString():"0";let n=this.buildersByZIndex_[i];void 0===n&&(n={},this.buildersByZIndex_[i]=n);let r=n[e];if(void 0===r){r=new(0,Sy[e])(this.tolerance_,this.maxExtent_,this.resolution_,this.pixelRatio_),n[e]=r}return r}}function Ty(t,e,i,n,r,s,o,a,l,h,c,u,d=!0){let g=t[e],f=t[e+1],p=0,m=0,_=0,y=0;function x(){p=g,m=f,g=t[e+=n],f=t[e+1],y+=_,_=Math.sqrt((g-p)*(g-p)+(f-m)*(f-m))}do{x()}while(e<i-n&&y+_<s);let v=0===_?0:(s-y)/_;const E=Le(p,g,v),S=Le(m,f,v),w=e-n,T=y,C=s+a*l(h,r,c);for(;e<i-n&&y+_<C;)x();v=0===_?0:(C-y)/_;const R=Le(p,g,v),b=Le(m,f,v);let P=!1;if(d)if(u){const t=[E,S,R,b];ar(t,0,4,2,u,t,t),P=t[0]>t[2]}else P=E>R;const I=Math.PI,L=[],F=w+n===e;let M;if(_=0,y=T,g=t[e=w],f=t[e+1],F){x(),M=Math.atan2(f-m,g-p),P&&(M+=M>0?-I:I);const t=(R+E)/2,e=(b+S)/2;return L[0]=[t,e,(C-s)/2,M,r],L}for(let t=0,u=(r=r.replace(/\n/g," ")).length;t<u;){x();let d=Math.atan2(f-m,g-p);if(P&&(d+=d>0?-I:I),void 0!==M){let t=d-M;if(t+=t>I?-2*I:t<-I?2*I:0,Math.abs(t)>o)return null}M=d;const E=t;let S=0;for(;t<u;++t){const o=a*l(h,r[P?u-t-1:t],c);if(e+n<i&&y+_<s+S+o/2)break;S+=o}if(t===E)continue;const w=P?r.substring(u-E,u-t):r.substring(E,t);v=0===_?0:(s+S/2-y)/_;const T=Le(p,g,v),C=Le(m,f,v);L.push([T,C,S/2,d,w]),s+=S}return L}const Cy=[1/0,1/0,-1/0,-1/0],Ry=[],by=[],Py=[],Iy=[];function Ly(t){return t[3].declutterBox}const Fy=new RegExp("["+String.fromCharCode(1425)+"-"+String.fromCharCode(2303)+String.fromCharCode(64285)+"-"+String.fromCharCode(65023)+String.fromCharCode(65136)+"-"+String.fromCharCode(65276)+String.fromCharCode(67584)+"-"+String.fromCharCode(69631)+String.fromCharCode(124928)+"-"+String.fromCharCode(126975)+"]");function My(t,e){return"start"===e?e=Fy.test(t)?"right":"left":"end"===e&&(e=Fy.test(t)?"left":"right"),vy[e]}function Ay(t,e,i){return i>0&&t.push("\n",""),t.push(e,""),t}class Oy{constructor(t,e,i,n,r){this.overlaps=i,this.pixelRatio=e,this.resolution=t,this.alignAndScaleFill_,this.instructions=n.instructions,this.coordinates=n.coordinates,this.coordinateCache_={},this.renderedTransform_=[1,0,0,1,0,0],this.hitDetectionInstructions=n.hitDetectionInstructions,this.pixelCoordinates_=null,this.viewRotation_=0,this.fillStates=n.fillStates||{},this.strokeStates=n.strokeStates||{},this.textStates=n.textStates||{},this.widths_={},this.labels_={},this.zIndexContext_=r?new lf:null}getZIndexContext(){return this.zIndexContext_}createLabel(t,e,i,n){const r=t+e+i+n;if(this.labels_[r])return this.labels_[r];const s=n?this.strokeStates[n]:null,o=i?this.fillStates[i]:null,a=this.textStates[e],l=this.pixelRatio,h=[a.scale[0]*l,a.scale[1]*l],c=a.justify?vy[a.justify]:My(Array.isArray(t)?t[0]:t,a.textAlign||Lh),u=n&&s.lineWidth?s.lineWidth:0,d=Array.isArray(t)?t:String(t).split("\n").reduce(Ay,[]),{width:g,height:f,widths:p,heights:m,lineWidths:_}=zh(a,d),y=g+u,x=[],v=(y+2)*h[0],E=(f+u)*h[1],S={width:v<0?Math.floor(v):Math.ceil(v),height:E<0?Math.floor(E):Math.ceil(E),contextInstructions:x};1==h[0]&&1==h[1]||x.push("scale",h),n&&(x.push("strokeStyle",s.strokeStyle),x.push("lineWidth",u),x.push("lineCap",s.lineCap),x.push("lineJoin",s.lineJoin),x.push("miterLimit",s.miterLimit),x.push("setLineDash",[s.lineDash]),x.push("lineDashOffset",s.lineDashOffset)),i&&x.push("fillStyle",o.fillStyle),x.push("textBaseline","middle"),x.push("textAlign","center");const w=.5-c;let T=c*y+w*u;const C=[],R=[];let b,P=0,I=0,L=0,F=0;for(let t=0,e=d.length;t<e;t+=2){const e=d[t];if("\n"===e){I+=P,P=0,T=c*y+w*u,++F;continue}const r=d[t+1]||a.font;r!==b&&(n&&C.push("font",r),i&&R.push("font",r),b=r),P=Math.max(P,m[L]);const s=[e,T+w*p[L]+c*(p[L]-_[F]),.5*(u+P)+I];T+=p[L],n&&C.push("strokeText",s),i&&R.push("fillText",s),++L}return Array.prototype.push.apply(x,C),Array.prototype.push.apply(x,R),this.labels_[r]=S,S}replayTextBackground_(t,e,i,n,r,s,o){t.beginPath(),t.moveTo.apply(t,e),t.lineTo.apply(t,i),t.lineTo.apply(t,n),t.lineTo.apply(t,r),t.lineTo.apply(t,e),s&&(this.alignAndScaleFill_=s[2],t.fillStyle=s[1],this.fill_(t)),o&&(this.setStrokeStyle_(t,o),t.stroke())}calculateImageOrLabelDimensions_(t,e,i,n,r,s,o,a,l,h,c,u,d,g,f,p){let m=i-(o*=u[0]),_=n-(a*=u[1]);const y=r+l>t?t-l:r,x=s+h>e?e-h:s,v=g[3]+y*u[0]+g[1],E=g[0]+x*u[1]+g[2],S=m-g[3],w=_-g[0];let T;return(f||0!==c)&&(Ry[0]=S,Iy[0]=S,Ry[1]=w,by[1]=w,by[0]=S+v,Py[0]=by[0],Py[1]=w+E,Iy[1]=Py[1]),0!==c?(T=er([1,0,0,1,0,0],i,n,1,1,c,-i,-n),qn(T,Ry),qn(T,by),qn(T,Py),qn(T,Iy),Vt(Math.min(Ry[0],by[0],Py[0],Iy[0]),Math.min(Ry[1],by[1],Py[1],Iy[1]),Math.max(Ry[0],by[0],Py[0],Iy[0]),Math.max(Ry[1],by[1],Py[1],Iy[1]),Cy)):Vt(Math.min(S,S+v),Math.min(w,w+E),Math.max(S,S+v),Math.max(w,w+E),Cy),d&&(m=Math.round(m),_=Math.round(_)),{drawImageX:m,drawImageY:_,drawImageW:y,drawImageH:x,originX:l,originY:h,declutterBox:{minX:Cy[0],minY:Cy[1],maxX:Cy[2],maxY:Cy[3],value:p},canvasTransform:T,scale:u}}replayImageOrLabel_(t,e,i,n,r,s,o){const a=!(!s&&!o),l=n.declutterBox,h=o?o[2]*n.scale[0]/2:0;return l.minX-h<=e[0]&&l.maxX+h>=0&&l.minY-h<=e[1]&&l.maxY+h>=0&&(a&&this.replayTextBackground_(t,Ry,by,Py,Iy,s,o),Xh(t,n.canvasTransform,r,i,n.originX,n.originY,n.drawImageW,n.drawImageH,n.drawImageX,n.drawImageY,n.scale)),!0}fill_(t){const e=this.alignAndScaleFill_;if(e){const i=qn(this.renderedTransform_,[0,0]),n=512*this.pixelRatio;t.save(),t.translate(i[0]%n,i[1]%n),1!==e&&t.scale(e,e),t.rotate(this.viewRotation_)}t.fill(),e&&t.restore()}setStrokeStyle_(t,e){t.strokeStyle=e[1],t.lineWidth=e[2],t.lineCap=e[3],t.lineJoin=e[4],t.miterLimit=e[5],t.lineDashOffset=e[7],t.setLineDash(e[6])}drawLabelWithPointPlacement_(t,e,i,n){const r=this.textStates[e],s=this.createLabel(t,e,n,i),o=this.strokeStates[i],a=this.pixelRatio,l=My(Array.isArray(t)?t[0]:t,r.textAlign||Lh),h=vy[r.textBaseline||Fh],c=o&&o.lineWidth?o.lineWidth:0;return{label:s,anchorX:l*(s.width/a-2*r.scale[0])+2*(.5-l)*c,anchorY:h*s.height/a+2*(.5-h)*c}}execute_(t,e,i,n,r,s,o,a){const l=this.zIndexContext_;let h;this.pixelCoordinates_&&w(i,this.renderedTransform_)?h=this.pixelCoordinates_:(this.pixelCoordinates_||(this.pixelCoordinates_=[]),h=or(this.coordinates,0,this.coordinates.length,2,i,this.pixelCoordinates_),Kn(this.renderedTransform_,i));let c=0;const u=n.length;let d,g,f,p,m,_,y,x,v,E,S,T,C,R=0,b=0,P=0;const I=this.coordinateCache_,L=this.viewRotation_,F=Math.round(1e12*Math.atan2(-i[1],i[0]))/1e12,M={context:t,pixelRatio:this.pixelRatio,resolution:this.resolution,rotation:L},A=this.instructions!=n||this.overlaps?0:200;let O,D,N,k;for(;c<u;){const i=n[c];switch(i[0]){case q_:O=i[1],k=i[3],O.getGeometry()?void 0===o||pe(o,k.getExtent())?++c:c=i[2]+1:c=i[2],l&&(l.zIndex=i[4]);break;case J_:b>A&&(this.fill_(t),b=0),P>A&&(t.stroke(),P=0),b||P||(t.beginPath(),m=NaN,_=NaN),++c;break;case Q_:R=i[1];const n=h[R],u=h[R+1],w=h[R+2]-n,G=h[R+3]-u,j=Math.sqrt(w*w+G*G);t.moveTo(n+j,u),t.arc(n,u,j,0,2*Math.PI,!0),++c;break;case ty:t.closePath(),++c;break;case ey:R=i[1],d=i[2];const U=i[3],B=i[4],z=i[5];M.geometry=U,M.feature=O,c in I||(I[c]=[]);const X=I[c];z?z(h,R,d,2,X):(X[0]=h[R],X[1]=h[R+1],X.length=2),l&&(l.zIndex=i[6]),B(X,M),++c;break;case ny:R=i[1],d=i[2],v=i[3],g=i[4],f=i[5];let V=i[6];const $=i[7],W=i[8],Z=i[9],Y=i[10];let H=i[11];const K=i[12];let q=i[13];p=i[14]||"declutter";const J=i[15];if(!v&&i.length>=20){E=i[19],S=i[20],T=i[21],C=i[22];const t=this.drawLabelWithPointPlacement_(E,S,T,C);v=t.label,i[3]=v;const e=i[23];g=(t.anchorX-e)*this.pixelRatio,i[4]=g;const n=i[24];f=(t.anchorY-n)*this.pixelRatio,i[5]=f,V=v.height,i[6]=V,q=v.width,i[13]=q}let Q,tt,et,it;i.length>25&&(Q=i[25]),i.length>17?(tt=i[16],et=i[17],it=i[18]):(tt=Mh,et=null,it=null),Y&&F?H+=L:Y||F||(H-=L);let nt=0;for(;R<d;R+=2){if(Q&&Q[nt++]<q/this.pixelRatio)continue;const i=this.calculateImageOrLabelDimensions_(v.width,v.height,h[R],h[R+1],q,V,g,f,W,Z,H,K,r,tt,!!et||!!it,O),n=[t,e,v,i,$,et,it];if(a){let t,e,r,s,o;if(J){const i=d-R;if(!J[i]){J[i]={args:n,declutterMode:p};continue}const s=J[i];t=s.args,e=s.declutterMode,delete J[i],r=Ly(t)}if(!t||"declutter"===e&&a.collides(r)||(s=!0),"declutter"===p&&a.collides(i.declutterBox)||(o=!0),"declutter"===e&&"declutter"===p){const t=s&&o;s=t,o=t}s&&("none"!==e&&a.insert(r),this.replayImageOrLabel_.apply(this,t)),o&&("none"!==p&&a.insert(i.declutterBox),this.replayImageOrLabel_.apply(this,n))}else this.replayImageOrLabel_.apply(this,n)}++c;break;case iy:const rt=i[1],st=i[2],ot=i[3],at=i[4];C=i[5];const lt=i[6],ht=i[7],ct=i[8];T=i[9];const ut=i[10];E=i[11],S=i[12];const dt=[i[13],i[13]];p=i[14]||"declutter";const gt=i[15],ft=this.textStates[S],pt=ft.font,mt=[ft.scale[0]*ht,ft.scale[1]*ht];let _t;pt in this.widths_?_t=this.widths_[pt]:(_t={},this.widths_[pt]=_t);const yt=vd(h,rt,st,2),xt=Math.abs(mt[0])*Bh(pt,E,_t);if(at||xt<=yt){const i=Ty(h,rt,st,2,E,(yt-xt)*My(E,this.textStates[S].textAlign),lt,Math.abs(mt[0]),Bh,pt,_t,F?0:this.viewRotation_,gt);t:if(i){const n=[];let r,s,o,l,h;if(T)for(r=0,s=i.length;r<s;++r){h=i[r],o=h[4],l=this.createLabel(o,S,"",T),g=h[2]+(mt[0]<0?-ut:ut),f=ot*l.height+2*(.5-ot)*ut*mt[1]/mt[0]-ct;const s=this.calculateImageOrLabelDimensions_(l.width,l.height,h[0],h[1],l.width,l.height,g,f,0,0,h[3],dt,!1,Mh,!1,O);if(a&&"declutter"===p&&a.collides(s.declutterBox))break t;n.push([t,e,l,s,1,null,null])}if(C)for(r=0,s=i.length;r<s;++r){h=i[r],o=h[4],l=this.createLabel(o,S,C,""),g=h[2],f=ot*l.height-ct;const s=this.calculateImageOrLabelDimensions_(l.width,l.height,h[0],h[1],l.width,l.height,g,f,0,0,h[3],dt,!1,Mh,!1,O);if(a&&"declutter"===p&&a.collides(s.declutterBox))break t;n.push([t,e,l,s,1,null,null])}a&&"none"!==p&&a.load(n.map(Ly));for(let t=0,e=n.length;t<e;++t)this.replayImageOrLabel_.apply(this,n[t])}}++c;break;case ry:if(void 0!==s){O=i[1];const t=s(O,k,p);if(t)return t}++c;break;case sy:A?b++:this.fill_(t),++c;break;case oy:for(R=i[1],d=i[2],D=h[R],N=h[R+1],t.moveTo(D,N),m=D+.5|0,_=N+.5|0,R+=2;R<d;R+=2)D=h[R],N=h[R+1],y=D+.5|0,x=N+.5|0,R!=d-2&&y===m&&x===_||(t.lineTo(D,N),m=y,_=x);++c;break;case ay:this.alignAndScaleFill_=i[2],b&&(this.fill_(t),b=0,P&&(t.stroke(),P=0)),t.fillStyle=i[1],++c;break;case ly:P&&(t.stroke(),P=0),this.setStrokeStyle_(t,i),++c;break;case hy:A?P++:t.stroke(),++c;break;default:++c}}b&&this.fill_(t),P&&t.stroke()}execute(t,e,i,n,r,s){this.viewRotation_=n,this.execute_(t,e,i,this.instructions,r,void 0,void 0,s)}executeHitDetection(t,e,i,n,r){return this.viewRotation_=i,this.execute_(t,[t.canvas.width,t.canvas.height],e,this.hitDetectionInstructions,!0,n,r)}}const Dy=["Polygon","Circle","LineString","Image","Text","Default"],Ny=["Image","Text"],ky=Dy.filter((t=>!Ny.includes(t)));class Gy{constructor(t,e,i,n,r,s,o){this.maxExtent_=t,this.overlaps_=n,this.pixelRatio_=i,this.resolution_=e,this.renderBuffer_=s,this.executorsByZIndex_={},this.hitDetectionContext_=null,this.hitDetectionTransform_=[1,0,0,1,0,0],this.renderedContext_=null,this.deferredZIndexContexts_={},this.createExecutors_(r,o)}clip(t,e){const i=this.getClipCoords(e);t.beginPath(),t.moveTo(i[0],i[1]),t.lineTo(i[2],i[3]),t.lineTo(i[4],i[5]),t.lineTo(i[6],i[7]),t.clip()}createExecutors_(t,e){for(const i in t){let n=this.executorsByZIndex_[i];void 0===n&&(n={},this.executorsByZIndex_[i]=n);const r=t[i];for(const t in r){const i=r[t];n[t]=new Oy(this.resolution_,this.pixelRatio_,this.overlaps_,i,e)}}}hasExecutors(t){for(const e in this.executorsByZIndex_){const i=this.executorsByZIndex_[e];for(let e=0,n=t.length;e<n;++e)if(t[e]in i)return!0}return!1}forEachFeatureAtCoordinate(t,e,i,n,r,s){const o=2*(n=Math.round(n))+1,a=er(this.hitDetectionTransform_,n+.5,n+.5,1/e,-1/e,-i,-t[0],-t[1]),l=!this.hitDetectionContext_;l&&(this.hitDetectionContext_=pt(o,o,void 0,{willReadFrequently:!0}));const h=this.hitDetectionContext_;let c;h.canvas.width!==o||h.canvas.height!==o?(h.canvas.width=o,h.canvas.height=o):l||h.clearRect(0,0,o,o),void 0!==this.renderBuffer_&&(c=[1/0,1/0,-1/0,-1/0],qt(c,t),Nt(c,e*(this.renderBuffer_+n),c));const u=Uy(n);let d;function g(t,e,i){const a=h.getImageData(0,0,o,o).data;for(let l=0,c=u.length;l<c;l++)if(a[u[l]]>0){if(!s||"none"===i||"Image"!==d&&"Text"!==d||s.includes(t)){const i=(u[l]-3)/4,s=n-i%o,a=n-(i/o|0),h=r(t,e,s*s+a*a);if(h)return h}h.clearRect(0,0,o,o);break}}const f=Object.keys(this.executorsByZIndex_).map(Number);let p,m,_,x,v;for(f.sort(y),p=f.length-1;p>=0;--p){const t=f[p].toString();for(_=this.executorsByZIndex_[t],m=Dy.length-1;m>=0;--m)if(d=Dy[m],x=_[d],void 0!==x&&(v=x.executeHitDetection(h,a,i,g,c),v))return v}}getClipCoords(t){const e=this.maxExtent_;if(!e)return null;const i=e[0],n=e[1],r=e[2],s=e[3],o=[i,n,i,s,r,s,r,n];return or(o,0,8,2,t,o),o}isEmpty(){return F(this.executorsByZIndex_)}execute(t,e,i,n,r,s,o){const a=Object.keys(this.executorsByZIndex_).map(Number);a.sort(o?x:y),s=s||Dy;const l=Dy.length;for(let h=0,c=a.length;h<c;++h){const c=a[h].toString(),u=this.executorsByZIndex_[c];for(let c=0,d=s.length;c<d;++c){const d=s[c],g=u[d];if(void 0!==g){const s=null===o?void 0:g.getZIndexContext(),u=s?s.getContext():t,f=this.maxExtent_&&"Image"!==d&&"Text"!==d;if(f&&(u.save(),this.clip(u,i)),s&&"Text"!==d&&"Image"!==d?s.pushFunction((t=>g.execute(t,e,i,n,r,o))):g.execute(u,e,i,n,r,o),f&&u.restore(),s){s.offset();const t=a[h]*l+c;this.deferredZIndexContexts_[t]||(this.deferredZIndexContexts_[t]=[]),this.deferredZIndexContexts_[t].push(s)}}}}this.renderedContext_=t}getDeferredZIndexContexts(){return this.deferredZIndexContexts_}getRenderedContext(){return this.renderedContext_}renderDeferred(){const t=this.deferredZIndexContexts_,e=Object.keys(t).map(Number).sort(y);for(let i=0,n=e.length;i<n;++i)t[e[i]].forEach((t=>{t.draw(this.renderedContext_),t.clear()})),t[e[i]].length=0}}const jy={};function Uy(t){if(void 0!==jy[t])return jy[t];const e=2*t+1,i=t*t,n=new Array(i+1);for(let r=0;r<=t;++r)for(let s=0;s<=t;++s){const o=r*r+s*s;if(o>i)break;let a=n[o];a||(a=[],n[o]=a),a.push(4*((t+r)*e+(t+s))+3),r>0&&a.push(4*((t-r)*e+(t+s))+3),s>0&&(a.push(4*((t+r)*e+(t-s))+3),r>0&&a.push(4*((t-r)*e+(t-s))+3))}const r=[];for(let t=0,e=n.length;t<e;++t)n[t]&&r.push(...n[t]);return jy[t]=r,r}const By=.5;function zy(t,e,i,n,r,s,o,a,l){const h=l?jn(r,l):r,c=pt(t[0]*By,t[1]*By);c.imageSmoothingEnabled=!1;const u=c.canvas,d=new su(c,By,r,null,o,a,l?In(Nn(),l):null),g=i.length,f=Math.floor(16777215/g),p={};for(let t=1;t<=g;++t){const e=i[t-1],r=e.getStyleFunction()||n;if(!r)continue;let o=r(e,s);if(!o)continue;Array.isArray(o)||(o=[o]);const a=(t*f).toString(16).padStart(7,"#00000");for(let t=0,i=o.length;t<i;++t){const i=o[t],n=i.getGeometryFunction()(e);if(!n||!pe(h,n.getExtent()))continue;const r=i.clone(),s=r.getFill();s&&s.setColor(a);const l=r.getStroke();l&&(l.setColor(a),l.setLineDash(null)),r.setText(void 0);const c=i.getImage();if(c){const t=c.getImageSize();if(!t)continue;const e=pt(t[0],t[1],void 0,{alpha:!1}),i=e.canvas;e.fillStyle=a,e.fillRect(0,0,i.width,i.height),r.setImage(new Hh({img:i,anchor:c.getAnchor(),anchorXUnits:"pixels",anchorYUnits:"pixels",offset:c.getOrigin(),opacity:1,size:c.getSize(),scale:c.getScale(),rotation:c.getRotation(),rotateWithView:c.getRotateWithView()}))}const u=r.getZIndex()||0;let d=p[u];d||(d={},p[u]=d,d.Polygon=[],d.Circle=[],d.LineString=[],d.Point=[]);const g=n.getType();if("GeometryCollection"===g){const t=n.getGeometriesArrayRecursive();for(let e=0,i=t.length;e<i;++e){const i=t[e];d[i.getType().replace("Multi","")].push(i,r)}}else d[g.replace("Multi","")].push(n,r)}}const m=Object.keys(p).map(Number).sort(y);for(let t=0,i=m.length;t<i;++t){const i=p[m[t]];for(const t in i){const n=i[t];for(let t=0,i=n.length;t<i;t+=2){d.setStyle(n[t+1]);for(let i=0,r=e.length;i<r;++i)d.setTransform(e[i]),d.drawGeometry(n[t])}}}return c.getImageData(0,0,u.width,u.height)}function Xy(t,e,i){const n=[];if(i){const r=Math.floor(Math.round(t[0])*By),s=Math.floor(Math.round(t[1])*By),o=4*(we(r,0,i.width-1)+we(s,0,i.height-1)*i.width),a=i.data[o],l=i.data[o+1],h=i.data[o+2]+256*(l+256*a),c=Math.floor(16777215/e.length);h&&h%c==0&&n.push(e[h/c-1])}return n}class Vy extends df{constructor(t){super(t),this.boundHandleStyleImageChange_=this.handleStyleImageChange_.bind(this),this.animatingOrInteracting_,this.hitDetectionImageData_=null,this.clipped_=!1,this.renderedFeatures_=null,this.renderedRevision_=-1,this.renderedResolution_=NaN,this.renderedExtent_=[1/0,1/0,-1/0,-1/0],this.wrappedRenderedExtent_=[1/0,1/0,-1/0,-1/0],this.renderedRotation_,this.renderedCenter_=null,this.renderedProjection_=null,this.renderedPixelRatio_=1,this.renderedRenderOrder_=null,this.renderedFrameDeclutter_,this.replayGroup_=null,this.replayGroupChanged=!0,this.clipping=!0,this.targetContext_=null,this.opacity_=1}renderWorlds(t,e,i){const n=e.extent,r=e.viewState,s=r.center,o=r.resolution,a=r.projection,l=r.rotation,h=a.getExtent(),c=this.getLayer().getSource(),u=this.getLayer().getDeclutter(),d=e.pixelRatio,g=e.viewHints,f=!(g[eo]||g[io]),p=this.context,m=Math.round(fe(n)/o*d),_=Math.round(ce(n)/o*d),y=c.getWrapX()&&a.canWrapX(),x=y?fe(h):null,v=y?Math.ceil((n[2]-h[2])/x)+1:1;let E=y?Math.floor((n[0]-h[0])/x):0;do{let n=this.getRenderTransform(s,o,0,d,m,_,E*x);e.declutter&&(n=n.slice(0)),t.execute(p,[p.canvas.width,p.canvas.height],n,l,f,void 0===i?Dy:i?Ny:ky,i?u&&e.declutter[u]:void 0)}while(++E<v)}setDrawContext_(){1!==this.opacity_&&(this.targetContext_=this.context,this.context=pt(this.context.canvas.width,this.context.canvas.height,cf))}resetDrawContext_(){if(1!==this.opacity_){const t=this.targetContext_.globalAlpha;this.targetContext_.globalAlpha=this.opacity_,this.targetContext_.drawImage(this.context.canvas,0,0),this.targetContext_.globalAlpha=t,yt(this.context),cf.push(this.context.canvas),this.context=this.targetContext_,this.targetContext_=null}}renderDeclutter(t){this.replayGroup_&&this.getLayer().getDeclutter()&&this.renderWorlds(this.replayGroup_,t,!0)}renderDeferredInternal(t){this.replayGroup_&&(this.replayGroup_.renderDeferred(),this.clipped_&&this.context.restore(),this.resetDrawContext_())}renderFrame(t,e){const i=t.layerStatesArray[t.layerIndex];this.opacity_=i.opacity;const n=t.viewState;this.prepareContainer(t,e);const r=this.context,s=this.replayGroup_;let o=s&&!s.isEmpty();if(!o){if(!(this.getLayer().hasListener(Ba)||this.getLayer().hasListener(za)))return null}this.setDrawContext_(),this.preRender(r,t);const a=n.projection;if(this.clipped_=!1,o&&i.extent&&this.clipping){const e=Un(i.extent,a);o=pe(e,t.extent),this.clipped_=o&&!Ut(e,t.extent),this.clipped_&&this.clipUnrotated(r,t,e)}return o&&this.renderWorlds(s,t,!this.getLayer().getDeclutter()&&void 0),!t.declutter&&this.clipped_&&r.restore(),this.postRender(r,t),this.renderedRotation_!==n.rotation&&(this.renderedRotation_=n.rotation,this.hitDetectionImageData_=null),t.declutter||this.resetDrawContext_(),this.container}getFeatures(t){return new Promise((e=>{if(this.frameState&&!this.hitDetectionImageData_&&!this.animatingOrInteracting_){const t=this.frameState.size.slice(),e=this.renderedCenter_,i=this.renderedResolution_,n=this.renderedRotation_,r=this.renderedProjection_,s=this.wrappedRenderedExtent_,o=this.getLayer(),a=[],l=t[0]*By,h=t[1]*By;a.push(this.getRenderTransform(e,i,n,By,l,h,0).slice());const c=o.getSource(),u=r.getExtent();if(c.getWrapX()&&r.canWrapX()&&!Ut(u,s)){let t=s[0];const r=fe(u);let o,c=0;for(;t<u[0];)--c,o=r*c,a.push(this.getRenderTransform(e,i,n,By,l,h,o).slice()),t+=r;for(c=0,t=s[2];t>u[2];)++c,o=r*c,a.push(this.getRenderTransform(e,i,n,By,l,h,o).slice()),t-=r}const d=Nn();this.hitDetectionImageData_=zy(t,a,this.renderedFeatures_,o.getStyleFunction(),s,i,n,hu(i,this.renderedPixelRatio_),d?r:null)}e(Xy(t,this.renderedFeatures_,this.hitDetectionImageData_))}))}forEachFeatureAtCoordinate(t,e,i,n,r){if(!this.replayGroup_)return;const s=e.viewState.resolution,o=e.viewState.rotation,a=this.getLayer(),l={},h=this.getLayer().getDeclutter();return this.replayGroup_.forEachFeatureAtCoordinate(t,s,o,i,(function(t,e,i){const s=z(t),o=l[s];if(o){if(!0!==o&&i<o.distanceSq){if(0===i)return l[s]=!0,r.splice(r.lastIndexOf(o),1),n(t,a,e);o.geometry=e,o.distanceSq=i}}else{if(0===i)return l[s]=!0,n(t,a,e);r.push(l[s]={feature:t,layer:a,geometry:e,distanceSq:i,callback:n})}}),h?e.declutter?.[h]?.all().map((t=>t.value)):null)}handleFontsChanged(){const t=this.getLayer();t.getVisible()&&this.replayGroup_&&t.changed()}handleStyleImageChange_(t){this.renderIfReadyAndVisible()}prepareFrame(t){const e=this.getLayer(),i=e.getSource();if(!i)return!1;const n=t.viewHints[eo],r=t.viewHints[io],s=e.getUpdateWhileAnimating(),o=e.getUpdateWhileInteracting();if(this.ready&&!s&&n||!o&&r)return this.animatingOrInteracting_=!0,!0;this.animatingOrInteracting_=!1;const a=t.extent,l=t.viewState,h=l.projection,c=l.resolution,u=t.pixelRatio,d=e.getRevision(),g=e.getRenderBuffer();let f=e.getRenderOrder();void 0===f&&(f=lu);const p=l.center.slice(),m=Nt(a,g*c),_=m.slice(),y=[m.slice()],x=h.getExtent();if(i.getWrapX()&&h.canWrapX()&&!Ut(x,t.extent)){const t=fe(x),e=Math.max(fe(m)/2,t);m[0]=x[0]-e,m[2]=x[2]+e,si(p,h);const i=Ee(y[0],h);i[0]<x[0]&&i[2]<x[2]?y.push([i[0]+t,i[1],i[2]+t,i[3]]):i[0]>x[0]&&i[2]>x[2]&&y.push([i[0]-t,i[1],i[2]-t,i[3]])}if(this.ready&&this.renderedResolution_==c&&this.renderedRevision_==d&&this.renderedRenderOrder_==f&&this.renderedFrameDeclutter_===!!t.declutter&&Ut(this.wrappedRenderedExtent_,m))return w(this.renderedExtent_,_)||(this.hitDetectionImageData_=null,this.renderedExtent_=_),this.renderedCenter_=p,this.replayGroupChanged=!1,!0;this.replayGroup_=null;const v=new wy(cu(c,u),m,c,u),E=Nn();let S;if(E){for(let t=0,e=y.length;t<e;++t){const e=jn(y[t],h);i.loadFeatures(e,Bn(c,h),E)}S=In(E,h)}else for(let t=0,e=y.length;t<e;++t)i.loadFeatures(y[t],c,h);const T=hu(c,u);let C=!0;const R=(t,i)=>{let n;const r=t.getStyleFunction()||e.getStyleFunction();if(r&&(n=r(t,c)),n){const e=this.renderFeature(t,T,n,v,S,this.getLayer().getDeclutter(),i);C=C&&!e}},b=jn(m,h),P=i.getFeaturesInExtent(b);f&&P.sort(f);for(let t=0,e=P.length;t<e;++t)R(P[t],t);this.renderedFeatures_=P,this.ready=C;const I=v.finish(),L=new Gy(m,c,u,i.getOverlaps(),I,e.getRenderBuffer(),!!t.declutter);return this.renderedResolution_=c,this.renderedRevision_=d,this.renderedRenderOrder_=f,this.renderedFrameDeclutter_=!!t.declutter,this.renderedExtent_=_,this.wrappedRenderedExtent_=m,this.renderedCenter_=p,this.renderedProjection_=h,this.renderedPixelRatio_=u,this.replayGroup_=L,this.hitDetectionImageData_=null,this.replayGroupChanged=!0,!0}renderFeature(t,e,i,n,r,s,o){if(!i)return!1;let a=!1;if(Array.isArray(i))for(let l=0,h=i.length;l<h;++l)a=uu(n,t,i[l],e,this.boundHandleStyleImageChange_,r,s,o)||a;else a=uu(n,t,i,e,this.boundHandleStyleImageChange_,r,s,o);return a}}class $y extends gf{constructor(t){super(t),this.vectorRenderer_=new Vy(t),this.layerImageRatio_=t.getImageRatio(),this.coordinateToVectorPixelTransform_=[1,0,0,1,0,0],this.renderedPixelToCoordinateTransform_=null}disposeInternal(){this.vectorRenderer_.dispose(),super.disposeInternal()}getFeatures(t){if(!this.vectorRenderer_)return Promise.resolve([]);const e=qn(this.coordinateToVectorPixelTransform_,qn(this.renderedPixelToCoordinateTransform_,t.slice()));return this.vectorRenderer_.getFeatures(e)}handleFontsChanged(){this.vectorRenderer_.handleFontsChanged()}prepareFrame(t){const e=t.pixelRatio,i=t.viewState,r=i.resolution,s=t.viewHints,o=this.vectorRenderer_;let a=t.extent;1!==this.layerImageRatio_&&(a=a.slice(0),ye(a,this.layerImageRatio_));const l=fe(a)/r,h=ce(a)/r;if(!s[eo]&&!s[io]&&!me(a)){o.useContainer(null,null);const s=o.context,c=t.layerStatesArray[t.layerIndex],u=Object.assign({},c,{opacity:1}),d=Object.assign({},t,{extent:a,size:[l,h],viewState:Object.assign({},t.viewState,{rotation:0}),layerStatesArray:[u],layerIndex:0,declutter:null}),g=this.getLayer().getDeclutter();g&&(d.declutter={[g]:new qa(9)});let f=!0;const p=new Fs(a,r,e,s.canvas,(function(t){o.prepareFrame(d)&&o.replayGroupChanged&&(o.clipping=!1,o.renderFrame(d,null)&&(o.renderDeclutter(d),o.renderDeferred(d),f=!1),t())}));p.addEventListener(n,(()=>{if(p.getState()!==Cs.LOADED)return;this.image=f?null:p;const t=p.getPixelRatio(),n=Eu(p.getResolution())*e/t;this.renderedResolution=n,this.coordinateToVectorPixelTransform_=er(this.coordinateToVectorPixelTransform_,l/2,h/2,1/n,-1/n,0,-i.center[0],-i.center[1])})),p.load()}return this.image&&(this.renderedPixelToCoordinateTransform_=t.pixelToCoordinateTransform.slice()),!!this.image}preRender(){}postRender(){}renderDeclutter(){}forEachFeatureAtCoordinate(t,e,i,n,r){return this.vectorRenderer_?this.vectorRenderer_.forEachFeatureAtCoordinate(t,e,i,n,r):super.forEachFeatureAtCoordinate(t,e,i,n,r)}}const Wy={image:["Polygon","Circle","LineString","Image","Text"],hybrid:["Polygon","LineString"],vector:[]},Zy={hybrid:["Image","Text","Default"],vector:["Polygon","Circle","LineString","Image","Text","Default"]};class Yy extends vf{constructor(t,e){super(t,e),this.boundHandleStyleImageChange_=this.handleStyleImageChange_.bind(this),this.renderedLayerRevision_,this.renderedPixelToCoordinateTransform_=null,this.renderedRotation_,this.renderedOpacity_=1,this.tmpTransform_=[1,0,0,1,0,0],this.tileClipContexts_=null}drawTile(t,e,i,n,r,s,o,a){this.updateExecutorGroup_(t,e.pixelRatio,e.viewState.projection),this.tileImageNeedsRender_(t)&&this.renderTileImage_(t,e),super.drawTile(t,e,i,n,r,s,o,a)}getTile(t,e,i,n){const r=this.getOrCreateTile(t,e,i,n);if(!r)return null;const s=n.viewState.resolution,o=n.viewHints;return!!(o[eo]||o[io])&&r.wantedResolution||(r.wantedResolution=s),r}prepareFrame(t){const e=this.getLayer().getRevision();return this.renderedLayerRevision_!==e&&(this.renderedLayerRevision_=e,this.renderedTiles.length=0),super.prepareFrame(t)}updateExecutorGroup_(t,e,i){const n=this.getLayer(),r=n.getRevision(),s=n.getRenderOrder()||null,o=t.wantedResolution,a=t.getReplayState(n);if(!a.dirty&&a.renderedResolution===o&&a.renderedRevision==r&&a.renderedRenderOrder==s)return;const l=n.getSource(),h=!!n.getDeclutter(),c=l.getTileGrid(),u=l.getTileGridForProjection(i).getTileCoordExtent(t.wrappedTileCoord),d=l.getSourceTiles(e,i,t),g=z(n);delete t.hitDetectionImageData[g],t.executorGroups[g]=[],a.dirty=!1;for(let i=0,r=d.length;i<r;++i){const r=d[i];if(r.getState()!=K)continue;const f=r.tileCoord,p=c.getTileCoordExtent(f),m=ue(u,p),_=Nt(m,n.getRenderBuffer()*o,this.tempExtent),y=Yt(p,m)?null:_,x=new wy(0,m,o,e),v=hu(o,e),E=function(t,e){let i;const r=t.getStyleFunction()||n.getStyleFunction();if(r&&(i=r(t,o)),i){const n=this.renderFeature(t,v,i,x,h,e);a.dirty=a.dirty||n}},S=r.getFeatures();s&&s!==a.renderedRenderOrder&&S.sort(s);for(let t=0,e=S.length;t<e;++t){const e=S[t];y&&!pe(y,e.getGeometry().getExtent())||E.call(this,e,t)}const w=x.finish(),T="vector"!==n.getRenderMode()&&h&&1===d.length?null:m,C=new Gy(T,o,e,l.getOverlaps(),w,n.getRenderBuffer(),!0);t.executorGroups[g].push(C)}a.renderedRevision=r,a.renderedRenderOrder=s,a.renderedResolution=o}forEachFeatureAtCoordinate(t,e,i,n,r){const s=e.viewState.resolution,o=e.viewState.rotation;i=null==i?0:i;const a=this.getLayer(),l=a.getSource().getTileGridForProjection(e.viewState.projection),h=Dt([t]);Nt(h,s*i,h);const c={},u=function(t,e,i){let s=t.getId();void 0===s&&(s=z(t));const o=c[s];if(o){if(!0!==o&&i<o.distanceSq){if(0===i)return c[s]=!0,r.splice(r.lastIndexOf(o),1),n(t,a,e);o.geometry=e,o.distanceSq=i}}else{if(0===i)return c[s]=!0,n(t,a,e);r.push(c[s]={feature:t,layer:a,geometry:e,distanceSq:i,callback:n})}},d=this.renderedTiles,g=z(a),f=a.getDeclutter(),p=f?e.declutter?.[f]?.all().map((t=>t.value)):null;let m;t:for(let e=0,n=d.length;e<n;++e){const n=d[e];if(!pe(l.getTileCoordExtent(n.wrappedTileCoord),h))continue;const r=n.executorGroups[g];for(let e=0,n=r.length;e<n;++e)if(m=r[e].forEachFeatureAtCoordinate(t,s,o,i,u,p),m)break t}return m}getFeatures(t){return 0===this.renderedTiles.length?Promise.resolve([]):new Promise(((e,i)=>{const n=this.getLayer(),r=n.getSource(),s=this.renderedProjection,o=s.getExtent(),a=this.renderedResolution,l=r.getTileGridForProjection(s),h=qn(this.renderedPixelToCoordinateTransform_,t.slice()),c=l.getTileCoordForCoordAndResolution(h,a).toString(),u=this.renderedTiles.find((t=>t.tileCoord.toString()===c&&t.getState()===K));if(!u||u.loadingSourceTiles>0)return void e([]);r.getWrapX()&&s.canWrapX()&&!Ut(o,l.getTileCoordExtent(u.tileCoord))&&si(h,s);const d=z(n),g=de(l.getTileCoordExtent(u.wrappedTileCoord)),f=[(h[0]-g[0])/a,(g[1]-h[1])/a],p=u.getSourceTiles().reduce(((t,e)=>t.concat(e.getFeatures())),[]);let m=u.hitDetectionImageData[d];if(!m){const t=Nl(l.getTileSize(l.getZForResolution(a,r.zDirection))),e=this.renderedRotation_;m=zy(t,[this.getRenderTransform(l.getTileCoordCenter(u.wrappedTileCoord),a,0,By,t[0]*By,t[1]*By,0)],p,n.getStyleFunction(),l.getTileCoordExtent(u.wrappedTileCoord),u.getReplayState(n).renderedResolution,e),u.hitDetectionImageData[d]=m}e(Xy(f,p,m))}))}getFeaturesInExtent(t){const e=[],i=this.getTileCache();if(0===i.getCount())return e;const n=this.getLayer().getSource().getTileGridForProjection(this.frameState.viewState.projection),r=n.getZForResolution(this.renderedResolution),s={};return i.forEach((i=>{if(i.tileCoord[0]!==r||i.getState()!==K)return;const o=i.getSourceTiles();for(let i=0,r=o.length;i<r;++i){const r=o[i],a=r.getKey();if(a in s)continue;s[a]=!0;const l=r.tileCoord;if(pe(t,n.getTileCoordExtent(l))){const i=r.getFeatures();if(i)for(let n=0,r=i.length;n<r;++n){const r=i[n],s=r.getGeometry();pe(t,s.getExtent())&&e.push(r)}}}})),e}handleFontsChanged(){const t=this.getLayer();t.getVisible()&&void 0!==this.renderedLayerRevision_&&t.changed()}handleStyleImageChange_(t){this.renderIfReadyAndVisible()}renderDeclutter(t,e){const i=this.context,n=i.globalAlpha;i.globalAlpha=e.opacity;const r=t.viewHints,s=!(r[eo]||r[io]),o=[this.context.canvas.width,this.context.canvas.height],a=this.getLayer().getDeclutter(),l=a?t.declutter?.[a]:void 0,h=z(this.getLayer()),c=this.renderedTiles;for(let e=0,i=c.length;e<i;++e){const i=c[e],n=i.executorGroups[h];if(n)for(let e=n.length-1;e>=0;--e)n[e].execute(this.context,o,this.getTileRenderTransform(i,t),t.viewState.rotation,s,Ny,l)}i.globalAlpha=n}renderDeferredInternal(t){const e=this.renderedTiles,i=z(this.getLayer()),n=e.reduce(((t,e,n)=>(e.executorGroups[i].forEach((e=>t.push({executorGroup:e,index:n}))),t)),[]),r=n.map((({executorGroup:t})=>t.getDeferredZIndexContexts())),s={};for(let t=0,e=n.length;t<e;++t){const e=n[t].executorGroup.getDeferredZIndexContexts();for(const t in e)s[t]=!0}Object.keys(s).map(Number).sort(y).forEach((t=>{r.forEach(((e,i)=>{e[t]&&(e[t].forEach((t=>{const{executorGroup:e,index:r}=n[i],s=e.getRenderedContext(),o=s.globalAlpha;s.globalAlpha=this.renderedOpacity_;const a=this.tileClipContexts_[r];a&&a.draw(s),t.draw(s),a&&s.restore(),s.globalAlpha=o,t.clear()})),e[t].length=0)}))}))}getTileRenderTransform(t,e){const i=e.pixelRatio,n=e.viewState,r=n.center,s=n.resolution,o=n.rotation,a=e.size,l=Math.round(a[0]*i),h=Math.round(a[1]*i),c=this.getLayer().getSource().getTileGridForProjection(e.viewState.projection),u=t.tileCoord,d=c.getTileCoordExtent(t.wrappedTileCoord),g=c.getTileCoordExtent(u,this.tempExtent)[0]-d[0];return Yn(Qn(this.inversePixelTransform.slice(),1/i,1/i),this.getRenderTransform(r,s,o,i,l,h,g))}postRender(t,e){const i=e.viewHints,n=!(i[eo]||i[io]);this.renderedPixelToCoordinateTransform_=e.pixelToCoordinateTransform.slice(),this.renderedRotation_=e.viewState.rotation,this.renderedOpacity_=e.layerStatesArray[e.layerIndex].opacity;const r=this.getLayer(),s=r.getRenderMode(),o=t.globalAlpha;t.globalAlpha=this.renderedOpacity_;const a=r.getDeclutter(),l=a?Zy[s].filter((t=>!Ny.includes(t))):Zy[s],h=e.viewState,c=h.rotation,u=r.getSource(),d=u.getTileGridForProjection(h.projection).getZForResolution(h.resolution,u.zDirection),g=this.renderedTiles,f=[],p=[],m=[],_=z(r);let y=!0;for(let i=g.length-1;i>=0;--i){const s=g[i];y=y&&!s.getReplayState(r).dirty;const o=s.executorGroups[_].filter((t=>t.hasExecutors(l)));if(0===o.length)continue;const h=this.getTileRenderTransform(s,e),u=s.tileCoord[0];let x=!1;const v=o[0].getClipCoords(h);let E,S=t;if(v){E=new lf,S=E.getContext();for(let t=0,e=f.length;t<e;++t)if(d!==u&&u<p[t]){const e=f[t];pe([v[0],v[3],v[4],v[7]],[e[0],e[3],e[4],e[7]])&&(x||(S.save(),x=!0),S.beginPath(),S.moveTo(v[0],v[1]),S.lineTo(v[2],v[3]),S.lineTo(v[4],v[5]),S.lineTo(v[6],v[7]),S.moveTo(e[6],e[7]),S.lineTo(e[4],e[5]),S.lineTo(e[2],e[3]),S.lineTo(e[0],e[1]),S.clip())}f.push(v),p.push(u)}for(let i=0,r=o.length;i<r;++i){o[i].execute(t,[t.canvas.width,t.canvas.height],h,c,n,l,e.declutter?.[a])}x&&(S===t?S.restore():m[i]=E)}t.globalAlpha=o,this.ready=y,this.tileClipContexts_=m,e.declutter||this.renderDeferredInternal(e),super.postRender(t,e)}renderFeature(t,e,i,n,r,s){if(!i)return!1;let o=!1;if(Array.isArray(i))for(let a=0,l=i.length;a<l;++a)o=uu(n,t,i[a],e,this.boundHandleStyleImageChange_,void 0,r,s)||o;else o=uu(n,t,i,e,this.boundHandleStyleImageChange_,void 0,r,s);return o}tileImageNeedsRender_(t){const e=this.getLayer();if("vector"===e.getRenderMode())return!1;const i=t.getReplayState(e),n=e.getRevision(),r=t.wantedResolution;return i.renderedTileResolution!==r||i.renderedTileRevision!==n}renderTileImage_(t,e){const i=this.getLayer(),n=t.getReplayState(i),r=i.getRevision(),s=t.executorGroups[z(i)];n.renderedTileRevision=r;const o=t.wrappedTileCoord,a=o[0],l=i.getSource();let h=e.pixelRatio;const c=e.viewState.projection,u=l.getTileGridForProjection(c),d=u.getResolution(t.tileCoord[0]),g=e.pixelRatio/t.wantedResolution*d,f=u.getResolution(a),p=t.getContext();h=Math.round(Math.max(h,g/h));const m=l.getTilePixelSize(a,h,c);p.canvas.width=m[0],p.canvas.height=m[1];const _=h/g;if(1!==_){const t=Zn(this.tmpTransform_);Qn(t,_,_),p.setTransform.apply(p,t)}const y=u.getTileCoordExtent(o,this.tempExtent),x=g/f,v=Zn(this.tmpTransform_);Qn(v,x,-x),tr(v,-y[0],-y[3]);for(let t=0,e=s.length;t<e;++t){s[t].execute(p,[p.canvas.width*_,p.canvas.height*_],v,0,!0,Wy[i.getRenderMode()],null)}n.renderedTileResolution=t.wantedResolution}}let Hy=null;function Ky(t){Hy=t;const e=Object.keys(t.defs),i=e.length;let n,r;for(n=0;n<i;++n){const i=e[n];if(!bi(i)){const e=t.defs(i);let n=e.units;n||"longlat"!==e.projName||(n="degrees"),yn(new ci({code:i,axisOrientation:e.axis,metersPerUnit:e.to_meter,units:n}))}}for(n=0;n<i;++n){const s=e[n],o=bi(s);for(r=0;r<i;++r){const i=e[r],n=bi(i);if(!Mi(s,i))if(t.defs[s]===t.defs[i])Sn([o,n]);else{const e=t(s,i);Rn(o,n,Xn(o,n,e.forward),Xn(n,o,e.inverse))}}}}let qy=async function(t){const e=await fetch(`https://epsg.io/${t}.proj4`);if(!e.ok)throw new Error(`Unexpected response from epsg.io: ${e.status}`);return e.text()};const Jy=`\n  attribute vec2 ${Kp.TEXTURE_COORD};\n  uniform mat4 ${Hp.TILE_TRANSFORM};\n  uniform float ${Hp.TEXTURE_PIXEL_WIDTH};\n  uniform float ${Hp.TEXTURE_PIXEL_HEIGHT};\n  uniform float ${Hp.TEXTURE_RESOLUTION};\n  uniform float ${Hp.TEXTURE_ORIGIN_X};\n  uniform float ${Hp.TEXTURE_ORIGIN_Y};\n  uniform float ${Hp.DEPTH};\n\n  varying vec2 v_textureCoord;\n  varying vec2 v_mapCoord;\n\n  void main() {\n    v_textureCoord = ${Kp.TEXTURE_COORD};\n    v_mapCoord = vec2(\n      ${Hp.TEXTURE_ORIGIN_X} + ${Hp.TEXTURE_RESOLUTION} * ${Hp.TEXTURE_PIXEL_WIDTH} * v_textureCoord[0],\n      ${Hp.TEXTURE_ORIGIN_Y} - ${Hp.TEXTURE_RESOLUTION} * ${Hp.TEXTURE_PIXEL_HEIGHT} * v_textureCoord[1]\n    );\n    gl_Position = ${Hp.TILE_TRANSFORM} * vec4(${Kp.TEXTURE_COORD}, ${Hp.DEPTH}, 1.0);\n  }\n`,Qy=`\n  #ifdef GL_FRAGMENT_PRECISION_HIGH\n  precision highp float;\n  #else\n  precision mediump float;\n  #endif\n\n  uniform vec4 ${Hp.RENDER_EXTENT};\n  uniform float ${m_.MAX_SPEED};\n  uniform sampler2D ${Hp.TILE_TEXTURE_ARRAY}[1];\n\n  varying vec2 v_textureCoord;\n  varying vec2 v_mapCoord;\n\n  void main() {\n    if (\n      v_mapCoord[0] < ${Hp.RENDER_EXTENT}[0] ||\n      v_mapCoord[1] < ${Hp.RENDER_EXTENT}[1] ||\n      v_mapCoord[0] > ${Hp.RENDER_EXTENT}[2] ||\n      v_mapCoord[1] > ${Hp.RENDER_EXTENT}[3]\n    ) {\n      discard;\n    }\n\n    vec4 velocity = texture2D(${Hp.TILE_TEXTURE_ARRAY}[0],  v_textureCoord);\n    gl_FragColor = vec4((velocity.xy + ${m_.MAX_SPEED}) / (2.0 * ${m_.MAX_SPEED}), 0, 1);\n  }\n`,tx=`\n  #ifdef GL_FRAGMENT_PRECISION_HIGH\n  precision highp float;\n  #else\n  precision mediump float;\n  #endif\n\n  attribute vec2 ${__};\n\n  varying vec2 ${x_};\n\n  void main() {\n    ${x_} = ${__};\n    gl_Position = vec4(1.0 - 2.0 * ${__}, 0, 1);\n  }\n`,ex=`\n  #ifdef GL_FRAGMENT_PRECISION_HIGH\n  precision highp float;\n  #else\n  precision mediump float;\n  #endif\n\n  uniform sampler2D ${m_.TEXTURE};\n  uniform float ${m_.OPACITY};\n\n  varying vec2 ${x_};\n\n  void main() {\n    vec4 color = texture2D(${m_.TEXTURE}, 1.0 - ${x_});\n    gl_FragColor = vec4(floor(255.0 * color * ${m_.OPACITY}) / 255.0);\n  }\n`,ix=`\n  #ifdef GL_FRAGMENT_PRECISION_HIGH\n  precision highp float;\n  #else\n  precision mediump float;\n  #endif\n\n  uniform sampler2D ${m_.POSITION_TEXTURE};\n  uniform sampler2D ${m_.VELOCITY_TEXTURE};\n  uniform float ${m_.RANDOM_SEED};\n  uniform float ${m_.SPEED_FACTOR};\n  uniform float ${m_.DROP_RATE};\n  uniform float ${m_.DROP_RATE_BUMP};\n  uniform vec2 ${m_.ROTATION};\n  uniform vec2 ${m_.VIEWPORT_SIZE_PX};\n\n  varying vec2 ${x_};\n\n  // pseudo-random generator\n  const vec3 randConstants = vec3(12.9898, 78.233, 4375.85453);\n\n  float rand(const vec2 co) {\n    float t = dot(randConstants.xy, co);\n    return fract(sin(t) * (randConstants.z + t));\n  }\n\n  void main() {\n    vec4 positionColor = texture2D(${m_.POSITION_TEXTURE}, ${x_});\n\n    // decode particle position from pixel RGBA\n    vec2 particlePosition = vec2(\n      positionColor.r / 255.0 + positionColor.b,\n      positionColor.g / 255.0 + positionColor.a\n    );\n\n    vec4 velocityColor = texture2D(${m_.VELOCITY_TEXTURE}, particlePosition);\n    if (velocityColor.a == 0.0) {\n      discard;\n    }\n\n    float vx = 2.0 * velocityColor.r - 1.0;\n    float vy = 2.0 * velocityColor.g - 1.0;\n\n    // normalized veloicty (magnitude 0 - 1)\n    vec2 velocity = vec2(\n      vx * ${m_.ROTATION}.x - vy * ${m_.ROTATION}.y,\n      vx * ${m_.ROTATION}.y + vy * ${m_.ROTATION}.x\n    );\n\n    // account for aspect ratio (square particle position texture, non-square map)\n    float aspectRatio = ${m_.VIEWPORT_SIZE_PX}.x / ${m_.VIEWPORT_SIZE_PX}.y;\n    vec2 offset = vec2(velocity.x / aspectRatio, velocity.y) * ${m_.SPEED_FACTOR};\n\n    // update particle position, wrapping around the edge\n    particlePosition = fract(1.0 + particlePosition + offset);\n\n    // a random seed to use for the particle drop\n    vec2 seed = (particlePosition + ${x_}) * ${m_.RANDOM_SEED};\n\n    // drop rate is a chance a particle will restart at random position, to avoid degeneration\n    float dropRate = ${m_.DROP_RATE} + length(velocity) * ${m_.DROP_RATE_BUMP};\n    float drop = step(1.0 - dropRate, rand(seed));\n\n    vec2 randomPosition = vec2(rand(seed + 1.3), rand(seed + 2.1));\n    particlePosition = mix(particlePosition, randomPosition, drop);\n\n    // encode the new particle position back into RGBA\n    gl_FragColor = vec4(\n      fract(particlePosition * 255.0),\n      floor(particlePosition * 255.0) / 255.0\n    );\n  }\n`,nx=`\n  #ifdef GL_FRAGMENT_PRECISION_HIGH\n  precision highp float;\n  #else\n  precision mediump float;\n  #endif\n\n  attribute float ${y_};\n\n  uniform sampler2D ${m_.POSITION_TEXTURE};\n  uniform float ${m_.PARTICLE_COUNT_SQRT};\n\n  varying vec2 ${x_};\n\n  void main() {\n    vec4 color = texture2D(\n      ${m_.POSITION_TEXTURE},\n      vec2(\n        fract(${y_} / ${m_.PARTICLE_COUNT_SQRT}),\n        floor(${y_} / ${m_.PARTICLE_COUNT_SQRT}) / ${m_.PARTICLE_COUNT_SQRT}\n      )\n    );\n\n    ${x_} = vec2(\n      color.r / 255.0 + color.b,\n      color.g / 255.0 + color.a\n    );\n\n    gl_PointSize = 1.0;\n    gl_Position = vec4(\n      2.0 * ${x_}.x - 1.0,\n      2.0 * ${x_}.y - 1.0,\n      0,\n      1\n    );\n  }\n`;const rx=[];class sx extends wf{constructor(t){const e=Object.assign({},t);if(delete e.maxSpeed,delete e.speedFactor,delete e.particles,super(e),this.style_=t.style||{},!(t.maxSpeed>0))throw new Error("maxSpeed is required");this.maxSpeed_=t.maxSpeed,this.speedFactor_=t.speedFactor,this.particles_=t.particles,this.styleVariables_=this.style_.variables||{},this.addChangeListener(Da,this.handleSourceUpdate_)}handleSourceUpdate_(){this.hasRenderer()&&this.getRenderer().clearCache()}updateStyleVariables(t){Object.assign(this.styleVariables_,t),this.changed()}getSources(t,e){const i=this.getSource();return rx[0]=i,rx}createRenderer(){const t=function(t){const e={inFragmentShader:!1,variables:{},properties:{},functions:{},bandCount:0,featureId:!1,geometryType:!1};e.inFragmentShader=!0;const i=[];if(void 0!==t.color){const n=i_(e,t.color,Bl);i.push(`color = ${n};`)}const n=Object.keys(e.variables);if(n.length>1&&!t.variables)throw new Error(`Missing variables in style (expected ${e.variables})`);const r={};for(const e of n){if(!(e in t.variables))throw new Error(`Missing '${e}' in style variables`);r[am(e)]=function(){let i=t.variables[e];return"string"==typeof i&&(i=sm(i)),void 0!==i?i:-9999999}}const s=Object.keys(r).map((function(t){return`uniform float ${t};`})),o=Object.keys(e.functions).map((function(t){return e.functions[t]})),a=`\n    #ifdef GL_FRAGMENT_PRECISION_HIGH\n    precision highp float;\n    #else\n    precision mediump float;\n    #endif\n\n    uniform sampler2D ${m_.VELOCITY_TEXTURE};\n    uniform float ${m_.MAX_SPEED};\n    uniform vec2 ${m_.ROTATION};\n\n    ${s.join("\n")}\n\n    varying vec2 ${x_};\n    \n    ${o.join("\n")}\n\n    void main() {\n      vec4 velocityColor = texture2D(${m_.VELOCITY_TEXTURE}, ${x_});\n\n      float vx = mix(-${m_.MAX_SPEED}, ${m_.MAX_SPEED}, velocityColor.r);\n      float vy = mix(-${m_.MAX_SPEED}, ${m_.MAX_SPEED}, velocityColor.g);\n\n      vec2 velocity = vec2(\n        vx * ${m_.ROTATION}.x - vy * ${m_.ROTATION}.y,\n        vx * ${m_.ROTATION}.y + vy * ${m_.ROTATION}.x\n      );\n\n      float v_prop_speed = length(velocity);\n\n      vec4 color;\n\n      ${i.join("\n")}\n\n      if (color.a == 0.0) {\n        discard;\n      }\n\n      gl_FragColor = color;\n    }\n  `;return{tileVertexShader:Jy,tileFragmentShader:Qy,particleColorVertexShader:nx,particleColorFragmentShader:a,particlePositionVertexShader:tx,particlePositionFragmentShader:ix,textureVertexShader:tx,textureFragmentShader:ex}}(this.style_);return new v_(this,{...t,cacheSize:this.getCacheSize(),maxSpeed:this.maxSpeed_,speedFactor:this.speedFactor_,particles:this.particles_})}}function ox(t,e,i){const n=[];let r=t(0),s=t(1),o=e(r),a=e(s);const l=[s,r],h=[a,o],c=[1,0],u={};let d,g,f,p,m,_,y=1e5;for(;--y>0&&c.length>0;)f=c.pop(),r=l.pop(),o=h.pop(),_=f.toString(),_ in u||(n.push(o[0],o[1]),u[_]=!0),p=c.pop(),s=l.pop(),a=h.pop(),m=(f+p)/2,d=t(m),g=e(d),Te(g[0],g[1],o[0],o[1],a[0],a[1])<i?(n.push(a[0],a[1]),_=p.toString(),u[_]=!0):(c.push(p,m,m,f),h.push(a,g,g,o),l.push(s,d,d,r));return n}function ax(t,e,i,n,r){return ox((function(n){return[t,e+(i-e)*n]}),Fn(vn("EPSG:4326"),n),r)}function lx(t,e,i,n,r){return ox((function(n){return[e+(i-e)*n,t]}),Fn(vn("EPSG:4326"),n),r)}sx.prototype.dispose;class hx extends Ic{constructor(t){super(t)}createRenderer(){return new Vy(this)}}const cx=new Kh({color:"rgba(0,0,0,0.2)"}),ux=[90,45,30,20,10,5,2,1,.5,20/60,10/60,5/60,2/60,1/60,30/3600,20/3600,10/3600,5/3600,2/3600,1/3600];const dx="blur",gx="gradient",fx="radius",px=["#00f","#0ff","#0f0","#ff0","#f00"];function mx(t,e){const i=`\n    attribute vec2 ${Kp.TEXTURE_COORD};\n    uniform mat4 ${Hp.TILE_TRANSFORM};\n    uniform float ${Hp.TEXTURE_PIXEL_WIDTH};\n    uniform float ${Hp.TEXTURE_PIXEL_HEIGHT};\n    uniform float ${Hp.TEXTURE_RESOLUTION};\n    uniform float ${Hp.TEXTURE_ORIGIN_X};\n    uniform float ${Hp.TEXTURE_ORIGIN_Y};\n    uniform float ${Hp.DEPTH};\n\n    varying vec2 v_textureCoord;\n    varying vec2 v_mapCoord;\n\n    void main() {\n      v_textureCoord = ${Kp.TEXTURE_COORD};\n      v_mapCoord = vec2(\n        ${Hp.TEXTURE_ORIGIN_X} + ${Hp.TEXTURE_RESOLUTION} * ${Hp.TEXTURE_PIXEL_WIDTH} * v_textureCoord[0],\n        ${Hp.TEXTURE_ORIGIN_Y} - ${Hp.TEXTURE_RESOLUTION} * ${Hp.TEXTURE_PIXEL_HEIGHT} * v_textureCoord[1]\n      );\n      gl_Position = ${Hp.TILE_TRANSFORM} * vec4(${Kp.TEXTURE_COORD}, ${Hp.DEPTH}, 1.0);\n    }\n  `,n={inFragmentShader:!1,variables:{},properties:{},functions:{},bandCount:0,featureId:!1,geometryType:!1,inFragmentShader:!0,bandCount:e},r=[];if(void 0!==t.color){const e=i_(n,t.color,Bl);r.push(`color = ${e};`)}if(void 0!==t.contrast){const e=i_(n,t.contrast,jl);r.push(`color.rgb = clamp((${e} + 1.0) * color.rgb - (${e} / 2.0), vec3(0.0, 0.0, 0.0), vec3(1.0, 1.0, 1.0));`)}if(void 0!==t.exposure){const e=i_(n,t.exposure,jl);r.push(`color.rgb = clamp((${e} + 1.0) * color.rgb, vec3(0.0, 0.0, 0.0), vec3(1.0, 1.0, 1.0));`)}if(void 0!==t.saturation){const e=i_(n,t.saturation,jl);r.push(`\n      float saturation = ${e} + 1.0;\n      float sr = (1.0 - saturation) * 0.2126;\n      float sg = (1.0 - saturation) * 0.7152;\n      float sb = (1.0 - saturation) * 0.0722;\n      mat3 saturationMatrix = mat3(\n        sr + saturation, sr, sr,\n        sg, sg + saturation, sg,\n        sb, sb, sb + saturation\n      );\n      color.rgb = clamp(saturationMatrix * color.rgb, vec3(0.0, 0.0, 0.0), vec3(1.0, 1.0, 1.0));\n    `)}if(void 0!==t.gamma){const e=i_(n,t.gamma,jl);r.push(`color.rgb = pow(color.rgb, vec3(1.0 / ${e}));`)}if(void 0!==t.brightness){const e=i_(n,t.brightness,jl);r.push(`color.rgb = clamp(color.rgb + ${e}, vec3(0.0, 0.0, 0.0), vec3(1.0, 1.0, 1.0));`)}const s={},o=Object.keys(n.variables).length;if(o>1&&!t.variables)throw new Error(`Missing variables in style (expected ${n.variables})`);for(let e=0;e<o;++e){const i=n.variables[Object.keys(n.variables)[e]];if(!(i.name in t.variables))throw new Error(`Missing '${i.name}' in style variables`);s[am(i.name)]=function(){let e=t.variables[i.name];return"string"==typeof e&&(e=sm(e)),void 0!==e?e:-9999999}}const a=Object.keys(s).map((function(t){return`uniform float ${t};`})),l=Math.ceil(e/4);a.push(`uniform sampler2D ${Hp.TILE_TEXTURE_ARRAY}[${l}];`),n.paletteTextures&&a.push(`uniform sampler2D ${cm}[${n.paletteTextures.length}];`);const h=Object.keys(n.functions).map((function(t){return n.functions[t]}));return{vertexShader:i,fragmentShader:`\n    #ifdef GL_FRAGMENT_PRECISION_HIGH\n    precision highp float;\n    #else\n    precision mediump float;\n    #endif\n\n    varying vec2 v_textureCoord;\n    varying vec2 v_mapCoord;\n    uniform vec4 ${Hp.RENDER_EXTENT};\n    uniform float ${Hp.TRANSITION_ALPHA};\n    uniform float ${Hp.TEXTURE_PIXEL_WIDTH};\n    uniform float ${Hp.TEXTURE_PIXEL_HEIGHT};\n    uniform float ${Hp.RESOLUTION};\n    uniform float ${Hp.ZOOM};\n\n    ${a.join("\n")}\n\n    ${h.join("\n")}\n\n    void main() {\n      if (\n        v_mapCoord[0] < ${Hp.RENDER_EXTENT}[0] ||\n        v_mapCoord[1] < ${Hp.RENDER_EXTENT}[1] ||\n        v_mapCoord[0] > ${Hp.RENDER_EXTENT}[2] ||\n        v_mapCoord[1] > ${Hp.RENDER_EXTENT}[3]\n      ) {\n        discard;\n      }\n\n      vec4 color = texture2D(${Hp.TILE_TEXTURE_ARRAY}[0],  v_textureCoord);\n\n      ${r.join("\n")}\n\n      gl_FragColor = color;\n      gl_FragColor.rgb *= gl_FragColor.a;\n      gl_FragColor *= ${Hp.TRANSITION_ALPHA};\n    }`,uniforms:s,paletteTextures:n.paletteTextures}}class _x extends wf{constructor(t){const e=(t=t?Object.assign({},t):{}).style||{};delete t.style,super(t),this.sources_=t.sources,this.renderedSource_=null,this.renderedResolution_=NaN,this.style_=e,this.styleVariables_=this.style_.variables||{},this.handleSourceUpdate_(),this.addChangeListener(Da,this.handleSourceUpdate_)}getSources(t,e){const i=this.getSource();return this.sources_?"function"==typeof this.sources_?this.sources_(t,e):this.sources_:i?[i]:[]}getRenderSource(){return this.renderedSource_||this.getSource()}getSourceState(){const t=this.getRenderSource();return t?t.getState():"undefined"}handleSourceUpdate_(){this.hasRenderer()&&this.getRenderer().clearCache();const t=this.getSource();if(t)if("loading"===t.getState()){const e=()=>{"ready"===t.getState()&&(t.removeEventListener("change",e),this.setStyle(this.style_))};t.addEventListener("change",e)}else this.setStyle(this.style_)}getSourceBandCount_(){const t=Number.MAX_SAFE_INTEGER,e=this.getSources([-t,-t,t,t],t);return e&&e.length&&"bandCount"in e[0]?e[0].bandCount:4}createRenderer(){const t=mx(this.style_,this.getSourceBandCount_());return new Jp(this,{vertexShader:t.vertexShader,fragmentShader:t.fragmentShader,uniforms:t.uniforms,cacheSize:this.getCacheSize(),paletteTextures:t.paletteTextures})}renderSources(t,e){const i=this.getRenderer();let n;for(let r=0,s=e.length;r<s;++r)this.renderedSource_=e[r],i.prepareFrame(t)&&(n=i.renderFrame(t));return n}render(t,e){this.rendered=!0;const i=t.viewState,n=this.getSources(t.extent,i.resolution);let r=!0;for(let t=0,e=n.length;t<e;++t){const e=n[t],i=e.getState();if("loading"==i){const t=()=>{"ready"==e.getState()&&(e.removeEventListener("change",t),this.changed())};e.addEventListener("change",t)}r=r&&"ready"==i}const s=this.renderSources(t,n);if(this.getRenderer().renderComplete&&r)return this.renderedResolution_=i.resolution,s;if(this.renderedResolution_>.5*i.resolution){const e=this.getSources(t.extent,this.renderedResolution_).filter((t=>!n.includes(t)));if(e.length>0)return this.renderSources(t,e)}return s}setStyle(t){if(this.styleVariables_=t.variables||{},this.style_=t,this.hasRenderer()){const t=mx(this.style_,this.getSourceBandCount_());this.getRenderer().reset({vertexShader:t.vertexShader,fragmentShader:t.fragmentShader,uniforms:t.uniforms,paletteTextures:t.paletteTextures}),this.changed()}}updateStyleVariables(t){Object.assign(this.styleVariables_,t),this.changed()}}_x.prototype.dispose;const yx="addfeatures";class xx extends M{constructor(t,e,i,n){super(t),this.features=i,this.file=e,this.projection=n}}const vx="drawstart",Ex="drawend",Sx="drawabort";class wx extends M{constructor(t,e){super(t),this.feature=e}}function Tx(t,e){return Ce(t[0],t[1],e[0],e[1])}function Cx(t,e){const i=t.length;return e<0?t[e+i]:e>=i?t[e-i]:t[e]}function Rx(t,e,i){let n,r;e<i?(n=e,r=i):(n=i,r=e);const s=Math.ceil(n),o=Math.floor(r);if(s>o){return Tx(Mx(t,n),Mx(t,r))}let a=0;if(n<s){a+=Tx(Mx(t,n),Cx(t,s))}if(o<r){a+=Tx(Cx(t,o),Mx(t,r))}for(let e=s;e<o-1;++e){a+=Tx(Cx(t,e),Cx(t,e+1))}return a}function bx(t,e,i){if(e instanceof Ed)Ix(t,e.getCoordinates(),!1,i);else if(e instanceof Sd){const n=e.getCoordinates();for(let e=0,r=n.length;e<r;++e)Ix(t,n[e],!1,i)}else if(e instanceof ls){const n=e.getCoordinates();for(let e=0,r=n.length;e<r;++e)Ix(t,n[e],!0,i)}else if(e instanceof Td){const n=e.getCoordinates();for(let e=0,r=n.length;e<r;++e){const r=n[e];for(let e=0,n=r.length;e<n;++e)Ix(t,r[e],!0,i)}}else if(e instanceof yd){const n=e.getGeometries();for(let e=0;e<n.length;++e)bx(t,n[e],i)}else;}const Px={index:-1,endIndex:NaN};function Ix(t,e,i,n){const r=t[0],s=t[1];for(let t=0,o=e.length-1;t<o;++t){const o=Fx(r,s,e[t],e[t+1]);if(0===o.squaredDistance){const r=t+o.along;return void n.push({coordinates:e,ring:i,startIndex:r,endIndex:r})}}}const Lx={along:0,squaredDistance:0};function Fx(t,e,i,n){const r=i[0],s=i[1],o=n[0]-r,a=n[1]-s;let l=0,h=r,c=s;return 0===o&&0===a||(l=we(((t-r)*o+(e-s)*a)/(o*o+a*a),0,1),h+=o*l,c+=a*l),Lx.along=l,Lx.squaredDistance=Fe(Ce(t,e,h,c),10),Lx}function Mx(t,e){const i=t.length;let n=Math.floor(e);const r=e-n;n>=i?n-=i:n<0&&(n+=i);let s=n+1;s>=i&&(s-=i);const o=t[n],a=o[0],l=o[1],h=t[s];return[a+(h[0]-a)*r,l+(h[1]-l)*r]}function Ax(){const t=ec();return function(e,i){return t[e.getGeometry().getType()]}}const Ox="extentchanged";class Dx extends M{constructor(t){super(Ox),this.extent=t}}function Nx(){const t=ec();return function(e,i){return t.Polygon}}function kx(){const t=ec();return function(e,i){return t.Point}}function Gx(t){return function(e){return Dt([t,e])}}function jx(t,e){return t[0]==e[0]?function(i){return Dt([t,[i[0],e[1]]])}:t[1]==e[1]?function(i){return Dt([t,[e[0],i[1]]])}:null}function Ux(t){return parseFloat(t)}function Bx(t){return function(t){return Fe(t,5)}(t).toString()}function zx(t,e){return!isNaN(t)&&t!==Ux(Bx(e))}const Xx=[0,0,0,0],Vx=[],$x="modifystart",Wx="modifyend";class Zx extends M{constructor(t,e,i){super(t),this.features=e,this.mapBrowserEvent=i}}function Yx(t,e){return t.index-e.index}function Hx(t,e,i){const n=e.geometry;if("Circle"===n.getType()){let r=n;if(1===e.index){const e=Nn();e&&(r=r.clone().transform(e,i));const n=ei(r.getCenter(),Gn(t,i)),s=Math.sqrt(n)-r.getRadius();return s*s}}const r=Gn(t,i);return Vx[0]=Gn(e.segment[0],i),Vx[1]=Gn(e.segment[1],i),ni(r,Vx)}function Kx(t,e,i){const n=e.geometry;if("Circle"===n.getType()&&1===e.index){let e=n;const r=Nn();return r&&(e=e.clone().transform(r,i)),kn(e.getClosestPoint(Gn(t,i)),i)}const r=Gn(t,i);return Vx[0]=Gn(e.segment[0],i),Vx[1]=Gn(e.segment[1],i),kn(He(r,Vx),i)}function qx(){const t=ec();return function(e,i){return t.Point}}const Jx="select";class Qx extends M{constructor(t,e,i,n){super(t),this.selected=e,this.deselected=i,this.mapBrowserEvent=n}}const tv={};class ev extends Uo{constructor(t){let e;if(super(),this.on,this.once,this.un,t=t||{},this.boundAddFeature_=this.addFeature_.bind(this),this.boundRemoveFeature_=this.removeFeature_.bind(this),this.condition_=t.condition?t.condition:Jo,this.addCondition_=t.addCondition?t.addCondition:qo,this.removeCondition_=t.removeCondition?t.removeCondition:qo,this.toggleCondition_=t.toggleCondition?t.toggleCondition:ea,this.multi_=!!t.multi&&t.multi,this.filter_=t.filter?t.filter:C,this.hitTolerance_=t.hitTolerance?t.hitTolerance:0,this.style_=void 0!==t.style?t.style:function(){const t=ec();return S(t.Polygon,t.LineString),S(t.GeometryCollection,t.LineString),function(e){return e.getGeometry()?t[e.getGeometry().getType()]:null}}(),this.features_=t.features||new Z,t.layers)if("function"==typeof t.layers)e=t.layers;else{const i=t.layers;e=function(t){return i.includes(t)}}else e=C;this.layerFilter_=e,this.featureLayerAssociation_={}}addFeatureLayerAssociation_(t,e){this.featureLayerAssociation_[z(t)]=e}getFeatures(){return this.features_}getHitTolerance(){return this.hitTolerance_}getLayer(t){return this.featureLayerAssociation_[z(t)]}setHitTolerance(t){this.hitTolerance_=t}setMap(i){this.getMap()&&this.style_&&this.features_.forEach(this.restorePreviousStyle_.bind(this)),super.setMap(i),i?(this.features_.addEventListener(t,this.boundAddFeature_),this.features_.addEventListener(e,this.boundRemoveFeature_),this.style_&&this.features_.forEach(this.applySelectedStyle_.bind(this))):(this.features_.removeEventListener(t,this.boundAddFeature_),this.features_.removeEventListener(e,this.boundRemoveFeature_))}addFeature_(t){const e=t.element;if(this.style_&&this.applySelectedStyle_(e),!this.getLayer(e)){const t=this.getMap().getAllLayers().find((function(t){if(t instanceof hx&&t.getSource()&&t.getSource().hasFeature(e))return t}));t&&this.addFeatureLayerAssociation_(e,t)}}removeFeature_(t){this.style_&&this.restorePreviousStyle_(t.element)}getStyle(){return this.style_}applySelectedStyle_(t){const e=z(t);e in tv||(tv[e]=t.getStyle()),t.setStyle(this.style_)}restorePreviousStyle_(t){const e=this.getMap().getInteractions().getArray();for(let i=e.length-1;i>=0;--i){const n=e[i];if(n!==this&&n instanceof ev&&n.getStyle()&&-1!==n.getFeatures().getArray().lastIndexOf(t))return void t.setStyle(n.getStyle())}const i=z(t);t.setStyle(tv[i]),delete tv[i]}removeFeatureLayerAssociation_(t){delete this.featureLayerAssociation_[z(t)]}handleEvent(t){if(!this.condition_(t))return!0;const e=this.addCondition_(t),i=this.removeCondition_(t),n=this.toggleCondition_(t),r=!e&&!i&&!n,s=t.map,o=this.getFeatures(),a=[],l=[];if(r){L(this.featureLayerAssociation_),s.forEachFeatureAtPixel(t.pixel,((t,e)=>{if(t instanceof Mt&&this.filter_(t,e))return this.addFeatureLayerAssociation_(t,e),l.push(t),!this.multi_}),{layerFilter:this.layerFilter_,hitTolerance:this.hitTolerance_});for(let t=o.getLength()-1;t>=0;--t){const e=o.item(t),i=l.indexOf(e);i>-1?l.splice(i,1):(o.remove(e),a.push(e))}0!==l.length&&o.extend(l)}else{s.forEachFeatureAtPixel(t.pixel,((t,r)=>{if(t instanceof Mt&&this.filter_(t,r))return!e&&!n||o.getArray().includes(t)?(i||n)&&o.getArray().includes(t)&&(a.push(t),this.removeFeatureLayerAssociation_(t)):(this.addFeatureLayerAssociation_(t,r),l.push(t)),!this.multi_}),{layerFilter:this.layerFilter_,hitTolerance:this.hitTolerance_});for(let t=a.length-1;t>=0;--t)o.remove(a[t]);o.extend(l)}return(l.length>0||a.length>0)&&this.dispatchEvent(new Qx(Jx,l,a,t)),!0}}const iv="snap";class nv extends M{constructor(t,e){super(t),this.vertex=e.vertex,this.vertexPixel=e.vertexPixel,this.feature=e.feature,this.segment=e.segment}}function rv(t){return t.feature?t.feature:t.element?t.element:null}const sv=[];const ov="translatestart",av="translating",lv="translateend";class hv extends M{constructor(t,e,i,n,r){super(t),this.features=e,this.coordinate=i,this.startCoordinate=n,this.mapBrowserEvent=r}}function cv(t,e,i,n,r,s){void 0!==r?s=void 0!==s?s:0:(r=[],s=0);let o=e;for(;o<i;){const e=t[o++];r[s++]=t[o++],r[s++]=e;for(let e=2;e<n;++e)r[s++]=t[o++]}return r.length=s,r}class uv{constructor(){this.dataProjection=void 0,this.defaultFeatureProjection=void 0,this.featureClass=Mt,this.supportedMediaTypes=null}getReadOptions(t,e){if(e){let i=e.dataProjection?vn(e.dataProjection):this.readProjection(t);e.extent&&i&&"tile-pixels"===i.getUnits()&&(i=vn(i),i.setWorldExtent(e.extent)),e={dataProjection:i,featureProjection:e.featureProjection}}return this.adaptOptions(e)}adaptOptions(t){return Object.assign({dataProjection:this.dataProjection,featureProjection:this.defaultFeatureProjection,featureClass:this.featureClass},t)}getType(){return U()}readFeature(t,e){return U()}readFeatures(t,e){return U()}readGeometry(t,e){return U()}readProjection(t){return U()}writeFeature(t,e){return U()}writeFeatures(t,e){return U()}writeGeometry(t,e){return U()}}function dv(t,e,i){const n=i?vn(i.featureProjection):null,r=i?vn(i.dataProjection):null;let s=t;if(n&&r&&!Pn(n,r)){e&&(s=t.clone());const i=e?n:r,o=e?r:n;"tile-pixels"===i.getUnits()?s.transform(i,o):s.applyTransform(Fn(i,o))}if(e&&i&&void 0!==i.decimals){const e=Math.pow(10,i.decimals),n=function(t){for(let i=0,n=t.length;i<n;++i)t[i]=Math.round(t[i]*e)/e;return t};s===t&&(s=t.clone()),s.applyTransform(n)}return s}function gv(t,e){const i=e?vn(e.featureProjection):null,n=e?vn(e.dataProjection):null;return i&&n&&!Pn(i,n)?An(t,n,i):t}const fv={Point:zr,LineString:Ed,Polygon:ls,MultiPoint:wd,MultiLineString:Sd,MultiPolygon:Td};function pv(t,e){const i=t.geometry;if(!i)return[];if(Array.isArray(i))return i.map((e=>pv({...t,geometry:e}))).flat();const n="MultiPolygon"===i.type?"Polygon":i.type;if("GeometryCollection"===n||"Circle"===n)throw new Error("Unsupported geometry type: "+n);const r=i.layout.length;return dv(new Rd(n,"Polygon"===n?function(t,e,i){return Array.isArray(e[0])?(rs(t,0,e,i)||os(t=t.slice(),0,e,i),t):(ns(t,0,e,i)||ss(t=t.slice(),0,e,i),t)}(i.flatCoordinates,i.ends,r):i.flatCoordinates,i.ends?.flat(),r,t.properties||{},t.id).enableSimplifyTransformed(),!1,e)}function mv(t,e){if(!t)return null;if(Array.isArray(t)){const i=t.map((t=>mv(t,e)));return new yd(i)}return dv(new(0,fv[t.type])(t.flatCoordinates,t.layout||"XY",t.ends),!1,e)}class _v extends uv{constructor(){super()}getType(){return"json"}readFeature(t,e){return this.readFeatureFromObject(yv(t),this.getReadOptions(t,e))}readFeatures(t,e){return this.readFeaturesFromObject(yv(t),this.getReadOptions(t,e))}readFeatureFromObject(t,e){return U()}readFeaturesFromObject(t,e){return U()}readGeometry(t,e){return this.readGeometryFromObject(yv(t),this.getReadOptions(t,e))}readGeometryFromObject(t,e){return U()}readProjection(t){return this.readProjectionFromObject(yv(t))}readProjectionFromObject(t){return U()}writeFeature(t,e){return JSON.stringify(this.writeFeatureObject(t,e))}writeFeatureObject(t,e){return U()}writeFeatures(t,e){return JSON.stringify(this.writeFeaturesObject(t,e))}writeFeaturesObject(t,e){return U()}writeGeometry(t,e){return JSON.stringify(this.writeGeometryObject(t,e))}writeGeometryObject(t,e){return U()}}function yv(t){if("string"==typeof t){const e=JSON.parse(t);return e||null}return null!==t?t:null}const xv={Point:function(t){let e;e=void 0!==t.m&&void 0!==t.z?new zr([t.x,t.y,t.z,t.m],"XYZM"):void 0!==t.z?new zr([t.x,t.y,t.z],"XYZ"):void 0!==t.m?new zr([t.x,t.y,t.m],"XYM"):new zr([t.x,t.y]);return e},LineString:function(t){const e=Sv(t);return new Ed(t.paths[0],e)},Polygon:function(t){const e=Sv(t);return new ls(t.rings,e)},MultiPoint:function(t){const e=Sv(t);return new wd(t.points,e)},MultiLineString:function(t){const e=Sv(t);return new Sd(t.paths,e)},MultiPolygon:function(t){const e=Sv(t);return new Td(t.rings,e)}},vv={Point:function(t,e){const i=t.getCoordinates();let n;const r=t.getLayout();if("XYZ"===r)n={x:i[0],y:i[1],z:i[2]};else if("XYM"===r)n={x:i[0],y:i[1],m:i[2]};else if("XYZM"===r)n={x:i[0],y:i[1],z:i[2],m:i[3]};else{if("XY"!==r)throw new Error("Invalid geometry layout");n={x:i[0],y:i[1]}}return n},LineString:function(t,e){const i=wv(t);return{hasZ:i.hasZ,hasM:i.hasM,paths:[t.getCoordinates()]}},Polygon:function(t,e){const i=wv(t);return{hasZ:i.hasZ,hasM:i.hasM,rings:t.getCoordinates(!1)}},MultiPoint:function(t,e){const i=wv(t);return{hasZ:i.hasZ,hasM:i.hasM,points:t.getCoordinates()}},MultiLineString:function(t,e){const i=wv(t);return{hasZ:i.hasZ,hasM:i.hasM,paths:t.getCoordinates()}},MultiPolygon:function(t,e){const i=wv(t),n=t.getCoordinates(!1),r=[];for(let t=0;t<n.length;t++)for(let e=n[t].length-1;e>=0;e--)r.push(n[t][e]);return{hasZ:i.hasZ,hasM:i.hasM,rings:r}}};function Ev(t,e){if(!t)return null;let i;if("number"==typeof t.x&&"number"==typeof t.y)i="Point";else if(t.points)i="MultiPoint";else if(t.paths){i=1===t.paths.length?"LineString":"MultiLineString"}else if(t.rings){const e=t,n=Sv(e),r=function(t,e){const i=[],n=[],r=[];let s,o;for(s=0,o=t.length;s<o;++s){i.length=0,Pr(i,0,t[s],e.length);is(i,0,i.length,e.length)?n.push([t[s]]):r.push(t[s])}for(;r.length;){const t=r.shift();let e=!1;for(s=n.length-1;s>=0;s--){const i=n[s][0];if(Ut(new Br(i).getExtent(),new Br(t).getExtent())){n[s].push(t),e=!0;break}}e||n.push([t.reverse()])}return n}(e.rings,n);1===r.length?(i="Polygon",t=Object.assign({},t,{rings:r[0]})):(i="MultiPolygon",t=Object.assign({},t,{rings:r}))}return dv((0,xv[i])(t),!1,e)}function Sv(t){let e="XY";return!0===t.hasZ&&!0===t.hasM?e="XYZM":!0===t.hasZ?e="XYZ":!0===t.hasM&&(e="XYM"),e}function wv(t){const e=t.getLayout();return{hasZ:"XYZ"===e||"XYZM"===e,hasM:"XYM"===e||"XYZM"===e}}function Tv(t,e){return(0,vv[t.getType()])(dv(t,!0,e),e)}class Cv extends uv{constructor(){super(),this.xmlSerializer_=mp()}getType(){return"xml"}readFeature(t,e){if(!t)return null;if("string"==typeof t){const i=Jf(t);return this.readFeatureFromDocument(i,e)}return Kf(t)?this.readFeatureFromDocument(t,e):this.readFeatureFromNode(t,e)}readFeatureFromDocument(t,e){const i=this.readFeaturesFromDocument(t,e);return i.length>0?i[0]:null}readFeatureFromNode(t,e){return null}readFeatures(t,e){if(!t)return[];if("string"==typeof t){const i=Jf(t);return this.readFeaturesFromDocument(i,e)}return Kf(t)?this.readFeaturesFromDocument(t,e):this.readFeaturesFromNode(t,e)}readFeaturesFromDocument(t,e){const i=[];for(let n=t.firstChild;n;n=n.nextSibling)n.nodeType==Node.ELEMENT_NODE&&S(i,this.readFeaturesFromNode(n,e));return i}readFeaturesFromNode(t,e){return U()}readGeometry(t,e){if(!t)return null;if("string"==typeof t){const i=Jf(t);return this.readGeometryFromDocument(i,e)}return Kf(t)?this.readGeometryFromDocument(t,e):this.readGeometryFromNode(t,e)}readGeometryFromDocument(t,e){return null}readGeometryFromNode(t,e){return null}readProjection(t){if(!t)return null;if("string"==typeof t){const e=Jf(t);return this.readProjectionFromDocument(e)}return Kf(t)?this.readProjectionFromDocument(t):this.readProjectionFromNode(t)}readProjectionFromDocument(t){return this.dataProjection}readProjectionFromNode(t){return this.dataProjection}writeFeature(t,e){const i=this.writeFeatureNode(t,e);return this.xmlSerializer_.serializeToString(i)}writeFeatureNode(t,e){return null}writeFeatures(t,e){const i=this.writeFeaturesNode(t,e);return this.xmlSerializer_.serializeToString(i)}writeFeaturesNode(t,e){return null}writeGeometry(t,e){const i=this.writeGeometryNode(t,e);return this.xmlSerializer_.serializeToString(i)}writeGeometryNode(t,e){return null}}const Rv="http://www.opengis.net/gml",bv=/^\s*$/;class Pv extends Cv{constructor(t){super(),t=t||{},this.featureType=t.featureType,this.featureNS=t.featureNS,this.srsName=t.srsName,this.schemaLocation="",this.FEATURE_COLLECTION_PARSERS={},this.FEATURE_COLLECTION_PARSERS[this.namespace]={featureMember:tp(this.readFeaturesInternal),featureMembers:ep(this.readFeaturesInternal)},this.supportedMediaTypes=["application/gml+xml"]}readFeaturesInternal(t,e){const i=t.localName;let n=null;if("FeatureCollection"==i)n=up([],this.FEATURE_COLLECTION_PARSERS,t,e,this);else if("featureMembers"==i||"featureMember"==i||"member"==i){const r=e[0];let s=r.featureType,o=r.featureNS;const a="p",l="p0";if(!s&&t.childNodes){s=[],o={};for(let e=0,i=t.childNodes.length;e<i;++e){const i=t.childNodes[e];if(1===i.nodeType){const t=i.nodeName.split(":").pop();if(!s.includes(t)){let e="",n=0;const r=i.namespaceURI;for(const t in o){if(o[t]===r){e=t;break}++n}e||(e=a+n,o[e]=r),s.push(e+":"+t)}}}"featureMember"!=i&&(r.featureType=s,r.featureNS=o)}if("string"==typeof o){const t=o;o={},o[l]=t}const h={},c=Array.isArray(s)?s:[s];for(const t in o){const e={};for(let n=0,r=c.length;n<r;++n){(c[n].includes(":")?c[n].split(":")[0]:l)===t&&(e[c[n].split(":").pop()]="featureMembers"==i?tp(this.readFeatureElement,this):ep(this.readFeatureElement,this))}h[o[t]]=e}n=up("featureMember"==i||"member"==i?void 0:[],h,t,e)}return null===n&&(n=[]),n}readGeometryOrExtent(t,e){const i=e[0];return i.srsName=t.firstElementChild.getAttribute("srsName"),i.srsDimension=t.firstElementChild.getAttribute("srsDimension"),up(null,this.GEOMETRY_PARSERS,t,e,this)}readExtentElement(t,e){const i=e[0],n=this.readGeometryOrExtent(t,e);return n?gv(n,i):void 0}readGeometryElement(t,e){const i=e[0],n=this.readGeometryOrExtent(t,e);return n?dv(n,!1,i):void 0}readFeatureElementInternal(t,e,i){let n;const r={};for(let s=t.firstElementChild;s;s=s.nextElementSibling){let t;const o=s.localName;0===s.childNodes.length||1===s.childNodes.length&&(3===s.firstChild.nodeType||4===s.firstChild.nodeType)?(t=Yf(s,!1),bv.test(t)&&(t=void 0)):(i&&(t="boundedBy"===o?this.readExtentElement(s,e):this.readGeometryElement(s,e)),t?"boundedBy"!==o&&(n=o):t=this.readFeatureElementInternal(s,e,!1));const a=s.attributes.length;if(a>0&&!(t instanceof dr)){t={_content_:t};for(let e=0;e<a;e++){t[s.attributes[e].name]=s.attributes[e].value}}r[o]?(r[o]instanceof Array||(r[o]=[r[o]]),r[o].push(t)):r[o]=t}if(!i)return r;const s=new Mt(r);n&&s.setGeometryName(n);const o=t.getAttribute("fid")||qf(t,this.namespace,"id");return o&&s.setId(o),s}readFeatureElement(t,e){return this.readFeatureElementInternal(t,e,!0)}readPoint(t,e){const i=this.readFlatCoordinatesFromNode(t,e);if(i)return new zr(i,"XYZ")}readMultiPoint(t,e){const i=up([],this.MULTIPOINT_PARSERS,t,e,this);if(i)return new wd(i)}readMultiLineString(t,e){const i=up([],this.MULTILINESTRING_PARSERS,t,e,this);if(i)return new Sd(i)}readMultiPolygon(t,e){const i=up([],this.MULTIPOLYGON_PARSERS,t,e,this);if(i)return new Td(i)}pointMemberParser(t,e){cp(this.POINTMEMBER_PARSERS,t,e,this)}lineStringMemberParser(t,e){cp(this.LINESTRINGMEMBER_PARSERS,t,e,this)}polygonMemberParser(t,e){cp(this.POLYGONMEMBER_PARSERS,t,e,this)}readLineString(t,e){const i=this.readFlatCoordinatesFromNode(t,e);if(i){return new Ed(i,"XYZ")}}readFlatLinearRing(t,e){const i=up(null,this.GEOMETRY_FLAT_COORDINATES_PARSERS,t,e,this);if(i)return i}readLinearRing(t,e){const i=this.readFlatCoordinatesFromNode(t,e);if(i)return new Br(i,"XYZ")}readPolygon(t,e){const i=up([null],this.FLAT_LINEAR_RINGS_PARSERS,t,e,this);if(i&&i[0]){const t=i[0],e=[t.length];let n,r;for(n=1,r=i.length;n<r;++n)S(t,i[n]),e.push(t.length);return new ls(t,"XYZ",e)}}readFlatCoordinatesFromNode(t,e){return up(null,this.GEOMETRY_FLAT_COORDINATES_PARSERS,t,e,this)}readGeometryFromNode(t,e){const i=this.readGeometryElement(t,[this.getReadOptions(t,e||{})]);return i||null}readFeaturesFromNode(t,e){const i={featureType:this.featureType,featureNS:this.featureNS};Object.assign(i,this.getReadOptions(t,e));return this.readFeaturesInternal(t,[i])||[]}readProjectionFromNode(t){return vn(this.srsName?this.srsName:t.firstElementChild.getAttribute("srsName"))}}function Iv(t){return Lv(Yf(t,!1))}function Lv(t){const e=/^\s*(true|1)|(false|0)\s*$/.exec(t);if(e)return void 0!==e[1]||!1}function Fv(t){const e=Yf(t,!1),i=Date.parse(e);return isNaN(i)?void 0:i/1e3}function Mv(t){return Av(Yf(t,!1))}function Av(t){const e=/^\s*([+\-]?\d*\.?\d+(?:e[+\-]?\d+)?)\s*$/i.exec(t);if(e)return parseFloat(e[1])}function Ov(t){return Dv(Yf(t,!1))}function Dv(t){const e=/^\s*(\d+)\s*$/.exec(t);if(e)return parseInt(e[1],10)}function Nv(t){return Yf(t,!1).trim()}function kv(t,e){zv(t,e?"1":"0")}function Gv(t,e){t.appendChild(_p().createCDATASection(e))}function jv(t,e){const i=new Date(1e3*e),n=i.getUTCFullYear()+"-"+$e(i.getUTCMonth()+1,2)+"-"+$e(i.getUTCDate(),2)+"T"+$e(i.getUTCHours(),2)+":"+$e(i.getUTCMinutes(),2)+":"+$e(i.getUTCSeconds(),2)+"Z";t.appendChild(_p().createTextNode(n))}function Uv(t,e){const i=e.toPrecision();t.appendChild(_p().createTextNode(i))}function Bv(t,e){const i=e.toString();t.appendChild(_p().createTextNode(i))}function zv(t,e){t.appendChild(_p().createTextNode(e))}Pv.prototype.namespace=Rv,Pv.prototype.FLAT_LINEAR_RINGS_PARSERS={"http://www.opengis.net/gml":{}},Pv.prototype.GEOMETRY_FLAT_COORDINATES_PARSERS={"http://www.opengis.net/gml":{}},Pv.prototype.GEOMETRY_PARSERS={"http://www.opengis.net/gml":{}},Pv.prototype.MULTIPOINT_PARSERS={"http://www.opengis.net/gml":{pointMember:tp(Pv.prototype.pointMemberParser),pointMembers:tp(Pv.prototype.pointMemberParser)}},Pv.prototype.MULTILINESTRING_PARSERS={"http://www.opengis.net/gml":{lineStringMember:tp(Pv.prototype.lineStringMemberParser),lineStringMembers:tp(Pv.prototype.lineStringMemberParser)}},Pv.prototype.MULTIPOLYGON_PARSERS={"http://www.opengis.net/gml":{polygonMember:tp(Pv.prototype.polygonMemberParser),polygonMembers:tp(Pv.prototype.polygonMemberParser)}},Pv.prototype.POINTMEMBER_PARSERS={"http://www.opengis.net/gml":{Point:tp(Pv.prototype.readFlatCoordinatesFromNode)}},Pv.prototype.LINESTRINGMEMBER_PARSERS={"http://www.opengis.net/gml":{LineString:tp(Pv.prototype.readLineString)}},Pv.prototype.POLYGONMEMBER_PARSERS={"http://www.opengis.net/gml":{Polygon:tp(Pv.prototype.readPolygon)}},Pv.prototype.RING_PARSERS={"http://www.opengis.net/gml":{LinearRing:ep(Pv.prototype.readFlatLinearRing)}};const Xv=Rv+" http://schemas.opengis.net/gml/2.1.2/feature.xsd",Vv={MultiLineString:"lineStringMember",MultiCurve:"curveMember",MultiPolygon:"polygonMember",MultiSurface:"surfaceMember"};class $v extends Pv{constructor(t){super(t=t||{}),this.FEATURE_COLLECTION_PARSERS[Rv].featureMember=tp(this.readFeaturesInternal),this.schemaLocation=t.schemaLocation?t.schemaLocation:Xv}readFlatCoordinates(t,e){const i=Yf(t,!1).replace(/^\s*|\s*$/g,""),n=e[0].srsName;let r="enu";if(n){const t=vn(n);t&&(r=t.getAxisOrientation())}const s=i.trim().split(/\s+/),o=[];for(let t=0,e=s.length;t<e;t++){const e=s[t].split(/,+/),i=parseFloat(e[0]),n=parseFloat(e[1]),a=3===e.length?parseFloat(e[2]):0;r.startsWith("en")?o.push(i,n,a):o.push(n,i,a)}return o}readBox(t,e){const i=up([null],this.BOX_PARSERS_,t,e,this);return Vt(i[1][0],i[1][1],i[1][3],i[1][4])}innerBoundaryIsParser(t,e){const i=up(void 0,this.RING_PARSERS,t,e,this);if(i){e[e.length-1].push(i)}}outerBoundaryIsParser(t,e){const i=up(void 0,this.RING_PARSERS,t,e,this);if(i){e[e.length-1][0]=i}}GEOMETRY_NODE_FACTORY_(t,e,i){const n=e[e.length-1],r=n.multiSurface,s=n.surface,o=n.multiCurve;return Array.isArray(t)?i="Envelope":"MultiPolygon"===(i=t.getType())&&!0===r?i="MultiSurface":"Polygon"===i&&!0===s?i="Surface":"MultiLineString"===i&&!0===o&&(i="MultiCurve"),Zf("http://www.opengis.net/gml",i)}writeFeatureElement(t,e,i){const n=e.getId();n&&t.setAttribute("fid",n);const r=i[i.length-1],s=r.featureNS,o=e.getGeometryName();r.serializers||(r.serializers={},r.serializers[s]={});const a=[],l=[];if(e.hasProperties()){const t=e.getProperties();for(const e in t){const i=t[e];null!=i&&(a.push(e),l.push(i),e==o||"function"==typeof i.getSimplifiedGeometry?e in r.serializers[s]||(r.serializers[s][e]=rp(this.writeGeometryElement,this)):e in r.serializers[s]||(r.serializers[s][e]=rp(zv)))}}const h=Object.assign({},r);h.node=t,gp(h,r.serializers,op(void 0,s),l,i,a)}writeCurveOrLineString(t,e,i){const n=i[i.length-1].srsName;if("LineStringSegment"!==t.nodeName&&n&&t.setAttribute("srsName",n),"LineString"===t.nodeName||"LineStringSegment"===t.nodeName){const n=this.createCoordinatesNode_(t.namespaceURI);t.appendChild(n),this.writeCoordinates_(n,e,i)}else if("Curve"===t.nodeName){const n=Zf(t.namespaceURI,"segments");t.appendChild(n),this.writeCurveSegments_(n,e,i)}}writeLineStringOrCurveMember(t,e,i){const n=this.GEOMETRY_NODE_FACTORY_(e,i);n&&(t.appendChild(n),this.writeCurveOrLineString(n,e,i))}writeMultiCurveOrLineString(t,e,i){const n=i[i.length-1],r=n.hasZ,s=n.srsName,o=n.curve;s&&t.setAttribute("srsName",s);const a=e.getLineStrings();gp({node:t,hasZ:r,srsName:s,curve:o},this.LINESTRINGORCURVEMEMBER_SERIALIZERS,this.MULTIGEOMETRY_MEMBER_NODE_FACTORY_,a,i,void 0,this)}writeGeometryElement(t,e,i){const n=i[i.length-1],r=Object.assign({},n);let s;r.node=t,s=Array.isArray(e)?gv(e,n):dv(e,!0,n),gp(r,this.GEOMETRY_SERIALIZERS,this.GEOMETRY_NODE_FACTORY_,[s],i,void 0,this)}createCoordinatesNode_(t){const e=Zf(t,"coordinates");return e.setAttribute("decimal","."),e.setAttribute("cs",","),e.setAttribute("ts"," "),e}writeCoordinates_(t,e,i){const n=i[i.length-1],r=n.hasZ,s=n.srsName,o=e.getCoordinates(),a=o.length,l=new Array(a);for(let t=0;t<a;++t){const e=o[t];l[t]=this.getCoords_(e,s,r)}zv(t,l.join(" "))}writeCurveSegments_(t,e,i){const n=Zf(t.namespaceURI,"LineStringSegment");t.appendChild(n),this.writeCurveOrLineString(n,e,i)}writeSurfaceOrPolygon(t,e,i){const n=i[i.length-1],r=n.hasZ,s=n.srsName;if("PolygonPatch"!==t.nodeName&&s&&t.setAttribute("srsName",s),"Polygon"===t.nodeName||"PolygonPatch"===t.nodeName){const n=e.getLinearRings();gp({node:t,hasZ:r,srsName:s},this.RING_SERIALIZERS,this.RING_NODE_FACTORY_,n,i,void 0,this)}else if("Surface"===t.nodeName){const n=Zf(t.namespaceURI,"patches");t.appendChild(n),this.writeSurfacePatches_(n,e,i)}}RING_NODE_FACTORY_(t,e,i){const n=e[e.length-1],r=n.node,s=n.exteriorWritten;return void 0===s&&(n.exteriorWritten=!0),Zf(r.namespaceURI,void 0!==s?"innerBoundaryIs":"outerBoundaryIs")}writeSurfacePatches_(t,e,i){const n=Zf(t.namespaceURI,"PolygonPatch");t.appendChild(n),this.writeSurfaceOrPolygon(n,e,i)}writeRing(t,e,i){const n=Zf(t.namespaceURI,"LinearRing");t.appendChild(n),this.writeLinearRing(n,e,i)}getCoords_(t,e,i){let n=(e?vn(e).getAxisOrientation():"enu").startsWith("en")?t[0]+","+t[1]:t[1]+","+t[0];if(i){n+=","+(t[2]||0)}return n}writePoint(t,e,i){const n=i[i.length-1],r=n.hasZ,s=n.srsName;s&&t.setAttribute("srsName",s);const o=this.createCoordinatesNode_(t.namespaceURI);t.appendChild(o);const a=e.getCoordinates();zv(o,this.getCoords_(a,s,r))}writeMultiPoint(t,e,i){const n=i[i.length-1],r=n.hasZ,s=n.srsName;s&&t.setAttribute("srsName",s);const o=e.getPoints();gp({node:t,hasZ:r,srsName:s},this.POINTMEMBER_SERIALIZERS,op("pointMember"),o,i,void 0,this)}writePointMember(t,e,i){const n=Zf(t.namespaceURI,"Point");t.appendChild(n),this.writePoint(n,e,i)}writeLinearRing(t,e,i){const n=i[i.length-1].srsName;n&&t.setAttribute("srsName",n);const r=this.createCoordinatesNode_(t.namespaceURI);t.appendChild(r),this.writeCoordinates_(r,e,i)}writeMultiSurfaceOrPolygon(t,e,i){const n=i[i.length-1],r=n.hasZ,s=n.srsName,o=n.surface;s&&t.setAttribute("srsName",s);const a=e.getPolygons();gp({node:t,hasZ:r,srsName:s,surface:o},this.SURFACEORPOLYGONMEMBER_SERIALIZERS,this.MULTIGEOMETRY_MEMBER_NODE_FACTORY_,a,i,void 0,this)}writeSurfaceOrPolygonMember(t,e,i){const n=this.GEOMETRY_NODE_FACTORY_(e,i);n&&(t.appendChild(n),this.writeSurfaceOrPolygon(n,e,i))}writeEnvelope(t,e,i){const n=i[i.length-1].srsName;n&&t.setAttribute("srsName",n);const r=[e[0]+" "+e[1],e[2]+" "+e[3]];gp({node:t},this.ENVELOPE_SERIALIZERS,ap,r,i,["lowerCorner","upperCorner"],this)}MULTIGEOMETRY_MEMBER_NODE_FACTORY_(t,e,i){const n=e[e.length-1].node;return Zf("http://www.opengis.net/gml",Vv[n.nodeName])}}$v.prototype.GEOMETRY_FLAT_COORDINATES_PARSERS={"http://www.opengis.net/gml":{coordinates:ep($v.prototype.readFlatCoordinates)}},$v.prototype.FLAT_LINEAR_RINGS_PARSERS={"http://www.opengis.net/gml":{innerBoundaryIs:$v.prototype.innerBoundaryIsParser,outerBoundaryIs:$v.prototype.outerBoundaryIsParser}},$v.prototype.BOX_PARSERS_={"http://www.opengis.net/gml":{coordinates:tp($v.prototype.readFlatCoordinates)}},$v.prototype.GEOMETRY_PARSERS={"http://www.opengis.net/gml":{Point:ep(Pv.prototype.readPoint),MultiPoint:ep(Pv.prototype.readMultiPoint),LineString:ep(Pv.prototype.readLineString),MultiLineString:ep(Pv.prototype.readMultiLineString),LinearRing:ep(Pv.prototype.readLinearRing),Polygon:ep(Pv.prototype.readPolygon),MultiPolygon:ep(Pv.prototype.readMultiPolygon),Box:ep($v.prototype.readBox)}},$v.prototype.GEOMETRY_SERIALIZERS={"http://www.opengis.net/gml":{Curve:rp($v.prototype.writeCurveOrLineString),MultiCurve:rp($v.prototype.writeMultiCurveOrLineString),Point:rp($v.prototype.writePoint),MultiPoint:rp($v.prototype.writeMultiPoint),LineString:rp($v.prototype.writeCurveOrLineString),MultiLineString:rp($v.prototype.writeMultiCurveOrLineString),LinearRing:rp($v.prototype.writeLinearRing),Polygon:rp($v.prototype.writeSurfaceOrPolygon),MultiPolygon:rp($v.prototype.writeMultiSurfaceOrPolygon),Surface:rp($v.prototype.writeSurfaceOrPolygon),MultiSurface:rp($v.prototype.writeMultiSurfaceOrPolygon),Envelope:rp($v.prototype.writeEnvelope)}},$v.prototype.LINESTRINGORCURVEMEMBER_SERIALIZERS={"http://www.opengis.net/gml":{lineStringMember:rp($v.prototype.writeLineStringOrCurveMember),curveMember:rp($v.prototype.writeLineStringOrCurveMember)}},$v.prototype.RING_SERIALIZERS={"http://www.opengis.net/gml":{outerBoundaryIs:rp($v.prototype.writeRing),innerBoundaryIs:rp($v.prototype.writeRing)}},$v.prototype.POINTMEMBER_SERIALIZERS={"http://www.opengis.net/gml":{pointMember:rp($v.prototype.writePointMember)}},$v.prototype.SURFACEORPOLYGONMEMBER_SERIALIZERS={"http://www.opengis.net/gml":{surfaceMember:rp($v.prototype.writeSurfaceOrPolygonMember),polygonMember:rp($v.prototype.writeSurfaceOrPolygonMember)}},$v.prototype.ENVELOPE_SERIALIZERS={"http://www.opengis.net/gml":{lowerCorner:rp(zv),upperCorner:rp(zv)}};const Wv=Rv+" http://schemas.opengis.net/gml/3.1.1/profiles/gmlsfProfile/1.0.0/gmlsf.xsd",Zv={MultiLineString:"lineStringMember",MultiCurve:"curveMember",MultiPolygon:"polygonMember",MultiSurface:"surfaceMember"};class Yv extends Pv{constructor(t){super(t=t||{}),this.surface_=void 0!==t.surface&&t.surface,this.curve_=void 0!==t.curve&&t.curve,this.multiCurve_=void 0===t.multiCurve||t.multiCurve,this.multiSurface_=void 0===t.multiSurface||t.multiSurface,this.schemaLocation=t.schemaLocation?t.schemaLocation:Wv,this.hasZ=void 0!==t.hasZ&&t.hasZ}readMultiCurve(t,e){const i=up([],this.MULTICURVE_PARSERS,t,e,this);if(i){return new Sd(i)}}readFlatCurveRing(t,e){const i=up([],this.MULTICURVE_PARSERS,t,e,this),n=[];for(let t=0,e=i.length;t<e;++t)S(n,i[t].getFlatCoordinates());return n}readMultiSurface(t,e){const i=up([],this.MULTISURFACE_PARSERS,t,e,this);if(i)return new Td(i)}curveMemberParser(t,e){cp(this.CURVEMEMBER_PARSERS,t,e,this)}surfaceMemberParser(t,e){cp(this.SURFACEMEMBER_PARSERS,t,e,this)}readPatch(t,e){return up([null],this.PATCHES_PARSERS,t,e,this)}readSegment(t,e){return up([],this.SEGMENTS_PARSERS,t,e,this)}readPolygonPatch(t,e){return up([null],this.FLAT_LINEAR_RINGS_PARSERS,t,e,this)}readLineStringSegment(t,e){return up([null],this.GEOMETRY_FLAT_COORDINATES_PARSERS,t,e,this)}interiorParser(t,e){const i=up(void 0,this.RING_PARSERS,t,e,this);if(i){e[e.length-1].push(i)}}exteriorParser(t,e){const i=up(void 0,this.RING_PARSERS,t,e,this);if(i){e[e.length-1][0]=i}}readSurface(t,e){const i=up([null],this.SURFACE_PARSERS,t,e,this);if(i&&i[0]){const t=i[0],e=[t.length];let n,r;for(n=1,r=i.length;n<r;++n)S(t,i[n]),e.push(t.length);return new ls(t,"XYZ",e)}}readCurve(t,e){const i=up([null],this.CURVE_PARSERS,t,e,this);if(i){return new Ed(i,"XYZ")}}readEnvelope(t,e){const i=up([null],this.ENVELOPE_PARSERS,t,e,this);return Vt(i[1][0],i[1][1],i[2][0],i[2][1])}readFlatPos(t,e){let i=Yf(t,!1);const n=/^\s*([+\-]?\d*\.?\d+(?:[eE][+\-]?\d+)?)\s*/,r=[];let s;for(;s=n.exec(i);)r.push(parseFloat(s[1])),i=i.substr(s[0].length);if(""!==i)return;const o=e[0].srsName;if("neu"===(o?vn(o).getAxisOrientation():"enu"))for(let t=0,e=r.length;t<e;t+=3){const e=r[t],i=r[t+1];r[t]=i,r[t+1]=e}const a=r.length;return 2==a&&r.push(0),0!==a?r:void 0}readFlatPosList(t,e){const i=Yf(t,!1).replace(/^\s*|\s*$/g,""),n=e[0],r=n.srsName,s=n.srsDimension,o=r?vn(r).getAxisOrientation():"enu",a=i.split(/\s+/);let l=2;t.getAttribute("srsDimension")?l=Dv(t.getAttribute("srsDimension")):t.getAttribute("dimension")?l=Dv(t.getAttribute("dimension")):t.parentNode.getAttribute("srsDimension")?l=Dv(t.parentNode.getAttribute("srsDimension")):s&&(l=Dv(s));const h=o.startsWith("en");let c,u,d;const g=[];for(let t=0,e=a.length;t<e;t+=l)c=parseFloat(a[t]),u=parseFloat(a[t+1]),d=3===l?parseFloat(a[t+2]):0,h?g.push(c,u,d):g.push(u,c,d);return g}writePos_(t,e,i){const n=i[i.length-1],r=n.hasZ,s=r?"3":"2";t.setAttribute("srsDimension",s);const o=n.srsName,a=o?vn(o).getAxisOrientation():"enu",l=e.getCoordinates();let h=a.startsWith("en")?l[0]+" "+l[1]:l[1]+" "+l[0];if(r){h+=" "+(l[2]||0)}zv(t,h)}getCoords_(t,e,i){let n=(e?vn(e).getAxisOrientation():"enu").startsWith("en")?t[0]+" "+t[1]:t[1]+" "+t[0];if(i){n+=" "+(t[2]||0)}return n}writePosList_(t,e,i){const n=i[i.length-1],r=n.hasZ,s=r?"3":"2";t.setAttribute("srsDimension",s);const o=n.srsName,a=e.getCoordinates(),l=a.length,h=new Array(l);let c;for(let t=0;t<l;++t)c=a[t],h[t]=this.getCoords_(c,o,r);zv(t,h.join(" "))}writePoint(t,e,i){const n=i[i.length-1].srsName;n&&t.setAttribute("srsName",n);const r=Zf(t.namespaceURI,"pos");t.appendChild(r),this.writePos_(r,e,i)}writeEnvelope(t,e,i){const n=i[i.length-1].srsName;n&&t.setAttribute("srsName",n);const r=[e[0]+" "+e[1],e[2]+" "+e[3]];gp({node:t},this.ENVELOPE_SERIALIZERS,ap,r,i,["lowerCorner","upperCorner"],this)}writeLinearRing(t,e,i){const n=i[i.length-1].srsName;n&&t.setAttribute("srsName",n);const r=Zf(t.namespaceURI,"posList");t.appendChild(r),this.writePosList_(r,e,i)}RING_NODE_FACTORY_(t,e,i){const n=e[e.length-1],r=n.node,s=n.exteriorWritten;return void 0===s&&(n.exteriorWritten=!0),Zf(r.namespaceURI,void 0!==s?"interior":"exterior")}writeSurfaceOrPolygon(t,e,i){const n=i[i.length-1],r=n.hasZ,s=n.srsName;if("PolygonPatch"!==t.nodeName&&s&&t.setAttribute("srsName",s),"Polygon"===t.nodeName||"PolygonPatch"===t.nodeName){const n=e.getLinearRings();gp({node:t,hasZ:r,srsName:s},this.RING_SERIALIZERS,this.RING_NODE_FACTORY_,n,i,void 0,this)}else if("Surface"===t.nodeName){const n=Zf(t.namespaceURI,"patches");t.appendChild(n),this.writeSurfacePatches_(n,e,i)}}writeCurveOrLineString(t,e,i){const n=i[i.length-1].srsName;if("LineStringSegment"!==t.nodeName&&n&&t.setAttribute("srsName",n),"LineString"===t.nodeName||"LineStringSegment"===t.nodeName){const n=Zf(t.namespaceURI,"posList");t.appendChild(n),this.writePosList_(n,e,i)}else if("Curve"===t.nodeName){const n=Zf(t.namespaceURI,"segments");t.appendChild(n),this.writeCurveSegments_(n,e,i)}}writeMultiSurfaceOrPolygon(t,e,i){const n=i[i.length-1],r=n.hasZ,s=n.srsName,o=n.surface;s&&t.setAttribute("srsName",s);const a=e.getPolygons();gp({node:t,hasZ:r,srsName:s,surface:o},this.SURFACEORPOLYGONMEMBER_SERIALIZERS,this.MULTIGEOMETRY_MEMBER_NODE_FACTORY_,a,i,void 0,this)}writeMultiPoint(t,e,i){const n=i[i.length-1],r=n.srsName,s=n.hasZ;r&&t.setAttribute("srsName",r);const o=e.getPoints();gp({node:t,hasZ:s,srsName:r},this.POINTMEMBER_SERIALIZERS,op("pointMember"),o,i,void 0,this)}writeMultiCurveOrLineString(t,e,i){const n=i[i.length-1],r=n.hasZ,s=n.srsName,o=n.curve;s&&t.setAttribute("srsName",s);const a=e.getLineStrings();gp({node:t,hasZ:r,srsName:s,curve:o},this.LINESTRINGORCURVEMEMBER_SERIALIZERS,this.MULTIGEOMETRY_MEMBER_NODE_FACTORY_,a,i,void 0,this)}writeRing(t,e,i){const n=Zf(t.namespaceURI,"LinearRing");t.appendChild(n),this.writeLinearRing(n,e,i)}writeSurfaceOrPolygonMember(t,e,i){const n=this.GEOMETRY_NODE_FACTORY_(e,i);n&&(t.appendChild(n),this.writeSurfaceOrPolygon(n,e,i))}writePointMember(t,e,i){const n=Zf(t.namespaceURI,"Point");t.appendChild(n),this.writePoint(n,e,i)}writeLineStringOrCurveMember(t,e,i){const n=this.GEOMETRY_NODE_FACTORY_(e,i);n&&(t.appendChild(n),this.writeCurveOrLineString(n,e,i))}writeSurfacePatches_(t,e,i){const n=Zf(t.namespaceURI,"PolygonPatch");t.appendChild(n),this.writeSurfaceOrPolygon(n,e,i)}writeCurveSegments_(t,e,i){const n=Zf(t.namespaceURI,"LineStringSegment");t.appendChild(n),this.writeCurveOrLineString(n,e,i)}writeGeometryElement(t,e,i){const n=i[i.length-1],r=Object.assign({},n);let s;r.node=t,s=Array.isArray(e)?gv(e,n):dv(e,!0,n),gp(r,this.GEOMETRY_SERIALIZERS,this.GEOMETRY_NODE_FACTORY_,[s],i,void 0,this)}writeFeatureElement(t,e,i){const n=e.getId();n&&t.setAttribute("fid",n);const r=i[i.length-1],s=r.featureNS,o=e.getGeometryName();r.serializers||(r.serializers={},r.serializers[s]={});const a=[],l=[];if(e.hasProperties()){const t=e.getProperties();for(const e in t){const i=t[e];null!=i&&(a.push(e),l.push(i),e==o||"function"==typeof i.getSimplifiedGeometry?e in r.serializers[s]||(r.serializers[s][e]=rp(this.writeGeometryElement,this)):e in r.serializers[s]||(r.serializers[s][e]=rp(zv)))}}const h=Object.assign({},r);h.node=t,gp(h,r.serializers,op(void 0,s),l,i,a)}writeFeatureMembers_(t,e,i){const n=i[i.length-1],r=n.featureType,s=n.featureNS,o={};o[s]={},o[s][r]=rp(this.writeFeatureElement,this);const a=Object.assign({},n);a.node=t,gp(a,o,op(r,s),e,i)}MULTIGEOMETRY_MEMBER_NODE_FACTORY_(t,e,i){const n=e[e.length-1].node;return Zf(this.namespace,Zv[n.nodeName])}GEOMETRY_NODE_FACTORY_(t,e,i){const n=e[e.length-1],r=n.multiSurface,s=n.surface,o=n.curve,a=n.multiCurve;return Array.isArray(t)?i="Envelope":"MultiPolygon"===(i=t.getType())&&!0===r?i="MultiSurface":"Polygon"===i&&!0===s?i="Surface":"LineString"===i&&!0===o?i="Curve":"MultiLineString"===i&&!0===a&&(i="MultiCurve"),Zf(this.namespace,i)}writeGeometryNode(t,e){e=this.adaptOptions(e);const i=Zf(this.namespace,"geom"),n={node:i,hasZ:this.hasZ,srsName:this.srsName,curve:this.curve_,surface:this.surface_,multiSurface:this.multiSurface_,multiCurve:this.multiCurve_};return e&&Object.assign(n,e),this.writeGeometryElement(i,t,[n]),i}writeFeaturesNode(t,e){e=this.adaptOptions(e);const i=Zf(this.namespace,"featureMembers");i.setAttributeNS(Wf,"xsi:schemaLocation",this.schemaLocation);const n={srsName:this.srsName,hasZ:this.hasZ,curve:this.curve_,surface:this.surface_,multiSurface:this.multiSurface_,multiCurve:this.multiCurve_,featureNS:this.featureNS,featureType:this.featureType};return e&&Object.assign(n,e),this.writeFeatureMembers_(i,t,[n]),i}}Yv.prototype.GEOMETRY_FLAT_COORDINATES_PARSERS={"http://www.opengis.net/gml":{pos:ep(Yv.prototype.readFlatPos),posList:ep(Yv.prototype.readFlatPosList),coordinates:ep($v.prototype.readFlatCoordinates)}},Yv.prototype.FLAT_LINEAR_RINGS_PARSERS={"http://www.opengis.net/gml":{interior:Yv.prototype.interiorParser,exterior:Yv.prototype.exteriorParser}},Yv.prototype.GEOMETRY_PARSERS={"http://www.opengis.net/gml":{Point:ep(Pv.prototype.readPoint),MultiPoint:ep(Pv.prototype.readMultiPoint),LineString:ep(Pv.prototype.readLineString),MultiLineString:ep(Pv.prototype.readMultiLineString),LinearRing:ep(Pv.prototype.readLinearRing),Polygon:ep(Pv.prototype.readPolygon),MultiPolygon:ep(Pv.prototype.readMultiPolygon),Surface:ep(Yv.prototype.readSurface),MultiSurface:ep(Yv.prototype.readMultiSurface),Curve:ep(Yv.prototype.readCurve),MultiCurve:ep(Yv.prototype.readMultiCurve),Envelope:ep(Yv.prototype.readEnvelope)}},Yv.prototype.MULTICURVE_PARSERS={"http://www.opengis.net/gml":{curveMember:tp(Yv.prototype.curveMemberParser),curveMembers:tp(Yv.prototype.curveMemberParser)}},Yv.prototype.MULTISURFACE_PARSERS={"http://www.opengis.net/gml":{surfaceMember:tp(Yv.prototype.surfaceMemberParser),surfaceMembers:tp(Yv.prototype.surfaceMemberParser)}},Yv.prototype.CURVEMEMBER_PARSERS={"http://www.opengis.net/gml":{LineString:tp(Pv.prototype.readLineString),Curve:tp(Yv.prototype.readCurve)}},Yv.prototype.SURFACEMEMBER_PARSERS={"http://www.opengis.net/gml":{Polygon:tp(Pv.prototype.readPolygon),Surface:tp(Yv.prototype.readSurface)}},Yv.prototype.SURFACE_PARSERS={"http://www.opengis.net/gml":{patches:ep(Yv.prototype.readPatch)}},Yv.prototype.CURVE_PARSERS={"http://www.opengis.net/gml":{segments:ep(Yv.prototype.readSegment)}},Yv.prototype.ENVELOPE_PARSERS={"http://www.opengis.net/gml":{lowerCorner:tp(Yv.prototype.readFlatPosList),upperCorner:tp(Yv.prototype.readFlatPosList)}},Yv.prototype.PATCHES_PARSERS={"http://www.opengis.net/gml":{PolygonPatch:ep(Yv.prototype.readPolygonPatch)}},Yv.prototype.SEGMENTS_PARSERS={"http://www.opengis.net/gml":{LineStringSegment:Qf(Yv.prototype.readLineStringSegment)}},Pv.prototype.RING_PARSERS={"http://www.opengis.net/gml":{LinearRing:ep(Pv.prototype.readFlatLinearRing),Ring:ep(Yv.prototype.readFlatCurveRing)}},Yv.prototype.writeFeatures,Yv.prototype.RING_SERIALIZERS={"http://www.opengis.net/gml":{exterior:rp(Yv.prototype.writeRing),interior:rp(Yv.prototype.writeRing)}},Yv.prototype.ENVELOPE_SERIALIZERS={"http://www.opengis.net/gml":{lowerCorner:rp(zv),upperCorner:rp(zv)}},Yv.prototype.SURFACEORPOLYGONMEMBER_SERIALIZERS={"http://www.opengis.net/gml":{surfaceMember:rp(Yv.prototype.writeSurfaceOrPolygonMember),polygonMember:rp(Yv.prototype.writeSurfaceOrPolygonMember)}},Yv.prototype.POINTMEMBER_SERIALIZERS={"http://www.opengis.net/gml":{pointMember:rp(Yv.prototype.writePointMember)}},Yv.prototype.LINESTRINGORCURVEMEMBER_SERIALIZERS={"http://www.opengis.net/gml":{lineStringMember:rp(Yv.prototype.writeLineStringOrCurveMember),curveMember:rp(Yv.prototype.writeLineStringOrCurveMember)}},Yv.prototype.GEOMETRY_SERIALIZERS={"http://www.opengis.net/gml":{Curve:rp(Yv.prototype.writeCurveOrLineString),MultiCurve:rp(Yv.prototype.writeMultiCurveOrLineString),Point:rp(Yv.prototype.writePoint),MultiPoint:rp(Yv.prototype.writeMultiPoint),LineString:rp(Yv.prototype.writeCurveOrLineString),MultiLineString:rp(Yv.prototype.writeMultiCurveOrLineString),LinearRing:rp(Yv.prototype.writeLinearRing),Polygon:rp(Yv.prototype.writeSurfaceOrPolygon),MultiPolygon:rp(Yv.prototype.writeMultiSurfaceOrPolygon),Surface:rp(Yv.prototype.writeSurfaceOrPolygon),MultiSurface:rp(Yv.prototype.writeMultiSurfaceOrPolygon),Envelope:rp(Yv.prototype.writeEnvelope)}};const Hv=Yv;Hv.prototype.writeFeatures,Hv.prototype.writeFeaturesNode;class Kv extends Yv{constructor(t){super(t=t||{}),this.schemaLocation=t.schemaLocation?t.schemaLocation:this.namespace+" http://schemas.opengis.net/gml/3.2.1/gml.xsd"}writeGeometryElement(t,e,i){const n=i[i.length-1];i[i.length-1]=Object.assign({multiCurve:!0,multiSurface:!0},n),super.writeGeometryElement(t,e,i)}}Kv.prototype.namespace="http://www.opengis.net/gml/3.2",Kv.prototype.GEOMETRY_FLAT_COORDINATES_PARSERS={"http://www.opengis.net/gml/3.2":{pos:ep(Yv.prototype.readFlatPos),posList:ep(Yv.prototype.readFlatPosList),coordinates:ep($v.prototype.readFlatCoordinates)}},Kv.prototype.FLAT_LINEAR_RINGS_PARSERS={"http://www.opengis.net/gml/3.2":{interior:Yv.prototype.interiorParser,exterior:Yv.prototype.exteriorParser}},Kv.prototype.GEOMETRY_PARSERS={"http://www.opengis.net/gml/3.2":{Point:ep(Pv.prototype.readPoint),MultiPoint:ep(Pv.prototype.readMultiPoint),LineString:ep(Pv.prototype.readLineString),MultiLineString:ep(Pv.prototype.readMultiLineString),LinearRing:ep(Pv.prototype.readLinearRing),Polygon:ep(Pv.prototype.readPolygon),MultiPolygon:ep(Pv.prototype.readMultiPolygon),Surface:ep(Kv.prototype.readSurface),MultiSurface:ep(Yv.prototype.readMultiSurface),Curve:ep(Kv.prototype.readCurve),MultiCurve:ep(Yv.prototype.readMultiCurve),Envelope:ep(Kv.prototype.readEnvelope)}},Kv.prototype.MULTICURVE_PARSERS={"http://www.opengis.net/gml/3.2":{curveMember:tp(Yv.prototype.curveMemberParser),curveMembers:tp(Yv.prototype.curveMemberParser)}},Kv.prototype.MULTISURFACE_PARSERS={"http://www.opengis.net/gml/3.2":{surfaceMember:tp(Yv.prototype.surfaceMemberParser),surfaceMembers:tp(Yv.prototype.surfaceMemberParser)}},Kv.prototype.CURVEMEMBER_PARSERS={"http://www.opengis.net/gml/3.2":{LineString:tp(Pv.prototype.readLineString),Curve:tp(Yv.prototype.readCurve)}},Kv.prototype.SURFACEMEMBER_PARSERS={"http://www.opengis.net/gml/3.2":{Polygon:tp(Pv.prototype.readPolygon),Surface:tp(Yv.prototype.readSurface)}},Kv.prototype.SURFACE_PARSERS={"http://www.opengis.net/gml/3.2":{patches:ep(Yv.prototype.readPatch)}},Kv.prototype.CURVE_PARSERS={"http://www.opengis.net/gml/3.2":{segments:ep(Yv.prototype.readSegment)}},Kv.prototype.ENVELOPE_PARSERS={"http://www.opengis.net/gml/3.2":{lowerCorner:tp(Yv.prototype.readFlatPosList),upperCorner:tp(Yv.prototype.readFlatPosList)}},Kv.prototype.PATCHES_PARSERS={"http://www.opengis.net/gml/3.2":{PolygonPatch:ep(Yv.prototype.readPolygonPatch)}},Kv.prototype.SEGMENTS_PARSERS={"http://www.opengis.net/gml/3.2":{LineStringSegment:Qf(Yv.prototype.readLineStringSegment)}},Kv.prototype.MULTIPOINT_PARSERS={"http://www.opengis.net/gml/3.2":{pointMember:tp(Pv.prototype.pointMemberParser),pointMembers:tp(Pv.prototype.pointMemberParser)}},Kv.prototype.MULTILINESTRING_PARSERS={"http://www.opengis.net/gml/3.2":{lineStringMember:tp(Pv.prototype.lineStringMemberParser),lineStringMembers:tp(Pv.prototype.lineStringMemberParser)}},Kv.prototype.MULTIPOLYGON_PARSERS={"http://www.opengis.net/gml/3.2":{polygonMember:tp(Pv.prototype.polygonMemberParser),polygonMembers:tp(Pv.prototype.polygonMemberParser)}},Kv.prototype.POINTMEMBER_PARSERS={"http://www.opengis.net/gml/3.2":{Point:tp(Pv.prototype.readFlatCoordinatesFromNode)}},Kv.prototype.LINESTRINGMEMBER_PARSERS={"http://www.opengis.net/gml/3.2":{LineString:tp(Pv.prototype.readLineString)}},Kv.prototype.POLYGONMEMBER_PARSERS={"http://www.opengis.net/gml/3.2":{Polygon:tp(Pv.prototype.readPolygon)}},Kv.prototype.RING_PARSERS={"http://www.opengis.net/gml/3.2":{LinearRing:ep(Pv.prototype.readFlatLinearRing),Ring:ep(Kv.prototype.readFlatCurveRing)}},Kv.prototype.RING_SERIALIZERS={"http://www.opengis.net/gml/3.2":{exterior:rp(Yv.prototype.writeRing),interior:rp(Yv.prototype.writeRing)}},Kv.prototype.ENVELOPE_SERIALIZERS={"http://www.opengis.net/gml/3.2":{lowerCorner:rp(zv),upperCorner:rp(zv)}},Kv.prototype.SURFACEORPOLYGONMEMBER_SERIALIZERS={"http://www.opengis.net/gml/3.2":{surfaceMember:rp(Yv.prototype.writeSurfaceOrPolygonMember),polygonMember:rp(Yv.prototype.writeSurfaceOrPolygonMember)}},Kv.prototype.POINTMEMBER_SERIALIZERS={"http://www.opengis.net/gml/3.2":{pointMember:rp(Yv.prototype.writePointMember)}},Kv.prototype.LINESTRINGORCURVEMEMBER_SERIALIZERS={"http://www.opengis.net/gml/3.2":{lineStringMember:rp(Yv.prototype.writeLineStringOrCurveMember),curveMember:rp(Yv.prototype.writeLineStringOrCurveMember)}},Kv.prototype.GEOMETRY_SERIALIZERS={"http://www.opengis.net/gml/3.2":{Curve:rp(Yv.prototype.writeCurveOrLineString),MultiCurve:rp(Yv.prototype.writeMultiCurveOrLineString),Point:rp(Kv.prototype.writePoint),MultiPoint:rp(Yv.prototype.writeMultiPoint),LineString:rp(Yv.prototype.writeCurveOrLineString),MultiLineString:rp(Yv.prototype.writeMultiCurveOrLineString),LinearRing:rp(Yv.prototype.writeLinearRing),Polygon:rp(Yv.prototype.writeSurfaceOrPolygon),MultiPolygon:rp(Yv.prototype.writeMultiSurfaceOrPolygon),Surface:rp(Yv.prototype.writeSurfaceOrPolygon),MultiSurface:rp(Yv.prototype.writeMultiSurfaceOrPolygon),Envelope:rp(Yv.prototype.writeEnvelope)}};const qv=[null,"http://www.topografix.com/GPX/1/0","http://www.topografix.com/GPX/1/1"],Jv={rte:PE,trk:IE,wpt:LE},Qv=hp(qv,{rte:tp(PE),trk:tp(IE),wpt:tp(LE)}),tE=hp(qv,{text:np(Nv,"linkText"),type:np(Nv,"linkType")}),eE=hp(qv,{name:np(Nv),email:function(t,e){const i=e[e.length-1],n=t.getAttribute("id"),r=t.getAttribute("domain");null!==n&&null!==r&&(i.email=`${n}@${r}`)},link:RE}),iE=hp(qv,{name:np(Nv),desc:np(Nv),author:np((function(t,e){const i=up({},eE,t,e);if(i)return i;return})),copyright:np((function(t,e){const i=up({},nE,t,e);if(i){const e=t.getAttribute("author");return null!==e&&(i.author=e),i}return})),link:RE,time:np(Fv),keywords:np(Nv),bounds:function(t,e){const i=e[e.length-1],n=t.getAttribute("minlat"),r=t.getAttribute("minlon"),s=t.getAttribute("maxlat"),o=t.getAttribute("maxlon");null!==r&&null!==n&&null!==o&&null!==s&&(i.bounds=[[parseFloat(r),parseFloat(n)],[parseFloat(o),parseFloat(s)]])},extensions:bE}),nE=hp(qv,{year:np(Ov),license:np(Nv)}),rE=hp(qv,{rte:rp((function(t,e,i){const n=i[0],r=e.getProperties(),s={node:t};s.properties=r;const o=e.getGeometry();if("LineString"==o.getType()){const t=dv(o,!0,n);s.geometryLayout=t.getLayout(),r.rtept=t.getCoordinates()}const a=i[i.length-1].node,l=gE[a.namespaceURI],h=lp(r,l);gp(s,fE,ap,h,i,l)})),trk:rp((function(t,e,i){const n=i[0],r=e.getProperties(),s={node:t};s.properties=r;const o=e.getGeometry();if("MultiLineString"==o.getType()){const t=dv(o,!0,n);r.trkseg=t.getLineStrings()}const a=i[i.length-1].node,l=mE[a.namespaceURI],h=lp(r,l);gp(s,_E,ap,h,i,l)})),wpt:rp((function(t,e,i){const n=i[0],r=i[i.length-1];r.properties=e.getProperties();const s=e.getGeometry();if("Point"==s.getType()){const e=dv(s,!0,n);r.geometryLayout=e.getLayout(),ME(t,e.getCoordinates(),i)}}))});const sE=hp(qv,{name:np(Nv),cmt:np(Nv),desc:np(Nv),src:np(Nv),link:RE,number:np(Ov),extensions:bE,type:np(Nv),rtept:function(t,e){const i=up({},oE,t,e);if(i){const n=e[e.length-1];TE(n.flatCoordinates,n.layoutOptions,t,i)}}}),oE=hp(qv,{ele:np(Mv),time:np(Fv)}),aE=hp(qv,{name:np(Nv),cmt:np(Nv),desc:np(Nv),src:np(Nv),link:RE,number:np(Ov),type:np(Nv),extensions:bE,trkseg:function(t,e){const i=e[e.length-1];cp(lE,t,e);const n=i.flatCoordinates;i.ends.push(n.length)}}),lE=hp(qv,{trkpt:function(t,e){const i=up({},hE,t,e);if(i){const n=e[e.length-1];TE(n.flatCoordinates,n.layoutOptions,t,i)}}}),hE=hp(qv,{ele:np(Mv),time:np(Fv)}),cE=hp(qv,{ele:np(Mv),time:np(Fv),magvar:np(Mv),geoidheight:np(Mv),name:np(Nv),cmt:np(Nv),desc:np(Nv),src:np(Nv),link:RE,sym:np(Nv),type:np(Nv),fix:np(Nv),sat:np(Ov),hdop:np(Mv),vdop:np(Mv),pdop:np(Mv),ageofdgpsdata:np(Mv),dgpsid:np(Ov),extensions:bE}),uE=["text","type"],dE=hp(qv,{text:rp(zv),type:rp(zv)}),gE=hp(qv,["name","cmt","desc","src","link","number","type","rtept"]),fE=hp(qv,{name:rp(zv),cmt:rp(zv),desc:rp(zv),src:rp(zv),link:rp(FE),number:rp(Bv),type:rp(zv),rtept:sp(rp(ME))}),pE=hp(qv,["ele","time"]),mE=hp(qv,["name","cmt","desc","src","link","number","type","trkseg"]),_E=hp(qv,{name:rp(zv),cmt:rp(zv),desc:rp(zv),src:rp(zv),link:rp(FE),number:rp(Bv),type:rp(zv),trkseg:sp(rp((function(t,e,i){const n={node:t};n.geometryLayout=e.getLayout(),n.properties={},gp(n,xE,yE,e.getCoordinates(),i)})))}),yE=op("trkpt"),xE=hp(qv,{trkpt:rp(ME)}),vE=hp(qv,["ele","time","magvar","geoidheight","name","cmt","desc","src","link","sym","type","fix","sat","hdop","vdop","pdop","ageofdgpsdata","dgpsid"]),EE=hp(qv,{ele:rp(Uv),time:rp(jv),magvar:rp(Uv),geoidheight:rp(Uv),name:rp(zv),cmt:rp(zv),desc:rp(zv),src:rp(zv),link:rp(FE),sym:rp(zv),type:rp(zv),fix:rp(zv),sat:rp(Bv),hdop:rp(Uv),vdop:rp(Uv),pdop:rp(Uv),ageofdgpsdata:rp(Uv),dgpsid:rp(Bv)}),SE={Point:"wpt",LineString:"rte",MultiLineString:"trk"};function wE(t,e,i){const n=t.getGeometry();if(n){const t=SE[n.getType()];if(t){return Zf(e[e.length-1].node.namespaceURI,t)}}}function TE(t,e,i,n){return t.push(parseFloat(i.getAttribute("lon")),parseFloat(i.getAttribute("lat"))),"ele"in n?(t.push(n.ele),delete n.ele,e.hasZ=!0):t.push(0),"time"in n?(t.push(n.time),delete n.time,e.hasM=!0):t.push(0),t}function CE(t,e,i){let n="XY",r=2;if(t.hasZ&&t.hasM?(n="XYZM",r=4):t.hasZ?(n="XYZ",r=3):t.hasM&&(n="XYM",r=3),4!==r){for(let i=0,n=e.length/4;i<n;i++)e[i*r]=e[4*i],e[i*r+1]=e[4*i+1],t.hasZ&&(e[i*r+2]=e[4*i+2]),t.hasM&&(e[i*r+2]=e[4*i+3]);if(e.length=e.length/4*r,i)for(let t=0,e=i.length;t<e;t++)i[t]=i[t]/4*r}return n}function RE(t,e){const i=e[e.length-1],n=t.getAttribute("href");null!==n&&(i.link=n),cp(tE,t,e)}function bE(t,e){e[e.length-1].extensionsNode_=t}function PE(t,e){const i=e[0],n=up({flatCoordinates:[],layoutOptions:{}},sE,t,e);if(!n)return;const r=n.flatCoordinates;delete n.flatCoordinates;const s=n.layoutOptions;delete n.layoutOptions;const o=CE(s,r),a=new Ed(r,o);dv(a,!1,i);const l=new Mt(a);return l.setProperties(n,!0),l}function IE(t,e){const i=e[0],n=up({flatCoordinates:[],ends:[],layoutOptions:{}},aE,t,e);if(!n)return;const r=n.flatCoordinates;delete n.flatCoordinates;const s=n.ends;delete n.ends;const o=n.layoutOptions;delete n.layoutOptions;const a=CE(o,r,s),l=new Sd(r,a,s);dv(l,!1,i);const h=new Mt(l);return h.setProperties(n,!0),h}function LE(t,e){const i=e[0],n=up({},cE,t,e);if(!n)return;const r={},s=TE([],r,t,n),o=CE(r,s),a=new zr(s,o);dv(a,!1,i);const l=new Mt(a);return l.setProperties(n,!0),l}function FE(t,e,i){t.setAttribute("href",e);const n=i[i.length-1].properties,r=[n.linkText,n.linkType];gp({node:t},dE,ap,r,i,uE)}function ME(t,e,i){const n=i[i.length-1],r=n.node.namespaceURI,s=n.properties;t.setAttributeNS(null,"lat",String(e[1])),t.setAttributeNS(null,"lon",String(e[0]));switch(n.geometryLayout){case"XYZM":0!==e[3]&&(s.time=e[3]);case"XYZ":0!==e[2]&&(s.ele=e[2]);break;case"XYM":0!==e[2]&&(s.time=e[2])}const o="rtept"==t.nodeName?pE[r]:vE[r],a=lp(s,o);gp({node:t,properties:s},EE,ap,a,i,o)}function AE(t,e){if(!t)return null;let i;switch(t.type){case"Point":i=function(t){const e=t.coordinates;return{type:"Point",flatCoordinates:e,layout:fr(e.length)}}(t);break;case"LineString":i=function(t){const e=t.coordinates,i=e.flat();return{type:"LineString",flatCoordinates:i,ends:[i.length],layout:fr(e[0]?.length||2)}}(t);break;case"Polygon":i=function(t){const e=t.coordinates,i=[],n=e[0]?.[0]?.length,r=Ir(i,0,e,n);return{type:"Polygon",flatCoordinates:i,ends:r,layout:fr(n)}}(t);break;case"MultiPoint":i=function(t){const e=t.coordinates;return{type:"MultiPoint",flatCoordinates:e.flat(),layout:fr(e[0]?.length||2)}}(t);break;case"MultiLineString":i=function(t){const e=t.coordinates,i=e[0]?.[0]?.length||2,n=[],r=Ir(n,0,e,i);return{type:"MultiLineString",flatCoordinates:n,ends:r,layout:fr(i)}}(t);break;case"MultiPolygon":i=function(t){const e=t.coordinates,i=[],n=e[0]?.[0]?.[0].length||2,r=Lr(i,0,e,n);return{type:"MultiPolygon",flatCoordinates:i,ends:r,layout:fr(n)}}(t);break;case"GeometryCollection":i=function(t,e){const i=t.geometries.map((function(t){return AE(t)}));return i}(t);break;default:throw new Error("Unsupported GeoJSON type: "+t.type)}return i}function OE(t,e){const i=(t=dv(t,!0,e)).getType();let n;switch(i){case"Point":n=function(t,e){return{type:"Point",coordinates:t.getCoordinates()}}(t);break;case"LineString":n=function(t,e){return{type:"LineString",coordinates:t.getCoordinates()}}(t);break;case"Polygon":n=function(t,e){let i;e&&(i=e.rightHanded);return{type:"Polygon",coordinates:t.getCoordinates(i)}}(t,e);break;case"MultiPoint":n=function(t,e){return{type:"MultiPoint",coordinates:t.getCoordinates()}}(t);break;case"MultiLineString":n=function(t,e){return{type:"MultiLineString",coordinates:t.getCoordinates()}}(t);break;case"MultiPolygon":n=function(t,e){let i;e&&(i=e.rightHanded);return{type:"MultiPolygon",coordinates:t.getCoordinates(i)}}(t,e);break;case"GeometryCollection":n=function(t,e){e=Object.assign({},e),delete e.featureProjection;const i=t.getGeometriesArray().map((function(t){return OE(t,e)}));return{type:"GeometryCollection",geometries:i}}(t,e);break;case"Circle":n={type:"GeometryCollection",geometries:[]};break;default:throw new Error("Unsupported geometry type: "+i)}return n}class DE extends uv{constructor(){super()}getType(){return"text"}readFeature(t,e){return this.readFeatureFromText(NE(t),this.adaptOptions(e))}readFeatureFromText(t,e){return U()}readFeatures(t,e){return this.readFeaturesFromText(NE(t),this.adaptOptions(e))}readFeaturesFromText(t,e){return U()}readGeometry(t,e){return this.readGeometryFromText(NE(t),this.adaptOptions(e))}readGeometryFromText(t,e){return U()}readProjection(t){return this.readProjectionFromText(NE(t))}readProjectionFromText(t){return this.dataProjection}writeFeature(t,e){return this.writeFeatureText(t,this.adaptOptions(e))}writeFeatureText(t,e){return U()}writeFeatures(t,e){return this.writeFeaturesText(t,this.adaptOptions(e))}writeFeaturesText(t,e){return U()}writeGeometry(t,e){return this.writeGeometryText(t,this.adaptOptions(e))}writeGeometryText(t,e){return U()}}function NE(t){return"string"==typeof t?t:""}const kE=/^B(\d{2})(\d{2})(\d{2})(\d{2})(\d{5})([NS])(\d{3})(\d{5})([EW])([AV])(\d{5})(\d{5})/,GE=/^H.([A-Z]{3}).*?:(.*)/,jE=/^HFDTE(\d{2})(\d{2})(\d{2})/,UE=/^HFDTEDATE:(\d{2})(\d{2})(\d{2}),(\d{2})/,BE=/\r\n|\r|\n/;const zE=["http://www.google.com/kml/ext/2.2"],XE=[null,"http://earth.google.com/kml/2.0","http://earth.google.com/kml/2.1","http://earth.google.com/kml/2.2","http://www.opengis.net/kml/2.2"],VE={fraction:"fraction",pixels:"pixels",insetPixels:"pixels"},$E=hp(XE,{ExtendedData:YS,Region:HS,MultiGeometry:np(jS,"geometry"),LineString:np(NS,"geometry"),LinearRing:np(kS,"geometry"),Point:np(US,"geometry"),Polygon:np(zS,"geometry"),Style:np(VS),StyleMap:function(t,e){const i=SS.call(this,t,e);if(!i)return;const n=e[e.length-1];if(Array.isArray(i))n.Style=i;else{if("string"!=typeof i)throw new Error("`styleMapValue` has an unknown type");n.styleUrl=i}},address:np(Nv),description:np(Nv),name:np(Nv),open:np(Iv),phoneNumber:np(Nv),styleUrl:np(xS),visibility:np(Iv)},hp(zE,{MultiTrack:np((function(t,e){const i=up([],IS,t,e);if(!i)return;return new Sd(i)}),"geometry"),Track:np(FS,"geometry")})),WE=hp(XE,{ExtendedData:YS,Region:HS,Link:function(t,e){cp(ZE,t,e)},address:np(Nv),description:np(Nv),name:np(Nv),open:np(Iv),phoneNumber:np(Nv),visibility:np(Iv)}),ZE=hp(XE,{href:np(yS)}),YE=hp(XE,{Altitude:np(Mv),Longitude:np(Mv),Latitude:np(Mv),Tilt:np(Mv),AltitudeMode:np(Nv),Heading:np(Mv),Roll:np(Mv)}),HE=hp(XE,{LatLonAltBox:function(t,e){const i=up({},JS,t,e);if(!i)return;const n=e[e.length-1],r=[parseFloat(i.west),parseFloat(i.south),parseFloat(i.east),parseFloat(i.north)];n.extent=r,n.altitudeMode=i.altitudeMode,n.minAltitude=parseFloat(i.minAltitude),n.maxAltitude=parseFloat(i.maxAltitude)},Lod:function(t,e){const i=up({},QS,t,e);if(!i)return;const n=e[e.length-1];n.minLodPixels=parseFloat(i.minLodPixels),n.maxLodPixels=parseFloat(i.maxLodPixels),n.minFadeExtent=parseFloat(i.minFadeExtent),n.maxFadeExtent=parseFloat(i.maxFadeExtent)}}),KE=hp(XE,["Document","Placemark"]),qE=hp(XE,{Document:rp((function(t,e,i){gp({node:t},rw,sw,e,i,void 0,this)})),Placemark:rp(Iw)});let JE,QE,tS,eS,iS,nS,rS=null;let sS,oS=null;let aS,lS=null;let hS=null;let cS=null;let uS,dS=null;function gS(t){return 32/Math.min(t[0],t[1])}function fS(t){return t}function pS(t,e,i){return Array.isArray(t)?t:"string"==typeof t?pS(i[t],e,i):e}function mS(t){const e=Yf(t,!1),i=/^\s*#?\s*([0-9A-Fa-f]{8})\s*$/.exec(e);if(i){const t=i[1];return[parseInt(t.substr(6,2),16),parseInt(t.substr(4,2),16),parseInt(t.substr(2,2),16),parseInt(t.substr(0,2),16)/255]}}function _S(t){let e=Yf(t,!1);const i=[];e=e.replace(/\s*,\s*/g,",");const n=/^\s*([+\-]?\d*\.?\d+(?:e[+\-]?\d+)?),([+\-]?\d*\.?\d+(?:e[+\-]?\d+)?)(?:\s+|,|$)(?:([+\-]?\d*\.?\d+(?:e[+\-]?\d+)?)(?:\s+|$))?\s*/i;let r;for(;r=n.exec(e);){const t=parseFloat(r[1]),n=parseFloat(r[2]),s=r[3]?parseFloat(r[3]):0;i.push(t,n,s),e=e.substr(r[0].length)}if(""===e)return i}function yS(t){const e=Yf(t,!1).trim();let i=t.baseURI;if(i&&"about:blank"!=i||(i=window.location.href),i){return new URL(e,i).href}return e}function xS(t){const e=Yf(t,!1).trim().replace(/^(?!.*#)/,"#");let i=t.baseURI;if(i&&"about:blank"!=i||(i=window.location.href),i){return new URL(e,i).href}return e}function vS(t){return Mv(t)}const ES=hp(XE,{Pair:function(t,e){const i=up({},KS,t,e,this);if(!i)return;const n=i.key;if(n&&"normal"==n){const t=i.styleUrl;t&&(e[e.length-1]=t);const n=i.Style;n&&(e[e.length-1]=n)}}});function SS(t,e){return up(void 0,ES,t,e,this)}const wS=hp(XE,{Icon:np((function(t,e){const i=up({},MS,t,e);if(i)return i;return null})),color:np(mS),heading:np(Mv),hotSpot:np((function(t){const e=t.getAttribute("xunits"),i=t.getAttribute("yunits");let n;return n="insetPixels"!==e?"insetPixels"!==i?"bottom-left":"top-left":"insetPixels"!==i?"bottom-right":"top-right",{x:parseFloat(t.getAttribute("x")),xunits:VE[e],y:parseFloat(t.getAttribute("y")),yunits:VE[i],origin:n}})),scale:np(vS)});const TS=hp(XE,{color:np(mS),scale:np(vS)});const CS=hp(XE,{color:np(mS),width:np(Mv)});const RS=hp(XE,{color:np(mS),fill:np(Iv),outline:np(Iv)});const bS=hp(XE,{coordinates:ep(_S)});function PS(t,e){return up(null,bS,t,e)}const IS=hp(zE,{Track:tp(FS)});const LS=hp(XE,{when:function(t,e){const i=e[e.length-1].whens,n=Yf(t,!1),r=Date.parse(n);i.push(isNaN(r)?0:r)}},hp(zE,{coord:function(t,e){const i=e[e.length-1].coordinates,n=Yf(t,!1),r=/^\s*([+\-]?\d+(?:\.\d*)?(?:e[+\-]?\d*)?)\s+([+\-]?\d+(?:\.\d*)?(?:e[+\-]?\d*)?)\s+([+\-]?\d+(?:\.\d*)?(?:e[+\-]?\d*)?)\s*$/i.exec(n);if(r){const t=parseFloat(r[1]),e=parseFloat(r[2]),n=parseFloat(r[3]);i.push([t,e,n])}else i.push([])}}));function FS(t,e){const i=up({coordinates:[],whens:[]},LS,t,e);if(!i)return;const n=[],r=i.coordinates,s=i.whens;for(let t=0,e=Math.min(r.length,s.length);t<e;++t)3==r[t].length&&n.push(r[t][0],r[t][1],r[t][2],s[t]);return new Ed(n,"XYZM")}const MS=hp(XE,{href:np(yS)},hp(zE,{x:np(Mv),y:np(Mv),w:np(Mv),h:np(Mv)}));const AS=hp(XE,{coordinates:ep(_S)});function OS(t,e){return up(null,AS,t,e)}const DS=hp(XE,{extrude:np(Iv),tessellate:np(Iv),altitudeMode:np(Nv)});function NS(t,e){const i=up({},DS,t,e),n=OS(t,e);if(n){const t=new Ed(n,"XYZ");return t.setProperties(i,!0),t}}function kS(t,e){const i=up({},DS,t,e),n=OS(t,e);if(n){const t=new ls(n,"XYZ",[n.length]);return t.setProperties(i,!0),t}}const GS=hp(XE,{LineString:tp(NS),LinearRing:tp(kS),MultiGeometry:tp(jS),Point:tp(US),Polygon:tp(zS)});function jS(t,e){const i=up([],GS,t,e);if(!i)return null;if(0===i.length)return new yd(i);let n,r=!0;const s=i[0].getType();let o;for(let t=1,e=i.length;t<e;++t)if(o=i[t],o.getType()!=s){r=!1;break}if(r){let t,e;if("Point"==s){const r=i[0];t=r.getLayout(),e=r.getFlatCoordinates();for(let t=1,n=i.length;t<n;++t)o=i[t],S(e,o.getFlatCoordinates());n=new wd(e,t),$S(n,i)}else if("LineString"==s)n=new Sd(i),$S(n,i);else if("Polygon"==s)n=new Td(i),$S(n,i);else{if("GeometryCollection"!=s&&!s.startsWith("Multi"))throw new Error("Unknown geometry type found");n=new yd(i)}}else n=new yd(i);return n}function US(t,e){const i=up({},DS,t,e),n=OS(t,e);if(n){const t=new zr(n,"XYZ");return t.setProperties(i,!0),t}}const BS=hp(XE,{innerBoundaryIs:function(t,e){const i=up([],tw,t,e);if(i.length>0){e[e.length-1].push(...i)}},outerBoundaryIs:function(t,e){const i=up(void 0,ew,t,e);if(i){e[e.length-1][0]=i}}});function zS(t,e){const i=up({},DS,t,e),n=up([null],BS,t,e);if(n&&n[0]){const t=n[0],e=[t.length];for(let i=1,r=n.length;i<r;++i)S(t,n[i]),e.push(t.length);const r=new ls(t,"XYZ",e);return r.setProperties(i,!0),r}}const XS=hp(XE,{IconStyle:function(t,e){const i=up({},wS,t,e);if(!i)return;const n=e[e.length-1],r="Icon"in i?i.Icon:{},s=!("Icon"in i)||Object.keys(r).length>0;let o;const a=r.href;let l,h,c;a?o=a:s&&(o=nS);let u="bottom-left";const d=i.hotSpot;let g;d?(l=[d.x,d.y],h=d.xunits,c=d.yunits,u=d.origin):/^https?:\/\/maps\.(?:google|gstatic)\.com\//.test(o)&&(o.includes("pushpin")?(l=QE,h=tS,c=eS):o.includes("arrow-reverse")?(l=[54,42],h=tS,c=eS):o.includes("paddle")&&(l=[32,1],h=tS,c=eS));const f=r.x,p=r.y;let m;void 0!==f&&void 0!==p&&(g=[f,p]);const _=r.w,y=r.h;let x;void 0!==_&&void 0!==y&&(m=[_,y]);const v=i.heading;void 0!==v&&(x=Pe(v));const E=i.scale,S=i.color;if(s){o==nS&&(m=iS);const t=new Hh({anchor:l,anchorOrigin:u,anchorXUnits:h,anchorYUnits:c,crossOrigin:this.crossOrigin_,offset:g,offsetOrigin:"bottom-left",rotation:x,scale:E,size:m,src:this.iconUrlFunction_(o),color:S}),e=t.getScaleArray()[0],i=t.getSize();if(null===i){const i=t.getImageState();if(i===Cs.IDLE||i===Cs.LOADING){const n=function(){const i=t.getImageState();if(i!==Cs.IDLE&&i!==Cs.LOADING){const i=t.getSize();if(i&&2==i.length){const n=gS(i);t.setScale(e*n)}t.unlistenImageChange(n)}};t.listenImageChange(n),i===Cs.IDLE&&t.load()}}else if(2==i.length){const n=gS(i);t.setScale(e*n)}n.imageStyle=t}else n.imageStyle=sS},LabelStyle:function(t,e){const i=up({},TS,t,e);if(!i)return;const n=e[e.length-1],r=new nc({fill:new Zh({color:"color"in i?i.color:JE}),scale:i.scale});n.textStyle=r},LineStyle:function(t,e){const i=up({},CS,t,e);if(!i)return;const n=e[e.length-1],r=new Kh({color:"color"in i?i.color:JE,width:"width"in i?i.width:1});n.strokeStyle=r},PolyStyle:function(t,e){const i=up({},RS,t,e);if(!i)return;const n=e[e.length-1],r=new Zh({color:"color"in i?i.color:JE});n.fillStyle=r;const s=i.fill;void 0!==s&&(n.fill=s);const o=i.outline;void 0!==o&&(n.outline=o)}});function VS(t,e){const i=up({},XS,t,e,this);if(!i)return null;let n="fillStyle"in i?i.fillStyle:rS;const r=i.fill;let s;void 0===r||r||(n=null),"imageStyle"in i?i.imageStyle!=sS&&(s=i.imageStyle):s=oS;const o="textStyle"in i?i.textStyle:hS,a="strokeStyle"in i?i.strokeStyle:lS,l=i.outline;return void 0===l||l?[new qh({fill:n,image:s,stroke:a,text:o,zIndex:void 0})]:[new qh({geometry:function(t){const e=t.getGeometry(),i=e.getType();if("GeometryCollection"===i){return new yd(e.getGeometriesArrayRecursive().filter((function(t){const e=t.getType();return"Polygon"!==e&&"MultiPolygon"!==e})))}if("Polygon"!==i&&"MultiPolygon"!==i)return e},fill:n,image:s,stroke:a,text:o,zIndex:void 0}),new qh({geometry:function(t){const e=t.getGeometry(),i=e.getType();if("GeometryCollection"===i){return new yd(e.getGeometriesArrayRecursive().filter((function(t){const e=t.getType();return"Polygon"===e||"MultiPolygon"===e})))}if("Polygon"===i||"MultiPolygon"===i)return e},fill:n,stroke:null,zIndex:void 0})]}function $S(t,e){const i=e.length,n=new Array(e.length),r=new Array(e.length),s=new Array(e.length);let o,a,l;o=!1,a=!1,l=!1;for(let t=0;t<i;++t){const i=e[t];n[t]=i.get("extrude"),r[t]=i.get("tessellate"),s[t]=i.get("altitudeMode"),o=o||void 0!==n[t],a=a||void 0!==r[t],l=l||s[t]}o&&t.set("extrude",n),a&&t.set("tessellate",r),l&&t.set("altitudeMode",s)}const WS=hp(XE,{displayName:np(Nv),value:np(Nv)});const ZS=hp(XE,{Data:function(t,e){const i=t.getAttribute("name");cp(WS,t,e);const n=e[e.length-1];i&&n.displayName?n[i]={value:n.value,displayName:n.displayName,toString:function(){return n.value}}:null!==i?n[i]=n.value:null!==n.displayName&&(n[n.displayName]=n.value),delete n.value},SchemaData:function(t,e){cp(qS,t,e)}});function YS(t,e){cp(ZS,t,e)}function HS(t,e){cp(HE,t,e)}const KS=hp(XE,{Style:np(VS),key:np(Nv),styleUrl:np(xS)});const qS=hp(XE,{SimpleData:function(t,e){const i=t.getAttribute("name");if(null!==i){const n=Nv(t);e[e.length-1][i]=n}}});const JS=hp(XE,{altitudeMode:np(Nv),minAltitude:np(Mv),maxAltitude:np(Mv),north:np(Mv),south:np(Mv),east:np(Mv),west:np(Mv)});const QS=hp(XE,{minLodPixels:np(Mv),maxLodPixels:np(Mv),minFadeExtent:np(Mv),maxFadeExtent:np(Mv)});const tw=hp(XE,{LinearRing:tp(PS)});const ew=hp(XE,{LinearRing:ep(PS)});function iw(t,e){const i=Fl(e),n=[255*(4==i.length?i[3]:1),i[2],i[1],i[0]];for(let t=0;t<4;++t){const e=Math.floor(n[t]).toString(16);n[t]=1==e.length?"0"+e:e}zv(t,n.join(""))}const nw=hp(XE,{Data:rp((function(t,e,i){t.setAttribute("name",e.name);const n={node:t},r=e.value;"object"==typeof r?(null!==r&&r.displayName&&gp(n,nw,ap,[r.displayName],i,["displayName"]),null!==r&&r.value&&gp(n,nw,ap,[r.value],i,["value"])):gp(n,nw,ap,[r],i,["value"])})),value:rp((function(t,e){zv(t,e)})),displayName:rp((function(t,e){Gv(t,e)}))});const rw=hp(XE,{Placemark:rp(Iw)}),sw=function(t,e,i){return Zf(e[e.length-1].node.namespaceURI,"Placemark")};const ow=op("Data");const aw=hp(XE,["href"],hp(zE,["x","y","w","h"])),lw=hp(XE,{href:rp(zv)},hp(zE,{x:rp(Uv),y:rp(Uv),w:rp(Uv),h:rp(Uv)})),hw=function(t,e,i){return Zf(zE[0],"gx:"+i)};const cw=hp(XE,["scale","heading","Icon","color","hotSpot"]),uw=hp(XE,{Icon:rp((function(t,e,i){const n={node:t},r=i[i.length-1].node;let s=aw[r.namespaceURI],o=lp(e,s);gp(n,lw,ap,o,i,s),s=aw[zE[0]],o=lp(e,s),gp(n,lw,hw,o,i,s)})),color:rp(iw),heading:rp(Uv),hotSpot:rp((function(t,e){t.setAttribute("x",String(e.x)),t.setAttribute("y",String(e.y)),t.setAttribute("xunits",e.xunits),t.setAttribute("yunits",e.yunits)})),scale:rp(jw)});const dw=hp(XE,["color","scale"]),gw=hp(XE,{color:rp(iw),scale:rp(jw)});const fw=hp(XE,["color","width"]),pw=hp(XE,{color:rp(iw),width:rp(Uv)});const mw={Point:"Point",LineString:"LineString",LinearRing:"LinearRing",Polygon:"Polygon",MultiPoint:"MultiGeometry",MultiLineString:"MultiGeometry",MultiPolygon:"MultiGeometry",GeometryCollection:"MultiGeometry"},_w=function(t,e,i){if(t){return Zf(e[e.length-1].node.namespaceURI,mw[t.getType()])}},yw=op("Point"),xw=op("LineString"),vw=op("LinearRing"),Ew=op("Polygon"),Sw=hp(XE,{LineString:rp(Mw),Point:rp(Mw),Polygon:rp(kw),GeometryCollection:rp(ww)});function ww(t,e,i){const n={node:t},r=e.getType();let s,o=[];if("GeometryCollection"===r)e.getGeometriesArrayRecursive().forEach((function(t){const e=t.getType();if("MultiPoint"===e)o=o.concat(t.getPoints());else if("MultiLineString"===e)o=o.concat(t.getLineStrings());else if("MultiPolygon"===e)o=o.concat(t.getPolygons());else{if("Point"!==e&&"LineString"!==e&&"Polygon"!==e)throw new Error("Unknown geometry type");o.push(t)}})),s=_w;else if("MultiPoint"===r)o=e.getPoints(),s=yw;else if("MultiLineString"===r)o=e.getLineStrings(),s=xw;else{if("MultiPolygon"!==r)throw new Error("Unknown geometry type");o=e.getPolygons(),s=Ew}gp(n,Sw,s,o,i)}const Tw=hp(XE,{LinearRing:rp(Mw)});function Cw(t,e,i){gp({node:t},Tw,vw,[e],i)}const Rw=hp(XE,{ExtendedData:rp((function(t,e,i){const n={node:t},r=e.names,s=e.values,o=r.length;for(let t=0;t<o;t++)gp(n,nw,ow,[{name:r[t],value:s[t]}],i)})),MultiGeometry:rp(ww),LineString:rp(Mw),LinearRing:rp(Mw),Point:rp(Mw),Polygon:rp(kw),Style:rp((function(t,e,i){const n={node:t},r={};if(e.pointStyles.length){const t=e.pointStyles[0].getText();t&&(r.LabelStyle=t);const i=e.pointStyles[0].getImage();i&&"function"==typeof i.getSrc&&(r.IconStyle=i)}if(e.lineStyles.length){const t=e.lineStyles[0].getStroke();t&&(r.LineStyle=t)}if(e.polyStyles.length){const t=e.polyStyles[0].getStroke();t&&!r.LineStyle&&(r.LineStyle=t),r.PolyStyle=e.polyStyles[0]}const s=i[i.length-1].node,o=Uw[s.namespaceURI],a=lp(r,o);gp(n,Bw,ap,a,i,o)})),address:rp(zv),description:rp(zv),name:rp(zv),open:rp(kv),phoneNumber:rp(zv),styleUrl:rp(zv),visibility:rp(kv)}),bw=hp(XE,["name","open","visibility","address","phoneNumber","description","styleUrl","Style"]),Pw=op("ExtendedData");function Iw(t,e,i){const n={node:t};e.getId()&&t.setAttribute("id",e.getId());const r=e.getProperties(),s={address:1,description:1,name:1,open:1,phoneNumber:1,styleUrl:1,visibility:1};s[e.getGeometryName()]=1;const o=Object.keys(r||{}).sort().filter((function(t){return!s[t]})),a=e.getStyleFunction();if(a){const t=a(e,0);if(t){const i=Array.isArray(t)?t:[t];let n=i;if(e.getGeometry()&&(n=i.filter((function(t){const i=t.getGeometryFunction()(e);if(i){const t=i.getType();return"GeometryCollection"===t?i.getGeometriesArrayRecursive().filter((function(t){const e=t.getType();return"Point"===e||"MultiPoint"===e})).length:"Point"===t||"MultiPoint"===t}}))),this.writeStyles_){let t=i,s=i;e.getGeometry()&&(t=i.filter((function(t){const i=t.getGeometryFunction()(e);if(i){const t=i.getType();return"GeometryCollection"===t?i.getGeometriesArrayRecursive().filter((function(t){const e=t.getType();return"LineString"===e||"MultiLineString"===e})).length:"LineString"===t||"MultiLineString"===t}})),s=i.filter((function(t){const i=t.getGeometryFunction()(e);if(i){const t=i.getType();return"GeometryCollection"===t?i.getGeometriesArrayRecursive().filter((function(t){const e=t.getType();return"Polygon"===e||"MultiPolygon"===e})).length:"Polygon"===t||"MultiPolygon"===t}}))),r.Style={pointStyles:n,lineStyles:t,polyStyles:s}}if(n.length&&void 0===r.name){const t=n[0].getText();t&&(r.name=t.getText())}}}const l=i[i.length-1].node,h=bw[l.namespaceURI],c=lp(r,h);if(gp(n,Rw,ap,c,i,h),o.length>0){const t=lp(r,o);gp(n,Rw,Pw,[{names:o,values:t}],i)}const u=i[0];let d=e.getGeometry();d&&(d=dv(d,!0,u)),gp(n,Rw,_w,[d],i)}const Lw=hp(XE,["extrude","tessellate","altitudeMode","coordinates"]),Fw=hp(XE,{extrude:rp(kv),tessellate:rp(kv),altitudeMode:rp(zv),coordinates:rp((function(t,e,i){const n=i[i.length-1],r=n.layout,s=n.stride;let o;if("XY"==r||"XYM"==r)o=2;else{if("XYZ"!=r&&"XYZM"!=r)throw new Error("Invalid geometry layout");o=3}const a=e.length;let l="";if(a>0){l+=e[0];for(let t=1;t<o;++t)l+=","+e[t];for(let t=s;t<a;t+=s){l+=" "+e[t];for(let i=1;i<o;++i)l+=","+e[t+i]}}zv(t,l)}))});function Mw(t,e,i){const n=e.getFlatCoordinates(),r={node:t};r.layout=e.getLayout(),r.stride=e.getStride();const s=e.getProperties();s.coordinates=n;const o=i[i.length-1].node,a=Lw[o.namespaceURI],l=lp(s,a);gp(r,Fw,ap,l,i,a)}const Aw=hp(XE,["color","fill","outline"]),Ow=hp(XE,{outerBoundaryIs:rp(Cw),innerBoundaryIs:rp(Cw)}),Dw=op("innerBoundaryIs"),Nw=op("outerBoundaryIs");function kw(t,e,i){const n=e.getLinearRings(),r=n.shift(),s={node:t};gp(s,Ow,Dw,n,i),gp(s,Ow,Nw,[r],i)}const Gw=hp(XE,{color:rp(iw),fill:rp(kv),outline:rp(kv)});function jw(t,e){Uv(t,Math.round(1e6*e)/1e6)}const Uw=hp(XE,["IconStyle","LabelStyle","LineStyle","PolyStyle"]),Bw=hp(XE,{IconStyle:rp((function(t,e,i){const n={node:t},r={},s=e.getSrc(),o=e.getSize(),a=e.getImageSize(),l={href:s};if(o){l.w=o[0],l.h=o[1];const t=e.getAnchor(),i=e.getOrigin();if(i&&a&&0!==i[0]&&i[1]!==o[1]&&(l.x=i[0],l.y=a[1]-(i[1]+o[1])),t&&(t[0]!==o[0]/2||t[1]!==o[1]/2)){const e={x:t[0],xunits:"pixels",y:o[1]-t[1],yunits:"pixels"};r.hotSpot=e}}r.Icon=l;let h=e.getScaleArray()[0],c=o;if(null===c&&(c=iS),2==c.length){h/=gS(c)}1!==h&&(r.scale=h);const u=e.getRotation();0!==u&&(r.heading=u);const d=e.getColor();d&&(r.color=d);const g=i[i.length-1].node,f=cw[g.namespaceURI],p=lp(r,f);gp(n,uw,ap,p,i,f)})),LabelStyle:rp((function(t,e,i){const n={node:t},r={},s=e.getFill();s&&(r.color=s.getColor());const o=e.getScale();o&&1!==o&&(r.scale=o);const a=i[i.length-1].node,l=dw[a.namespaceURI],h=lp(r,l);gp(n,gw,ap,h,i,l)})),LineStyle:rp((function(t,e,i){const n={node:t},r={color:e.getColor(),width:Number(e.getWidth())||1},s=i[i.length-1].node,o=fw[s.namespaceURI],a=lp(r,o);gp(n,pw,ap,a,i,o)})),PolyStyle:rp((function(t,e,i){const n={node:t},r=e.getFill(),s=e.getStroke(),o={color:r?r.getColor():void 0,fill:!!r&&void 0,outline:!!s&&void 0},a=i[i.length-1].node,l=Aw[a.namespaceURI],h=lp(o,l);gp(n,Gw,ap,h,i,l)}))});const zw=4294967296,Xw=1/zw,Vw="undefined"==typeof TextDecoder?null:new TextDecoder("utf-8");class $w{constructor(t=new Uint8Array(16)){this.buf=ArrayBuffer.isView(t)?t:new Uint8Array(t),this.dataView=new DataView(this.buf.buffer),this.pos=0,this.type=0,this.length=this.buf.length}readFields(t,e,i=this.length){for(;this.pos<i;){const i=this.readVarint(),n=i>>3,r=this.pos;this.type=7&i,t(n,e,this),this.pos===r&&this.skip(i)}return e}readMessage(t,e){return this.readFields(t,e,this.readVarint()+this.pos)}readFixed32(){const t=this.dataView.getUint32(this.pos,!0);return this.pos+=4,t}readSFixed32(){const t=this.dataView.getInt32(this.pos,!0);return this.pos+=4,t}readFixed64(){const t=this.dataView.getUint32(this.pos,!0)+this.dataView.getUint32(this.pos+4,!0)*zw;return this.pos+=8,t}readSFixed64(){const t=this.dataView.getUint32(this.pos,!0)+this.dataView.getInt32(this.pos+4,!0)*zw;return this.pos+=8,t}readFloat(){const t=this.dataView.getFloat32(this.pos,!0);return this.pos+=4,t}readDouble(){const t=this.dataView.getFloat64(this.pos,!0);return this.pos+=8,t}readVarint(t){const e=this.buf;let i,n;return n=e[this.pos++],i=127&n,n<128?i:(n=e[this.pos++],i|=(127&n)<<7,n<128?i:(n=e[this.pos++],i|=(127&n)<<14,n<128?i:(n=e[this.pos++],i|=(127&n)<<21,n<128?i:(n=e[this.pos],i|=(15&n)<<28,function(t,e,i){const n=i.buf;let r,s;if(s=n[i.pos++],r=(112&s)>>4,s<128)return Ww(t,r,e);if(s=n[i.pos++],r|=(127&s)<<3,s<128)return Ww(t,r,e);if(s=n[i.pos++],r|=(127&s)<<10,s<128)return Ww(t,r,e);if(s=n[i.pos++],r|=(127&s)<<17,s<128)return Ww(t,r,e);if(s=n[i.pos++],r|=(127&s)<<24,s<128)return Ww(t,r,e);if(s=n[i.pos++],r|=(1&s)<<31,s<128)return Ww(t,r,e);throw new Error("Expected varint not more than 10 bytes")}(i,t,this)))))}readVarint64(){return this.readVarint(!0)}readSVarint(){const t=this.readVarint();return t%2==1?(t+1)/-2:t/2}readBoolean(){return Boolean(this.readVarint())}readString(){const t=this.readVarint()+this.pos,e=this.pos;return this.pos=t,t-e>=12&&Vw?Vw.decode(this.buf.subarray(e,t)):function(t,e,i){let n="",r=e;for(;r<i;){const e=t[r];let s,o,a,l=null,h=e>239?4:e>223?3:e>191?2:1;if(r+h>i)break;1===h?e<128&&(l=e):2===h?(s=t[r+1],128==(192&s)&&(l=(31&e)<<6|63&s,l<=127&&(l=null))):3===h?(s=t[r+1],o=t[r+2],128==(192&s)&&128==(192&o)&&(l=(15&e)<<12|(63&s)<<6|63&o,(l<=2047||l>=55296&&l<=57343)&&(l=null))):4===h&&(s=t[r+1],o=t[r+2],a=t[r+3],128==(192&s)&&128==(192&o)&&128==(192&a)&&(l=(15&e)<<18|(63&s)<<12|(63&o)<<6|63&a,(l<=65535||l>=1114112)&&(l=null))),null===l?(l=65533,h=1):l>65535&&(l-=65536,n+=String.fromCharCode(l>>>10&1023|55296),l=56320|1023&l),n+=String.fromCharCode(l),r+=h}return n}(this.buf,e,t)}readBytes(){const t=this.readVarint()+this.pos,e=this.buf.subarray(this.pos,t);return this.pos=t,e}readPackedVarint(t=[],e){const i=this.readPackedEnd();for(;this.pos<i;)t.push(this.readVarint(e));return t}readPackedSVarint(t=[]){const e=this.readPackedEnd();for(;this.pos<e;)t.push(this.readSVarint());return t}readPackedBoolean(t=[]){const e=this.readPackedEnd();for(;this.pos<e;)t.push(this.readBoolean());return t}readPackedFloat(t=[]){const e=this.readPackedEnd();for(;this.pos<e;)t.push(this.readFloat());return t}readPackedDouble(t=[]){const e=this.readPackedEnd();for(;this.pos<e;)t.push(this.readDouble());return t}readPackedFixed32(t=[]){const e=this.readPackedEnd();for(;this.pos<e;)t.push(this.readFixed32());return t}readPackedSFixed32(t=[]){const e=this.readPackedEnd();for(;this.pos<e;)t.push(this.readSFixed32());return t}readPackedFixed64(t=[]){const e=this.readPackedEnd();for(;this.pos<e;)t.push(this.readFixed64());return t}readPackedSFixed64(t=[]){const e=this.readPackedEnd();for(;this.pos<e;)t.push(this.readSFixed64());return t}readPackedEnd(){return 2===this.type?this.readVarint()+this.pos:this.pos+1}skip(t){const e=7&t;if(0===e)for(;this.buf[this.pos++]>127;);else if(2===e)this.pos=this.readVarint()+this.pos;else if(5===e)this.pos+=4;else{if(1!==e)throw new Error(`Unimplemented type: ${e}`);this.pos+=8}}writeTag(t,e){this.writeVarint(t<<3|e)}realloc(t){let e=this.length||16;for(;e<this.pos+t;)e*=2;if(e!==this.length){const t=new Uint8Array(e);t.set(this.buf),this.buf=t,this.dataView=new DataView(t.buffer),this.length=e}}finish(){return this.length=this.pos,this.pos=0,this.buf.subarray(0,this.length)}writeFixed32(t){this.realloc(4),this.dataView.setInt32(this.pos,t,!0),this.pos+=4}writeSFixed32(t){this.realloc(4),this.dataView.setInt32(this.pos,t,!0),this.pos+=4}writeFixed64(t){this.realloc(8),this.dataView.setInt32(this.pos,-1&t,!0),this.dataView.setInt32(this.pos+4,Math.floor(t*Xw),!0),this.pos+=8}writeSFixed64(t){this.realloc(8),this.dataView.setInt32(this.pos,-1&t,!0),this.dataView.setInt32(this.pos+4,Math.floor(t*Xw),!0),this.pos+=8}writeVarint(t){(t=+t||0)>268435455||t<0?function(t,e){let i,n;t>=0?(i=t%4294967296|0,n=t/4294967296|0):(i=~(-t%4294967296),n=~(-t/4294967296),4294967295^i?i=i+1|0:(i=0,n=n+1|0));if(t>=0x10000000000000000||t<-0x10000000000000000)throw new Error("Given varint doesn't fit into 10 bytes");e.realloc(10),function(t,e,i){i.buf[i.pos++]=127&t|128,t>>>=7,i.buf[i.pos++]=127&t|128,t>>>=7,i.buf[i.pos++]=127&t|128,t>>>=7,i.buf[i.pos++]=127&t|128,t>>>=7,i.buf[i.pos]=127&t}(i,0,e),function(t,e){const i=(7&t)<<4;if(e.buf[e.pos++]|=i|((t>>>=3)?128:0),!t)return;if(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),!t)return;if(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),!t)return;if(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),!t)return;if(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),!t)return;e.buf[e.pos++]=127&t}(n,e)}(t,this):(this.realloc(4),this.buf[this.pos++]=127&t|(t>127?128:0),t<=127||(this.buf[this.pos++]=127&(t>>>=7)|(t>127?128:0),t<=127||(this.buf[this.pos++]=127&(t>>>=7)|(t>127?128:0),t<=127||(this.buf[this.pos++]=t>>>7&127))))}writeSVarint(t){this.writeVarint(t<0?2*-t-1:2*t)}writeBoolean(t){this.writeVarint(+t)}writeString(t){t=String(t),this.realloc(4*t.length),this.pos++;const e=this.pos;this.pos=function(t,e,i){for(let n,r,s=0;s<e.length;s++){if(n=e.charCodeAt(s),n>55295&&n<57344){if(!r){n>56319||s+1===e.length?(t[i++]=239,t[i++]=191,t[i++]=189):r=n;continue}if(n<56320){t[i++]=239,t[i++]=191,t[i++]=189,r=n;continue}n=r-55296<<10|n-56320|65536,r=null}else r&&(t[i++]=239,t[i++]=191,t[i++]=189,r=null);n<128?t[i++]=n:(n<2048?t[i++]=n>>6|192:(n<65536?t[i++]=n>>12|224:(t[i++]=n>>18|240,t[i++]=n>>12&63|128),t[i++]=n>>6&63|128),t[i++]=63&n|128)}return i}(this.buf,t,this.pos);const i=this.pos-e;i>=128&&Zw(e,i,this),this.pos=e-1,this.writeVarint(i),this.pos+=i}writeFloat(t){this.realloc(4),this.dataView.setFloat32(this.pos,t,!0),this.pos+=4}writeDouble(t){this.realloc(8),this.dataView.setFloat64(this.pos,t,!0),this.pos+=8}writeBytes(t){const e=t.length;this.writeVarint(e),this.realloc(e);for(let i=0;i<e;i++)this.buf[this.pos++]=t[i]}writeRawMessage(t,e){this.pos++;const i=this.pos;t(e,this);const n=this.pos-i;n>=128&&Zw(i,n,this),this.pos=i-1,this.writeVarint(n),this.pos+=n}writeMessage(t,e,i){this.writeTag(t,2),this.writeRawMessage(e,i)}writePackedVarint(t,e){e.length&&this.writeMessage(t,Yw,e)}writePackedSVarint(t,e){e.length&&this.writeMessage(t,Hw,e)}writePackedBoolean(t,e){e.length&&this.writeMessage(t,Jw,e)}writePackedFloat(t,e){e.length&&this.writeMessage(t,Kw,e)}writePackedDouble(t,e){e.length&&this.writeMessage(t,qw,e)}writePackedFixed32(t,e){e.length&&this.writeMessage(t,Qw,e)}writePackedSFixed32(t,e){e.length&&this.writeMessage(t,tT,e)}writePackedFixed64(t,e){e.length&&this.writeMessage(t,eT,e)}writePackedSFixed64(t,e){e.length&&this.writeMessage(t,iT,e)}writeBytesField(t,e){this.writeTag(t,2),this.writeBytes(e)}writeFixed32Field(t,e){this.writeTag(t,5),this.writeFixed32(e)}writeSFixed32Field(t,e){this.writeTag(t,5),this.writeSFixed32(e)}writeFixed64Field(t,e){this.writeTag(t,1),this.writeFixed64(e)}writeSFixed64Field(t,e){this.writeTag(t,1),this.writeSFixed64(e)}writeVarintField(t,e){this.writeTag(t,0),this.writeVarint(e)}writeSVarintField(t,e){this.writeTag(t,0),this.writeSVarint(e)}writeStringField(t,e){this.writeTag(t,2),this.writeString(e)}writeFloatField(t,e){this.writeTag(t,5),this.writeFloat(e)}writeDoubleField(t,e){this.writeTag(t,1),this.writeDouble(e)}writeBooleanField(t,e){this.writeVarintField(t,+e)}}function Ww(t,e,i){return i?4294967296*e+(t>>>0):4294967296*(e>>>0)+(t>>>0)}function Zw(t,e,i){const n=e<=16383?1:e<=2097151?2:e<=268435455?3:Math.floor(Math.log(e)/(7*Math.LN2));i.realloc(n);for(let e=i.pos-1;e>=t;e--)i.buf[e+n]=i.buf[e]}function Yw(t,e){for(let i=0;i<t.length;i++)e.writeVarint(t[i])}function Hw(t,e){for(let i=0;i<t.length;i++)e.writeSVarint(t[i])}function Kw(t,e){for(let i=0;i<t.length;i++)e.writeFloat(t[i])}function qw(t,e){for(let i=0;i<t.length;i++)e.writeDouble(t[i])}function Jw(t,e){for(let i=0;i<t.length;i++)e.writeBoolean(t[i])}function Qw(t,e){for(let i=0;i<t.length;i++)e.writeFixed32(t[i])}function tT(t,e){for(let i=0;i<t.length;i++)e.writeSFixed32(t[i])}function eT(t,e){for(let i=0;i<t.length;i++)e.writeFixed64(t[i])}function iT(t,e){for(let i=0;i<t.length;i++)e.writeSFixed64(t[i])}function nT(t,e,i){if(3===t){const t={keys:[],values:[],features:[]},n=i.readVarint()+i.pos;i.readFields(rT,t,n),t.length=t.features.length,t.length&&(e[t.name]=t)}}function rT(t,e,i){if(15===t)e.version=i.readVarint();else if(1===t)e.name=i.readString();else if(5===t)e.extent=i.readVarint();else if(2===t)e.features.push(i.pos);else if(3===t)e.keys.push(i.readString());else if(4===t){let n=null;const r=i.readVarint()+i.pos;for(;i.pos<r;)n=1===(t=i.readVarint()>>3)?i.readString():2===t?i.readFloat():3===t?i.readDouble():4===t?i.readVarint64():5===t?i.readVarint():6===t?i.readSVarint():7===t?i.readBoolean():null;e.values.push(n)}}function sT(t,e,i){if(1==t)e.id=i.readVarint();else if(2==t){const t=i.readVarint()+i.pos;for(;i.pos<t;){const t=e.layer.keys[i.readVarint()],n=e.layer.values[i.readVarint()];e.properties[t]=n}}else 3==t?e.type=i.readVarint():4==t&&(e.geometry=i.pos)}function oT(t,e,i){t.pos=e.features[i];const n=t.readVarint()+t.pos,r={layer:e,type:0,properties:{}};return t.readFields(sT,r,n),r}const aT=[null],lT=hp(aT,{nd:function(t,e){const i=e[e.length-1];i.ndrefs.push(t.getAttribute("ref")),t.hasAttribute("lon")&&t.hasAttribute("lat")&&(i.flatCoordinates.push(parseFloat(t.getAttribute("lon"))),i.flatCoordinates.push(parseFloat(t.getAttribute("lat"))))},tag:uT}),hT=hp(aT,{node:function(t,e){const i=e[0],n=e[e.length-1],r=t.getAttribute("id"),s=[parseFloat(t.getAttribute("lon")),parseFloat(t.getAttribute("lat"))];n.nodes[r]=s;const o=up({tags:{}},cT,t,e);if(!F(o.tags)){const t=new zr(s);dv(t,!1,i);const e=new Mt(t);void 0!==r&&e.setId(r),e.setProperties(o.tags,!0),n.features.push(e)}},way:function(t,e){const i=up({id:t.getAttribute("id"),ndrefs:[],flatCoordinates:[],tags:{}},lT,t,e);e[e.length-1].ways.push(i)}});const cT=hp(aT,{tag:uT});function uT(t,e){e[e.length-1].tags[t.getAttribute("k")]=t.getAttribute("v")}class dT{read(t){if(!t)return null;if("string"==typeof t){const e=Jf(t);return this.readFromDocument(e)}return Kf(t)?this.readFromDocument(t):this.readFromNode(t)}readFromDocument(t){for(let e=t.firstChild;e;e=e.nextSibling)if(e.nodeType==Node.ELEMENT_NODE)return this.readFromNode(e);return null}readFromNode(t){U()}}const gT="http://www.w3.org/1999/xlink";function fT(t){return t.getAttributeNS(gT,"href")}const pT=[null,"http://www.opengis.net/ows/1.1"],mT=hp(pT,{ServiceIdentification:np((function(t,e){return up({},IT,t,e)})),ServiceProvider:np((function(t,e){return up({},LT,t,e)})),OperationsMetadata:np((function(t,e){return up({},CT,t,e)}))});class _T extends dT{constructor(){super()}readFromNode(t){const e=up({},mT,t,[]);return e||null}}const yT=hp(pT,{DeliveryPoint:np(Nv),City:np(Nv),AdministrativeArea:np(Nv),PostalCode:np(Nv),Country:np(Nv),ElectronicMailAddress:np(Nv)}),xT=hp(pT,{Value:ip((function(t,e){return Nv(t)}))}),vT=hp(pT,{AllowedValues:np((function(t,e){return up({},xT,t,e)}))}),ET=hp(pT,{Phone:np((function(t,e){return up({},RT,t,e)})),Address:np((function(t,e){return up({},yT,t,e)}))}),ST=hp(pT,{HTTP:np((function(t,e){return up({},wT,t,e)}))}),wT=hp(pT,{Get:ip((function(t,e){const i=fT(t);if(!i)return;return up({href:i},bT,t,e)})),Post:void 0}),TT=hp(pT,{DCP:np((function(t,e){return up({},ST,t,e)}))}),CT=hp(pT,{Operation:function(t,e){const i=t.getAttribute("name"),n=up({},TT,t,e);if(!n)return;e[e.length-1][i]=n}}),RT=hp(pT,{Voice:np(Nv),Facsimile:np(Nv)}),bT=hp(pT,{Constraint:ip((function(t,e){const i=t.getAttribute("name");if(!i)return;return up({name:i},vT,t,e)}))}),PT=hp(pT,{IndividualName:np(Nv),PositionName:np(Nv),ContactInfo:np((function(t,e){return up({},ET,t,e)}))}),IT=hp(pT,{Abstract:np(Nv),AccessConstraints:np(Nv),Fees:np(Nv),Title:np(Nv),ServiceTypeVersion:np(Nv),ServiceType:np(Nv)}),LT=hp(pT,{ProviderName:np(Nv),ProviderSite:np(fT),ServiceContact:np((function(t,e){return up({},PT,t,e)}))});function FT(t,e,i){let n;i=i||1e5;const r=new Array(e);for(n=0;n<e;++n)r[n]=0;for(let i=0,s=t.length;i<s;)for(n=0;n<e;++n,++i){const e=t[i],s=e-r[n];r[n]=e,t[i]=s}return AT(t,i)}function MT(t,e,i){let n;i=i||1e5;const r=new Array(e);for(n=0;n<e;++n)r[n]=0;const s=OT(t,i);for(let t=0,i=s.length;t<i;)for(n=0;n<e;++n,++t)r[n]+=s[t],s[t]=r[n];return s}function AT(t,e){e=e||1e5;for(let i=0,n=t.length;i<n;++i)t[i]=Math.round(t[i]*e);return DT(t)}function OT(t,e){e=e||1e5;const i=NT(t);for(let t=0,n=i.length;t<n;++t)i[t]/=e;return i}function DT(t){for(let e=0,i=t.length;e<i;++e){const i=t[e];t[e]=i<0?~(i<<1):i<<1}return kT(t)}function NT(t){const e=GT(t);for(let t=0,i=e.length;t<i;++t){const i=e[t];e[t]=1&i?~(i>>1):i>>1}return e}function kT(t){let e="";for(let i=0,n=t.length;i<n;++i)e+=jT(t[i]);return e}function GT(t){const e=[];let i=0,n=0;for(let r=0,s=t.length;r<s;++r){const s=t.charCodeAt(r)-63;i|=(31&s)<<n,s<32?(e.push(i),i=0,n=0):n+=5}return e}function jT(t){let e,i="";for(;t>=32;)e=63+(32|31&t),i+=String.fromCharCode(e),t>>=5;return e=t+63,i+=String.fromCharCode(e),i}const UT={Point:function(t,e,i){const n=t.coordinates;e&&i&&$T(n,e,i);return new zr(n)},LineString:function(t,e){const i=BT(t.arcs,e);return new Ed(i)},Polygon:function(t,e){const i=[];for(let n=0,r=t.arcs.length;n<r;++n)i[n]=BT(t.arcs[n],e);return new ls(i)},MultiPoint:function(t,e,i){const n=t.coordinates;if(e&&i)for(let t=0,r=n.length;t<r;++t)$T(n[t],e,i);return new wd(n)},MultiLineString:function(t,e){const i=[];for(let n=0,r=t.arcs.length;n<r;++n)i[n]=BT(t.arcs[n],e);return new Sd(i)},MultiPolygon:function(t,e){const i=[];for(let n=0,r=t.arcs.length;n<r;++n){const r=t.arcs[n],s=[];for(let t=0,i=r.length;t<i;++t)s[t]=BT(r[t],e);i[n]=s}return new Td(i)}};function BT(t,e){const i=[];let n;for(let r=0,s=t.length;r<s;++r)if(n=t[r],r>0&&i.pop(),n>=0){const t=e[n];for(let e=0,n=t.length;e<n;++e)i.push(t[e].slice(0))}else{const t=e[~n];for(let e=t.length-1;e>=0;--e)i.push(t[e].slice(0))}return i}function zT(t,e,i,n,r,s,o){const a=t.geometries,l=[];for(let t=0,h=a.length;t<h;++t)l[t]=XT(a[t],e,i,n,r,s,o);return l}function XT(t,e,i,n,r,s,o){let a=null;const l=t.type;if(l){const r=UT[l];a="Point"===l||"MultiPoint"===l?r(t,i,n):r(t,e),a=dv(a,!1,o)}const h=new Mt({geometry:a});void 0!==t.id&&h.setId(t.id);let c=t.properties;return r&&(c||(c={}),c[r]=s),c&&h.setProperties(c,!0),h}function VT(t,e,i){let n=0,r=0;for(let s=0,o=t.length;s<o;++s){const o=t[s];n+=o[0],r+=o[1],o[0]=n,o[1]=r,$T(o,e,i)}}function $T(t,e,i){t[0]=t[0]*e[0]+i[0],t[1]=t[1]*e[1]+i[1]}class WT{constructor(t){this.tagName_=t}getTagName(){return this.tagName_}}class ZT extends WT{constructor(t,e){super(t),this.conditions=e,Ft(this.conditions.length>=2,"At least 2 conditions are required")}}class YT extends ZT{constructor(t){super("And",Array.prototype.slice.call(arguments))}}class HT extends WT{constructor(t,e,i){if(super("BBOX"),this.geometryName=t,this.extent=e,4!==e.length)throw new Error("Expected an extent with four values ([minX, minY, maxX, maxY])");this.srsName=i}}class KT extends WT{constructor(t,e,i,n){super(t),this.geometryName=e||"the_geom",this.geometry=i,this.srsName=n}}class qT extends KT{constructor(t,e,i){super("Contains",t,e,i)}}class JT extends KT{constructor(t,e,i,n,r){super("DWithin",t,e,r),this.distance=i,this.unit=n}}class QT extends KT{constructor(t,e,i){super("Disjoint",t,e,i)}}class tC extends WT{constructor(t,e){super(t),this.propertyName=e}}class eC extends tC{constructor(t,e,i){super("During",t),this.begin=e,this.end=i}}class iC extends tC{constructor(t,e,i,n){super(t,e),this.expression=i,this.matchCase=n}}class nC extends iC{constructor(t,e,i){super("PropertyIsEqualTo",t,e,i)}}class rC extends iC{constructor(t,e){super("PropertyIsGreaterThan",t,e)}}class sC extends iC{constructor(t,e){super("PropertyIsGreaterThanOrEqualTo",t,e)}}class oC extends KT{constructor(t,e,i){super("Intersects",t,e,i)}}class aC extends tC{constructor(t,e,i){super("PropertyIsBetween",t),this.lowerBoundary=e,this.upperBoundary=i}}class lC extends tC{constructor(t,e,i,n,r,s){super("PropertyIsLike",t),this.pattern=e,this.wildCard=void 0!==i?i:"*",this.singleChar=void 0!==n?n:".",this.escapeChar=void 0!==r?r:"!",this.matchCase=s}}class hC extends tC{constructor(t){super("PropertyIsNull",t)}}class cC extends iC{constructor(t,e){super("PropertyIsLessThan",t,e)}}class uC extends iC{constructor(t,e){super("PropertyIsLessThanOrEqualTo",t,e)}}class dC extends WT{constructor(t){super("Not"),this.condition=t}}class gC extends iC{constructor(t,e,i){super("PropertyIsNotEqualTo",t,e,i)}}class fC extends ZT{constructor(t){super("Or",Array.prototype.slice.call(arguments))}}class pC extends WT{constructor(t){super("ResourceId"),this.rid=t}}class mC extends KT{constructor(t,e,i){super("Within",t,e,i)}}function _C(t){const e=[null].concat(Array.prototype.slice.call(arguments));return new(Function.prototype.bind.apply(YT,e))}function yC(t,e,i){return new HT(t,e,i)}const xC={"http://www.opengis.net/gml":{boundedBy:np(Pv.prototype.readExtentElement,"bounds")},"http://www.opengis.net/wfs/2.0":{member:tp(Pv.prototype.readFeaturesInternal)}},vC={"http://www.opengis.net/wfs":{totalInserted:np(Ov),totalUpdated:np(Ov),totalDeleted:np(Ov)},"http://www.opengis.net/wfs/2.0":{totalInserted:np(Ov),totalUpdated:np(Ov),totalDeleted:np(Ov)}},EC={"http://www.opengis.net/wfs":{TransactionSummary:np(MC,"transactionSummary"),InsertResults:np(NC,"insertIds")},"http://www.opengis.net/wfs/2.0":{TransactionSummary:np(MC,"transactionSummary"),InsertResults:np(NC,"insertIds")}},SC={"http://www.opengis.net/wfs":{PropertyName:rp(zv)},"http://www.opengis.net/wfs/2.0":{PropertyName:rp(zv)}},wC={"http://www.opengis.net/wfs":{Insert:rp(kC),Update:rp(BC),Delete:rp(UC),Property:rp(zC),Native:rp(XC)},"http://www.opengis.net/wfs/2.0":{Insert:rp(kC),Update:rp(BC),Delete:rp(UC),Property:rp(zC),Native:rp(XC)}},TC="feature",CC="http://www.w3.org/2000/xmlns/",RC={"2.0.0":"http://www.opengis.net/ogc/1.1","1.1.0":"http://www.opengis.net/ogc","1.0.0":"http://www.opengis.net/ogc"},bC={"2.0.0":"http://www.opengis.net/wfs/2.0","1.1.0":"http://www.opengis.net/wfs","1.0.0":"http://www.opengis.net/wfs"},PC={"2.0.0":"http://www.opengis.net/fes/2.0","1.1.0":"http://www.opengis.net/fes","1.0.0":"http://www.opengis.net/fes"},IC={"2.0.0":"http://www.opengis.net/wfs/2.0 http://schemas.opengis.net/wfs/2.0/wfs.xsd","1.1.0":"http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.1.0/wfs.xsd","1.0.0":"http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.0.0/wfs.xsd"},LC={"2.0.0":Kv,"1.1.0":Yv,"1.0.0":$v};function FC(t,e,i,n){gp(n,wC,op(t),e,i)}function MC(t,e){return up({},vC,t,e)}const AC={"http://www.opengis.net/ogc":{FeatureId:tp((function(t,e){return t.getAttribute("fid")}))},"http://www.opengis.net/ogc/1.1":{FeatureId:tp((function(t,e){return t.getAttribute("fid")}))}};function OC(t,e){cp(AC,t,e)}const DC={"http://www.opengis.net/wfs":{Feature:OC},"http://www.opengis.net/wfs/2.0":{Feature:OC}};function NC(t,e){return up([],DC,t,e)}function kC(t,e,i){const n=i[i.length-1],r=n.featureType,s=n.featureNS,o=n.gmlVersion,a=Zf(s,r);t.appendChild(a),2===o?$v.prototype.writeFeatureElement(a,e,i):3===o?Yv.prototype.writeFeatureElement(a,e,i):Kv.prototype.writeFeatureElement(a,e,i)}function GC(t,e,i){const n=i[i.length-1].version,r=RC[n],s=Zf(r,"Filter"),o=Zf(r,"FeatureId");s.appendChild(o),o.setAttribute("fid",e),t.appendChild(s)}function jC(t,e){const i=(t=t||TC)+":";return e.startsWith(i)?e:i+e}function UC(t,e,i){const n=i[i.length-1];Ft(void 0!==e.getId(),"Features must have an id set");const r=n.featureType,s=n.featurePrefix,o=n.featureNS,a=jC(s,r);t.setAttribute("typeName",a),t.setAttributeNS(CC,"xmlns:"+s,o);const l=e.getId();void 0!==l&&GC(t,l,i)}function BC(t,e,i){const n=i[i.length-1];Ft(void 0!==e.getId(),"Features must have an id set");const r=n.version,s=n.featureType,o=n.featurePrefix,a=n.featureNS,l=jC(o,s),h=e.getGeometryName();t.setAttribute("typeName",l),t.setAttributeNS(CC,"xmlns:"+o,a);const c=e.getId();if(void 0!==c){const s=e.getKeys(),o=[];for(let t=0,i=s.length;t<i;t++){const i=e.get(s[t]);if(void 0!==i){let e=s[t];i&&"function"==typeof i.getSimplifiedGeometry&&(e=h),o.push({name:e,value:i})}}gp({version:r,gmlVersion:n.gmlVersion,node:t,hasZ:n.hasZ,srsName:n.srsName},wC,op("Property"),o,i),GC(t,c,i)}}function zC(t,e,i){const n=i[i.length-1],r=n.version,s=bC[r],o=Zf(s,"2.0.0"===r?"ValueReference":"Name"),a=n.gmlVersion;if(t.appendChild(o),zv(o,e.name),void 0!==e.value&&null!==e.value){const n=Zf(s,"Value");t.appendChild(n),e.value&&"function"==typeof e.value.getSimplifiedGeometry?2===a?$v.prototype.writeGeometryElement(n,e.value,i):3===a?Yv.prototype.writeGeometryElement(n,e.value,i):Kv.prototype.writeGeometryElement(n,e.value,i):zv(n,e.value)}}function XC(t,e,i){e.vendorId&&t.setAttribute("vendorId",e.vendorId),void 0!==e.safeToIgnore&&t.setAttribute("safeToIgnore",String(e.safeToIgnore)),void 0!==e.value&&zv(t,e.value)}const VC={"http://www.opengis.net/wfs":{Query:rp($C)},"http://www.opengis.net/wfs/2.0":{Query:rp($C)},"http://www.opengis.net/ogc":{During:rp(KC),And:rp(qC),Or:rp(qC),Not:rp(JC),BBOX:rp(ZC),Contains:rp(YC),Intersects:rp(YC),Within:rp(YC),DWithin:rp(HC),PropertyIsEqualTo:rp(QC),PropertyIsNotEqualTo:rp(QC),PropertyIsLessThan:rp(QC),PropertyIsLessThanOrEqualTo:rp(QC),PropertyIsGreaterThan:rp(QC),PropertyIsGreaterThanOrEqualTo:rp(QC),PropertyIsNull:rp(tR),PropertyIsBetween:rp(eR),PropertyIsLike:rp(iR)},"http://www.opengis.net/fes/2.0":{During:rp(KC),And:rp(qC),Or:rp(qC),Not:rp(JC),BBOX:rp(ZC),Contains:rp(YC),Disjoint:rp(YC),Intersects:rp(YC),ResourceId:rp((function(t,e,i){t.setAttribute("rid",e.rid)})),Within:rp(YC),DWithin:rp(HC),PropertyIsEqualTo:rp(QC),PropertyIsNotEqualTo:rp(QC),PropertyIsLessThan:rp(QC),PropertyIsLessThanOrEqualTo:rp(QC),PropertyIsGreaterThan:rp(QC),PropertyIsGreaterThanOrEqualTo:rp(QC),PropertyIsNull:rp(tR),PropertyIsBetween:rp(eR),PropertyIsLike:rp(iR)}};function $C(t,e,i){const n=i[i.length-1],r=n.version,s=n.featurePrefix,o=n.featureNS,a=n.propertyNames,l=n.srsName;let h,c;h=s?jC(s,e):e,c="2.0.0"===r?"typeNames":"typeName",t.setAttribute(c,h),l&&t.setAttribute("srsName",l),o&&t.setAttributeNS(CC,"xmlns:"+s,o);const u=Object.assign({},n);u.node=t,gp(u,SC,op("PropertyName"),a,i);const d=n.filter;if(d){const e=Zf(lR(r),"Filter");t.appendChild(e),WC(e,d,i)}}function WC(t,e,i){const n=i[i.length-1],r={node:t};Object.assign(r,{context:n}),gp(r,VC,op(e.getTagName()),[e],i)}function ZC(t,e,i){const n=i[i.length-1],r=n.context.version;n.srsName=e.srsName;const s=LC[r];sR(r,t,e.geometryName),s.prototype.writeGeometryElement(t,e.extent,i)}function YC(t,e,i){const n=i[i.length-1],r=n.context.version;n.srsName=e.srsName;const s=LC[r];sR(r,t,e.geometryName),s.prototype.writeGeometryElement(t,e.geometry,i)}function HC(t,e,i){const n=i[i.length-1].context.version;YC(t,e,i);const r=Zf(lR(n),"Distance");zv(r,e.distance.toString()),"2.0.0"===n?r.setAttribute("uom",e.unit):r.setAttribute("units",e.unit),t.appendChild(r)}function KC(t,e,i){const n=i[i.length-1].context.version;nR(PC[n],"ValueReference",t,e.propertyName);const r=Zf(Rv,"TimePeriod");t.appendChild(r);const s=Zf(Rv,"begin");r.appendChild(s),oR(s,e.begin);const o=Zf(Rv,"end");r.appendChild(o),oR(o,e.end)}function qC(t,e,i){const n=i[i.length-1].context,r={node:t};Object.assign(r,{context:n});const s=e.conditions;for(let t=0,e=s.length;t<e;++t){const e=s[t];gp(r,VC,op(e.getTagName()),[e],i)}}function JC(t,e,i){const n=i[i.length-1].context,r={node:t};Object.assign(r,{context:n});const s=e.condition;gp(r,VC,op(s.getTagName()),[s],i)}function QC(t,e,i){const n=i[i.length-1].context.version;void 0!==e.matchCase&&t.setAttribute("matchCase",e.matchCase.toString()),sR(n,t,e.propertyName),rR(n,t,""+e.expression)}function tR(t,e,i){sR(i[i.length-1].context.version,t,e.propertyName)}function eR(t,e,i){const n=i[i.length-1].context.version,r=lR(n);sR(n,t,e.propertyName);const s=Zf(r,"LowerBoundary");t.appendChild(s),rR(n,s,""+e.lowerBoundary);const o=Zf(r,"UpperBoundary");t.appendChild(o),rR(n,o,""+e.upperBoundary)}function iR(t,e,i){const n=i[i.length-1].context.version;t.setAttribute("wildCard",e.wildCard),t.setAttribute("singleChar",e.singleChar),t.setAttribute("escapeChar",e.escapeChar),void 0!==e.matchCase&&t.setAttribute("matchCase",e.matchCase.toString()),sR(n,t,e.propertyName),rR(n,t,""+e.pattern)}function nR(t,e,i,n){const r=Zf(t,e);zv(r,n),i.appendChild(r)}function rR(t,e,i){nR(lR(t),"Literal",e,i)}function sR(t,e,i){"2.0.0"===t?nR(PC[t],"ValueReference",e,i):nR(RC[t],"PropertyName",e,i)}function oR(t,e){const i=Zf(Rv,"TimeInstant");t.appendChild(i);const n=Zf(Rv,"timePosition");i.appendChild(n),zv(n,e)}function aR(t,e,i){const n=i[i.length-1],r=Object.assign({},n);r.node=t,gp(r,VC,op("Query"),e,i)}function lR(t){let e;return e="2.0.0"===t?PC[t]:RC[t],e}const hR=1,cR=2,uR=3,dR=4,gR=5,fR=6,pR=7,mR=15,_R=16,yR=17;class xR{constructor(t){this.view_=t,this.pos_=0,this.initialized_=!1,this.isLittleEndian_=!1,this.hasZ_=!1,this.hasM_=!1,this.srid_=null,this.layout_="XY"}readUint8(){return this.view_.getUint8(this.pos_++)}readUint32(t){return this.view_.getUint32((this.pos_+=4)-4,void 0!==t?t:this.isLittleEndian_)}readDouble(t){return this.view_.getFloat64((this.pos_+=8)-8,void 0!==t?t:this.isLittleEndian_)}readPoint(){const t=[];return t.push(this.readDouble()),t.push(this.readDouble()),this.hasZ_&&t.push(this.readDouble()),this.hasM_&&t.push(this.readDouble()),t}readLineString(){const t=this.readUint32(),e=[];for(let i=0;i<t;i++)e.push(this.readPoint());return e}readPolygon(){const t=this.readUint32(),e=[];for(let i=0;i<t;i++)e.push(this.readLineString());return e}readWkbHeader(t){const e=this.readUint8()>0,i=this.readUint32(e),n=Math.floor((268435455&i)/1e3),r=Boolean(2147483648&i)||1===n||3===n,s=Boolean(1073741824&i)||2===n||3===n,o=Boolean(536870912&i),a=(268435455&i)%1e3,l=["XY",r?"Z":"",s?"M":""].join(""),h=o?this.readUint32(e):null;if(void 0!==t&&t!==a)throw new Error("Unexpected WKB geometry type "+a);if(this.initialized_){if(this.isLittleEndian_!==e)throw new Error("Inconsistent endian");if(this.layout_!==l)throw new Error("Inconsistent geometry layout");if(h&&this.srid_!==h)throw new Error("Inconsistent coordinate system (SRID)")}else this.isLittleEndian_=e,this.hasZ_=r,this.hasM_=s,this.layout_=l,this.srid_=h,this.initialized_=!0;return a}readWkbPayload(t){switch(t){case hR:return this.readPoint();case cR:return this.readLineString();case uR:case yR:return this.readPolygon();case dR:return this.readMultiPoint();case gR:return this.readMultiLineString();case fR:case mR:case _R:return this.readMultiPolygon();case pR:return this.readGeometryCollection();default:throw new Error("Unsupported WKB geometry type "+t+" is found")}}readWkbBlock(t){return this.readWkbPayload(this.readWkbHeader(t))}readWkbCollection(t,e){const i=this.readUint32(),n=[];for(let r=0;r<i;r++){const i=t.call(this,e);i&&n.push(i)}return n}readMultiPoint(){return this.readWkbCollection(this.readWkbBlock,hR)}readMultiLineString(){return this.readWkbCollection(this.readWkbBlock,cR)}readMultiPolygon(){return this.readWkbCollection(this.readWkbBlock,uR)}readGeometryCollection(){return this.readWkbCollection(this.readGeometry)}readGeometry(){const t=this.readWkbHeader(),e=this.readWkbPayload(t);switch(t){case hR:return new zr(e,this.layout_);case cR:return new Ed(e,this.layout_);case uR:case yR:return new ls(e,this.layout_);case dR:return new wd(e,this.layout_);case gR:return new Sd(e,this.layout_);case fR:case mR:case _R:return new Td(e,this.layout_);case pR:return new yd(e);default:return null}}getSrid(){return this.srid_}}class vR{constructor(t){t=t||{},this.layout_=t.layout,this.isLittleEndian_=!1!==t.littleEndian,this.isEWKB_=!1!==t.ewkb,this.writeQueue_=[],this.nodata_=Object.assign({X:0,Y:0,Z:0,M:0},t.nodata)}writeUint8(t){this.writeQueue_.push([1,t])}writeUint32(t){this.writeQueue_.push([4,t])}writeDouble(t){this.writeQueue_.push([8,t])}writePoint(t,e){const i=Object.assign.apply(null,e.split("").map(((e,i)=>({[e]:t[i]}))));for(const t of this.layout_)this.writeDouble(t in i?i[t]:this.nodata_[t])}writeLineString(t,e){this.writeUint32(t.length);for(let i=0;i<t.length;i++)this.writePoint(t[i],e)}writePolygon(t,e){this.writeUint32(t.length);for(let i=0;i<t.length;i++)this.writeLineString(t[i],e)}writeWkbHeader(t,e){t%=1e3,this.layout_.includes("Z")&&(t+=this.isEWKB_?2147483648:1e3),this.layout_.includes("M")&&(t+=this.isEWKB_?1073741824:2e3),this.isEWKB_&&Number.isInteger(e)&&(t|=536870912),this.writeUint8(this.isLittleEndian_?1:0),this.writeUint32(t),this.isEWKB_&&Number.isInteger(e)&&this.writeUint32(e)}writeMultiPoint(t,e){this.writeUint32(t.length);for(let i=0;i<t.length;i++)this.writeWkbHeader(1),this.writePoint(t[i],e)}writeMultiLineString(t,e){this.writeUint32(t.length);for(let i=0;i<t.length;i++)this.writeWkbHeader(2),this.writeLineString(t[i],e)}writeMultiPolygon(t,e){this.writeUint32(t.length);for(let i=0;i<t.length;i++)this.writeWkbHeader(3),this.writePolygon(t[i],e)}writeGeometryCollection(t){this.writeUint32(t.length);for(let e=0;e<t.length;e++)this.writeGeometry(t[e])}findMinimumLayout(t,e="XYZM"){if(t instanceof gr)return(i=t.getLayout())===(n=e)?i:"XYZM"===i?n:"XYZM"===n?i:"XY";var i,n;if(t instanceof yd){const i=t.getGeometriesArray();for(let t=0;t<i.length&&"XY"!==e;t++)e=this.findMinimumLayout(i[t],e)}return e}writeGeometry(t,e){const i={Point:hR,LineString:cR,Polygon:uR,MultiPoint:dR,MultiLineString:gR,MultiPolygon:fR,GeometryCollection:pR},n=t.getType(),r=i[n];if(!r)throw new Error("GeometryType "+n+" is not supported");if(this.layout_||(this.layout_=this.findMinimumLayout(t)),this.writeWkbHeader(r,e),t instanceof gr){({Point:this.writePoint,LineString:this.writeLineString,Polygon:this.writePolygon,MultiPoint:this.writeMultiPoint,MultiLineString:this.writeMultiLineString,MultiPolygon:this.writeMultiPolygon})[n].call(this,t.getCoordinates(),t.getLayout())}else t instanceof yd&&this.writeGeometryCollection(t.getGeometriesArray())}getBuffer(){const t=this.writeQueue_.reduce(((t,e)=>t+e[0]),0),e=new ArrayBuffer(t),i=new DataView(e);let n=0;return this.writeQueue_.forEach((t=>{switch(t[0]){case 1:i.setUint8(n,t[1]);break;case 4:i.setUint32(n,t[1],this.isLittleEndian_);break;case 8:i.setFloat64(n,t[1],this.isLittleEndian_)}n+=t[0]})),e}}function ER(t){return"string"==typeof t?function(t){const e=new Uint8Array(t.length/2);for(let i=0;i<t.length/2;i++)e[i]=parseInt(t.substr(2*i,2),16);return new DataView(e.buffer)}(t):ArrayBuffer.isView(t)?t instanceof DataView?t:new DataView(t.buffer,t.byteOffset,t.byteLength):t instanceof ArrayBuffer?new DataView(t):null}const SR={POINT:zr,LINESTRING:Ed,POLYGON:ls,MULTIPOINT:wd,MULTILINESTRING:Sd,MULTIPOLYGON:Td},wR="EMPTY",TR="Z",CR="M",RR=0,bR=1,PR=2,IR=3,LR=4,FR=5,MR=6,AR={Point:"POINT",LineString:"LINESTRING",Polygon:"POLYGON",MultiPoint:"MULTIPOINT",MultiLineString:"MULTILINESTRING",MultiPolygon:"MULTIPOLYGON",GeometryCollection:"GEOMETRYCOLLECTION",Circle:"CIRCLE"};class OR{constructor(t){this.wkt=t,this.index_=-1}isAlpha_(t){return t>="a"&&t<="z"||t>="A"&&t<="Z"}isNumeric_(t,e){return e=void 0!==e&&e,t>="0"&&t<="9"||"."==t&&!e}isWhiteSpace_(t){return" "==t||"\t"==t||"\r"==t||"\n"==t}nextChar_(){return this.wkt.charAt(++this.index_)}nextToken(){const t=this.nextChar_(),e=this.index_;let i,n=t;if("("==t)i=PR;else if(","==t)i=FR;else if(")"==t)i=IR;else if(this.isNumeric_(t)||"-"==t)i=LR,n=this.readNumber_();else if(this.isAlpha_(t))i=bR,n=this.readText_();else{if(this.isWhiteSpace_(t))return this.nextToken();if(""!==t)throw new Error("Unexpected character: "+t);i=MR}return{position:e,value:n,type:i}}readNumber_(){let t;const e=this.index_;let i=!1,n=!1;do{"."==t?i=!0:"e"!=t&&"E"!=t||(n=!0),t=this.nextChar_()}while(this.isNumeric_(t,i)||!n&&("e"==t||"E"==t)||n&&("-"==t||"+"==t));return parseFloat(this.wkt.substring(e,this.index_--))}readText_(){let t;const e=this.index_;do{t=this.nextChar_()}while(this.isAlpha_(t));return this.wkt.substring(e,this.index_--).toUpperCase()}}class DR{constructor(t){this.lexer_=t,this.token_={position:0,type:RR},this.layout_="XY"}consume_(){this.token_=this.lexer_.nextToken()}isTokenType(t){return this.token_.type==t}match(t){const e=this.isTokenType(t);return e&&this.consume_(),e}parse(){return this.consume_(),this.parseGeometry_()}parseGeometryLayout_(){let t="XY";const e=this.token_;if(this.isTokenType(bR)){const i=e.value;i===TR?t="XYZ":i===CR?t="XYM":"ZM"===i&&(t="XYZM"),"XY"!==t&&this.consume_()}return t}parseGeometryCollectionText_(){if(this.match(PR)){const t=[];do{t.push(this.parseGeometry_())}while(this.match(FR));if(this.match(IR))return t}throw new Error(this.formatErrorMessage_())}parsePointText_(){if(this.match(PR)){const t=this.parsePoint_();if(this.match(IR))return t}throw new Error(this.formatErrorMessage_())}parseLineStringText_(){if(this.match(PR)){const t=this.parsePointList_();if(this.match(IR))return t}throw new Error(this.formatErrorMessage_())}parsePolygonText_(){if(this.match(PR)){const t=this.parseLineStringTextList_();if(this.match(IR))return t}throw new Error(this.formatErrorMessage_())}parseMultiPointText_(){if(this.match(PR)){let t;if(t=this.token_.type==PR?this.parsePointTextList_():this.parsePointList_(),this.match(IR))return t}throw new Error(this.formatErrorMessage_())}parseMultiLineStringText_(){if(this.match(PR)){const t=this.parseLineStringTextList_();if(this.match(IR))return t}throw new Error(this.formatErrorMessage_())}parseMultiPolygonText_(){if(this.match(PR)){const t=this.parsePolygonTextList_();if(this.match(IR))return t}throw new Error(this.formatErrorMessage_())}parsePoint_(){const t=[],e=this.layout_.length;for(let i=0;i<e;++i){const e=this.token_;if(!this.match(LR))break;t.push(e.value)}if(t.length==e)return t;throw new Error(this.formatErrorMessage_())}parsePointList_(){const t=[this.parsePoint_()];for(;this.match(FR);)t.push(this.parsePoint_());return t}parsePointTextList_(){const t=[this.parsePointText_()];for(;this.match(FR);)t.push(this.parsePointText_());return t}parseLineStringTextList_(){const t=[this.parseLineStringText_()];for(;this.match(FR);)t.push(this.parseLineStringText_());return t}parsePolygonTextList_(){const t=[this.parsePolygonText_()];for(;this.match(FR);)t.push(this.parsePolygonText_());return t}isEmptyGeometry_(){const t=this.isTokenType(bR)&&this.token_.value==wR;return t&&this.consume_(),t}formatErrorMessage_(){return"Unexpected `"+this.token_.value+"` at position "+this.token_.position+" in `"+this.lexer_.wkt+"`"}parseGeometry_(){const t=this.token_;if(this.match(bR)){const e=t.value;this.layout_=this.parseGeometryLayout_();const i=this.isEmptyGeometry_();if("GEOMETRYCOLLECTION"==e){if(i)return new yd([]);const t=this.parseGeometryCollectionText_();return new yd(t)}const n=SR[e];if(!n)throw new Error("Invalid geometry type: "+e);let r;if(i)r="POINT"==e?[NaN,NaN]:[];else switch(e){case"POINT":r=this.parsePointText_();break;case"LINESTRING":r=this.parseLineStringText_();break;case"POLYGON":r=this.parsePolygonText_();break;case"MULTIPOINT":r=this.parseMultiPointText_();break;case"MULTILINESTRING":r=this.parseMultiLineStringText_();break;case"MULTIPOLYGON":r=this.parseMultiPolygonText_()}return new n(r,this.layout_)}throw new Error(this.formatErrorMessage_())}}function NR(t){const e=t.getCoordinates();return 0===e.length?"":e.join(" ")}function kR(t){const e=t.getCoordinates(),i=[];for(let t=0,n=e.length;t<n;++t)i.push(e[t].join(" "));return i.join(",")}function GR(t){const e=[],i=t.getLinearRings();for(let t=0,n=i.length;t<n;++t)e.push("("+kR(i[t])+")");return e.join(",")}const jR={Point:NR,LineString:kR,Polygon:GR,MultiPoint:function(t){const e=[],i=t.getPoints();for(let t=0,n=i.length;t<n;++t)e.push("("+NR(i[t])+")");return e.join(",")},MultiLineString:function(t){const e=[],i=t.getLineStrings();for(let t=0,n=i.length;t<n;++t)e.push("("+kR(i[t])+")");return e.join(",")},MultiPolygon:function(t){const e=[],i=t.getPolygons();for(let t=0,n=i.length;t<n;++t)e.push("("+GR(i[t])+")");return e.join(",")},GeometryCollection:function(t){const e=[],i=t.getGeometries();for(let t=0,n=i.length;t<n;++t)e.push(UR(i[t]));return e.join(",")}};function UR(t){const e=t.getType(),i=(0,jR[e])(t);let n=AR[e];if("function"==typeof t.getFlatCoordinates){const e=function(t){const e=t.getLayout();let i="";return"XYZ"!==e&&"XYZM"!==e||(i+=TR),"XYM"!==e&&"XYZM"!==e||(i+=CR),i}(t);e.length>0&&(n+=" "+e)}return 0===i.length?n+" "+wR:n+"("+i+")"}const BR=[null,"http://www.opengis.net/wms"];function zR(t){return We(t[0].version,"1.3")>=0}const XR=hp(BR,{Service:np((function(t,e){return up({},zR(e)?HR:YR,t,e)})),Capability:np((function(t,e){return up({},zR(e)?WR:$R,t,e)}))}),VR={Request:np((function(t,e){return up({},sb,t,e)})),Exception:np((function(t,e){return up([],QR,t,e)})),Layer:np((function(t,e){const i=up({},zR(e)?ib:eb,t,e);if(void 0===i.Layer)return Object.assign(i,gb(t,e));return i}))},$R=hp(BR,{...VR,UserDefinedSymbolization:np((function(t,e){return{SupportSLD:!!Lv(t.getAttribute("UserDefinedSymbolization")),UserLayer:!!Lv(t.getAttribute("UserLayer")),UserStyle:!!Lv(t.getAttribute("UserStyle")),RemoteWFS:!!Lv(t.getAttribute("RemoteWFS"))}}))}),WR=hp(BR,VR);const ZR={Name:np(Nv),Title:np(Nv),Abstract:np(Nv),KeywordList:np(_b),OnlineResource:np(fT),ContactInformation:np((function(t,e){return up({},KR,t,e)})),Fees:np(Nv),AccessConstraints:np(Nv)},YR=hp(BR,ZR),HR=hp(BR,{...ZR,LayerLimit:np(Ov),MaxWidth:np(Ov),MaxHeight:np(Ov)}),KR=hp(BR,{ContactPersonPrimary:np((function(t,e){return up({},qR,t,e)})),ContactPosition:np(Nv),ContactAddress:np((function(t,e){return up({},JR,t,e)})),ContactVoiceTelephone:np(Nv),ContactFacsimileTelephone:np(Nv),ContactElectronicMailAddress:np(Nv)}),qR=hp(BR,{ContactPerson:np(Nv),ContactOrganization:np(Nv)}),JR=hp(BR,{AddressType:np(Nv),Address:np(Nv),City:np(Nv),StateOrProvince:np(Nv),PostCode:np(Nv),Country:np(Nv)}),QR=hp(BR,{Format:tp(Nv)}),tb={Name:np(Nv),Title:np(Nv),Abstract:np(Nv),KeywordList:np(_b),BoundingBox:ip(db),Dimension:ip((function(t,e){const i={name:t.getAttribute("name"),units:t.getAttribute("units"),unitSymbol:t.getAttribute("unitSymbol")};zR(e)&&Object.assign(i,{default:t.getAttribute("default"),multipleValues:Lv(t.getAttribute("multipleValues")),nearestValue:Lv(t.getAttribute("nearestValue")),current:Lv(t.getAttribute("current")),values:Nv(t)});return i})),Attribution:np((function(t,e){return up({},nb,t,e)})),AuthorityURL:ip((function(t,e){const i=fb(t,e);if(i)return i.name=t.getAttribute("name"),i;return})),Identifier:ip(Nv),MetadataURL:ip((function(t,e){const i=fb(t,e);if(i)return i.type=t.getAttribute("type"),i;return})),DataURL:ip(fb),FeatureListURL:ip(fb),Style:ip((function(t,e){return up({},hb,t,e)})),Layer:ip(gb)},eb=hp(BR,{...tb,SRS:ip(Nv),Extent:np((function(t,e){return{name:t.getAttribute("name"),default:t.getAttribute("default"),nearestValue:Lv(t.getAttribute("nearestValue"))}})),ScaleHint:ip((function(t,e){return{min:Av(t.getAttribute("min")),max:Av(t.getAttribute("max"))}})),LatLonBoundingBox:np(((t,e)=>db(t,e,!1))),Layer:ip(gb)}),ib=hp(BR,{...tb,CRS:ip(Nv),EX_GeographicBoundingBox:np((function(t,e){const i=up({},rb,t,e);if(!i)return;const n=i.westBoundLongitude,r=i.southBoundLatitude,s=i.eastBoundLongitude,o=i.northBoundLatitude;if(void 0===n||void 0===r||void 0===s||void 0===o)return;return[n,r,s,o]})),MinScaleDenominator:np(Mv),MaxScaleDenominator:np(Mv),Layer:ip(gb)}),nb=hp(BR,{Title:np(Nv),OnlineResource:np(fT),LogoURL:np(mb)}),rb=hp(BR,{westBoundLongitude:np(Mv),eastBoundLongitude:np(Mv),southBoundLatitude:np(Mv),northBoundLatitude:np(Mv)}),sb=hp(BR,{GetCapabilities:np(pb),GetMap:np(pb),GetFeatureInfo:np(pb)}),ob=hp(BR,{Format:ip(Nv),DCPType:ip((function(t,e){return up({},ab,t,e)}))}),ab=hp(BR,{HTTP:np((function(t,e){return up({},lb,t,e)}))}),lb=hp(BR,{Get:np(fb),Post:np(fb)}),hb=hp(BR,{Name:np(Nv),Title:np(Nv),Abstract:np(Nv),LegendURL:ip(mb),StyleSheetURL:np(fb),StyleURL:np(fb)}),cb=hp(BR,{Format:np(Nv),OnlineResource:np(fT)}),ub=hp(BR,{Keyword:tp(Nv)});function db(t,e,i=!0){const n={extent:[Av(t.getAttribute("minx")),Av(t.getAttribute("miny")),Av(t.getAttribute("maxx")),Av(t.getAttribute("maxy"))],res:[Av(t.getAttribute("resx")),Av(t.getAttribute("resy"))]};return i?(zR(e)?n.crs=t.getAttribute("CRS"):n.srs=t.getAttribute("SRS"),n):n}function gb(t,e){const i=zR(e),n=e[e.length-1],r=up({},i?ib:eb,t,e);if(!r)return;let s=Lv(t.getAttribute("queryable"));void 0===s&&(s=n.queryable),r.queryable=void 0!==s&&s;let o=Dv(t.getAttribute("cascaded"));void 0===o&&(o=n.cascaded),r.cascaded=o;let a=Lv(t.getAttribute("opaque"));void 0===a&&(a=n.opaque),r.opaque=void 0!==a&&a;let l=Lv(t.getAttribute("noSubsets"));void 0===l&&(l=n.noSubsets),r.noSubsets=void 0!==l&&l;let h=Av(t.getAttribute("fixedWidth"));h||(h=n.fixedWidth),r.fixedWidth=h;let c=Av(t.getAttribute("fixedHeight"));c||(c=n.fixedHeight),r.fixedHeight=c;const u=["Style","AuthorityURL"];i?u.push("CRS"):u.push("SRS","Dimension"),u.forEach((function(t){if(t in n){const e=r[t]||[];r[t]=e.concat(n[t])}}));const d=["BoundingBox","Attribution"];return i?d.push("Dimension","EX_GeographicBoundingBox","MinScaleDenominator","MaxScaleDenominator"):d.push("LatLonBoundingBox","ScaleHint","Extent"),d.forEach((function(t){if(!(t in r)){const e=n[t];r[t]=e}})),r}function fb(t,e){return up({},cb,t,e)}function pb(t,e){return up({},ob,t,e)}function mb(t,e){const i=fb(t,e);if(i){const e=[Dv(t.getAttribute("width")),Dv(t.getAttribute("height"))];return i.size=e,i}}function _b(t,e){return up([],ub,t,e)}const yb=[null,"http://www.opengis.net/wmts/1.0"],xb=[null,"http://www.opengis.net/ows/1.1"],vb=hp(yb,{Contents:np((function(t,e){return up({},Eb,t,e)}))});const Eb=hp(yb,{Layer:ip((function(t,e){return up({},Sb,t,e)})),TileMatrixSet:ip((function(t,e){return up({},Ib,t,e)}))}),Sb=hp(yb,{Style:ip((function(t,e){const i=up({},wb,t,e);if(!i)return;const n="true"===t.getAttribute("isDefault");return i.isDefault=n,i})),Format:ip(Nv),TileMatrixSetLink:ip((function(t,e){return up({},Tb,t,e)})),Dimension:ip((function(t,e){return up({},bb,t,e)})),ResourceURL:ip((function(t,e){const i=t.getAttribute("format"),n=t.getAttribute("template"),r=t.getAttribute("resourceType"),s={};i&&(s.format=i);n&&(s.template=n);r&&(s.resourceType=r);return s}))},hp(xb,{Title:np(Nv),Abstract:np(Nv),WGS84BoundingBox:np(Fb),BoundingBox:ip((function(t,e){const i=t.getAttribute("crs"),n=up([],Pb,t,e);if(2!=n.length)return;return{extent:Dt(n),crs:i}})),Identifier:np(Nv)})),wb=hp(yb,{LegendURL:ip((function(t,e){const i={};return i.format=t.getAttribute("format"),i.href=fT(t),i}))},hp(xb,{Title:np(Nv),Identifier:np(Nv)})),Tb=hp(yb,{TileMatrixSet:np(Nv),TileMatrixSetLimits:np((function(t,e){return up([],Cb,t,e)}))}),Cb=hp(yb,{TileMatrixLimits:tp((function(t,e){return up({},Rb,t,e)}))}),Rb=hp(yb,{TileMatrix:np(Nv),MinTileRow:np(Ov),MaxTileRow:np(Ov),MinTileCol:np(Ov),MaxTileCol:np(Ov)}),bb=hp(yb,{Default:np(Nv),Value:ip(Nv)},hp(xb,{Identifier:np(Nv)})),Pb=hp(xb,{LowerCorner:tp(Mb),UpperCorner:tp(Mb)}),Ib=hp(yb,{WellKnownScaleSet:np(Nv),TileMatrix:ip((function(t,e){return up({},Lb,t,e)}))},hp(xb,{SupportedCRS:np(Nv),Identifier:np(Nv),BoundingBox:np(Fb)})),Lb=hp(yb,{TopLeftCorner:np(Mb),ScaleDenominator:np(Mv),TileWidth:np(Ov),TileHeight:np(Ov),MatrixWidth:np(Ov),MatrixHeight:np(Ov)},hp(xb,{Identifier:np(Nv)}));function Fb(t,e){const i=up([],Pb,t,e);if(2==i.length)return Dt(i)}function Mb(t,e){const i=Nv(t).split(/\s+/);if(!i||2!=i.length)return;const n=+i[0],r=+i[1];return isNaN(n)||isNaN(r)?void 0:[n,r]}const Ab=["fullscreenchange","webkitfullscreenchange"],Ob="enterfullscreen",Db="leavefullscreen";function Nb(t){const e=t.body;return!!(e.webkitRequestFullscreen||e.requestFullscreen&&t.fullscreenEnabled)}function kb(t){return!(!t.webkitIsFullScreen&&!t.fullscreenElement)}function Gb(t){t.requestFullscreen?t.requestFullscreen():t.webkitRequestFullscreen&&t.webkitRequestFullscreen()}const jb="projection",Ub="coordinateFormat";const Bb=.75,zb=.1;const Xb="units",Vb=[1,2,5],$b=25.4/.28;const Wb=0,Zb=1;var Yb={};return Yb.Collection=Z,Yb.Collection.CollectionEvent=W,Yb.DataTile=Lt,Yb.DataTile.asArrayLike=Ct,Yb.DataTile.asImageLike=Tt,Yb.DataTile.disposedError=Rt,Yb.DataTile.toArray=Pt,Yb.Disposable=m,Yb.Feature=Mt,Yb.Feature.createStyleFunction=At,Yb.Geolocation=class extends V{constructor(t){super(),this.on,this.once,this.un,t=t||{},this.position_=null,this.transform_=_n,this.watchId_=void 0,this.addChangeListener(xs,this.handleProjectionChanged_),this.addChangeListener(Es,this.handleTrackingChanged_),void 0!==t.projection&&this.setProjection(t.projection),void 0!==t.trackingOptions&&this.setTrackingOptions(t.trackingOptions),this.setTracking(void 0!==t.tracking&&t.tracking)}disposeInternal(){this.setTracking(!1),super.disposeInternal()}handleProjectionChanged_(){const t=this.getProjection();t&&(this.transform_=In(vn("EPSG:4326"),t),this.position_&&this.set(ys,this.transform_(this.position_)))}handleTrackingChanged_(){if("geolocation"in navigator){const t=this.getTracking();t&&void 0===this.watchId_?this.watchId_=navigator.geolocation.watchPosition(this.positionChange_.bind(this),this.positionError_.bind(this),this.getTrackingOptions()):t||void 0===this.watchId_||(navigator.geolocation.clearWatch(this.watchId_),this.watchId_=void 0)}}positionChange_(t){const e=t.coords;this.set(gs,e.accuracy),this.set(ps,null===e.altitude?void 0:e.altitude),this.set(ms,null===e.altitudeAccuracy?void 0:e.altitudeAccuracy),this.set(_s,null===e.heading?void 0:Pe(e.heading)),this.position_?(this.position_[0]=e.longitude,this.position_[1]=e.latitude):this.position_=[e.longitude,e.latitude];const i=this.transform_(this.position_);this.set(ys,i.slice()),this.set(vs,null===e.speed?void 0:e.speed);const n=hs(this.position_,e.accuracy);n.applyTransform(this.transform_),this.set(fs,n),this.changed()}positionError_(t){this.dispatchEvent(new Ts(t))}getAccuracy(){return this.get(gs)}getAccuracyGeometry(){return this.get(fs)||null}getAltitude(){return this.get(ps)}getAltitudeAccuracy(){return this.get(ms)}getHeading(){return this.get(_s)}getPosition(){return this.get(ys)}getProjection(){return this.get(xs)}getSpeed(){return this.get(vs)}getTracking(){return this.get(Es)}getTrackingOptions(){return this.get(Ss)}setProjection(t){this.set(xs,vn(t))}setTracking(t){this.set(Es,t)}setTrackingOptions(t){this.set(Ss,t)}},Yb.Geolocation.GeolocationError=Ts,Yb.Image=Rs,Yb.Image.decode=Ls,Yb.Image.decodeFallback=Is,Yb.Image.listenImage=bs,Yb.Image.load=Ps,Yb.ImageCanvas=Fs,Yb.ImageTile=Ms,Yb.Kinetic=As,Yb.Map=Nc,Yb.MapBrowserEvent=Ds,Yb.MapBrowserEventHandler=Bs,Yb.MapEvent=Os,Yb.Object=V,Yb.Object.ObjectEvent=X,Yb.Observable=G,Yb.Observable.unByKey=j,Yb.Overlay=zc,Yb.Tile=nt,Yb.TileQueue=Qs,Yb.TileQueue.getTilePriority=to,Yb.TileRange=Xc,Yb.TileRange.createOrUpdate=Vc,Yb.VectorRenderTile=Wc,Yb.VectorTile=Yc,Yb.View=yo,Yb.View.createCenterConstraint=vo,Yb.View.createResolutionConstraint=Eo,Yb.View.createRotationConstraint=So,Yb.View.isNoopAnimation=wo,Yb.array={},Yb.array.ascending=y,Yb.array.binarySearch=_,Yb.array.descending=x,Yb.array.equals=w,Yb.array.extend=S,Yb.array.isSorted=T,Yb.array.linearFindNearest=v,Yb.array.remove=function(t,e){const i=t.indexOf(e),n=i>-1;return n&&t.splice(i,1),n},Yb.array.reverseSubArray=E,Yb.array.stableSort=function(t,e){const i=t.length,n=Array(t.length);let r;for(r=0;r<i;r++)n[r]={index:r,value:t[r]};for(n.sort((function(t,i){return e(t.value,i.value)||t.index-i.index})),r=0;r<t.length;r++)t[r]=n[r].value},Yb.asserts={},Yb.asserts.assert=Ft,Yb.centerconstraint={},Yb.centerconstraint.createExtent=ro,Yb.centerconstraint.none=so,Yb.color={},Yb.color.NO_COLOR=Sl,Yb.color.asArray=Fl,Yb.color.asString=wl,Yb.color.fromString=Ll,Yb.color.isStringColor=function(t){try{return Ll(t),!0}catch{return!1}},Yb.color.lchaToRgba=Il,Yb.color.normalize=Ml,Yb.color.rgbaToLcha=Pl,Yb.color.toString=Al,Yb.color.withAlpha=bl,Yb.colorlike={},Yb.colorlike.asColorLike=Sh,Yb.console={},Yb.console.error=Ve,Yb.console.log=function(...t){ze>Be.info||console.log(...t)},Yb.console.setLevel=function(t){ze=Be[t]},Yb.console.warn=Xe,Yb.control={},Yb.control.Attribution=Do,Yb.control.Control=Oo,Yb.control.FullScreen=class extends Oo{constructor(t){t=t||{},super({element:document.createElement("div"),target:t.target}),this.on,this.once,this.un,this.keys_=void 0!==t.keys&&t.keys,this.source_=t.source,this.isInFullscreen_=!1,this.boundHandleMapTargetChange_=this.handleMapTargetChange_.bind(this),this.cssClassName_=void 0!==t.className?t.className:"ol-full-screen",this.documentListeners_=[],this.activeClassName_=void 0!==t.activeClassName?t.activeClassName.split(" "):[this.cssClassName_+"-true"],this.inactiveClassName_=void 0!==t.inactiveClassName?t.inactiveClassName.split(" "):[this.cssClassName_+"-false"];const e=void 0!==t.label?t.label:"⤢";this.labelNode_="string"==typeof e?document.createTextNode(e):e;const i=void 0!==t.labelActive?t.labelActive:"×";this.labelActiveNode_="string"==typeof i?document.createTextNode(i):i;const n=t.tipLabel?t.tipLabel:"Toggle full-screen";this.button_=document.createElement("button"),this.button_.title=n,this.button_.setAttribute("type","button"),this.button_.appendChild(this.labelNode_),this.button_.addEventListener(o,this.handleClick_.bind(this),!1),this.setClassName_(this.button_,this.isInFullscreen_),this.element.className=`${this.cssClassName_} ${bo} ${Io}`,this.element.appendChild(this.button_)}handleClick_(t){t.preventDefault(),this.handleFullScreen_()}handleFullScreen_(){const t=this.getMap();if(!t)return;const e=t.getOwnerDocument();if(Nb(e))if(kb(e))!function(t){t.exitFullscreen?t.exitFullscreen():t.webkitExitFullscreen&&t.webkitExitFullscreen()}(e);else{let i;i=this.source_?"string"==typeof this.source_?e.getElementById(this.source_):this.source_:t.getTargetElement(),this.keys_?function(t){t.webkitRequestFullscreen?t.webkitRequestFullscreen():Gb(t)}(i):Gb(i)}}handleFullScreenChange_(){const t=this.getMap();if(!t)return;const e=this.isInFullscreen_;this.isInFullscreen_=kb(t.getOwnerDocument()),e!==this.isInFullscreen_&&(this.setClassName_(this.button_,this.isInFullscreen_),this.isInFullscreen_?(Et(this.labelActiveNode_,this.labelNode_),this.dispatchEvent(Ob)):(Et(this.labelNode_,this.labelActiveNode_),this.dispatchEvent(Db)),t.updateSize())}setClassName_(t,e){e?(t.classList.remove(...this.inactiveClassName_),t.classList.add(...this.activeClassName_)):(t.classList.remove(...this.activeClassName_),t.classList.add(...this.inactiveClassName_))}setMap(t){const e=this.getMap();e&&e.removeChangeListener(Hs,this.boundHandleMapTargetChange_),super.setMap(t),this.handleMapTargetChange_(),t&&t.addChangeListener(Hs,this.boundHandleMapTargetChange_)}handleMapTargetChange_(){const t=this.documentListeners_;for(let e=0,i=t.length;e<i;++e)k(t[e]);t.length=0;const e=this.getMap();if(e){const i=e.getOwnerDocument();Nb(i)?this.element.classList.remove(Po):this.element.classList.add(Po);for(let e=0,n=Ab.length;e<n;++e)t.push(D(i,Ab[e],this.handleFullScreenChange_,this));this.handleFullScreenChange_()}}},Yb.control.MousePosition=class extends Oo{constructor(t){t=t||{};const e=document.createElement("div");e.className=void 0!==t.className?t.className:"ol-mouse-position",super({element:e,render:t.render,target:t.target}),this.on,this.once,this.un,this.addChangeListener(jb,this.handleProjectionChanged_),t.coordinateFormat&&this.setCoordinateFormat(t.coordinateFormat),t.projection&&this.setProjection(t.projection),this.renderOnMouseOut_=void 0!==t.placeholder,this.placeholder_=this.renderOnMouseOut_?t.placeholder:"&#160;",this.renderedHTML_=e.innerHTML,this.mapProjection_=null,this.transform_=null,this.wrapX_=!1!==t.wrapX}handleProjectionChanged_(){this.transform_=null}getCoordinateFormat(){return this.get(Ub)}getProjection(){return this.get(jb)}handleMouseMove(t){const e=this.getMap();this.updateHTML_(e.getEventPixel(t))}handleMouseOut(t){this.updateHTML_(null)}setMap(t){if(super.setMap(t),t){const e=t.getViewport();this.listenerKeys.push(D(e,ks,this.handleMouseMove,this)),this.renderOnMouseOut_&&this.listenerKeys.push(D(e,Us,this.handleMouseOut,this)),this.updateHTML_(null)}}setCoordinateFormat(t){this.set(Ub,t)}setProjection(t){this.set(jb,vn(t))}updateHTML_(t){let e=this.placeholder_;if(t&&this.mapProjection_){if(!this.transform_){const t=this.getProjection();this.transform_=t?In(this.mapProjection_,t):_n}const i=this.getMap().getCoordinateFromPixelInternal(t);if(i){const t=Nn();if(t&&(this.transform_=In(this.mapProjection_,t)),this.transform_(i,i),this.wrapX_){si(i,t||this.getProjection()||this.mapProjection_)}const n=this.getCoordinateFormat();e=n?n(i):i.toString()}}this.renderedHTML_&&e===this.renderedHTML_||(this.element.innerHTML=e,this.renderedHTML_=e)}render(t){const e=t.frameState;e?this.mapProjection_!=e.viewState.projection&&(this.mapProjection_=e.viewState.projection,this.transform_=null):this.mapProjection_=null}},Yb.control.OverviewMap=class extends Oo{constructor(t){t=t||{},super({element:document.createElement("div"),render:t.render,target:t.target}),this.boundHandleRotationChanged_=this.handleRotationChanged_.bind(this),this.collapsed_=void 0===t.collapsed||t.collapsed,this.collapsible_=void 0===t.collapsible||t.collapsible,this.collapsible_||(this.collapsed_=!1),this.rotateWithView_=void 0!==t.rotateWithView&&t.rotateWithView,this.viewExtent_=void 0;const e=void 0!==t.className?t.className:"ol-overviewmap",i=void 0!==t.tipLabel?t.tipLabel:"Overview map",n=void 0!==t.collapseLabel?t.collapseLabel:"‹";"string"==typeof n?(this.collapseLabel_=document.createElement("span"),this.collapseLabel_.textContent=n):this.collapseLabel_=n;const r=void 0!==t.label?t.label:"›";"string"==typeof r?(this.label_=document.createElement("span"),this.label_.textContent=r):this.label_=r;const s=this.collapsible_&&!this.collapsed_?this.collapseLabel_:this.label_,a=document.createElement("button");a.setAttribute("type","button"),a.title=i,a.appendChild(s),a.addEventListener(o,this.handleClick_.bind(this),!1),this.ovmapDiv_=document.createElement("div"),this.ovmapDiv_.className="ol-overviewmap-map",this.view_=t.view;const l=new Nc({view:t.view,controls:new Z,interactions:new Z});this.ovmap_=l,t.layers&&t.layers.forEach((function(t){l.addLayer(t)}));const h=document.createElement("div");h.className="ol-overviewmap-box",h.style.boxSizing="border-box",this.boxOverlay_=new zc({position:[0,0],positioning:"center-center",element:h}),this.ovmap_.addOverlay(this.boxOverlay_);const c=e+" "+bo+" "+Io+(this.collapsed_&&this.collapsible_?" "+Lo:"")+(this.collapsible_?"":" ol-uncollapsible"),u=this.element;u.className=c,u.appendChild(this.ovmapDiv_),u.appendChild(a);const d=this.boxOverlay_,g=this.boxOverlay_.getElement(),f=function(t){const e={clientX:(i=t).clientX,clientY:i.clientY};var i;const n=l.getEventCoordinate(e);d.setPosition(n)},p=t=>{const e=l.getEventCoordinateInternal(t),i=this.getMap();i.getView().setCenterInternal(e);const n=i.getOwnerDocument();n.removeEventListener("pointermove",f),n.removeEventListener("pointerup",p)};this.ovmapDiv_.addEventListener("pointerdown",(t=>{const e=this.getMap().getOwnerDocument();t.target===g&&e.addEventListener("pointermove",f),e.addEventListener("pointerup",p)}))}setMap(t){const e=this.getMap();if(t!==e){if(e){const t=e.getView();t&&this.unbindView_(t),this.ovmap_.setTarget(null)}if(super.setMap(t),t){this.ovmap_.setTarget(this.ovmapDiv_),this.listenerKeys.push(D(t,i,this.handleMapPropertyChange_,this));const e=t.getView();e&&this.bindView_(e),this.ovmap_.isRendered()||this.updateBoxAfterOvmapIsRendered_()}}}handleMapPropertyChange_(t){if(t.key===Ks){const e=t.oldValue;e&&this.unbindView_(e);const i=this.getMap().getView();this.bindView_(i)}else this.ovmap_.isRendered()||t.key!==Hs&&t.key!==Ys||this.ovmap_.updateSize()}bindView_(t){if(!this.view_){const e=new yo({projection:t.getProjection()});this.ovmap_.setView(e)}t.addChangeListener(no.ROTATION,this.boundHandleRotationChanged_),this.handleRotationChanged_(),t.isDef()&&(this.ovmap_.updateSize(),this.resetExtent_())}unbindView_(t){t.removeChangeListener(no.ROTATION,this.boundHandleRotationChanged_)}handleRotationChanged_(){this.rotateWithView_&&this.ovmap_.getView().setRotation(this.getMap().getView().getRotation())}validateExtent_(){const t=this.getMap(),e=this.ovmap_;if(!t.isRendered()||!e.isRendered())return;const i=t.getSize(),n=t.getView().calculateExtentInternal(i);if(this.viewExtent_&&Yt(n,this.viewExtent_))return;this.viewExtent_=n;const r=e.getSize(),s=e.getView().calculateExtentInternal(r),o=e.getPixelFromCoordinateInternal(de(n)),a=e.getPixelFromCoordinateInternal(se(n)),l=Math.abs(o[0]-a[0]),h=Math.abs(o[1]-a[1]),c=r[0],u=r[1];l<c*zb||h<u*zb||l>c*Bb||h>u*Bb?this.resetExtent_():Ut(s,n)||this.recenter_()}resetExtent_(){const t=this.getMap(),e=this.ovmap_,i=t.getSize(),n=t.getView().calculateExtentInternal(i),r=e.getView(),s=Math.log(7.5)/Math.LN2;ye(n,1/(Math.pow(2,s/2)*zb)),r.fitInternal(cs(n))}recenter_(){const t=this.getMap(),e=this.ovmap_,i=t.getView();e.getView().setCenterInternal(i.getCenterInternal())}updateBox_(){const t=this.getMap(),e=this.ovmap_;if(!t.isRendered()||!e.isRendered())return;const i=t.getSize(),n=t.getView(),r=e.getView(),s=this.rotateWithView_?0:-n.getRotation(),o=this.boxOverlay_,a=this.boxOverlay_.getElement(),l=n.getCenter(),h=n.getResolution(),c=r.getResolution(),u=i[0]*h/c,d=i[1]*h/c;if(o.setPosition(l),a){a.style.width=u+"px",a.style.height=d+"px";const t="rotate("+s+"rad)";a.style.transform=t}}updateBoxAfterOvmapIsRendered_(){this.ovmapPostrenderKey_||(this.ovmapPostrenderKey_=N(this.ovmap_,zs,(t=>{delete this.ovmapPostrenderKey_,this.updateBox_()})))}handleClick_(t){t.preventDefault(),this.handleToggle_()}handleToggle_(){this.element.classList.toggle(Lo),this.collapsed_?Et(this.collapseLabel_,this.label_):Et(this.label_,this.collapseLabel_),this.collapsed_=!this.collapsed_;const t=this.ovmap_;if(!this.collapsed_){if(t.isRendered())return this.viewExtent_=void 0,void t.render();t.updateSize(),this.resetExtent_(),this.updateBoxAfterOvmapIsRendered_()}}getCollapsible(){return this.collapsible_}setCollapsible(t){this.collapsible_!==t&&(this.collapsible_=t,this.element.classList.toggle("ol-uncollapsible"),!t&&this.collapsed_&&this.handleToggle_())}setCollapsed(t){this.collapsible_&&this.collapsed_!==t&&this.handleToggle_()}getCollapsed(){return this.collapsed_}getRotateWithView(){return this.rotateWithView_}setRotateWithView(t){this.rotateWithView_!==t&&(this.rotateWithView_=t,0!==this.getMap().getView().getRotation()&&(this.rotateWithView_?this.handleRotationChanged_():this.ovmap_.getView().setRotation(0),this.viewExtent_=void 0,this.validateExtent_(),this.updateBox_()))}getOverviewMap(){return this.ovmap_}render(t){this.validateExtent_(),this.updateBox_()}},Yb.control.Rotate=No,Yb.control.ScaleLine=class extends Oo{constructor(t){t=t||{};const e=document.createElement("div");e.style.pointerEvents="none",super({element:e,render:t.render,target:t.target}),this.on,this.once,this.un;const i=void 0!==t.className?t.className:t.bar?"ol-scale-bar":"ol-scale-line";this.innerElement_=document.createElement("div"),this.innerElement_.className=i+"-inner",this.element.className=i+" "+bo,this.element.appendChild(this.innerElement_),this.viewState_=null,this.minWidth_=void 0!==t.minWidth?t.minWidth:64,this.maxWidth_=t.maxWidth,this.renderedVisible_=!1,this.renderedWidth_=void 0,this.renderedHTML_="",this.addChangeListener(Xb,this.handleUnitsChanged_),this.setUnits(t.units||"metric"),this.scaleBar_=t.bar||!1,this.scaleBarSteps_=t.steps||4,this.scaleBarText_=t.text||!1,this.dpi_=t.dpi||void 0}getUnits(){return this.get(Xb)}handleUnitsChanged_(){this.updateElement_()}setUnits(t){this.set(Xb,t)}setDpi(t){this.dpi_=t}updateElement_(){const t=this.viewState_;if(!t)return void(this.renderedVisible_&&(this.element.style.display="none",this.renderedVisible_=!1));const e=t.center,i=t.projection,n=this.getUnits(),r="degrees"==n?"degrees":"m";let s=En(i,t.resolution,e,r);const o=this.minWidth_*(this.dpi_||$b)/$b,a=void 0!==this.maxWidth_?this.maxWidth_*(this.dpi_||$b)/$b:void 0;let l=o*s,h="";if("degrees"==n){const t=hi.degrees;l*=t,l<t/60?(h="″",s*=3600):l<t?(h="′",s*=60):h="°"}else if("imperial"==n)l<.9144?(h="in",s/=.0254):l<1609.344?(h="ft",s/=.3048):(h="mi",s/=1609.344);else if("nautical"==n)s/=1852,h="NM";else if("metric"==n)l<1e-6?(h="nm",s*=1e9):l<.001?(h="μm",s*=1e6):l<1?(h="mm",s*=1e3):l<1e3?h="m":(h="km",s/=1e3);else{if("us"!=n)throw new Error("Invalid units");l<.9144?(h="in",s*=39.37):l<1609.344?(h="ft",s/=.30480061):(h="mi",s/=1609.3472)}let c,u,d,g,f,p=3*Math.floor(Math.log(o*s)/Math.log(10)),m=0;for(;;){d=Math.floor(p/3);const t=Math.pow(10,d);if(c=Vb[(p%3+3)%3]*t,u=Math.round(c/s),isNaN(u))return this.element.style.display="none",void(this.renderedVisible_=!1);if(void 0!==a&&u>=a){c=m,u=g,d=f;break}if(u>=o)break;m=c,g=u,f=d,++p}const _=this.scaleBar_?this.createScaleBar(u,c,h):c.toFixed(d<0?-d:0)+" "+h;this.renderedHTML_!=_&&(this.innerElement_.innerHTML=_,this.renderedHTML_=_),this.renderedWidth_!=u&&(this.innerElement_.style.width=u+"px",this.renderedWidth_=u),this.renderedVisible_||(this.element.style.display="",this.renderedVisible_=!0)}createScaleBar(t,e,i){const n=this.getScaleForResolution(),r=n<1?Math.round(1/n).toLocaleString()+" : 1":"1 : "+Math.round(n).toLocaleString(),s=this.scaleBarSteps_,o=t/s,a=[this.createMarker("absolute")];for(let n=0;n<s;++n){const r=n%2==0?"ol-scale-singlebar-odd":"ol-scale-singlebar-even";a.push(`<div><div class="ol-scale-singlebar ${r}" style="width: ${o}px;"></div>`+this.createMarker("relative")+(n%2==0||2===s?this.createStepText(n,t,!1,e,i):"")+"</div>")}a.push(this.createStepText(s,t,!0,e,i));return(this.scaleBarText_?`<div class="ol-scale-text" style="width: ${t}px;">`+r+"</div>":"")+a.join("")}createMarker(t){return`<div class="ol-scale-step-marker" style="position: ${t}; top: ${"absolute"===t?3:-10}px;"></div>`}createStepText(t,e,i,n,r){const s=(0===t?0:Math.round(n/this.scaleBarSteps_*t*100)/100)+(0===t?"":" "+r);return`<div class="ol-scale-step-text" style="margin-left: ${0===t?-3:e/this.scaleBarSteps_*-1}px;text-align: ${0===t?"left":"center"};min-width: ${0===t?0:e/this.scaleBarSteps_*2}px;left: ${i?e+"px":"unset"};">`+s+"</div>"}getScaleForResolution(){return En(this.viewState_.projection,this.viewState_.resolution,this.viewState_.center,"m")*(1e3/25.4)*(this.dpi_||$b)}render(t){const e=t.frameState;this.viewState_=e?e.viewState:null,this.updateElement_()}},Yb.control.Zoom=ko,Yb.control.ZoomSlider=class extends Oo{constructor(t){super({target:(t=t||{}).target,element:document.createElement("div"),render:t.render}),this.dragListenerKeys_=[],this.currentResolution_=void 0,this.direction_=Wb,this.dragging_,this.heightLimit_=0,this.widthLimit_=0,this.startX_,this.startY_,this.thumbSize_=null,this.sliderInitialized_=!1,this.duration_=void 0!==t.duration?t.duration:200;const e=void 0!==t.className?t.className:"ol-zoomslider",i=document.createElement("button");i.setAttribute("type","button"),i.className=e+"-thumb "+bo;const n=this.element;n.className=e+" "+bo+" "+Io,n.appendChild(i),n.addEventListener(Gs,this.handleDraggerStart_.bind(this),!1),n.addEventListener(ks,this.handleDraggerDrag_.bind(this),!1),n.addEventListener(js,this.handleDraggerEnd_.bind(this),!1),n.addEventListener(o,this.handleContainerClick_.bind(this),!1),i.addEventListener(o,A,!1)}setMap(t){super.setMap(t),t&&t.render()}initSlider_(){const t=this.element;let e=t.offsetWidth,i=t.offsetHeight;if(0===e&&0===i)return this.sliderInitialized_=!1;const n=getComputedStyle(t);e-=parseFloat(n.paddingRight)+parseFloat(n.paddingLeft),i-=parseFloat(n.paddingTop)+parseFloat(n.paddingBottom);const r=t.firstElementChild,s=getComputedStyle(r),o=r.offsetWidth+parseFloat(s.marginRight)+parseFloat(s.marginLeft),a=r.offsetHeight+parseFloat(s.marginTop)+parseFloat(s.marginBottom);return this.thumbSize_=[o,a],e>i?(this.direction_=Zb,this.widthLimit_=e-o):(this.direction_=Wb,this.heightLimit_=i-a),this.sliderInitialized_=!0}handleContainerClick_(t){const e=this.getMap().getView(),i=this.getRelativePosition_(t.offsetX-this.thumbSize_[0]/2,t.offsetY-this.thumbSize_[1]/2),n=this.getResolutionForPosition_(i),r=e.getConstrainedZoom(e.getZoomForResolution(n));e.animateInternal({zoom:r,duration:this.duration_,easing:tt})}handleDraggerStart_(t){if(!this.dragging_&&t.target===this.element.firstElementChild){const e=this.element.firstElementChild;if(this.getMap().getView().beginInteraction(),this.startX_=t.clientX-parseFloat(e.style.left),this.startY_=t.clientY-parseFloat(e.style.top),this.dragging_=!0,0===this.dragListenerKeys_.length){const t=this.handleDraggerDrag_,e=this.handleDraggerEnd_,i=this.getMap().getOwnerDocument();this.dragListenerKeys_.push(D(i,ks,t,this),D(i,js,e,this))}}}handleDraggerDrag_(t){if(this.dragging_){const e=t.clientX-this.startX_,i=t.clientY-this.startY_,n=this.getRelativePosition_(e,i);this.currentResolution_=this.getResolutionForPosition_(n),this.getMap().getView().setResolution(this.currentResolution_)}}handleDraggerEnd_(t){if(this.dragging_){this.getMap().getView().endInteraction(),this.dragging_=!1,this.startX_=void 0,this.startY_=void 0,this.dragListenerKeys_.forEach(k),this.dragListenerKeys_.length=0}}setThumbPosition_(t){const e=this.getPositionForResolution_(t),i=this.element.firstElementChild;this.direction_==Zb?i.style.left=this.widthLimit_*e+"px":i.style.top=this.heightLimit_*e+"px"}getRelativePosition_(t,e){let i;return i=this.direction_===Zb?t/this.widthLimit_:e/this.heightLimit_,we(i,0,1)}getResolutionForPosition_(t){return this.getMap().getView().getResolutionForValueFunction()(1-t)}getPositionForResolution_(t){return we(1-this.getMap().getView().getValueForResolutionFunction()(t),0,1)}render(t){if(!t.frameState)return;if(!this.sliderInitialized_&&!this.initSlider_())return;const e=t.frameState.viewState.resolution;this.currentResolution_=e,this.setThumbPosition_(e)}},Yb.control.ZoomToExtent=class extends Oo{constructor(t){t=t||{},super({element:document.createElement("div"),target:t.target}),this.extent=t.extent?t.extent:null;const e=void 0!==t.className?t.className:"ol-zoom-extent",i=void 0!==t.label?t.label:"E",n=void 0!==t.tipLabel?t.tipLabel:"Fit to extent",r=document.createElement("button");r.setAttribute("type","button"),r.title=n,r.appendChild("string"==typeof i?document.createTextNode(i):i),r.addEventListener(o,this.handleClick_.bind(this),!1);const s=e+" "+bo+" "+Io,a=this.element;a.className=s,a.appendChild(r)}handleClick_(t){t.preventDefault(),this.handleZoomToExtent()}handleZoomToExtent(){const t=this.getMap().getView(),e=this.extent?Un(this.extent,t.getProjection()):t.getProjection().getExtent();t.fitInternal(cs(e))}},Yb.control.defaults={},Yb.control.defaults.defaults=Go,Yb.coordinate={},Yb.coordinate.add=Ze,Yb.coordinate.closestOnCircle=Ye,Yb.coordinate.closestOnSegment=He,Yb.coordinate.createStringXY=function(t){return function(e){return ri(e,t)}},Yb.coordinate.degreesToStringHDMS=Ke,Yb.coordinate.distance=ii,Yb.coordinate.equals=Je,Yb.coordinate.format=qe,Yb.coordinate.getWorldsAway=oi,Yb.coordinate.rotate=Qe,Yb.coordinate.scale=ti,Yb.coordinate.squaredDistance=ei,Yb.coordinate.squaredDistanceToSegment=ni,Yb.coordinate.toStringHDMS=function(t,e){return t?Ke("NS",t[1],e)+" "+Ke("EW",t[0],e):""},Yb.coordinate.toStringXY=ri,Yb.coordinate.wrapX=si,Yb.css={},Yb.css.CLASS_COLLAPSED=Lo,Yb.css.CLASS_CONTROL=Io,Yb.css.CLASS_HIDDEN=Co,Yb.css.CLASS_SELECTABLE=Ro,Yb.css.CLASS_UNSELECTABLE=bo,Yb.css.CLASS_UNSUPPORTED=Po,Yb.css.getFontParameters=Ao,Yb.dom={},Yb.dom.createCanvasContext2D=pt,Yb.dom.getSharedCanvasContext2D=_t,Yb.dom.outerHeight=vt,Yb.dom.outerWidth=xt,Yb.dom.releaseCanvas=yt,Yb.dom.removeChildren=St,Yb.dom.replaceChildren=wt,Yb.dom.replaceNode=Et,Yb.easing={},Yb.easing.easeIn=Q,Yb.easing.easeOut=tt,Yb.easing.inAndOut=et,Yb.easing.linear=it,Yb.easing.upAndDown=function(t){return t<.5?et(2*t):1-et(2*(t-.5))},Yb.events={},Yb.events.Event=M,Yb.events.Event.preventDefault=function(t){t.preventDefault()},Yb.events.Event.stopPropagation=A,Yb.events.SnapEvent={},Yb.events.SnapEvent.SnapEvent=nv,Yb.events.Target=O,Yb.events.condition={},Yb.events.condition.all=Vo,Yb.events.condition.altKeyOnly=$o,Yb.events.condition.altShiftKeysOnly=Wo,Yb.events.condition.always=Ho,Yb.events.condition.click=function(t){return t.type==Ns.CLICK},Yb.events.condition.doubleClick=function(t){return t.type==Ns.DBLCLICK},Yb.events.condition.focus=Zo,Yb.events.condition.focusWithTabindex=Yo,Yb.events.condition.mouseActionButton=Ko,Yb.events.condition.mouseOnly=na,Yb.events.condition.never=qo,Yb.events.condition.noModifierKeys=Qo,Yb.events.condition.penOnly=function(t){const e=t.originalEvent;return Ft(void 0!==e,"mapBrowserEvent must originate from a pointer event"),"pen"===e.pointerType},Yb.events.condition.platformModifierKey=ta,Yb.events.condition.platformModifierKeyOnly=function(t){const e=t.originalEvent;return!e.altKey&&(ht?e.metaKey:e.ctrlKey)&&!e.shiftKey},Yb.events.condition.pointerMove=function(t){return"pointermove"==t.type},Yb.events.condition.primaryAction=ra,Yb.events.condition.shiftKeyOnly=ea,Yb.events.condition.singleClick=Jo,Yb.events.condition.targetNotEditable=ia,Yb.events.condition.touchOnly=function(t){const e=t.originalEvent;return Ft(void 0!==e,"mapBrowserEvent must originate from a pointer event"),"touch"===e.pointerType},Yb.events.listen=D,Yb.events.listenOnce=N,Yb.events.unlistenByKey=k,Yb.expr={},Yb.expr.cpu={},Yb.expr.cpu.buildExpression=dh,Yb.expr.cpu.newEvaluationContext=uh,Yb.expr.expression={},Yb.expr.expression.AnyType=Vl,Yb.expr.expression.BooleanType=Gl,Yb.expr.expression.CallExpression=ql,Yb.expr.expression.ColorType=Bl,Yb.expr.expression.LiteralExpression=Kl,Yb.expr.expression.NoneType=0,Yb.expr.expression.NumberArrayType=zl,Yb.expr.expression.NumberType=jl,Yb.expr.expression.Ops=th,Yb.expr.expression.SizeType=Xl,Yb.expr.expression.StringType=Ul,Yb.expr.expression.computeGeometryType=ch,Yb.expr.expression.includesType=Yl,Yb.expr.expression.isType=Hl,Yb.expr.expression.newParsingContext=Jl,Yb.expr.expression.overlapsType=function(t,e){return!!(t&e)},Yb.expr.expression.parse=Ql,Yb.expr.expression.typeName=Zl,Yb.expr.gpu={},Yb.expr.gpu.FEATURE_ID_PROPERTY_NAME=um,Yb.expr.gpu.GEOMETRY_TYPE_PROPERTY_NAME=dm,Yb.expr.gpu.PALETTE_TEXTURE_ARRAY=cm,Yb.expr.gpu.arrayToGlsl=tm,Yb.expr.gpu.buildExpression=gm,Yb.expr.gpu.colorToGlsl=em,Yb.expr.gpu.getStringNumberEquivalent=sm,Yb.expr.gpu.newCompilationContext=lm,Yb.expr.gpu.numberToGlsl=Qp,Yb.expr.gpu.sizeToGlsl=im,Yb.expr.gpu.stringToGlsl=om,Yb.expr.gpu.uniformNameForVariable=am,Yb.extent={},Yb.extent.applyTransform=ve,Yb.extent.approximatelyEquals=Ht,Yb.extent.boundingExtent=Dt,Yb.extent.buffer=Nt,Yb.extent.clone=kt,Yb.extent.closestSquaredDistanceXY=Gt,Yb.extent.containsCoordinate=jt,Yb.extent.containsExtent=Ut,Yb.extent.containsXY=Bt,Yb.extent.coordinateRelationship=zt,Yb.extent.createEmpty=Xt,Yb.extent.createOrUpdate=Vt,Yb.extent.createOrUpdateEmpty=$t,Yb.extent.createOrUpdateFromCoordinate=Wt,Yb.extent.createOrUpdateFromCoordinates=function(t,e){return Jt($t(e),t)},Yb.extent.createOrUpdateFromFlatCoordinates=Zt,Yb.extent.createOrUpdateFromRings=function(t,e){return te($t(e),t)},Yb.extent.equals=Yt,Yb.extent.extend=Kt,Yb.extent.extendCoordinate=qt,Yb.extent.extendCoordinates=Jt,Yb.extent.extendFlatCoordinates=Qt,Yb.extent.extendRings=te,Yb.extent.extendXY=ee,Yb.extent.forEachCorner=ie,Yb.extent.getArea=ne,Yb.extent.getBottomLeft=re,Yb.extent.getBottomRight=se,Yb.extent.getCenter=oe,Yb.extent.getCorner=ae,Yb.extent.getEnlargedArea=function(t,e){const i=Math.min(t[0],e[0]),n=Math.min(t[1],e[1]);return(Math.max(t[2],e[2])-i)*(Math.max(t[3],e[3])-n)},Yb.extent.getForViewAndSize=le,Yb.extent.getHeight=ce,Yb.extent.getIntersection=ue,Yb.extent.getIntersectionArea=function(t,e){return ne(ue(t,e))},Yb.extent.getMargin=function(t){return fe(t)+ce(t)},Yb.extent.getRotatedViewport=he,Yb.extent.getSize=function(t){return[t[2]-t[0],t[3]-t[1]]},Yb.extent.getTopLeft=de,Yb.extent.getTopRight=ge,Yb.extent.getWidth=fe,Yb.extent.intersects=pe,Yb.extent.intersectsSegment=xe,Yb.extent.isEmpty=me,Yb.extent.returnOrUpdate=_e,Yb.extent.scaleFromCenter=ye,Yb.extent.wrapAndSliceX=Se,Yb.extent.wrapX=Ee,Yb.featureloader={},Yb.featureloader.loadFeaturesXhr=Kc,Yb.featureloader.setWithCredentials=function(t){Hc=t},Yb.featureloader.xhr=qc,Yb.format={},Yb.format.EsriJSON=class extends _v{constructor(t){t=t||{},super(),this.geometryName_=t.geometryName}readFeatureFromObject(t,e,i){const n=t,r=Ev(n.geometry,e),s=new Mt;if(this.geometryName_&&s.setGeometryName(this.geometryName_),s.setGeometry(r),n.attributes){s.setProperties(n.attributes,!0);const t=n.attributes[i];void 0!==t&&s.setId(t)}return s}readFeaturesFromObject(t,e){if(e=e||{},t.features){const i=[],n=t.features;for(let r=0,s=n.length;r<s;++r)i.push(this.readFeatureFromObject(n[r],e,t.objectIdFieldName));return i}return[this.readFeatureFromObject(t,e)]}readGeometryFromObject(t,e){return Ev(t,e)}readProjectionFromObject(t){if(t.spatialReference&&void 0!==t.spatialReference.wkid){return vn("EPSG:"+t.spatialReference.wkid)}return null}writeGeometryObject(t,e){return Tv(t,this.adaptOptions(e))}writeFeatureObject(t,e){e=this.adaptOptions(e);const i={};if(!t.hasProperties())return i.attributes={},i;const n=t.getProperties(),r=t.getGeometry();if(r){i.geometry=Tv(r,e);const s=e&&(e.dataProjection||e.featureProjection);s&&(i.geometry.spatialReference={wkid:Number(vn(s).getCode().split(":").pop())}),delete n[t.getGeometryName()]}return F(n)?i.attributes={}:i.attributes=n,i}writeFeaturesObject(t,e){e=this.adaptOptions(e);const i=[];for(let n=0,r=t.length;n<r;++n)i.push(this.writeFeatureObject(t[n],e));return{features:i}}},Yb.format.Feature=uv,Yb.format.Feature.createGeometry=mv,Yb.format.Feature.createRenderFeature=pv,Yb.format.Feature.transformExtentWithOptions=gv,Yb.format.Feature.transformGeometryWithOptions=dv,Yb.format.GML=Hv,Yb.format.GML2=$v,Yb.format.GML3=Yv,Yb.format.GML32=Kv,Yb.format.GMLBase=Pv,Yb.format.GMLBase.GMLNS=Rv,Yb.format.GPX=class extends Cv{constructor(t){super(),t=t||{},this.dataProjection=vn("EPSG:4326"),this.readExtensions_=t.readExtensions}handleReadExtensions_(t){t||(t=[]);for(let e=0,i=t.length;e<i;++e){const i=t[e];if(this.readExtensions_){const t=i.get("extensionsNode_")||null;this.readExtensions_(i,t)}i.set("extensionsNode_",void 0)}}readMetadata(t){return t?"string"==typeof t?this.readMetadataFromDocument(Jf(t)):Kf(t)?this.readMetadataFromDocument(t):this.readMetadataFromNode(t):null}readMetadataFromDocument(t){for(let e=t.firstChild;e;e=e.nextSibling)if(e.nodeType===Node.ELEMENT_NODE){const t=this.readMetadataFromNode(e);if(t)return t}return null}readMetadataFromNode(t){if(!qv.includes(t.namespaceURI))return null;for(let e=t.firstElementChild;e;e=e.nextElementSibling)if(qv.includes(e.namespaceURI)&&"metadata"===e.localName)return up({},iE,e,[]);return null}readFeatureFromNode(t,e){if(!qv.includes(t.namespaceURI))return null;const i=Jv[t.localName];if(!i)return null;const n=i(t,[this.getReadOptions(t,e)]);return n?(this.handleReadExtensions_([n]),n):null}readFeaturesFromNode(t,e){if(!qv.includes(t.namespaceURI))return[];if("gpx"==t.localName){const i=up([],Qv,t,[this.getReadOptions(t,e)]);return i?(this.handleReadExtensions_(i),i):[]}return[]}writeFeaturesNode(t,e){e=this.adaptOptions(e);const i=Zf("http://www.topografix.com/GPX/1/1","gpx");return i.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xsi",Wf),i.setAttributeNS(Wf,"xsi:schemaLocation","http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd"),i.setAttribute("version","1.1"),i.setAttribute("creator","OpenLayers"),gp({node:i},rE,wE,t,[e]),i}},Yb.format.GeoJSON=class extends _v{constructor(t){t=t||{},super(),this.dataProjection=vn(t.dataProjection?t.dataProjection:"EPSG:4326"),t.featureProjection&&(this.defaultFeatureProjection=vn(t.featureProjection)),t.featureClass&&(this.featureClass=t.featureClass),this.geometryName_=t.geometryName,this.extractGeometryName_=t.extractGeometryName,this.supportedMediaTypes=["application/geo+json","application/vnd.geo+json"]}readFeatureFromObject(t,e){let i=null;i="Feature"===t.type?t:{type:"Feature",geometry:t,properties:null};const n=AE(i.geometry);if(this.featureClass===Rd)return pv({geometry:n,id:i.id,properties:i.properties},e);const r=new Mt;return this.geometryName_?r.setGeometryName(this.geometryName_):this.extractGeometryName_&&i.geometry_name&&r.setGeometryName(i.geometry_name),r.setGeometry(mv(n,e)),"id"in i&&r.setId(i.id),i.properties&&r.setProperties(i.properties,!0),r}readFeaturesFromObject(t,e){let i=null;if("FeatureCollection"===t.type){i=[];const n=t.features;for(let t=0,r=n.length;t<r;++t){const r=this.readFeatureFromObject(n[t],e);r&&i.push(r)}}else i=[this.readFeatureFromObject(t,e)];return i.flat()}readGeometryFromObject(t,e){return function(t,e){const i=AE(t);return mv(i,e)}(t,e)}readProjectionFromObject(t){const e=t.crs;let i;if(e)if("name"==e.type)i=vn(e.properties.name);else{if("EPSG"!==e.type)throw new Error("Unknown SRS type");i=vn("EPSG:"+e.properties.code)}else i=this.dataProjection;return i}writeFeatureObject(t,e){e=this.adaptOptions(e);const i={type:"Feature",geometry:null,properties:null},n=t.getId();if(void 0!==n&&(i.id=n),!t.hasProperties())return i;const r=t.getProperties(),s=t.getGeometry();return s&&(i.geometry=OE(s,e),delete r[t.getGeometryName()]),F(r)||(i.properties=r),i}writeFeaturesObject(t,e){e=this.adaptOptions(e);const i=[];for(let n=0,r=t.length;n<r;++n)i.push(this.writeFeatureObject(t[n],e));return{type:"FeatureCollection",features:i}}writeGeometryObject(t,e){return OE(t,this.adaptOptions(e))}},Yb.format.IGC=class extends DE{constructor(t){super(),t=t||{},this.dataProjection=vn("EPSG:4326"),this.altitudeMode_=t.altitudeMode?t.altitudeMode:"none",this.lad_=!1,this.lod_=!1,this.ladStart_=0,this.ladStop_=0,this.lodStart_=0,this.lodStop_=0}readFeatureFromText(t,e){const i=this.altitudeMode_,n=t.split(BE),r={},s=[];let o,a,l=2e3,h=0,c=1,u=-1;for(o=0,a=n.length;o<a;++o){const t=n[o];let e;if("B"==t.charAt(0)){if(e=kE.exec(t),e){const n=parseInt(e[1],10),r=parseInt(e[2],10),o=parseInt(e[3],10);let a=parseInt(e[4],10)+parseInt(e[5],10)/6e4;this.lad_&&(a+=parseInt(t.slice(this.ladStart_,this.ladStop_),10)/6e4/10**(this.ladStop_-this.ladStart_)),"S"==e[6]&&(a=-a);let d=parseInt(e[7],10)+parseInt(e[8],10)/6e4;if(this.lod_&&(d+=parseInt(t.slice(this.lodStart_,this.lodStop_),10)/6e4/10**(this.lodStop_-this.lodStart_)),"W"==e[9]&&(d=-d),s.push(d,a),"none"!=i){let t;t="gps"==i?parseInt(e[11],10):"barometric"==i?parseInt(e[12],10):0,s.push(t)}let g=Date.UTC(l,h,c,n,r,o);g<u&&(g=Date.UTC(l,h,c+1,n,r,o)),s.push(g/1e3),u=g}}else if("H"==t.charAt(0))e=UE.exec(t),e?(c=parseInt(e[1],10),h=parseInt(e[2],10)-1,l=2e3+parseInt(e[3],10)):(e=jE.exec(t),e?(c=parseInt(e[1],10),h=parseInt(e[2],10)-1,l=2e3+parseInt(e[3],10)):(e=GE.exec(t),e&&(r[e[1]]=e[2].trim())));else if("I"==t.charAt(0)){const e=parseInt(t.slice(1,3),10);for(let i=0;i<e;i++){const e=t.slice(7+7*i,10+7*i);if("LAD"===e||"LOD"===e){const n=parseInt(t.slice(3+7*i,5+7*i),10)-1,r=parseInt(t.slice(5+7*i,7+7*i),10);"LAD"===e?(this.lad_=!0,this.ladStart_=n,this.ladStop_=r):"LOD"===e&&(this.lod_=!0,this.lodStart_=n,this.lodStop_=r)}}}}if(0===s.length)return null;const d=new Ed(s,"none"==i?"XYM":"XYZM"),g=new Mt(dv(d,!1,e));return g.setProperties(r,!0),g}readFeaturesFromText(t,e){const i=this.readFeatureFromText(t,e);return i?[i]:[]}},Yb.format.IIIFInfo=class{constructor(t){this.setImageInfo(t)}setImageInfo(t){this.imageInfo="string"==typeof t?JSON.parse(t):t}getImageApiVersion(){if(void 0===this.imageInfo)return;let t=this.imageInfo["@context"]||"ol-no-context";"string"==typeof t&&(t=[t]);for(let e=0;e<t.length;e++)switch(t[e]){case"http://library.stanford.edu/iiif/image-api/1.1/context.json":case"http://iiif.io/api/image/1/context.json":return dg;case"http://iiif.io/api/image/2/context.json":return gg;case"http://iiif.io/api/image/3/context.json":return fg;case"ol-no-context":if(this.getComplianceLevelEntryFromProfile(dg)&&this.imageInfo.identifier)return dg}Ft(!1,"Cannot determine IIIF Image API version from provided image information JSON")}getComplianceLevelEntryFromProfile(t){if(void 0!==this.imageInfo&&void 0!==this.imageInfo.profile)switch(void 0===t&&(t=this.getImageApiVersion()),t){case dg:if(mg.test(this.imageInfo.profile))return this.imageInfo.profile;break;case fg:if(yg.test(this.imageInfo.profile))return this.imageInfo.profile;break;case gg:if("string"==typeof this.imageInfo.profile&&_g.test(this.imageInfo.profile))return this.imageInfo.profile;if(Array.isArray(this.imageInfo.profile)&&this.imageInfo.profile.length>0&&"string"==typeof this.imageInfo.profile[0]&&_g.test(this.imageInfo.profile[0]))return this.imageInfo.profile[0]}}getComplianceLevelFromProfile(t){const e=this.getComplianceLevelEntryFromProfile(t);if(void 0===e)return;const i=e.match(/level[0-2](?:\.json)?$/g);return Array.isArray(i)?i[0].replace(".json",""):void 0}getComplianceLevelSupportedFeatures(){if(void 0===this.imageInfo)return;const t=this.getImageApiVersion(),e=this.getComplianceLevelFromProfile(t);return void 0===e?pg.none.none:pg[t][e]}getTileSourceOptions(t){const e=t||{},i=this.getImageApiVersion();if(void 0===i)return;const n=void 0===i?void 0:xg[i](this);return void 0!==n?{url:n.url,version:i,size:[this.imageInfo.width,this.imageInfo.height],sizes:n.sizes,format:void 0!==e.format&&n.formats.includes(e.format)?e.format:void 0!==n.preferredFormat?n.preferredFormat:"jpg",supports:n.supports,quality:e.quality&&n.qualities.includes(e.quality)?e.quality:n.qualities.includes("native")?"native":"default",resolutions:Array.isArray(n.resolutions)?n.resolutions.sort((function(t,e){return e-t})):void 0,tileSize:n.tileSize}:void 0}},Yb.format.JSONFeature=_v,Yb.format.KML=class extends Cv{constructor(t){super(),t=t||{},dS||(JE=[255,255,255,1],rS=new Zh({color:JE}),QE=[20,2],tS="pixels",eS="pixels",iS=[64,64],nS="https://maps.google.com/mapfiles/kml/pushpin/ylw-pushpin.png",oS=new Hh({anchor:QE,anchorOrigin:"bottom-left",anchorXUnits:tS,anchorYUnits:eS,crossOrigin:"anonymous",rotation:0,scale:gS(iS),size:iS,src:nS}),sS="NO_IMAGE",lS=new Kh({color:JE,width:1}),aS=new Kh({color:[51,51,51,1],width:2}),hS=new nc({font:"bold 16px Helvetica",fill:rS,stroke:aS,scale:.8}),cS=new qh({fill:rS,image:oS,text:hS,stroke:lS,zIndex:0}),dS=[cS]),this.dataProjection=vn("EPSG:4326"),this.defaultStyle_=t.defaultStyle?t.defaultStyle:dS,this.extractStyles_=void 0===t.extractStyles||t.extractStyles,this.writeStyles_=void 0===t.writeStyles||t.writeStyles,this.sharedStyles_={},this.showPointNames_=void 0===t.showPointNames||t.showPointNames,this.crossOrigin_=void 0!==t.crossOrigin?t.crossOrigin:"anonymous",this.iconUrlFunction_=t.iconUrlFunction?t.iconUrlFunction:fS,this.supportedMediaTypes=["application/vnd.google-earth.kml+xml"]}readDocumentOrFolder_(t,e){const i=up([],hp(XE,{Document:Qf(this.readDocumentOrFolder_,this),Folder:Qf(this.readDocumentOrFolder_,this),Placemark:tp(this.readPlacemark_,this),Style:this.readSharedStyle_.bind(this),StyleMap:this.readSharedStyleMap_.bind(this)}),t,e,this);if(i)return i}readPlacemark_(t,e){const i=up({geometry:null},$E,t,e,this);if(!i)return;const n=new Mt,r=t.getAttribute("id");null!==r&&n.setId(r);const s=e[0],o=i.geometry;if(o&&dv(o,!1,s),n.setGeometry(o),delete i.geometry,this.extractStyles_){const t=function(t,e,i,n,r){return function(s,o){let a=r,l="",h=[];if(a){const t=s.getGeometry();if(t)if(t instanceof yd)h=t.getGeometriesArrayRecursive().filter((function(t){const e=t.getType();return"Point"===e||"MultiPoint"===e})),a=h.length>0;else{const e=t.getType();a="Point"===e||"MultiPoint"===e}}a&&(l=s.get("name"),a=a&&!!l,a&&/&[^&]+;/.test(l)&&(uS||(uS=document.createElement("textarea")),uS.innerHTML=l,l=uS.value));let c=i;if(t?c=t:e&&(c=pS(e,i,n)),a){const t=function(t,e){const i=[0,0];let n="start";const r=t.getImage();if(r){const t=r.getSize();if(t&&2==t.length){const e=r.getScaleArray(),s=r.getAnchor();i[0]=e[0]*(t[0]-s[0]),i[1]=e[1]*(t[1]/2-s[1]),n="left"}}let s=t.getText();s?(s=s.clone(),s.setFont(s.getFont()||hS.getFont()),s.setScale(s.getScale()||hS.getScale()),s.setFill(s.getFill()||hS.getFill()),s.setStroke(s.getStroke()||aS)):s=hS.clone();s.setText(e),s.setOffsetX(i[0]),s.setOffsetY(i[1]),s.setTextAlign(n);const o=new qh({image:r,text:s});return o}(c[0],l);if(h.length>0){t.setGeometry(new yd(h));return[t,new qh({geometry:c[0].getGeometry(),image:null,fill:c[0].getFill(),stroke:c[0].getStroke(),text:null})].concat(c.slice(1))}return t}return c}}(i.Style,i.styleUrl,this.defaultStyle_,this.sharedStyles_,this.showPointNames_);n.setStyle(t)}return delete i.Style,n.setProperties(i,!0),n}readSharedStyle_(t,e){const i=t.getAttribute("id");if(null!==i){const n=VS.call(this,t,e);if(n){let e,r=t.baseURI;if(r&&"about:blank"!=r||(r=window.location.href),r){e=new URL("#"+i,r).href}else e="#"+i;this.sharedStyles_[e]=n}}}readSharedStyleMap_(t,e){const i=t.getAttribute("id");if(null===i)return;const n=SS.call(this,t,e);if(!n)return;let r,s=t.baseURI;if(s&&"about:blank"!=s||(s=window.location.href),s){r=new URL("#"+i,s).href}else r="#"+i;this.sharedStyles_[r]=n}readFeatureFromNode(t,e){if(!XE.includes(t.namespaceURI))return null;const i=this.readPlacemark_(t,[this.getReadOptions(t,e)]);return i||null}readFeaturesFromNode(t,e){if(!XE.includes(t.namespaceURI))return[];let i;const n=t.localName;if("Document"==n||"Folder"==n)return i=this.readDocumentOrFolder_(t,[this.getReadOptions(t,e)]),i||[];if("Placemark"==n){const i=this.readPlacemark_(t,[this.getReadOptions(t,e)]);return i?[i]:[]}if("kml"==n){i=[];for(let n=t.firstElementChild;n;n=n.nextElementSibling){const t=this.readFeaturesFromNode(n,e);t&&S(i,t)}return i}return[]}readName(t){if(t){if("string"==typeof t){const e=Jf(t);return this.readNameFromDocument(e)}return Kf(t)?this.readNameFromDocument(t):this.readNameFromNode(t)}}readNameFromDocument(t){for(let e=t.firstChild;e;e=e.nextSibling)if(e.nodeType==Node.ELEMENT_NODE){const t=this.readNameFromNode(e);if(t)return t}}readNameFromNode(t){for(let e=t.firstElementChild;e;e=e.nextElementSibling)if(XE.includes(e.namespaceURI)&&"name"==e.localName)return Nv(e);for(let e=t.firstElementChild;e;e=e.nextElementSibling){const t=e.localName;if(XE.includes(e.namespaceURI)&&("Document"==t||"Folder"==t||"Placemark"==t||"kml"==t)){const t=this.readNameFromNode(e);if(t)return t}}}readNetworkLinks(t){const e=[];if("string"==typeof t){const i=Jf(t);S(e,this.readNetworkLinksFromDocument(i))}else Kf(t)?S(e,this.readNetworkLinksFromDocument(t)):S(e,this.readNetworkLinksFromNode(t));return e}readNetworkLinksFromDocument(t){const e=[];for(let i=t.firstChild;i;i=i.nextSibling)i.nodeType==Node.ELEMENT_NODE&&S(e,this.readNetworkLinksFromNode(i));return e}readNetworkLinksFromNode(t){const e=[];for(let i=t.firstElementChild;i;i=i.nextElementSibling)if(XE.includes(i.namespaceURI)&&"NetworkLink"==i.localName){const t=up({},WE,i,[]);e.push(t)}for(let i=t.firstElementChild;i;i=i.nextElementSibling){const t=i.localName;!XE.includes(i.namespaceURI)||"Document"!=t&&"Folder"!=t&&"kml"!=t||S(e,this.readNetworkLinksFromNode(i))}return e}readRegion(t){const e=[];if("string"==typeof t){const i=Jf(t);S(e,this.readRegionFromDocument(i))}else Kf(t)?S(e,this.readRegionFromDocument(t)):S(e,this.readRegionFromNode(t));return e}readRegionFromDocument(t){const e=[];for(let i=t.firstChild;i;i=i.nextSibling)i.nodeType==Node.ELEMENT_NODE&&S(e,this.readRegionFromNode(i));return e}readRegionFromNode(t){const e=[];for(let i=t.firstElementChild;i;i=i.nextElementSibling)if(XE.includes(i.namespaceURI)&&"Region"==i.localName){const t=up({},HE,i,[]);e.push(t)}for(let i=t.firstElementChild;i;i=i.nextElementSibling){const t=i.localName;!XE.includes(i.namespaceURI)||"Document"!=t&&"Folder"!=t&&"kml"!=t||S(e,this.readRegionFromNode(i))}return e}readCamera(t){const e=[];if("string"==typeof t){const i=Jf(t);S(e,this.readCameraFromDocument(i))}else Kf(t)?S(e,this.readCameraFromDocument(t)):S(e,this.readCameraFromNode(t));return e}readCameraFromDocument(t){const e=[];for(let i=t.firstChild;i;i=i.nextSibling)i.nodeType===Node.ELEMENT_NODE&&S(e,this.readCameraFromNode(i));return e}readCameraFromNode(t){const e=[];for(let i=t.firstElementChild;i;i=i.nextElementSibling)if(XE.includes(i.namespaceURI)&&"Camera"===i.localName){const t=up({},YE,i,[]);e.push(t)}for(let i=t.firstElementChild;i;i=i.nextElementSibling){const t=i.localName;!XE.includes(i.namespaceURI)||"Document"!==t&&"Folder"!==t&&"Placemark"!==t&&"kml"!==t||S(e,this.readCameraFromNode(i))}return e}writeFeaturesNode(t,e){e=this.adaptOptions(e);const i=Zf(XE[4],"kml"),n="http://www.w3.org/2000/xmlns/";i.setAttributeNS(n,"xmlns:gx",zE[0]),i.setAttributeNS(n,"xmlns:xsi",Wf),i.setAttributeNS(Wf,"xsi:schemaLocation","http://www.opengis.net/kml/2.2 https://developers.google.com/kml/schema/kml22gx.xsd");const r={node:i},s={};t.length>1?s.Document=t:1==t.length&&(s.Placemark=t[0]);const o=KE[i.namespaceURI],a=lp(s,o);return gp(r,qE,ap,a,[e],o,this),i}},Yb.format.KML.getDefaultFillStyle=function(){return rS},Yb.format.KML.getDefaultImageStyle=function(){return oS},Yb.format.KML.getDefaultStrokeStyle=function(){return lS},Yb.format.KML.getDefaultStyle=function(){return cS},Yb.format.KML.getDefaultStyleArray=function(){return dS},Yb.format.KML.getDefaultTextStyle=function(){return hS},Yb.format.KML.readFlatCoordinates=_S,Yb.format.MVT=class extends uv{constructor(t){super(),t=t||{},this.dataProjection=new ci({code:"",units:"tile-pixels"}),this.featureClass=t.featureClass?t.featureClass:Rd,this.geometryName_=t.geometryName,this.layerName_=t.layerName?t.layerName:"layer",this.layers_=t.layers?t.layers:null,this.idProperty_=t.idProperty,this.supportedMediaTypes=["application/vnd.mapbox-vector-tile","application/x-protobuf"]}readRawGeometry_(t,e,i,n){t.pos=e.geometry;const r=t.readVarint()+t.pos;let s=1,o=0,a=0,l=0,h=0,c=0;for(;t.pos<r;){if(!o){const e=t.readVarint();s=7&e,o=e>>3}if(o--,1===s||2===s)a+=t.readSVarint(),l+=t.readSVarint(),1===s&&h>c&&(n.push(h),c=h),i.push(a,l),h+=2;else{if(7!==s)throw new Error("Invalid command found in the PBF");h>c&&(i.push(i[c],i[c+1]),h+=2)}}h>c&&(n.push(h),c=h)}createFeature_(t,e,i){const n=e.type;if(0===n)return null;let r;const s=e.properties;let o;this.idProperty_?(o=s[this.idProperty_],delete s[this.idProperty_]):o=e.id,s[this.layerName_]=e.layer.name;const a=[],l=[];this.readRawGeometry_(t,e,a,l);const h=function(t,e){let i;1===t?i=1===e?"Point":"MultiPoint":2===t?i=1===e?"LineString":"MultiLineString":3===t&&(i="Polygon");return i}(n,l.length);if(this.featureClass===Rd)r=new this.featureClass(h,a,l,2,s,o),r.transform(i.dataProjection);else{let t;if("Polygon"==h){const e=as(a,l);t=e.length>1?new Td(a,"XY",e):new ls(a,"XY",l)}else t="Point"===h?new zr(a,"XY"):"LineString"===h?new Ed(a,"XY"):"MultiPoint"===h?new wd(a,"XY"):"MultiLineString"===h?new Sd(a,"XY",l):null;r=new(0,this.featureClass),this.geometryName_&&r.setGeometryName(this.geometryName_);const e=dv(t,!1,i);r.setGeometry(e),void 0!==o&&r.setId(o),r.setProperties(s,!0)}return r}getType(){return"arraybuffer"}readFeatures(t,e){const i=this.layers_,n=vn((e=this.adaptOptions(e)).dataProjection);n.setWorldExtent(e.extent),e.dataProjection=n;const r=new $w(t),s=r.readFields(nT,{}),o=[];for(const t in s){if(i&&!i.includes(t))continue;const a=s[t],l=a?[0,0,a.extent,a.extent]:null;n.setExtent(l);for(let t=0,i=a.length;t<i;++t){const i=oT(r,a,t),n=this.createFeature_(r,i,e);null!==n&&o.push(n)}}return o}readProjection(t){return this.dataProjection}setLayers(t){this.layers_=t}},Yb.format.OSMXML=class extends Cv{constructor(){super(),this.dataProjection=vn("EPSG:4326")}readFeaturesFromNode(t,e){if(e=this.getReadOptions(t,e),"osm"==t.localName){const i=up({nodes:{},ways:[],features:[]},hT,t,[e]);for(let t=0;t<i.ways.length;t++){const n=i.ways[t],r=n.flatCoordinates;if(!r.length)for(let t=0,e=n.ndrefs.length;t<e;t++){S(r,i.nodes[n.ndrefs[t]])}let s;s=n.ndrefs[0]==n.ndrefs[n.ndrefs.length-1]?new ls(r,"XY",[r.length]):new Ed(r,"XY"),dv(s,!1,e);const o=new Mt(s);void 0!==n.id&&o.setId(n.id),o.setProperties(n.tags,!0),i.features.push(o)}if(i.features)return i.features}return[]}},Yb.format.OWS=_T,Yb.format.Polyline=class extends DE{constructor(t){super(),t=t||{},this.dataProjection=vn("EPSG:4326"),this.factor_=t.factor?t.factor:1e5,this.geometryLayout_=t.geometryLayout?t.geometryLayout:"XY"}readFeatureFromText(t,e){const i=this.readGeometryFromText(t,e);return new Mt(i)}readFeaturesFromText(t,e){return[this.readFeatureFromText(t,e)]}readGeometryFromText(t,e){const i=pr(this.geometryLayout_),n=MT(t,i,this.factor_);cv(n,0,n.length,i,n);const r=Fr(n,0,n.length,i);return dv(new Ed(r,this.geometryLayout_),!1,this.adaptOptions(e))}writeFeatureText(t,e){const i=t.getGeometry();if(i)return this.writeGeometryText(i,e);throw new Error("Expected `feature` to have a geometry")}writeFeaturesText(t,e){return this.writeFeatureText(t[0],e)}writeGeometryText(t,e){const i=(t=dv(t,!0,this.adaptOptions(e))).getFlatCoordinates(),n=t.getStride();return cv(i,0,i.length,n,i),FT(i,n,this.factor_)}},Yb.format.Polyline.decodeDeltas=MT,Yb.format.Polyline.decodeFloats=OT,Yb.format.Polyline.decodeSignedIntegers=NT,Yb.format.Polyline.decodeUnsignedIntegers=GT,Yb.format.Polyline.encodeDeltas=FT,Yb.format.Polyline.encodeFloats=AT,Yb.format.Polyline.encodeSignedIntegers=DT,Yb.format.Polyline.encodeUnsignedInteger=jT,Yb.format.Polyline.encodeUnsignedIntegers=kT,Yb.format.TextFeature=DE,Yb.format.TopoJSON=class extends _v{constructor(t){super(),t=t||{},this.layerName_=t.layerName,this.layers_=t.layers?t.layers:null,this.dataProjection=vn(t.dataProjection?t.dataProjection:"EPSG:4326")}readFeaturesFromObject(t,e){if("Topology"==t.type){const i=t;let n,r=null,s=null;i.transform&&(n=i.transform,r=n.scale,s=n.translate);const o=i.arcs;n&&function(t,e,i){for(let n=0,r=t.length;n<r;++n)VT(t[n],e,i)}(o,r,s);const a=[],l=i.objects,h=this.layerName_;let c;for(const t in l)this.layers_&&!this.layers_.includes(t)||("GeometryCollection"===l[t].type?(c=l[t],a.push.apply(a,zT(c,o,r,s,h,t,e))):(c=l[t],a.push(XT(c,o,r,s,h,t,e))));return a}return[]}readProjectionFromObject(t){return this.dataProjection}},Yb.format.WFS=class extends Cv{constructor(t){super(),t=t||{},this.version_=t.version?t.version:"1.1.0",this.featureType_=t.featureType,this.featureNS_=t.featureNS,this.gmlFormat_=t.gmlFormat?t.gmlFormat:new LC[this.version_],this.schemaLocation_=t.schemaLocation?t.schemaLocation:IC[this.version_]}getFeatureType(){return this.featureType_}setFeatureType(t){this.featureType_=t}readFeaturesFromNode(t,e){const i={node:t};Object.assign(i,{featureType:this.featureType_,featureNS:this.featureNS_}),Object.assign(i,this.getReadOptions(t,e||{}));const n=[i];let r;r="2.0.0"===this.version_?xC:this.gmlFormat_.FEATURE_COLLECTION_PARSERS;let s=up([],r,t,n,this.gmlFormat_);return s||(s=[]),s}readTransactionResponse(t){if(t){if("string"==typeof t){const e=Jf(t);return this.readTransactionResponseFromDocument(e)}return Kf(t)?this.readTransactionResponseFromDocument(t):this.readTransactionResponseFromNode(t)}}readFeatureCollectionMetadata(t){if(t){if("string"==typeof t){const e=Jf(t);return this.readFeatureCollectionMetadataFromDocument(e)}return Kf(t)?this.readFeatureCollectionMetadataFromDocument(t):this.readFeatureCollectionMetadataFromNode(t)}}readFeatureCollectionMetadataFromDocument(t){for(let e=t.firstChild;e;e=e.nextSibling)if(e.nodeType==Node.ELEMENT_NODE)return this.readFeatureCollectionMetadataFromNode(e)}readFeatureCollectionMetadataFromNode(t){const e={},i=Dv(t.getAttribute("numberOfFeatures"));return e.numberOfFeatures=i,up(e,xC,t,[],this.gmlFormat_)}readTransactionResponseFromDocument(t){for(let e=t.firstChild;e;e=e.nextSibling)if(e.nodeType==Node.ELEMENT_NODE)return this.readTransactionResponseFromNode(e)}readTransactionResponseFromNode(t){return up({},EC,t,[])}writeGetFeature(t){const e=Zf(bC[this.version_],"GetFeature");e.setAttribute("service","WFS"),e.setAttribute("version",this.version_),t.handle&&e.setAttribute("handle",t.handle),t.outputFormat&&e.setAttribute("outputFormat",t.outputFormat),void 0!==t.maxFeatures&&e.setAttribute("maxFeatures",String(t.maxFeatures)),t.resultType&&e.setAttribute("resultType",t.resultType),void 0!==t.startIndex&&e.setAttribute("startIndex",String(t.startIndex)),void 0!==t.count&&e.setAttribute("count",String(t.count)),void 0!==t.viewParams&&e.setAttribute("viewParams",t.viewParams),e.setAttributeNS(Wf,"xsi:schemaLocation",this.schemaLocation_);const i={node:e};if(Object.assign(i,{version:this.version_,srsName:t.srsName,featureNS:t.featureNS?t.featureNS:this.featureNS_,featurePrefix:t.featurePrefix,propertyNames:t.propertyNames?t.propertyNames:[]}),Ft(Array.isArray(t.featureTypes),"`options.featureTypes` must be an Array"),"string"==typeof t.featureTypes[0]){let n=t.filter;t.bbox&&(Ft(t.geometryName,"`options.geometryName` must also be provided when `options.bbox` is set"),n=this.combineBboxAndFilter(t.geometryName,t.bbox,t.srsName,n)),Object.assign(i,{geometryName:t.geometryName,filter:n}),aR(e,t.featureTypes,[i])}else t.featureTypes.forEach((n=>{const r=this.combineBboxAndFilter(n.geometryName,n.bbox,t.srsName,t.filter);Object.assign(i,{geometryName:n.geometryName,filter:r}),aR(e,[n.name],[i])}));return e}combineBboxAndFilter(t,e,i,n){const r=yC(t,e,i);return n?_C(n,r):r}writeTransaction(t,e,i,n){const r=[],s=n.version?n.version:this.version_,o=Zf(bC[s],"Transaction");let a;o.setAttribute("service","WFS"),o.setAttribute("version",s),n&&(a=n.gmlOptions?n.gmlOptions:{},n.handle&&o.setAttribute("handle",n.handle)),o.setAttributeNS(Wf,"xsi:schemaLocation",IC[s]);const l=function(t,e,i,n){const r=n.featurePrefix?n.featurePrefix:TC;let s;"1.0.0"===i?s=2:"1.1.0"===i?s=3:"2.0.0"===i&&(s=3.2);const o=Object.assign({node:t},{version:i,featureNS:n.featureNS,featureType:n.featureType,featurePrefix:r,gmlVersion:s,hasZ:n.hasZ,srsName:n.srsName},e);return o}(o,a,s,n);return t&&FC("Insert",t,r,l),e&&FC("Update",e,r,l),i&&FC("Delete",i,r,l),n.nativeElements&&FC("Native",n.nativeElements,r,l),o}readProjectionFromDocument(t){for(let e=t.firstChild;e;e=e.nextSibling)if(e.nodeType==Node.ELEMENT_NODE)return this.readProjectionFromNode(e);return null}readProjectionFromNode(t){if(t.firstElementChild&&t.firstElementChild.firstElementChild)for(let e=(t=t.firstElementChild.firstElementChild).firstElementChild;e;e=e.nextElementSibling)if(0!==e.childNodes.length&&(1!==e.childNodes.length||3!==e.firstChild.nodeType)){const t=[{}];return this.gmlFormat_.readGeometryElement(e,t),vn(t.pop().srsName)}return null}},Yb.format.WFS.writeFilter=function(t,e){const i=Zf(lR(e=e||"1.1.0"),"Filter"),n={node:i};return Object.assign(n,{version:e,filter:t}),WC(i,t,[n]),i},Yb.format.WKB=class extends uv{constructor(t){super(),t=t||{},this.splitCollection=Boolean(t.splitCollection),this.viewCache_=null,this.hex_=!1!==t.hex,this.littleEndian_=!1!==t.littleEndian,this.ewkb_=!1!==t.ewkb,this.layout_=t.geometryLayout,this.nodataZ_=t.nodataZ||0,this.nodataM_=t.nodataM||0,this.srid_=t.srid}getType(){return this.hex_?"text":"arraybuffer"}readFeature(t,e){return new Mt({geometry:this.readGeometry(t,e)})}readFeatures(t,e){let i=[];const n=this.readGeometry(t,e);return i=this.splitCollection&&n instanceof yd?n.getGeometriesArray():[n],i.map((t=>new Mt({geometry:t})))}readGeometry(t,e){const i=ER(t);if(!i)return null;const n=new xR(i).readGeometry();return this.viewCache_=i,e=this.getReadOptions(t,e),this.viewCache_=null,dv(n,!1,e)}readProjection(t){const e=this.viewCache_||ER(t);if(!e)return;const i=new xR(e);return i.readWkbHeader(),i.getSrid()&&vn("EPSG:"+i.getSrid())||void 0}writeFeature(t,e){return this.writeGeometry(t.getGeometry(),e)}writeFeatures(t,e){return this.writeGeometry(new yd(t.map((t=>t.getGeometry()))),e)}writeGeometry(t,e){e=this.adaptOptions(e);const i=new vR({layout:this.layout_,littleEndian:this.littleEndian_,ewkb:this.ewkb_,nodata:{Z:this.nodataZ_,M:this.nodataM_}});let n=Number.isInteger(this.srid_)?Number(this.srid_):null;if(!1!==this.srid_&&!Number.isInteger(this.srid_)){const t=e.dataProjection&&vn(e.dataProjection);if(t){const e=t.getCode();e.startsWith("EPSG:")&&(n=Number(e.substring(5)))}}i.writeGeometry(dv(t,!0,e),n);const r=i.getBuffer();return this.hex_?function(t){const e=new Uint8Array(t);return Array.from(e.values()).map((t=>(t<16?"0":"")+Number(t).toString(16).toUpperCase())).join("")}(r):r}},Yb.format.WKT=class extends DE{constructor(t){super(),t=t||{},this.splitCollection_=void 0!==t.splitCollection&&t.splitCollection}parse_(t){const e=new OR(t);return new DR(e).parse()}readFeatureFromText(t,e){const i=this.readGeometryFromText(t,e),n=new Mt;return n.setGeometry(i),n}readFeaturesFromText(t,e){let i=[];const n=this.readGeometryFromText(t,e);i=this.splitCollection_&&"GeometryCollection"==n.getType()?n.getGeometriesArray():[n];const r=[];for(let t=0,e=i.length;t<e;++t){const e=new Mt;e.setGeometry(i[t]),r.push(e)}return r}readGeometryFromText(t,e){return dv(this.parse_(t),!1,e)}writeFeatureText(t,e){const i=t.getGeometry();return i?this.writeGeometryText(i,e):""}writeFeaturesText(t,e){if(1==t.length)return this.writeFeatureText(t[0],e);const i=[];for(let e=0,n=t.length;e<n;++e)i.push(t[e].getGeometry());const n=new yd(i);return this.writeGeometryText(n,e)}writeGeometryText(t,e){return UR(dv(t,!0,e))}},Yb.format.WMSCapabilities=class extends dT{constructor(){super(),this.version=void 0}readFromNode(t){this.version=t.getAttribute("version").trim();const e=up({version:this.version},XR,t,[]);return e||null}},Yb.format.WMSGetFeatureInfo=class extends Cv{constructor(t){super(),t=t||{},this.featureNS_="http://mapserver.gis.umn.edu/mapserver",this.gmlFormat_=new $v,this.layers_=t.layers?t.layers:null}getLayers(){return this.layers_}setLayers(t){this.layers_=t}readFeatures_(t,e){t.setAttribute("namespaceURI",this.featureNS_);const i=t.localName;let n=[];if(0===t.childNodes.length)return n;if("msGMLOutput"==i)for(let i=0,r=t.childNodes.length;i<r;i++){const r=t.childNodes[i];if(r.nodeType!==Node.ELEMENT_NODE)continue;const s=r,o=e[0],a="_layer",l=s.localName.replace(a,"");if(this.layers_&&!this.layers_.includes(l))continue;const h=l+"_feature";o.featureType=h,o.featureNS=this.featureNS_;const c={};c[h]=tp(this.gmlFormat_.readFeatureElement,this.gmlFormat_);const u=hp([o.featureNS,null],c);s.setAttribute("namespaceURI",this.featureNS_);const d=up([],u,s,e,this.gmlFormat_);d&&S(n,d)}if("FeatureCollection"==i){const e=up([],this.gmlFormat_.FEATURE_COLLECTION_PARSERS,t,[{}],this.gmlFormat_);e&&(n=e)}return n}readFeaturesFromNode(t,e){const i={};return e&&Object.assign(i,this.getReadOptions(t,e)),this.readFeatures_(t,[i])}},Yb.format.WMTSCapabilities=class extends dT{constructor(){super(),this.owsParser_=new _T}readFromNode(t){let e=t.getAttribute("version");e&&(e=e.trim());let i=this.owsParser_.readFromNode(t);return i?(i.version=e,i=up(i,vb,t,[]),i||null):null}},Yb.format.XML=dT,Yb.format.XMLFeature=Cv,Yb.format.filter={},Yb.format.filter.And=YT,Yb.format.filter.Bbox=HT,Yb.format.filter.Comparison=tC,Yb.format.filter.ComparisonBinary=iC,Yb.format.filter.Contains=qT,Yb.format.filter.DWithin=JT,Yb.format.filter.Disjoint=QT,Yb.format.filter.During=eC,Yb.format.filter.EqualTo=nC,Yb.format.filter.Filter=WT,Yb.format.filter.GreaterThan=rC,Yb.format.filter.GreaterThanOrEqualTo=sC,Yb.format.filter.Intersects=oC,Yb.format.filter.IsBetween=aC,Yb.format.filter.IsLike=lC,Yb.format.filter.IsNull=hC,Yb.format.filter.LessThan=cC,Yb.format.filter.LessThanOrEqualTo=uC,Yb.format.filter.LogicalNary=ZT,Yb.format.filter.Not=dC,Yb.format.filter.NotEqualTo=gC,Yb.format.filter.Or=fC,Yb.format.filter.ResourceId=pC,Yb.format.filter.Spatial=KT,Yb.format.filter.Within=mC,Yb.format.filter.and=_C,Yb.format.filter.bbox=yC,Yb.format.filter.between=function(t,e,i){return new aC(t,e,i)},Yb.format.filter.contains=function(t,e,i){return new qT(t,e,i)},Yb.format.filter.disjoint=function(t,e,i){return new QT(t,e,i)},Yb.format.filter.during=function(t,e,i){return new eC(t,e,i)},Yb.format.filter.dwithin=function(t,e,i,n,r){return new JT(t,e,i,n,r)},Yb.format.filter.equalTo=function(t,e,i){return new nC(t,e,i)},Yb.format.filter.greaterThan=function(t,e){return new rC(t,e)},Yb.format.filter.greaterThanOrEqualTo=function(t,e){return new sC(t,e)},Yb.format.filter.intersects=function(t,e,i){return new oC(t,e,i)},Yb.format.filter.isNull=function(t){return new hC(t)},Yb.format.filter.lessThan=function(t,e){return new cC(t,e)},Yb.format.filter.lessThanOrEqualTo=function(t,e){return new uC(t,e)},Yb.format.filter.like=function(t,e,i,n,r,s){return new lC(t,e,i,n,r,s)},Yb.format.filter.not=function(t){return new dC(t)},Yb.format.filter.notEqualTo=function(t,e,i){return new gC(t,e,i)},Yb.format.filter.or=function(t){const e=[null].concat(Array.prototype.slice.call(arguments));return new(Function.prototype.bind.apply(fC,e))},Yb.format.filter.resourceId=function(t){return new pC(t)},Yb.format.filter.within=function(t,e,i){return new mC(t,e,i)},Yb.format.xlink={},Yb.format.xlink.readHref=fT,Yb.format.xsd={},Yb.format.xsd.readBoolean=Iv,Yb.format.xsd.readBooleanString=Lv,Yb.format.xsd.readDateTime=Fv,Yb.format.xsd.readDecimal=Mv,Yb.format.xsd.readDecimalString=Av,Yb.format.xsd.readNonNegativeIntegerString=Dv,Yb.format.xsd.readPositiveInteger=Ov,Yb.format.xsd.readString=Nv,Yb.format.xsd.writeBooleanTextNode=kv,Yb.format.xsd.writeCDATASection=Gv,Yb.format.xsd.writeDateTimeTextNode=jv,Yb.format.xsd.writeDecimalTextNode=Uv,Yb.format.xsd.writeNonNegativeIntegerTextNode=Bv,Yb.format.xsd.writeStringTextNode=zv,Yb.functions={},Yb.functions.FALSE=R,Yb.functions.TRUE=C,Yb.functions.VOID=b,Yb.functions.memoizeOne=P,Yb.functions.toPromise=I,Yb.geom={},Yb.geom.Circle=_d,Yb.geom.Geometry=dr,Yb.geom.GeometryCollection=yd,Yb.geom.LineString=Ed,Yb.geom.LinearRing=Br,Yb.geom.MultiLineString=Sd,Yb.geom.MultiPoint=wd,Yb.geom.MultiPolygon=Td,Yb.geom.Point=zr,Yb.geom.Polygon=ls,Yb.geom.Polygon.circular=hs,Yb.geom.Polygon.fromCircle=us,Yb.geom.Polygon.fromExtent=cs,Yb.geom.Polygon.makeRegular=ds,Yb.geom.SimpleGeometry=gr,Yb.geom.SimpleGeometry.getLayoutForStride=fr,Yb.geom.SimpleGeometry.getStrideForLayout=pr,Yb.geom.SimpleGeometry.transformGeom2D=mr,Yb.geom.flat={},Yb.geom.flat.area={},Yb.geom.flat.area.linearRing=_r,Yb.geom.flat.area.linearRings=yr,Yb.geom.flat.area.linearRingss=xr,Yb.geom.flat.center={},Yb.geom.flat.center.linearRingss=gd,Yb.geom.flat.closest={},Yb.geom.flat.closest.arrayMaxSquaredDelta=Sr,Yb.geom.flat.closest.assignClosestArrayPoint=Cr,Yb.geom.flat.closest.assignClosestMultiArrayPoint=Rr,Yb.geom.flat.closest.assignClosestPoint=Tr,Yb.geom.flat.closest.maxSquaredDelta=Er,Yb.geom.flat.closest.multiArrayMaxSquaredDelta=wr,Yb.geom.flat.contains={},Yb.geom.flat.contains.linearRingContainsExtent=Xr,Yb.geom.flat.contains.linearRingContainsXY=Vr,Yb.geom.flat.contains.linearRingsContainsXY=$r,Yb.geom.flat.contains.linearRingssContainsXY=Wr,Yb.geom.flat.deflate={},Yb.geom.flat.deflate.deflateCoordinate=br,Yb.geom.flat.deflate.deflateCoordinates=Pr,Yb.geom.flat.deflate.deflateCoordinatesArray=Ir,Yb.geom.flat.deflate.deflateMultiCoordinatesArray=Lr,Yb.geom.flat.flip={},Yb.geom.flat.flip.flipXY=cv,Yb.geom.flat.geodesic={},Yb.geom.flat.geodesic.greatCircleArc=function(t,e,i,n,r,s){const o=vn("EPSG:4326"),a=Math.cos(Pe(e)),l=Math.sin(Pe(e)),h=Math.cos(Pe(n)),c=Math.sin(Pe(n)),u=Math.cos(Pe(i-t)),d=Math.sin(Pe(i-t)),g=l*c+a*h*u;return ox((function(e){if(1<=g)return[i,n];const r=e*Math.acos(g),s=Math.cos(r),o=Math.sin(r),f=d*h,p=a*c-l*h*u,m=Math.atan2(f,p),_=Math.asin(l*s+a*o*Math.cos(m));return[be(Pe(t)+Math.atan2(Math.sin(m)*o*a,s-l*Math.sin(_))),be(_)]}),Fn(o,r),s)},Yb.geom.flat.geodesic.meridian=ax,Yb.geom.flat.geodesic.parallel=lx,Yb.geom.flat.inflate={},Yb.geom.flat.inflate.inflateCoordinates=Fr,Yb.geom.flat.inflate.inflateCoordinatesArray=Mr,Yb.geom.flat.inflate.inflateMultiCoordinatesArray=Ar,Yb.geom.flat.interiorpoint={},Yb.geom.flat.interiorpoint.getInteriorPointOfArray=Zr,Yb.geom.flat.interiorpoint.getInteriorPointsOfMultiArray=Yr,Yb.geom.flat.interpolate={},Yb.geom.flat.interpolate.interpolatePoint=fd,Yb.geom.flat.interpolate.lineStringCoordinateAtM=pd,Yb.geom.flat.interpolate.lineStringsCoordinateAtM=md,Yb.geom.flat.intersectsextent={},Yb.geom.flat.intersectsextent.intersectsLineString=Kr,Yb.geom.flat.intersectsextent.intersectsLineStringArray=qr,Yb.geom.flat.intersectsextent.intersectsLinearRing=Jr,Yb.geom.flat.intersectsextent.intersectsLinearRingArray=Qr,Yb.geom.flat.intersectsextent.intersectsLinearRingMultiArray=ts,Yb.geom.flat.length={},Yb.geom.flat.length.lineStringLength=vd,Yb.geom.flat.length.linearRingLength=function(t,e,i,n){let r=vd(t,e,i,n);const s=t[i-n]-t[e],o=t[i-n+1]-t[e+1];return r+=Math.sqrt(s*s+o*o),r},Yb.geom.flat.orient={},Yb.geom.flat.orient.inflateEnds=as,Yb.geom.flat.orient.linearRingIsClockwise=is,Yb.geom.flat.orient.linearRingsAreOriented=ns,Yb.geom.flat.orient.linearRingssAreOriented=rs,Yb.geom.flat.orient.orientLinearRings=ss,Yb.geom.flat.orient.orientLinearRingsArray=os,Yb.geom.flat.reverse={},Yb.geom.flat.reverse.coordinates=es,Yb.geom.flat.segments={},Yb.geom.flat.segments.forEach=Hr,Yb.geom.flat.simplify={},Yb.geom.flat.simplify.douglasPeucker=Or,Yb.geom.flat.simplify.douglasPeuckerArray=Dr,Yb.geom.flat.simplify.douglasPeuckerMultiArray=function(t,e,i,n,r,s,o,a){for(let l=0,h=i.length;l<h;++l){const h=i[l],c=[];o=Dr(t,e,h,n,r,s,o,c),a.push(c),e=h[h.length-1]}return o},Yb.geom.flat.simplify.quantize=Gr,Yb.geom.flat.simplify.quantizeArray=jr,Yb.geom.flat.simplify.quantizeMultiArray=Ur,Yb.geom.flat.simplify.radialDistance=Nr,Yb.geom.flat.simplify.simplifyLineString=function(t,e,i,n,r,s,o){return o=void 0!==o?o:[],s||(i=Nr(t,e,i,n,r,o,0),t=o,e=0,n=2),o.length=Or(t,e,i,n,r,o,0),o},Yb.geom.flat.simplify.snap=kr,Yb.geom.flat.straightchunk={},Yb.geom.flat.straightchunk.matchingChunk=xy,Yb.geom.flat.textpath={},Yb.geom.flat.textpath.drawTextOnPath=Ty,Yb.geom.flat.topology={},Yb.geom.flat.topology.lineStringIsClosed=function(t,e,i,n){const r=i-n;return t[e]===t[r]&&t[e+1]===t[r+1]&&(i-e)/n>3&&!!_r(t,e,i,n)},Yb.geom.flat.transform={},Yb.geom.flat.transform.rotate=ar,Yb.geom.flat.transform.scale=lr,Yb.geom.flat.transform.transform2D=or,Yb.geom.flat.transform.translate=hr,Yb.has={},Yb.has.CREATE_IMAGE_BITMAP=gt,Yb.has.DEVICE_PIXEL_RATIO=ct,Yb.has.FIREFOX=st,Yb.has.IMAGE_DECODE=dt,Yb.has.MAC=ht,Yb.has.PASSIVE_EVENT_LISTENERS=ft,Yb.has.SAFARI=ot,Yb.has.SAFARI_BUG_237906=at,Yb.has.WEBKIT=lt,Yb.has.WORKER_OFFSCREEN_CANVAS=ut,Yb.interaction={},Yb.interaction.DblClickDragZoom=class extends Uo{constructor(t){const e=t||{};super(e),e.stopDown&&(this.stopDown=e.stopDown),this.scaleDeltaByPixel_=e.delta?e.delta:.01,this.duration_=void 0!==e.duration?e.duration:250,this.handlingDownUpSequence_=!1,this.handlingDoubleDownSequence_=!1,this.doubleTapTimeoutId_=void 0,this.trackedPointers_={},this.targetPointers=[]}handleEvent(t){if(!t.originalEvent)return!0;let e=!1;if(this.updateTrackedPointers_(t),this.handlingDownUpSequence_){if(t.type==Ns.POINTERDRAG)this.handleDragEvent(t),t.originalEvent.preventDefault();else if(t.type==Ns.POINTERUP){const e=this.handleUpEvent(t);this.handlingDownUpSequence_=e}}else if(t.type==Ns.POINTERDOWN)if(this.handlingDoubleDownSequence_){this.handlingDoubleDownSequence_=!1;const i=this.handleDownEvent(t);this.handlingDownUpSequence_=i,e=this.stopDown(i)}else e=this.stopDown(!1),this.waitForDblTap_();return!e}handleDragEvent(t){let e=1;const i=this.targetPointers[0],n=this.down_.originalEvent,r=i.clientY-n.clientY;void 0!==this.lastDistance_&&(e=1-(this.lastDistance_-r)*this.scaleDeltaByPixel_),this.lastDistance_=r,1!=e&&(this.lastScaleDelta_=e);const s=t.map,o=s.getView();s.render(),o.adjustResolutionInternal(e)}handleDownEvent(t){if(1==this.targetPointers.length){const e=t.map;return this.anchor_=null,this.lastDistance_=void 0,this.lastScaleDelta_=1,this.down_=t,this.handlingDownUpSequence_||e.getView().beginInteraction(),!0}return!1}handleUpEvent(t){if(0==this.targetPointers.length){const e=t.map.getView(),i=this.lastScaleDelta_>1?1:-1;return e.endInteraction(this.duration_,i),this.handlingDownUpSequence_=!1,this.handlingDoubleDownSequence_=!1,!1}return!0}stopDown(t){return t}updateTrackedPointers_(t){if(function(t){const e=t.type;return e===Ns.POINTERDOWN||e===Ns.POINTERDRAG||e===Ns.POINTERUP}(t)){const e=t.originalEvent,i=e.pointerId.toString();t.type==Ns.POINTERUP?delete this.trackedPointers_[i]:(t.type==Ns.POINTERDOWN||i in this.trackedPointers_)&&(this.trackedPointers_[i]=e),this.targetPointers=Object.values(this.trackedPointers_)}}waitForDblTap_(){void 0!==this.doubleTapTimeoutId_?(clearTimeout(this.doubleTapTimeoutId_),this.doubleTapTimeoutId_=void 0):(this.handlingDoubleDownSequence_=!0,this.doubleTapTimeoutId_=setTimeout(this.endInteraction_.bind(this),250))}endInteraction_(){this.handlingDoubleDownSequence_=!1,this.doubleTapTimeoutId_=void 0}},Yb.interaction.DoubleClickZoom=Xo,Yb.interaction.DragAndDrop=class extends Uo{constructor(t){t=t||{},super({handleEvent:C}),this.on,this.once,this.un,this.readAsBuffer_=!1,this.formats_=[];const e=t.formatConstructors?t.formatConstructors:[];for(let t=0,i=e.length;t<i;++t){let i=e[t];"function"==typeof i&&(i=new i),this.formats_.push(i),this.readAsBuffer_=this.readAsBuffer_||"arraybuffer"===i.getType()}this.projection_=t.projection?vn(t.projection):null,this.dropListenKeys_=null,this.source_=t.source||null,this.target=t.target?t.target:null}handleResult_(t,e){const i=e.target.result,n=this.getMap();let r,s=this.projection_;if(!s&&(s=Nn(),!s)){s=n.getView().getProjection()}const o=this.formats_;for(let e=0,n=o.length;e<n;++e){const n=o[e];let a=i;this.readAsBuffer_&&"arraybuffer"!==n.getType()&&(void 0===r&&(r=(new TextDecoder).decode(i)),a=r);const l=this.tryReadFeatures_(n,a,{featureProjection:s});if(l&&l.length>0){this.source_&&(this.source_.clear(),this.source_.addFeatures(l)),this.dispatchEvent(new xx(yx,t,l,s));break}}}registerListeners_(){const t=this.getMap();if(t){const e=this.target?this.target:t.getViewport();this.dropListenKeys_=[D(e,c,this.handleDrop,this),D(e,l,this.handleStop,this),D(e,h,this.handleStop,this),D(e,c,this.handleStop,this)]}}setActive(t){!this.getActive()&&t&&this.registerListeners_(),this.getActive()&&!t&&this.unregisterListeners_(),super.setActive(t)}setMap(t){this.unregisterListeners_(),super.setMap(t),this.getActive()&&this.registerListeners_()}tryReadFeatures_(t,e,i){try{return t.readFeatures(e,i)}catch{return null}}unregisterListeners_(){this.dropListenKeys_&&(this.dropListenKeys_.forEach(k),this.dropListenKeys_=null)}handleDrop(t){const e=t.dataTransfer.files;for(let t=0,i=e.length;t<i;++t){const i=e.item(t),n=new FileReader;n.addEventListener(g,this.handleResult_.bind(this,i)),this.readAsBuffer_?n.readAsArrayBuffer(i):n.readAsText(i)}}handleStop(t){t.stopPropagation(),t.preventDefault(),t.dataTransfer.dropEffect="copy"}},Yb.interaction.DragAndDrop.DragAndDropEvent=xx,Yb.interaction.DragBox=pa,Yb.interaction.DragBox.DragBoxEvent=fa,Yb.interaction.DragPan=aa,Yb.interaction.DragRotate=la,Yb.interaction.DragRotateAndZoom=class extends sa{constructor(t){super(t=t||{}),this.condition_=t.condition?t.condition:ea,this.lastAngle_=void 0,this.lastMagnitude_=void 0,this.lastScaleDelta_=0,this.duration_=void 0!==t.duration?t.duration:400}handleDragEvent(t){if(!na(t))return;const e=t.map,i=e.getSize(),n=t.pixel,r=n[0]-i[0]/2,s=i[1]/2-n[1],o=Math.atan2(s,r),a=Math.sqrt(r*r+s*s),l=e.getView();if(void 0!==this.lastAngle_){const t=this.lastAngle_-o;l.adjustRotationInternal(t)}this.lastAngle_=o,void 0!==this.lastMagnitude_&&l.adjustResolutionInternal(this.lastMagnitude_/a),void 0!==this.lastMagnitude_&&(this.lastScaleDelta_=this.lastMagnitude_/a),this.lastMagnitude_=a}handleUpEvent(t){if(!na(t))return!0;const e=t.map.getView(),i=this.lastScaleDelta_>1?1:-1;return e.endInteraction(this.duration_,i),this.lastScaleDelta_=0,!1}handleDownEvent(t){return!!na(t)&&(!!this.condition_(t)&&(t.map.getView().beginInteraction(),this.lastAngle_=void 0,this.lastMagnitude_=void 0,!0))}},Yb.interaction.DragZoom=ma,Yb.interaction.Draw=class extends sa{constructor(t){const e=t;e.stopDown||(e.stopDown=R),super(e),this.on,this.once,this.un,this.shouldHandle_=!1,this.downPx_=null,this.downTimeout_,this.lastDragTime_,this.pointerType_,this.freehand_=!1,this.source_=t.source?t.source:null,this.features_=t.features?t.features:null,this.snapTolerance_=t.snapTolerance?t.snapTolerance:12,this.type_=t.type,this.mode_=function(t){switch(t){case"Point":case"MultiPoint":return"Point";case"LineString":case"MultiLineString":return"LineString";case"Polygon":case"MultiPolygon":return"Polygon";case"Circle":return"Circle";default:throw new Error("Invalid type: "+t)}}(this.type_),this.stopClick_=!!t.stopClick,this.minPoints_=t.minPoints?t.minPoints:"Polygon"===this.mode_?3:2,this.maxPoints_="Circle"===this.mode_?2:t.maxPoints?t.maxPoints:1/0,this.finishCondition_=t.finishCondition?t.finishCondition:C,this.geometryLayout_=t.geometryLayout?t.geometryLayout:"XY";let i=t.geometryFunction;if(!i){const t=this.mode_;if("Circle"===t)i=(t,e,i)=>{const n=e||new _d([NaN,NaN]),r=Gn(t[0],i),s=ei(r,Gn(t[t.length-1],i));n.setCenterAndRadius(r,Math.sqrt(s),this.geometryLayout_);const o=Nn();return o&&n.transform(i,o),n};else{let e;"Point"===t?e=zr:"LineString"===t?e=Ed:"Polygon"===t&&(e=ls),i=(i,n,r)=>(n?"Polygon"===t?i[0].length?n.setCoordinates([i[0].concat([i[0][0]])],this.geometryLayout_):n.setCoordinates([],this.geometryLayout_):n.setCoordinates(i,this.geometryLayout_):n=new e(i,this.geometryLayout_),n)}}this.geometryFunction_=i,this.dragVertexDelay_=void 0!==t.dragVertexDelay?t.dragVertexDelay:500,this.finishCoordinate_=null,this.sketchFeature_=null,this.sketchPoint_=null,this.sketchCoords_=null,this.sketchLine_=null,this.sketchLineCoords_=null,this.squaredClickTolerance_=t.clickTolerance?t.clickTolerance*t.clickTolerance:36,this.overlay_=new hx({source:new kd({useSpatialIndex:!1,wrapX:!!t.wrapX&&t.wrapX}),style:t.style?t.style:Ax(),updateWhileInteracting:!0}),this.geometryName_=t.geometryName,this.condition_=t.condition?t.condition:Qo,this.freehandCondition_,t.freehand?this.freehandCondition_=Ho:this.freehandCondition_=t.freehandCondition?t.freehandCondition:ea,this.traceCondition_,this.setTrace(t.trace||!1),this.traceState_={active:!1},this.traceSource_=t.traceSource||t.source||null,this.addChangeListener(jo,this.updateState_)}setTrace(t){let e;e=t?!0===t?Ho:t:qo,this.traceCondition_=e}setMap(t){super.setMap(t),this.updateState_()}getOverlay(){return this.overlay_}handleEvent(t){t.originalEvent.type===s&&t.originalEvent.preventDefault(),this.freehand_="Point"!==this.mode_&&this.freehandCondition_(t);let e=t.type===Ns.POINTERMOVE,i=!0;if(!this.freehand_&&this.lastDragTime_&&t.type===Ns.POINTERDRAG){Date.now()-this.lastDragTime_>=this.dragVertexDelay_?(this.downPx_=t.pixel,this.shouldHandle_=!this.freehand_,e=!0):this.lastDragTime_=void 0,this.shouldHandle_&&void 0!==this.downTimeout_&&(clearTimeout(this.downTimeout_),this.downTimeout_=void 0)}return this.freehand_&&t.type===Ns.POINTERDRAG&&null!==this.sketchFeature_?(this.addToDrawing_(t.coordinate),i=!1):this.freehand_&&t.type===Ns.POINTERDOWN?i=!1:e&&this.getPointerCount()<2?(i=t.type===Ns.POINTERMOVE,i&&this.freehand_?(this.handlePointerMove_(t),this.shouldHandle_&&t.originalEvent.preventDefault()):("mouse"===t.originalEvent.pointerType||t.type===Ns.POINTERDRAG&&void 0===this.downTimeout_)&&this.handlePointerMove_(t)):t.type===Ns.DBLCLICK&&(i=!1),super.handleEvent(t)&&i}handleDownEvent(t){return this.shouldHandle_=!this.freehand_,this.freehand_?(this.downPx_=t.pixel,this.finishCoordinate_||this.startDrawing_(t.coordinate),!0):this.condition_(t)?(this.lastDragTime_=Date.now(),this.downTimeout_=setTimeout((()=>{this.handlePointerMove_(new Ds(Ns.POINTERMOVE,t.map,t.originalEvent,!1,t.frameState))}),this.dragVertexDelay_),this.downPx_=t.pixel,!0):(this.lastDragTime_=void 0,!1)}deactivateTrace_(){this.traceState_={active:!1}}toggleTraceState_(t){if(!this.traceSource_||!this.traceCondition_(t))return;if(this.traceState_.active)return void this.deactivateTrace_();const e=this.getMap(),i=Dt([e.getCoordinateFromPixel([t.pixel[0]-this.snapTolerance_,t.pixel[1]+this.snapTolerance_]),e.getCoordinateFromPixel([t.pixel[0]+this.snapTolerance_,t.pixel[1]-this.snapTolerance_])]),n=this.traceSource_.getFeaturesInExtent(i);if(0===n.length)return;const r=function(t,e){const i=[];for(let n=0;n<e.length;++n)bx(t,e[n].getGeometry(),i);return i}(t.coordinate,n);r.length&&(this.traceState_={active:!0,startPx:t.pixel.slice(),targets:r,targetIndex:-1})}addOrRemoveTracedCoordinates_(t,e){const i=t.startIndex<=t.endIndex;i===t.startIndex<=e?i&&e>t.endIndex||!i&&e<t.endIndex?this.addTracedCoordinates_(t,t.endIndex,e):(i&&e<t.endIndex||!i&&e>t.endIndex)&&this.removeTracedCoordinates_(e,t.endIndex):(this.removeTracedCoordinates_(t.startIndex,t.endIndex),this.addTracedCoordinates_(t,t.startIndex,e))}removeTracedCoordinates_(t,e){if(t===e)return;let i=0;if(t<e){const n=Math.ceil(t);let r=Math.floor(e);r===e&&(r-=1),i=r-n+1}else{const n=Math.floor(t);let r=Math.ceil(e);r===e&&(r+=1),i=n-r+1}i>0&&this.removeLastPoints_(i)}addTracedCoordinates_(t,e,i){if(e===i)return;const n=[];if(e<i){const r=Math.ceil(e);let s=Math.floor(i);s===i&&(s-=1);for(let e=r;e<=s;++e)n.push(Cx(t.coordinates,e))}else{const r=Math.floor(e);let s=Math.ceil(i);s===i&&(s+=1);for(let e=r;e>=s;--e)n.push(Cx(t.coordinates,e))}n.length&&this.appendCoordinates(n)}updateTrace_(t){const e=this.traceState_;if(!e.active)return;if(-1===e.targetIndex&&ii(e.startPx,t.pixel)<this.snapTolerance_)return;const i=function(t,e,i,n){const r=t[0],s=t[1];let o=1/0,a=-1,l=NaN;for(let t=0;t<e.targets.length;++t){const i=e.targets[t],n=i.coordinates;let h,c=1/0;for(let t=0;t<n.length-1;++t){const e=Fx(r,s,n[t],n[t+1]);e.squaredDistance<c&&(c=e.squaredDistance,h=t+e.along)}c<o&&(o=c,i.ring&&e.targetIndex===t&&(i.endIndex>i.startIndex?h<i.startIndex&&(h+=n.length):i.endIndex<i.startIndex&&h>i.startIndex&&(h-=n.length)),l=h,a=t)}const h=e.targets[a];let c=h.ring;if(e.targetIndex===a&&c){const t=Mx(h.coordinates,l);ii(i.getPixelFromCoordinate(t),e.startPx)>n&&(c=!1)}if(c){const t=h.coordinates,e=t.length,i=h.startIndex,n=l;if(i<n){const r=Rx(t,i,n);Rx(t,i,n-e)<r&&(l-=e)}else{const r=Rx(t,i,n);Rx(t,i,n+e)<r&&(l+=e)}}return Px.index=a,Px.endIndex=l,Px}(t.coordinate,e,this.getMap(),this.snapTolerance_);if(e.targetIndex!==i.index){if(-1!==e.targetIndex){const t=e.targets[e.targetIndex];this.removeTracedCoordinates_(t.startIndex,t.endIndex)}const t=e.targets[i.index];this.addTracedCoordinates_(t,t.startIndex,i.endIndex)}else{const t=e.targets[e.targetIndex];this.addOrRemoveTracedCoordinates_(t,i.endIndex)}e.targetIndex=i.index;const n=e.targets[e.targetIndex];n.endIndex=i.endIndex;const r=Mx(n.coordinates,n.endIndex),s=this.getMap().getPixelFromCoordinate(r);t.coordinate=r,t.pixel=[Math.round(s[0]),Math.round(s[1])]}handleUpEvent(t){let e=!0;if(0===this.getPointerCount()){this.downTimeout_&&(clearTimeout(this.downTimeout_),this.downTimeout_=void 0),this.handlePointerMove_(t);const i=this.traceState_.active;if(this.toggleTraceState_(t),this.shouldHandle_){const n=!this.finishCoordinate_;n&&this.startDrawing_(t.coordinate),!n&&this.freehand_?this.finishDrawing():this.freehand_||n&&"Point"!==this.mode_||(this.atFinish_(t.pixel,i)?this.finishCondition_(t)&&this.finishDrawing():this.addToDrawing_(t.coordinate)),e=!1}else this.freehand_&&this.abortDrawing()}return!e&&this.stopClick_&&t.preventDefault(),e}handlePointerMove_(t){if(this.pointerType_=t.originalEvent.pointerType,this.downPx_&&(!this.freehand_&&this.shouldHandle_||this.freehand_&&!this.shouldHandle_)){const e=this.downPx_,i=t.pixel,n=e[0]-i[0],r=e[1]-i[1],s=n*n+r*r;if(this.shouldHandle_=this.freehand_?s>this.squaredClickTolerance_:s<=this.squaredClickTolerance_,!this.shouldHandle_)return}this.finishCoordinate_?(this.updateTrace_(t),this.modifyDrawing_(t.coordinate)):this.createOrUpdateSketchPoint_(t.coordinate.slice())}atFinish_(t,e){let i=!1;if(this.sketchFeature_){let n=!1,r=[this.finishCoordinate_];const s=this.mode_;if("Point"===s)i=!0;else if("Circle"===s)i=2===this.sketchCoords_.length;else if("LineString"===s)n=!e&&this.sketchCoords_.length>this.minPoints_;else if("Polygon"===s){const t=this.sketchCoords_;n=t[0].length>this.minPoints_,r=[t[0][0],t[0][t[0].length-2]],r=e?[t[0][0]]:[t[0][0],t[0][t[0].length-2]]}if(n){const e=this.getMap();for(let n=0,s=r.length;n<s;n++){const s=r[n],o=e.getPixelFromCoordinate(s),a=t[0]-o[0],l=t[1]-o[1],h=this.freehand_?1:this.snapTolerance_;if(i=Math.sqrt(a*a+l*l)<=h,i){this.finishCoordinate_=s;break}}}}return i}createOrUpdateSketchPoint_(t){if(this.sketchPoint_){this.sketchPoint_.getGeometry().setCoordinates(t)}else this.sketchPoint_=new Mt(new zr(t)),this.updateSketchFeatures_()}createOrUpdateCustomSketchLine_(t){this.sketchLine_||(this.sketchLine_=new Mt);const e=t.getLinearRing(0);let i=this.sketchLine_.getGeometry();i?(i.setFlatCoordinates(e.getLayout(),e.getFlatCoordinates()),i.changed()):(i=new Ed(e.getFlatCoordinates(),e.getLayout()),this.sketchLine_.setGeometry(i))}startDrawing_(t){const e=this.getMap().getView().getProjection(),i=pr(this.geometryLayout_);for(;t.length<i;)t.push(0);this.finishCoordinate_=t,"Point"===this.mode_?this.sketchCoords_=t.slice():"Polygon"===this.mode_?(this.sketchCoords_=[[t.slice(),t.slice()]],this.sketchLineCoords_=this.sketchCoords_[0]):this.sketchCoords_=[t.slice(),t.slice()],this.sketchLineCoords_&&(this.sketchLine_=new Mt(new Ed(this.sketchLineCoords_)));const n=this.geometryFunction_(this.sketchCoords_,void 0,e);this.sketchFeature_=new Mt,this.geometryName_&&this.sketchFeature_.setGeometryName(this.geometryName_),this.sketchFeature_.setGeometry(n),this.updateSketchFeatures_(),this.dispatchEvent(new wx(vx,this.sketchFeature_))}modifyDrawing_(t){const e=this.getMap(),i=this.sketchFeature_.getGeometry(),n=e.getView().getProjection(),r=pr(this.geometryLayout_);let s,o;for(;t.length<r;)t.push(0);if("Point"===this.mode_?o=this.sketchCoords_:"Polygon"===this.mode_?(s=this.sketchCoords_[0],o=s[s.length-1],this.atFinish_(e.getPixelFromCoordinate(t))&&(t=this.finishCoordinate_.slice())):(s=this.sketchCoords_,o=s[s.length-1]),o[0]=t[0],o[1]=t[1],this.geometryFunction_(this.sketchCoords_,i,n),this.sketchPoint_){this.sketchPoint_.getGeometry().setCoordinates(t)}if("Polygon"===i.getType()&&"Polygon"!==this.mode_)this.createOrUpdateCustomSketchLine_(i);else if(this.sketchLineCoords_){this.sketchLine_.getGeometry().setCoordinates(this.sketchLineCoords_)}this.updateSketchFeatures_()}addToDrawing_(t){const e=this.sketchFeature_.getGeometry(),i=this.getMap().getView().getProjection();let n,r;const s=this.mode_;return"LineString"===s||"Circle"===s?(this.finishCoordinate_=t.slice(),r=this.sketchCoords_,r.length>=this.maxPoints_&&(this.freehand_?r.pop():n=!0),r.push(t.slice()),this.geometryFunction_(r,e,i)):"Polygon"===s&&(r=this.sketchCoords_[0],r.length>=this.maxPoints_&&(this.freehand_?r.pop():n=!0),r.push(t.slice()),n&&(this.finishCoordinate_=r[0]),this.geometryFunction_(this.sketchCoords_,e,i)),this.createOrUpdateSketchPoint_(t.slice()),this.updateSketchFeatures_(),n?this.finishDrawing():this.sketchFeature_}removeLastPoints_(t){if(!this.sketchFeature_)return;const e=this.sketchFeature_.getGeometry(),i=this.getMap().getView().getProjection(),n=this.mode_;for(let r=0;r<t;++r){let t;if("LineString"===n||"Circle"===n){if(t=this.sketchCoords_,t.splice(-2,1),t.length>=2){this.finishCoordinate_=t[t.length-2].slice();const e=this.finishCoordinate_.slice();t[t.length-1]=e,this.createOrUpdateSketchPoint_(e)}this.geometryFunction_(t,e,i),"Polygon"===e.getType()&&this.sketchLine_&&this.createOrUpdateCustomSketchLine_(e)}else if("Polygon"===n){t=this.sketchCoords_[0],t.splice(-2,1);const n=this.sketchLine_.getGeometry();if(t.length>=2){const e=t[t.length-2].slice();t[t.length-1]=e,this.createOrUpdateSketchPoint_(e)}n.setCoordinates(t),this.geometryFunction_(this.sketchCoords_,e,i)}if(1===t.length){this.abortDrawing();break}}this.updateSketchFeatures_()}removeLastPoint(){this.removeLastPoints_(1)}finishDrawing(){const t=this.abortDrawing_();if(!t)return null;let e=this.sketchCoords_;const i=t.getGeometry(),n=this.getMap().getView().getProjection();return"LineString"===this.mode_?(e.pop(),this.geometryFunction_(e,i,n)):"Polygon"===this.mode_&&(e[0].pop(),this.geometryFunction_(e,i,n),e=i.getCoordinates()),"MultiPoint"===this.type_?t.setGeometry(new wd([e])):"MultiLineString"===this.type_?t.setGeometry(new Sd([e])):"MultiPolygon"===this.type_&&t.setGeometry(new Td([e])),this.dispatchEvent(new wx(Ex,t)),this.features_&&this.features_.push(t),this.source_&&this.source_.addFeature(t),t}abortDrawing_(){this.finishCoordinate_=null;const t=this.sketchFeature_;return this.sketchFeature_=null,this.sketchPoint_=null,this.sketchLine_=null,this.overlay_.getSource().clear(!0),this.deactivateTrace_(),t}abortDrawing(){const t=this.abortDrawing_();t&&this.dispatchEvent(new wx(Sx,t))}appendCoordinates(t){const e=this.mode_,i=!this.sketchFeature_;let n;if(i&&this.startDrawing_(t[0]),"LineString"===e||"Circle"===e)n=this.sketchCoords_;else{if("Polygon"!==e)return;n=this.sketchCoords_&&this.sketchCoords_.length?this.sketchCoords_[0]:[]}i&&n.shift(),n.pop();for(let e=0;e<t.length;e++)this.addToDrawing_(t[e]);const r=t[t.length-1];this.sketchFeature_=this.addToDrawing_(r),this.modifyDrawing_(r)}extend(t){const e=t.getGeometry();this.sketchFeature_=t,this.sketchCoords_=e.getCoordinates();const i=this.sketchCoords_[this.sketchCoords_.length-1];this.finishCoordinate_=i.slice(),this.sketchCoords_.push(i.slice()),this.sketchPoint_=new Mt(new zr(i)),this.updateSketchFeatures_(),this.dispatchEvent(new wx(vx,this.sketchFeature_))}updateSketchFeatures_(){const t=[];this.sketchFeature_&&t.push(this.sketchFeature_),this.sketchLine_&&t.push(this.sketchLine_),this.sketchPoint_&&t.push(this.sketchPoint_);const e=this.overlay_.getSource();e.clear(!0),e.addFeatures(t)}updateState_(){const t=this.getMap(),e=this.getActive();t&&e||this.abortDrawing(),this.overlay_.setMap(e?t:null)}},Yb.interaction.Draw.DrawEvent=wx,Yb.interaction.Draw.createBox=function(){return function(t,e,i){const n=Dt([t[0],t[t.length-1]].map((function(t){return Gn(t,i)}))),r=[[re(n),se(n),ge(n),de(n),re(n)]];e?e.setCoordinates(r):e=new ls(r);const s=Nn();return s&&e.transform(i,s),e}},Yb.interaction.Draw.createRegularPolygon=function(t,e){return function(i,n,r){const s=Gn(i[0],r),o=Gn(i[i.length-1],r),a=Math.sqrt(ei(s,o));n=n||us(new _d(s),t);let l=e;if(!e&&0!==e){const t=o[0]-s[0],e=o[1]-s[1];l=Math.atan2(e,t)}ds(n,s,a,l);const h=Nn();return h&&n.transform(r,h),n}},Yb.interaction.Extent=class extends sa{constructor(t){super(t=t||{}),this.on,this.once,this.un,this.condition_=t.condition?t.condition:Ho,this.extent_=null,this.pointerHandler_=null,this.pixelTolerance_=void 0!==t.pixelTolerance?t.pixelTolerance:10,this.snappedToVertex_=!1,this.extentFeature_=null,this.vertexFeature_=null,t||(t={}),this.extentOverlay_=new hx({source:new kd({useSpatialIndex:!1,wrapX:!!t.wrapX}),style:t.boxStyle?t.boxStyle:Nx(),updateWhileAnimating:!0,updateWhileInteracting:!0}),this.vertexOverlay_=new hx({source:new kd({useSpatialIndex:!1,wrapX:!!t.wrapX}),style:t.pointerStyle?t.pointerStyle:kx(),updateWhileAnimating:!0,updateWhileInteracting:!0}),t.extent&&this.setExtent(t.extent)}snapToVertex_(t,e){const i=e.getCoordinateFromPixelInternal(t),n=function(t,e){return ni(i,t)-ni(i,e)},r=this.getExtentInternal();if(r){const s=function(t){return[[[t[0],t[1]],[t[0],t[3]]],[[t[0],t[3]],[t[2],t[3]]],[[t[2],t[3]],[t[2],t[1]]],[[t[2],t[1]],[t[0],t[1]]]]}(r);s.sort(n);const o=s[0];let a=He(i,o);const l=e.getPixelFromCoordinateInternal(a);if(ii(t,l)<=this.pixelTolerance_){const t=e.getPixelFromCoordinateInternal(o[0]),i=e.getPixelFromCoordinateInternal(o[1]),n=ei(l,t),r=ei(l,i),s=Math.sqrt(Math.min(n,r));return this.snappedToVertex_=s<=this.pixelTolerance_,this.snappedToVertex_&&(a=n>r?o[1]:o[0]),a}}return null}handlePointerMove_(t){const e=t.pixel,i=t.map;let n=this.snapToVertex_(e,i);n||(n=i.getCoordinateFromPixelInternal(e)),this.createOrUpdatePointerFeature_(n)}createOrUpdateExtentFeature_(t){let e=this.extentFeature_;return e?t?e.setGeometry(cs(t)):e.setGeometry(void 0):(e=new Mt(t?cs(t):{}),this.extentFeature_=e,this.extentOverlay_.getSource().addFeature(e)),e}createOrUpdatePointerFeature_(t){let e=this.vertexFeature_;if(e){e.getGeometry().setCoordinates(t)}else e=new Mt(new zr(t)),this.vertexFeature_=e,this.vertexOverlay_.getSource().addFeature(e);return e}handleEvent(t){return!t.originalEvent||!this.condition_(t)||(t.type!=Ns.POINTERMOVE||this.handlingDownUpSequence||this.handlePointerMove_(t),super.handleEvent(t),!1)}handleDownEvent(t){const e=t.pixel,i=t.map,n=this.getExtentInternal();let r=this.snapToVertex_(e,i);const s=function(t){let e=null,i=null;return t[0]==n[0]?e=n[2]:t[0]==n[2]&&(e=n[0]),t[1]==n[1]?i=n[3]:t[1]==n[3]&&(i=n[1]),null!==e&&null!==i?[e,i]:null};if(r&&n){const t=r[0]==n[0]||r[0]==n[2]?r[0]:null,e=r[1]==n[1]||r[1]==n[3]?r[1]:null;null!==t&&null!==e?this.pointerHandler_=Gx(s(r)):null!==t?this.pointerHandler_=jx(s([t,n[1]]),s([t,n[3]])):null!==e&&(this.pointerHandler_=jx(s([n[0],e]),s([n[2],e])))}else r=i.getCoordinateFromPixelInternal(e),this.setExtent([r[0],r[1],r[0],r[1]]),this.pointerHandler_=Gx(r);return!0}handleDragEvent(t){if(this.pointerHandler_){const e=t.coordinate;this.setExtent(this.pointerHandler_(e)),this.createOrUpdatePointerFeature_(e)}}handleUpEvent(t){this.pointerHandler_=null;const e=this.getExtentInternal();return e&&0!==ne(e)||this.setExtent(null),!1}setMap(t){this.extentOverlay_.setMap(t),this.vertexOverlay_.setMap(t),super.setMap(t)}getExtent(){return jn(this.getExtentInternal(),this.getMap().getView().getProjection())}getExtentInternal(){return this.extent_}setExtent(t){this.extent_=t||null,this.createOrUpdateExtentFeature_(t),this.dispatchEvent(new Dx(this.extent_))}},Yb.interaction.Extent.ExtentEvent=Dx,Yb.interaction.Interaction=Uo,Yb.interaction.Interaction.pan=Bo,Yb.interaction.Interaction.zoomByDelta=zo,Yb.interaction.KeyboardPan=Ea,Yb.interaction.KeyboardZoom=Sa,Yb.interaction.Link=class extends Uo{constructor(t){let e;super(),e=!0===(t=Object.assign({animate:!0,params:["x","y","z","r","l"],replace:!1,prefix:""},t||{})).animate?{duration:250}:t.animate?t.animate:null,this.animationOptions_=e,this.params_=t.params.reduce(((t,e)=>(t[e]=!0,t)),{}),this.replace_=t.replace,this.prefix_=t.prefix,this.listenerKeys_=[],this.initial_=!0,this.updateState_=this.updateState_.bind(this),this.trackedCallbacks_={},this.trackedValues_={}}getParamName_(t){return this.prefix_?this.prefix_+t:t}get_(t,e){return t.get(this.getParamName_(e))}set_(t,e,i){e in this.params_&&t.set(this.getParamName_(e),i)}delete_(t,e){e in this.params_&&t.delete(this.getParamName_(e))}setMap(t){const e=this.getMap();super.setMap(t),t!==e&&(e&&this.unregisterListeners_(e),t&&(this.initial_=!0,this.updateState_(),this.registerListeners_(t)))}registerListeners_(t){this.listenerKeys_.push(D(t,Vs,this.updateUrl_,this),D(t.getLayerGroup(),n,this.updateUrl_,this),D(t,"change:layergroup",this.handleChangeLayerGroup_,this)),this.replace_||addEventListener("popstate",this.updateState_)}unregisterListeners_(t){for(let t=0,e=this.listenerKeys_.length;t<e;++t)k(this.listenerKeys_[t]);this.listenerKeys_.length=0,this.replace_||removeEventListener("popstate",this.updateState_);const e=new URL(window.location.href),i=e.searchParams;this.delete_(i,"x"),this.delete_(i,"y"),this.delete_(i,"z"),this.delete_(i,"r"),this.delete_(i,"l"),window.history.replaceState(null,"",e)}handleChangeLayerGroup_(){const t=this.getMap();t&&(this.unregisterListeners_(t),this.registerListeners_(t),this.initial_=!0,this.updateUrl_())}updateState_(){const t=new URL(window.location.href).searchParams;for(const e in this.trackedCallbacks_){const i=t.get(e);e in this.trackedCallbacks_&&i!==this.trackedValues_[e]&&(this.trackedValues_[e]=i,this.trackedCallbacks_[e](i))}const e=this.getMap();if(!e)return;const i=e.getView();if(!i)return;let n=!1;const r={},s=Ux(this.get_(t,"z"));"z"in this.params_&&zx(s,i.getZoom())&&(n=!0,r.zoom=s);const o=Ux(this.get_(t,"r"));"r"in this.params_&&zx(o,i.getRotation())&&(n=!0,r.rotation=o);const a=[Ux(this.get_(t,"x")),Ux(this.get_(t,"y"))];var l,h;("x"in this.params_||"y"in this.params_)&&(l=a,h=i.getCenter(),zx(l[0],h[0])||zx(l[1],h[1]))&&(n=!0,r.center=a),n&&(!this.initial_&&this.animationOptions_?i.animate(Object.assign(r,this.animationOptions_)):(r.center&&i.setCenter(r.center),"zoom"in r&&i.setZoom(r.zoom),"rotation"in r&&i.setRotation(r.rotation)));const c=e.getAllLayers(),u=this.get_(t,"l");if("l"in this.params_&&u&&u.length===c.length)for(let t=0,e=c.length;t<e;++t){const e=parseInt(u[t]);if(!isNaN(e)){const i=Boolean(e),n=c[t];n.getVisible()!==i&&n.setVisible(i)}}}track(t,e){this.trackedCallbacks_[t]=e;const i=new URL(window.location.href).searchParams.get(t);return this.trackedValues_[t]=i,i}update(t,e){const i=new URL(window.location.href),n=i.searchParams;null===e?n.delete(t):n.set(t,e),t in this.trackedValues_&&(this.trackedValues_[t]=e),this.updateHistory_(i)}updateUrl_(){const t=this.getMap();if(!t)return;const e=t.getView();if(!e)return;const i=e.getCenter(),n=e.getZoom(),r=e.getRotation(),s=t.getAllLayers(),o=new Array(s.length);for(let t=0,e=s.length;t<e;++t)o[t]=s[t].getVisible()?"1":"0";const a=new URL(window.location.href),l=a.searchParams;this.set_(l,"x",Bx(i[0])),this.set_(l,"y",Bx(i[1])),this.set_(l,"z",Bx(n)),this.set_(l,"r",Bx(r)),this.set_(l,"l",o.join("")),this.updateHistory_(a),this.initial_=!1}updateHistory_(t){t.href!==window.location.href&&(this.initial_||this.replace_?window.history.replaceState(history.state,"",t):window.history.pushState(null,"",t))}},Yb.interaction.Modify=class extends sa{constructor(i){let n;if(super(i),this.on,this.once,this.un,this.boundHandleFeatureChange_=this.handleFeatureChange_.bind(this),this.condition_=i.condition?i.condition:ra,this.defaultDeleteCondition_=function(t){return $o(t)&&Jo(t)},this.deleteCondition_=i.deleteCondition?i.deleteCondition:this.defaultDeleteCondition_,this.insertVertexCondition_=i.insertVertexCondition?i.insertVertexCondition:Ho,this.vertexFeature_=null,this.vertexSegments_=null,this.lastPixel_=[0,0],this.ignoreNextSingleClick_=!1,this.featuresBeingModified_=null,this.rBush_=new Pd,this.pixelTolerance_=void 0!==i.pixelTolerance?i.pixelTolerance:10,this.snappedToVertex_=!1,this.changingFeature_=!1,this.dragSegments_=[],this.overlay_=new hx({source:new kd({useSpatialIndex:!1,wrapX:!!i.wrapX}),style:i.style?i.style:qx(),updateWhileAnimating:!0,updateWhileInteracting:!0}),this.SEGMENT_WRITERS_={Point:this.writePointGeometry_.bind(this),LineString:this.writeLineStringGeometry_.bind(this),LinearRing:this.writeLineStringGeometry_.bind(this),Polygon:this.writePolygonGeometry_.bind(this),MultiPoint:this.writeMultiPointGeometry_.bind(this),MultiLineString:this.writeMultiLineStringGeometry_.bind(this),MultiPolygon:this.writeMultiPolygonGeometry_.bind(this),Circle:this.writeCircleGeometry_.bind(this),GeometryCollection:this.writeGeometryCollectionGeometry_.bind(this)},this.source_=null,this.hitDetection_=null,i.features?n=i.features:i.source&&(this.source_=i.source,n=new Z(this.source_.getFeatures()),this.source_.addEventListener(Id,this.handleSourceAdd_.bind(this)),this.source_.addEventListener(Md,this.handleSourceRemove_.bind(this))),!n)throw new Error("The modify interaction requires features, a source or a layer");i.hitDetection&&(this.hitDetection_=i.hitDetection),this.features_=n,this.features_.forEach(this.addFeature_.bind(this)),this.features_.addEventListener(t,this.handleFeatureAdd_.bind(this)),this.features_.addEventListener(e,this.handleFeatureRemove_.bind(this)),this.lastPointerEvent_=null,this.delta_=[0,0],this.snapToPointer_=void 0===i.snapToPointer?!this.hitDetection_:i.snapToPointer}addFeature_(t){const e=t.getGeometry();if(e){const i=this.SEGMENT_WRITERS_[e.getType()];i&&i(t,e)}const i=this.getMap();i&&i.isRendered()&&this.getActive()&&this.handlePointerAtPixel_(i.getCoordinateFromPixel(this.lastPixel_)),t.addEventListener(n,this.boundHandleFeatureChange_)}willModifyFeatures_(t,e){if(!this.featuresBeingModified_){this.featuresBeingModified_=new Z;const i=this.featuresBeingModified_.getArray();for(let t=0,n=e.length;t<n;++t){const n=e[t].feature;n&&!i.includes(n)&&this.featuresBeingModified_.push(n)}0===this.featuresBeingModified_.getLength()?this.featuresBeingModified_=null:this.dispatchEvent(new Zx($x,this.featuresBeingModified_,t))}}removeFeature_(t){this.removeFeatureSegmentData_(t),this.vertexFeature_&&0===this.features_.getLength()&&(this.overlay_.getSource().removeFeature(this.vertexFeature_),this.vertexFeature_=null),t.removeEventListener(n,this.boundHandleFeatureChange_)}removeFeatureSegmentData_(t){const e=this.rBush_,i=[];e.forEach((function(e){t===e.feature&&i.push(e)}));for(let t=i.length-1;t>=0;--t){const n=i[t];for(let t=this.dragSegments_.length-1;t>=0;--t)this.dragSegments_[t][0]===n&&this.dragSegments_.splice(t,1);e.remove(n)}}setActive(t){this.vertexFeature_&&!t&&(this.overlay_.getSource().removeFeature(this.vertexFeature_),this.vertexFeature_=null),super.setActive(t)}setMap(t){this.overlay_.setMap(t),super.setMap(t)}getOverlay(){return this.overlay_}handleSourceAdd_(t){t.feature&&this.features_.push(t.feature)}handleSourceRemove_(t){t.feature&&this.features_.remove(t.feature)}handleFeatureAdd_(t){this.addFeature_(t.element)}handleFeatureChange_(t){if(!this.changingFeature_){const e=t.target;this.removeFeature_(e),this.addFeature_(e)}}handleFeatureRemove_(t){this.removeFeature_(t.element)}writePointGeometry_(t,e){const i=e.getCoordinates(),n={feature:t,geometry:e,segment:[i,i]};this.rBush_.insert(e.getExtent(),n)}writeMultiPointGeometry_(t,e){const i=e.getCoordinates();for(let n=0,r=i.length;n<r;++n){const r=i[n],s={feature:t,geometry:e,depth:[n],index:n,segment:[r,r]};this.rBush_.insert(e.getExtent(),s)}}writeLineStringGeometry_(t,e){const i=e.getCoordinates();for(let n=0,r=i.length-1;n<r;++n){const r=i.slice(n,n+2),s={feature:t,geometry:e,index:n,segment:r};this.rBush_.insert(Dt(r),s)}}writeMultiLineStringGeometry_(t,e){const i=e.getCoordinates();for(let n=0,r=i.length;n<r;++n){const r=i[n];for(let i=0,s=r.length-1;i<s;++i){const s=r.slice(i,i+2),o={feature:t,geometry:e,depth:[n],index:i,segment:s};this.rBush_.insert(Dt(s),o)}}}writePolygonGeometry_(t,e){const i=e.getCoordinates();for(let n=0,r=i.length;n<r;++n){const r=i[n];for(let i=0,s=r.length-1;i<s;++i){const s=r.slice(i,i+2),o={feature:t,geometry:e,depth:[n],index:i,segment:s};this.rBush_.insert(Dt(s),o)}}}writeMultiPolygonGeometry_(t,e){const i=e.getCoordinates();for(let n=0,r=i.length;n<r;++n){const r=i[n];for(let i=0,s=r.length;i<s;++i){const s=r[i];for(let r=0,o=s.length-1;r<o;++r){const o=s.slice(r,r+2),a={feature:t,geometry:e,depth:[i,n],index:r,segment:o};this.rBush_.insert(Dt(o),a)}}}}writeCircleGeometry_(t,e){const i=e.getCenter(),n={feature:t,geometry:e,index:0,segment:[i,i]},r={feature:t,geometry:e,index:1,segment:[i,i]},s=[n,r];n.featureSegments=s,r.featureSegments=s,this.rBush_.insert(Wt(i),n);let o=e;const a=Nn();if(a&&this.getMap()){const t=this.getMap().getView().getProjection();o=o.clone().transform(a,t),o=us(o).transform(t,a)}this.rBush_.insert(o.getExtent(),r)}writeGeometryCollectionGeometry_(t,e){const i=e.getGeometriesArray();for(let e=0;e<i.length;++e){const n=i[e];(0,this.SEGMENT_WRITERS_[n.getType()])(t,n)}}createOrUpdateVertexFeature_(t,e,i,n){let r=this.vertexFeature_;if(r){r.getGeometry().setCoordinates(t)}else r=new Mt(new zr(t)),this.vertexFeature_=r,this.overlay_.getSource().addFeature(r);return r.set("features",e),r.set("geometries",i),r.set("existing",n),r}handleEvent(t){if(!t.originalEvent)return!0;let e;return this.lastPointerEvent_=t,t.map.getView().getInteracting()||t.type!=Ns.POINTERMOVE||this.handlingDownUpSequence||this.handlePointerMove_(t),this.vertexFeature_&&this.deleteCondition_(t)&&(e=!(t.type!=Ns.SINGLECLICK||!this.ignoreNextSingleClick_)||this.removePoint()),t.type==Ns.SINGLECLICK&&(this.ignoreNextSingleClick_=!1),super.handleEvent(t)&&!e}findInsertVerticesAndUpdateDragSegments_(t){this.handlePointerAtPixel_(t),this.dragSegments_.length=0,this.featuresBeingModified_=null;const e=this.vertexFeature_;if(!e)return;const i=this.getMap().getView().getProjection(),n=[],r=e.getGeometry().getCoordinates(),s=Dt([r]),o=this.rBush_.getInExtent(s),a={};o.sort(Yx);for(let e=0,s=o.length;e<s;++e){const s=o[e],l=s.segment;let h=z(s.geometry);const c=s.depth;if(c&&(h+="-"+c.join("-")),a[h]||(a[h]=new Array(2)),"Circle"!==s.geometry.getType()||1!==s.index)if(!Je(l[0],r)||a[h][0])if(!Je(l[1],r)||a[h][1])!(z(l)in this.vertexSegments_)||a[h][0]||a[h][1]||n.push(s);else{if(a[h][0]&&0===a[h][0].index){let t=s.geometry.getCoordinates();switch(s.geometry.getType()){case"LineString":case"MultiLineString":continue;case"MultiPolygon":t=t[c[1]];case"Polygon":if(s.index!==t[c[0]].length-2)continue}}this.dragSegments_.push([s,1]),a[h][1]=s}else this.dragSegments_.push([s,0]),a[h][0]=s;else{Je(Kx(t,s,i),r)&&!a[h][0]&&(this.dragSegments_.push([s,0]),a[h][0]=s)}}return n}handleDragEvent(t){this.ignoreNextSingleClick_=!1,this.willModifyFeatures_(t,this.dragSegments_.map((([t])=>t)));const e=[t.coordinate[0]+this.delta_[0],t.coordinate[1]+this.delta_[1]],i=[],n=[];for(let r=0,s=this.dragSegments_.length;r<s;++r){const s=this.dragSegments_[r],o=s[0],a=o.feature;i.includes(a)||i.push(a);const l=o.geometry;n.includes(l)||n.push(l);const h=o.depth;let c;const u=o.segment,d=s[1];for(;e.length<l.getStride();)e.push(u[d][e.length]);switch(l.getType()){case"Point":c=e,u[0]=e,u[1]=e;break;case"MultiPoint":c=l.getCoordinates(),c[o.index]=e,u[0]=e,u[1]=e;break;case"LineString":c=l.getCoordinates(),c[o.index+d]=e,u[d]=e;break;case"MultiLineString":case"Polygon":c=l.getCoordinates(),c[h[0]][o.index+d]=e,u[d]=e;break;case"MultiPolygon":c=l.getCoordinates(),c[h[1]][h[0]][o.index+d]=e,u[d]=e;break;case"Circle":const i=l;if(u[0]=e,u[1]=e,0===o.index)this.changingFeature_=!0,i.setCenter(e),this.changingFeature_=!1;else{this.changingFeature_=!0;const n=t.map.getView().getProjection();let r=ii(Gn(i.getCenter(),n),Gn(e,n));const s=Nn();if(s){const t=i.clone().transform(s,n);t.setRadius(r),r=t.transform(n,s).getRadius()}i.setRadius(r),this.changingFeature_=!1}}c&&this.setGeometryCoordinates_(l,c)}this.createOrUpdateVertexFeature_(e,i,n,!0)}handleDownEvent(t){if(!this.condition_(t))return!1;const e=t.coordinate,i=this.findInsertVerticesAndUpdateDragSegments_(e);if(i?.length&&this.insertVertexCondition_(t)&&(this.willModifyFeatures_(t,i),this.vertexFeature_)){const t=this.vertexFeature_.getGeometry().getCoordinates();for(let e=i.length-1;e>=0;--e)this.insertVertex_(i[e],t);this.ignoreNextSingleClick_=!0}return!!this.vertexFeature_}handleUpEvent(t){for(let e=this.dragSegments_.length-1;e>=0;--e){const i=this.dragSegments_[e][0],n=i.geometry;if("Circle"===n.getType()){const e=n,r=e.getCenter(),s=i.featureSegments[0],o=i.featureSegments[1];s.segment[0]=r,s.segment[1]=r,o.segment[0]=r,o.segment[1]=r,this.rBush_.update(Wt(r),s);let a=e;const l=Nn();if(l){const e=t.map.getView().getProjection();a=a.clone().transform(l,e),a=us(a).transform(e,l)}this.rBush_.update(a.getExtent(),o)}else this.rBush_.update(Dt(i.segment),i)}return this.featuresBeingModified_&&(this.dispatchEvent(new Zx(Wx,this.featuresBeingModified_,t)),this.featuresBeingModified_=null),!1}handlePointerMove_(t){this.lastPixel_=t.pixel,this.handlePointerAtPixel_(t.coordinate)}handlePointerAtPixel_(t){const e=this.getMap(),i=e.getPixelFromCoordinate(t),n=e.getView().getProjection(),r=function(e,i){return Hx(t,e,n)-Hx(t,i,n)};let s,o;if(this.hitDetection_){const t="object"==typeof this.hitDetection_?t=>t===this.hitDetection_:void 0;e.forEachFeatureAtPixel(i,((t,e,i)=>{i&&"Point"===i.getType()&&(i=new zr(kn(i.getCoordinates(),n)));const r=i||t.getGeometry();if(r&&"Point"===r.getType()&&t instanceof Mt&&this.features_.getArray().includes(t)){o=r;const e=t.getGeometry().getFlatCoordinates().slice(0,2);s=[{feature:t,geometry:o,segment:[e,e]}]}return!0}),{layerFilter:t})}if(!s){const i=jn(Nt(Un(Wt(t,Xx),n),e.getView().getResolution()*this.pixelTolerance_,Xx),n);s=this.rBush_.getInExtent(i)}if(s&&s.length>0){const a=s.sort(r)[0],l=a.segment;let h=Kx(t,a,n);const c=e.getPixelFromCoordinate(h);let u=ii(i,c);if(o||u<=this.pixelTolerance_){const i={};if(i[z(l)]=!0,this.snapToPointer_||(this.delta_[0]=h[0]-t[0],this.delta_[1]=h[1]-t[1]),"Circle"===a.geometry.getType()&&1===a.index)this.snappedToVertex_=!0,this.createOrUpdateVertexFeature_(h,[a.feature],[a.geometry],this.snappedToVertex_);else{const t=e.getPixelFromCoordinate(l[0]),n=e.getPixelFromCoordinate(l[1]),r=ei(c,t),o=ei(c,n);if(u=Math.sqrt(Math.min(r,o)),this.snappedToVertex_=u<=this.pixelTolerance_,!this.snappedToVertex_&&!this.insertVertexCondition_(this.lastPointerEvent_))return void(this.vertexFeature_&&(this.overlay_.getSource().removeFeature(this.vertexFeature_),this.vertexFeature_=null));this.snappedToVertex_&&(h=r>o?l[1]:l[0]),this.createOrUpdateVertexFeature_(h,[a.feature],[a.geometry],this.snappedToVertex_);const d={};d[z(a.geometry)]=!0;for(let t=1,e=s.length;t<e;++t){const e=s[t].segment;if(!(Je(l[0],e[0])&&Je(l[1],e[1])||Je(l[0],e[1])&&Je(l[1],e[0])))break;{const n=z(s[t].geometry);n in d||(d[n]=!0,i[z(e)]=!0)}}}return void(this.vertexSegments_=i)}}this.vertexFeature_&&(this.overlay_.getSource().removeFeature(this.vertexFeature_),this.vertexFeature_=null)}insertVertex_(t,e){const i=t.segment,n=t.feature,r=t.geometry,s=t.depth,o=t.index;let a;for(;e.length<r.getStride();)e.push(0);switch(r.getType()){case"MultiLineString":case"Polygon":a=r.getCoordinates(),a[s[0]].splice(o+1,0,e);break;case"MultiPolygon":a=r.getCoordinates(),a[s[1]][s[0]].splice(o+1,0,e);break;case"LineString":a=r.getCoordinates(),a.splice(o+1,0,e);break;default:return!1}this.setGeometryCoordinates_(r,a);const l=this.rBush_;l.remove(t),this.updateSegmentIndices_(r,o,s,1);const h={segment:[i[0],e],feature:n,geometry:r,depth:s,index:o};l.insert(Dt(h.segment),h),this.dragSegments_.push([h,1]);const c={segment:[e,i[1]],feature:n,geometry:r,depth:s,index:o+1};return l.insert(Dt(c.segment),c),this.dragSegments_.push([c,0]),!0}updatePointer_(t){return t&&this.findInsertVerticesAndUpdateDragSegments_(t),this.vertexFeature_?.getGeometry().getCoordinates()}getPoint(){const t=this.vertexFeature_?.getGeometry().getCoordinates();return t?kn(t,this.getMap().getView().getProjection()):null}canRemovePoint(){if(!this.vertexFeature_)return!1;if(this.vertexFeature_.get("geometries").every((t=>"Circle"===t.getType()||t.getType().endsWith("Point"))))return!1;const t=this.vertexFeature_.getGeometry().getCoordinates();return this.rBush_.getInExtent(Dt([t])).some((({segment:e})=>Je(e[0],t)||Je(e[1],t)))}removePoint(t){if(t&&(t=Gn(t,this.getMap().getView().getProjection()),this.updatePointer_(t)),!this.lastPointerEvent_||this.lastPointerEvent_&&this.lastPointerEvent_.type!=Ns.POINTERDRAG){const t=this.lastPointerEvent_;this.willModifyFeatures_(t,this.dragSegments_.map((([t])=>t)));const e=this.removeVertex_();return this.featuresBeingModified_&&this.dispatchEvent(new Zx(Wx,this.featuresBeingModified_,t)),this.featuresBeingModified_=null,e}return!1}removeVertex_(){const t=this.dragSegments_,e={};let i,n,r,s,o,a,l,h,c,u,d,g=!1;for(o=t.length-1;o>=0;--o)r=t[o],u=r[0],d=z(u.feature),u.depth&&(d+="-"+u.depth.join("-")),d in e||(e[d]={}),0===r[1]?(e[d].right=u,e[d].index=u.index):1==r[1]&&(e[d].left=u,e[d].index=u.index+1);for(d in e){switch(c=e[d].right,l=e[d].left,a=e[d].index,h=a-1,u=void 0!==l?l:c,h<0&&(h=0),s=u.geometry,n=s.getCoordinates(),i=n,g=!1,s.getType()){case"MultiLineString":n[u.depth[0]].length>2&&(n[u.depth[0]].splice(a,1),g=!0);break;case"LineString":n.length>2&&(n.splice(a,1),g=!0);break;case"MultiPolygon":i=i[u.depth[1]];case"Polygon":i=i[u.depth[0]],i.length>4&&(a==i.length-1&&(a=0),i.splice(a,1),g=!0,0===a&&(i.pop(),i.push(i[0]),h=i.length-1))}if(g){this.setGeometryCoordinates_(s,n);const e=[];if(void 0!==l&&(this.rBush_.remove(l),e.push(l.segment[0])),void 0!==c&&(this.rBush_.remove(c),e.push(c.segment[1])),void 0!==l&&void 0!==c){const t={depth:u.depth,feature:u.feature,geometry:u.geometry,index:h,segment:e};this.rBush_.insert(Dt(t.segment),t)}this.updateSegmentIndices_(s,a,u.depth,-1),this.vertexFeature_&&(this.overlay_.getSource().removeFeature(this.vertexFeature_),this.vertexFeature_=null),t.length=0}}return g}canInsertPoint(){if(!this.vertexFeature_)return!1;if(this.vertexFeature_.get("geometries").every((t=>"Circle"===t.getType()||t.getType().endsWith("Point"))))return!1;const t=this.vertexFeature_.getGeometry().getCoordinates();return this.rBush_.getInExtent(Dt([t])).some((({segment:e})=>!(Je(e[0],t)||Je(e[1],t))))}insertPoint(t){const e=t?Gn(t,this.getMap().getView().getProjection()):this.vertexFeature_?.getGeometry().getCoordinates();if(!e)return!1;return this.findInsertVerticesAndUpdateDragSegments_(e).reduce(((t,i)=>t||this.insertVertex_(i,e)),!1)}setGeometryCoordinates_(t,e){this.changingFeature_=!0,t.setCoordinates(e),this.changingFeature_=!1}updateSegmentIndices_(t,e,i,n){this.rBush_.forEachInExtent(t.getExtent(),(function(r){r.geometry===t&&(void 0===i||void 0===r.depth||w(r.depth,i))&&r.index>e&&(r.index+=n)}))}},Yb.interaction.Modify.ModifyEvent=Zx,Yb.interaction.MouseWheelZoom=wa,Yb.interaction.PinchRotate=Ta,Yb.interaction.PinchZoom=Ca,Yb.interaction.Pointer=sa,Yb.interaction.Pointer.centroid=oa,Yb.interaction.Select=ev,Yb.interaction.Select.SelectEvent=Qx,Yb.interaction.Snap=class extends sa{constructor(t){const e=t=t||{};e.handleDownEvent||(e.handleDownEvent=C),e.stopDown||(e.stopDown=R),super(e),this.on,this.once,this.un,this.source_=t.source?t.source:null,this.vertex_=void 0===t.vertex||t.vertex,this.edge_=void 0===t.edge||t.edge,this.features_=t.features?t.features:null,this.featuresListenerKeys_=[],this.featureChangeListenerKeys_={},this.indexedFeaturesExtents_={},this.pendingFeatures_={},this.pixelTolerance_=void 0!==t.pixelTolerance?t.pixelTolerance:10,this.rBush_=new Pd,this.GEOMETRY_SEGMENTERS_={Point:this.segmentPointGeometry_.bind(this),LineString:this.segmentLineStringGeometry_.bind(this),LinearRing:this.segmentLineStringGeometry_.bind(this),Polygon:this.segmentPolygonGeometry_.bind(this),MultiPoint:this.segmentMultiPointGeometry_.bind(this),MultiLineString:this.segmentMultiLineStringGeometry_.bind(this),MultiPolygon:this.segmentMultiPolygonGeometry_.bind(this),GeometryCollection:this.segmentGeometryCollectionGeometry_.bind(this),Circle:this.segmentCircleGeometry_.bind(this)}}addFeature(t,e){e=void 0===e||e;const i=z(t),r=t.getGeometry();if(r){const e=this.GEOMETRY_SEGMENTERS_[r.getType()];if(e){this.indexedFeaturesExtents_[i]=r.getExtent([1/0,1/0,-1/0,-1/0]);const n=[];if(e(n,r),1===n.length)this.rBush_.insert(Dt(n[0]),{feature:t,segment:n[0]});else if(n.length>1){const e=n.map((t=>Dt(t))),i=n.map((e=>({feature:t,segment:e})));this.rBush_.load(e,i)}}}e&&(this.featureChangeListenerKeys_[i]=D(t,n,this.handleFeatureChange_,this))}getFeatures_(){let t;return this.features_?t=this.features_:this.source_&&(t=this.source_.getFeatures()),t}handleEvent(t){const e=this.snapTo(t.pixel,t.coordinate,t.map);return e&&(t.coordinate=e.vertex.slice(0,2),t.pixel=e.vertexPixel,this.dispatchEvent(new nv(iv,{vertex:t.coordinate,vertexPixel:t.pixel,feature:e.feature,segment:e.segment}))),super.handleEvent(t)}handleFeatureAdd_(t){const e=rv(t);e&&this.addFeature(e)}handleFeatureRemove_(t){const e=rv(t);e&&this.removeFeature(e)}handleFeatureChange_(t){const e=t.target;if(this.handlingDownUpSequence){const t=z(e);t in this.pendingFeatures_||(this.pendingFeatures_[t]=e)}else this.updateFeature_(e)}handleUpEvent(t){const e=Object.values(this.pendingFeatures_);return e.length&&(e.forEach(this.updateFeature_.bind(this)),this.pendingFeatures_={}),!1}removeFeature(t,e){const i=void 0===e||e,n=z(t),r=this.indexedFeaturesExtents_[n];if(r){const e=this.rBush_,i=[];e.forEachInExtent(r,(function(e){t===e.feature&&i.push(e)}));for(let t=i.length-1;t>=0;--t)e.remove(i[t])}i&&(k(this.featureChangeListenerKeys_[n]),delete this.featureChangeListenerKeys_[n])}setMap(i){const n=this.getMap(),r=this.featuresListenerKeys_,s=this.getFeatures_();n&&(r.forEach(k),r.length=0,this.rBush_.clear(),Object.values(this.featureChangeListenerKeys_).forEach(k),this.featureChangeListenerKeys_={}),super.setMap(i),i&&(this.features_?r.push(D(this.features_,t,this.handleFeatureAdd_,this),D(this.features_,e,this.handleFeatureRemove_,this)):this.source_&&r.push(D(this.source_,Id,this.handleFeatureAdd_,this),D(this.source_,Md,this.handleFeatureRemove_,this)),s.forEach((t=>this.addFeature(t))))}snapTo(t,e,i){const n=i.getView().getProjection(),r=Gn(e,n),s=jn(Nt(Dt([r]),i.getView().getResolution()*this.pixelTolerance_),n),o=this.rBush_.getInExtent(s),a=o.length;if(0===a)return null;let l,h,c=1/0,u=null;const d=this.pixelTolerance_*this.pixelTolerance_,g=()=>{if(l){const e=i.getPixelFromCoordinate(l);if(ei(t,e)<=d)return{vertex:l,vertexPixel:[Math.round(e[0]),Math.round(e[1])],feature:h,segment:u}}return null};if(this.vertex_){for(let t=0;t<a;++t){const e=o[t];"Circle"!==e.feature.getGeometry().getType()&&e.segment.forEach((t=>{const i=Gn(t,n),s=ei(r,i);s<c&&(l=t,c=s,h=e.feature)}))}const t=g();if(t)return t}if(this.edge_){for(let t=0;t<a;++t){let e=null;const i=o[t];if("Circle"===i.feature.getGeometry().getType()){let t=i.feature.getGeometry();const s=Nn();s&&(t=t.clone().transform(s,n)),e=Ye(r,t)}else{const[t,s]=i.segment;s&&(sv[0]=Gn(t,n),sv[1]=Gn(s,n),e=He(r,sv))}if(e){const t=ei(r,e);t<c&&(l=kn(e,n),u="Circle"===i.feature.getGeometry().getType()?null:i.segment,c=t,h=i.feature)}}const t=g();if(t)return t}return null}updateFeature_(t){this.removeFeature(t,!1),this.addFeature(t,!1)}segmentCircleGeometry_(t,e){const i=this.getMap().getView().getProjection();let n=e;const r=Nn();r&&(n=n.clone().transform(r,i));const s=us(n);r&&s.transform(i,r);const o=s.getCoordinates()[0];for(let e=0,i=o.length-1;e<i;++e)t.push(o.slice(e,e+2))}segmentGeometryCollectionGeometry_(t,e){const i=e.getGeometriesArray();for(let e=0;e<i.length;++e){const n=this.GEOMETRY_SEGMENTERS_[i[e].getType()];n&&n(t,i[e])}}segmentLineStringGeometry_(t,e){const i=e.getCoordinates();for(let e=0,n=i.length-1;e<n;++e)t.push(i.slice(e,e+2))}segmentMultiLineStringGeometry_(t,e){const i=e.getCoordinates();for(let e=0,n=i.length;e<n;++e){const n=i[e];for(let e=0,i=n.length-1;e<i;++e)t.push(n.slice(e,e+2))}}segmentMultiPointGeometry_(t,e){e.getCoordinates().forEach((e=>{t.push([e])}))}segmentMultiPolygonGeometry_(t,e){const i=e.getCoordinates();for(let e=0,n=i.length;e<n;++e){const n=i[e];for(let e=0,i=n.length;e<i;++e){const i=n[e];for(let e=0,n=i.length-1;e<n;++e)t.push(i.slice(e,e+2))}}}segmentPointGeometry_(t,e){t.push([e.getCoordinates()])}segmentPolygonGeometry_(t,e){const i=e.getCoordinates();for(let e=0,n=i.length;e<n;++e){const n=i[e];for(let e=0,i=n.length-1;e<i;++e)t.push(n.slice(e,e+2))}}},Yb.interaction.Translate=class extends sa{constructor(t){let e;if(super(t=t||{}),this.on,this.once,this.un,this.lastCoordinate_=null,this.startCoordinate_=null,this.features_=void 0!==t.features?t.features:null,t.layers&&!this.features_)if("function"==typeof t.layers)e=t.layers;else{const i=t.layers;e=function(t){return i.includes(t)}}else e=C;this.layerFilter_=e,this.filter_=t.filter&&!this.features_?t.filter:C,this.hitTolerance_=t.hitTolerance?t.hitTolerance:0,this.condition_=t.condition?t.condition:Ho,this.lastFeature_=null,this.addChangeListener(jo,this.handleActiveChanged_)}handleDownEvent(t){if(!t.originalEvent||!this.condition_(t))return!1;if(this.lastFeature_=this.featuresAtPixel_(t.pixel,t.map),!this.lastCoordinate_&&this.lastFeature_){this.startCoordinate_=t.coordinate,this.lastCoordinate_=t.coordinate,this.handleMoveEvent(t);const e=this.features_||new Z([this.lastFeature_]);return this.dispatchEvent(new hv(ov,e,t.coordinate,this.startCoordinate_,t)),!0}return!1}handleUpEvent(t){if(this.lastCoordinate_){this.lastCoordinate_=null,this.handleMoveEvent(t);const e=this.features_||new Z([this.lastFeature_]);return this.dispatchEvent(new hv(lv,e,t.coordinate,this.startCoordinate_,t)),this.startCoordinate_=null,!0}return!1}handleDragEvent(t){if(this.lastCoordinate_){const e=t.coordinate,i=t.map.getView().getProjection(),n=Gn(e,i),r=Gn(this.lastCoordinate_,i),s=n[0]-r[0],o=n[1]-r[1],a=this.features_||new Z([this.lastFeature_]),l=Nn();a.forEach((function(t){const e=t.getGeometry();l?(e.transform(l,i),e.translate(s,o),e.transform(i,l)):e.translate(s,o),t.setGeometry(e)})),this.lastCoordinate_=e,this.dispatchEvent(new hv(av,a,e,this.startCoordinate_,t))}}handleMoveEvent(t){const e=t.map.getViewport();this.featuresAtPixel_(t.pixel,t.map)?(e.classList.remove(this.lastCoordinate_?"ol-grab":"ol-grabbing"),e.classList.add(this.lastCoordinate_?"ol-grabbing":"ol-grab")):e.classList.remove("ol-grab","ol-grabbing")}featuresAtPixel_(t,e){return e.forEachFeatureAtPixel(t,((t,e)=>{if(t instanceof Mt&&this.filter_(t,e)&&(!this.features_||this.features_.getArray().includes(t)))return t}),{layerFilter:this.layerFilter_,hitTolerance:this.hitTolerance_})}getHitTolerance(){return this.hitTolerance_}setHitTolerance(t){this.hitTolerance_=t}setMap(t){const e=this.getMap();super.setMap(t),this.updateState_(e)}handleActiveChanged_(){this.updateState_(null)}updateState_(t){let e=this.getMap();const i=this.getActive();if((!e||!i)&&(e=e||t,e)){e.getViewport().classList.remove("ol-grab","ol-grabbing")}}},Yb.interaction.Translate.TranslateEvent=hv,Yb.interaction.defaults={},Yb.interaction.defaults.defaults=Ra,Yb.layer={},Yb.layer.Base=ka,Yb.layer.BaseImage=ff,Yb.layer.BaseTile=wf,Yb.layer.BaseVector=Ic,Yb.layer.Flow=sx,Yb.layer.Graticule=class extends hx{constructor(t){t=t||{};const e=Object.assign({updateWhileAnimating:!0,updateWhileInteracting:!0,renderBuffer:0},t);delete e.maxLines,delete e.strokeStyle,delete e.targetSize,delete e.showLabels,delete e.lonLabelFormatter,delete e.latLabelFormatter,delete e.lonLabelPosition,delete e.latLabelPosition,delete e.lonLabelStyle,delete e.latLabelStyle,delete e.intervals,super(e),this.projection_=null,this.maxLat_=1/0,this.maxLon_=1/0,this.minLat_=-1/0,this.minLon_=-1/0,this.maxX_=1/0,this.maxY_=1/0,this.minX_=-1/0,this.minY_=-1/0,this.targetSize_=void 0!==t.targetSize?t.targetSize:100,this.maxLines_=void 0!==t.maxLines?t.maxLines:100,this.meridians_=[],this.parallels_=[],this.strokeStyle_=void 0!==t.strokeStyle?t.strokeStyle:cx,this.fromLonLatTransform_=void 0,this.toLonLatTransform_=void 0,this.projectionCenterLonLat_=null,this.bottomLeft_=null,this.bottomRight_=null,this.topLeft_=null,this.topRight_=null,this.meridiansLabels_=null,this.parallelsLabels_=null,t.showLabels&&(this.lonLabelFormatter_=null==t.lonLabelFormatter?Ke.bind(this,"EW"):t.lonLabelFormatter,this.latLabelFormatter_=null==t.latLabelFormatter?Ke.bind(this,"NS"):t.latLabelFormatter,this.lonLabelPosition_=null==t.lonLabelPosition?0:t.lonLabelPosition,this.latLabelPosition_=null==t.latLabelPosition?1:t.latLabelPosition,this.lonLabelStyleBase_=new qh({text:void 0!==t.lonLabelStyle?t.lonLabelStyle.clone():new nc({font:"12px Calibri,sans-serif",textBaseline:"bottom",fill:new Zh({color:"rgba(0,0,0,1)"}),stroke:new Kh({color:"rgba(255,255,255,1)",width:3})})}),this.lonLabelStyle_=t=>{const e=t.get("graticule_label");return this.lonLabelStyleBase_.getText().setText(e),this.lonLabelStyleBase_},this.latLabelStyleBase_=new qh({text:void 0!==t.latLabelStyle?t.latLabelStyle.clone():new nc({font:"12px Calibri,sans-serif",textAlign:"right",fill:new Zh({color:"rgba(0,0,0,1)"}),stroke:new Kh({color:"rgba(255,255,255,1)",width:3})})}),this.latLabelStyle_=t=>{const e=t.get("graticule_label");return this.latLabelStyleBase_.getText().setText(e),this.latLabelStyleBase_},this.meridiansLabels_=[],this.parallelsLabels_=[],this.addEventListener(za,this.drawLabels_.bind(this))),this.intervals_=void 0!==t.intervals?t.intervals:ux,this.setSource(new kd({loader:this.loaderFunction.bind(this),strategy:this.strategyFunction.bind(this),features:new Z,overlaps:!1,useSpatialIndex:!1,wrapX:t.wrapX})),this.featurePool_=[],this.lineStyle_=new qh({stroke:this.strokeStyle_}),this.loadedExtent_=null,this.renderedExtent_=null,this.renderedResolution_=null,this.setRenderOrder(null)}strategyFunction(t,e){let i=t.slice();return this.projection_&&this.getSource().getWrapX()&&Ee(i,this.projection_),this.loadedExtent_&&(Ht(this.loadedExtent_,i,e)?i=this.loadedExtent_.slice():this.getSource().removeLoadedExtent(this.loadedExtent_)),[i]}loaderFunction(t,e,i){this.loadedExtent_=t;const n=this.getSource(),r=ue(this.getExtent()||[-1/0,-1/0,1/0,1/0],t);if(this.renderedExtent_&&Yt(this.renderedExtent_,r)&&this.renderedResolution_===e)return;if(this.renderedExtent_=r,this.renderedResolution_=e,me(r))return;const s=oe(r),o=e*e/4;(!this.projection_||!Pn(this.projection_,i))&&this.updateProjectionInfo_(i),this.createGraticule_(r,s,e,o);let a,l=this.meridians_.length+this.parallels_.length;for(this.meridiansLabels_&&(l+=this.meridians_.length),this.parallelsLabels_&&(l+=this.parallels_.length);l>this.featurePool_.length;)a=new Mt,this.featurePool_.push(a);const h=n.getFeaturesCollection();h.clear();let c,u,d=0;for(c=0,u=this.meridians_.length;c<u;++c)a=this.featurePool_[d++],a.setGeometry(this.meridians_[c]),a.setStyle(this.lineStyle_),h.push(a);for(c=0,u=this.parallels_.length;c<u;++c)a=this.featurePool_[d++],a.setGeometry(this.parallels_[c]),a.setStyle(this.lineStyle_),h.push(a)}addMeridian_(t,e,i,n,r,s){const o=this.getMeridian_(t,e,i,n,s);if(pe(o.getExtent(),r)){if(this.meridiansLabels_){const e=this.lonLabelFormatter_(t);s in this.meridiansLabels_?this.meridiansLabels_[s].text=e:this.meridiansLabels_[s]={geom:new zr([]),text:e}}this.meridians_[s++]=o}return s}addParallel_(t,e,i,n,r,s){const o=this.getParallel_(t,e,i,n,s);if(pe(o.getExtent(),r)){if(this.parallelsLabels_){const e=this.latLabelFormatter_(t);s in this.parallelsLabels_?this.parallelsLabels_[s].text=e:this.parallelsLabels_[s]={geom:new zr([]),text:e}}this.parallels_[s++]=o}return s}drawLabels_(t){const e=t.frameState.viewState.rotation,i=t.frameState.viewState.resolution,n=t.frameState.size,r=t.frameState.extent,s=oe(r);let o=r;if(e){const t=n[0]*i,e=n[1]*i;o=[s[0]-t/2,s[1]-e/2,s[0]+t/2,s[1]+e/2]}let a=0,l=0,h=this.latLabelPosition_<.5;const c=this.projection_.getExtent(),u=fe(c);if(this.getSource().getWrapX()&&this.projection_.canWrapX()&&!Ut(c,r)){a=Math.floor((r[0]-c[0])/u),l=Math.ceil((r[2]-c[2])/u);h=h!==Math.abs(e)>Math.PI/2}const d=gu(t);for(let t=a;t<=l;++t){let i,n,c,g,f=this.meridians_.length+this.parallels_.length;if(this.meridiansLabels_)for(n=0,c=this.meridiansLabels_.length;n<c;++n){const a=this.meridians_[n];if(e||0!==t){const i=a.clone();i.translate(t*u,0),i.rotate(-e,s),g=this.getMeridianPoint_(i,o,n),g.rotate(e,s)}else g=this.getMeridianPoint_(a,r,n);i=this.featurePool_[f++],i.setGeometry(g),i.set("graticule_label",this.meridiansLabels_[n].text),d.drawFeature(i,this.lonLabelStyle_(i))}if(this.parallelsLabels_&&(t===a&&h||t===l&&!h))for(n=0,c=this.parallels_.length;n<c;++n){const a=this.parallels_[n];if(e||0!==t){const i=a.clone();i.translate(t*u,0),i.rotate(-e,s),g=this.getParallelPoint_(i,o,n),g.rotate(e,s)}else g=this.getParallelPoint_(a,r,n);i=this.featurePool_[f++],i.setGeometry(g),i.set("graticule_label",this.parallelsLabels_[n].text),d.drawFeature(i,this.latLabelStyle_(i))}}}createGraticule_(t,e,i,n){const r=this.getInterval_(i);if(-1==r)return this.meridians_.length=0,this.parallels_.length=0,this.meridiansLabels_&&(this.meridiansLabels_.length=0),void(this.parallelsLabels_&&(this.parallelsLabels_.length=0));let s=!1;const o=this.projection_.getExtent(),a=fe(o);this.getSource().getWrapX()&&this.projection_.canWrapX()&&!Ut(o,t)&&(fe(t)>=a?(t[0]=o[0],t[2]=o[2]):s=!0);const l=[we(e[0],this.minX_,this.maxX_),we(e[1],this.minY_,this.maxY_)],h=this.toLonLatTransform_(l);isNaN(h[1])&&(h[1]=Math.abs(this.maxLat_)>=Math.abs(this.minLat_)?this.maxLat_:this.minLat_);let c=we(h[0],this.minLon_,this.maxLon_),u=we(h[1],this.minLat_,this.maxLat_);const d=this.maxLines_;let g,f,p,m,_=t;s||(_=[we(t[0],this.minX_,this.maxX_),we(t[1],this.minY_,this.maxY_),we(t[2],this.minX_,this.maxX_),we(t[3],this.minY_,this.maxY_)]);const y=ve(_,this.toLonLatTransform_,void 0,8);let x=y[3],v=y[2],E=y[1],S=y[0];if(s||(jt(_,this.bottomLeft_)&&(S=this.minLon_,E=this.minLat_),jt(_,this.bottomRight_)&&(v=this.maxLon_,E=this.minLat_),jt(_,this.topLeft_)&&(S=this.minLon_,x=this.maxLat_),jt(_,this.topRight_)&&(v=this.maxLon_,x=this.maxLat_),x=we(x,u,this.maxLat_),v=we(v,c,this.maxLon_),E=we(E,this.minLat_,u),S=we(S,this.minLon_,c)),c=Math.floor(c/r)*r,m=we(c,this.minLon_,this.maxLon_),f=this.addMeridian_(m,E,x,n,t,0),g=0,s)for(;(m-=r)>=S&&g++<d;)f=this.addMeridian_(m,E,x,n,t,f);else for(;m!=this.minLon_&&g++<d;)m=Math.max(m-r,this.minLon_),f=this.addMeridian_(m,E,x,n,t,f);if(m=we(c,this.minLon_,this.maxLon_),g=0,s)for(;(m+=r)<=v&&g++<d;)f=this.addMeridian_(m,E,x,n,t,f);else for(;m!=this.maxLon_&&g++<d;)m=Math.min(m+r,this.maxLon_),f=this.addMeridian_(m,E,x,n,t,f);for(this.meridians_.length=f,this.meridiansLabels_&&(this.meridiansLabels_.length=f),u=Math.floor(u/r)*r,p=we(u,this.minLat_,this.maxLat_),f=this.addParallel_(p,S,v,n,t,0),g=0;p!=this.minLat_&&g++<d;)p=Math.max(p-r,this.minLat_),f=this.addParallel_(p,S,v,n,t,f);for(p=we(u,this.minLat_,this.maxLat_),g=0;p!=this.maxLat_&&g++<d;)p=Math.min(p+r,this.maxLat_),f=this.addParallel_(p,S,v,n,t,f);this.parallels_.length=f,this.parallelsLabels_&&(this.parallelsLabels_.length=f)}getInterval_(t){const e=this.projectionCenterLonLat_[0],i=this.projectionCenterLonLat_[1];let n=-1;const r=Math.pow(this.targetSize_*t,2),s=[],o=[];for(let t=0,a=this.intervals_.length;t<a;++t){const a=we(this.intervals_[t]/2,0,90),l=we(i,-90+a,90-a);s[0]=e-a,s[1]=l-a,o[0]=e+a,o[1]=l+a,this.fromLonLatTransform_(s,s),this.fromLonLatTransform_(o,o);if(Math.pow(o[0]-s[0],2)+Math.pow(o[1]-s[1],2)<=r)break;n=this.intervals_[t]}return n}getMeridian_(t,e,i,n,r){const s=ax(t,e,i,this.projection_,n);let o=this.meridians_[r];return o?(o.setFlatCoordinates("XY",s),o.changed()):(o=new Ed(s,"XY"),this.meridians_[r]=o),o}getMeridianPoint_(t,e,i){const n=t.getFlatCoordinates();let r=1,s=n.length-1;n[r]>n[s]&&(r=s,s=1);const o=Math.max(e[1],n[r]),a=Math.min(e[3],n[s]),l=we(e[1]+Math.abs(e[1]-e[3])*this.lonLabelPosition_,o,a),h=[n[r-1]+(n[s-1]-n[r-1])*(l-n[r])/(n[s]-n[r]),l],c=this.meridiansLabels_[i].geom;return c.setCoordinates(h),c}getMeridians(){return this.meridians_}getParallel_(t,e,i,n,r){const s=lx(t,e,i,this.projection_,n);let o=this.parallels_[r];return o?(o.setFlatCoordinates("XY",s),o.changed()):o=new Ed(s,"XY"),o}getParallelPoint_(t,e,i){const n=t.getFlatCoordinates();let r=0,s=n.length-2;n[r]>n[s]&&(r=s,s=0);const o=Math.max(e[0],n[r]),a=Math.min(e[2],n[s]),l=we(e[0]+Math.abs(e[0]-e[2])*this.latLabelPosition_,o,a),h=[l,n[r+1]+(n[s+1]-n[r+1])*(l-n[r])/(n[s]-n[r])],c=this.parallelsLabels_[i].geom;return c.setCoordinates(h),c}getParallels(){return this.parallels_}updateProjectionInfo_(t){const e=vn("EPSG:4326"),i=t.getWorldExtent();this.maxLat_=i[3],this.maxLon_=i[2],this.minLat_=i[1],this.minLon_=i[0];const n=Fn(t,e);if(this.minLon_<this.maxLon_)this.toLonLatTransform_=n;else{const t=this.minLon_+this.maxLon_/2;this.maxLon_+=360,this.toLonLatTransform_=function(e,i,r){const s=n(e,i,r=r||2);for(let e=0,i=s.length;e<i;e+=r)s[e]<t&&(s[e]+=360);return s}}this.fromLonLatTransform_=Fn(e,t);const r=ve([this.minLon_,this.minLat_,this.maxLon_,this.maxLat_],this.fromLonLatTransform_,void 0,8);this.minX_=r[0],this.maxX_=r[2],this.minY_=r[1],this.maxY_=r[3],this.bottomLeft_=this.fromLonLatTransform_([this.minLon_,this.minLat_]),this.bottomRight_=this.fromLonLatTransform_([this.maxLon_,this.minLat_]),this.topLeft_=this.fromLonLatTransform_([this.minLon_,this.maxLat_]),this.topRight_=this.fromLonLatTransform_([this.maxLon_,this.maxLat_]),this.projectionCenterLonLat_=this.toLonLatTransform_(oe(t.getExtent())),isNaN(this.projectionCenterLonLat_[1])&&(this.projectionCenterLonLat_[1]=Math.abs(this.maxLat_)>=Math.abs(this.minLat_)?this.maxLat_:this.minLat_),this.projection_=t}},Yb.layer.Group=Ua,Yb.layer.Group.GroupEvent=Ga,Yb.layer.Heatmap=class extends Ic{constructor(t){t=t||{};const e=Object.assign({},t);delete e.gradient,delete e.radius,delete e.blur,delete e.weight,super(e),this.gradient_=null,this.addChangeListener(gx,this.handleGradientChanged_),this.setGradient(t.gradient?t.gradient:px),this.setBlur(void 0!==t.blur?t.blur:15),this.setRadius(void 0!==t.radius?t.radius:8);const i=t.weight?t.weight:"weight";this.weightFunction_="string"==typeof i?t=>t.get(i):i,this.setRenderOrder(null)}getBlur(){return this.get(dx)}getGradient(){return this.get(gx)}getRadius(){return this.get(fx)}handleGradientChanged_(){this.gradient_=function(t){const e=1,i=256,n=pt(e,i),r=n.createLinearGradient(0,0,e,i),s=1/(t.length-1);for(let e=0,i=t.length;e<i;++e)r.addColorStop(e*s,t[e]);return n.fillStyle=r,n.fillRect(0,0,e,i),n.canvas}(this.getGradient())}setBlur(t){this.set(dx,t)}setGradient(t){this.set(gx,t)}setRadius(t){this.set(fx,t)}createRenderer(){const t=(new Qm).addAttribute("float a_weight").addVarying("v_weight","float","a_weight").addUniform("float u_size").addUniform("float u_blurSlope").setSymbolSizeExpression("vec2(u_size)").setSymbolColorExpression("vec4(smoothstep(0., 1., (1. - length(coordsPx * 2. / v_quadSizePx)) * u_blurSlope) * v_weight)");return new R_(this,{className:this.getClassName(),attributes:[{name:"weight",callback:t=>{const e=this.weightFunction_(t);return void 0!==e?we(e,0,1):1}}],uniforms:{u_size:()=>2*(this.get(fx)+this.get(dx)),u_blurSlope:()=>this.get(fx)/Math.max(1,this.get(dx))},hitDetectionEnabled:!0,vertexShader:t.getSymbolVertexShader(),fragmentShader:t.getSymbolFragmentShader(),postProcesses:[{fragmentShader:"\n            precision mediump float;\n\n            uniform sampler2D u_image;\n            uniform sampler2D u_gradientTexture;\n            uniform float u_opacity;\n\n            varying vec2 v_texCoord;\n\n            void main() {\n              vec4 color = texture2D(u_image, v_texCoord);\n              gl_FragColor.a = color.a * u_opacity;\n              gl_FragColor.rgb = texture2D(u_gradientTexture, vec2(0.5, color.a)).rgb;\n              gl_FragColor.rgb *= gl_FragColor.a;\n            }",uniforms:{u_gradientTexture:()=>this.gradient_,u_opacity:()=>this.getOpacity()}}]})}renderDeclutter(){}},Yb.layer.Image=pf,Yb.layer.Layer=Wa,Yb.layer.Layer.inView=Za,Yb.layer.Tile=Tf,Yb.layer.Vector=hx,Yb.layer.VectorImage=class extends Ic{constructor(t){t=t||{};const e=Object.assign({},t);delete e.imageRatio,super(e),this.imageRatio_=void 0!==t.imageRatio?t.imageRatio:1}getImageRatio(){return this.imageRatio_}createRenderer(){return new $y(this)}},Yb.layer.VectorTile=class extends Ic{constructor(t){t=t||{};const e=Object.assign({},t);delete e.preload;const i=void 0===t.cacheSize?0:t.cacheSize;delete t.cacheSize,delete e.useInterimTilesOnError,super(e),this.on,this.once,this.un,this.cacheSize_=i;const n=t.renderMode||"hybrid";Ft("hybrid"==n||"vector"==n,"`renderMode` must be `'hybrid'` or `'vector'`"),this.renderMode_=n,this.setPreload(t.preload?t.preload:0),this.setUseInterimTilesOnError(void 0===t.useInterimTilesOnError||t.useInterimTilesOnError),this.getBackground,this.setBackground}createRenderer(){return new Yy(this,{cacheSize:this.cacheSize_})}getFeatures(t){return super.getFeatures(t)}getFeaturesInExtent(t){return this.getRenderer().getFeaturesInExtent(t)}getRenderMode(){return this.renderMode_}getPreload(){return this.get(Ef)}getUseInterimTilesOnError(){return this.get(Sf)}setPreload(t){this.set(Ef,t)}setUseInterimTilesOnError(t){this.set(Sf,t)}},Yb.layer.WebGLPoints=class extends Wa{constructor(t){super(Object.assign({},t)),this.styleVariables_=t.variables||{},this.parseResult_=u_(t.style,this.styleVariables_,t.filter),this.hitDetectionDisabled_=!!t.disableHitDetection}createRenderer(){const t=Object.keys(this.parseResult_.attributes).map((t=>({name:t,...this.parseResult_.attributes[t]})));return new R_(this,{vertexShader:this.parseResult_.builder.getSymbolVertexShader(),fragmentShader:this.parseResult_.builder.getSymbolFragmentShader(),hitDetectionEnabled:!this.hitDetectionDisabled_,uniforms:this.parseResult_.uniforms,attributes:t})}updateStyleVariables(t){Object.assign(this.styleVariables_,t),this.changed()}},Yb.layer.WebGLTile=_x,Yb.layer.WebGLVector=class extends Wa{constructor(t){super(Object.assign({},t)),this.styleVariables_=t.variables||{},this.style_=t.style,this.hitDetectionDisabled_=!!t.disableHitDetection}createRenderer(){return new Z_(this,{style:this.style_,variables:this.styleVariables_,disableHitDetection:this.hitDetectionDisabled_})}updateStyleVariables(t){Object.assign(this.styleVariables_,t),this.changed()}setStyle(t){this.style=t,this.clearRenderer(),this.changed()}},Yb.layer.WebGLVectorTile=class extends wf{constructor(t){super(Object.assign({},t)),this.styleVariables_=t.variables||{},this.style_=t.style,this.hitDetectionDisabled_=!!t.disableHitDetection}createRenderer(){return new K_(this,{style:this.style_,variables:this.styleVariables_,disableHitDetection:this.hitDetectionDisabled_})}updateStyleVariables(t){Object.assign(this.styleVariables_,t),this.changed()}setStyle(t){this.style=t,this.clearRenderer(),this.changed()}},Yb.loadingstrategy={},Yb.loadingstrategy.all=Jc,Yb.loadingstrategy.bbox=function(t,e){return[t]},Yb.loadingstrategy.tile=function(t){return function(e,i,n){const r=t.getZForResolution(zn(i,n)),s=t.getTileRangeForExtentAndZ(Un(e,n),r),o=[],a=[r,0,0];for(a[1]=s.minX;a[1]<=s.maxX;++a[1])for(a[2]=s.minY;a[2]<=s.maxY;++a[2])o.push(jn(t.getTileCoordExtent(a),n));return o}},Yb.math={},Yb.math.ceil=Oe,Yb.math.clamp=we,Yb.math.floor=Ae,Yb.math.lerp=Le,Yb.math.modulo=Ie,Yb.math.round=Me,Yb.math.solveLinearSystem=Re,Yb.math.squaredDistance=Ce,Yb.math.squaredSegmentDistance=Te,Yb.math.toDegrees=be,Yb.math.toFixed=Fe,Yb.math.toRadians=Pe,Yb.math.wrap=De,Yb.net={},Yb.net.ClientError=eu,Yb.net.ResponseError=tu,Yb.net.getJSON=iu,Yb.net.jsonp=Qc,Yb.net.overrideXHR=function(t){"undefined"!=typeof XMLHttpRequest&&(Zc=XMLHttpRequest),global.XMLHttpRequest=t},Yb.net.resolveUrl=nu,Yb.net.restoreXHR=function(){global.XMLHttpRequest=Zc},Yb.obj={},Yb.obj.clear=L,Yb.obj.isEmpty=F,Yb.proj={},Yb.proj.Projection=ci,Yb.proj.Units={},Yb.proj.Units.METERS_PER_UNIT=hi,Yb.proj.Units.fromCode=li,Yb.proj.addCommon=Vn,Yb.proj.addCoordinateTransforms=Rn,Yb.proj.addEquivalentProjections=Sn,Yb.proj.addEquivalentTransforms=wn,Yb.proj.addProjection=yn,Yb.proj.addProjections=xn,Yb.proj.clearAllProjections=function(){Ri(),Li()},Yb.proj.clearUserProjection=function(){On=null},Yb.proj.cloneTransform=mn,Yb.proj.createProjection=Tn,Yb.proj.createSafeCoordinateTransform=Xn,Yb.proj.createTransformFromCoordinateTransform=Cn,Yb.proj.disableCoordinateWarning=pn,Yb.proj.epsg3857={},Yb.proj.epsg3857.EXTENT=gi,Yb.proj.epsg3857.HALF_SIZE=di,Yb.proj.epsg3857.MAX_SAFE_Y=pi,Yb.proj.epsg3857.PROJECTIONS=_i,Yb.proj.epsg3857.RADIUS=ui,Yb.proj.epsg3857.WORLD_EXTENT=fi,Yb.proj.epsg3857.fromEPSG4326=yi,Yb.proj.epsg3857.toEPSG4326=xi,Yb.proj.epsg4326={},Yb.proj.epsg4326.EXTENT=Ei,Yb.proj.epsg4326.METERS_PER_UNIT=Si,Yb.proj.epsg4326.PROJECTIONS=Ti,Yb.proj.epsg4326.RADIUS=vi,Yb.proj.equivalent=Pn,Yb.proj.fromLonLat=function(t,e){return pn(),Mn(t,"EPSG:4326",void 0!==e?e:"EPSG:3857")},Yb.proj.fromUserCoordinate=Gn,Yb.proj.fromUserExtent=Un,Yb.proj.fromUserResolution=zn,Yb.proj.get=vn,Yb.proj.getPointResolution=En,Yb.proj.getTransform=Fn,Yb.proj.getTransformFromProjections=In,Yb.proj.getUserProjection=Nn,Yb.proj.identityTransform=_n,Yb.proj.proj4={},Yb.proj.proj4.epsgLookupMapTiler=function(t){return async function(e){const i=await fetch(`https://api.maptiler.com/coordinates/search/code:${e}.json?transformations=true&exports=true&key=${t}`);if(!i.ok)throw new Error(`Unexpected response from maptiler.com: ${i.status}`);return i.json().then((t=>{const i=t.results;if(i?.length>0){const t=i.filter((t=>"EPSG"===t.id?.authority&&t.id?.code===e))[0];if(t){const e=t.transformations;if(e?.length>0){const i=t.default_transformation;if(e.filter((t=>t.id?.authority===i?.authority&&t.id?.code===i?.code&&0===t.grids?.length)).length>0)return t.exports?.proj4;const n=e.filter((t=>0===t.grids?.length&&"EPSG"===t.target_crs?.authority&&4326===t.target_crs?.code&&!1===t.deprecated&&!0===t.usable)).sort(((t,e)=>t.accuracy-e.accuracy))[0]?.exports?.proj4;if(n)return n}return t.exports?.proj4}}}))}},Yb.proj.proj4.fromEPSGCode=async function(t){"string"==typeof t&&(t=parseInt(t.split(":").pop(),10));const e=Hy;if(!e)throw new Error("Proj4 must be registered first with register(proj4)");const i="EPSG:"+t;return e.defs(i)||(e.defs(i,await qy(t)),Ky(e)),bi(i)},Yb.proj.proj4.getEPSGLookup=function(){return qy},Yb.proj.proj4.isRegistered=function(){return!!Hy},Yb.proj.proj4.register=Ky,Yb.proj.proj4.setEPSGLookup=function(t){qy=t},Yb.proj.proj4.unregister=function(){Hy=null},Yb.proj.projections={},Yb.proj.projections.add=Pi,Yb.proj.projections.clear=Ri,Yb.proj.projections.get=bi,Yb.proj.setUserProjection=Dn,Yb.proj.toLonLat=bn,Yb.proj.toUserCoordinate=kn,Yb.proj.toUserExtent=jn,Yb.proj.toUserResolution=Bn,Yb.proj.transform=Mn,Yb.proj.transformExtent=An,Yb.proj.transformWithProjections=function(t,e,i){return In(e,i)(t)},Yb.proj.transforms={},Yb.proj.transforms.add=Fi,Yb.proj.transforms.clear=Li,Yb.proj.transforms.get=Mi,Yb.proj.transforms.remove=function(t,e){const i=t.getCode(),n=e.getCode(),r=Ii[i][n];return delete Ii[i][n],F(Ii[i])&&delete Ii[i],r},Yb.proj.useGeographic=function(){Dn("EPSG:4326")},Yb.proj.utm={},Yb.proj.utm.makeProjection=cn,Yb.proj.utm.makeTransforms=un,Yb.proj.utm.zoneFromCode=ln,Yb.render={},Yb.render.Box=ha,Yb.render.Event=Lc,Yb.render.Feature=Rd,Yb.render.Feature.toFeature=function(t,e){const i=t.getId(),n=bd(t),r=t.getProperties(),s=new Mt;return void 0!==e&&s.setGeometryName(e),s.setGeometry(n),void 0!==i&&s.setId(i),s.setProperties(r,!0),s},Yb.render.Feature.toGeometry=bd,Yb.render.VectorContext=ru,Yb.render.canvas={},Yb.render.canvas.Builder=fy,Yb.render.canvas.BuilderGroup=wy,Yb.render.canvas.Executor=Oy,Yb.render.canvas.ExecutorGroup=Gy,Yb.render.canvas.ExecutorGroup.ALL=Dy,Yb.render.canvas.ExecutorGroup.DECLUTTER=Ny,Yb.render.canvas.ExecutorGroup.NON_DECLUTTER=ky,Yb.render.canvas.ExecutorGroup.getPixelIndexArray=Uy,Yb.render.canvas.ImageBuilder=py,Yb.render.canvas.Immediate=su,Yb.render.canvas.Instruction={},Yb.render.canvas.Instruction.beginPathInstruction=dy,Yb.render.canvas.Instruction.closePathInstruction=gy,Yb.render.canvas.Instruction.fillInstruction=cy,Yb.render.canvas.Instruction.strokeInstruction=uy,Yb.render.canvas.LineStringBuilder=my,Yb.render.canvas.PolygonBuilder=_y,Yb.render.canvas.TextBuilder=Ey,Yb.render.canvas.TextBuilder.TEXT_ALIGN=vy,Yb.render.canvas.ZIndexContext=lf,Yb.render.canvas.checkedFonts=Ah,Yb.render.canvas.defaultFillStyle=Th,Yb.render.canvas.defaultFont=wh,Yb.render.canvas.defaultLineCap=Ch,Yb.render.canvas.defaultLineDash=Rh,Yb.render.canvas.defaultLineDashOffset=0,Yb.render.canvas.defaultLineJoin=bh,Yb.render.canvas.defaultLineWidth=1,Yb.render.canvas.defaultMiterLimit=Ph,Yb.render.canvas.defaultPadding=Mh,Yb.render.canvas.defaultStrokeStyle=Ih,Yb.render.canvas.defaultTextAlign=Lh,Yb.render.canvas.defaultTextBaseline=Fh,Yb.render.canvas.drawImageOrLabel=Xh,Yb.render.canvas.getTextDimensions=zh,Yb.render.canvas.hitdetect={},Yb.render.canvas.hitdetect.HIT_DETECT_RESOLUTION=By,Yb.render.canvas.hitdetect.createHitDetectionImageData=zy,Yb.render.canvas.hitdetect.hitDetect=Xy,Yb.render.canvas.measureAndCacheTextWidth=Bh,Yb.render.canvas.measureTextHeight=Gh,Yb.render.canvas.measureTextWidth=Uh,Yb.render.canvas.registerFont=kh,Yb.render.canvas.rotateAtOffset=function(t,e,i,n){0!==e&&(t.translate(i,n),t.rotate(e),t.translate(-i,-n))},Yb.render.canvas.style={},Yb.render.canvas.style.buildRuleSet=ac,Yb.render.canvas.style.buildStyle=lc,Yb.render.canvas.style.flatStylesToStyleFunction=oc,Yb.render.canvas.style.rulesToStyleFunction=sc,Yb.render.canvas.textHeights=Nh,Yb.render.getRenderPixel=function(t,e){return qn(t.inversePixelTransform,e.slice(0))},Yb.render.getVectorContext=gu,Yb.render.toContext=function(t,e){const i=t.canvas,n=(e=e||{}).pixelRatio||ct,r=e.size;r&&(i.width=r[0]*n,i.height=r[1]*n,i.style.width=r[0]+"px",i.style.height=r[1]+"px");const s=[0,0,i.width,i.height],o=Qn([1,0,0,1,0,0],n,n);return new su(t,n,s,o,0)},Yb.render.webgl={},Yb.render.webgl.MixedGeometryBatch=t_,Yb.render.webgl.VectorStyleRenderer=$_,Yb.render.webgl.renderinstructions={},Yb.render.webgl.renderinstructions.generateLineStringRenderInstructions=L_,Yb.render.webgl.renderinstructions.generatePointRenderInstructions=I_,Yb.render.webgl.renderinstructions.generatePolygonRenderInstructions=F_,Yb.render.webgl.renderinstructions.getCustomAttributesSize=P_,Yb.render.webgl.utils={},Yb.render.webgl.utils.LINESTRING_ANGLE_COSINE_CUTOFF=Xm,Yb.render.webgl.utils.breakDownFlatStyle=Hm,Yb.render.webgl.utils.colorDecodeId=Ym,Yb.render.webgl.utils.colorEncodeId=Zm,Yb.render.webgl.utils.getBlankImageData=function(){const t=document.createElement("canvas").getContext("2d").createImageData(1,1);return t.data[0]=255,t.data[1]=255,t.data[2]=255,t.data[3]=255,t},Yb.render.webgl.utils.writeLineSegmentToBuffers=function(t,e,i,n,r,s,o,a,l,h,c){const u=10+a.length,d=s.length/u,g=[t[e+0],t[e+1]],f=[t[i],t[i+1]],p=t[e+2],m=t[i+2],_=qn(l,[...g]),y=qn(l,[...f]);function x(t,e,i){const n=Math.sqrt((e[0]-t[0])*(e[0]-t[0])+(e[1]-t[1])*(e[1]-t[1])),r=[(e[0]-t[0])/n,(e[1]-t[1])/n],s=[-r[1],r[0]],o=Math.sqrt((i[0]-t[0])*(i[0]-t[0])+(i[1]-t[1])*(i[1]-t[1])),a=[(i[0]-t[0])/o,(i[1]-t[1])/o],l=0===n||0===o?0:Math.acos(we(a[0]*r[0]+a[1]*r[1],-1,1));return a[0]*s[0]+a[1]*s[1]>0?l:2*Math.PI-l}let v=-1,E=-1,S=c;const w=null!==r;if(null!==n){v=x(_,y,qn(l,[...[t[n],t[n+1]]])),Math.cos(v)<=Xm&&(S+=Math.tan((v-Math.PI)/2))}if(w){E=x(y,_,qn(l,[...[t[r],t[r+1]]])),Math.cos(E)<=Xm&&(S+=Math.tan((Math.PI-E)/2))}function T(t,e){return 0===e?1e4*t:Math.sign(e)*(1e4*t+Math.abs(e))}return s.push(g[0],g[1],p,f[0],f[1],m,v,E,h,T(0,c)),s.push(...a),s.push(g[0],g[1],p,f[0],f[1],m,v,E,h,T(1,c)),s.push(...a),s.push(g[0],g[1],p,f[0],f[1],m,v,E,h,T(2,c)),s.push(...a),s.push(g[0],g[1],p,f[0],f[1],m,v,E,h,T(3,c)),s.push(...a),o.push(d,d+1,d+2,d+1,d+3,d+2),{length:h+Math.sqrt((y[0]-_[0])*(y[0]-_[0])+(y[1]-_[1])*(y[1]-_[1])),angle:S}},Yb.render.webgl.utils.writePointFeatureToBuffers=function(t,e,i,n,r,s){const o=3+r,a=t[e+0],l=t[e+1],h=Vm;h.length=r;for(let i=0;i<h.length;i++)h[i]=t[e+2+i];let c=s?s.vertexPosition:0,u=s?s.indexPosition:0;const d=c/o;return Wm(i,c,a,l,0),h.length&&i.set(h,c+3),c+=o,Wm(i,c,a,l,1),h.length&&i.set(h,c+3),c+=o,Wm(i,c,a,l,2),h.length&&i.set(h,c+3),c+=o,Wm(i,c,a,l,3),h.length&&i.set(h,c+3),c+=o,n[u++]=d,n[u++]=d+1,n[u++]=d+3,n[u++]=d+1,n[u++]=d+2,n[u++]=d+3,$m.vertexPosition=c,$m.indexPosition=u,$m},Yb.render.webgl.utils.writePolygonTrianglesToBuffers=function(t,e,i,n,r){const s=2+r;let o=e;const a=t.slice(o,o+r);o+=r;const l=t[o++];let h=0;const c=new Array(l-1);for(let e=0;e<l;e++)h+=t[o++],e<l-1&&(c[e]=h);const u=t.slice(o,o+2*h),d=_m(u,c,2);for(let t=0;t<d.length;t++)n.push(d[t]+i.length/s);for(let t=0;t<u.length;t+=2)i.push(u[t],u[t+1],...a);return o+2*h},Yb.renderer={},Yb.renderer.Composite=Ac,Yb.renderer.Layer=hf,Yb.renderer.Map=Fc,Yb.renderer.canvas={},Yb.renderer.canvas.ImageLayer=gf,Yb.renderer.canvas.Layer=df,Yb.renderer.canvas.Layer.canvasPool=cf,Yb.renderer.canvas.TileLayer=vf,Yb.renderer.canvas.VectorImageLayer=$y,Yb.renderer.canvas.VectorLayer=Vy,Yb.renderer.canvas.VectorTileLayer=Yy,Yb.renderer.vector={},Yb.renderer.vector.defaultOrder=lu,Yb.renderer.vector.getSquaredTolerance=hu,Yb.renderer.vector.getTolerance=cu,Yb.renderer.vector.renderFeature=uu,Yb.renderer.webgl={},Yb.renderer.webgl.FlowLayer=v_,Yb.renderer.webgl.Layer=Up,Yb.renderer.webgl.PointsLayer=R_,Yb.renderer.webgl.TileLayer=Jp,Yb.renderer.webgl.TileLayer.Attributes=Kp,Yb.renderer.webgl.TileLayer.Uniforms=Hp,Yb.renderer.webgl.TileLayerBase=Yp,Yb.renderer.webgl.TileLayerBase.Uniforms=Bp,Yb.renderer.webgl.TileLayerBase.getCacheKey=Zp,Yb.renderer.webgl.TileLayerBase.newTileRepresentationLookup=Xp,Yb.renderer.webgl.VectorLayer=Z_,Yb.renderer.webgl.VectorLayer.Uniforms=W_,Yb.renderer.webgl.VectorTileLayer=K_,Yb.renderer.webgl.VectorTileLayer.Attributes=H_,Yb.renderer.webgl.VectorTileLayer.Uniforms=Y_,Yb.reproj={},Yb.reproj.DataTile=qd,Yb.reproj.Image=Sg,Yb.reproj.Tile=td,Yb.reproj.Triangulation=Ju,Yb.reproj.calculateSourceExtentResolution=xu,Yb.reproj.calculateSourceResolution=yu,Yb.reproj.canvasPool=pu,Yb.reproj.common={},Yb.reproj.common.ERROR_THRESHOLD=Qu,Yb.reproj.glreproj={},Yb.reproj.glreproj.canvasGLPool=Hd,Yb.reproj.glreproj.createCanvasContextWebGL=Zd,Yb.reproj.glreproj.releaseGLCanvas=Yd,Yb.reproj.glreproj.render=Kd,Yb.reproj.render=vu,Yb.resolution={},Yb.resolution.fromResolutionLike=Eu,Yb.resolutionconstraint={},Yb.resolutionconstraint.createMinMaxResolution=co,Yb.resolutionconstraint.createSnapToPower=ho,Yb.resolutionconstraint.createSnapToResolutions=lo,Yb.rotationconstraint={},Yb.rotationconstraint.createSnapToN=fo,Yb.rotationconstraint.createSnapToZero=po,Yb.rotationconstraint.disable=uo,Yb.rotationconstraint.none=go,Yb.size={},Yb.size.buffer=function(t,e,i){return void 0===i&&(i=[0,0]),i[0]=t[0]+2*e,i[1]=t[1]+2*e,i},Yb.size.hasArea=Ol,Yb.size.scale=Dl,Yb.size.toSize=Nl,Yb.source={},Yb.source.BingMaps=class extends hd{constructor(t){const e=void 0!==t.hidpi&&t.hidpi;super({cacheSize:t.cacheSize,crossOrigin:"anonymous",interpolate:t.interpolate,projection:vn("EPSG:3857"),reprojectionErrorThreshold:t.reprojectionErrorThreshold,state:"loading",tileLoadFunction:t.tileLoadFunction,tilePixelRatio:e?2:1,wrapX:void 0===t.wrapX||t.wrapX,transition:t.transition,zDirection:t.zDirection}),this.hidpi_=e,this.culture_=void 0!==t.culture?t.culture:"en-us",this.maxZoom_=void 0!==t.maxZoom?t.maxZoom:-1,this.apiKey_=t.key,this.imagerySet_=t.imagerySet,this.placeholderTiles_=t.placeholderTiles;const i="https://dev.virtualearth.net/REST/v1/Imagery/Metadata/"+this.imagerySet_+"?uriScheme=https&include=ImageryProviders&key="+this.apiKey_+"&c="+this.culture_;fetch(i).then((t=>t.json())).then((t=>this.handleImageryMetadataResponse(t)))}getApiKey(){return this.apiKey_}getImagerySet(){return this.imagerySet_}handleImageryMetadataResponse(t){if(200!=t.statusCode||"OK"!=t.statusDescription||"ValidCredentials"!=t.authenticationResultCode||1!=t.resourceSets.length||1!=t.resourceSets[0].resources.length)return void this.setState("error");const e=t.resourceSets[0].resources[0],i=-1==this.maxZoom_?e.zoomMax:this.maxZoom_,n=ju(this.getProjection()),r=this.hidpi_?2:1,s=e.imageWidth==e.imageHeight?e.imageWidth/r:[e.imageWidth/r,e.imageHeight/r],o=Nu({extent:n,minZoom:e.zoomMin,maxZoom:i,tileSize:s});this.tileGrid=o;const a=this.culture_,l=this.hidpi_,h=this.placeholderTiles_;if(this.tileUrlFunction=Ku(e.imageUrlSubdomains.map((function(t){const i=[0,0,0],n=e.imageUrl.replace("{subdomain}",t).replace("{culture}",a);return function(t,e,r){if(!t)return;wu(t[0],t[1],t[2],i);const s=new URL(n.replace("{quadkey}",ud(i))),o=s.searchParams;return l&&(o.set("dpi","d1"),o.set("device","mobile")),!0===h?o.delete("n"):!1===h&&o.set("n","z"),s.toString()}}))),e.imageryProviders){const t=In(vn("EPSG:4326"),this.getProjection());this.setAttributions((i=>{const n=[],r=i.viewState,s=this.getTileGrid(),o=s.getZForResolution(r.resolution,this.zDirection),a=s.getTileCoordForCoordAndZ(r.center,o)[0];return e.imageryProviders.map((function(e){let r=!1;const s=e.coverageAreas;for(let e=0,n=s.length;e<n;++e){const n=s[e];if(a>=n.zoomMin&&a<=n.zoomMax){const e=n.bbox;if(pe(ve([e[1],e[0],e[3],e[2]],t),i.extent)){r=!0;break}}}r&&n.push(e.attribution)})),n.push('<a class="ol-attribution-bing-tos" href="https://www.microsoft.com/maps/product/terms.html" target="_blank">Terms of Use</a>'),n}))}this.setState("ready")}},Yb.source.BingMaps.quadKey=ud,Yb.source.CartoDB=class extends dd{constructor(t){super({attributions:t.attributions,cacheSize:t.cacheSize,crossOrigin:t.crossOrigin,maxZoom:void 0!==t.maxZoom?t.maxZoom:18,minZoom:t.minZoom,projection:t.projection,transition:t.transition,wrapX:t.wrapX,zDirection:t.zDirection}),this.account_=t.account,this.mapId_=t.map||"",this.config_=t.config||{},this.templateCache_={},this.initializeMap_()}getConfig(){return this.config_}updateConfig(t){Object.assign(this.config_,t),this.initializeMap_()}setConfig(t){this.config_=t||{},this.initializeMap_()}initializeMap_(){const t=JSON.stringify(this.config_);if(this.templateCache_[t])return void this.applyTemplate_(this.templateCache_[t]);let e="https://"+this.account_+".carto.com/api/v1/map";this.mapId_&&(e+="/named/"+this.mapId_);const i=new XMLHttpRequest;i.addEventListener("load",this.handleInitResponse_.bind(this,t)),i.addEventListener("error",this.handleInitError_.bind(this)),i.open("POST",e),i.setRequestHeader("Content-type","application/json"),i.send(JSON.stringify(this.config_))}handleInitResponse_(t,e){const i=e.target;if(!i.status||i.status>=200&&i.status<300){let e;try{e=JSON.parse(i.responseText)}catch{return void this.setState("error")}this.applyTemplate_(e),this.templateCache_[t]=e,this.setState("ready")}else this.setState("error")}handleInitError_(t){this.setState("error")}applyTemplate_(t){const e="https://"+t.cdn_url.https+"/"+this.account_+"/api/v1/map/"+t.layergroupid+"/{z}/{x}/{y}.png";this.setUrl(e)}},Yb.source.Cluster=class extends kd{constructor(t){super({attributions:(t=t||{}).attributions,wrapX:t.wrapX}),this.resolution=void 0,this.distance=void 0!==t.distance?t.distance:20,this.minDistance=t.minDistance||0,this.interpolationRatio=0,this.features=[],this.geometryFunction=t.geometryFunction||function(t){const e=t.getGeometry();return Ft(!e||"Point"===e.getType(),"The default `geometryFunction` can only handle `Point` or null geometries"),e},this.createCustomCluster_=t.createCluster,this.source=null,this.boundRefresh_=this.refresh.bind(this),this.updateDistance(this.distance,this.minDistance),this.setSource(t.source||null)}clear(t){this.features.length=0,super.clear(t)}getDistance(){return this.distance}getSource(){return this.source}loadFeatures(t,e,i){this.source?.loadFeatures(t,e,i),e!==this.resolution&&(this.resolution=e,this.refresh())}setDistance(t){this.updateDistance(t,this.minDistance)}setMinDistance(t){this.updateDistance(this.distance,t)}getMinDistance(){return this.minDistance}setSource(t){this.source&&this.source.removeEventListener(n,this.boundRefresh_),this.source=t,t&&t.addEventListener(n,this.boundRefresh_),this.refresh()}refresh(){this.clear(),this.cluster(),this.addFeatures(this.features)}updateDistance(t,e){const i=0===t?0:Math.min(e,t)/t,n=t!==this.distance||this.interpolationRatio!==i;this.distance=t,this.minDistance=e,this.interpolationRatio=i,n&&this.refresh()}cluster(){if(void 0===this.resolution||!this.source)return;const t=[1/0,1/0,-1/0,-1/0],e=this.distance*this.resolution,i=this.source.getFeatures(),n={};for(let r=0,s=i.length;r<s;r++){const s=i[r];if(!(z(s)in n)){const i=this.geometryFunction(s);if(i){Wt(i.getCoordinates(),t),Nt(t,e,t);const r=this.source.getFeaturesInExtent(t).filter((function(t){const e=z(t);return!(e in n)&&(n[e]=!0,!0)}));this.features.push(this.createCluster(r,t))}}}}createCluster(t,e){const i=[0,0];for(let e=t.length-1;e>=0;--e){const n=this.geometryFunction(t[e]);n?Ze(i,n.getCoordinates()):t.splice(e,1)}ti(i,1/t.length);const n=oe(e),r=this.interpolationRatio,s=new zr([i[0]*(1-r)+n[0]*r,i[1]*(1-r)+n[1]*r]);return this.createCustomCluster_?this.createCustomCluster_(s,t):new Mt({geometry:s,features:t})}},Yb.source.DataTile=Jd,Yb.source.GeoTIFF=ug,Yb.source.Google=class extends hd{constructor(t){const e=!!t.highDpi;super({attributionsCollapsible:t.attributionsCollapsible,cacheSize:t.cacheSize,crossOrigin:"anonymous",interpolate:t.interpolate,projection:"EPSG:3857",reprojectionErrorThreshold:t.reprojectionErrorThreshold,state:"loading",tileLoadFunction:t.tileLoadFunction,tilePixelRatio:e?2:1,wrapX:void 0===t.wrapX||t.wrapX,transition:t.transition,zDirection:t.zDirection}),this.apiKey_=t.key,this.error_=null;const i={mapType:t.mapType||"roadmap",language:t.language||"en-US",region:t.region||"US"};t.imageFormat&&(i.imageFormat=t.imageFormat),t.scale&&(i.scale=t.scale),e&&(i.highDpi=!0),t.layerTypes&&(i.layerTypes=t.layerTypes),t.styles&&(i.styles=t.styles),!0===t.overlay&&(i.overlay=!0),t.apiOptions&&(i.apiOptions=t.apiOptions),this.sessionTokenRequest_=i,this.sessionTokenValue_,this.sessionRefreshId_,this.previousViewportAttribution_,this.previousViewportExtent_,this.createSession_()}getError(){return this.error_}fetchSessionToken(t,e){return fetch(t,e)}async createSession_(){const t="https://tile.googleapis.com/v1/createSession?key="+this.apiKey_,e={method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(this.sessionTokenRequest_)},i=await this.fetchSessionToken(t,e);if(!i.ok){try{const t=await i.json();this.error_=new Error(t.error.message)}catch{this.error_=new Error("Error fetching session token")}return void this.setState("error")}const n=await i.json(),r=this.getTilePixelRatio(1),s=[n.tileWidth/r,n.tileHeight/r];this.tileGrid=Nu({extent:ju(this.getProjection()),maxZoom:22,tileSize:s});const o=n.session;this.sessionTokenValue_=o;const a=this.apiKey_;this.tileUrlFunction=function(t,e,i){return`https://tile.googleapis.com/v1/2dtiles/${t[0]}/${t[1]}/${t[2]}?session=${o}&key=${a}`};const l=1e3*parseInt(n.expiry,10),h=Math.max(l-Date.now()-6e4,1);this.sessionRefreshId_=setTimeout((()=>this.createSession_()),h),this.setAttributions(this.fetchAttributions_.bind(this)),this.setState("ready")}async fetchAttributions_(t){if(t.viewHints[eo]||t.viewHints[io]||t.animate)return this.previousViewportAttribution_;const[e,i]=bn(re(t.extent),t.viewState.projection),[n,r]=bn(ge(t.extent),t.viewState.projection),s=`zoom=${this.getTileGrid().getZForResolution(t.viewState.resolution,this.zDirection)}&north=${r}&south=${i}&east=${n}&west=${e}`;if(this.previousViewportExtent_==s)return this.previousViewportAttribution_;this.previousViewportExtent_=s;const o=`https://tile.googleapis.com/tile/v1/viewport?session=${this.sessionTokenValue_}&key=${this.apiKey_}&${s}`;return this.previousViewportAttribution_=await fetch(o).then((t=>t.json())).then((t=>t.copyright)),this.previousViewportAttribution_}disposeInternal(){clearTimeout(this.sessionRefreshId_),super.disposeInternal()}},Yb.source.IIIF=class extends hd{constructor(t){const e=t||{};let i=e.url||"";i+=i.lastIndexOf("/")===i.length-1||""===i?"":"/";const n=e.version||gg,r=e.sizes||[],s=e.size;Ft(null!=s&&Array.isArray(s)&&2==s.length&&!isNaN(s[0])&&s[0]>0&&!isNaN(s[1])&&s[1]>0,"Missing or invalid `size`");const o=s[0],a=s[1],l=e.tileSize,h=e.tilePixelRatio||1,c=e.format||"jpg",u=e.quality||(e.version==dg?"native":"default");let d=e.resolutions||[];const g=e.supports||[],f=e.extent||[0,-a,o,0],p=null!=r&&Array.isArray(r)&&r.length>0,m=void 0!==l&&("number"==typeof l&&Number.isInteger(l)&&l>0||Array.isArray(l)&&l.length>0),_=null!=g&&Array.isArray(g)&&(g.includes("regionByPx")||g.includes("regionByPct"))&&(g.includes("sizeByWh")||g.includes("sizeByH")||g.includes("sizeByW")||g.includes("sizeByPct"));let y,x,v;if(d.sort((function(t,e){return e-t})),m||_)if(null!=l&&("number"==typeof l&&Number.isInteger(l)&&l>0?(y=l,x=l):Array.isArray(l)&&l.length>0&&((1==l.length||null==l[1]&&Number.isInteger(l[0]))&&(y=l[0],x=l[0]),2==l.length&&(Number.isInteger(l[0])&&Number.isInteger(l[1])?(y=l[0],x=l[1]):null==l[0]&&Number.isInteger(l[1])&&(y=l[1],x=l[1])))),void 0!==y&&void 0!==x||(y=_o,x=_o),0==d.length){v=Math.max(Math.ceil(Math.log(o/y)/Math.LN2),Math.ceil(Math.log(a/x)/Math.LN2));for(let t=v;t>=0;t--)d.push(Math.pow(2,t))}else{const t=Math.max(...d);v=Math.round(Math.log(t)/Math.LN2)}else if(y=o,x=a,d=[],p){r.sort((function(t,e){return t[0]-e[0]})),v=-1;const t=[];for(let e=0;e<r.length;e++){const i=o/r[e][0];d.length>0&&d[d.length-1]==i?t.push(e):(d.push(i),v++)}if(t.length>0)for(let e=0;e<t.length;e++)r.splice(t[e]-e,1)}else d.push(1),r.push([o,a]),v=0;const E=new Lu({tileSize:[y,x],extent:f,origin:de(f),resolutions:d}),S=vg.bind(null,Nl(l||256).map((function(t){return t*h})));super({attributions:e.attributions,attributionsCollapsible:e.attributionsCollapsible,cacheSize:e.cacheSize,crossOrigin:e.crossOrigin,interpolate:e.interpolate,projection:e.projection,reprojectionErrorThreshold:e.reprojectionErrorThreshold,state:e.state,tileClass:S,tileGrid:E,tilePixelRatio:e.tilePixelRatio,tileUrlFunction:function(t,e,s){let l,h;const f=t[0];if(f>v)return;const E=t[1],S=t[2],w=d[f];if(!(void 0===E||void 0===S||void 0===w||E<0||Math.ceil(o/w/y)<=E||S<0||Math.ceil(a/w/x)<=S)){if(_||m){const t=E*y*w,e=S*x*w;let i=y*w,r=x*w,s=y,c=x;if(t+i>o&&(i=o-t),e+r>a&&(r=a-e),t+y*w>o&&(s=Math.floor((o-t+w-1)/w)),e+x*w>a&&(c=Math.floor((a-e+w-1)/w)),0==t&&i==o&&0==e&&r==a)l="full";else if(!_||g.includes("regionByPx"))l=t+","+e+","+i+","+r;else if(g.includes("regionByPct")){l="pct:"+Eg(t/o*100)+","+Eg(e/a*100)+","+Eg(i/o*100)+","+Eg(r/a*100)}n!=fg||_&&!g.includes("sizeByWh")?!_||g.includes("sizeByW")?h=s+",":g.includes("sizeByH")?h=","+c:g.includes("sizeByWh")?h=s+","+c:g.includes("sizeByPct")&&(h="pct:"+Eg(100/w)):h=s+","+c}else if(l="full",p){const t=r[f][0],e=r[f][1];h=n==fg?t==o&&e==a?"max":t+","+e:t==o?"full":t+","}else h=n==fg?"max":"full";return i+l+"/"+h+"/0/"+u+"."+c}},transition:e.transition}),this.zDirection=e.zDirection}},Yb.source.Image=Pg,Yb.source.Image.ImageSourceEvent=bg,Yb.source.Image.defaultImageLoadFunction=Ig,Yb.source.Image.getRequestExtent=Lg,Yb.source.ImageArcGISRest=class extends Pg{constructor(t){super({attributions:(t=t||{}).attributions,interpolate:t.interpolate,projection:t.projection,resolutions:t.resolutions}),this.crossOrigin_=void 0!==t.crossOrigin?t.crossOrigin:null,this.hidpi_=void 0===t.hidpi||t.hidpi,this.url_=t.url,this.imageLoadFunction_=void 0!==t.imageLoadFunction?t.imageLoadFunction:Ig,this.params_=Object.assign({},t.params),this.imageSize_=[0,0],this.renderedRevision_=0,this.ratio_=void 0!==t.ratio?t.ratio:1.5,this.loaderProjection_=null}getParams(){return this.params_}getImageInternal(t,e,i,n){return void 0===this.url_?null:(this.loader&&this.loaderProjection_===n||(this.loaderProjection_=n,this.loader=Mg({crossOrigin:this.crossOrigin_,params:this.params_,projection:n,hidpi:this.hidpi_,url:this.url_,ratio:this.ratio_,load:(t,e)=>(this.image.setImage(t),this.imageLoadFunction_(this.image,e),Ls(t))})),super.getImageInternal(t,e,i,n))}getImageLoadFunction(){return this.imageLoadFunction_}getUrl(){return this.url_}setImageLoadFunction(t){this.imageLoadFunction_=t,this.changed()}setUrl(t){t!=this.url_&&(this.url_=t,this.loader=null,this.changed())}updateParams(t){Object.assign(this.params_,t),this.changed()}changed(){this.image=null,super.changed()}},Yb.source.ImageCanvas=class extends Pg{constructor(t){super({attributions:(t=t||{}).attributions,interpolate:t.interpolate,projection:t.projection,resolutions:t.resolutions,state:t.state}),this.canvasFunction_=t.canvasFunction,this.canvas_=null,this.renderedRevision_=0,this.ratio_=void 0!==t.ratio?t.ratio:1.5}getImageInternal(t,e,i,n){e=this.findNearestResolution(e);let r=this.canvas_;if(r&&this.renderedRevision_==this.getRevision()&&r.getResolution()==e&&r.getPixelRatio()==i&&Ut(r.getExtent(),t))return r;ye(t=t.slice(),this.ratio_);const s=[fe(t)/e*i,ce(t)/e*i],o=this.canvasFunction_.call(this,t,e,i,s,n);return o&&(r=new Fs(t,e,i,o)),this.canvas_=r,this.renderedRevision_=this.getRevision(),r}},Yb.source.ImageMapGuide=class extends Pg{constructor(t){super({interpolate:t.interpolate,projection:t.projection,resolutions:t.resolutions}),this.crossOrigin_=void 0!==t.crossOrigin?t.crossOrigin:null,this.displayDpi_=void 0!==t.displayDpi?t.displayDpi:96,this.params_=Object.assign({},t.params),this.url_=t.url,this.imageLoadFunction_=void 0!==t.imageLoadFunction?t.imageLoadFunction:Ig,this.hidpi_=void 0===t.hidpi||t.hidpi,this.metersPerUnit_=void 0!==t.metersPerUnit?t.metersPerUnit:1,this.ratio_=void 0!==t.ratio?t.ratio:1,this.useOverlay_=void 0!==t.useOverlay&&t.useOverlay,this.renderedRevision_=0,this.loaderProjection_=null}getParams(){return this.params_}getImageInternal(t,e,i,n){return void 0===this.url_?null:(this.loader&&this.loaderProjection_===n||(this.loaderProjection_=n,this.loader=Og({crossOrigin:this.crossOrigin_,params:this.params_,hidpi:this.hidpi_,metersPerUnit:this.metersPerUnit_,url:this.url_,useOverlay:this.useOverlay_,ratio:this.ratio_,load:(t,e)=>(this.image.setImage(t),this.imageLoadFunction_(this.image,e),Ls(t))})),super.getImageInternal(t,e,i,n))}getImageLoadFunction(){return this.imageLoadFunction_}updateParams(t){Object.assign(this.params_,t),this.changed()}setImageLoadFunction(t){this.imageLoadFunction_=t,this.changed()}changed(){this.image=null,super.changed()}},Yb.source.ImageStatic=class extends Pg{constructor(t){const e=void 0!==t.crossOrigin?t.crossOrigin:null,i=void 0!==t.imageLoadFunction?t.imageLoadFunction:Ig;super({attributions:t.attributions,interpolate:t.interpolate,projection:vn(t.projection)}),this.url_=t.url,this.imageExtent_=t.imageExtent,this.image=null,this.image=new Rs(this.imageExtent_,void 0,1,Dg({url:t.url,imageExtent:t.imageExtent,crossOrigin:e,load:(t,e)=>(this.image.setImage(t),i(this.image,e),Ls(t))})),this.image.addEventListener(n,this.handleImageChange.bind(this))}getImageExtent(){return this.imageExtent_}getImageInternal(t,e,i,n){return pe(t,this.image.getExtent())?this.image:null}getUrl(){return this.url_}},Yb.source.ImageTile=zg,Yb.source.ImageWMS=class extends Pg{constructor(t){super({attributions:(t=t||{}).attributions,interpolate:t.interpolate,projection:t.projection,resolutions:t.resolutions}),this.crossOrigin_=void 0!==t.crossOrigin?t.crossOrigin:null,this.url_=t.url,this.imageLoadFunction_=void 0!==t.imageLoadFunction?t.imageLoadFunction:Ig,this.params_=Object.assign({},t.params),this.serverType_=t.serverType,this.hidpi_=void 0===t.hidpi||t.hidpi,this.renderedRevision_=0,this.ratio_=void 0!==t.ratio?t.ratio:1.5,this.loaderProjection_=null}getFeatureInfoUrl(t,e,i,n){const r=vn(i),s=this.getProjection();s&&s!==r&&(e=yu(s,r,t,e),t=Mn(t,r,s));return Hg({url:this.url_,params:{...this.params_,...n},projection:s||r},t,e)}getLegendUrl(t,e){return Kg({url:this.url_,params:{...this.params_,...e}},t)}getParams(){return this.params_}getImageInternal(t,e,i,n){return void 0===this.url_?null:(this.loader&&this.loaderProjection_===n||(this.loaderProjection_=n,this.loader=Yg({crossOrigin:this.crossOrigin_,params:this.params_,projection:n,serverType:this.serverType_,hidpi:this.hidpi_,url:this.url_,ratio:this.ratio_,load:(t,e)=>(this.image.setImage(t),this.imageLoadFunction_(this.image,e),Ls(t))})),super.getImageInternal(t,e,i,n))}getImageLoadFunction(){return this.imageLoadFunction_}getUrl(){return this.url_}setImageLoadFunction(t){this.imageLoadFunction_=t,this.changed()}setUrl(t){t!=this.url_&&(this.url_=t,this.loader=null,this.changed())}updateParams(t){Object.assign(this.params_,t),this.changed()}changed(){this.image=null,super.changed()}},Yb.source.OGCMapTile=class extends hd{constructor(t){super({attributions:t.attributions,cacheSize:t.cacheSize,crossOrigin:t.crossOrigin,interpolate:t.interpolate,projection:t.projection,reprojectionErrorThreshold:t.reprojectionErrorThreshold,state:"loading",tileLoadFunction:t.tileLoadFunction,wrapX:void 0===t.wrapX||t.wrapX,transition:t.transition});rf({url:t.url,projection:this.getProjection(),mediaType:t.mediaType,context:t.context||null,collections:t.collections}).then(this.handleTileSetInfo_.bind(this)).catch(this.handleError_.bind(this))}handleTileSetInfo_(t){this.tileGrid=t.grid,this.projection=t.projection,this.setTileUrlFunction(t.urlFunction,t.urlTemplate),this.setState("ready")}handleError_(t){Ve(t),this.setState("error")}},Yb.source.OGCVectorTile=class extends sf{constructor(t){super({attributions:t.attributions,attributionsCollapsible:t.attributionsCollapsible,cacheSize:t.cacheSize,format:t.format,overlaps:t.overlaps,projection:t.projection,tileClass:t.tileClass,transition:t.transition,wrapX:t.wrapX,zDirection:t.zDirection,state:"loading"});rf({url:t.url,projection:this.getProjection(),mediaType:t.mediaType,supportedMediaTypes:t.format.supportedMediaTypes,context:t.context||null,collections:t.collections}).then(this.handleTileSetInfo_.bind(this)).catch(this.handleError_.bind(this))}handleTileSetInfo_(t){this.tileGrid=t.grid,this.projection=t.projection,this.setTileUrlFunction(t.urlFunction,t.urlTemplate),this.setState("ready")}handleError_(t){Ve(t),this.setState("error")}},Yb.source.OSM=class extends dd{constructor(t){let e;e=void 0!==(t=t||{}).attributions?t.attributions:[af];const i=void 0!==t.crossOrigin?t.crossOrigin:"anonymous",n=void 0!==t.url?t.url:"https://tile.openstreetmap.org/{z}/{x}/{y}.png";super({attributions:e,attributionsCollapsible:!1,cacheSize:t.cacheSize,crossOrigin:i,interpolate:t.interpolate,maxZoom:void 0!==t.maxZoom?t.maxZoom:19,reprojectionErrorThreshold:t.reprojectionErrorThreshold,tileLoadFunction:t.tileLoadFunction,transition:t.transition,url:n,wrapX:t.wrapX,zDirection:t.zDirection})}},Yb.source.OSM.ATTRIBUTION=af,Yb.source.Raster=Ff,Yb.source.Raster.Processor=bf,Yb.source.Raster.RasterSourceEvent=Lf,Yb.source.SentinelHub=class extends Jd{constructor(t){const e=t||{};super({state:"loading",projection:e.projection,attributionsCollapsible:e.attributionsCollapsible,interpolate:e.interpolate,tileSize:e.tileSize||d_,wrapX:void 0===e.wrapX||e.wrapX,transition:e.transition}),this.setLoader(((t,e,i)=>this.loadTile_(t,e,i,1))),this.error_=null,this.evalscript_="",this.inputData_=null,this.processUrl_=e.url||"https://services.sentinel-hub.com/api/v1/process",this.token_="",this.tokenRenewalId_,e.auth&&this.setAuth(e.auth),e.data&&this.setData(e.data),e.evalscript&&this.setEvalscript(e.evalscript)}async setAuth(t){if(clearTimeout(this.tokenRenewalId_),"string"==typeof t)return this.token_=t,void this.fireWhenReady_();let e,i;try{e=await async function(t){const e=t.tokenUrl||"https://services.sentinel-hub.com/auth/realms/main/protocol/openid-connect/token",i=new URLSearchParams;i.append("grant_type","client_credentials"),i.append("client_id",t.clientId),i.append("client_secret",t.clientSecret);const n={method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:i},r=await fetch(e,n);if(!r.ok){if(401===r.status)throw new Error("Bad client id or secret");throw new Error("Failed to get token")}return(await r.json()).access_token}(t),i=g_(e)}catch(t){return this.error_=t,void this.setState("error")}this.token_=e;const n=1e3*i.exp,r=Math.max(n-Date.now()-6e4,1);this.tokenRenewalId_=setTimeout((()=>this.setAuth(t)),r),this.fireWhenReady_()}setData(t){this.inputData_=t,this.fireWhenReady_()}setEvalscript(t){let e;if("string"==typeof t)e=t;else try{e=function(t){return`//VERSION=${t.version||"3"}\n    ${p_("setup",t.setup)}\n    ${p_("evaluatePixel",t.evaluatePixel)}\n    ${p_("updateOutput",t.updateOutput)}\n  `}(t)}catch(t){return this.error_=t,void this.setState("error")}this.evalscript_=e,this.fireWhenReady_()}fireWhenReady_(){if(!this.token_||!this.evalscript_||!this.inputData_)return;"ready"!==this.getState()?this.setState("ready"):this.changed()}async loadTile_(t,e,i,n){const r=this.getTileGrid().getTileCoordExtent([t,e,i]),s=this.getTileSize(t),o={input:{bounds:{bbox:r,properties:{crs:f_(this.getProjection())}},data:this.inputData_},output:{width:s[0],height:s[1]},evalscript:this.evalscript_},a={method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.token_}`,"Access-Control-Request-Headers":"Retry-After"},body:JSON.stringify(o),credentials:"include"},l=await fetch(this.processUrl_,a);if(!l.ok){if(429===l.status&&n<9){const r=500*2**n;return await(h=r,new Promise((t=>setTimeout(t,h)))),this.loadTile_(e,i,t,n+1)}throw new Error(`Failed to get tile: ${l.statusText}`)}var h;return async function(t){const e=await t.blob();return new Promise(((t,i)=>{const n=new Image,r=URL.createObjectURL(e);n.onload=()=>{URL.revokeObjectURL(r),t(n)},n.onerror=()=>{URL.revokeObjectURL(r),i(new Error("Failed to load image"))},n.src=r}))}(l)}getError(){return this.error_}disposeInternal(){clearTimeout(this.tokenRenewalId_),super.disposeInternal()}},Yb.source.SentinelHub.getProjectionIdentifier=f_,Yb.source.SentinelHub.parseTokenClaims=g_,Yb.source.SentinelHub.serializeFunction=p_,Yb.source.Source=ed,Yb.source.StadiaMaps=class extends dd{constructor(t){const e=t.layer.indexOf("-"),i=-1==e?t.layer:t.layer.slice(0,e),n=Nf[i]||{minZoom:0,maxZoom:20,retina:!0},r=Df[t.layer],s=t.apiKey?"?api_key="+t.apiKey:"",o=n.retina&&t.retina?"@2x":"",a=void 0!==t.url?t.url:"https://tiles.stadiamaps.com/tiles/"+t.layer+"/{z}/{x}/{y}"+o+"."+r.extension+s,l=['&copy; <a href="https://www.stadiamaps.com/" target="_blank">Stadia Maps</a>','&copy; <a href="https://openmaptiles.org/" target="_blank">OpenMapTiles</a>',af];t.layer.startsWith("stamen_")&&l.splice(1,0,'&copy; <a href="https://stamen.com/" target="_blank">Stamen Design</a>'),super({attributions:l,cacheSize:t.cacheSize,crossOrigin:"anonymous",interpolate:t.interpolate,maxZoom:void 0!==t.maxZoom?t.maxZoom:n.maxZoom,minZoom:void 0!==t.minZoom?t.minZoom:n.minZoom,reprojectionErrorThreshold:t.reprojectionErrorThreshold,tileLoadFunction:t.tileLoadFunction,transition:t.transition,url:a,tilePixelRatio:o?2:1,wrapX:t.wrapX,zDirection:t.zDirection})}},Yb.source.Tile=nd,Yb.source.Tile.TileSourceEvent=rd,Yb.source.TileArcGISRest=class extends hd{constructor(t){super({attributions:(t=t||{}).attributions,cacheSize:t.cacheSize,crossOrigin:t.crossOrigin,interpolate:t.interpolate,projection:t.projection,reprojectionErrorThreshold:t.reprojectionErrorThreshold,tileGrid:t.tileGrid,tileLoadFunction:t.tileLoadFunction,url:t.url,urls:t.urls,wrapX:void 0===t.wrapX||t.wrapX,transition:t.transition,zDirection:t.zDirection}),this.params_=Object.assign({},t.params),this.hidpi_=void 0===t.hidpi||t.hidpi,this.tmpExtent_=[1/0,1/0,-1/0,-1/0],this.setKey(this.getKeyForParams_())}getKeyForParams_(){let t=0;const e=[];for(const i in this.params_)e[t++]=i+"-"+this.params_[i];return e.join("/")}getParams(){return this.params_}getRequestUrl_(t,e,i,n,r,s){const o=this.urls;if(!o)return;let a;if(1==o.length)a=o[0];else{a=o[Ie(Ru(t),o.length)]}return Fg(a,i,(this.tileGrid||this.getTileGridForProjection(r)).getResolution(t[0]),n,r,s)}getTilePixelRatio(t){return this.hidpi_?t:1}updateParams(t){Object.assign(this.params_,t),this.setKey(this.getKeyForParams_())}tileUrlFunction(t,e,i){let n=this.getTileGrid();if(n||(n=this.getTileGridForProjection(i)),n.getResolutions().length<=t[0])return;1==e||this.hidpi_||(e=1);const r=n.getTileCoordExtent(t,this.tmpExtent_);let s=Nl(n.getTileSize(t[0]),this.tmpSize);1!=e&&(s=Dl(s,e,this.tmpSize));const o={F:"image",FORMAT:"PNG32",TRANSPARENT:!0};return Object.assign(o,this.params_),this.getRequestUrl_(t,s,r,e,i,o)}},Yb.source.TileDebug=class extends zg{constructor(t){const e=(t=t||{}).template||"z:{z} x:{x} y:{y}",i=t.source;super({transition:0,wrapX:void 0!==t.wrapX?t.wrapX:void 0!==i?i.getWrapX():void 0});const r=()=>{this.projection=void 0!==t.projection?vn(t.projection):void 0!==i?i.getProjection():this.projection,this.tileGrid=void 0!==t.tileGrid?t.tileGrid:void 0!==i?i.getTileGrid():this.tileGrid,this.zDirection=void 0!==t.zDirection?t.zDirection:void 0!==i?i.zDirection:this.zDirection,i instanceof Jd&&(this.transformMatrix=i.transformMatrix?.slice()||null);const n=this.tileGrid;n&&this.setTileSizes(n.getResolutions().map(((t,e)=>Nl(n.getTileSize(e)).map((t=>Math.max(Math.floor(t),1)))))),this.setLoader(((t,i,n,r)=>{const s=$u(e,t,i,n,r.maxY),[o,a]=this.getTileSize(t),l=pt(o,a);return l.strokeStyle="grey",l.strokeRect(.5,.5,o+.5,a+.5),l.fillStyle="grey",l.strokeStyle="white",l.textAlign="center",l.textBaseline="middle",l.font="24px sans-serif",l.lineWidth=4,l.strokeText(s,o/2,a/2,o),l.fillText(s,o/2,a/2,o),l.canvas})),this.setState("ready")};if(void 0===i||"ready"===i.getState())r();else{const t=()=>{"ready"===i.getState()&&(i.removeEventListener(n,t),r())};i.addEventListener(n,t)}}},Yb.source.TileImage=hd,Yb.source.TileJSON=class extends hd{constructor(t){if(super({attributions:t.attributions,cacheSize:t.cacheSize,crossOrigin:t.crossOrigin,interpolate:t.interpolate,projection:vn("EPSG:3857"),reprojectionErrorThreshold:t.reprojectionErrorThreshold,state:"loading",tileLoadFunction:t.tileLoadFunction,wrapX:void 0===t.wrapX||t.wrapX,transition:t.transition,zDirection:t.zDirection}),this.tileJSON_=null,this.tileSize_=t.tileSize,t.url)if(t.jsonp)Qc(t.url,this.handleTileJSONResponse.bind(this),this.handleTileJSONError.bind(this));else{const e=new XMLHttpRequest;e.addEventListener("load",this.onXHRLoad_.bind(this)),e.addEventListener("error",this.onXHRError_.bind(this)),e.open("GET",t.url),e.send()}else{if(!t.tileJSON)throw new Error("Either `url` or `tileJSON` options must be provided");this.handleTileJSONResponse(t.tileJSON)}}onXHRLoad_(t){const e=t.target;if(!e.status||e.status>=200&&e.status<300){let t;try{t=JSON.parse(e.responseText)}catch{return void this.handleTileJSONError()}this.handleTileJSONResponse(t)}else this.handleTileJSONError()}onXHRError_(t){this.handleTileJSONError()}getTileJSON(){return this.tileJSON_}handleTileJSONResponse(t){const e=vn("EPSG:4326"),i=this.getProjection();let n;if(void 0!==t.bounds){const r=In(e,i);n=ve(t.bounds,r)}const r=ju(i),s=t.minzoom||0,o=Nu({extent:r,maxZoom:t.maxzoom||22,minZoom:s,tileSize:this.tileSize_});if(this.tileGrid=o,this.tileUrlFunction=Hu(t.tiles,o),t.attribution&&!this.getAttributions()){const e=void 0!==n?n:r;this.setAttributions((function(i){return pe(e,i.extent)?[t.attribution]:null}))}this.tileJSON_=t,this.setState("ready")}handleTileJSONError(){this.setState("error")}},Yb.source.TileWMS=class extends hd{constructor(t){t=t||{};const e=Object.assign({},t.params);super({attributions:t.attributions,attributionsCollapsible:t.attributionsCollapsible,cacheSize:t.cacheSize,crossOrigin:t.crossOrigin,interpolate:t.interpolate,projection:t.projection,reprojectionErrorThreshold:t.reprojectionErrorThreshold,tileClass:t.tileClass,tileGrid:t.tileGrid,tileLoadFunction:t.tileLoadFunction,url:t.url,urls:t.urls,wrapX:void 0===t.wrapX||t.wrapX,transition:t.transition,zDirection:t.zDirection}),this.gutter_=void 0!==t.gutter?t.gutter:0,this.params_=e,this.v13_=!0,this.serverType_=t.serverType,this.hidpi_=void 0===t.hidpi||t.hidpi,this.tmpExtent_=[1/0,1/0,-1/0,-1/0],this.updateV13_(),this.setKey(this.getKeyForParams_())}getFeatureInfoUrl(t,e,i,n){const r=vn(i),s=this.getProjection()||r;let o=this.getTileGrid();o||(o=this.getTileGridForProjection(s));const a=Mn(t,r,s),l=yu(s,r,t,e),h=o.getZForResolution(l,this.zDirection),c=o.getResolution(h),u=o.getTileCoordForCoordAndZ(a,h);if(o.getResolutions().length<=u[0])return;let d=o.getTileCoordExtent(u,this.tmpExtent_);const g=this.gutter_;0!==g&&(d=Nt(d,c*g,d));const f={QUERY_LAYERS:this.params_.LAYERS};Object.assign(f,Zg(this.params_,"GetFeatureInfo"),n);const p=Math.floor((a[0]-d[0])/c),m=Math.floor((d[3]-a[1])/c);return f[this.v13_?"I":"X"]=p,f[this.v13_?"J":"Y"]=m,this.getRequestUrl_(u,d,1,s||r,f)}getLegendUrl(t,e){if(void 0===this.urls[0])return;const i={SERVICE:"WMS",VERSION:Xg,REQUEST:"GetLegendGraphic",FORMAT:"image/png"};if(void 0===e||void 0===e.LAYER){const t=this.params_.LAYERS;if(!(!Array.isArray(t)||1===t.length))return;i.LAYER=t}if(void 0!==t){const e=this.getProjection()?this.getProjection().getMetersPerUnit():1,n=28e-5;i.SCALE=t*e/n}return Object.assign(i,e),Uu(this.urls[0],i)}getGutter(){return this.gutter_}getParams(){return this.params_}getRequestUrl_(t,e,i,n,r){const s=this.urls;if(!s)return;let o;if(1==s.length)o=s[0];else{o=s[Ie(Ru(t),s.length)]}return Wg(e,(this.tileGrid||this.getTileGridForProjection(n)).getResolution(t[0]),i,n,o,r,this.serverType_)}getTilePixelRatio(t){return this.hidpi_&&void 0!==this.serverType_?t:1}getKeyForParams_(){let t=0;const e=[];for(const i in this.params_)e[t++]=i+"-"+this.params_[i];return e.join("/")}updateParams(t){Object.assign(this.params_,t),this.updateV13_(),this.setKey(this.getKeyForParams_())}updateV13_(){const t=this.params_.VERSION||Xg;this.v13_=We(t,"1.3")>=0}tileUrlFunction(t,e,i){let n=this.getTileGrid();if(n||(n=this.getTileGridForProjection(i)),n.getResolutions().length<=t[0])return;1==e||this.hidpi_&&void 0!==this.serverType_||(e=1);const r=n.getResolution(t[0]);let s=n.getTileCoordExtent(t,this.tmpExtent_);const o=this.gutter_;0!==o&&(s=Nt(s,r*o,s));const a=Object.assign({},Zg(this.params_,"GetMap"));return this.getRequestUrl_(t,s,e,i,a)}},Yb.source.UTFGrid=class extends nd{constructor(t){if(super({projection:vn("EPSG:3857"),state:"loading",wrapX:void 0===t.wrapX||t.wrapX,zDirection:t.zDirection}),this.preemptive_=void 0===t.preemptive||t.preemptive,this.tileUrlFunction_=qu,this.template_=void 0,this.jsonp_=t.jsonp||!1,t.url)if(this.jsonp_)Qc(t.url,this.handleTileJSONResponse.bind(this),this.handleTileJSONError.bind(this));else{const e=new XMLHttpRequest;e.addEventListener("load",this.onXHRLoad_.bind(this)),e.addEventListener("error",this.onXHRError_.bind(this)),e.open("GET",t.url),e.send()}else{if(!t.tileJSON)throw new Error("Either `url` or `tileJSON` options must be provided");this.handleTileJSONResponse(t.tileJSON)}}onXHRLoad_(t){const e=t.target;if(!e.status||e.status>=200&&e.status<300){let t;try{t=JSON.parse(e.responseText)}catch{return void this.handleTileJSONError()}this.handleTileJSONResponse(t)}else this.handleTileJSONError()}onXHRError_(t){this.handleTileJSONError()}getTemplate(){return this.template_}forDataAtCoordinateAndResolution(t,e,i,n){if(this.tileGrid){const r=this.tileGrid.getZForResolution(e,this.zDirection),s=this.tileGrid.getTileCoordForCoordAndZ(t,r);this.getTile(s[0],s[1],s[2],1,this.getProjection()).forDataAtCoordinate(t,i,n)}else!0===n?setTimeout((function(){i(null)}),0):i(null)}handleTileJSONError(){this.setState("error")}handleTileJSONResponse(t){const e=vn("EPSG:4326"),i=this.getProjection();let n;if(void 0!==t.bounds){const r=In(e,i);n=ve(t.bounds,r)}const r=ju(i),s=t.minzoom||0,o=Nu({extent:r,maxZoom:t.maxzoom||22,minZoom:s});this.tileGrid=o,this.template_=t.template;const a=t.grids;if(a){if(this.tileUrlFunction_=Hu(a,o),t.attribution){const e=void 0!==n?n:r;this.setAttributions((function(i){return pe(e,i.extent)?[t.attribution]:null}))}this.setState("ready")}else this.setState("error")}getTile(t,e,i,n,r){const s=[t,e,i],o=this.getTileCoordForTileUrlFunction(s,r),a=this.tileUrlFunction_(o,n,r);return new kf(s,void 0!==a?Y:J,void 0!==a?a:"",this.tileGrid.getTileCoordExtent(s),this.preemptive_,this.jsonp_)}},Yb.source.UTFGrid.CustomTile=kf,Yb.source.UrlTile=ld,Yb.source.Vector=kd,Yb.source.Vector.VectorSourceEvent=Nd,Yb.source.VectorTile=sf,Yb.source.VectorTile.defaultLoadFunction=of,Yb.source.WMTS=class extends hd{constructor(t){const e=void 0!==t.requestEncoding?t.requestEncoding:"KVP",i=t.tileGrid;let n=t.urls;void 0===n&&void 0!==t.url&&(n=Zu(t.url)),super({attributions:t.attributions,attributionsCollapsible:t.attributionsCollapsible,cacheSize:t.cacheSize,crossOrigin:t.crossOrigin,interpolate:t.interpolate,projection:t.projection,reprojectionErrorThreshold:t.reprojectionErrorThreshold,tileClass:t.tileClass,tileGrid:i,tileLoadFunction:t.tileLoadFunction,tilePixelRatio:t.tilePixelRatio,urls:n,wrapX:void 0!==t.wrapX&&t.wrapX,transition:t.transition,zDirection:t.zDirection}),this.version_=void 0!==t.version?t.version:"1.0.0",this.format_=void 0!==t.format?t.format:"image/jpeg",this.dimensions_=void 0!==t.dimensions?t.dimensions:{},this.layer_=t.layer,this.matrixSet_=t.matrixSet,this.style_=t.style,this.requestEncoding_=e,this.setKey(this.getKeyForDimensions_()),n&&n.length>0&&(this.tileUrlFunction=Ku(n.map(this.createFromWMTSTemplate.bind(this))))}setUrls(t){this.urls=t;const e=t.join("\n");this.setTileUrlFunction(Ku(t.map(this.createFromWMTSTemplate.bind(this))),e)}getDimensions(){return this.dimensions_}getFormat(){return this.format_}getLayer(){return this.layer_}getMatrixSet(){return this.matrixSet_}getRequestEncoding(){return this.requestEncoding_}getStyle(){return this.style_}getVersion(){return this.version_}getKeyForDimensions_(){const t=this.urls?this.urls.slice(0):[];for(const e in this.dimensions_)t.push(e+"-"+this.dimensions_[e]);return t.join("/")}updateDimensions(t){Object.assign(this.dimensions_,t),this.setKey(this.getKeyForDimensions_())}createFromWMTSTemplate(t){const e=this.requestEncoding_,i={layer:this.layer_,style:this.style_,tilematrixset:this.matrixSet_};"KVP"==e&&Object.assign(i,{Service:"WMTS",Request:"GetTile",Version:this.version_,Format:this.format_}),t="KVP"==e?Uu(t,i):t.replace(/\{(\w+?)\}/g,(function(t,e){return e.toLowerCase()in i?i[e.toLowerCase()]:t}));const n=this.tileGrid,r=this.dimensions_;return function(i,s,o){if(!i)return;const a={TileMatrix:n.getMatrixId(i[0]),TileCol:i[1],TileRow:i[2]};Object.assign(a,r);let l=t;return l="KVP"==e?Uu(l,a):l.replace(/\{(\w+?)\}/g,(function(t,e){return encodeURIComponent(a[e])})),l}}},Yb.source.WMTS.optionsFromCapabilities=function(t,e){const i=t.Contents.Layer,n=i?.find((function(t){return t.Identifier==e.layer}));if(!n)return null;const r=t.Contents.TileMatrixSet;let s;s=n.TileMatrixSetLink.length>1?"projection"in e?n.TileMatrixSetLink.findIndex((function(t){const i=r.find((function(e){return e.Identifier==t.TileMatrixSet})).SupportedCRS,n=vn(i),s=vn(e.projection);return n&&s?Pn(n,s):i==e.projection})):n.TileMatrixSetLink.findIndex((function(t){return t.TileMatrixSet==e.matrixSet})):0,s<0&&(s=0);const o=n.TileMatrixSetLink[s].TileMatrixSet,a=n.TileMatrixSetLink[s].TileMatrixSetLimits;let l=n.Format[0];"format"in e&&(l=e.format),s=n.Style.findIndex((function(t){return"style"in e?t.Title==e.style:t.isDefault})),s<0&&(s=0);const h=n.Style[s].Identifier,c={};"Dimension"in n&&n.Dimension.forEach((function(t,e,i){const n=t.Identifier;let r=t.Default;void 0===r&&(r=t.Value[0]),c[n]=r}));const u=t.Contents.TileMatrixSet.find((function(t){return t.Identifier==o}));let d;const g=u.SupportedCRS;if(g&&(d=vn(g)),"projection"in e){const t=vn(e.projection);t&&(d&&!Pn(t,d)||(d=t))}let f=!1;const p=d.getAxisOrientation().startsWith("ne");let m=u.TileMatrix[0],_={MinTileCol:0,MinTileRow:0,MaxTileCol:m.MatrixWidth-1,MaxTileRow:m.MatrixHeight-1};if(a){_=a[a.length-1];const t=u.TileMatrix.find((t=>t.Identifier===_.TileMatrix||u.Identifier+":"+t.Identifier===_.TileMatrix));t&&(m=t)}const y=28e-5*m.ScaleDenominator/d.getMetersPerUnit(),x=p?[m.TopLeftCorner[1],m.TopLeftCorner[0]]:m.TopLeftCorner,v=m.TileWidth*y,E=m.TileHeight*y;let S=u.BoundingBox;S&&p&&(S=[S[1],S[0],S[3],S[2]]);let w=[x[0]+v*_.MinTileCol,x[1]-E*(1+_.MaxTileRow),x[0]+v*(1+_.MaxTileCol),x[1]-E*_.MinTileRow];if(void 0!==S&&!Ut(S,w)){const t=n.WGS84BoundingBox,e=vn("EPSG:4326").getExtent();if(w=S,t)f=t[0]===e[0]&&t[2]===e[2];else{const t=An(S,u.SupportedCRS,"EPSG:4326");f=t[0]-1e-10<=e[0]&&t[2]+1e-10>=e[2]}}const T=Mu(u,w,a),C=[];let R=e.requestEncoding;if(R=void 0!==R?R:"","OperationsMetadata"in t&&"GetTile"in t.OperationsMetadata){const e=t.OperationsMetadata.GetTile.DCP.HTTP.Get;for(let t=0,i=e.length;t<i;++t)if(e[t].Constraint){const i=e[t].Constraint.find((function(t){return"GetEncoding"==t.name})).AllowedValues.Value;if(""===R&&(R=i[0]),"KVP"!==R)break;i.includes("KVP")&&C.push(e[t].href)}else e[t].href&&(R="KVP",C.push(e[t].href))}return 0===C.length&&(R="REST",n.ResourceURL.forEach((function(t){"tile"===t.resourceType&&(l=t.format,C.push(t.template))}))),{urls:C,layer:e.layer,matrixSet:o,format:l,projection:d,requestEncoding:R,tileGrid:T,style:h,dimensions:c,wrapX:f,crossOrigin:e.crossOrigin}},Yb.source.XYZ=dd,Yb.source.Zoomify=class extends hd{constructor(t){const e=t.size,i=void 0!==t.tierSizeCalculation?t.tierSizeCalculation:"default",n=t.tilePixelRatio||1,r=e[0],s=e[1],o=[],a=t.tileSize||_o;let l=a*n;switch(i){case"default":for(;r>l||s>l;)o.push([Math.ceil(r/l),Math.ceil(s/l)]),l+=l;break;case"truncated":let t=r,e=s;for(;t>l||e>l;)o.push([Math.ceil(t/l),Math.ceil(e/l)]),t>>=1,e>>=1;break;default:throw new Error("Unknown `tierSizeCalculation` configured")}o.push([1,1]),o.reverse();const h=[n],c=[0];for(let t=1,e=o.length;t<e;t++)h.push(n<<t),c.push(o[t-1][0]*o[t-1][1]+c[t-1]);h.reverse();const u=new Lu({tileSize:a,extent:t.extent||[0,-s,r,0],resolutions:h});let d=t.url;!d||d.includes("{TileGroup}")||d.includes("{tileIndex}")||(d+="{TileGroup}/{z}-{x}-{y}.jpg");const g=Zu(d);let f=a*n;const p=Ku(g.map((function(t){return function(e,i,n){if(!e)return;const r=e[0],s=e[1],a=e[2],l=s+a*o[r][0],h={z:r,x:s,y:a,tileIndex:l,TileGroup:"TileGroup"+((l+c[r])/f|0)};return t.replace(/\{(\w+?)\}/g,(function(t,e){return h[e]}))}}))),m=vg.bind(null,Nl(a*n));super({attributions:t.attributions,cacheSize:t.cacheSize,crossOrigin:t.crossOrigin,interpolate:t.interpolate,projection:t.projection,tilePixelRatio:n,reprojectionErrorThreshold:t.reprojectionErrorThreshold,tileClass:m,tileGrid:u,tileUrlFunction:p,transition:t.transition}),this.zDirection=t.zDirection;const _=p(u.getTileCoordForCoordAndResolution(oe(u.getExtent()),h[h.length-1]),1,null),y=new Image;y.addEventListener("error",(()=>{f=a,this.changed()})),y.src=_}},Yb.source.Zoomify.CustomTile=vg,Yb.source.arcgisRest={},Yb.source.arcgisRest.createLoader=Mg,Yb.source.arcgisRest.getRequestUrl=Fg,Yb.source.common={},Yb.source.common.DECIMALS=wg,Yb.source.common.DEFAULT_WMS_VERSION="1.3.0",Yb.source.mapguide={},Yb.source.mapguide.createLoader=Og,Yb.source.mapserver={},Yb.source.mapserver.createLoader=function(t){const e=t.load||Ls,i=t.ratio??1,n=t.crossOrigin??null;return function(r,s,o){const a=new Image;a.crossOrigin=n;const l=fe(r=Lg(r,s,o,i))/s,h=ce(r)/s,c=[l*o,h*o],u=function(t,e,i,n){const r=Math.round(n[0]),s=Math.round(n[1]),o=`${r} ${s}`,a=`${i[0]} ${i[1]} ${i[2]} ${i[3]}`,l={mode:"map",map_imagetype:"png",mapext:a,imgext:a,map_size:o,imgx:r/2,imgy:s/2,imgxy:o};return Object.assign(l,e),Uu(t,l)}(t.url,t.params,r,c);return e(a,u).then((t=>({image:t,extent:r,pixelRatio:o})))}},Yb.source.ogcTileUtil={},Yb.source.ogcTileUtil.appendCollectionsQueryParam=Qg,Yb.source.ogcTileUtil.getMapTileUrlTemplate=tf,Yb.source.ogcTileUtil.getTileSetInfo=rf,Yb.source.ogcTileUtil.getVectorTileUrlTemplate=ef,Yb.source.sourcesFromTileGrid=function(t,e){const i=new Su(32),n=t.getExtent();return function(r,s){i.expireCache(),n&&(r=ue(n,r));const o=t.getZForResolution(s),a=[];return t.forEachTileCoord(r,o,(t=>{const n=t.toString();if(!i.containsKey(n)){const r=e(t);i.set(n,r)}a.push(i.get(n))})),a}},Yb.source.static={},Yb.source.static.createLoader=Dg,Yb.source.wms={},Yb.source.wms.DEFAULT_VERSION=Xg,Yb.source.wms.createLoader=Yg,Yb.source.wms.getFeatureInfoUrl=Hg,Yb.source.wms.getImageSrc=Wg,Yb.source.wms.getLegendUrl=Kg,Yb.source.wms.getRequestParams=Zg,Yb.source.wms.getRequestUrl=$g,Yb.sphere={},Yb.sphere.DEFAULT_RADIUS=Ne,Yb.sphere.getArea=function t(e,i){const n=(i=i||{}).radius||Ne,r=i.projection||"EPSG:3857",s=e.getType();"GeometryCollection"!==s&&(e=e.clone().transform(r,"EPSG:4326"));let o,a,l,h,c,u,d=0;switch(s){case"Point":case"MultiPoint":case"LineString":case"MultiLineString":case"LinearRing":break;case"Polygon":for(o=e.getCoordinates(),d=Math.abs(je(o[0],n)),l=1,h=o.length;l<h;++l)d-=Math.abs(je(o[l],n));break;case"MultiPolygon":for(o=e.getCoordinates(),l=0,h=o.length;l<h;++l)for(a=o[l],d+=Math.abs(je(a[0],n)),c=1,u=a.length;c<u;++c)d-=Math.abs(je(a[c],n));break;case"GeometryCollection":{const n=e.getGeometries();for(l=0,h=n.length;l<h;++l)d+=t(n[l],i);break}default:throw new Error("Unsupported geometry type: "+s)}return d},Yb.sphere.getDistance=ke,Yb.sphere.getLength=function t(e,i){const n=(i=i||{}).radius||Ne,r=i.projection||"EPSG:3857",s=e.getType();"GeometryCollection"!==s&&(e=e.clone().transform(r,"EPSG:4326"));let o,a,l,h,c,u,d=0;switch(s){case"Point":case"MultiPoint":break;case"LineString":case"LinearRing":o=e.getCoordinates(),d=Ge(o,n);break;case"MultiLineString":case"Polygon":for(o=e.getCoordinates(),l=0,h=o.length;l<h;++l)d+=Ge(o[l],n);break;case"MultiPolygon":for(o=e.getCoordinates(),l=0,h=o.length;l<h;++l)for(a=o[l],c=0,u=a.length;c<u;++c)d+=Ge(a[c],n);break;case"GeometryCollection":{const n=e.getGeometries();for(l=0,h=n.length;l<h;++l)d+=t(n[l],i);break}default:throw new Error("Unsupported geometry type: "+s)}return d},Yb.sphere.offset=Ue,Yb.string={},Yb.string.compareVersions=We,Yb.string.padNumber=$e,Yb.structs={},Yb.structs.LRUCache=Su,Yb.structs.PriorityQueue=Js,Yb.structs.PriorityQueue.DROP=qs,Yb.structs.RBush=Pd,Yb.style={},Yb.style.Circle=Wh,Yb.style.Fill=Zh,Yb.style.Icon=Hh,Yb.style.IconImage=vh,Yb.style.IconImage.get=Eh,Yb.style.IconImageCache=mh,Yb.style.IconImageCache.getCacheKey=_h,Yb.style.IconImageCache.shared=yh,Yb.style.Image=Vh,Yb.style.RegularShape=$h,Yb.style.Stroke=Kh,Yb.style.Style=qh,Yb.style.Style.createDefaultStyle=tc,Yb.style.Style.createEditingStyle=ec,Yb.style.Style.toFunction=Jh,Yb.style.Text=nc,Yb.style.flat={},Yb.style.flat.createDefaultStyle=Km,Yb.tilecoord={},Yb.tilecoord.createOrUpdate=wu,Yb.tilecoord.fromKey=function(t){return t.split("/").map(Number)},Yb.tilecoord.getCacheKeyForTileKey=function(t){const[e,i,n]=t.substring(t.lastIndexOf("/")+1,t.length).split(",").map(Number);return Tu(e,i,n)},Yb.tilecoord.getKey=Cu,Yb.tilecoord.getKeyZXY=Tu,Yb.tilecoord.hash=Ru,Yb.tilecoord.hashZXY=bu,Yb.tilecoord.withinExtentAndZ=Pu,Yb.tilegrid={},Yb.tilegrid.TileGrid=Lu,Yb.tilegrid.WMTS=Fu,Yb.tilegrid.WMTS.createFromCapabilitiesMatrixSet=Mu,Yb.tilegrid.common={},Yb.tilegrid.common.DEFAULT_MAX_ZOOM=mo,Yb.tilegrid.common.DEFAULT_TILE_SIZE=_o,Yb.tilegrid.createForExtent=Du,Yb.tilegrid.createForProjection=Gu,Yb.tilegrid.createXYZ=Nu,Yb.tilegrid.extentFromProjection=ju,Yb.tilegrid.getForProjection=Au,Yb.tilegrid.wrapX=Ou,Yb.tileurlfunction={},Yb.tileurlfunction.createFromTemplate=Yu,Yb.tileurlfunction.createFromTemplates=Hu,Yb.tileurlfunction.createFromTileUrlFunctions=Ku,Yb.tileurlfunction.nullTileUrlFunction=qu,Yb.transform={},Yb.transform.apply=qn,Yb.transform.compose=er,Yb.transform.composeCssTransform=function(t,e,i,n,r,s,o){return sr(er([1,0,0,1,0,0],t,e,i,n,r,s,o))},Yb.transform.create=Wn,Yb.transform.determinant=nr,Yb.transform.invert=function(t){return ir(t,t)},Yb.transform.makeInverse=ir,Yb.transform.makeScale=function(t,e,i){return Hn(t,e,0,0,i,0,0)},Yb.transform.multiply=Yn,Yb.transform.reset=Zn,Yb.transform.rotate=Jn,Yb.transform.scale=Qn,Yb.transform.set=Hn,Yb.transform.setFromArray=Kn,Yb.transform.toString=sr,Yb.transform.translate=tr,Yb.uri={},Yb.uri.appendParams=Uu,Yb.uri.expandUrl=Zu,Yb.uri.pickUrl=Wu,Yb.uri.renderXYZTemplate=$u,Yb.util={},Yb.util.VERSION="10.4.0",Yb.util.abstract=U,Yb.util.getUid=z,Yb.vec={},Yb.vec.mat4={},Yb.vec.mat4.create=Gd,Yb.vec.mat4.fromTransform=jd,Yb.vec.mat4.orthographic=Ud,Yb.vec.mat4.scale=Bd,Yb.vec.mat4.translate=zd,Yb.vec.mat4.translation=Xd,Yb.webgl={},Yb.webgl.ARRAY_BUFFER=Gf,Yb.webgl.BaseTileRepresentation=yp,Yb.webgl.Buffer=vp,Yb.webgl.Buffer.getArrayClassForType=Ep,Yb.webgl.Canvas={},Yb.webgl.Canvas.Canvas=Vd,Yb.webgl.Canvas.createProgram=Wd,Yb.webgl.DYNAMIC_DRAW=Bf,Yb.webgl.ELEMENT_ARRAY_BUFFER=jf,Yb.webgl.FLOAT=zf,Yb.webgl.Helper=Lp,Yb.webgl.Helper.computeAttributesStride=Fp,Yb.webgl.PaletteTexture=Ap,Yb.webgl.PostProcessingPass=Tp,Yb.webgl.RenderTarget=Dp,Yb.webgl.STATIC_DRAW=Uf,Yb.webgl.STREAM_DRAW=35040,Yb.webgl.ShaderBuilder={},Yb.webgl.ShaderBuilder.COMMON_HEADER=qm,Yb.webgl.ShaderBuilder.ShaderBuilder=Qm,Yb.webgl.TileGeometry=e_,Yb.webgl.TileTexture=jp,Yb.webgl.UNSIGNED_BYTE=5121,Yb.webgl.UNSIGNED_INT=5125,Yb.webgl.UNSIGNED_SHORT=5123,Yb.webgl.getContext=Vf,Yb.webgl.getSupportedExtensions=function(){if(!$f){const t=Vf(document.createElement("canvas"));t&&($f=t.getSupportedExtensions())}return $f},Yb.webgl.styleparser={},Yb.webgl.styleparser.computeHash=o_,Yb.webgl.styleparser.expressionToGlsl=i_,Yb.webgl.styleparser.packColor=n_,Yb.webgl.styleparser.parseLiteralStyle=u_,Yb.xml={},Yb.xml.OBJECT_PROPERTY_NODE_FACTORY=ap,Yb.xml.XML_SCHEMA_INSTANCE_URI=Wf,Yb.xml.createElementNS=Zf,Yb.xml.getAllTextContent=Yf,Yb.xml.getAllTextContent_=Hf,Yb.xml.getAttributeNS=qf,Yb.xml.getDocument=_p,Yb.xml.getXMLSerializer=mp,Yb.xml.isDocument=Kf,Yb.xml.makeArrayExtender=Qf,Yb.xml.makeArrayPusher=tp,Yb.xml.makeArraySerializer=sp,Yb.xml.makeChildAppender=rp,Yb.xml.makeObjectPropertyPusher=ip,Yb.xml.makeObjectPropertySetter=np,Yb.xml.makeReplacer=ep,Yb.xml.makeSequence=lp,Yb.xml.makeSimpleNodeFactory=op,Yb.xml.makeStructureNS=hp,Yb.xml.parse=Jf,Yb.xml.parseNode=cp,Yb.xml.pushParseAndPop=up,Yb.xml.pushSerializeAndPop=gp,Yb.xml.registerDocument=function(t){pp=t},Yb.xml.registerXMLSerializer=function(t){fp=t},Yb.xml.serialize=dp,Yb.VERSION=Yb.util.VERSION,Yb.getUid=Yb.util.getUid,Yb}();
//# sourceMappingURL=ol.js.map;
// source --> https://ermafa-passage.de/wp-content/plugins/osm/js/osm-v3-plugin-lib.js?ver=6.9.4 
/*  (c) Copyright 2022  MiKa (http://wp-osm-plugin.Hyumika.com)

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
*/
 
function osm_addClusterPopupClickhandler(a_MapObj, a_MapStr) {

  var container_div_id = a_MapStr + "_popup";
  var content_div_id = a_MapStr + "_popup-content";
  var closer_div_id = a_MapStr + "_popup-closer";

  var container = document.getElementById(container_div_id);
  var content = document.getElementById(content_div_id);
  var closer = document.getElementById(closer_div_id);

  var popup = new ol.Overlay(/** @type {olx.OverlayOptions} */ ({
    element: container,
    autoPan: true,
    autoPanAnimation: {
      duration: 250
    }
  }));
        
  closer.onclick = function() {
    popup.setPosition(undefined);
    closer.blur();
    return false;
  };
            
  a_MapObj.addOverlay(popup);

  var ClickdisplayFeatureInfo = function(a_evt) {
    var lonlat = ol.proj.transform(a_evt.coordinate, "EPSG:3857", "EPSG:4326");
    var lon = lonlat[0];
    var lat = lonlat[1];

	 pixel = a_evt.pixel;
		
    var features = [];
    var NumOfNamedFeatures = 0;
    a_MapObj.forEachFeatureAtPixel(pixel, function(feature, layer) {
      features.push(feature);
    });
    if (features.length > 0) {
      
      var name_str, desc_str, info = [];
      var description_str = [];
      var i, ii;
      for (i = 0, ii = features.length; i < ii; ++i) {
        var cluster_features = features[i].get('features');
        if (cluster_features.length == 1){
        if (cluster_features[i].get("name")){
          NumOfNamedFeatures++;
          name_str = cluster_features[i].get("name");
          desc_str = cluster_features[i].get("desc");
          description_str = features[i].get("description");
          if (desc_str != undefined){
            name_str = name_str + "<br>" + desc_str;
          }
          if (description_str != undefined){
            name_str = name_str + "<br>" + description_str;
          }
          if (cluster_features[i].length > 0) {name_str = name_str + "<br>"}
        }
        else{

        }
        info.push(name_str);
      }
      }

        content.innerHTML = info.join("") || "(unknown)";
        if (NumOfNamedFeatures > 0){
          popup.setPosition(a_evt.coordinate);
        }
         else {
           popup.setPosition(undefined);
        }
      } 
    };
    a_MapObj.on("singleclick", function(evt) {ClickdisplayFeatureInfo(evt);}); 
}



function osm_addPopupClickhandler(a_MapObj, a_MapStr) {
  var container_div_id = a_MapStr + "_popup";
  var content_div_id = a_MapStr + "_popup-content";
  var closer_div_id = a_MapStr + "_popup-closer";

  var container = document.getElementById(container_div_id);
  var content = document.getElementById(content_div_id);
  var closer = document.getElementById(closer_div_id);

  var popup = new ol.Overlay(/** @type {olx.OverlayOptions} */ ({
    element: container,
    autoPan: true,
    autoPanAnimation: {
      duration: 250
    }
  }));
        
  closer.onclick = function() {
    popup.setPosition(undefined);
    closer.blur();
    return false;
  };
            
  a_MapObj.addOverlay(popup);

  var ClickdisplayFeatureInfo = function(a_evt) {
    var lonlat = ol.proj.transform(a_evt.coordinate, "EPSG:3857", "EPSG:4326");
    var lon = lonlat[0];
    var lat = lonlat[1];

	 pixel = a_evt.pixel;
		
    var features = [];
    var NumOfNamedFeatures = 0;
    a_MapObj.forEachFeatureAtPixel(pixel, function(feature, layer) {
      features.push(feature);
    });
    if (features.length > 0) {
      var name_str, desc_str, info = [];
      var description_str = [];
      var i, ii;
      for (i = 0, ii = features.length; i < ii; ++i) {
        if (features[i].get("name")){
          NumOfNamedFeatures++;
          name_str = features[i].get("name");
          desc_str = features[i].get("desc");
          description_str = features[i].get("description");
          if (desc_str != undefined){
            name_str = name_str + "<br>" + desc_str;
          }
          if (description_str != undefined){
            name_str = name_str + "<br>" + description_str;
          }
          if (features.length > 0) {name_str = name_str + "<br>"}
        }
        else{
          //name_str = "empty";
        }
        info.push(name_str);
      }

        content.innerHTML = info.join("") || "(unknown)";
        if (NumOfNamedFeatures > 0){
          popup.setPosition(a_evt.coordinate);
        }
         else {
           popup.setPosition(undefined);
        }
      } 
    };
    a_MapObj.on("singleclick", function(evt) {ClickdisplayFeatureInfo(evt);}); 
}




function osm_addMarkerLayer(a_mapname, a_lon, a_lat, a_MarkerIcon, a_MarkerXAnchor, a_MarkerYAnchor, a_MarkerText) {
  var iconFeature = new ol.Feature({
    geometry: new ol.geom.Point(
      ol.proj.transform([a_lon,a_lat], "EPSG:4326", "EPSG:3857")),
    name: a_MarkerText
  });
  var iconStyle = new ol.style.Style({
    image: new ol.style.Icon(/** @type {olx.style.IconOptions} */ ({
      anchor: [(a_MarkerXAnchor * -1),(a_MarkerYAnchor * -1)],
      anchorXUnits: "pixels",
      anchorYUnits: "pixels",
      opacity: 0.9,
      src: a_MarkerIcon
    }))
  });
  iconFeature.setStyle(iconStyle);

  var vectorMarkerSource = new ol.source.Vector({
    features: [iconFeature]
  });

  var vectorMarkerLayer = new ol.layer.Vector({
    source: vectorMarkerSource,
    zIndex: 92
  });

  a_mapname.addLayer(vectorMarkerLayer);
}

function osm_addMouseHover(a_mapname){
  a_mapname.on('pointermove', function(evt) {
    a_mapname.getTargetElement().style.cursor =
      a_mapname.hasFeatureAtPixel(evt.pixel) ? 'pointer' : '';
  });
}

function getTileLayer(a_source, a_api_key) {

/* ++++++++ quickfix since stamen is now hosted by Stadia Maps */
  if ((a_source == "stamen_toner") || (a_source == "stamen_watercolor") || (a_source == "stamen_terrain")||(a_source == "stamen_terrain-labels")){
    a_source = "osm";
  } 
/*  ------- */

  if ((a_source == "osm") || (a_source == "brezhoneg")||(a_source == "openseamap")){
   return new ol.layer.Tile({
        source: new ol.source.OSM({ }),
        zIndex: 90
      });
  }
  else if (a_source == "hot"){
      return new ol.layer.Tile({
            source: new ol.source.OSM({
               attributions: "Maps &copy; " +
               "<a href=\"http://hot.openstreetmap.org/\">Humanitarian OpenStreetMap Team.</a>" + ol.source.OSM.ATTRIBUTION,
               url: "https://{a-c}.tile.openstreetmap.fr/hot/{z}/{x}/{y}.png"
             }),
             zIndex: 90
           });
    }	
	 else if (a_source == "opentopomap"){
      return new ol.layer.Tile({
            source: new ol.source.XYZ({
               attributions: "Kartendarstellung: &copy;" + "<a href=\"https://opentopomap.org\">OpenTopoMap</a> (<a href=\"https://creativecommons.org/licenses/by-sa/3.0/\">CC-BY-SA</a>)" + "Maps &copy; " +
               "<a href=\"http://viewfinderpanoramas.org\">SRTM</a>" + ol.source.OSM.ATTRIBUTION,
               url: "https://{a-c}.tile.opentopomap.org/{z}/{x}/{y}.png"
             }),
             zIndex: 90
           });
    }
    else if (a_source == "stamen_toner"){
      return new ol.layer.Tile({
        source: new ol.source.Stamen({
            layer: "toner"
          }),
          zIndex: 90
        });
     }
	  else if (a_source == "stamen_watercolor"){
      return new ol.layer.Tile({
        source: new ol.source.Stamen({
            layer: "watercolor"
          }),
          zIndex: 90
        });
      }
      else if (a_source == "stamen_terrain"){
      return new ol.layer.Tile({
        source: new ol.source.Stamen({
            layer: "terrain"
          }),
          zIndex: 90
        });
      }
      else if (a_source == "stamen_terrain-labels"){
        return new ol.layer.Tile({
          source: new ol.source.Stamen({
          	layer: "terrain-labels"}),
          zIndex: 90
        });
      }  
	  else if (a_source == "cyclemap"){
       return new ol.layer.Tile({
            source: new ol.source.OSM({
              attributions: "Maps &copy; " +
              "<a href=\"http://www.thunderforest.com/\">Thunderforest, Data.</a>" + ol.source.OSM.ATTRIBUTION,
              url:   "https://{a-c}.tile.thunderforest.com/cycle/{z}/{x}/{y}.png?apikey="+ a_api_key                           
             }),
             zIndex: 90
           });
     }
     else if (a_source == "outdoor"){
          return new ol.layer.Tile({
            source: new ol.source.OSM({
              attributions: "Maps &copy; " +
              "<a href=\"http://www.thunderforest.com/\">Thunderforest, Data.</a>" + ol.source.OSM.ATTRIBUTION,
              url: "https://{a-c}.tile.thunderforest.com/outdoors/{z}/{x}/{y}.png?apikey="+ a_api_key
             }),
             zIndex: 90
           });
      }

    else if (a_source == "landscape"){
      return new ol.layer.Tile({
        source: new ol.source.OSM({
        attributions: "Maps &copy; " +
              "<a href=\"http://www.thunderforest.com/\">Thunderforest, Data.</a>" + ol.source.OSM.ATTRIBUTION,
              url: "https://{a-c}.tile.thunderforest.com/landscape/{z}/{x}/{y}.png?apikey="+ a_api_key
             }),
             zIndex: 90
           });
    }

    else if (a_source == "spinal"){
          return new ol.layer.Tile({
            source: new ol.source.OSM({
              attributions: "Maps &copy; " +
              "<a href=\"http://www.thunderforest.com/\">Thunderforest, Data.</a>" + ol.source.OSM.ATTRIBUTION,
              url: "https://{a-c}.tile.thunderforest.com/spinal-map/{z}/{x}/{y}.png?apikey="+ a_api_key
             }),
             zIndex: 90
           });
    }
     else if (a_source == "pioneer"){
          return new ol.layer.Tile({
            source: new ol.source.OSM({
               attributions: "Maps &copy; " +
               "<a href=\"http://www.thunderforest.com/\">Thunderforest, Data.</a>" + ol.source.OSM.ATTRIBUTION,
               url: "https://{a-c}.tile.thunderforest.com/pioneer/{z}/{x}/{y}.png?apikey="+ a_api_key
             }),
             zIndex: 90
           });
          
    }

    else if (a_source == "basemap_at"){

      var template = "{Layer}/{Style}/{TileMatrixSet}/{TileMatrix}/{TileRow}/{TileCol}.png";
      var urls_basemap = [
        "https://maps1.wien.gv.at/basemap/" + template,
        "https://maps2.wien.gv.at/basemap/" + template,
        "https://maps3.wien.gv.at/basemap/" + template,
        "https://maps4.wien.gv.at/basemap/" + template,
        "https://maps.wien.gv.at/basemap/" + template
      ];

      // HiDPI support:
      // * Use "bmaphidpi" layer (pixel ratio 2) for device pixel ratio > 1
      // * Use "geolandbasemap" layer (pixel ratio 1) for device pixel ratio == 1
      var hiDPI = ol.has.DEVICE_PIXEL_RATIO > 1;

      var source_basemap = new ol.source.WMTS({
        projection: "EPSG:3857",
        //layer: hiDPI ? "bmaphidpi" : "geolandbasemap",
        layer: "geolandbasemap",
        tilePixelRatio: hiDPI ? 2 : 1,
        style: "normal",
        matrixSet: "google3857",
        urls: urls_basemap,
        requestEncoding: "REST",
        tileGrid: new ol.tilegrid.WMTS({
          origin: [-20037508.3428, 20037508.3428],
            resolutions: [
            559082264.029 * 0.28E-3,
            279541132.015 * 0.28E-3,
            139770566.007 * 0.28E-3,
            69885283.0036 * 0.28E-3,
            34942641.5018 * 0.28E-3,
            17471320.7509 * 0.28E-3,
            8735660.37545 * 0.28E-3,
            4367830.18773 * 0.28E-3,
            2183915.09386 * 0.28E-3,
            1091957.54693 * 0.28E-3,
            545978.773466 * 0.28E-3,
            272989.386733 * 0.28E-3,
            136494.693366 * 0.28E-3,
            68247.3466832 * 0.28E-3,
            34123.6733416 * 0.28E-3,
            17061.8366708 * 0.28E-3,
            8530.91833540 * 0.28E-3,
            4265.45916770 * 0.28E-3,
            2132.72958385 * 0.28E-3,
            1066.36479193 * 0.28E-3
            ],
            matrixIds: [
              0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19
            ]
       }),

       attributions: "Tiles &copy; " +
       "<a href=\"http://www.basemap.at/\">basemap.at</a>" + ol.source.OSM.ATTRIBUTION,
   });


    return new ol.layer.Tile({
				 extent: [977844.377599999, 5837774.6617, 1915609.8654, 6295560.8122],
				 source: source_basemap
			   })

      }

      else {// unknwon => OSM map
        return new ol.layer.Tile({
          source: new ol.source.OSM()
        });
     }      
}

function getVectorClusterLayer(a_vectorMarkerSource, a_taggedborderColor, a_taggedinnerColor, a_IconURL, a_IconOffsetwidth, a_IconOffsetheight) {
			
  var clusterSource = new ol.source.Cluster({
    distance: 30,
    source: a_vectorMarkerSource,
    zIndex: 92
  });
  
  var styleCache = {};
  var vectorMarkerLayer = new ol.layer.Vector({
    source: clusterSource,
	 zIndex: 92,
	 style: function(feature, resolution) {
	   var size = feature.get("features").length;
		 var features = feature.get("features");

       if (size > 1){
	      var style = styleCache[size];
		   if (!style) {
		     style = [new ol.style.Style({
			    image: new ol.style.Circle({
				   radius: 12,
				   stroke: new ol.style.Stroke({
					  color: a_taggedborderColor,
					  width: 6,
				   }),
				   fill: new ol.style.Fill({
					  color: a_taggedinnerColor
				   })
				 }),
				 text: new ol.style.Text({
				   text: size.toString(),
				   fill: new ol.style.Fill({
					  color: "#fff"
				   })
				 })
			  })];
			  styleCache[size] = style;
			}
			return style;
			}
			else {
			  var style = styleCache[size];
			  if (!style) {
			  style = [new ol.style.Style({
				image: new ol.style.Icon(({
					anchor: [(a_IconOffsetwidth*-1),(a_IconOffsetheight*-1)],
					anchorXUnits: "pixels",
					anchorYUnits: "pixels",
					opacity: 0.9,
					src: a_IconURL}))
			  })];
			  styleCache[size] = style;
			}
			return style;
			}
		  }
		});
		return vectorMarkerLayer;
				
}

function addControls2Map(a_map, MousePosition, OverviewMap, Rotate,Scaleline,Zoom,ZoomSlider,ZoomToExtent,FullScreen, Attribution) {
  
  var osm_controls = [
		new ol.control.Attribution(),
		new ol.control.MousePosition({
		  undefinedHTML: "outside",
			projection: "EPSG:4326",
			coordinateFormat: function(coordinate) {
			  return ol.coordinate.format(coordinate, "{y}, {x}", 5);
			}
		}),
		new ol.control.OverviewMap({
        layers: [
          new ol.layer.Tile({
            source: new ol.source.OSM(),
          }),
        ],
        collapsed: false,
		 }),
		new ol.control.Rotate({
		  autoHide: false
		}),
		new ol.control.ScaleLine(),
		new ol.control.Zoom(),
		new ol.control.ZoomSlider(),
		new ol.control.ZoomToExtent({
        extent: [-11243808.051695308, 1.202710291, 9561377.290892059, 6852382.107835932]
      }),
		new ol.control.FullScreen()
	]; 	
	
	if (Scaleline == 1){a_map.addControl(osm_controls[4]);}
   if (MousePosition == 1){a_map.addControl(osm_controls[1]);}
   if (OverviewMap == 1){a_map.addControl(osm_controls[2]);}
	if (FullScreen == 1){a_map.addControl(osm_controls[8]);}	 
	if (Attribution == 0){
     a_map.getControls().forEach(function(control) {
       if (control instanceof ol.control.Attribution) {
         a_map.removeControl(control);
       }
     }, this);	
   }	
	  
};
// source --> https://ermafa-passage.de/wp-content/plugins/osm/js/osm-metabox-events.js?ver=6.9.4 
/*  (c) Copyright 2024  MiKa (http://wp-osm-plugin.hyumika.com)

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
*/

// This namespace covers the eventhandler in the metabox to
// generate the shortcodes
var MetaboxEventhandler = {
	
  AddMarker: function osm_AddMarker(a_mapname, a_post_id) {
    a_mapname.on('click', function(evt) {
      jQuery( document ).ready( function( $ ) {

      var lonlat = ol.proj.transform(evt.coordinate, "EPSG:3857", "EPSG:4326");
      var lon = lonlat[0].toFixed(4);
      var lat = lonlat[1].toFixed(4);
      var attr = "";
      MarkerId = "";

      
      if($('#osm_add_marker_show_attribution').prop('checked') == true) {
        attr = 1;
      }
      else {
        attr = 0;
      }
      
      MarkerNameField = "";
      MarkerTextField = "";

      MarkerId = 1;

      //MarkerName = $('#osm_add_marker_name').val();
      MarkerIcon = $('#marker_icon:checked').val();
      MarkerName = MarkerIcon;
      MarkerTextField = $('#osm_add_marker_text').val();

      MarkerTextField = MarkerTextField.replace(/(\r\n|\n|\r)/gm, "");
      MarkerTextField = MarkerTextField.replace(/(\')/gm, "&apos;");

      osm_ajax_object.MarkerLat = lat;
      osm_ajax_object.MarkerLon = lon;
      osm_ajax_object.MarkerId = MarkerId;
      osm_ajax_object.MarkerName = MarkerName;
      osm_ajax_object.MarkerText = MarkerTextField;
      osm_ajax_object.MarkerIcon = MarkerIcon;
      osm_ajax_object.post_id = a_post_id;

      WarningTxt = "</br> <span style=\"color:red\"> <b>Warning:</b> Display attribution / credit  in the map  (checkbox at 3. map controls) is not enabled, it may violate the license of data or map and have legal consequences! </span> </b>"

      GenTxt = "<br> Marker_Id: "+ MarkerId + "<br>Marker_Name: " + MarkerName + "<br>Marker_LatLon: "+lat+","+lon+ " <br>Icon: " + MarkerIcon + "<br>  Marker_Text:<br>"+ MarkerTextField + "<br><b>4. Press [Save marker and generate shortcode]!</b>";

      if (attr == 0){
        GenTxt = WarningTxt + GenTxt;
      }

      $('#Marker_Div').html(GenTxt);
      $('#ShortCode_Div').html("");
           

      /** if there is already a marker, delete the layer with it **/
      var layers = a_mapname.getLayers().getArray();
      if (layers.length > 1){
       a_mapname.removeLayer(layers[1])
      }
      MarkerIconUrl = osm_ajax_object.plugin_url + "/icons/"+MarkerIcon;
      osm_addMarkerLayer(a_mapname,   Number(lon), Number(lat), MarkerIconUrl, -16, -41, "");
      } ); /** JQuery **/
      
	  });  
  },

  SetGeotag: function osm_setGeotagEvent(a_mapname, a_post_id) {
    a_mapname.on('click', function(evt) {

jQuery( document ).ready( function( $ ) {

	var lonlat = ol.proj.transform(evt.coordinate, "EPSG:3857", "EPSG:4326");
	var lon = lonlat[0].toFixed(4);
   var lat = lonlat[1].toFixed(4); 
   
	var zoom = a_mapname.getView().getZoom();

    MarkerField = "";


    var MarkerName = $('#geotag_marker_icon:checked').val();

    if ($('#geotag_marker_icon:checked').val() != "none"){
      MarkerField = " marker=\""+lat+","+lon+"\" marker_name=\"" + MarkerName + "\"";
    }


    osm_ajax_object.lat = lat;
    osm_ajax_object.lon = lon;
    osm_ajax_object.post_id = a_post_id;
    if (MarkerName != "none"){
      osm_ajax_object.icon = MarkerName;
      GenTxt = "Location: "+lat+","+lon+" <br>Icon: " + MarkerName + "<br><b>3. Press [Save] to store!</b>";
    }
    else {
      GenTxt = "Location: "+lat+","+lon + "<br><b>3. Press [Save] to store!</b>";
    }
 
    $('#Geotag_Div').html(GenTxt);
    $('#ShortCode_Div').html("");

    /** if there is already a marker, delete the layer with it **/
    var layers = a_mapname.getLayers().getArray();
    if (layers.length > 1){
     a_mapname.removeLayer(layers[1])
    }

    MarkerIconUrl = osm_ajax_object.plugin_url + "/icons/"+MarkerName;
    osm_addMarkerLayer(a_mapname,   Number(lon), Number(lat), MarkerIconUrl, -16, -41, "");

    } ); /** JQuery **/

	});
  }
}

function osm_generateTaggedPostsSC(){
jQuery( document ).ready( function( $ ) { 
  
      var MarkerField = "";
      var ThemeField  = "";
      var MapTypeField = "";
      var Linefield = "";
      var PostTypeField ="";
      var PostType ="";
      var CatFilterField = "";
      var MapBorderField = "";
      var MarkerStyleField = "";
      var StyleColorField = "";
      var TagTypeField = "";
      var LatLonField = "";
      var ZoomField = "";


     
      //var dropdown = document.getElementById("cat");
      //var dropdown = $('#cat').val();


      var MarkerName    = $('#tagged_marker_icon:checked').val();

      var TagFilter = $('#tag_filter').val();
      var CategoryFilter = $('#category_parent').val();
      
      var ErrorFlag = 0;


      if($('#osm_geotag_show_attribution').prop('checked') == true) {
        $AttrTxt ="";
      }
      else {
        $AttrTxt = "attribution=\"WARNING: Display attribution is not enabled. It may violate the license of data and map and have legal consequences!\"";      
      }
            


      if ((CategoryFilter != "-1") && (TagFilter != "")){
        CatFilterField = "";
        TagFilter ="";
        ErrorFlag = 1;
      } 
      else if (CategoryFilter != "-1"){
        CatFilterField = " tagged_filter=\"" + CategoryFilter + "\"";
      }
      else if (TagFilter != ""){
        CatFilterField = " tagged_filter=\"" + TagFilter + "\"";
        TagTypeField = " tagged_filter_type=\"post_tag\"";
      }

      if ($('#osm_geotag_map_type').val() != "Mapnik"){
        MapTypeField = " type=\"" + $('#osm_geotag_map_type').val() + "\"";
      }

      PostType = $('#osm_geotag_posttype').val();
      PostTypeField = " tagged_type=\""+PostType+"\"";
      
      if ($('#osm_geotag_posttype').val() != "none"){
        MarkerField = " marker_name=\"" + MarkerName + "\"";
      }
         
      if($('#tagged_marker_style:checked').val() == "cluster"){
        var lonlat = ol.proj.transform(TaggedSC_map.getView().getCenter(), "EPSG:3857", "EPSG:4326");
        var lon = lonlat[0].toFixed(4);
        var lat = lonlat[1].toFixed(4); 
        LatLonField = lat + "," + lon;
        ZoomField = TaggedSC_map.getView().getZoom();
        ZoomField = ZoomField.toFixed(1);
      }
      else {
        LatLonField = "autolat,autolon";
        ZoomField = "5";
      }

      if (PostType == "actual"){
      LatLonField = "0,0";
      }

      if (MarkerName == "mic_black_pinother_02.png"){
        MapBorderField = " map_border=\"thin solid grey\"";
        StyleColorField = " tagged_color=\"black\"";
      }
      else if (MarkerName == "mic_red_pinother_02.png"){
        MapBorderField = " map_border=\"thin solid red\"";
        StyleColorField = " tagged_color=\"red\"";
      }
      else if (MarkerName == "mic_green_pinother_02.png"){
        MapBorderField = " map_border=\"thin solid green\"";
        StyleColorField = " tagged_color=\"green\"";
      }
      else if (MarkerName == "mic_blue_pinother_02.png"){
        MapBorderField = " map_border=\"thin solid blue\"";
        StyleColorField = " tagged_color=\"blue\"";
      }

      if ($('#tagged_marker_style:checked').val() != "standard"){
        MarkerStyleField = " tagged_param=\""  + $('#tagged_marker_style:checked').val()+ "\"";
      }

      if (ErrorFlag > 0){
        GenTxt = "[Error]: You must not set category filter and tag filter at the same time! <br> Set Category filter to None or delete tag tilter."
      }
      else {
        GenTxt = "[osm_map_v3 " + $AttrTxt +" map_center=\"" + LatLonField + "\" zoom=\"" + ZoomField + "\" width=\"100%\" height=\"450\" " + PostTypeField + MarkerField + MapTypeField + CatFilterField + MapBorderField + MarkerStyleField + StyleColorField + TagTypeField+"]";
      }

      $('#ShortCode_Div').html(GenTxt);
      } ); /** JQuery **/
}

function osm_showTaggedSCmap () {
   jQuery( document ).ready( function( $ ) { 
   if($('#tagged_marker_style:checked').val() == "cluster"){
        document.getElementById("TaggedSC_map").style.display = "block"; 
        TaggedSC_map.updateSize();
   }
   else{ /** standard **/
     document.getElementById("TaggedSC_map").style.display = "none"; 
   }
   
   
} ); /** JQuery **/
    }

   function osm_showFileSCmap () {
   jQuery( document ).ready( function( $ ) { 
   if($('#show_selection_box').prop('checked') == true){
        document.getElementById("FileSC_map").style.display = "block"; 
        FileSC_map.updateSize();
   }
   else{
     document.getElementById("FileSC_map").style.display = "none"; 
   }
} ); /** JQuery **/
    }


function osm_generateFileSC(){

 var GenTxt = "";

jQuery( document ).ready( function( $ ) { 

      var lon = "autolon";
      var lat = "autolat";
      var zoom = "autozoom";

      var FileList_ColorField  = "";
      var FileList_TypeField   = "";
      var FileList_MapTypeField = "";
      var FileList_FileField = "";
      var FileList_TitleField = "";
      var FileList_SelectBoxField = "";
      var DisplayName = "";
      var Controls = "";
      var ControlField = "";
      var BckgrndImageField= "";
      BorderField = "";
      fileUrls = [];
      fileTitles = [];
      fileColors = [];
      var NumOfFiles = 0;

      
      if ($('#osm_file_list_map_type').val() != "Mapnik"){
        FileList_MapTypeField = " type=\"" + $('#osm_file_list_map_type').val() + "\"";
      }

      if ($('#osm_file_border').val() != "none"){
        BorderField = " map_border=\"thin solid "  + $('#osm_file_border').val()+ "\"";
      }


      if($('#file_fullscreen').prop('checked') == true) {
        Controls = "fullscreen,";
      }

      if($('#file_scaleline').prop('checked') == true) {
        Controls = Controls + "scaleline,";
      }

      if($('#file_mouseposition').prop('checked') == true) {
        Controls = Controls + "mouseposition,";
      }
      
      if($('#file_overviewmap').prop('checked') == true) {
        Controls = Controls + "overview,";
      }
           
      if($('#osm_file_show_attribution').prop('checked') == true) {
        Attribution ="";
      }
      else {
        Attribution = "attribution=\"WARNING: Display attribution is not enabled. It may violate the license of data and map and have legal consequences!\"";
      }

      if (Controls != ""){
        Controls = Controls.substr(0, Controls.length-1);
        ControlField = " control=\"" + Controls + "\"";
      }
      else {
        ControlField ="";
      }
      
      if($('#file_bckgrnd_img').prop('checked') == true) {
        BckgrndImageField = ' bckgrndimg="GDPR_bckgrnd.png" ';
      }
      else {
       BckgrndImageField = "";
      }


	  /** handle multiple form fields in metabox with same input (layers and their files/colors/titles - links still missing (tbc) */
  	  $(".osmFileName").each(function(i,e) {
  	    if (jQuery(e).val() != "") {
	  	  fileUrls.push( jQuery(e).val());
	  	}
  	  });

  	  $(".osmFileTitle").each(function(i,e) {
  	    
  	    if (jQuery(e).val() != "" && fileUrls[i] != "") {
  		  fileTitles.push( jQuery(e).val());
  		  NumOfFiles += 1;
  	    }
	    else if ((fileUrls[i] != "") && (typeof fileUrls[i] !== "undefined")) {
	      var filename = fileUrls[i];
	      var filename = filename.replace(/^.*[\\\/]/, '')
              fileTitles.push(filename);
              
	   }
  	  });

  	  $(".osmFileColor").each(function(i,e) {
  	    if (jQuery(e).val() != "" && typeof(fileUrls[i]) == "string") {
  		  fileColors.push( jQuery(e).val());
  		}
  	  });

	  FileList_FileField = " file_list=\"" + fileUrls.join() + "\"";
	  FileList_ColorField = " file_color_list=\"" + fileColors.join() + "\"";
	  FileList_TitleField = " file_title=\"" + fileTitles.join() + "\"";

          if(($('#show_selection_box').prop('checked') == true) && (NumOfFiles > 1)) {
            FileList_SelectBoxField = " file_select_box=\"one\"";
            var lonlat = ol.proj.transform(FileSC_map.getView().getCenter(), "EPSG:3857", "EPSG:4326");
            lon = lonlat[0].toFixed(4);
            lat = lonlat[1].toFixed(4);
            zoom = FileSC_map.getView().getZoom().toFixed(1);       
         }

	  GenTxt = "[osm_map_v3 " + Attribution + " map_center=\"" + lat + "," + lon + "\" zoom=\"" + zoom + "\" width=\"100%\" height=\"450\" " + FileList_FileField + FileList_MapTypeField + FileList_ColorField + DisplayName + ControlField + BorderField + FileList_TitleField + FileList_SelectBoxField + BckgrndImageField +"]";
     
     $('#ShortCode_Div').html(GenTxt);
     
     
} ); /** JQuery **/
  	  

  }
  
  
  
  
function osm_generateAddMarkerSC(){

 var GenTxt = "";

jQuery( document ).ready( function( $ ) { 

      var zoom = "";
      var Attribution = "";
      var BorderField = "" ;
      var MapTypeField = "";
      var Controls = "";
      var BckgrndImage = "";
      
      
      var lonlat = ol.proj.transform(AddMarker_map.getView().getCenter(), "EPSG:3857", "EPSG:4326");
      var lon = lonlat[0].toFixed(4);
      var lat = lonlat[1].toFixed(4); 
      ZoomField = AddMarker_map.getView().getZoom();
      zoom = ZoomField.toFixed(1);
      
      
      if ($('#osm_add_marker_map_type').val() != "Mapnik"){
        MapTypeField = " type=\"" + $('#osm_add_marker_map_type').val() + "\"";
      }
      

      if ($('#osm_add_marker_border').val() != "none"){
        BorderField = " map_border=\"thin solid "  + $('#osm_add_marker_border').val()+ "\"";
      }

      if($('#osm_add_marker_fullscreen').prop('checked') == true) {
        Controls = "fullscreen,";
      }

      if($('#osm_add_marker_scaleline').prop('checked') == true) {
        Controls = Controls + "scaleline,";
      }

      if($('#osm_add_marker_mouseposition').prop('checked') == true) {
        Controls = Controls + "mouseposition,";
      }
      
      if($('#osm_add_marker_overviewmap').prop('checked') == true) {
        Controls = Controls + "overview,";
      }      
      
      if (Controls != ""){
        Controls = Controls.substr(0, Controls.length-1);
        ControlField = " control=\"" + Controls + "\"";
      }
      else {
        ControlField ="";
      }
      
      
      if($('#osm_add_marker_bckgrnd_img').prop('checked') == true) {
        BckgrndImageField = ' bckgrndimg="GDPR_bckgrnd.png" ';
      }
      else {
       BckgrndImageField = "";
      }
      
      if($('#osm_add_marker_show_attribution').prop('checked') == true) {
        Attribution ="";
      }
      else {
        Attribution = "attribution=\"WARNING: Display attribution is not enabled. It may violate the license of data and map and have legal consequences!\"";
      }
      
      
	  GenTxt = "[osm_map_v3 " + Attribution + " map_center=\"" + lat + "," + lon + "\" zoom=\"" + zoom + "\" width=\"95%\" height=\"450\" " + BorderField + ' post_markers="1" ' + MapTypeField + ControlField + BckgrndImageField +"]";
     
     $('#ShortCode_Div').html(GenTxt);
     
     
} ); /** JQuery **/
  	  

  };
// source --> https://ermafa-passage.de/wp-content/plugins/osm/js/osm-startup-lib.js?ver=6.9.4 
/*  Copyright (C) 2020  Matthias Greiling (https://westrad.de)

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.

*/

	
/** 
 * get method for stored GET-Parameters
 * @param {string} _attribut - key of array
 * @returns {string} val of array at given index or 'undefined'
 */
function getGET(_attribut) {
	if(!HTTP_GET_VARS[_attribut]){
		return 'undefined';
	}

	return HTTP_GET_VARS[_attribut];
}

/** fix IE - add methode "includes" to string */
if (!String.prototype.includes) {
	String.prototype.includes = function(search, start) {
		if (typeof start !== 'number') {
			start = 0;
		}

		if (start + search.length > this.length) {
			return false;
		} else {
			return this.indexOf(search, start) !== -1;
		}	
	};
}

/** 
 * put layer on top of map 
 * @param {string} _map - the #id of the map | data-map ^data-map_name
 * @param {string} _layers - comma separated values
 */
function activateLayers(_map, _layers, _startUp) {

	/** _layers comma separated values? layers is an array - even with one layer */
	layers = [];
	comma = ',';
	
	
	if (typeof _layers.includes === "function" && !_startUp) {
		if (_layers.includes(comma)) {
			layers = _layers.split(',');
		}	
	} else {
		layers[0] = _layers;
	}	
	
	// via GET given param at startup - just layer 0
	if (_layers == 0) {
		layers[0] = _layers;
	}

	
	/** every layer stored in array switch its layerBox 'visible' and added global layer to global map */
	jQuery(layers).each(function(i,e){
	
		/** visibility and fancy looking */
		jQuery('#layerBox' + e + _map).children('i').removeClass('fa-eye-slash'); 
		jQuery('#layerBox' + e + _map).children('i').addClass('fa-eye'); 
	    jQuery('#layerBox' + e + _map).children('span.layerColor').removeClass('layerColorHidden'); 
		jQuery('#layerBox' + e + _map).css({'background-color':'rgb(250,255,255)' });
		jQuery('#layerBox' + e + _map).data('active', true);
		
		/** real action */
		window[_map].addLayer(window.vectorM[_map][e]);

		/** tracking stuff */
		if (typeof _paq !== "undefined") {
			if (!_startUp) { 
				_paq.push(['trackEvent', translations['openlayer'], jQuery('#layerBox' + e + _map).data('layer_title')]);
			} else {
				_paq.push(['trackEvent', translations['openlayerAtStartup'], jQuery('#layerBox' + e + _map).data('layer_title')]);
			}	
		}
	});
}	
		
/** 
 * for the link to map with choosen layers - collect which are active
 * @param {string} _map - the #id of the map | data-map ^data-map_name
 * @returns {string} of comma separated values of active layers of map
 */
function checkChoosedLayers(_map) {
	layers = [];
	
	jQuery('.layerOf' + _map).each(function(){
		if (jQuery(this).data('active') == true) {
			layers.push( jQuery(this).data('layer'));
		}
	});
	
	layers.join(); 
	
	// because 0 is not NULL and 0 is not 0 and so on ...
	if (layers != "") {

		return layers;
	} else {

		return 'none';
	}
}

/** 
 * removes layer from map by click on #layerBox_n tag - also sets visibility features
 * @param {object} chosen #layerBox
 */		
function switchLayerOff(_e) {
	_e.data('active', false);
	_e.children('i').removeClass('fa-eye'); 
	_e.children('i').addClass('fa-eye-slash'); 
	_e.children('span.layerColor').addClass('layerColorHidden'); 
	
	/** window and vectorM are both global */
	window[_e.data('map')].removeLayer(window.vectorM[_e.data('map')][_e.data('layer')]);
	
	/** tracking stuff */
	if (typeof _paq !== "undefined") {
		_paq.push(['trackEvent', translations['closeLayer'], _e.text()]);
	}	
}	
	
/** 
 * add layer on top of the map by click on #layerBox_n tag - also sets visibility features
 * @param {object} chosen #layerBox
 */		
function switchLayerOn(_e) {
	_e.data('active', true);
	_e.children('i').removeClass('fa-eye-slash'); 
	_e.children('i').addClass('fa-eye'); 
	_e.children('span.layerColor').removeClass('layerColorHidden'); 
	
	
	/** window and vectorM are both global */
	window[_e.data('map')].addLayer(window.vectorM[_e.data('map')][_e.data('layer')]);
	
	/** tracking stuff */
	if (typeof _paq !== "undefined") {
		_paq.push(['trackEvent', translations['openlayer'], _e.text()]);
	}	
}

/** after DOM has been rendered this jQuery will be executed */
jQuery(document).ready(function() { 

	/** 
	 * event handler 
	 * @fires prompt with link to page and map and choosen layers, center and zoom
	 * link contains GET-Parameters in an array with map_name as an index  
	 */	

	jQuery('.generatedLink').click(function() {
		if (jQuery(this).data('map_name') == '') {
			jQuery(this).data('map_name', jQuery(this).data('map'));
		}
		window.prompt(translations['generateLink'], location.protocol + '//' + location.host + location.pathname + '?map=' + jQuery(this).data('map_name') + '&mapCenter[' + jQuery(this).data('map_name') + ']=' + window[jQuery(this).data('map')].getView().getCenter() + '&mapZoom[' + jQuery(this).data('map_name') + ']=' + window[jQuery(this).data('map')].getView().getZoom() + '&mapLayers[' + jQuery(this).data('map_name') + ']=' + checkChoosedLayers(jQuery(this).data('map')));
	});
	
	/** 
	 * event handler 
	 * @fires prompt with wordpress short code to map_name map and choosen layers, center, zoom and a example string for trigger
	 */	
	jQuery('a.generatedShortCode').click(function() {
		
		mapName =  jQuery(this).data('map_name');
		mapCenter = window[jQuery(this).data('map')].getView().getCenter();
		mapZoom = window[jQuery(this).data('map')].getView().getZoom();
		mapLayer = checkChoosedLayers(jQuery(this).data('map')) ;
		
		string2show = '[osm_map_v3 setup_map_name="' + mapName + '" setup_center="' + mapCenter + '" setup_zoom="' + mapZoom + '" setup_layer="' + mapLayer + '" setup_trigger="' + translations['shortDescription'] + '"]';				
	
		window.prompt(translations['generatedShortCode'], string2show);
	});

	/** 
	 * event handler 
	 * @fires prompt with random name of map - it doesn't matter - it just have to be the same in active and passive short code
	 */	 	
	jQuery('a.cantGenerateShortCode').click(function() {
	
		var randomize = 'map_' + Math.random().toString(36).replace(/[^a-z]+/g, '').substr(0, 5);
		window.prompt(translations['cantGenerateLink'], 'setup_map_name="' + randomize + '"');
	});
		
	/** 
	 * event handler for text link to control map
	 * set visibility an layers of map as well as zoom and center
	 */			
	jQuery('.setupChange').click(function() {
	
		/** the name of the map have to be unique to be controlled via text link - but have to be translated to the real id in the document */
		var controlledMap = jQuery('*[data-map_name="' + jQuery(this).data('map_name') + '"]').data('map');

		/** reads from clicked anchor tag data attributes: zoom - get from global: map */
		window[controlledMap].getView().setZoom(jQuery(this).data('zoom'));
	
		/** reads from clicked anchor tag data attributes: center - get from global: map */
		mapCenter = jQuery(this).data('center').split(',');

		/** this is the difference between OL 3.0 and 4.0 **/
		mapCenter[0] = parseFloat(mapCenter[0]);
		mapCenter[1] = parseFloat(mapCenter[1]);

		window[controlledMap].getView().setCenter(mapCenter);
	
		/** layers	- via class addressed seams not to be the same as via id ... */
		/** switch off every shown layer on specific map */
		jQuery('.layerBoxes').each( function(i){
			/** keep in mind: multiple maps per page */
			if (jQuery('#layerBox' + i + controlledMap).length > 0) {
				switchLayerOff(jQuery('#layerBox' + i + controlledMap));
			}	
		});
		
		/** switch on layer(s) in given order on specific map */
		if (jQuery(this).data('layer') != 'none') {
		                LayerStr = jQuery(this).data('layer');
			activateLayers(controlledMap, LayerStr , 0) ;
			
		}	
	});

	/** 
	 * event handler for text link to control map
	 * decide which function to call by looking at active status of tag
	 */
	jQuery('.layerBoxes').click(function() {
	
		/** data-attribut active represents visibility */
		if (jQuery(this).data('active') ==  true) {
			/** hide (remove layer from map) */
			switchLayerOff(jQuery(this));
		
		} else {
			/** show (add layer on maps top level) */
			switchLayerOn(jQuery(this));
		}
	});		
		
	/** 
	 * code part for evaluate incoming control data
	 */ 

	/** decode GET-Parameters, remove leading '?' */
	var strGET = decodeURIComponent(document.location.search.substr(1, document.location.search.length));

	/** splits by '&' fill array HTTP_GET_VARS with key => val */
	if (strGET != ''){

		var pairings = strGET.split('&');

		for (var i = 0; i < pairings.length; ++i) {
			var value = '';
			pairing = pairings[i].split('=');

			if (pairing.length > 1){
				value = pairing[1];
			}
	
			HTTP_GET_VARS[unescape(pairing[0])] = unescape(value);
		}
	}	

	/** if GET-Parameter set control for map - set values for map -- if mapCenter is set, script supposes everything is set in right order */
	if (getGET('mapCenter[' + getGET('map') + ']') != 'undefined') {
	
		/** mapCenter is an array of 2 values longitude, latitude (different format as long, lat in the entire plugin) */
		mapCenter = getGET('mapCenter[' + getGET('map') + ']').split(',');
		mapCenter[0] = parseFloat(mapCenter[0]);
		mapCenter[1] = parseFloat(mapCenter[1]);
		
		/** link between map_name and map id on page, because id is not map specific enough on different content positions */
		controlledMap = jQuery('*[data-map_name="' + getGET('map') + '"]').data('map');
		
		/** setup_map_name not set, content position is hopefully the same (standard at single view) */
		if (typeof controlledMap == "undefined") {
			controlledMap = getGET('map');
		}

		/** set center of GET given map */
		window[controlledMap].getView().setCenter(mapCenter);
	}

	/** set zoom of GET given map */
	if (getGET('mapZoom[' + getGET('map') + ']') != 'undefined') {
		window[controlledMap].getView().setZoom(getGET('mapZoom[' + getGET('map') + ']') );
	}
	
			
	/** set layers of GET given map */
		
	if (getGET('mapLayers[' + getGET('map') + ']') != 'undefined') {
	
		/** show no layers at all - intentionally */
		if (getGET('mapLayers[' + getGET('map') + ']') != 'none') {

                        	LayerStr = getGET('mapLayers[' + getGET('map') + ']');
			activateLayers(controlledMap, LayerStr , 0);
			
		}
	}  else {
		
		/** no map control is given via GET - make first layer visible - if there is any to choose from */
		jQuery('.map').each(function() {
			if (jQuery('.layerOf' + jQuery(this).data('map')).length > 0) {
			        mapStr = jQuery(this).data('map');
				activateLayers(mapStr, '0', 1);
				
			}
		});	
	}	
});
// source --> https://ermafa-passage.de/wp-content/plugins/email-encoder-bundle/assets/js/custom.js?ver=2c542c9989f589cd5318f5cef6a9ecd7 
/* Email Encoder */
/*global jQuery, window*/
jQuery(function ($) {

    'use strict';

    // encoding method
    function rot13(s) {
        // source: http://jsfromhell.com/string/rot13
        return s.replace(/[a-zA-Z]/g, function (c) {
            return String.fromCharCode((c <= 'Z' ? 90 : 122) >= (c = c.charCodeAt(0) + 13) ? c : c - 26);
        });
    }

    /**
     * EMAIL RELATED LOGIC
     */

    // fetch email from data attribute
    function fetchEmail(el) {
        var email = el.getAttribute('data-enc-email');

        if (!email) {
            return null;
        }

        // replace [at] sign
        email = email.replace(/\[at\]/g, '@');

        // encode
        email = rot13(email);

        return email;
    }

    // replace email in title attribute
    function parseTitle(el) {
        var title = el.getAttribute('title');
        var email = fetchEmail(el);

        if (title && email) {
            title = title.replace('{{email}}', email);
            el.setAttribute('title', title);
        }
    }

    // set input value attribute
    function setInputValue(el) {
        var email = fetchEmail(el);

        if (email) {
            el.setAttribute('value', email);
        }
    }

    // open mailto link
    function mailto(el) {
        var email = fetchEmail(el);

        if (email) {
            window.location.href = 'mailto:' + email;
        }
    }
    
    // revert
    function revert(el, rtl) {
        var email = fetchEmail(el);

        if (email) {
           rtl.text(email);
           rtl.removeClass('eeb-rtl');
        }
    }

    // prepare for copying email
    document.addEventListener('copy', function(e){
        $('a[data-enc-email]').each(function () {
            var rtl = $(this).find('.eeb-rtl');

            if (rtl.text()) {
                revert(this, rtl);
            }
        });
        console.log('copy');
    });

    // set mailto click
    $('body').on('click', 'a[data-enc-email]', function () {
        mailto(this);
    });

    // parse title attirbute
    $('a[data-enc-email]').each(function () {
        parseTitle(this);
    });

    // parse input fields
    $('input[data-enc-email]').each(function () {
        setInputValue(this);
    });

});
// source --> https://ermafa-passage.de/wp-content/themes/mall/js/jsLibraries.min.js?ver=1.0.0 
/**
 * @package 	WordPress
 * @subpackage 	Mall
 * @version		1.2.1
 */


/* Modernizr 2.8.3 (Custom Build) | MIT & BSD
 * Build: http://modernizr.com/download/#-fontface-backgroundsize-borderimage-borderradius-boxshadow-flexbox-flexboxlegacy-hsla-multiplebgs-opacity-rgba-textshadow-cssanimations-csscolumns-generatedcontent-cssgradients-cssreflections-csstransforms-csstransforms3d-csstransitions-applicationcache-canvas-canvastext-draganddrop-hashchange-history-audio-video-indexeddb-input-inputtypes-localstorage-postmessage-sessionstorage-websockets-websqldatabase-webworkers-geolocation-inlinesvg-smil-svg-svgclippaths-touch-webgl-shiv-mq-cssclasses-teststyles-testprop-testallprops-hasevent-prefixes-domprefixes-load
 */
;window.Modernizr=function(a,b,c){function D(a){j.cssText=a}function E(a,b){return D(n.join(a+";")+(b||""))}function F(a,b){return typeof a===b}function G(a,b){return!!~(""+a).indexOf(b)}function H(a,b){for(var d in a){var e=a[d];if(!G(e,"-")&&j[e]!==c)return b=="pfx"?e:!0}return!1}function I(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:F(f,"function")?f.bind(d||b):f}return!1}function J(a,b,c){var d=a.charAt(0).toUpperCase()+a.slice(1),e=(a+" "+p.join(d+" ")+d).split(" ");return F(b,"string")||F(b,"undefined")?H(e,b):(e=(a+" "+q.join(d+" ")+d).split(" "),I(e,b,c))}function K(){e.input=function(c){for(var d=0,e=c.length;d<e;d++)u[c[d]]=c[d]in k;return u.list&&(u.list=!!b.createElement("datalist")&&!!a.HTMLDataListElement),u}("autocomplete autofocus list placeholder max min multiple pattern required step".split(" ")),e.inputtypes=function(a){for(var d=0,e,f,h,i=a.length;d<i;d++)k.setAttribute("type",f=a[d]),e=k.type!=="text",e&&(k.value=l,k.style.cssText="position:absolute;visibility:hidden;",/^range$/.test(f)&&k.style.WebkitAppearance!==c?(g.appendChild(k),h=b.defaultView,e=h.getComputedStyle&&h.getComputedStyle(k,null).WebkitAppearance!=="textfield"&&k.offsetHeight!==0,g.removeChild(k)):/^(search|tel)$/.test(f)||(/^(url|email)$/.test(f)?e=k.checkValidity&&k.checkValidity()===!1:e=k.value!=l)),t[a[d]]=!!e;return t}("search tel url email datetime date month week time datetime-local number range color".split(" "))}var d="2.8.3",e={},f=!0,g=b.documentElement,h="modernizr",i=b.createElement(h),j=i.style,k=b.createElement("input"),l=":)",m={}.toString,n=" -webkit- -moz- -o- -ms- ".split(" "),o="Webkit Moz O ms",p=o.split(" "),q=o.toLowerCase().split(" "),r={svg:"http://www.w3.org/2000/svg"},s={},t={},u={},v=[],w=v.slice,x,y=function(a,c,d,e){var f,i,j,k,l=b.createElement("div"),m=b.body,n=m||b.createElement("body");if(parseInt(d,10))while(d--)j=b.createElement("div"),j.id=e?e[d]:h+(d+1),l.appendChild(j);return f=["&#173;",'<style id="s',h,'">',a,"</style>"].join(""),l.id=h,(m?l:n).innerHTML+=f,n.appendChild(l),m||(n.style.background="",n.style.overflow="hidden",k=g.style.overflow,g.style.overflow="hidden",g.appendChild(n)),i=c(l,a),m?l.parentNode.removeChild(l):(n.parentNode.removeChild(n),g.style.overflow=k),!!i},z=function(b){var c=a.matchMedia||a.msMatchMedia;if(c)return c(b)&&c(b).matches||!1;var d;return y("@media "+b+" { #"+h+" { position: absolute; } }",function(b){d=(a.getComputedStyle?getComputedStyle(b,null):b.currentStyle)["position"]=="absolute"}),d},A=function(){function d(d,e){e=e||b.createElement(a[d]||"div"),d="on"+d;var f=d in e;return f||(e.setAttribute||(e=b.createElement("div")),e.setAttribute&&e.removeAttribute&&(e.setAttribute(d,""),f=F(e[d],"function"),F(e[d],"undefined")||(e[d]=c),e.removeAttribute(d))),e=null,f}var a={select:"input",change:"input",submit:"form",reset:"form",error:"img",load:"img",abort:"img"};return d}(),B={}.hasOwnProperty,C;!F(B,"undefined")&&!F(B.call,"undefined")?C=function(a,b){return B.call(a,b)}:C=function(a,b){return b in a&&F(a.constructor.prototype[b],"undefined")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!="function")throw new TypeError;var d=w.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(w.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(w.call(arguments)))};return e}),s.flexbox=function(){return J("flexWrap")},s.flexboxlegacy=function(){return J("boxDirection")},s.canvas=function(){var a=b.createElement("canvas");return!!a.getContext&&!!a.getContext("2d")},s.canvastext=function(){return!!e.canvas&&!!F(b.createElement("canvas").getContext("2d").fillText,"function")},s.webgl=function(){return!!a.WebGLRenderingContext},s.touch=function(){var c;return"ontouchstart"in a||a.DocumentTouch&&b instanceof DocumentTouch?c=!0:y(["@media (",n.join("touch-enabled),("),h,")","{#modernizr{top:9px;position:absolute}}"].join(""),function(a){c=a.offsetTop===9}),c},s.geolocation=function(){return"geolocation"in navigator},s.postmessage=function(){return!!a.postMessage},s.websqldatabase=function(){return!!a.openDatabase},s.indexedDB=function(){return!!J("indexedDB",a)},s.hashchange=function(){return A("hashchange",a)&&(b.documentMode===c||b.documentMode>7)},s.history=function(){return!!a.history&&!!history.pushState},s.draganddrop=function(){var a=b.createElement("div");return"draggable"in a||"ondragstart"in a&&"ondrop"in a},s.websockets=function(){return"WebSocket"in a||"MozWebSocket"in a},s.rgba=function(){return D("background-color:rgba(150,255,150,.5)"),G(j.backgroundColor,"rgba")},s.hsla=function(){return D("background-color:hsla(120,40%,100%,.5)"),G(j.backgroundColor,"rgba")||G(j.backgroundColor,"hsla")},s.multiplebgs=function(){return D("background:url(https://),url(https://),red url(https://)"),/(url\s*\(.*?){3}/.test(j.background)},s.backgroundsize=function(){return J("backgroundSize")},s.borderimage=function(){return J("borderImage")},s.borderradius=function(){return J("borderRadius")},s.boxshadow=function(){return J("boxShadow")},s.textshadow=function(){return b.createElement("div").style.textShadow===""},s.opacity=function(){return E("opacity:.55"),/^0.55$/.test(j.opacity)},s.cssanimations=function(){return J("animationName")},s.csscolumns=function(){return J("columnCount")},s.cssgradients=function(){var a="background-image:",b="gradient(linear,left top,right bottom,from(#9f9),to(white));",c="linear-gradient(left top,#9f9, white);";return D((a+"-webkit- ".split(" ").join(b+a)+n.join(c+a)).slice(0,-a.length)),G(j.backgroundImage,"gradient")},s.cssreflections=function(){return J("boxReflect")},s.csstransforms=function(){return!!J("transform")},s.csstransforms3d=function(){var a=!!J("perspective");return a&&"webkitPerspective"in g.style&&y("@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:3px;}}",function(b,c){a=b.offsetLeft===9&&b.offsetHeight===3}),a},s.csstransitions=function(){return J("transition")},s.fontface=function(){var a;return y('@font-face {font-family:"font";src:url("https://")}',function(c,d){var e=b.getElementById("smodernizr"),f=e.sheet||e.styleSheet,g=f?f.cssRules&&f.cssRules[0]?f.cssRules[0].cssText:f.cssText||"":"";a=/src/i.test(g)&&g.indexOf(d.split(" ")[0])===0}),a},s.generatedcontent=function(){var a;return y(["#",h,"{font:0/0 a}#",h,':after{content:"',l,'";visibility:hidden;font:3px/1 a}'].join(""),function(b){a=b.offsetHeight>=3}),a},s.video=function(){var a=b.createElement("video"),c=!1;try{if(c=!!a.canPlayType)c=new Boolean(c),c.ogg=a.canPlayType('video/ogg; codecs="theora"').replace(/^no$/,""),c.h264=a.canPlayType('video/mp4; codecs="avc1.42E01E"').replace(/^no$/,""),c.webm=a.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/,"")}catch(d){}return c},s.audio=function(){var a=b.createElement("audio"),c=!1;try{if(c=!!a.canPlayType)c=new Boolean(c),c.ogg=a.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),c.mp3=a.canPlayType("audio/mpeg;").replace(/^no$/,""),c.wav=a.canPlayType('audio/wav; codecs="1"').replace(/^no$/,""),c.m4a=(a.canPlayType("audio/x-m4a;")||a.canPlayType("audio/aac;")).replace(/^no$/,"")}catch(d){}return c},s.localstorage=function(){try{return localStorage.setItem(h,h),localStorage.removeItem(h),!0}catch(a){return!1}},s.sessionstorage=function(){try{return sessionStorage.setItem(h,h),sessionStorage.removeItem(h),!0}catch(a){return!1}},s.webworkers=function(){return!!a.Worker},s.applicationcache=function(){return!!a.applicationCache},s.svg=function(){return!!b.createElementNS&&!!b.createElementNS(r.svg,"svg").createSVGRect},s.inlinesvg=function(){var a=b.createElement("div");return a.innerHTML="<svg/>",(a.firstChild&&a.firstChild.namespaceURI)==r.svg},s.smil=function(){return!!b.createElementNS&&/SVGAnimate/.test(m.call(b.createElementNS(r.svg,"animate")))},s.svgclippaths=function(){return!!b.createElementNS&&/SVGClipPath/.test(m.call(b.createElementNS(r.svg,"clipPath")))};for(var L in s)C(s,L)&&(x=L.toLowerCase(),e[x]=s[L](),v.push((e[x]?"":"no-")+x));return e.input||K(),e.addTest=function(a,b){if(typeof a=="object")for(var d in a)C(a,d)&&e.addTest(d,a[d]);else{a=a.toLowerCase();if(e[a]!==c)return e;b=typeof b=="function"?b():b,typeof f!="undefined"&&f&&(g.className+=" "+(b?"":"no-")+a),e[a]=b}return e},D(""),i=k=null,function(a,b){function l(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x<style>"+b+"</style>",d.insertBefore(c.lastChild,d.firstChild)}function m(){var a=s.elements;return typeof a=="string"?a.split(" "):a}function n(a){var b=j[a[h]];return b||(b={},i++,a[h]=i,j[i]=b),b}function o(a,c,d){c||(c=b);if(k)return c.createElement(a);d||(d=n(c));var g;return d.cache[a]?g=d.cache[a].cloneNode():f.test(a)?g=(d.cache[a]=d.createElem(a)).cloneNode():g=d.createElem(a),g.canHaveChildren&&!e.test(a)&&!g.tagUrn?d.frag.appendChild(g):g}function p(a,c){a||(a=b);if(k)return a.createDocumentFragment();c=c||n(a);var d=c.frag.cloneNode(),e=0,f=m(),g=f.length;for(;e<g;e++)d.createElement(f[e]);return d}function q(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return s.shivMethods?o(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+m().join().replace(/[\w\-]+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(s,b.frag)}function r(a){a||(a=b);var c=n(a);return s.shivCSS&&!g&&!c.hasCSS&&(c.hasCSS=!!l(a,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),k||q(a,c),a}var c="3.7.0",d=a.html5||{},e=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,f=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,g,h="_html5shiv",i=0,j={},k;(function(){try{var a=b.createElement("a");a.innerHTML="<xyz></xyz>",g="hidden"in a,k=a.childNodes.length==1||function(){b.createElement("a");var a=b.createDocumentFragment();return typeof a.cloneNode=="undefined"||typeof a.createDocumentFragment=="undefined"||typeof a.createElement=="undefined"}()}catch(c){g=!0,k=!0}})();var s={elements:d.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output progress section summary template time video",version:c,shivCSS:d.shivCSS!==!1,supportsUnknownElements:k,shivMethods:d.shivMethods!==!1,type:"default",shivDocument:r,createElement:o,createDocumentFragment:p};a.html5=s,r(b)}(this,b),e._version=d,e._prefixes=n,e._domPrefixes=q,e._cssomPrefixes=p,e.mq=z,e.hasEvent=A,e.testProp=function(a){return H([a])},e.testAllProps=J,e.testStyles=y,g.className=g.className.replace(/(^|\s)no-js(\s|$)/,"$1$2")+(f?" js "+v.join(" "):""),e}(this,this.document),function(a,b,c){function d(a){return"[object Function]"==o.call(a)}function e(a){return"string"==typeof a}function f(){}function g(a){return!a||"loaded"==a||"complete"==a||"uninitialized"==a}function h(){var a=p.shift();q=1,a?a.t?m(function(){("c"==a.t?B.injectCss:B.injectJs)(a.s,0,a.a,a.x,a.e,1)},0):(a(),h()):q=0}function i(a,c,d,e,f,i,j){function k(b){if(!o&&g(l.readyState)&&(u.r=o=1,!q&&h(),l.onload=l.onreadystatechange=null,b)){"img"!=a&&m(function(){t.removeChild(l)},50);for(var d in y[c])y[c].hasOwnProperty(d)&&y[c][d].onload()}}var j=j||B.errorTimeout,l=b.createElement(a),o=0,r=0,u={t:d,s:c,e:f,a:i,x:j};1===y[c]&&(r=1,y[c]=[]),"object"==a?l.data=c:(l.src=c,l.type=a),l.width=l.height="0",l.onerror=l.onload=l.onreadystatechange=function(){k.call(this,r)},p.splice(e,0,u),"img"!=a&&(r||2===y[c]?(t.insertBefore(l,s?null:n),m(k,j)):y[c].push(l))}function j(a,b,c,d,f){return q=0,b=b||"j",e(a)?i("c"==b?v:u,a,b,this.i++,c,d,f):(p.splice(this.i++,0,a),1==p.length&&h()),this}function k(){var a=B;return a.loader={load:j,i:0},a}var l=b.documentElement,m=a.setTimeout,n=b.getElementsByTagName("script")[0],o={}.toString,p=[],q=0,r="MozAppearance"in l.style,s=r&&!!b.createRange().compareNode,t=s?l:n.parentNode,l=a.opera&&"[object Opera]"==o.call(a.opera),l=!!b.attachEvent&&!l,u=r?"object":l?"script":"img",v=l?"script":u,w=Array.isArray||function(a){return"[object Array]"==o.call(a)},x=[],y={},z={timeout:function(a,b){return b.length&&(a.timeout=b[0]),a}},A,B;B=function(a){function b(a){var a=a.split("!"),b=x.length,c=a.pop(),d=a.length,c={url:c,origUrl:c,prefixes:a},e,f,g;for(f=0;f<d;f++)g=a[f].split("="),(e=z[g.shift()])&&(c=e(c,g));for(f=0;f<b;f++)c=x[f](c);return c}function g(a,e,f,g,h){var i=b(a),j=i.autoCallback;i.url.split(".").pop().split("?").shift(),i.bypass||(e&&(e=d(e)?e:e[a]||e[g]||e[a.split("/").pop().split("?")[0]]),i.instead?i.instead(a,e,f,g,h):(y[i.url]?i.noexec=!0:y[i.url]=1,f.on('load',i.url,i.forceCSS||!i.forceJS&&"css"==i.url.split(".").pop().split("?").shift()?"c":c,i.noexec,i.attrs,i.timeout),(d(e)||d(j))&&f.on('load',function(){k(),e&&e(i.origUrl,h,g),j&&j(i.origUrl,h,g),y[i.url]=2})))}function h(a,b){function c(a,c){if(a){if(e(a))c||(j=function(){var a=[].slice.call(arguments);k.apply(this,a),l()}),g(a,j,b,0,h);else if(Object(a)===a)for(n in m=function(){var b=0,c;for(c in a)a.hasOwnProperty(c)&&b++;return b}(),a)a.hasOwnProperty(n)&&(!c&&!--m&&(d(j)?j=function(){var a=[].slice.call(arguments);k.apply(this,a),l()}:j[n]=function(a){return function(){var b=[].slice.call(arguments);a&&a.apply(this,b),l()}}(k[n])),g(a[n],j,b,n,h))}else!c&&l()}var h=!!a.test,i=a.load||a.both,j=a.callback||f,k=j,l=a.complete||f,m,n;c(h?a.yep:a.nope,!!i),i&&c(i)}var i,j,l=this.yepnope.loader;if(e(a))g(a,0,l,0);else if(w(a))for(i=0;i<a.length;i++)j=a[i],e(j)?g(j,0,l,0):w(j)?B(j):Object(j)===j&&h(j,l);else Object(a)===a&&h(a,l)},B.addPrefix=function(a,b){z[a]=b},B.addFilter=function(a){x.push(a)},B.errorTimeout=1e4,null==b.readyState&&b.addEventListener&&(b.readyState="loading",b.addEventListener("DOMContentLoaded",A=function(){b.removeEventListener("DOMContentLoaded",A,0),b.readyState="complete"},0)),a.yepnope=k(),a.yepnope.executeStack=h,a.yepnope.injectJs=function(a,c,d,e,i,j){var k=b.createElement("script"),l,o,e=e||B.errorTimeout;k.src=a;for(o in d)k.setAttribute(o,d[o]);c=j?h:c||f,k.onreadystatechange=k.onload=function(){!l&&g(k.readyState)&&(l=1,c(),k.onload=k.onreadystatechange=null)},m(function(){l||(l=1,c(1))},e),i?k.onload():n.parentNode.insertBefore(k,n)},a.yepnope.injectCss=function(a,c,d,e,g,i){var e=b.createElement("link"),j,c=i?h:c||f;e.href=a,e.rel="stylesheet",e.type="text/css";for(j in d)e.setAttribute(j,d[j]);g||(n.parentNode.insertBefore(e,n),m(c,0))}}(this,document),Modernizr.load=function(){yepnope.apply(window,[].slice.call(arguments,0))};



/*!
 * DebouncedResize Function
 */
(function(e){"use strict";var t=e.event,n,r;n=t.special.debouncedresize={setup:function(){e(this).on("resize",n.handler)},teardown:function(){e(this).off("resize",n.handler)},handler:function(e,i){var s=this,o=arguments,u=function(){e.type="debouncedresize";t.dispatch.apply(s,o)};if(r){clearTimeout(r)}i?u():r=setTimeout(u(),n.threshold)},threshold:150}})(jQuery);



/*! 
 * Respond.js v1.4.2: min/max-width media query polyfill
 * Copyright 2014 Scott Jehl
 * Licensed under MIT
 * http://j.mp/respondjs
 */
!function(a){"use strict";a.matchMedia=a.matchMedia||function(a){var b,c=a.documentElement,d=c.firstElementChild||c.firstChild,e=a.createElement("body"),f=a.createElement("div");return f.id="mq-test-1",f.style.cssText="position:absolute;top:-100em",e.style.background="none",e.appendChild(f),function(a){return f.innerHTML='&shy;<style media="'+a+'"> #mq-test-1 { width: 42px; }</style>',c.insertBefore(e,d),b=42===f.offsetWidth,c.removeChild(e),{matches:b,media:a}}}(a.document)}(this),function(a){"use strict";function b(){v(!0)}var c={};a.respond=c,c.update=function(){};var d=[],e=function(){var b=!1;try{b=new a.XMLHttpRequest}catch(c){b=new a.ActiveXObject("Microsoft.XMLHTTP")}return function(){return b}}(),f=function(a,b){var c=e();c&&(c.open("GET",a,!0),c.onreadystatechange=function(){4!==c.readyState||200!==c.status&&304!==c.status||b(c.responseText)},4!==c.readyState&&c.send(null))},g=function(a){return a.replace(c.regex.minmaxwh,"").match(c.regex.other)};if(c.ajax=f,c.queue=d,c.unsupportedmq=g,c.regex={media:/@media[^\{]+\{([^\{\}]*\{[^\}\{]*\})+/gi,keyframes:/@(?:\-(?:o|moz|webkit)\-)?keyframes[^\{]+\{(?:[^\{\}]*\{[^\}\{]*\})+[^\}]*\}/gi,comments:/\/\*[^*]*\*+([^/][^*]*\*+)*\//gi,urls:/(url\()['"]?([^\/\)'"][^:\)'"]+)['"]?(\))/g,findStyles:/@media *([^\{]+)\{([\S\s]+?)$/,only:/(only\s+)?([a-zA-Z]+)\s?/,minw:/\(\s*min\-width\s*:\s*(\s*[0-9\.]+)(px|em)\s*\)/,maxw:/\(\s*max\-width\s*:\s*(\s*[0-9\.]+)(px|em)\s*\)/,minmaxwh:/\(\s*m(in|ax)\-(height|width)\s*:\s*(\s*[0-9\.]+)(px|em)\s*\)/gi,other:/\([^\)]*\)/g},c.mediaQueriesSupported=a.matchMedia&&null!==a.matchMedia("only all")&&a.matchMedia("only all").matches,!c.mediaQueriesSupported){var h,i,j,k=a.document,l=k.documentElement,m=[],n=[],o=[],p={},q=30,r=k.getElementsByTagName("head")[0]||l,s=k.getElementsByTagName("base")[0],t=r.getElementsByTagName("link"),u=function(){var a,b=k.createElement("div"),c=k.body,d=l.style.fontSize,e=c&&c.style.fontSize,f=!1;return b.style.cssText="position:absolute;font-size:1em;width:1em",c||(c=f=k.createElement("body"),c.style.background="none"),l.style.fontSize="100%",c.style.fontSize="100%",c.appendChild(b),f&&l.insertBefore(c,l.firstChild),a=b.offsetWidth,f?l.removeChild(c):c.removeChild(b),l.style.fontSize=d,e&&(c.style.fontSize=e),a=j=parseFloat(a)},v=function(b){var c="clientWidth",d=l[c],e="CSS1Compat"===k.compatMode&&d||k.body[c]||d,f={},g=t[t.length-1],p=(new Date).getTime();if(b&&h&&q>p-h)return a.clearTimeout(i),i=a.setTimeout(v,q),void 0;h=p;for(var s in m)if(m.hasOwnProperty(s)){var w=m[s],x=w.minw,y=w.maxw,z=null===x,A=null===y,B="em";x&&(x=parseFloat(x)*(x.indexOf(B)>-1?j||u():1)),y&&(y=parseFloat(y)*(y.indexOf(B)>-1?j||u():1)),w.hasquery&&(z&&A||!(z||e>=x)||!(A||y>=e))||(f[w.media]||(f[w.media]=[]),f[w.media].push(n[w.rules]))}for(var C in o)o.hasOwnProperty(C)&&o[C]&&o[C].parentNode===r&&r.removeChild(o[C]);o.length=0;for(var D in f)if(f.hasOwnProperty(D)){var E=k.createElement("style"),F=f[D].join("\n");E.type="text/css",E.media=D,r.insertBefore(E,g.nextSibling),E.styleSheet?E.styleSheet.cssText=F:E.appendChild(k.createTextNode(F)),o.push(E)}},w=function(a,b,d){var e=a.replace(c.regex.comments,"").replace(c.regex.keyframes,"").match(c.regex.media),f=e&&e.length||0;b=b.substring(0,b.lastIndexOf("/"));var h=function(a){return a.replace(c.regex.urls,"$1"+b+"$2$3")},i=!f&&d;b.length&&(b+="/"),i&&(f=1);for(var j=0;f>j;j++){var k,l,o,p;i?(k=d,n.push(h(a))):(k=e[j].match(c.regex.findStyles)&&RegExp.$1,n.push(RegExp.$2&&h(RegExp.$2))),o=k.split(","),p=o.length;for(var q=0;p>q;q++)l=o[q],g(l)||m.push({media:l.split("(")[0].match(c.regex.only)&&RegExp.$2||"all",rules:n.length-1,hasquery:l.indexOf("(")>-1,minw:l.match(c.regex.minw)&&parseFloat(RegExp.$1)+(RegExp.$2||""),maxw:l.match(c.regex.maxw)&&parseFloat(RegExp.$1)+(RegExp.$2||"")})}v()},x=function(){if(d.length){var b=d.shift();f(b.href,function(c){w(c,b.href,b.media),p[b.href]=!0,a.setTimeout(function(){x()},0)})}},y=function(){for(var b=0;b<t.length;b++){var c=t[b],e=c.href,f=c.media,g=c.rel&&"stylesheet"===c.rel.toLowerCase();e&&g&&!p[e]&&(c.styleSheet&&c.styleSheet.rawCssText?(w(c.styleSheet.rawCssText,e,f),p[e]=!0):(!/^([a-zA-Z:]*\/\/)/.test(e)&&!s||e.replace(RegExp.$1,"").split("/")[0]===a.location.host)&&("//"===e.substring(0,2)&&(e=a.location.protocol+e),d.push({href:e,media:f})))}x()};y(),c.update=y,c.getEmValue=u,a.addEventListener?a.addEventListener("resize",b,!1):a.attachEvent&&a.attachEvent("onresize",b)}}(this);
// source --> https://ermafa-passage.de/wp-content/themes/mall/js/jquery.iLightBox.min.js?ver=2.2.0 
/**
 * @package 	WordPress
 * @subpackage 	Mall
 * @version		1.2.6
 */

/**
 * jQuery iLightBox - Revolutionary Lightbox Plugin
 * http://www.ilightbox.net/
 *
 * @version: 2.2.4 - October 14, 2017
 *
 * @author: iProDev (Hemn Chawroka)
 *          http://www.iprodev.com/
 *
 */
(function($, window, undefined) {

	var extensions = {
			flash: ['swf'],
			image: ['bmp', 'gif', 'jpeg', 'jpg', 'png', 'tiff', 'tif', 'jfif', 'jpe', 'webp'],
			iframe: ['asp', 'aspx', 'cgi', 'cfm', 'htm', 'html', 'jsp', 'php', 'pl', 'php3', 'php4', 'php5', 'phtml', 'rb', 'rhtml', 'shtml', 'txt'],
			video: ['avi', 'mov', 'mpg', 'mpeg', 'movie', 'mp4', 'webm', 'ogv', 'ogg', '3gp', 'm4v']
		},

		// Global DOM elements
		$win = $(window),
		$doc = $(document),

		// Support indicators
		browser,
		transform,
		gpuAcceleration,
		fullScreenApi = '',
		userAgent = navigator.userAgent || navigator.vendor || window.opera,
		supportTouch = !!('ontouchstart' in window) && (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(userAgent)),
		isMobile = /(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(userAgent) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(userAgent.substr(0, 4)),

		// Events
		clickEvent = supportTouch ? "itap.iLightBox" : "click.iLightBox",
		touchStartEvent = supportTouch ? "touchstart.iLightBox" : "mousedown.iLightBox",
		touchStopEvent = supportTouch ? "touchend.iLightBox" : "mouseup.iLightBox",
		touchMoveEvent = supportTouch ? "touchmove.iLightBox" : "mousemove.iLightBox",

		// Math shorthands
		abs = Math.abs,
		sqrt = Math.sqrt,
		round = Math.round,
		max = Math.max,
		min = Math.min,
		floor = Math.floor,
		random = Math.random,

		pluginspages = {
			quicktime: 'http://www.apple.com/quicktime/download',
			flash: 'http://www.adobe.com/go/getflash'
		},

		iLightBox = function(el, options, items, instant) {
			var iL = this;

			iL.options = options,
				iL.selector = el.selector || el,
				iL.context = el.context,
				iL.instant = instant;

			if (items.length < 1) iL.attachItems();
			else iL.items = items;

			iL.vars = {
				total: iL.items.length,
				start: 0,
				current: null,
				next: null,
				prev: null,
				BODY: $('body'),
				loadRequests: 0,
				overlay: $('<div class="ilightbox-overlay"></div>'),
				loader: $('<div class="ilightbox-loader"><div></div></div>'),
				toolbar: $('<div class="ilightbox-toolbar"></div>'),
				innerToolbar: $('<div class="ilightbox-inner-toolbar"></div>'),
				title: $('<div class="ilightbox-title"></div>'),
				closeButton: $('<a class="ilightbox-close" title="' + iL.options.text.close + '"></a>'),
				fullScreenButton: $('<a class="ilightbox-fullscreen" title="' + iL.options.text.enterFullscreen + '"></a>'),
				innerPlayButton: $('<a class="ilightbox-play" title="' + iL.options.text.slideShow + '"></a>'),
				innerNextButton: $('<a class="ilightbox-next-button" title="' + iL.options.text.next + '"></a>'),
				innerPrevButton: $('<a class="ilightbox-prev-button" title="' + iL.options.text.previous + '"></a>'),
				holder: $('<div class="ilightbox-holder' + (supportTouch ? ' supportTouch' : '') + '" ondragstart="return false;"><div class="ilightbox-container"></div></div>'),
				nextPhoto: $('<div class="ilightbox-holder' + (supportTouch ? ' supportTouch' : '') + ' ilightbox-next" ondragstart="return false;"><div class="ilightbox-container"></div></div>'),
				prevPhoto: $('<div class="ilightbox-holder' + (supportTouch ? ' supportTouch' : '') + ' ilightbox-prev" ondragstart="return false;"><div class="ilightbox-container"></div></div>'),
				nextButton: $('<a class="ilightbox-button ilightbox-next-button" ondragstart="return false;" title="' + iL.options.text.next + '"><span></span></a>'),
				prevButton: $('<a class="ilightbox-button ilightbox-prev-button" ondragstart="return false;" title="' + iL.options.text.previous + '"><span></span></a>'),
				thumbnails: $('<div class="ilightbox-thumbnails" ondragstart="return false;"><div class="ilightbox-thumbnails-container"><a class="ilightbox-thumbnails-dragger"></a><div class="ilightbox-thumbnails-grid"></div></div></div>'),
				thumbs: false,
				nextLock: false,
				prevLock: false,
				hashLock: false,
				isMobile: false,
				mobileMaxWidth: 980,
				isInFullScreen: false,
				isSwipe: false,
				mouseID: 0,
				cycleID: 0,
				isPaused: 0
			};

			// Hideable elements with mousemove event
			iL.vars.hideableElements = iL.vars.nextButton.add(iL.vars.prevButton);

			iL.normalizeItems();

			//Check necessary plugins
			iL.availPlugins();

			//Set startFrom
			iL.options.startFrom = (iL.options.startFrom > 0 && iL.options.startFrom >= iL.vars.total) ? iL.vars.total - 1 : iL.options.startFrom;

			//If randomStart
			iL.options.startFrom = (iL.options.randomStart) ? floor(random() * iL.vars.total) : iL.options.startFrom;
			iL.vars.start = iL.options.startFrom;

			if (instant) iL.instantCall();
			else iL.patchItemsEvents();

			if (iL.options.linkId) {
				iL.hashChangeHandler();
				$win.iLightBoxHashChange(function() {
					iL.hashChangeHandler();
				});
			}

			if (supportTouch) {
				var RegExp = /(click|mouseenter|mouseleave|mouseover|mouseout)/ig,
					replace = "itap";
				iL.options.caption.show = iL.options.caption.show.replace(RegExp, replace),
					iL.options.caption.hide = iL.options.caption.hide.replace(RegExp, replace),
					iL.options.social.show = iL.options.social.show.replace(RegExp, replace),
					iL.options.social.hide = iL.options.social.hide.replace(RegExp, replace);
			}

			if (iL.options.controls.arrows) {
				$.extend(iL.options.styles, {
					nextOffsetX: 0,
					prevOffsetX: 0,
					nextOpacity: 0,
					prevOpacity: 0
				});
			}
		};

	//iLightBox helpers
	iLightBox.prototype = {
		showLoader: function() {
			var iL = this;
			iL.vars.loadRequests += 1;
			if (iL.options.path.toLowerCase() == "horizontal") iL.vars.loader.addClass('ilightbox-show').stop().animate({
				top: '-30px'
			}, iL.options.show.speed, 'easeOutCirc');
			else iL.vars.loader.addClass('ilightbox-show').stop().animate({
				left: '-30px'
			}, iL.options.show.speed, 'easeOutCirc');
		},

		hideLoader: function() {
			var iL = this;
			iL.vars.loadRequests -= 1;
			iL.vars.loadRequests = (iL.vars.loadRequests < 0) ? 0 : iL.vars.loadRequests;
			if (iL.options.path.toLowerCase() == "horizontal") {
				if (iL.vars.loadRequests <= 0) iL.vars.loader.removeClass('ilightbox-show').stop().animate({
					top: '-192px'
				}, iL.options.show.speed, 'easeInCirc');
			} else {
				if (iL.vars.loadRequests <= 0) iL.vars.loader.removeClass('ilightbox-show').stop().animate({
					left: '-192px'
				}, iL.options.show.speed, 'easeInCirc');
			}
		},

		createUI: function() {
			var iL = this;

			iL.ui = {
				currentElement: iL.vars.holder,
				nextElement: iL.vars.nextPhoto,
				prevElement: iL.vars.prevPhoto,
				currentItem: iL.vars.current,
				nextItem: iL.vars.next,
				prevItem: iL.vars.prev,
				hide: function() {
					iL.closeAction();
				},
				refresh: function() {
					(arguments.length > 0) ? iL.repositionPhoto(true): iL.repositionPhoto();
				},
				fullscreen: function() {
					iL.fullScreenAction();
				}
			};
		},

		attachItems: function() {
			var iL = this,
				itemsObject = new Array(),
				items = new Array();

			$(iL.selector, iL.context).each(function() {
				var t = $(this),
					URL = t.attr(iL.options.attr) || null,
					options = t.data("options") && eval("({" + t.data("options") + "})") || {},
					caption = t.data('caption'),
					title = t.data('title'),
					type = t.data('type') || getTypeByExtension(URL);

				items.push({
					URL: URL,
					caption: caption,
					title: title,
					type: type,
					options: options
				});

				if (!iL.instant) itemsObject.push(t);
			});

			iL.items = items,
				iL.itemsObject = itemsObject;
		},

		normalizeItems: function() {
			var iL = this,
				newItems = new Array();

			$.each(iL.items, function(key, val) {

				if (typeof val == "string") val = {
					url: val
				};

				var URL = val.url || val.URL || null,
					options = val.options || {},
					caption = val.caption || null,
					title = val.title || null,
					type = (val.type) ? val.type.toLowerCase() : getTypeByExtension(URL),
					ext = (typeof URL != 'object') ? getExtension(URL) : '';

				options.thumbnail = options.thumbnail || ((type == "image") ? URL : null),
				options.videoType = options.videoType || null,
				options.skin = options.skin || iL.options.skin,
				options.width = options.width || null,
				options.height = options.height || null,
				options.mousewheel = (typeof options.mousewheel != 'undefined') ? options.mousewheel : true,
				options.swipe = (typeof options.swipe != 'undefined') ? options.swipe : true,
				options.social = (typeof options.social != 'undefined') ? options.social : iL.options.social.buttons && $.extend({}, {}, iL.options.social.buttons);

				if (type == "video") {
					options.html5video = (typeof options.html5video != 'undefined') ? options.html5video : {};

					options.html5video.webm = options.html5video.webm || options.html5video.WEBM || null;
					options.html5video.controls = (typeof options.html5video.controls != 'undefined') ? options.html5video.controls : "controls";
					options.html5video.preload = options.html5video.preload || "metadata";
					options.html5video.autoplay = (typeof options.html5video.autoplay != 'undefined') ? options.html5video.autoplay : false;
				}

				if (!options.width || !options.height) {
					if (type == "video") options.width = 1280, options.height = 720;
					else if (type == "iframe") options.width = '100%', options.height = '90%';
					else if (type == "flash") options.width = 1280, options.height = 720;
				}

				delete val.url;
				val.index = key;
				val.URL = URL;
				val.caption = caption;
				val.title = title;
				val.type = type;
				val.options = options;
				val.ext = ext;

				newItems.push(val);
			});

			iL.items = newItems;
		},

		instantCall: function() {
			var iL = this,
				key = iL.vars.start;

			iL.vars.current = key;
			iL.vars.next = (iL.items[key + 1]) ? key + 1 : null;
			iL.vars.prev = (iL.items[key - 1]) ? key - 1 : null;

			iL.addContents();
			iL.patchEvents();
		},

		addContents: function() {
			var iL = this,
				vars = iL.vars,
				opts = iL.options,
				viewport = getViewport(),
				path = opts.path.toLowerCase(),
				recognizingItems = vars.total > 0 && iL.items.filter(function(e, i, arr) {
					return ['image', 'flash', 'video'].indexOf(e.type) === -1 && typeof e.recognized === 'undefined' && (opts.smartRecognition || e.options.smartRecognition);
				}),
				needRecognition = recognizingItems.length > 0;

			if (opts.mobileOptimizer && !opts.innerToolbar)
				vars.isMobile = viewport.width <= vars.mobileMaxWidth;

			vars.overlay.addClass(opts.skin).hide().css('opacity', opts.overlay.opacity);

			if (opts.linkId)
				vars.overlay[0].setAttribute('linkid', opts.linkId);

			//Add Toolbar Buttons
			if (opts.controls.toolbar) {
				vars.toolbar.addClass(opts.skin).append(vars.closeButton);
				if (opts.controls.fullscreen)
					vars.toolbar.append(vars.fullScreenButton);
				if (opts.controls.slideshow)
					vars.toolbar.append(vars.innerPlayButton);
				if (vars.total > 1)
					vars.toolbar.append(vars.innerPrevButton).append(vars.innerNextButton);
			}

			//Append elements to body
			vars.BODY.addClass('ilightbox-noscroll').append(vars.overlay).append(vars.loader).append(vars.holder).append(vars.nextPhoto).append(vars.prevPhoto);

			if (!opts.innerToolbar)
				vars.BODY.append(vars.toolbar);
			if (opts.controls.arrows)
				vars.BODY.append(vars.nextButton).append(vars.prevButton);

			if (opts.controls.thumbnail && vars.total > 1) {
				vars.BODY.append(vars.thumbnails);
				vars.thumbnails.addClass(opts.skin).addClass('ilightbox-' + path);
				$('div.ilightbox-thumbnails-grid', vars.thumbnails).empty();
				vars.thumbs = true;
			}

			//Configure loader and arrows
			var loaderCss = (opts.path.toLowerCase() == "horizontal") ? {
				left: parseInt((viewport.width / 2) - (vars.loader.outerWidth() / 2))
			} : {
				top: parseInt((viewport.height / 2) - (vars.loader.outerHeight() / 2))
			};
			vars.loader.addClass(opts.skin).css(loaderCss);
			vars.nextButton.add(vars.prevButton).addClass(opts.skin);
			if (path == "horizontal")
				vars.loader.add(vars.nextButton).add(vars.prevButton).addClass('horizontal');

			// Configure arrow buttons
			vars.BODY[vars.isMobile ? 'addClass' : 'removeClass']('isMobile');

			if (!opts.infinite) {
				vars.prevButton.add(vars.prevButton).add(vars.innerPrevButton).add(vars.innerNextButton).removeClass('disabled');

				if (vars.current == 0)
					vars.prevButton.add(vars.innerPrevButton).addClass('disabled');
				if (vars.current >= vars.total - 1)
					vars.nextButton.add(vars.innerNextButton).addClass('disabled');
			}

			if (opts.show.effect) {
				vars.overlay.stop().fadeIn(opts.show.speed);
				vars.toolbar.stop().fadeIn(opts.show.speed);
			} else {
				vars.overlay.show();
				vars.toolbar.show();
			}

			var length = recognizingItems.length;
			if (needRecognition) {
				iL.showLoader();

				$.each(recognizingItems, function(key, val) {
					var resultFnc = function(result) {
						console.log(result);
							var key = -1,
								filter = iL.items.filter(function(e, i, arr) {
									if (e.URL == result.url)
										key = i;

									return e.URL == result.url;
								}),
								self = iL.items[key];

							if (result)
								$.extend(true, self, {
									URL: result.source,
									type: result.type,
									recognized: true,
									options: {
										html5video: result.html5video,
										width: (result.type == "image") ? 0 : (result.width || self.width),
										height: (result.type == "image") ? 0 : (result.height || self.height),
										thumbnail: self.options.thumbnail || result.thumbnail
									}
								});

							length--;

							if (length == 0) {
								iL.hideLoader();

								vars.dontGenerateThumbs = false;
								iL.generateThumbnails();

								if (opts.show.effect)
									setTimeout(function() {
										iL.generateBoxes();
									}, opts.show.speed);
								else
									iL.generateBoxes();
							}
						};

					iL.ogpRecognition(this, resultFnc);
				});
			}
			else {
				if (opts.show.effect)
					setTimeout(function() {
						iL.generateBoxes();
					}, opts.show.speed);
				else
					iL.generateBoxes();
			}

			iL.createUI();

			window.iLightBox = {
				close: function() {
					iL.closeAction();
				},
				fullscreen: function() {
					iL.fullScreenAction();
				},
				moveNext: function() {
					iL.moveTo('next');
				},
				movePrev: function() {
					iL.moveTo('prev');
				},
				goTo: function(index) {
					iL.goTo(index);
				},
				refresh: function() {
					iL.refresh();
				},
				reposition: function() {
					(arguments.length > 0) ? iL.repositionPhoto(true): iL.repositionPhoto();
				},
				setOption: function(options) {
					iL.setOption(options);
				},
				destroy: function() {
					iL.closeAction();
					iL.dispatchItemsEvents();
				}
			};

			if (opts.linkId) {
				vars.hashLock = true;
				window.location.hash = opts.linkId + '/' + vars.current;
				setTimeout(function() {
					vars.hashLock = false;
				}, 55);
			}

			if (!opts.slideshow.startPaused) {
				iL.resume();
				vars.innerPlayButton.removeClass('ilightbox-play').addClass('ilightbox-pause');
			}

			//Trigger the onOpen callback
			if (typeof iL.options.callback.onOpen == 'function') iL.options.callback.onOpen.call(iL);
		},

		loadContent: function(obj, opt, speed) {
			var iL = this,
				holder, item;

			iL.createUI();

			obj.speed = speed || iL.options.effects.loadedFadeSpeed;

			if (opt == 'current') {
				if (!obj.options.mousewheel) iL.vars.lockWheel = true;
				else iL.vars.lockWheel = false;

				if (!obj.options.swipe) iL.vars.lockSwipe = true;
				else iL.vars.lockSwipe = false;
			}

			switch (opt) {
				case 'current':
					holder = iL.vars.holder, item = iL.vars.current;
					break;
				case 'next':
					holder = iL.vars.nextPhoto, item = iL.vars.next;
					break;
				case 'prev':
					holder = iL.vars.prevPhoto, item = iL.vars.prev;
					break;
			}

			holder.removeAttr('style class').addClass('ilightbox-holder' + (supportTouch ? ' supportTouch' : '')).addClass(obj.options.skin);
			$('div.ilightbox-inner-toolbar', holder).remove();

			if (obj.title || iL.options.innerToolbar) {
				var innerToolbar = iL.vars.innerToolbar.clone();
				if (obj.title && iL.options.show.title) {
					var title = iL.vars.title.clone();
					title.empty().html(obj.title);
					innerToolbar.append(title);
				}
				if (iL.options.innerToolbar) {
					innerToolbar.append((iL.vars.total > 1) ? iL.vars.toolbar.clone() : iL.vars.toolbar);
				}
				holder.prepend(innerToolbar);
			}

			console.warn('loadContent', arguments);

			iL.loadSwitcher(obj, holder, item, opt);
		},

		loadSwitcher: function(obj, holder, item, opt) {
			var iL = this,
				opts = iL.options,
				api = {
					element: holder,
					position: item
				};

			switch (obj.type) {
				case 'image':
					//Trigger the onBeforeLoad callback
					if (typeof opts.callback.onBeforeLoad == 'function') opts.callback.onBeforeLoad.call(iL, iL.ui, item);
					if (typeof obj.options.onBeforeLoad == 'function') obj.options.onBeforeLoad.call(iL, api);

					iL.loadImage(obj.URL, function(img) {
						//Trigger the onAfterLoad callback
						if (typeof opts.callback.onAfterLoad == 'function') opts.callback.onAfterLoad.call(iL, iL.ui, item);
						if (typeof obj.options.onAfterLoad == 'function') obj.options.onAfterLoad.call(iL, api);

						var width = (img) ? img.width : 400,
							height = (img) ? img.height : 200;

						holder.data({
							naturalWidth: width,
							naturalHeight: height
						});
						$('div.ilightbox-container', holder).empty().append((img) ? '<img src="' + obj.URL + '" class="ilightbox-image" />' : '<span class="ilightbox-alert">' + opts.errors.loadImage + '</span>');

						//Trigger the onRender callback
						if (typeof opts.callback.onRender == 'function') opts.callback.onRender.call(iL, iL.ui, item);
						if (typeof obj.options.onRender == 'function') obj.options.onRender.call(iL, api);

						iL.configureHolder(obj, opt, holder);
					});

					break;

				case 'video':
					holder.data({
						naturalWidth: obj.options.width,
						naturalHeight: obj.options.height
					});

					if (opt === 'current') {
						iL.addContent(holder, obj);

						//Trigger the onRender callback
						if (typeof opts.callback.onRender == 'function') opts.callback.onRender.call(iL, iL.ui, item);
						if (typeof obj.options.onRender == 'function') obj.options.onRender.call(iL, api);
					} else {
						$('div.ilightbox-container', holder).empty();
					}

					iL.configureHolder(obj, opt, holder);

					break;

				case 'iframe':
					//iL.showLoader();
					holder.data({
						naturalWidth: obj.options.width,
						naturalHeight: obj.options.height
					});

					iL.configureHolder(obj, opt, holder);

					if (opt === 'current') {
						var el = iL.addContent(holder, obj);

						//Trigger the onRender callback
						if (typeof opts.callback.onRender == 'function') opts.callback.onRender.call(iL, iL.ui, item);
						if (typeof obj.options.onRender == 'function') obj.options.onRender.call(iL, api);

						//Trigger the onBeforeLoad callback
						if (typeof opts.callback.onBeforeLoad == 'function') opts.callback.onBeforeLoad.call(iL, iL.ui, item);
						if (typeof obj.options.onBeforeLoad == 'function') obj.options.onBeforeLoad.call(iL, api);

						el.bind('load', function() {
							//Trigger the onAfterLoad callback
							if (typeof opts.callback.onAfterLoad == 'function') opts.callback.onAfterLoad.call(iL, iL.ui, item);
							if (typeof obj.options.onAfterLoad == 'function') obj.options.onAfterLoad.call(iL, api);

							//iL.hideLoader();
							el.unbind('load');
						});
					} else {
						$('div.ilightbox-container', holder).empty();
					}

					break;

				case 'inline':
					var el = $(obj.URL),
						content = iL.addContent(holder, obj),
						images = findImageInElement(holder);

					holder.data({
						naturalWidth: (iL.items[item].options.width || el.outerWidth()),
						naturalHeight: (iL.items[item].options.height || el.outerHeight())
					});
					content.children().eq(0).show();

					//Trigger the onRender callback
					if (typeof opts.callback.onRender == 'function') opts.callback.onRender.call(iL, iL.ui, item);
					if (typeof obj.options.onRender == 'function') obj.options.onRender.call(iL, api);

					//Trigger the onBeforeLoad callback
					if (typeof opts.callback.onBeforeLoad == 'function') opts.callback.onBeforeLoad.call(iL, iL.ui, item);
					if (typeof obj.options.onBeforeLoad == 'function') obj.options.onBeforeLoad.call(iL, api);

					iL.loadImage(images, function() {
						//Trigger the onAfterLoad callback
						if (typeof opts.callback.onAfterLoad == 'function') opts.callback.onAfterLoad.call(iL, iL.ui, item);
						if (typeof obj.options.onAfterLoad == 'function') obj.options.onAfterLoad.call(iL, api);

						iL.configureHolder(obj, opt, holder);
					});

					break;

				case 'flash':
					var el = iL.addContent(holder, obj);

					holder.data({
						naturalWidth: (iL.items[item].options.width || el.outerWidth()),
						naturalHeight: (iL.items[item].options.height || el.outerHeight())
					});

					//Trigger the onRender callback
					if (typeof opts.callback.onRender == 'function') opts.callback.onRender.call(iL, iL.ui, item);
					if (typeof obj.options.onRender == 'function') obj.options.onRender.call(iL, api);

					iL.configureHolder(obj, opt, holder);

					break;

				case 'ajax':
					var ajax = obj.options.ajax || {};
					//Trigger the onBeforeLoad callback
					if (typeof opts.callback.onBeforeLoad == 'function') opts.callback.onBeforeLoad.call(iL, iL.ui, item);
					if (typeof obj.options.onBeforeLoad == 'function') obj.options.onBeforeLoad.call(iL, api);

					iL.showLoader();
					$.ajax({
						url: obj.URL || opts.ajaxSetup.url,
						data: ajax.data || null,
						dataType: ajax.dataType || "html",
						type: ajax.type || opts.ajaxSetup.type,
						cache: ajax.cache || opts.ajaxSetup.cache,
						crossDomain: ajax.crossDomain || opts.ajaxSetup.crossDomain,
						global: ajax.global || opts.ajaxSetup.global,
						ifModified: ajax.ifModified || opts.ajaxSetup.ifModified,
						username: ajax.username || opts.ajaxSetup.username,
						password: ajax.password || opts.ajaxSetup.password,
						beforeSend: ajax.beforeSend || opts.ajaxSetup.beforeSend,
						complete: ajax.complete || opts.ajaxSetup.complete,
						success: function(data, textStatus, jqXHR) {
							iL.hideLoader();

							var el = $(data),
								container = $('div.ilightbox-container', holder),
								elWidth = iL.items[item].options.width || parseInt(el[0].getAttribute('width')),
								elHeight = iL.items[item].options.height || parseInt(el[0].getAttribute('height')),
								css = (el[0].getAttribute('width') && el[0].getAttribute('height')) ? {
									'overflow': 'hidden'
								} : {};

							container.empty().append($('<div class="ilightbox-wrapper"></div>').css(css).html(el));
							holder.show().data({
								naturalWidth: (elWidth || container.outerWidth()),
								naturalHeight: (elHeight || container.outerHeight())
							}).hide();

							//Trigger the onRender callback
							if (typeof opts.callback.onRender == 'function') opts.callback.onRender.call(iL, iL.ui, item);
							if (typeof obj.options.onRender == 'function') obj.options.onRender.call(iL, api);

							var images = findImageInElement(holder);
							iL.loadImage(images, function() {
								//Trigger the onAfterLoad callback
								if (typeof opts.callback.onAfterLoad == 'function') opts.callback.onAfterLoad.call(iL, iL.ui, item);
								if (typeof obj.options.onAfterLoad == 'function') obj.options.onAfterLoad.call(iL, api);

								iL.configureHolder(obj, opt, holder);
							});

							opts.ajaxSetup.success(data, textStatus, jqXHR);
							if (typeof ajax.success == 'function') ajax.success(data, textStatus, jqXHR);
						},
						error: function(jqXHR, textStatus, errorThrown) {
							//Trigger the onAfterLoad callback
							if (typeof opts.callback.onAfterLoad == 'function') opts.callback.onAfterLoad.call(iL, iL.ui, item);
							if (typeof obj.options.onAfterLoad == 'function') obj.options.onAfterLoad.call(iL, api);

							iL.hideLoader();
							$('div.ilightbox-container', holder).empty().append('<span class="ilightbox-alert">' + opts.errors.loadContents + '</span>');
							iL.configureHolder(obj, opt, holder);

							opts.ajaxSetup.error(jqXHR, textStatus, errorThrown);
							if (typeof ajax.error == 'function') ajax.error(jqXHR, textStatus, errorThrown);
						}
					});

					break;

				case 'html':
					var object = obj.URL,
						el
					container = $('div.ilightbox-container', holder);

					if (object[0].nodeName) el = object.clone();
					else {
						var dom = $(object);
						if (dom.selector) el = $('<div>' + dom + '</div>');
						else el = dom;
					}

					var elWidth = iL.items[item].options.width || parseInt(el.attr('width')),
						elHeight = iL.items[item].options.height || parseInt(el.attr('height'));

					iL.addContent(holder, obj);

					el.appendTo(document.documentElement).hide();

					//Trigger the onRender callback
					if (typeof opts.callback.onRender == 'function') opts.callback.onRender.call(iL, iL.ui, item);
					if (typeof obj.options.onRender == 'function') obj.options.onRender.call(iL, api);

					var images = findImageInElement(holder);

					//Trigger the onBeforeLoad callback
					if (typeof opts.callback.onBeforeLoad == 'function') opts.callback.onBeforeLoad.call(iL, iL.ui, item);
					if (typeof obj.options.onBeforeLoad == 'function') obj.options.onBeforeLoad.call(iL, api);

					iL.loadImage(images, function() {
						//Trigger the onAfterLoad callback
						if (typeof opts.callback.onAfterLoad == 'function') opts.callback.onAfterLoad.call(iL, iL.ui, item);
						if (typeof obj.options.onAfterLoad == 'function') obj.options.onAfterLoad.call(iL, api);

						holder.show().data({
							naturalWidth: (elWidth || container.outerWidth()),
							naturalHeight: (elHeight || container.outerHeight())
						}).hide();
						el.remove();

						iL.configureHolder(obj, opt, holder);
					});

					break;
			}
		},

		configureHolder: function(obj, opt, holder) {
			var iL = this,
				vars = iL.vars,
				opts = iL.options;

			if (opt != "current")(opt == "next") ? holder.addClass('ilightbox-next') : holder.addClass('ilightbox-prev');

			if (opt == "current")
				var item = vars.current;
			else if (opt == "next")
				var opacity = opts.styles.nextOpacity,
					item = vars.next;
			else
				var opacity = opts.styles.prevOpacity,
					item = vars.prev;

			var api = {
				element: holder,
				position: item
			};

			iL.items[item].options.width = iL.items[item].options.width || 0,
			iL.items[item].options.height = iL.items[item].options.height || 0;

			if (opt == "current") {
				if (opts.show.effect) holder.css(transform, gpuAcceleration).fadeIn(obj.speed, function() {
					holder.css(transform, '');
					if (obj.caption) {
						iL.setCaption(obj, holder);
						var caption = $('div.ilightbox-caption', holder),
							percent = parseInt((caption.outerHeight() / holder.outerHeight()) * 100);
						if (opts.caption.start & percent <= 50) caption.fadeIn(opts.effects.fadeSpeed);
					}

					var social = obj.options.social;
					if (social) {
						iL.setSocial(social, obj.URL, holder);
						if (opts.social.start) $('div.ilightbox-social', holder).fadeIn(opts.effects.fadeSpeed);
					}

					//Generate thumbnails
					iL.generateThumbnails();

					//Trigger the onShow callback
					if (typeof opts.callback.onShow == 'function') opts.callback.onShow.call(iL, iL.ui, item);
					if (typeof obj.options.onShow == 'function') obj.options.onShow.call(iL, api);
				});
				else {
					holder.show();

					//Generate thumbnails
					iL.generateThumbnails();

					//Trigger the onShow callback
					if (typeof opts.callback.onShow == 'function') opts.callback.onShow.call(iL, iL.ui, item);
					if (typeof obj.options.onShow == 'function') obj.options.onShow.call(iL, api);
				}
			} else {
				if (opts.show.effect) holder.fadeTo(obj.speed, opacity, function() {
					if (opt == "next") vars.nextLock = false;
					else vars.prevLock = false;

					//Generate thumbnails
					iL.generateThumbnails();

					//Trigger the onShow callback
					if (typeof opts.callback.onShow == 'function') opts.callback.onShow.call(iL, iL.ui, item);
					if (typeof obj.options.onShow == 'function') obj.options.onShow.call(iL, api);
				});
				else {
					holder.css({
						opacity: opacity
					}).show();
					if (opt == "next") vars.nextLock = false;
					else vars.prevLock = false;

					//Generate thumbnails
					iL.generateThumbnails();

					//Trigger the onShow callback
					if (typeof opts.callback.onShow == 'function') opts.callback.onShow.call(iL, iL.ui, item);
					if (typeof obj.options.onShow == 'function') obj.options.onShow.call(iL, api);
				}
			}

			setTimeout(function() {
				iL.repositionPhoto();
			}, 0);
		},

		generateBoxes: function() {
			var iL = this,
				vars = iL.vars,
				opts = iL.options;

			if (opts.infinite && vars.total >= 3) {
				if (vars.current == vars.total - 1) vars.next = 0;
				if (vars.current == 0) vars.prev = vars.total - 1;
			} else opts.infinite = false;

			iL.loadContent(iL.items[vars.current], 'current', opts.show.speed);

			if (iL.items[vars.next]) iL.loadContent(iL.items[vars.next], 'next', opts.show.speed);
			if (iL.items[vars.prev]) iL.loadContent(iL.items[vars.prev], 'prev', opts.show.speed);
		},

		generateThumbnails: function() {
			var iL = this,
				vars = iL.vars,
				opts = iL.options,
				timeOut = null;

			if (vars.thumbs && !iL.vars.dontGenerateThumbs) {
				var thumbnails = vars.thumbnails,
					container = $('div.ilightbox-thumbnails-container', thumbnails),
					grid = $('div.ilightbox-thumbnails-grid', container),
					i = 0;

				grid.removeAttr('style').empty();

				$.each(iL.items, function(key, val) {
					var isActive = (vars.current == key) ? 'ilightbox-active' : '',
						opacity = (vars.current == key) ? opts.thumbnails.activeOpacity : opts.thumbnails.normalOpacity,
						thumb = val.options.thumbnail,
						thumbnail = $('<div class="ilightbox-thumbnail"></div>'),
						icon = $('<div class="ilightbox-thumbnail-icon"></div>');

					thumbnail.css({
						opacity: 0
					}).addClass(isActive);

					if ((val.type == "video" || val.type == "flash") && typeof val.options.icon == 'undefined') {
						icon.addClass('ilightbox-thumbnail-video');
						thumbnail.append(icon);
					} else if (val.options.icon) {
						icon.addClass('ilightbox-thumbnail-' + val.options.icon);
						thumbnail.append(icon);
					}

					if (thumb) iL.loadImage(thumb, function(img) {
						i++;
						if (img) thumbnail.data({
							naturalWidth: img.width,
							naturalHeight: img.height
						}).append('<img src="' + thumb + '" border="0" />');
						else thumbnail.data({
							naturalWidth: opts.thumbnails.maxWidth,
							naturalHeight: opts.thumbnails.maxHeight
						});

						clearTimeout(timeOut);
						timeOut = setTimeout(function() {
							iL.positionThumbnails(thumbnails, container, grid);
						}, 20);
						setTimeout(function() {
							thumbnail.fadeTo(opts.effects.loadedFadeSpeed, opacity);
						}, i * 20);
					});

					grid.append(thumbnail);
				});
				iL.vars.dontGenerateThumbs = true;
			}
		},

		positionThumbnails: function(thumbnails, container, grid) {
			var iL = this,
				vars = iL.vars,
				opts = iL.options,
				viewport = getViewport(),
				path = opts.path.toLowerCase();

			if (!thumbnails) thumbnails = vars.thumbnails;
			if (!container) container = $('div.ilightbox-thumbnails-container', thumbnails);
			if (!grid) grid = $('div.ilightbox-thumbnails-grid', container);

			var thumbs = $('.ilightbox-thumbnail', grid),
				widthAvail = (path == 'horizontal') ? viewport.width - opts.styles.pageOffsetX : thumbs.eq(0).outerWidth() - opts.styles.pageOffsetX,
				heightAvail = (path == 'horizontal') ? thumbs.eq(0).outerHeight() - opts.styles.pageOffsetY : viewport.height - opts.styles.pageOffsetY,
				gridWidth = (path == 'horizontal') ? 0 : widthAvail,
				gridHeight = (path == 'horizontal') ? heightAvail : 0,
				active = $('.ilightbox-active', grid),
				gridCss = {},
				css = {};

			if (arguments.length < 3) {
				thumbs.css({
					opacity: opts.thumbnails.normalOpacity
				});
				active.css({
					opacity: opts.thumbnails.activeOpacity
				});
			}

			thumbs.each(function(i) {
				var t = $(this),
					data = t.data(),
					width = (path == 'horizontal') ? 0 : opts.thumbnails.maxWidth;
				height = (path == 'horizontal') ? opts.thumbnails.maxHeight : 0;
				dims = iL.getNewDimenstions(width, height, data.naturalWidth, data.naturalHeight, true);

				t.css({
					width: dims.width,
					height: dims.height
				});
				if (path == 'horizontal') t.css({
					'float': 'left'
				});

				(path == 'horizontal') ? (
					gridWidth += t.outerWidth()
				) : (
					gridHeight += t.outerHeight()
				);
			});

			gridCss = {
				width: gridWidth,
				height: gridHeight
			};

			grid.css(gridCss);

			gridCss = {};

			var gridOffset = grid.offset(),
				activeOffset = (active.length) ? active.offset() : {
					top: parseInt(heightAvail / 2),
					left: parseInt(widthAvail / 2)
				};

			gridOffset.top = (gridOffset.top - $doc.scrollTop()),
				gridOffset.left = (gridOffset.left - $doc.scrollLeft()),
				activeOffset.top = (activeOffset.top - gridOffset.top - $doc.scrollTop()),
				activeOffset.left = (activeOffset.left - gridOffset.left - $doc.scrollLeft());

			(path == 'horizontal') ? (
				gridCss.top = 0,
				gridCss.left = parseInt((widthAvail / 2) - activeOffset.left - (active.outerWidth() / 2))
			) : (
				gridCss.top = parseInt(((heightAvail / 2) - activeOffset.top - (active.outerHeight() / 2))),
				gridCss.left = 0
			);

			if (arguments.length < 3) grid.stop().animate(gridCss, opts.effects.repositionSpeed, 'easeOutCirc');
			else grid.css(gridCss);
		},

		loadImage: function(image, callback) {
			if (!$.isArray(image)) image = [image];

			var iL = this,
				length = image.length;

			if (length > 0) {
				iL.showLoader();
				$.each(image, function(index, value) {
					var img = new Image();
					img.onload = function() {
						length -= 1;
						if (length == 0) {
							iL.hideLoader();
							callback(img);
						}
					};
					img.onerror = img.onabort = function() {
						length -= 1;
						if (length == 0) {
							iL.hideLoader();
							callback(false);
						}
					};
					img.src = image[index];
				});
			} else callback(false);
		},

		patchItemsEvents: function() {
			var iL = this,
				vars = iL.vars,
				clickEvent = supportTouch ? "itap.iL" : "click.iL",
				vEvent = supportTouch ? "click.iL" : "itap.iL";

			if (iL.context && iL.selector) {
				var $items = $(iL.selector, iL.context);

				$(iL.context).on(clickEvent, iL.selector, function() {
					var $this = $(this),
						key = $items.index($this);

					vars.current = key;
					vars.next = iL.items[key + 1] ? key + 1 : null;
					vars.prev = iL.items[key - 1] ? key - 1 : null;

					iL.addContents();
					iL.patchEvents();

					return false;
				}).on(vEvent, iL.selector, function() {
					return false;
				});
			} else
				$.each(iL.itemsObject, function(key, val) {
					val.on(clickEvent, function() {
						vars.current = key;
						vars.next = iL.items[key + 1] ? key + 1 : null;
						vars.prev = iL.items[key - 1] ? key - 1 : null;

						iL.addContents();
						iL.patchEvents();

						return false;
					}).on(vEvent, function() {
						return false;
					});
				});
		},

		dispatchItemsEvents: function() {
			var iL = this,
				vars = iL.vars,
				opts = iL.options;

			if (iL.context && iL.selector)
				$(iL.context).off('.iL', iL.selector);
			else
				$.each(iL.itemsObject, function(key, val) {
					val.off('.iL');
				});
		},

		refresh: function() {
			var iL = this;

			iL.dispatchItemsEvents();
			iL.attachItems();
			iL.normalizeItems();
			iL.patchItemsEvents();
		},

		patchEvents: function() {
			var iL = this,
				vars = iL.vars,
				opts = iL.options,
				path = opts.path.toLowerCase(),
				holders = $('.ilightbox-holder'),
				fullscreenEvent = fullScreenApi.fullScreenEventName + '.iLightBox',
				durationThreshold = 1000,
				horizontalDistanceThreshold =
				verticalDistanceThreshold = 100,
				buttonsArray = [vars.nextButton[0], vars.prevButton[0], vars.nextButton[0].firstChild, vars.prevButton[0].firstChild];

			$win.bind('resize.iLightBox', function() {
				var viewport = getViewport();

				if (opts.mobileOptimizer && !opts.innerToolbar) vars.isMobile = viewport.width <= vars.mobileMaxWidth;
				vars.BODY[vars.isMobile ? 'addClass' : 'removeClass']('isMobile');

				iL.repositionPhoto(null);
				if (supportTouch) {
					clearTimeout(vars.setTime);
					vars.setTime = setTimeout(function() {
						var scrollTop = getScrollXY().y;
						window.scrollTo(0, scrollTop - 30);
						window.scrollTo(0, scrollTop + 30);
						window.scrollTo(0, scrollTop);
					}, 2000);
				}
				if (vars.thumbs) iL.positionThumbnails();
			}).bind('keydown.iLightBox', function(event) {
				if (opts.controls.keyboard) {
					switch (event.keyCode) {
						case 13:
							if (event.shiftKey && opts.keyboard.shift_enter) iL.fullScreenAction();
							break;
						case 27:
							if (opts.keyboard.esc) iL.closeAction();
							break;
						case 37:
							if (opts.keyboard.left && !vars.lockKey) iL.moveTo('prev');
							break;
						case 38:
							if (opts.keyboard.up && !vars.lockKey) iL.moveTo('prev');
							break;
						case 39:
							if (opts.keyboard.right && !vars.lockKey) iL.moveTo('next');
							break;
						case 40:
							if (opts.keyboard.down && !vars.lockKey) iL.moveTo('next');
							break;
					}
				}
			});

			if (fullScreenApi.supportsFullScreen) $win.bind(fullscreenEvent, function() {
				iL.doFullscreen();
			});

			var holderEventsArr = [opts.caption.show + '.iLightBox', opts.caption.hide + '.iLightBox', opts.social.show + '.iLightBox', opts.social.hide + '.iLightBox'].filter(function(e, i, arr) {
					return arr.lastIndexOf(e) === i;
				}),
				holderEvents = "";

			$.each(holderEventsArr, function(key, val) {
				if (key != 0) holderEvents += ' ';
				holderEvents += val;
			});

			$doc.on(clickEvent, '.ilightbox-overlay', function() {
				if (opts.overlay.blur) iL.closeAction();
			}).on(clickEvent, '.ilightbox-next, .ilightbox-next-button', function() {
				iL.moveTo('next');
			}).on(clickEvent, '.ilightbox-prev, .ilightbox-prev-button', function() {
				iL.moveTo('prev');
			}).on(clickEvent, '.ilightbox-thumbnail', function() {
				var t = $(this),
					thumbs = $('.ilightbox-thumbnail', vars.thumbnails),
					index = thumbs.index(t);

				if (index != vars.current) iL.goTo(index);
			}).on(holderEvents, '.ilightbox-holder:not(.ilightbox-next, .ilightbox-prev)', function(e) {
				var caption = $('div.ilightbox-caption', vars.holder),
					social = $('div.ilightbox-social', vars.holder),
					fadeSpeed = opts.effects.fadeSpeed;

				if (vars.nextLock || vars.prevLock) {
					if (e.type == opts.caption.show && !caption.is(':visible')) caption.fadeIn(fadeSpeed);
					else if (e.type == opts.caption.hide && caption.is(':visible')) caption.fadeOut(fadeSpeed);

					if (e.type == opts.social.show && !social.is(':visible')) social.fadeIn(fadeSpeed);
					else if (e.type == opts.social.hide && social.is(':visible')) social.fadeOut(fadeSpeed);
				} else {
					if (e.type == opts.caption.show && !caption.is(':visible')) caption.stop().fadeIn(fadeSpeed);
					else if (e.type == opts.caption.hide && caption.is(':visible')) caption.stop().fadeOut(fadeSpeed);

					if (e.type == opts.social.show && !social.is(':visible')) social.stop().fadeIn(fadeSpeed);
					else if (e.type == opts.social.hide && social.is(':visible')) social.stop().fadeOut(fadeSpeed);
				}
			}).on('mouseenter.iLightBox mouseleave.iLightBox', '.ilightbox-wrapper', function(e) {
				if (e.type == 'mouseenter') vars.lockWheel = true;
				else vars.lockWheel = false;
			}).on(clickEvent, '.ilightbox-toolbar a.ilightbox-close, .ilightbox-toolbar a.ilightbox-fullscreen, .ilightbox-toolbar a.ilightbox-play, .ilightbox-toolbar a.ilightbox-pause', function() {
				var t = $(this);

				if (t.hasClass('ilightbox-fullscreen')) iL.fullScreenAction();
				else if (t.hasClass('ilightbox-play')) {
					iL.resume();
					t.addClass('ilightbox-pause').removeClass('ilightbox-play');
				} else if (t.hasClass('ilightbox-pause')) {
					iL.pause();
					t.addClass('ilightbox-play').removeClass('ilightbox-pause');
				} else iL.closeAction();
			}).on(touchMoveEvent, '.ilightbox-overlay, .ilightbox-thumbnails-container', function(e) {
				// prevent scrolling
				e.preventDefault();
			});

			function mouseMoveHandler(e) {
				if (!vars.isMobile) {
					if (!vars.mouseID) {
						vars.hideableElements.show();
					}

					vars.mouseID = clearTimeout(vars.mouseID);

					if (buttonsArray.indexOf(e.target) === -1)
						vars.mouseID = setTimeout(function() {
							vars.hideableElements.hide();
							vars.mouseID = clearTimeout(vars.mouseID);
						}, 3000);
				}
			}

			if (opts.controls.arrows && !supportTouch) $doc.on('mousemove.iLightBox', mouseMoveHandler);

			if (opts.controls.slideshow && opts.slideshow.pauseOnHover) $doc.on('mouseenter.iLightBox mouseleave.iLightBox', '.ilightbox-holder:not(.ilightbox-next, .ilightbox-prev)', function(e) {
				if (e.type == 'mouseenter' && vars.cycleID) iL.pause();
				else if (e.type == 'mouseleave' && vars.isPaused) iL.resume();
			});

			var switchers = $('.ilightbox-overlay, .ilightbox-holder, .ilightbox-thumbnails');

			if (opts.controls.mousewheel) switchers.on('mousewheel.iLightBox', function(event, delta) {
				if (!vars.lockWheel) {
					event.preventDefault();
					if (delta < 0) iL.moveTo('next');
					else if (delta > 0) iL.moveTo('prev');
				}
			});

			if (opts.controls.swipe) holders.on(touchStartEvent, function(event) {
				if (vars.nextLock || vars.prevLock || vars.total == 1 || vars.lockSwipe) return;

				vars.BODY.addClass('ilightbox-closedhand');

				var data = event.originalEvent.touches ? event.originalEvent.touches[0] : event,
					scrollTop = $doc.scrollTop(),
					scrollLeft = $doc.scrollLeft(),
					offsets = [
						holders.eq(0).offset(),
						holders.eq(1).offset(),
						holders.eq(2).offset()
					],
					offSet = [{
						top: offsets[0].top - scrollTop,
						left: offsets[0].left - scrollLeft
					}, {
						top: offsets[1].top - scrollTop,
						left: offsets[1].left - scrollLeft
					}, {
						top: offsets[2].top - scrollTop,
						left: offsets[2].left - scrollLeft
					}],
					start = {
						time: (new Date()).getTime(),
						coords: [data.pageX - scrollLeft, data.pageY - scrollTop]
					},
					stop;

				function moveEachHandler(i) {
					var t = $(this),
						offset = offSet[i],
						scroll = [(start.coords[0] - stop.coords[0]), (start.coords[1] - stop.coords[1])];

					t[0].style[path == "horizontal" ? 'left' : 'top'] = (path == "horizontal" ? offset.left - scroll[0] : offset.top - scroll[1]) + 'px';
				}

				function moveHandler(event) {

					if (!start) return;

					var data = event.originalEvent.touches ? event.originalEvent.touches[0] : event;

					stop = {
						time: (new Date()).getTime(),
						coords: [data.pageX - scrollLeft, data.pageY - scrollTop]
					};

					holders.each(moveEachHandler);

					// prevent scrolling
					event.preventDefault();
				}

				function repositionHolders() {
					holders.each(function() {
						var t = $(this),
							offset = t.data('offset') || {
								top: t.offset().top - scrollTop,
								left: t.offset().left - scrollLeft
							},
							top = offset.top,
							left = offset.left;

						t.css(transform, gpuAcceleration).stop().animate({
							top: top,
							left: left
						}, 500, 'easeOutCirc', function() {
							t.css(transform, '');
						});
					});
				}

				holders.bind(touchMoveEvent, moveHandler);
				$doc.one(touchStopEvent, function(event) {
					holders.unbind(touchMoveEvent, moveHandler);

					vars.BODY.removeClass('ilightbox-closedhand');

					if (start && stop) {
						if (path == "horizontal" && stop.time - start.time < durationThreshold && abs(start.coords[0] - stop.coords[0]) > horizontalDistanceThreshold && abs(start.coords[1] - stop.coords[1]) < verticalDistanceThreshold) {
							if (start.coords[0] > stop.coords[0]) {
								if (vars.current == vars.total - 1 && !opts.infinite) repositionHolders();
								else {
									vars.isSwipe = true;
									iL.moveTo('next');
								}
							} else {
								if (vars.current == 0 && !opts.infinite) repositionHolders();
								else {
									vars.isSwipe = true;
									iL.moveTo('prev');
								}
							}
						} else if (path == "vertical" && stop.time - start.time < durationThreshold && abs(start.coords[1] - stop.coords[1]) > horizontalDistanceThreshold && abs(start.coords[0] - stop.coords[0]) < verticalDistanceThreshold) {
							if (start.coords[1] > stop.coords[1]) {
								if (vars.current == vars.total - 1 && !opts.infinite) repositionHolders();
								else {
									vars.isSwipe = true;
									iL.moveTo('next');
								}
							} else {
								if (vars.current == 0 && !opts.infinite) repositionHolders();
								else {
									vars.isSwipe = true;
									iL.moveTo('prev');
								}
							}
						} else repositionHolders();
					}
					start = stop = undefined;
				});
			});

		},

		goTo: function(index) {
			var iL = this,
				vars = iL.vars,
				opts = iL.options,
				diff = (index - vars.current);

			if (opts.infinite) {
				if (index == vars.total - 1 && vars.current == 0) diff = -1;
				if (vars.current == vars.total - 1 && index == 0) diff = 1;
			}

			if (diff == 1) iL.moveTo('next');
			else if (diff == -1) iL.moveTo('prev');
			else {

				if (vars.nextLock || vars.prevLock) return false;

				//Trigger the onBeforeChange callback
				if (typeof opts.callback.onBeforeChange == 'function') opts.callback.onBeforeChange.call(iL, iL.ui);

				if (opts.linkId) {
					vars.hashLock = true;
					window.location.hash = opts.linkId + '/' + index;
				}

				if (iL.items[index]) {
					if (!iL.items[index].options.mousewheel) vars.lockWheel = true;
					else iL.vars.lockWheel = false;

					if (!iL.items[index].options.swipe) vars.lockSwipe = true;
					else vars.lockSwipe = false;
				}

				$.each([vars.holder, vars.nextPhoto, vars.prevPhoto], function(key, val) {
					val.css(transform, gpuAcceleration).fadeOut(opts.effects.loadedFadeSpeed);
				});

				vars.current = index;
				vars.next = index + 1;
				vars.prev = index - 1;

				iL.createUI();

				setTimeout(function() {
					iL.generateBoxes();
				}, opts.effects.loadedFadeSpeed + 50);

				$('.ilightbox-thumbnail', vars.thumbnails).removeClass('ilightbox-active').eq(index).addClass('ilightbox-active');
				iL.positionThumbnails();

				if (opts.linkId) setTimeout(function() {
					vars.hashLock = false;
				}, 55);

				// Configure arrow buttons
				if (!opts.infinite) {
					vars.nextButton.add(vars.prevButton).add(vars.innerPrevButton).add(vars.innerNextButton).removeClass('disabled');

					if (vars.current == 0) {
						vars.prevButton.add(vars.innerPrevButton).addClass('disabled');
					}
					if (vars.current >= vars.total - 1) {
						vars.nextButton.add(vars.innerNextButton).addClass('disabled');
					}
				}

				// Reset next cycle timeout
				iL.resetCycle();

				//Trigger the onAfterChange callback
				if (typeof opts.callback.onAfterChange == 'function') opts.callback.onAfterChange.call(iL, iL.ui);
			}
		},

		moveTo: function(side) {
			var iL = this,
				vars = iL.vars,
				opts = iL.options,
				path = opts.path.toLowerCase(),
				viewport = getViewport(),
				switchSpeed = opts.effects.switchSpeed;

			if (vars.nextLock || vars.prevLock) return false;
			else {

				var item = (side == "next") ? vars.next : vars.prev;

				if (opts.linkId) {
					vars.hashLock = true;
					window.location.hash = opts.linkId + '/' + item;
				}

				if (side == "next") {
					if (!iL.items[item]) return false;
					var firstHolder = vars.nextPhoto,
						secondHolder = vars.holder,
						lastHolder = vars.prevPhoto,
						firstClass = 'ilightbox-prev',
						secondClass = 'ilightbox-next';
				} else if (side == "prev") {
					if (!iL.items[item]) return false;
					var firstHolder = vars.prevPhoto,
						secondHolder = vars.holder,
						lastHolder = vars.nextPhoto,
						firstClass = 'ilightbox-next',
						secondClass = 'ilightbox-prev';
				}

				//Trigger the onBeforeChange callback
				if (typeof opts.callback.onBeforeChange == 'function')
					opts.callback.onBeforeChange.call(iL, iL.ui);

				(side == "next") ? vars.nextLock = true: vars.prevLock = true;

				var captionFirst = $('div.ilightbox-caption', secondHolder),
					socialFirst = $('div.ilightbox-social', secondHolder);

				if (captionFirst.length)
					captionFirst.stop().fadeOut(switchSpeed, function() {
						$(this).remove();
					});
				if (socialFirst.length)
					socialFirst.stop().fadeOut(switchSpeed, function() {
						$(this).remove();
					});

				if (iL.items[item].caption) {
					iL.setCaption(iL.items[item], firstHolder);
					var caption = $('div.ilightbox-caption', firstHolder),
						percent = parseInt((caption.outerHeight() / firstHolder.outerHeight()) * 100);
					if (opts.caption.start && percent <= 50) caption.fadeIn(switchSpeed);
				}

				var social = iL.items[item].options.social;
				if (social) {
					iL.setSocial(social, iL.items[item].URL, firstHolder);
					if (opts.social.start) $('div.ilightbox-social', firstHolder).fadeIn(opts.effects.fadeSpeed);
				}

				$.each([firstHolder, secondHolder, lastHolder], function(key, val) {
					val.removeClass('ilightbox-next ilightbox-prev');
				});

				var firstOffset = firstHolder.data('offset'),
					winW = (viewport.width - (opts.styles.pageOffsetX)),
					winH = (viewport.height - (opts.styles.pageOffsetY)),
					width = firstOffset.newDims.width,
					height = firstOffset.newDims.height,
					thumbsOffset = firstOffset.thumbsOffset,
					diff = firstOffset.diff,
					top = parseInt((winH / 2) - (height / 2) - diff.H - (thumbsOffset.H / 2)),
					left = parseInt((winW / 2) - (width / 2) - diff.W - (thumbsOffset.W / 2));

				firstHolder.css(transform, gpuAcceleration).animate({
					top: top,
					left: left,
					opacity: 1
				}, switchSpeed, (vars.isSwipe) ? 'easeOutCirc' : 'easeInOutCirc', function() {
					firstHolder.css(transform, '');
				});

				$('div.ilightbox-container', firstHolder).animate({
					width: width,
					height: height
				}, switchSpeed, (vars.isSwipe) ? 'easeOutCirc' : 'easeInOutCirc');

				var secondOffset = secondHolder.data('offset'),
					object = secondOffset.object;

				diff = secondOffset.diff;

				width = secondOffset.newDims.width,
					height = secondOffset.newDims.height;

				width = parseInt(width * opts.styles[side == 'next' ? 'prevScale' : 'nextScale']),
					height = parseInt(height * opts.styles[side == 'next' ? 'prevScale' : 'nextScale']),
					top = (path == 'horizontal') ? parseInt((winH / 2) - object.offsetY - (height / 2) - diff.H - (thumbsOffset.H / 2)) : parseInt(winH - object.offsetX - diff.H - (thumbsOffset.H / 2));

				if (side == 'prev')
					left = (path == 'horizontal') ? parseInt(winW - object.offsetX - diff.W - (thumbsOffset.W / 2)) : parseInt((winW / 2) - (width / 2) - diff.W - object.offsetY - (thumbsOffset.W / 2));
				else {
					top = (path == 'horizontal') ? top : parseInt(object.offsetX - diff.H - height - (thumbsOffset.H / 2)),
						left = (path == 'horizontal') ? parseInt(object.offsetX - diff.W - width - (thumbsOffset.W / 2)) : parseInt((winW / 2) - object.offsetY - (width / 2) - diff.W - (thumbsOffset.W / 2));
				}

				$('div.ilightbox-container', secondHolder).animate({
					width: width,
					height: height
				}, switchSpeed, (vars.isSwipe) ? 'easeOutCirc' : 'easeInOutCirc');

				secondHolder.addClass(firstClass).css(transform, gpuAcceleration).animate({
					top: top,
					left: left,
					opacity: opts.styles.prevOpacity
				}, switchSpeed, (vars.isSwipe) ? 'easeOutCirc' : 'easeInOutCirc', function() {
					secondHolder.css(transform, '');

					$('.ilightbox-thumbnail', vars.thumbnails).removeClass('ilightbox-active').eq(item).addClass('ilightbox-active');
					iL.positionThumbnails();

					if (iL.items[item]) {
						if (!iL.items[item].options.mousewheel) vars.lockWheel = true;
						else vars.lockWheel = false;

						if (!iL.items[item].options.swipe) vars.lockSwipe = true;
						else vars.lockSwipe = false;
					}

					vars.isSwipe = false;

					// Remove iframe & video from previous slide
					if (['iframe', 'video'].indexOf(iL.items[vars.current].type) !== -1) {
						$('div.ilightbox-container', secondHolder).empty();
					}

					if (side == "next") {
						vars.nextPhoto = lastHolder,
							vars.prevPhoto = secondHolder,
							vars.holder = firstHolder;

						vars.nextPhoto.hide();

						vars.next = vars.next + 1,
							vars.prev = vars.current,
							vars.current = vars.current + 1;

						if (opts.infinite) {
							if (vars.current > vars.total - 1) vars.current = 0;
							if (vars.current == vars.total - 1) vars.next = 0;
							if (vars.current == 0) vars.prev = vars.total - 1;
						}

						iL.createUI();

						if (!iL.items[vars.next])
							vars.nextLock = false;
						else
							iL.loadContent(iL.items[vars.next], 'next');
					} else {
						vars.prevPhoto = lastHolder;
						vars.nextPhoto = secondHolder;
						vars.holder = firstHolder;

						vars.prevPhoto.hide();

						vars.next = vars.current;
						vars.current = vars.prev;
						vars.prev = vars.current - 1;

						if (opts.infinite) {
							if (vars.current == vars.total - 1) vars.next = 0;
							if (vars.current == 0) vars.prev = vars.total - 1;
						}

						iL.createUI();

						if (!iL.items[vars.prev])
							vars.prevLock = false;
						else
							iL.loadContent(iL.items[vars.prev], 'prev');
					}

					// Add iframe & video content for current slide
					if (['iframe', 'video'].indexOf(iL.items[vars.current].type) !== -1) {
						iL.loadContent(iL.items[vars.current], 'current');
					}

					if (opts.linkId) setTimeout(function() {
						vars.hashLock = false;
					}, 55);

					// Configure arrow buttons
					if (!opts.infinite) {
						vars.nextButton.add(vars.prevButton).add(vars.innerPrevButton).add(vars.innerNextButton).removeClass('disabled');

						if (vars.current == 0)
							vars.prevButton.add(vars.innerPrevButton).addClass('disabled');
						if (vars.current >= vars.total - 1)
							vars.nextButton.add(vars.innerNextButton).addClass('disabled');
					}

					iL.repositionPhoto();

					// Reset next cycle timeout
					iL.resetCycle();

					//Trigger the onAfterChange callback
					if (typeof opts.callback.onAfterChange == 'function')
						opts.callback.onAfterChange.call(iL, iL.ui);
				});

				top = (path == 'horizontal') ? getPixel(lastHolder, 'top') : ((side == "next") ? parseInt(-(winH / 2) - lastHolder.outerHeight()) : parseInt(top * 2)),
					left = (path == 'horizontal') ? ((side == "next") ? parseInt(-(winW / 2) - lastHolder.outerWidth()) : parseInt(left * 2)) : getPixel(lastHolder, 'left');

				lastHolder.css(transform, gpuAcceleration).animate({
					top: top,
					left: left,
					opacity: opts.styles.nextOpacity
				}, switchSpeed, (vars.isSwipe) ? 'easeOutCirc' : 'easeInOutCirc', function() {
					lastHolder.css(transform, '');
				}).addClass(secondClass);
			}
		},

		setCaption: function(obj, target) {
			var iL = this,
				caption = $('<div class="ilightbox-caption"></div>');

			if (obj.caption) {
				caption.html(obj.caption);
				$('div.ilightbox-container', target).append(caption);
			}
		},

		normalizeSocial: function(obj, url) {
			var iL = this,
				vars = iL.vars,
				opts = iL.options,
				baseURL = window.location.href;

			$.each(obj, function(key, value) {
				if (!value)
					return true;

				var item = key.toLowerCase(),
					source, text;

				switch (item) {
					case 'facebook':
						source = "http://www.facebook.com/share.php?v=4&src=bm&u={URL}",
							text = "Share on Facebook";
						break;
					case 'twitter':
						source = "http://twitter.com/home?status={URL}",
							text = "Share on Twitter";
						break;
					case 'googleplus':
						source = "https://plus.google.com/share?url={URL}",
							text = "Share on Google+";
						break;
					case 'delicious':
						source = "http://delicious.com/post?url={URL}",
							text = "Share on Delicious";
						break;
					case 'digg':
						source = "http://digg.com/submit?phase=2&url={URL}",
							text = "Share on Digg";
						break;
					case 'reddit':
						source = "http://reddit.com/submit?url={URL}",
							text = "Share on reddit";
						break;
				}

				obj[key] = {
					URL: value.URL && absolutizeURI(baseURL, value.URL) || opts.linkId && window.location.href || typeof url !== 'string' && baseURL || url && absolutizeURI(baseURL, url) || baseURL,
					source: value.source || source || value.URL && absolutizeURI(baseURL, value.URL) || url && absolutizeURI(baseURL, url),
					text: value.text || text || "Share on " + key,
					width: (typeof(value.width) != 'undefined' && !isNaN(value.width)) ? parseInt(value.width) : 640,
					height: value.height || 360
				};

			});

			return obj;
		},

		setSocial: function(obj, url, target) {
			var iL = this,
				socialBar = $('<div class="ilightbox-social"></div>'),
				buttons = '<ul>';

			obj = iL.normalizeSocial(obj, url);

			$.each(obj, function(key, value) {
				var item = key.toLowerCase(),
					source = value.source.replace(/\{URL\}/g, encodeURIComponent(value.URL).replace(/!/g, '%21').replace(/'/g, '%27').replace(/\(/g, '%28').replace(/\)/g, '%29').replace(/\*/g, '%2A').replace(/%20/g, '+'));
				buttons += '<li class="' + key + '"><a href="' + source + '" onclick="javascript:window.open(this.href' + ((value.width <= 0 || value.height <= 0) ? '' : ', \'\', \'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=' + value.height + ',width=' + value.width + ',left=40,top=40\'') + ');return false;" title="' + value.text + '" target="_blank"></a></li>';
			});

			buttons += '</ul>';

			socialBar.html(buttons);
			$('div.ilightbox-container', target).append(socialBar);
		},

		fullScreenAction: function() {
			var iL = this,
				vars = iL.vars;

			if (fullScreenApi.supportsFullScreen) {
				if (fullScreenApi.isFullScreen()) fullScreenApi.cancelFullScreen(document.documentElement);
				else fullScreenApi.requestFullScreen(document.documentElement);
			} else {
				iL.doFullscreen();
			}
		},

		doFullscreen: function() {
			var iL = this,
				vars = iL.vars,
				viewport = getViewport(),
				opts = iL.options;

			if (opts.fullAlone) {
				var currentHolder = vars.holder,
					current = iL.items[vars.current],
					windowWidth = viewport.width,
					windowHeight = viewport.height,
					elements = [currentHolder, vars.nextPhoto, vars.prevPhoto, vars.nextButton, vars.prevButton, vars.overlay, vars.toolbar, vars.thumbnails, vars.loader],
					hideElements = [vars.nextPhoto, vars.prevPhoto, vars.nextButton, vars.prevButton, vars.loader, vars.thumbnails];

				if (!vars.isInFullScreen) {
					vars.isInFullScreen = vars.lockKey = vars.lockWheel = vars.lockSwipe = true;
					vars.overlay.css({
						opacity: 1
					});

					$.each(hideElements, function(i, element) {
						element.hide();
					});

					vars.fullScreenButton.attr('title', opts.text.exitFullscreen);

					if (opts.fullStretchTypes.indexOf(current.type) != -1) currentHolder.data({
						naturalWidthOld: currentHolder.data('naturalWidth'),
						naturalHeightOld: currentHolder.data('naturalHeight'),
						naturalWidth: windowWidth,
						naturalHeight: windowHeight
					});
					else {
						var viewport = current.options.fullViewPort || opts.fullViewPort || '',
							newWidth = windowWidth,
							newHeight = windowHeight,
							width = currentHolder.data('naturalWidth'),
							height = currentHolder.data('naturalHeight');

						if (viewport.toLowerCase() == 'fill') {
							newHeight = (newWidth / width) * height;

							if (newHeight < windowHeight) {
								newWidth = (windowHeight / height) * width,
									newHeight = windowHeight;
							}
						} else if (viewport.toLowerCase() == 'fit') {
							var dims = iL.getNewDimenstions(newWidth, newHeight, width, height, true);

							newWidth = dims.width,
								newHeight = dims.height;
						} else if (viewport.toLowerCase() == 'stretch') {
							newWidth = newWidth,
								newHeight = newHeight;
						} else {
							var scale = (width > newWidth || height > newHeight) ? true : false,
								dims = iL.getNewDimenstions(newWidth, newHeight, width, height, scale);
							newWidth = dims.width,
								newHeight = dims.height;
						}

						currentHolder.data({
							naturalWidthOld: currentHolder.data('naturalWidth'),
							naturalHeightOld: currentHolder.data('naturalHeight'),
							naturalWidth: newWidth,
							naturalHeight: newHeight
						});
					}

					$.each(elements, function(key, val) {
						val.addClass('ilightbox-fullscreen');
					});

					//Trigger the onEnterFullScreen callback
					if (typeof opts.callback.onEnterFullScreen == 'function') opts.callback.onEnterFullScreen.call(iL, iL.ui);
				} else {
					vars.isInFullScreen = vars.lockKey = vars.lockWheel = vars.lockSwipe = false;
					vars.overlay.css({
						opacity: iL.options.overlay.opacity
					});

					$.each(hideElements, function(i, element) {
						element.show();
					});

					vars.fullScreenButton.attr('title', opts.text.enterFullscreen);

					currentHolder.data({
						naturalWidth: currentHolder.data('naturalWidthOld'),
						naturalHeight: currentHolder.data('naturalHeightOld'),
						naturalWidthOld: null,
						naturalHeightOld: null
					});

					$.each(elements, function(key, val) {
						val.removeClass('ilightbox-fullscreen');
					});

					//Trigger the onExitFullScreen callback
					if (typeof opts.callback.onExitFullScreen == 'function') opts.callback.onExitFullScreen.call(iL, iL.ui);
				}
			} else {
				if (!vars.isInFullScreen) vars.isInFullScreen = true;
				else vars.isInFullScreen = false;
			}
			iL.repositionPhoto(true);
		},

		closeAction: function() {
			var iL = this,
				vars = iL.vars,
				opts = iL.options;

			$win.unbind('.iLightBox');
			$doc.off('.iLightBox');

			if (vars.isInFullScreen) fullScreenApi.cancelFullScreen(document.documentElement);

			$('.ilightbox-overlay, .ilightbox-holder, .ilightbox-thumbnails').off('.iLightBox');

			if (opts.hide.effect) vars.overlay.stop().fadeOut(opts.hide.speed, function() {
				vars.overlay.remove();
				vars.BODY.removeClass('ilightbox-noscroll').off('.iLightBox');
			});
			else {
				vars.overlay.remove();
				vars.BODY.removeClass('ilightbox-noscroll').off('.iLightBox');
			}

			var fadeOuts = [vars.toolbar, vars.holder, vars.nextPhoto, vars.prevPhoto, vars.nextButton, vars.prevButton, vars.loader, vars.thumbnails];

			$.each(fadeOuts, function(i, element) {
				element.removeAttr('style').remove();
			});

			vars.dontGenerateThumbs = vars.isInFullScreen = false;

			window.iLightBox = null;

			if (opts.linkId) {
				vars.hashLock = true;
				removeHash();
				setTimeout(function() {
					vars.hashLock = false;
				}, 55);
			}

			//Trigger the onHide callback
			if (typeof opts.callback.onHide == 'function') opts.callback.onHide.call(iL, iL.ui);
		},

		repositionPhoto: function() {
			var iL = this,
				vars = iL.vars,
				opts = iL.options,
				path = opts.path.toLowerCase(),
				viewport = getViewport(),
				winWidth = viewport.width,
				winHeight = viewport.height;

			var thumbsOffsetW = (vars.isInFullScreen && opts.fullAlone || vars.isMobile) ? 0 : ((path == 'horizontal') ? 0 : vars.thumbnails.outerWidth()),
				thumbsOffsetH = vars.isMobile ? vars.toolbar.outerHeight() : ((vars.isInFullScreen && opts.fullAlone) ? 0 : ((path == 'horizontal') ? vars.thumbnails.outerHeight() : 0)),
				width = (vars.isInFullScreen && opts.fullAlone) ? winWidth : (winWidth - (opts.styles.pageOffsetX)),
				height = (vars.isInFullScreen && opts.fullAlone) ? winHeight : (winHeight - (opts.styles.pageOffsetY)),
				offsetW = (path == 'horizontal') ? parseInt((iL.items[vars.next] || iL.items[vars.prev]) ? ((opts.styles.nextOffsetX + opts.styles.prevOffsetX)) * 2 : (((width / 10) <= 30) ? 30 : (width / 10))) : parseInt(((width / 10) <= 30) ? 30 : (width / 10)) + thumbsOffsetW,
				offsetH = (path == 'horizontal') ? parseInt(((height / 10) <= 30) ? 30 : (height / 10)) + thumbsOffsetH : parseInt((iL.items[vars.next] || iL.items[vars.prev]) ? ((opts.styles.nextOffsetX + opts.styles.prevOffsetX)) * 2 : (((height / 10) <= 30) ? 30 : (height / 10)));

			var elObject = {
				type: 'current',
				width: width,
				height: height,
				item: iL.items[vars.current],
				offsetW: offsetW,
				offsetH: offsetH,
				thumbsOffsetW: thumbsOffsetW,
				thumbsOffsetH: thumbsOffsetH,
				animate: arguments.length,
				holder: vars.holder
			};

			iL.repositionEl(elObject);

			if (iL.items[vars.next]) {
				elObject = $.extend(elObject, {
					type: 'next',
					item: iL.items[vars.next],
					offsetX: opts.styles.nextOffsetX,
					offsetY: opts.styles.nextOffsetY,
					holder: vars.nextPhoto
				});

				iL.repositionEl(elObject);
			}

			if (iL.items[vars.prev]) {
				elObject = $.extend(elObject, {
					type: 'prev',
					item: iL.items[vars.prev],
					offsetX: opts.styles.prevOffsetX,
					offsetY: opts.styles.prevOffsetY,
					holder: vars.prevPhoto
				});

				iL.repositionEl(elObject);
			}

			var loaderCss = (path == "horizontal") ? {
				left: parseInt((width / 2) - (vars.loader.outerWidth() / 2))
			} : {
				top: parseInt((height / 2) - (vars.loader.outerHeight() / 2))
			};
			vars.loader.css(loaderCss);
		},

		repositionEl: function(obj) {
			var iL = this,
				vars = iL.vars,
				opts = iL.options,
				path = opts.path.toLowerCase(),
				widthAvail = (obj.type == 'current') ? ((vars.isInFullScreen && opts.fullAlone) ? obj.width : (obj.width - obj.offsetW)) : (obj.width - obj.offsetW),
				heightAvail = (obj.type == 'current') ? ((vars.isInFullScreen && opts.fullAlone) ? obj.height : (obj.height - obj.offsetH)) : (obj.height - obj.offsetH),
				itemParent = obj.item,
				item = obj.item.options,
				holder = obj.holder,
				offsetX = obj.offsetX || 0,
				offsetY = obj.offsetY || 0,
				thumbsOffsetW = obj.thumbsOffsetW,
				thumbsOffsetH = obj.thumbsOffsetH;

			if (obj.type == 'current') {
				if (typeof item.width == 'number' && item.width) widthAvail = ((vars.isInFullScreen && opts.fullAlone) && (opts.fullStretchTypes.indexOf(itemParent.type) != -1 || item.fullViewPort || opts.fullViewPort)) ? widthAvail : ((item.width > widthAvail) ? widthAvail : item.width);
				if (typeof item.height == 'number' && item.height) heightAvail = ((vars.isInFullScreen && opts.fullAlone) && (opts.fullStretchTypes.indexOf(itemParent.type) != -1 || item.fullViewPort || opts.fullViewPort)) ? heightAvail : ((item.height > heightAvail) ? heightAvail : item.height);
			} else {
				if (typeof item.width == 'number' && item.width) widthAvail = (item.width > widthAvail) ? widthAvail : item.width;
				if (typeof item.height == 'number' && item.height) heightAvail = (item.height > heightAvail) ? heightAvail : item.height;
			}

			if (opts.innerToolbar)
				heightAvail = parseInt(heightAvail - $('.ilightbox-inner-toolbar', holder).outerHeight());

			var width = (typeof item.width == 'string' && item.width.indexOf('%') != -1) ? percentToValue(parseInt(item.width.replace('%', '')), obj.width) : holder.data('naturalWidth'),
				height = (typeof item.height == 'string' && item.height.indexOf('%') != -1) ? percentToValue(parseInt(item.height.replace('%', '')), obj.height) : holder.data('naturalHeight');

			var dims = ((typeof item.width == 'string' && item.width.indexOf('%') != -1 || typeof item.height == 'string' && item.height.indexOf('%') != -1) ? {
					width: width,
					height: height
				} : iL.getNewDimenstions(widthAvail, heightAvail, width, height)),
				newDims = $.extend({}, dims, {});

			if (obj.type == 'prev' || obj.type == 'next')
				width = parseInt(dims.width * ((obj.type == 'next') ? opts.styles.nextScale : opts.styles.prevScale)),
				height = parseInt(dims.height * ((obj.type == 'next') ? opts.styles.nextScale : opts.styles.prevScale));
			else
				width = dims.width,
				height = dims.height;

			var widthDiff = parseInt((getPixel(holder, 'padding-left') + getPixel(holder, 'padding-right') + getPixel(holder, 'border-left-width') + getPixel(holder, 'border-right-width')) / 2),
				heightDiff = parseInt((getPixel(holder, 'padding-top') + getPixel(holder, 'padding-bottom') + getPixel(holder, 'border-top-width') + getPixel(holder, 'border-bottom-width') + ($('.ilightbox-inner-toolbar', holder).outerHeight() || 0)) / 2);

			switch (obj.type) {
				case 'current':
					var top = parseInt((obj.height / 2) - (height / 2) - heightDiff - (thumbsOffsetH / 2)),
						left = parseInt((obj.width / 2) - (width / 2) - widthDiff - (thumbsOffsetW / 2));
					break;

				case 'next':
					var top = (path == 'horizontal') ? parseInt((obj.height / 2) - offsetY - (height / 2) - heightDiff - (thumbsOffsetH / 2)) : parseInt(obj.height - offsetX - heightDiff - (thumbsOffsetH / 2)),
						left = (path == 'horizontal') ? parseInt(obj.width - offsetX - widthDiff - (thumbsOffsetW / 2)) : parseInt((obj.width / 2) - (width / 2) - widthDiff - offsetY - (thumbsOffsetW / 2));
					break;

				case 'prev':
					var top = (path == 'horizontal') ? parseInt((obj.height / 2) - offsetY - (height / 2) - heightDiff - (thumbsOffsetH / 2)) : parseInt(offsetX - heightDiff - height - (thumbsOffsetH / 2)),
						left = (path == 'horizontal') ? parseInt(offsetX - widthDiff - width - (thumbsOffsetW / 2)) : parseInt((obj.width / 2) - offsetY - (width / 2) - widthDiff - (thumbsOffsetW / 2));
					break;
			}

			holder.data('offset', {
				top: top,
				left: left,
				newDims: newDims,
				diff: {
					W: widthDiff,
					H: heightDiff
				},
				thumbsOffset: {
					W: thumbsOffsetW,
					H: thumbsOffsetH
				},
				object: obj
			});

			if (obj.animate > 0 && opts.effects.reposition) {
				holder.css(transform, gpuAcceleration).stop().animate({
					top: top,
					left: left
				}, opts.effects.repositionSpeed, 'easeOutCirc', function() {
					holder.css(transform, '');
				});
				$('div.ilightbox-container', holder).stop().animate({
					width: width,
					height: height
				}, opts.effects.repositionSpeed, 'easeOutCirc');
				$('div.ilightbox-inner-toolbar', holder).stop().animate({
					width: width
				}, opts.effects.repositionSpeed, 'easeOutCirc', function() {
					$(this).css('overflow', 'visible');
				});
			} else {
				holder.css({
					top: top,
					left: left
				});
				$('div.ilightbox-container', holder).css({
					width: width,
					height: height
				});
				$('div.ilightbox-inner-toolbar', holder).css({
					width: width
				});
			}
		},

		resume: function(priority) {
			var iL = this,
				vars = iL.vars,
				opts = iL.options;

			if (!opts.slideshow.pauseTime || opts.controls.slideshow && vars.total <= 1 || priority < vars.isPaused) {
				return;
			}

			vars.isPaused = 0;

			if (vars.cycleID) {
				vars.cycleID = clearTimeout(vars.cycleID);
			}

			vars.cycleID = setTimeout(function() {
				if (vars.current == vars.total - 1) iL.goTo(0);
				else iL.moveTo('next');
			}, opts.slideshow.pauseTime);
		},

		pause: function(priority) {
			var iL = this,
				vars = iL.vars,
				opts = iL.options;

			if (priority < vars.isPaused) {
				return;
			}

			vars.isPaused = priority || 100;

			if (vars.cycleID) {
				vars.cycleID = clearTimeout(vars.cycleID);
			}
		},

		resetCycle: function() {
			var iL = this,
				vars = iL.vars,
				opts = iL.options;

			if (opts.controls.slideshow && vars.cycleID && !vars.isPaused) {
				iL.resume();
			}
		},

		getNewDimenstions: function(width, height, width_old, height_old, thumb) {
			var iL = this;

			if (!width) factor = height / height_old;
			else if (!height) factor = width / width_old;
			else factor = min(width / width_old, height / height_old);

			if (!thumb) {
				if (factor > iL.options.maxScale) factor = iL.options.maxScale;
				else if (factor < iL.options.minScale) factor = iL.options.minScale;
			}

			var final_width = (iL.options.keepAspectRatio) ? round(width_old * factor) : width,
				final_height = (iL.options.keepAspectRatio) ? round(height_old * factor) : height;

			return {
				width: final_width,
				height: final_height,
				ratio: factor
			};
		},

		setOption: function(options) {
			var iL = this;

			iL.options = $.extend(true, iL.options, options || {});
			iL.refresh();
		},

		availPlugins: function() {
			var iL = this,
				testEl = document.createElement("video");

			iL.plugins = {
				flash: !isMobile,
				quicktime: (parseInt(PluginDetect.getVersion("QuickTime")) >= 0) ? true : false,
				html5H264: !!(testEl.canPlayType && testEl.canPlayType('video/mp4').replace(/no/, '')),
				html5WebM: !!(testEl.canPlayType && testEl.canPlayType('video/webm').replace(/no/, '')),
				html5Vorbis: !!(testEl.canPlayType && testEl.canPlayType('video/ogg').replace(/no/, '')),
				html5QuickTime: !!(testEl.canPlayType && testEl.canPlayType('video/quicktime').replace(/no/, ''))
			};
		},

		addContent: function(element, obj) {
			var iL = this,
				el;

			switch (obj.type) {
				case 'video':
					var HTML5 = false,
						videoType = obj.videoType,
						html5video = obj.options.html5video;

					if (((videoType == 'video/mp4' || obj.ext == 'mp4' || obj.ext == 'm4v') || html5video.h264) && iL.plugins.html5H264)
						obj.ext = 'mp4',
						obj.URL = html5video.h264 || obj.URL;
					else if (html5video.webm && iL.plugins.html5WebM)
						obj.ext = 'webm',
						obj.URL = html5video.webm || obj.URL;
					else if (html5video.ogg && iL.plugins.html5Vorbis)
						obj.ext = 'ogv',
						obj.URL = html5video.ogg || obj.URL;

					if (iL.plugins.html5H264 && (videoType == 'video/mp4' || obj.ext == 'mp4' || obj.ext == 'm4v')) HTML5 = true, videoType = "video/mp4";
					else if (iL.plugins.html5WebM && (videoType == 'video/webm' || obj.ext == 'webm')) HTML5 = true, videoType = "video/webm";
					else if (iL.plugins.html5Vorbis && (videoType == 'video/ogg' || obj.ext == 'ogv')) HTML5 = true, videoType = "video/ogg";
					else if (iL.plugins.html5QuickTime && (videoType == 'video/quicktime' || obj.ext == 'mov' || obj.ext == 'qt')) HTML5 = true, videoType = "video/quicktime";

					if (HTML5) {
						el = $('<video />', {
							"width": "100%",
							"height": "100%",
							"preload": html5video.preload,
							"autoplay": html5video.autoplay,
							"poster": html5video.poster,
							"controls": html5video.controls
						}).append($('<source />', {
							"src": obj.URL,
							"type": videoType
						}));
					} else {
						if (!iL.plugins.quicktime) el = $('<span />', {
							"class": "ilightbox-alert",
							html: iL.options.errors.missingPlugin.replace('{pluginspage}', pluginspages.quicktime).replace('{type}', 'QuickTime')
						});
						else {

							el = $('<object />', {
								"type": "video/quicktime",
								"pluginspage": pluginspages.quicktime
							}).attr({
								"data": obj.URL,
								"width": "100%",
								"height": "100%"
							}).append($('<param />', {
								"name": "src",
								"value": obj.URL
							})).append($('<param />', {
								"name": "autoplay",
								"value": "false"
							})).append($('<param />', {
								"name": "loop",
								"value": "false"
							})).append($('<param />', {
								"name": "scale",
								"value": "tofit"
							}));

							if (browser.msie) el = QT_GenerateOBJECTText(obj.URL, '100%', '100%', '', 'SCALE', 'tofit', 'AUTOPLAY', 'false', 'LOOP', 'false');
						}
					}

					break;

				case 'flash':
					if (!iL.plugins.flash) el = $('<span />', {
						"class": "ilightbox-alert",
						html: iL.options.errors.missingPlugin.replace('{pluginspage}', pluginspages.flash).replace('{type}', 'Adobe Flash player')
					});
					else {
						var flashvars = "",
							i = 0;

						if (obj.options.flashvars) $.each(obj.options.flashvars, function(k, v) {
							if (i != 0) flashvars += "&";
							flashvars += k + "=" + encodeURIComponent(v);
							i++;
						});
						else flashvars = null;

						el = $('<embed />').attr({
							"type": "application/x-shockwave-flash",
							"src": obj.URL,
							"width": (typeof obj.options.width == 'number' && obj.options.width && iL.options.minScale == '1' && iL.options.maxScale == '1') ? obj.options.width : "100%",
							"height": (typeof obj.options.height == 'number' && obj.options.height && iL.options.minScale == '1' && iL.options.maxScale == '1') ? obj.options.height : "100%",
							"quality": "high",
							"bgcolor": "#000000",
							"play": "true",
							"loop": "true",
							"menu": "true",
							"wmode": "transparent",
							"scale": "showall",
							"allowScriptAccess": "always",
							"allowFullScreen": "true",
							"flashvars": flashvars,
							"fullscreen": "yes"
						});
					}

					break;

				case 'iframe':
					el = $('<iframe />').attr({
						"width": (typeof obj.options.width == 'number' && obj.options.width && iL.options.minScale == '1' && iL.options.maxScale == '1') ? obj.options.width : "100%",
						"height": (typeof obj.options.height == 'number' && obj.options.height && iL.options.minScale == '1' && iL.options.maxScale == '1') ? obj.options.height : "100%",
						src: obj.URL,
						frameborder: 0,
						'hspace': 0,
						'vspace': 0,
						'scrolling': supportTouch ? 'auto' : 'scroll',
						'webkitAllowFullScreen': '',
						'mozallowfullscreen': '',
						'allowFullScreen': ''
					});

					break;

				case 'inline':
					el = $('<div class="ilightbox-wrapper"></div>').html($(obj.URL).clone(true));

					break;

				case 'html':
					var object = obj.URL,
						el;

					if (object[0].nodeName) {
						el = $('<div class="ilightbox-wrapper"></div>').html(object);
					} else {
						var dom = $(obj.URL),
							html = (dom.selector) ? $('<div>' + dom + '</div>') : dom;
						el = $('<div class="ilightbox-wrapper"></div>').html(html);
					}

					break;
			}

			$('div.ilightbox-container', element).empty().html(el);

			// For fixing Chrome about just playing the video for first time
			if (el[0].tagName.toLowerCase() === 'video' && browser.webkit) setTimeout(function() {
				var src = el[0].currentSrc + '?' + floor(random() * 30000);
				el[0].currentSrc = src;
				el[0].src = src;
			});

			return el;
		},

		ogpRecognition: function(obj, callback) {
			var iL = this,
				url = obj.URL;

			iL.showLoader();
			doAjax(url, function(data) {
				iL.hideLoader();
				if (data) {
					var object = new Object();

					object.length = false,
					object.url = data.url;

					if (data.status == 200) {
						var result = data.results,
							type = result.type,
							source = result.source;

						object.source = source.src,
						object.width = source.width && parseInt(source.width) || 0,
						object.height = source.height && parseInt(source.height) || 0,
						object.type = type,
						object.thumbnail = source.thumbnail || result.images && result.images[0],
						object.html5video = result.html5video || {},
						object.length = true;

						if (source.type == 'application/x-shockwave-flash') object.type = "flash";
						else if (source.type.indexOf("video/") != -1) object.type = "video";
						else if (source.type.indexOf("/html") != -1) object.type = "iframe";
						else if (source.type.indexOf("image/") != -1) object.type = "image";

					} else if (typeof data.response != 'undefined')
						throw data.response;

					callback.call(this, object.length ? object : false);
				}
			});
		},

		hashChangeHandler: function(url) {
			var iL = this,
				vars = iL.vars,
				opts = iL.options,
				URL = url || window.location.href,
				hash = parseURI(URL).hash,
				split = hash.split('/'),
				index = split[1];

			if (vars.hashLock || ('#' + opts.linkId != split[0] && hash.length > 1)) return;

			if (index) {
				var target = split[1] || 0;
				if (iL.items[target]) {
					var overlay = $('.ilightbox-overlay');
					if (overlay.length && overlay.attr('linkid') == opts.linkId) {
						iL.goTo(target);
					} else {
						iL.itemsObject[target].trigger(supportTouch ? 'itap' : 'click');
					}
				} else {
					var overlay = $('.ilightbox-overlay');
					if (overlay.length) iL.closeAction();
				}
			} else {
				var overlay = $('.ilightbox-overlay');
				if (overlay.length) iL.closeAction();
			}
		}
	};

	/**
	 * Parse style to pixels.
	 *
	 * @param {Object}   $element   jQuery object with element.
	 * @param {Property} property   CSS property to get the pixels from.
	 *
	 * @return {Int}
	 */
	function getPixel($element, property) {
		return parseInt($element.css(property), 10) || 0;
	}

	/**
	 * Make sure that number is within the limits.
	 *
	 * @param {Number} number
	 * @param {Number} min
	 * @param {Number} max
	 *
	 * @return {Number}
	 */
	function within(number, min, max) {
		return number < min ? min : number > max ? max : number;
	}

	/**
	 * Get viewport/window size (width and height).
	 *
	 * @return {Object}
	 */
	function getViewport() {
		var e = window,
			a = 'inner';
		if (!('innerWidth' in window)) {
			a = 'client';
			e = document.documentElement || document.body;
		}
		return {
			width: e[a + 'Width'],
			height: e[a + 'Height']
		}
	}

	/**
	 * Remove hash tag from the URL
	 *
	 * @return {Void}
	 */
	function removeHash() {
		var scroll = getScrollXY();

		window.location.hash = "";

		// Restore the scroll offset, should be flicker free
		window.scrollTo(scroll.x, scroll.y);
	}

	/**
	 * Do the ajax requests with callback.
	 *
	 * @param {String}   url
	 * @param {Function} callback
	 *
	 * @return {Void}
	 */
	function doAjax(url, callback) {
		var url = "//ilightbox.net/getSource/jsonp.php?url=" + encodeURIComponent(url).replace(/!/g, '%21').replace(/'/g, '%27').replace(/\(/g, '%28').replace(/\)/g, '%29').replace(/\*/g, '%2A');
		$.ajax({
			url: url,
			dataType: 'jsonp'
		});

		iLCallback = function(data) {
			callback.call(this, data);
		};
	}

	/**
	 * Find image from DOM elements
	 *
	 * @param {Element} element
	 *
	 * @return {Void}
	 */
	function findImageInElement(element) {
		var elements = $('*', element),
			imagesArr = new Array();

		elements.each(function() {
			var url = "",
				element = this;

			if ($(element).css("background-image") != "none") {
				url = $(element).css("background-image");
			} else if (typeof($(element).attr("src")) != "undefined" && element.nodeName.toLowerCase() == "img") {
				url = $(element).attr("src");
			}

			if (url.indexOf("gradient") == -1) {
				url = url.replace(/url\(\"/g, "");
				url = url.replace(/url\(/g, "");
				url = url.replace(/\"\)/g, "");
				url = url.replace(/\)/g, "");

				var urls = url.split(",");

				for (var i = 0; i < urls.length; i++) {
					if (urls[i].length > 0 && $.inArray(urls[i], imagesArr) == -1) {
						var extra = "";
						if (browser.msie && browser.version < 9) {
							extra = "?" + floor(random() * 3000);
						}
						imagesArr.push(urls[i] + extra);
					}
				}
			}
		});

		return imagesArr;
	}

	/**
	 * Get file extension.
	 *
	 * @param {String} URL
	 *
	 * @return {String}
	 */
	function getExtension(URL) {
		var ext = URL.split('.').pop().toLowerCase(),
			extra = ext.indexOf('?') !== -1 ? ext.split('?').pop() : '';

		return ext.replace(extra, '');
	}

	/**
	 * Get type via extension.
	 *
	 * @param {String} URL
	 *
	 * @return {String}
	 */
	function getTypeByExtension(URL) {
		var type,
			ext = getExtension(URL);

		if (extensions.image.indexOf(ext) !== -1) type = 'image';
		else if (extensions.flash.indexOf(ext) !== -1) type = 'flash';
		else if (extensions.video.indexOf(ext) !== -1) type = 'video';
		else type = 'iframe';

		return type;
	}

	/**
	 * Return value from percent of a number.
	 *
	 * @param {Number} percent
	 * @param {Number} total
	 *
	 * @return {Number}
	 */
	function percentToValue(percent, total) {
		return parseInt((total / 100) * percent);
	}

	/**
	 * A JavaScript equivalent of PHPâ€™s parse_url.
	 *
	 * @param {String} url           The URL to parse.
	 *
	 * @return {Mixed}
	 */
	function parseURI(url) {
		var m = String(url).replace(/^\s+|\s+$/g, '').match(/^([^:\/?#]+:)?(\/\/(?:[^:@]*(?::[^:@]*)?@)?(([^:\/?#]*)(?::(\d*))?))?([^?#]*)(\?[^#]*)?(#[\s\S]*)?/);
		// authority = '//' + user + ':' + pass '@' + hostname + ':' port
		return (m ? {
			href: m[0] || '',
			protocol: m[1] || '',
			authority: m[2] || '',
			host: m[3] || '',
			hostname: m[4] || '',
			port: m[5] || '',
			pathname: m[6] || '',
			search: m[7] || '',
			hash: m[8] || ''
		} : null);
	}

	/**
	 * Gets the absolute URI.
	 *
	 * @param {String} href     The relative URL.
	 * @param {String} base     The base URL.
	 *
	 * @return {String}         The absolute URL.
	 */
	function absolutizeURI(base, href) { // RFC 3986
		var iL = this;

		function removeDotSegments(input) {
			var output = [];
			input.replace(/^(\.\.?(\/|$))+/, '')
				.replace(/\/(\.(\/|$))+/g, '/')
				.replace(/\/\.\.$/, '/../')
				.replace(/\/?[^\/]*/g, function(p) {
					if (p === '/..') {
						output.pop();
					} else {
						output.push(p);
					}
				});
			return output.join('').replace(/^\//, input.charAt(0) === '/' ? '/' : '');
		}

		href = parseURI(href || '');
		base = parseURI(base || '');

		return !href || !base ? null : (href.protocol || base.protocol) +
			(href.protocol || href.authority ? href.authority : base.authority) +
			removeDotSegments(href.protocol || href.authority || href.pathname.charAt(0) === '/' ? href.pathname : (href.pathname ? ((base.authority && !base.pathname ? '/' : '') + base.pathname.slice(0, base.pathname.lastIndexOf('/') + 1) + href.pathname) : base.pathname)) +
			(href.protocol || href.authority || href.pathname ? href.search : (href.search || base.search)) +
			href.hash;
	}

	/**
	 * A JavaScript equivalent of PHPâ€™s version_compare.
	 *
	 * @param {String} v1
	 * @param {String} v2
	 * @param {String} operator
	 *
	 * @return {Boolean}
	 */
	function version_compare(v1, v2, operator) {
		this.php_js = this.php_js || {};
		this.php_js.ENV = this.php_js.ENV || {};
		var i = 0,
			x = 0,
			compare = 0,
			vm = {
				'dev': -6,
				'alpha': -5,
				'a': -5,
				'beta': -4,
				'b': -4,
				'RC': -3,
				'rc': -3,
				'#': -2,
				'p': 1,
				'pl': 1
			},
			prepVersion = function(v) {
				v = ('' + v).replace(/[_\-+]/g, '.');
				v = v.replace(/([^.\d]+)/g, '.$1.').replace(/\.{2,}/g, '.');
				return (!v.length ? [-8] : v.split('.'));
			},
			numVersion = function(v) {
				return !v ? 0 : (isNaN(v) ? vm[v] || -7 : parseInt(v, 10));
			};
		v1 = prepVersion(v1);
		v2 = prepVersion(v2);
		x = max(v1.length, v2.length);
		for (i = 0; i < x; i++) {
			if (v1[i] == v2[i]) {
				continue;
			}
			v1[i] = numVersion(v1[i]);
			v2[i] = numVersion(v2[i]);
			if (v1[i] < v2[i]) {
				compare = -1;
				break;
			} else if (v1[i] > v2[i]) {
				compare = 1;
				break;
			}
		}
		if (!operator) {
			return compare;
		}

		switch (operator) {
			case '>':
			case 'gt':
				return (compare > 0);
			case '>=':
			case 'ge':
				return (compare >= 0);
			case '<=':
			case 'le':
				return (compare <= 0);
			case '==':
			case '=':
			case 'eq':
				return (compare === 0);
			case '<>':
			case '!=':
			case 'ne':
				return (compare !== 0);
			case '':
			case '<':
			case 'lt':
				return (compare < 0);
			default:
				return null;
		}
	}


	// Begin the iLightBox plugin
	$.fn.iLightBox = function() {

		var args = arguments,
			opt = ($.isPlainObject(args[0])) ? args[0] : args[1],
			items = ($.isArray(args[0]) || typeof args[0] == 'string') ? args[0] : args[1];

		if (!opt) opt = {};

		// Default options. Play carefully.
		var options = $.extend(true, {
			attr: 'href',
			path: 'vertical',
			skin: 'dark',
			linkId: false,
			infinite: false,
			startFrom: 0,
			randomStart: false,
			keepAspectRatio: true,
			maxScale: 1,
			minScale: .2,
			innerToolbar: false,
			smartRecognition: false,
			mobileOptimizer: true,
			fullAlone: true,
			fullViewPort: null,
			fullStretchTypes: 'flash, video',
			overlay: {
				blur: true,
				opacity: .85
			},
			controls: {
				arrows: false,
				slideshow: false,
				toolbar: true,
				fullscreen: true,
				thumbnail: true,
				keyboard: true,
				mousewheel: true,
				swipe: true
			},
			keyboard: {
				left: true, // previous
				right: true, // next
				up: true, // previous
				down: true, // next
				esc: true, // close
				shift_enter: true // fullscreen
			},
			show: {
				effect: true,
				speed: 300,
				title: true
			},
			hide: {
				effect: true,
				speed: 300
			},
			caption: {
				start: true,
				show: 'mouseenter',
				hide: 'mouseleave'
			},
			social: {
				start: true,
				show: 'mouseenter',
				hide: 'mouseleave',
				buttons: false
			},
			styles: {
				pageOffsetX: 0,
				pageOffsetY: 0,
				nextOffsetX: 45,
				nextOffsetY: 0,
				nextOpacity: 1,
				nextScale: 1,
				prevOffsetX: 45,
				prevOffsetY: 0,
				prevOpacity: 1,
				prevScale: 1
			},
			thumbnails: {
				maxWidth: 120,
				maxHeight: 80,
				normalOpacity: 1,
				activeOpacity: .6
			},
			effects: {
				reposition: true,
				repositionSpeed: 200,
				switchSpeed: 500,
				loadedFadeSpeed: 180,
				fadeSpeed: 200
			},
			slideshow: {
				pauseTime: 5000,
				pauseOnHover: false,
				startPaused: true
			},
			text: {
				close: "Press Esc to close",
				enterFullscreen: "Enter Fullscreen (Shift+Enter)",
				exitFullscreen: "Exit Fullscreen (Shift+Enter)",
				slideShow: "Slideshow",
				next: "Next",
				previous: "Previous"
			},
			errors: {
				loadImage: "An error occurred when trying to load photo.",
				loadContents: "An error occurred when trying to load contents.",
				missingPlugin: "The content your are attempting to view requires the <a href='{pluginspage}' target='_blank'>{type} plugin<\/a>."
			},
			ajaxSetup: {
				url: '',
				beforeSend: function(jqXHR, settings) {},
				cache: false,
				complete: function(jqXHR, textStatus) {},
				crossDomain: false,
				error: function(jqXHR, textStatus, errorThrown) {},
				success: function(data, textStatus, jqXHR) {},
				global: true,
				ifModified: false,
				username: null,
				password: null,
				type: 'GET'
			},
			callback: {}
		}, opt);

		var instant = ($.isArray(items) || typeof items == 'string') ? true : false;

		items = $.isArray(items) ? items : new Array();

		if (typeof args[0] == 'string') items[0] = args[0];

		if (version_compare($.fn.jquery, '1.8', '>=')) {
			var iLB = new iLightBox($(this), options, items, instant);
			return {
				close: function() {
					iLB.closeAction();
				},
				fullscreen: function() {
					iLB.fullScreenAction();
				},
				moveNext: function() {
					iLB.moveTo('next');
				},
				movePrev: function() {
					iLB.moveTo('prev');
				},
				goTo: function(index) {
					iLB.goTo(index);
				},
				refresh: function() {
					iLB.refresh();
				},
				reposition: function() {
					(arguments.length > 0) ? iLB.repositionPhoto(true): iLB.repositionPhoto();
				},
				setOption: function(options) {
					iLB.setOption(options);
				},
				destroy: function() {
					iLB.closeAction();
					iLB.dispatchItemsEvents();
				}
			};
		} else {
			throw "The jQuery version that was loaded is too old. iLightBox requires jQuery 1.8+";
		}

	};


	$.iLightBox = function() {
		return $.fn.iLightBox(arguments[0], arguments[1]);
	};


	$.extend($.easing, {
		easeInCirc: function(x, t, b, c, d) {
			return -c * (sqrt(1 - (t /= d) * t) - 1) + b;
		},
		easeOutCirc: function(x, t, b, c, d) {
			return c * sqrt(1 - (t = t / d - 1) * t) + b;
		},
		easeInOutCirc: function(x, t, b, c, d) {
			if ((t /= d / 2) < 1) return -c / 2 * (sqrt(1 - t * t) - 1) + b;
			return c / 2 * (sqrt(1 - (t -= 2) * t) + 1) + b;
		}
	});

	function getScrollXY() {
		var scrOfX = 0,
			scrOfY = 0;
		if (typeof(window.pageYOffset) == 'number') {
			//Netscape compliant
			scrOfY = window.pageYOffset;
			scrOfX = window.pageXOffset;
		} else if (document.body && (document.body.scrollLeft || document.body.scrollTop)) {
			//DOM compliant
			scrOfY = document.body.scrollTop;
			scrOfX = document.body.scrollLeft;
		} else if (document.documentElement && (document.documentElement.scrollLeft || document.documentElement.scrollTop)) {
			//IE6 standards compliant mode
			scrOfY = document.documentElement.scrollTop;
			scrOfX = document.documentElement.scrollLeft;
		}
		return {
			x: scrOfX,
			y: scrOfY
		};
	}

	(function() {
		// add new event shortcuts
		$.each(("touchstart touchmove touchend " +
			"tap taphold " +
			"swipe swipeleft swiperight " +
			"scrollstart scrollstop").split(" "), function(i, name) {

			$.fn[name] = function(fn) {
				return fn ? this.bind(name, fn) : this.trigger(name);
			};

			// jQuery < 1.8
			if ($.attrFn) {
				$.attrFn[name] = true;
			}
		});

		var tapSettings = {
			startEvent: 'touchstart.iTap',
			endEvent: 'touchend.iTap'
		};

		// tap Event:
		$.event.special.itap = {
			setup: function() {

				var self = this,
					$self = $(this),
					start, stop;

				$self.bind(tapSettings.startEvent, function(event) {
					start = getScrollXY();

					$self.one(tapSettings.endEvent, function(event) {
						stop = getScrollXY();

						var orgEvent = event || window.event;
						event = $.event.fix(orgEvent);
						event.type = "itap";

						if ((start && stop) && (start.x == stop.x && start.y == stop.y))($.event.dispatch || $.event.handle).call(self, event);

						start = stop = undefined;
					});
				});
			},

			teardown: function() {
				$(this).unbind(tapSettings.startEvent);
			}
		};
	}());


	//Fullscreen API
	(function() {
		fullScreenApi = {
				supportsFullScreen: false,
				isFullScreen: function() {
					return false;
				},
				requestFullScreen: function() {},
				cancelFullScreen: function() {},
				fullScreenEventName: '',
				prefix: ''
			},
			browserPrefixes = 'webkit moz o ms khtml'.split(' ');

		// check for native support
		if (typeof document.cancelFullScreen != 'undefined') {
			fullScreenApi.supportsFullScreen = true;
		} else {
			// check for fullscreen support by vendor prefix
			for (var i = 0, il = browserPrefixes.length; i < il; i++) {
				fullScreenApi.prefix = browserPrefixes[i];

				if (typeof document[fullScreenApi.prefix + 'CancelFullScreen'] != 'undefined') {
					fullScreenApi.supportsFullScreen = true;

					break;
				}
			}
		}

		// update methods to do something useful
		if (fullScreenApi.supportsFullScreen) {
			fullScreenApi.fullScreenEventName = fullScreenApi.prefix + 'fullscreenchange';

			fullScreenApi.isFullScreen = function() {
				switch (this.prefix) {
					case '':
						return document.fullScreen;
					case 'webkit':
						return document.webkitIsFullScreen;
					default:
						return document[this.prefix + 'FullScreen'];
				}
			}
			fullScreenApi.requestFullScreen = function(el) {
				return (this.prefix === '') ? el.requestFullScreen() : el[this.prefix + 'RequestFullScreen']();
			}
			fullScreenApi.cancelFullScreen = function(el) {
				return (this.prefix === '') ? document.cancelFullScreen() : document[this.prefix + 'CancelFullScreen']();
			}
		}
	}());

	// Browser detect
	(function() {
		function uaMatch(ua) {
			ua = ua.toLowerCase();

			var match = /(chrome)[ \/]([\w.]+)/.exec(ua) ||
				/(webkit)[ \/]([\w.]+)/.exec(ua) ||
				/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) ||
				/(msie) ([\w.]+)/.exec(ua) ||
				ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) || [];

			return {
				browser: match[1] || "",
				version: match[2] || "0"
			};
		}

		var matched = uaMatch(navigator.userAgent);
		browser = {};

		if (matched.browser) {
			browser[matched.browser] = true;
			browser.version = matched.version;
		}

		// Chrome is Webkit, but Webkit is also Safari.
		if (browser.chrome) {
			browser.webkit = true;
		} else if (browser.webkit) {
			browser.safari = true;
		}
	}());

	// Feature detects
	(function() {
		var prefixes = ['', 'webkit', 'moz', 'ms', 'o'];
		var el = document.createElement('div');

		function testProp(prop) {
			for (var p = 0, pl = prefixes.length; p < pl; p++) {
				var prefixedProp = prefixes[p] ? prefixes[p] + prop.charAt(0).toUpperCase() + prop.slice(1) : prop;
				if (el.style[prefixedProp] !== undefined) {
					return prefixedProp;
				}
			}
		}

		// Global support indicators
		transform = testProp('transform') || '';
		gpuAcceleration = testProp('perspective') ? 'translateZ(0) ' : '';
	}());


	/*
		PluginDetect v0.7.9
		www.pinlady.net/PluginDetect/license/
		[ getVersion onWindowLoaded BetterIE ]
		[ Flash QuickTime Shockwave ]
	*/
	var PluginDetect={version:"0.7.9",name:"PluginDetect",handler:function(c,b,a){return function(){c(b,a)}},openTag:"<",isDefined:function(b){return typeof b!="undefined"},isArray:function(b){return(/array/i).test(Object.prototype.toString.call(b))},isFunc:function(b){return typeof b=="function"},isString:function(b){return typeof b=="string"},isNum:function(b){return typeof b=="number"},isStrNum:function(b){return(typeof b=="string"&&(/\d/).test(b))},getNumRegx:/[\d][\d\.\_,-]*/,splitNumRegx:/[\.\_,-]/g,getNum:function(b,c){var d=this,a=d.isStrNum(b)?(d.isDefined(c)?new RegExp(c):d.getNumRegx).exec(b):null;return a?a[0]:null},compareNums:function(h,f,d){var e=this,c,b,a,g=parseInt;if(e.isStrNum(h)&&e.isStrNum(f)){if(e.isDefined(d)&&d.compareNums){return d.compareNums(h,f)}c=h.split(e.splitNumRegx);b=f.split(e.splitNumRegx);for(a=0;a<min(c.length,b.length);a++){if(g(c[a],10)>g(b[a],10)){return 1}if(g(c[a],10)<g(b[a],10)){return -1}}}return 0},formatNum:function(b,c){var d=this,a,e;if(!d.isStrNum(b)){return null}if(!d.isNum(c)){c=4}c--;e=b.replace(/\s/g,"").split(d.splitNumRegx).concat(["0","0","0","0"]);for(a=0;a<4;a++){if(/^(0+)(.+)$/.test(e[a])){e[a]=RegExp.$2}if(a>c||!(/\d/).test(e[a])){e[a]="0"}}return e.slice(0,4).join(",")},$$hasMimeType:function(a){return function(c){if(!a.isIE&&c){var f,e,b,d=a.isArray(c)?c:(a.isString(c)?[c]:[]);for(b=0;b<d.length;b++){if(a.isString(d[b])&&/[^\s]/.test(d[b])){f=navigator.mimeTypes[d[b]];e=f?f.enabledPlugin:0;if(e&&(e.name||e.description)){return f}}}}return null}},findNavPlugin:function(l,e,c){var j=this,h=new RegExp(l,"i"),d=(!j.isDefined(e)||e)?/\d/:0,k=c?new RegExp(c,"i"):0,a=navigator.plugins,g="",f,b,m;for(f=0;f<a.length;f++){m=a[f].description||g;b=a[f].name||g;if((h.test(m)&&(!d||d.test(RegExp.leftContext+RegExp.rightContext)))||(h.test(b)&&(!d||d.test(RegExp.leftContext+RegExp.rightContext)))){if(!k||!(k.test(m)||k.test(b))){return a[f]}}}return null},getMimeEnabledPlugin:function(k,m,c){var e=this,f,b=new RegExp(m,"i"),h="",g=c?new RegExp(c,"i"):0,a,l,d,j=e.isString(k)?[k]:k;for(d=0;d<j.length;d++){if((f=e.hasMimeType(j[d]))&&(f=f.enabledPlugin)){l=f.description||h;a=f.name||h;if(b.test(l)||b.test(a)){if(!g||!(g.test(l)||g.test(a))){return f}}}}return 0},getPluginFileVersion:function(f,b){var h=this,e,d,g,a,c=-1;if(h.OS>2||!f||!f.version||!(e=h.getNum(f.version))){return b}if(!b){return e}e=h.formatNum(e);b=h.formatNum(b);d=b.split(h.splitNumRegx);g=e.split(h.splitNumRegx);for(a=0;a<d.length;a++){if(c>-1&&a>c&&d[a]!="0"){return b}if(g[a]!=d[a]){if(c==-1){c=a}if(d[a]!="0"){return b}}}return e},AXO:window.ActiveXObject,getAXO:function(a){var f=null,d,b=this,c={};try{f=new b.AXO(a)}catch(d){}return f},convertFuncs:function(f){var a,g,d,b=/^[\$][\$]/,c=this;for(a in f){if(b.test(a)){try{g=a.slice(2);if(g.length>0&&!f[g]){f[g]=f[a](f);delete f[a]}}catch(d){}}}},initObj:function(e,b,d){var a,c;if(e){if(e[b[0]]==1||d){for(a=0;a<b.length;a=a+2){e[b[a]]=b[a+1]}}for(a in e){c=e[a];if(c&&c[b[0]]==1){this.initObj(c,b)}}}},initScript:function(){var d=this,a=navigator,h,i=document,l=a.userAgent||"",j=a.vendor||"",b=a.platform||"",k=a.product||"";d.initObj(d,["$",d]);for(h in d.Plugins){if(d.Plugins[h]){d.initObj(d.Plugins[h],["$",d,"$$",d.Plugins[h]],1)}}d.convertFuncs(d);d.OS=100;if(b){var g=["Win",1,"Mac",2,"Linux",3,"FreeBSD",4,"iPhone",21.1,"iPod",21.2,"iPad",21.3,"Win.*CE",22.1,"Win.*Mobile",22.2,"Pocket\\s*PC",22.3,"",100];for(h=g.length-2;h>=0;h=h-2){if(g[h]&&new RegExp(g[h],"i").test(b)){d.OS=g[h+1];break}}};d.head=i.getElementsByTagName("head")[0]||i.getElementsByTagName("body")[0]||i.body||null;d.isIE=new Function("return/*@cc_on!@*/!1")();d.verIE=d.isIE&&(/MSIE\s*(\d+\.?\d*)/i).test(l)?parseFloat(RegExp.$1,10):null;d.verIEfull=null;d.docModeIE=null;if(d.isIE){var f,n,c=document.createElement("div");try{c.style.behavior="url(#default#clientcaps)";d.verIEfull=(c.getComponentVersion("{89820200-ECBD-11CF-8B85-00AA005B4383}","componentid")).replace(/,/g,".")}catch(f){}n=parseFloat(d.verIEfull||"0",10);d.docModeIE=i.documentMode||((/back/i).test(i.compatMode||"")?5:n)||d.verIE;d.verIE=n||d.docModeIE};d.ActiveXEnabled=false;if(d.isIE){var h,m=["Msxml2.XMLHTTP","Msxml2.DOMDocument","Microsoft.XMLDOM","ShockwaveFlash.ShockwaveFlash","TDCCtl.TDCCtl","Shell.UIHelper","Scripting.Dictionary","wmplayer.ocx"];for(h=0;h<m.length;h++){if(d.getAXO(m[h])){d.ActiveXEnabled=true;break}}};d.isGecko=(/Gecko/i).test(k)&&(/Gecko\s*\/\s*\d/i).test(l);d.verGecko=d.isGecko?d.formatNum((/rv\s*\:\s*([\.\,\d]+)/i).test(l)?RegExp.$1:"0.9"):null;d.isChrome=(/Chrome\s*\/\s*(\d[\d\.]*)/i).test(l);d.verChrome=d.isChrome?d.formatNum(RegExp.$1):null;d.isSafari=((/Apple/i).test(j)||(!j&&!d.isChrome))&&(/Safari\s*\/\s*(\d[\d\.]*)/i).test(l);d.verSafari=d.isSafari&&(/Version\s*\/\s*(\d[\d\.]*)/i).test(l)?d.formatNum(RegExp.$1):null;d.isOpera=(/Opera\s*[\/]?\s*(\d+\.?\d*)/i).test(l);d.verOpera=d.isOpera&&((/Version\s*\/\s*(\d+\.?\d*)/i).test(l)||1)?parseFloat(RegExp.$1,10):null;d.addWinEvent("load",d.handler(d.runWLfuncs,d))},init:function(d){var c=this,b,d,a={status:-3,plugin:0};if(!c.isString(d)){return a}if(d.length==1){c.getVersionDelimiter=d;return a}d=d.toLowerCase().replace(/\s/g,"");b=c.Plugins[d];if(!b||!b.getVersion){return a}a.plugin=b;if(!c.isDefined(b.installed)){b.installed=null;b.version=null;b.version0=null;b.getVersionDone=null;b.pluginName=d}c.garbage=false;if(c.isIE&&!c.ActiveXEnabled&&d!=="java"){a.status=-2;return a}a.status=1;return a},fPush:function(b,a){var c=this;if(c.isArray(a)&&(c.isFunc(b)||(c.isArray(b)&&b.length>0&&c.isFunc(b[0])))){a.push(b)}},callArray:function(b){var c=this,a;if(c.isArray(b)){for(a=0;a<b.length;a++){if(b[a]===null){return}c.call(b[a]);b[a]=null}}},call:function(c){var b=this,a=b.isArray(c)?c.length:-1;if(a>0&&b.isFunc(c[0])){c[0](b,a>1?c[1]:0,a>2?c[2]:0,a>3?c[3]:0)}else{if(b.isFunc(c)){c(b)}}},getVersionDelimiter:",",$$getVersion:function(a){return function(g,d,c){var e=a.init(g),f,b,h={};if(e.status<0){return null};f=e.plugin;if(f.getVersionDone!=1){f.getVersion(null,d,c);if(f.getVersionDone===null){f.getVersionDone=1}}a.cleanup();b=(f.version||f.version0);b=b?b.replace(a.splitNumRegx,a.getVersionDelimiter):b;return b}},cleanup:function(){var a=this;if(a.garbage&&a.isDefined(window.CollectGarbage)){window.CollectGarbage()}},isActiveXObject:function(d,b){var f=this,a=false,g,c='<object width="1" height="1" style="display:none" '+d.getCodeBaseVersion(b)+">"+d.HTML+f.openTag+"/object>";if(!f.head){return a}f.head.insertBefore(document.createElement("object"),f.head.firstChild);f.head.firstChild.outerHTML=c;try{f.head.firstChild.classid=d.classID}catch(g){}try{if(f.head.firstChild.object){a=true}}catch(g){}try{if(a&&f.head.firstChild.readyState<4){f.garbage=true}}catch(g){}f.head.removeChild(f.head.firstChild);return a},codebaseSearch:function(f,b){var c=this;if(!c.ActiveXEnabled||!f){return null}if(f.BIfuncs&&f.BIfuncs.length&&f.BIfuncs[f.BIfuncs.length-1]!==null){c.callArray(f.BIfuncs)}var d,o=f.SEARCH,k={};if(c.isStrNum(b)){if(o.match&&o.min&&c.compareNums(b,o.min)<=0){return true}if(o.match&&o.max&&c.compareNums(b,o.max)>=0){return false}d=c.isActiveXObject(f,b);if(d&&(!o.min||c.compareNums(b,o.min)>0)){o.min=b}if(!d&&(!o.max||c.compareNums(b,o.max)<0)){o.max=b}return d};var e=[0,0,0,0],l=[].concat(o.digits),a=o.min?1:0,j,i,h,g,m,n=function(p,r){var q=[].concat(e);q[p]=r;return c.isActiveXObject(f,q.join(","))};if(o.max){g=o.max.split(c.splitNumRegx);for(j=0;j<g.length;j++){g[j]=parseInt(g[j],10)}if(g[0]<l[0]){l[0]=g[0]}}if(o.min){m=o.min.split(c.splitNumRegx);for(j=0;j<m.length;j++){m[j]=parseInt(m[j],10)}if(m[0]>e[0]){e[0]=m[0]}}if(m&&g){for(j=1;j<m.length;j++){if(m[j-1]!=g[j-1]){break}if(g[j]<l[j]){l[j]=g[j]}if(m[j]>e[j]){e[j]=m[j]}}}if(o.max){for(j=1;j<l.length;j++){if(g[j]>0&&l[j]==0&&l[j-1]<o.digits[j-1]){l[j-1]+=1;break}}};for(j=0;j<l.length;j++){h={};for(i=0;i<20;i++){if(l[j]-e[j]<1){break}d=round((l[j]+e[j])/2);if(h["a"+d]){break}h["a"+d]=1;if(n(j,d)){e[j]=d;a=1}else{l[j]=d}}l[j]=e[j];if(!a&&n(j,e[j])){a=1};if(!a){break}};return a?e.join(","):null},addWinEvent:function(d,c){var e=this,a=window,b;if(e.isFunc(c)){if(a.addEventListener){a.addEventListener(d,c,false)}else{if(a.attachEvent){a.attachEvent("on"+d,c)}else{b=a["on"+d];a["on"+d]=e.winHandler(c,b)}}}},winHandler:function(d,c){return function(){d();if(typeof c=="function"){c()}}},WLfuncs0:[],WLfuncs:[],runWLfuncs:function(a){var b={};a.winLoaded=true;a.callArray(a.WLfuncs0);a.callArray(a.WLfuncs);if(a.onDoneEmptyDiv){a.onDoneEmptyDiv()}},winLoaded:false,$$onWindowLoaded:function(a){return function(b){if(a.winLoaded){a.call(b)}else{a.fPush(b,a.WLfuncs)}}},div:null,divID:"plugindetect",divWidth:50,pluginSize:1,emptyDiv:function(){var d=this,b,h,c,a,f,g;if(d.div&&d.div.childNodes){for(b=d.div.childNodes.length-1;b>=0;b--){c=d.div.childNodes[b];if(c&&c.childNodes){for(h=c.childNodes.length-1;h>=0;h--){g=c.childNodes[h];try{c.removeChild(g)}catch(f){}}}if(c){try{d.div.removeChild(c)}catch(f){}}}}if(!d.div){a=document.getElementById(d.divID);if(a){d.div=a}}if(d.div&&d.div.parentNode){try{d.div.parentNode.removeChild(d.div)}catch(f){}d.div=null}},DONEfuncs:[],onDoneEmptyDiv:function(){var c=this,a,b;if(!c.winLoaded){return}if(c.WLfuncs&&c.WLfuncs.length&&c.WLfuncs[c.WLfuncs.length-1]!==null){return}for(a in c){b=c[a];if(b&&b.funcs){if(b.OTF==3){return}if(b.funcs.length&&b.funcs[b.funcs.length-1]!==null){return}}}for(a=0;a<c.DONEfuncs.length;a++){c.callArray(c.DONEfuncs)}c.emptyDiv()},getWidth:function(c){if(c){var a=c.scrollWidth||c.offsetWidth,b=this;if(b.isNum(a)){return a}}return -1},getTagStatus:function(m,g,a,b){var c=this,f,k=m.span,l=c.getWidth(k),h=a.span,j=c.getWidth(h),d=g.span,i=c.getWidth(d);if(!k||!h||!d||!c.getDOMobj(m)){return -2}if(j<i||l<0||j<0||i<0||i<=c.pluginSize||c.pluginSize<1){return 0}if(l>=i){return -1}try{if(l==c.pluginSize&&(!c.isIE||c.getDOMobj(m).readyState==4)){if(!m.winLoaded&&c.winLoaded){return 1}if(m.winLoaded&&c.isNum(b)){if(!c.isNum(m.count)){m.count=b}if(b-m.count>=10){return 1}}}}catch(f){}return 0},getDOMobj:function(g,a){var f,d=this,c=g?g.span:0,b=c&&c.firstChild?1:0;try{if(b&&a){d.div.focus()}}catch(f){}return b?c.firstChild:null},setStyle:function(b,g){var f=b.style,a,d,c=this;if(f&&g){for(a=0;a<g.length;a=a+2){try{f[g[a]]=g[a+1]}catch(d){}}}},insertDivInBody:function(i,g){var f,c=this,h="pd33993399",b=null,d=g?window.top.document:window.document,a=d.getElementsByTagName("body")[0]||d.body;if(!a){try{d.write('<div id="'+h+'">.'+c.openTag+"/div>");b=d.getElementById(h)}catch(f){}}a=d.getElementsByTagName("body")[0]||d.body;if(a){a.insertBefore(i,a.firstChild);if(b){a.removeChild(b)}}},insertHTML:function(f,b,g,a,k){var l,m=document,j=this,p,o=m.createElement("span"),n,i;var c=["outlineStyle","none","borderStyle","none","padding","0px","margin","0px","visibility","visible"];var h="outline-style:none;border-style:none;padding:0px;margin:0px;visibility:visible;";if(!j.isDefined(a)){a=""}if(j.isString(f)&&(/[^\s]/).test(f)){f=f.toLowerCase().replace(/\s/g,"");p=j.openTag+f+' width="'+j.pluginSize+'" height="'+j.pluginSize+'" ';p+='style="'+h+'display:inline;" ';for(n=0;n<b.length;n=n+2){if(/[^\s]/.test(b[n+1])){p+=b[n]+'="'+b[n+1]+'" '}}p+=">";for(n=0;n<g.length;n=n+2){if(/[^\s]/.test(g[n+1])){p+=j.openTag+'param name="'+g[n]+'" value="'+g[n+1]+'" />'}}p+=a+j.openTag+"/"+f+">"}else{p=a}if(!j.div){i=m.getElementById(j.divID);if(i){j.div=i}else{j.div=m.createElement("div");j.div.id=j.divID}j.setStyle(j.div,c.concat(["width",j.divWidth+"px","height",(j.pluginSize+3)+"px","fontSize",(j.pluginSize+3)+"px","lineHeight",(j.pluginSize+3)+"px","verticalAlign","baseline","display","block"]));if(!i){j.setStyle(j.div,["position","absolute","right","0px","top","0px"]);j.insertDivInBody(j.div)}}if(j.div&&j.div.parentNode){j.setStyle(o,c.concat(["fontSize",(j.pluginSize+3)+"px","lineHeight",(j.pluginSize+3)+"px","verticalAlign","baseline","display","inline"]));try{o.innerHTML=p}catch(l){};try{j.div.appendChild(o)}catch(l){};return{span:o,winLoaded:j.winLoaded,tagName:f,outerHTML:p}}return{span:null,winLoaded:j.winLoaded,tagName:"",outerHTML:p}},Plugins:{quicktime:{mimeType:["video/quicktime","application/x-quicktimeplayer","image/x-macpaint","image/x-quicktime"],progID:"QuickTimeCheckObject.QuickTimeCheck.1",progID0:"QuickTime.QuickTime",classID:"clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B",minIEver:7,HTML:'<param name="src" value="" /><param name="controller" value="false" />',getCodeBaseVersion:function(a){return'codebase="#version='+a+'"'},SEARCH:{min:0,max:0,match:0,digits:[16,128,128,0]},getVersion:function(c){var f=this,d=f.$,a=null,e=null,b;if(!d.isIE){if(d.hasMimeType(f.mimeType)){e=d.OS!=3?d.findNavPlugin("QuickTime.*Plug-?in",0):null;if(e&&e.name){a=d.getNum(e.name)}}}else{if(d.isStrNum(c)){b=c.split(d.splitNumRegx);if(b.length>3&&parseInt(b[3],10)>0){b[3]="9999"}c=b.join(",")}if(d.isStrNum(c)&&d.verIE>=f.minIEver&&f.canUseIsMin()>0){f.installed=f.isMin(c);f.getVersionDone=0;return}f.getVersionDone=1;if(!a&&d.verIE>=f.minIEver){a=f.CDBASE2VER(d.codebaseSearch(f))}if(!a){e=d.getAXO(f.progID);if(e&&e.QuickTimeVersion){a=e.QuickTimeVersion.toString(16);a=parseInt(a.charAt(0),16)+"."+parseInt(a.charAt(1),16)+"."+parseInt(a.charAt(2),16)}}}f.installed=a?1:(e?0:-1);f.version=d.formatNum(a,3)},cdbaseUpper:["7,60,0,0","0,0,0,0"],cdbaseLower:["7,50,0,0",null],cdbase2ver:[function(c,b){var a=b.split(c.$.splitNumRegx);return[a[0],a[1].charAt(0),a[1].charAt(1),a[2]].join(",")},null],CDBASE2VER:function(f){var e=this,c=e.$,b,a=e.cdbaseUpper,d=e.cdbaseLower;if(f){f=c.formatNum(f);for(b=0;b<a.length;b++){if(a[b]&&c.compareNums(f,a[b])<0&&d[b]&&c.compareNums(f,d[b])>=0&&e.cdbase2ver[b]){return e.cdbase2ver[b](e,f)}}}return f},canUseIsMin:function(){var f=this,d=f.$,b,c=f.canUseIsMin,a=f.cdbaseUpper,e=f.cdbaseLower;if(!c.value){c.value=-1;for(b=0;b<a.length;b++){if(a[b]&&d.codebaseSearch(f,a[b])){c.value=1;break}if(e[b]&&d.codebaseSearch(f,e[b])){c.value=-1;break}}}f.SEARCH.match=c.value==1?1:0;return c.value},isMin:function(c){var b=this,a=b.$;return a.codebaseSearch(b,c)?0.7:-1}},flash:{mimeType:"application/x-shockwave-flash",progID:"ShockwaveFlash.ShockwaveFlash",classID:"clsid:D27CDB6E-AE6D-11CF-96B8-444553540000",getVersion:function(){var b=function(i){if(!i){return null}var e=/[\d][\d\,\.\s]*[rRdD]{0,1}[\d\,]*/.exec(i);return e?e[0].replace(/[rRdD\.]/g,",").replace(/\s/g,""):null};var j=this,g=j.$,k,h,l=null,c=null,a=null,f,m,d;if(!g.isIE){m=g.hasMimeType(j.mimeType);if(m){f=g.getDOMobj(g.insertHTML("object",["type",j.mimeType],[],"",j));try{l=g.getNum(f.GetVariable("$version"))}catch(k){}}if(!l){d=m?m.enabledPlugin:null;if(d&&d.description){l=b(d.description)}if(l){l=g.getPluginFileVersion(d,l)}}}else{for(h=15;h>2;h--){c=g.getAXO(j.progID+"."+h);if(c){a=h.toString();break}}if(!c){c=g.getAXO(j.progID)}if(a=="6"){try{c.AllowScriptAccess="always"}catch(k){return"6,0,21,0"}}try{l=b(c.GetVariable("$version"))}catch(k){}if(!l&&a){l=a}}j.installed=l?1:-1;j.version=g.formatNum(l);return true}},shockwave:{mimeType:"application/x-director",progID:"SWCtl.SWCtl",classID:"clsid:166B1BCA-3F9C-11CF-8075-444553540000",getVersion:function(){var a=null,b=null,g,f,d=this,c=d.$;if(!c.isIE){f=c.findNavPlugin("Shockwave\\s*for\\s*Director");if(f&&f.description&&c.hasMimeType(d.mimeType)){a=c.getNum(f.description)}if(a){a=c.getPluginFileVersion(f,a)}}else{try{b=c.getAXO(d.progID).ShockwaveVersion("")}catch(g){}if(c.isString(b)&&b.length>0){a=c.getNum(b)}else{if(c.getAXO(d.progID+".8")){a="8"}else{if(c.getAXO(d.progID+".7")){a="7"}else{if(c.getAXO(d.progID+".1")){a="6"}}}}}d.installed=a?1:-1;d.version=c.formatNum(a)}},zz:0}};PluginDetect.initScript();

	var gArgCountErr='The "%%" function requires an even number of arguments.\nArguments should be in the form "atttributeName", "attributeValue", ...',gTagAttrs=null,gQTGeneratorVersion=1;function AC_QuickTimeVersion(){return gQTGeneratorVersion}function _QTComplain(a,b){b=b.replace("%%",a);alert(b)}function _QTAddAttribute(a,b,c){var d;d=gTagAttrs[a+b];null==d&&(d=gTagAttrs[b]);return null!=d?(0==b.indexOf(a)&&null==c&&(c=b.substring(a.length)),null==c&&(c=b),c+'="'+d+'" '):""}function _QTAddObjectAttr(a,b){if(0==a.indexOf("emb#"))return"";0==a.indexOf("obj#")&&null==b&&(b=a.substring(4));return _QTAddAttribute("obj#",a,b)}function _QTAddEmbedAttr(a,b){if(0==a.indexOf("obj#"))return"";0==a.indexOf("emb#")&&null==b&&(b=a.substring(4));return _QTAddAttribute("emb#",a,b)}function _QTAddObjectParam(a,b){var c,d="",e=b?" />":">";-1==a.indexOf("emb#")&&(c=gTagAttrs["obj#"+a],null==c&&(c=gTagAttrs[a]),0==a.indexOf("obj#")&&(a=a.substring(4)),null!=c&&(d='  <param name="'+a+'" value="'+c+'"'+e+"\n"));return d}function _QTDeleteTagAttrs(){for(var a=0;a<arguments.length;a++){var b=arguments[a];delete gTagAttrs[b];delete gTagAttrs["emb#"+b];delete gTagAttrs["obj#"+b]}}function _QTGenerate(a,b,c){if(4>c.length||0!=c.length%2)return _QTComplain(a,gArgCountErr),"";gTagAttrs=[];gTagAttrs.src=c[0];gTagAttrs.width=c[1];gTagAttrs.height=c[2];gTagAttrs.classid="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B";gTagAttrs.pluginspage="http://www.apple.com/quicktime/download/";a=c[3];if(null==a||""==a)a="6,0,2,0";gTagAttrs.codebase="http://www.apple.com/qtactivex/qtplugin.cab#version="+a;for(var d,e=4;e<c.length;e+=2)d=c[e].toLowerCase(),a=c[e+1],"name"==d||"id"==d?gTagAttrs.name=a:gTagAttrs[d]=a;c="<object "+_QTAddObjectAttr("classid")+_QTAddObjectAttr("width")+_QTAddObjectAttr("height")+_QTAddObjectAttr("codebase")+_QTAddObjectAttr("name","id")+_QTAddObjectAttr("tabindex")+_QTAddObjectAttr("hspace")+_QTAddObjectAttr("vspace")+_QTAddObjectAttr("border")+_QTAddObjectAttr("align")+_QTAddObjectAttr("class")+_QTAddObjectAttr("title")+_QTAddObjectAttr("accesskey")+_QTAddObjectAttr("noexternaldata")+">\n"+_QTAddObjectParam("src",b);e="  <embed "+_QTAddEmbedAttr("src")+_QTAddEmbedAttr("width")+_QTAddEmbedAttr("height")+_QTAddEmbedAttr("pluginspage")+_QTAddEmbedAttr("name")+_QTAddEmbedAttr("align")+_QTAddEmbedAttr("tabindex");_QTDeleteTagAttrs("src","width","height","pluginspage","classid","codebase","name","tabindex","hspace","vspace","border","align","noexternaldata","class","title","accesskey");for(d in gTagAttrs)a=gTagAttrs[d],null!=a&&(e+=_QTAddEmbedAttr(d),c+=_QTAddObjectParam(d,b));return c+e+"> </embed>\n</object>"}function QT_GenerateOBJECTText(){return _QTGenerate("QT_GenerateOBJECTText",!1,arguments)};


	/*
		jQuery hashchange event v1.3
		https://github.com/cowboy/jquery-hashchange
		Copyright (c) 2010 "Cowboy" Ben Alman
		Dual licensed under the MIT and GPL licenses.
	*/
	(function(){function e(a){a=a||location.href;return"#"+a.replace(/^[^#]*#?(.*)$/,"$1")}var k=document,b,f=$.event.special,p=k.documentMode,m="oniLightBoxHashChange"in window&&(void 0===p||7<p);$.fn.iLightBoxHashChange=function(a){return a?this.bind("iLightBoxHashChange",a):this.trigger("iLightBoxHashChange")};$.fn.iLightBoxHashChange.delay=50;f.iLightBoxHashChange=$.extend(f.iLightBoxHashChange,{setup:function(){if(m)return!1;$(b.start)},teardown:function(){if(m)return!1;$(b.stop)}});b=function(){function a(){var c=
	e(),d=f(l);c!==l?(n(l=c,d),$(window).trigger("iLightBoxHashChange")):d!==l&&(location.href=location.href.replace(/#.*/,"")+d);g=setTimeout(a,$.fn.iLightBoxHashChange.delay)}var h={},g,l=e(),b=function(c){return c},n=b,f=b;h.start=function(){g||a()};h.stop=function(){g&&clearTimeout(g);g=void 0};browser.msie&&!m&&function(){var c,d;h.start=function(){c||(d=(d=$.fn.iLightBoxHashChange.src)&&d+e(),c=$('<iframe tabindex="-1" title="empty"/>').hide().one("load",function(){d||n(e());a()}).attr("src",d||
	"javascript:0").insertAfter("body")[0].contentWindow,k.onpropertychange=function(){try{"title"===event.propertyName&&(c.document.title=k.title)}catch(a){}})};h.stop=b;f=function(){return e(c.location.href)};n=function(a,d){var b=c.document,e=$.fn.iLightBoxHashChange.domain;a!==d&&(b.title=k.title,b.open(),e&&b.write('<script>document.domain="'+e+'"\x3c/script>'),b.close(),c.location.hash=a)}}();return h}()})();

	if (!Array.prototype.filter) {
		Array.prototype.filter = function(fun /*, thisp */ ) {
			"use strict";

			if (this == null)
				throw new TypeError();

			var t = Object(this);
			var len = t.length >>> 0;
			if (typeof fun != "function")
				throw new TypeError();

			var res = [];
			var thisp = arguments[1];
			for (var i = 0; i < len; i++) {
				if (i in t) {
					var val = t[i]; // in case fun mutates this
					if (fun.call(thisp, val, i, t))
						res.push(val);
				}
			}

			return res;
		};
	}

	if (!Array.prototype.indexOf) {
		Array.prototype.indexOf = function(searchElement, fromIndex) {
			var k;

			if (this == null) {
				throw new TypeError('"this" is null or not defined');
			}

			var O = Object(this);

			var len = O.length >>> 0;

			if (len === 0) {
				return -1;
			}

			var n = +fromIndex || 0;

			if (abs(n) === Infinity) {
				n = 0;
			}

			if (n >= len) {
				return -1;
			}

			k = max(n >= 0 ? n : len - abs(n), 0);

			while (k < len) {
				var kValue;
				if (k in O && O[k] === searchElement) {
					return k;
				}
				k++;
			}
			return -1;
		};
	}

	if (!Array.prototype.lastIndexOf) {
		Array.prototype.lastIndexOf = function(searchElement /*, fromIndex*/ ) {
			"use strict";

			if (this == null)
				throw new TypeError();

			var t = Object(this);
			var len = t.length >>> 0;
			if (len === 0)
				return -1;

			var n = len;
			if (arguments.length > 1) {
				n = Number(arguments[1]);
				if (n != n)
					n = 0;
				else if (n != 0 && n != (1 / 0) && n != -(1 / 0))
					n = (n > 0 || -1) * floor(abs(n));
			}

			var k = n >= 0 ? min(n, len - 1) : len - abs(n);

			for (; k >= 0; k--) {
				if (k in t && t[k] === searchElement)
					return k;
			}
			return -1;
		};
	}
})(jQuery, this);