--- a/src/iconolab/static/iconolab/js/build.js Mon Aug 22 12:46:43 2016 +0200
+++ b/src/iconolab/static/iconolab/js/build.js Tue Aug 23 18:01:08 2016 +0200
@@ -1,5 +1,5 @@
-!function(t){function e(r){if(n[r])return n[r].exports;var i=n[r]={exports:{},id:r,loaded:!1};return t[r].call(i.exports,i,i.exports,e),i.loaded=!0,i.exports}var n={};return e.m=t,e.c=n,e.p="/dist/",e(0)}([function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}n(38),n(39),n(37);var i=n(28),o=(r(i),n(2)),a=r(o),s=n(33),u=r(s),c=n(6),l=r(c),f=n(41),h=r(f),d={Cutout:u["default"],VueComponents:{Typeahead:a["default"],MergeTool:h["default"],Zoomview:l["default"]}};window.iconolab||(window.iconolab=d)},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0}),e.eventEmitter=e.generateId=void 0;var i=n(27),o=r(i),a=(0,o["default"])({}),s=function(){var t=0,e="item_";return function(n){return n="string"==typeof n?n:e,t+=1,n+t}}();e.generateId=s,e.eventEmitter=a},function(t,e,n){var r,i;n(47),r=n(10);var o=n(43);i=r||{},i.__esModule&&(i=i["default"]),"function"==typeof i&&(i=i.options),i.render=o.render,i.staticRenderFns=o.staticRenderFns,i._scopeId="data-v-1",t.exports=r||i},function(t,e,n){var r,i,r,o,a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol?"symbol":typeof t};(function(){t.exports=0;!function(n){var o,a,s="0.4.2",u="hasOwnProperty",c=/[\.\/]/,l=/\s*,\s*/,f="*",h=function(t,e){return t-e},d={n:{}},p=function(){for(var t=0,e=this.length;t<e;t++)if("undefined"!=typeof this[t])return this[t]},v=function(){for(var t=this.length;--t;)if("undefined"!=typeof this[t])return this[t]},g=function m(t,e){t=String(t);var n,r=a,i=Array.prototype.slice.call(arguments,2),s=m.listeners(t),u=0,c=[],l={},f=[],d=o;f.firstDefined=p,f.lastDefined=v,o=t,a=0;for(var g=0,y=s.length;g<y;g++)"zIndex"in s[g]&&(c.push(s[g].zIndex),s[g].zIndex<0&&(l[s[g].zIndex]=s[g]));for(c.sort(h);c[u]<0;)if(n=l[c[u++]],f.push(n.apply(e,i)),a)return a=r,f;for(g=0;g<y;g++)if(n=s[g],"zIndex"in n)if(n.zIndex==c[u]){if(f.push(n.apply(e,i)),a)break;do if(u++,n=l[c[u]],n&&f.push(n.apply(e,i)),a)break;while(n)}else l[n.zIndex]=n;else if(f.push(n.apply(e,i)),a)break;return a=r,o=d,f};g._events=d,g.listeners=function(t){var e,n,r,i,o,a,s,u,l=t.split(c),h=d,p=[h],v=[];for(i=0,o=l.length;i<o;i++){for(u=[],a=0,s=p.length;a<s;a++)for(h=p[a].n,n=[h[l[i]],h[f]],r=2;r--;)e=n[r],e&&(u.push(e),v=v.concat(e.f||[]));p=u}return v},g.on=function(t,e){if(t=String(t),"function"!=typeof e)return function(){};for(var n=t.split(l),r=0,i=n.length;r<i;r++)!function(t){for(var n,r=t.split(c),i=d,o=0,a=r.length;o<a;o++)i=i.n,i=i.hasOwnProperty(r[o])&&i[r[o]]||(i[r[o]]={n:{}});for(i.f=i.f||[],o=0,a=i.f.length;o<a;o++)if(i.f[o]==e){n=!0;break}!n&&i.f.push(e)}(n[r]);return function(t){+t==+t&&(e.zIndex=+t)}},g.f=function(t){var e=[].slice.call(arguments,1);return function(){g.apply(null,[t,null].concat(e).concat([].slice.call(arguments,0)))}},g.stop=function(){a=1},g.nt=function(t){return t?new RegExp("(?:\\.|\\/|^)"+t+"(?:\\.|\\/|$)").test(o):o},g.nts=function(){return o.split(c)},g.off=g.unbind=function(t,e){if(!t)return void(g._events=d={n:{}});var n=t.split(l);if(n.length>1)for(var r=0,i=n.length;r<i;r++)g.off(n[r],e);else{n=t.split(c);var o,a,s,r,i,h,p,v=[d];for(r=0,i=n.length;r<i;r++)for(h=0;h<v.length;h+=s.length-2){if(s=[h,1],o=v[h].n,n[r]!=f)o[n[r]]&&s.push(o[n[r]]);else for(a in o)o[u](a)&&s.push(o[a]);v.splice.apply(v,s)}for(r=0,i=v.length;r<i;r++)for(o=v[r];o.n;){if(e){if(o.f){for(h=0,p=o.f.length;h<p;h++)if(o.f[h]==e){o.f.splice(h,1);break}!o.f.length&&delete o.f}for(a in o.n)if(o.n[u](a)&&o.n[a].f){var m=o.n[a].f;for(h=0,p=m.length;h<p;h++)if(m[h]==e){m.splice(h,1);break}!m.length&&delete o.n[a].f}}else{delete o.f;for(a in o.n)o.n[u](a)&&o.n[a].f&&delete o.n[a].f}o=o.n}}},g.once=function(t,e){var n=function r(){return g.unbind(t,r),e.apply(this,arguments)};return g.on(t,n)},g.version=s,g.toString=function(){return"You are running Eve "+s},"undefined"!=typeof t&&t.exports?t.exports=g:(r=[],!(i=function(){return g}.apply(e,r)))}(this),function(n,a){r=[i],o=function(t){return a(n,t)}.apply(e,r),!(void 0!==o&&(t.exports=o))}(window||this,function(t,e){var n=function(e){var n={},r=t.requestAnimationFrame||t.webkitRequestAnimationFrame||t.mozRequestAnimationFrame||t.oRequestAnimationFrame||t.msRequestAnimationFrame||function(t){setTimeout(t,16)},i=Array.isArray||function(t){return t instanceof Array||"[object Array]"==Object.prototype.toString.call(t)},o=0,a="M"+(+new Date).toString(36),s=function(){return a+(o++).toString(36)},u=Date.now||function(){return+new Date},c=function(t){var e=this;if(null==t)return e.s;var n=e.s-t;e.b+=e.dur*n,e.B+=e.dur*n,e.s=t},l=function(t){var e=this;return null==t?e.spd:void(e.spd=t)},f=function(t){var e=this;return null==t?e.dur:(e.s=e.s*t/e.dur,void(e.dur=t))},h=function(){var t=this;delete n[t.id],t.update(),e("mina.stop."+t.id,t)},d=function(){var t=this;t.pdif||(delete n[t.id],t.update(),t.pdif=t.get()-t.b)},p=function(){var t=this;t.pdif&&(t.b=t.get()-t.pdif,delete t.pdif,n[t.id]=t)},v=function(){var t,e=this;if(i(e.start)){t=[];for(var n=0,r=e.start.length;n<r;n++)t[n]=+e.start[n]+(e.end[n]-e.start[n])*e.easing(e.s)}else t=+e.start+(e.end-e.start)*e.easing(e.s);e.set(t)},g=function y(){var t=0;for(var i in n)if(n.hasOwnProperty(i)){var o=n[i],a=o.get();t++,o.s=(a-o.b)/(o.dur/o.spd),o.s>=1&&(delete n[i],o.s=1,t--,function(t){setTimeout(function(){e("mina.finish."+t.id,t)})}(o)),o.update()}t&&r(y)},m=function b(t,e,i,o,a,u,m){var y={id:s(),start:t,end:e,b:i,s:0,dur:o-i,spd:1,get:a,set:u,easing:m||b.linear,status:c,speed:l,duration:f,stop:h,pause:d,resume:p,update:v};n[y.id]=y;var x,w=0;for(x in n)if(n.hasOwnProperty(x)&&(w++,2==w))break;return 1==w&&r(g),y};return m.time=u,m.getById=function(t){return n[t]||null},m.linear=function(t){return t},m.easeout=function(t){return Math.pow(t,1.7)},m.easein=function(t){return Math.pow(t,.48)},m.easeinout=function(t){if(1==t)return 1;if(0==t)return 0;var e=.48-t/1.04,n=Math.sqrt(.1734+e*e),r=n-e,i=Math.pow(Math.abs(r),1/3)*(r<0?-1:1),o=-n-e,a=Math.pow(Math.abs(o),1/3)*(o<0?-1:1),s=i+a+.5;return 3*(1-s)*s*s+s*s*s},m.backin=function(t){if(1==t)return 1;var e=1.70158;return t*t*((e+1)*t-e)},m.backout=function(t){if(0==t)return 0;t-=1;var e=1.70158;return t*t*((e+1)*t+e)+1},m.elastic=function(t){return t==!!t?t:Math.pow(2,-10*t)*Math.sin((t-.075)*(2*Math.PI)/.3)+1},m.bounce=function(t){var e,n=7.5625,r=2.75;return t<1/r?e=n*t*t:t<2/r?(t-=1.5/r,e=n*t*t+.75):t<2.5/r?(t-=2.25/r,e=n*t*t+.9375):(t-=2.625/r,e=n*t*t+.984375),e},t.mina=m,m}("undefined"==typeof e?function(){}:e),r=function(t){function n(t,e){if(t){if(t.nodeType)return C(t);if(i(t,"array")&&n.set)return n.set.apply(n,t);if(t instanceof b)return t;if(null==e)return t=T.doc.querySelector(String(t)),C(t)}return t=null==t?"100%":t,e=null==e?"100%":e,new _(t,e)}function r(t,e){if(e){if("#text"==t&&(t=T.doc.createTextNode(e.text||e["#text"]||"")),"#comment"==t&&(t=T.doc.createComment(e.text||e["#text"]||"")),"string"==typeof t&&(t=r(t)),"string"==typeof e)return 1==t.nodeType?"xlink:"==e.substring(0,6)?t.getAttributeNS(W,e.substring(6)):"xml:"==e.substring(0,4)?t.getAttributeNS(X,e.substring(4)):t.getAttribute(e):"text"==e?t.nodeValue:null;if(1==t.nodeType){for(var n in e)if(e[A](n)){var i=S(e[n]);i?"xlink:"==n.substring(0,6)?t.setAttributeNS(W,n.substring(6),i):"xml:"==n.substring(0,4)?t.setAttributeNS(X,n.substring(4),i):t.setAttribute(n,i):t.removeAttribute(n)}}else"text"in e&&(t.nodeValue=e.text)}else t=T.doc.createElementNS(X,t);return t}function i(t,e){return e=S.prototype.toLowerCase.call(e),"finite"==e?isFinite(t):!("array"!=e||!(t instanceof Array||Array.isArray&&Array.isArray(t)))||("null"==e&&null===t||e==("undefined"==typeof t?"undefined":a(t))&&null!==t||"object"==e&&t===Object(t)||F.call(t).slice(8,-1).toLowerCase()==e)}function o(t){if("function"==typeof t||Object(t)!==t)return t;var e=new t.constructor;for(var n in t)t[A](n)&&(e[n]=o(t[n]));return e}function s(t,e){for(var n=0,r=t.length;n<r;n++)if(t[n]===e)return t.push(t.splice(n,1)[0])}function u(t,e,n){function r(){var i=Array.prototype.slice.call(arguments,0),o=i.join("␀"),a=r.cache=r.cache||{},u=r.count=r.count||[];return a[A](o)?(s(u,o),n?n(a[o]):a[o]):(u.length>=1e3&&delete a[u.shift()],u.push(o),a[o]=t.apply(e,i),n?n(a[o]):a[o])}return r}function c(t,e,n,r,i,o){if(null==i){var a=t-n,s=e-r;return a||s?(180+180*j.atan2(-s,-a)/M+360)%360:0}return c(t,e,i,o)-c(n,r,i,o)}function l(t){return t%360*M/180}function f(t){return 180*t/M%360}function h(t){var e=[];return t=t.replace(/(?:^|\s)(\w+)\(([^)]+)\)/g,function(t,n,r){return r=r.split(/\s*,\s*|\s+/),"rotate"==n&&1==r.length&&r.push(0,0),"scale"==n&&(r.length>2?r=r.slice(0,2):2==r.length&&r.push(0,0),1==r.length&&r.push(r[0],0,0)),"skewX"==n?e.push(["m",1,0,j.tan(l(r[0])),1,0,0]):"skewY"==n?e.push(["m",1,j.tan(l(r[0])),0,1,0,0]):e.push([n.charAt(0)].concat(r)),t}),e}function d(t,e){var r=et(t),i=new n.Matrix;if(r)for(var o=0,a=r.length;o<a;o++){var s,u,c,l,f,h=r[o],d=h.length,p=S(h[0]).toLowerCase(),v=h[0]!=p,g=v?i.invert():0;"t"==p&&2==d?i.translate(h[1],0):"t"==p&&3==d?v?(s=g.x(0,0),u=g.y(0,0),c=g.x(h[1],h[2]),l=g.y(h[1],h[2]),i.translate(c-s,l-u)):i.translate(h[1],h[2]):"r"==p?2==d?(f=f||e,i.rotate(h[1],f.x+f.width/2,f.y+f.height/2)):4==d&&(v?(c=g.x(h[2],h[3]),l=g.y(h[2],h[3]),i.rotate(h[1],c,l)):i.rotate(h[1],h[2],h[3])):"s"==p?2==d||3==d?(f=f||e,i.scale(h[1],h[d-1],f.x+f.width/2,f.y+f.height/2)):4==d?v?(c=g.x(h[2],h[3]),l=g.y(h[2],h[3]),i.scale(h[1],h[1],c,l)):i.scale(h[1],h[1],h[2],h[3]):5==d&&(v?(c=g.x(h[3],h[4]),l=g.y(h[3],h[4]),i.scale(h[1],h[2],c,l)):i.scale(h[1],h[2],h[3],h[4])):"m"==p&&7==d&&i.add(h[1],h[2],h[3],h[4],h[5],h[6])}return i}function p(t){var e=t.node.ownerSVGElement&&C(t.node.ownerSVGElement)||t.node.parentNode&&C(t.node.parentNode)||n.select("svg")||n(0,0),r=e.select("defs"),i=null!=r&&r.node;return i||(i=w("defs",e.node).node),i}function v(t){return t.node.ownerSVGElement&&C(t.node.ownerSVGElement)||n.select("svg")}function m(t,e,n){function i(t){if(null==t)return P;if(t==+t)return t;r(c,{width:t});try{return c.getBBox().width}catch(e){return 0}}function o(t){if(null==t)return P;if(t==+t)return t;r(c,{height:t});try{return c.getBBox().height}catch(e){return 0}}function a(r,i){null==e?u[r]=i(t.attr(r)||0):r==e&&(u=i(null==n?t.attr(r)||0:n))}var s=v(t).node,u={},c=s.querySelector(".svg---mgr");switch(c||(c=r("rect"),r(c,{x:-9e9,y:-9e9,width:10,height:10,"class":"svg---mgr",fill:"none"}),s.appendChild(c)),t.type){case"rect":a("rx",i),a("ry",o);case"image":a("width",i),a("height",o);case"text":a("x",i),a("y",o);break;case"circle":a("cx",i),a("cy",o),a("r",i);break;case"ellipse":a("cx",i),a("cy",o),a("rx",i),a("ry",o);break;case"line":a("x1",i),a("x2",i),a("y1",o),a("y2",o);break;case"marker":a("refX",i),a("markerWidth",i),a("refY",o),a("markerHeight",o);break;case"radialGradient":a("fx",i),a("fy",o);break;case"tspan":a("dx",i),a("dy",o);break;default:a(e,i)}return s.removeChild(c),u}function y(t){i(t,"array")||(t=Array.prototype.slice.call(arguments,0));for(var e=0,n=0,r=this.node;this[e];)delete this[e++];for(e=0;e<t.length;e++)"set"==t[e].type?t[e].forEach(function(t){r.appendChild(t.node)}):r.appendChild(t[e].node);var o=r.childNodes;for(e=0;e<o.length;e++)this[n++]=C(o[e]);return this}function b(t){if(t.snap in G)return G[t.snap];var e;try{e=t.ownerSVGElement}catch(n){}this.node=t,e&&(this.paper=new _(e)),this.type=t.tagName||t.nodeName;var r=this.id=U(this);if(this.anims={},this._={transform:[]},t.snap=r,G[r]=this,"g"==this.type&&(this.add=y),this.type in{g:1,mask:1,pattern:1,symbol:1})for(var i in _.prototype)_.prototype[A](i)&&(this[i]=_.prototype[i])}function x(t){this.node=t}function w(t,e){var n=r(t);e.appendChild(n);var i=C(n);return i}function _(t,e){var n,i,o,a=_.prototype;if(t&&"svg"==t.tagName){if(t.snap in G)return G[t.snap];var s=t.ownerDocument;n=new b(t),i=t.getElementsByTagName("desc")[0],o=t.getElementsByTagName("defs")[0],i||(i=r("desc"),i.appendChild(s.createTextNode("Created with Snap")),n.node.appendChild(i)),o||(o=r("defs"),n.node.appendChild(o)),n.defs=o;for(var u in a)a[A](u)&&(n[u]=a[u]);n.paper=n.root=n}else n=w("svg",T.doc.body),r(n.node,{height:e,version:1.1,width:t,xmlns:X});return n}function C(t){return t?t instanceof b||t instanceof x?t:t.tagName&&"svg"==t.tagName.toLowerCase()?new _(t):t.tagName&&"object"==t.tagName.toLowerCase()&&"image/svg+xml"==t.type?new _(t.contentDocument.getElementsByTagName("svg")[0]):new b(t):t}function k(t,e){for(var n=0,r=t.length;n<r;n++){var i={type:t[n].type,attr:t[n].attr()},o=t[n].children();e.push(i),o.length&&k(o,i.childNodes=[])}}n.version="0.4.0",n.toString=function(){return"Snap v"+this.version},n._={};var T={win:t.window,doc:t.window.document};n._.glob=T;var A="hasOwnProperty",S=String,$=parseFloat,E=parseInt,j=Math,O=j.max,N=j.min,D=j.abs,M=(j.pow,j.PI),P=(j.round,""),F=Object.prototype.toString,B=/^\s*((#[a-f\d]{6})|(#[a-f\d]{3})|rgba?\(\s*([\d\.]+%?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+%?(?:\s*,\s*[\d\.]+%?)?)\s*\)|hsba?\(\s*([\d\.]+(?:deg|\xb0|%)?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+(?:%?\s*,\s*[\d\.]+)?%?)\s*\)|hsla?\(\s*([\d\.]+(?:deg|\xb0|%)?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+(?:%?\s*,\s*[\d\.]+)?%?)\s*\))\s*$/i,L=(n._.separator=/[,\s]+/,/[\s]*,[\s]*/),R={hs:1,rg:1},I=/([a-z])[\s,]*((-?\d*\.?\d*(?:e[\-+]?\d+)?[\s]*,?[\s]*)+)/gi,H=/([rstm])[\s,]*((-?\d*\.?\d*(?:e[\-+]?\d+)?[\s]*,?[\s]*)+)/gi,q=/(-?\d*\.?\d*(?:e[\-+]?\\d+)?)[\s]*,?[\s]*/gi,z=0,V="S"+(+new Date).toString(36),U=function(t){return(t&&t.type?t.type:P)+V+(z++).toString(36)},W="http://www.w3.org/1999/xlink",X="http://www.w3.org/2000/svg",G={};n.url=function(t){return"url('#"+t+"')"};n._.$=r,n._.id=U,n.format=function(){var t=/\{([^\}]+)\}/g,e=/(?:(?:^|\.)(.+?)(?=\[|\.|$|\()|\[('|")(.+?)\2\])(\(\))?/g,n=function(t,n,r){var i=r;return n.replace(e,function(t,e,n,r,o){e=e||r,i&&(e in i&&(i=i[e]),"function"==typeof i&&o&&(i=i()))}),i=(null==i||i==r?t:i)+""};return function(e,r){return S(e).replace(t,function(t,e){return n(t,e,r)})}}(),n._.clone=o,n._.cacher=u,n.rad=l,n.deg=f,n.sin=function(t){return j.sin(n.rad(t))},n.tan=function(t){return j.tan(n.rad(t))},n.cos=function(t){return j.cos(n.rad(t))},n.asin=function(t){return n.deg(j.asin(t))},n.acos=function(t){return n.deg(j.acos(t))},n.atan=function(t){return n.deg(j.atan(t))},n.atan2=function(t){return n.deg(j.atan2(t))},n.angle=c,n.len=function(t,e,r,i){return Math.sqrt(n.len2(t,e,r,i))},n.len2=function(t,e,n,r){return(t-n)*(t-n)+(e-r)*(e-r)},n.closestPoint=function(t,e,n){function r(t){var r=t.x-e,i=t.y-n;return r*r+i*i}for(var i,o,a,s,u=t.node,c=u.getTotalLength(),l=c/u.pathSegList.numberOfItems*.125,f=1/0,h=0;h<=c;h+=l)(s=r(a=u.getPointAtLength(h)))<f&&(i=a,o=h,f=s);for(l*=.5;l>.5;){var d,p,v,g,m,y;(v=o-l)>=0&&(m=r(d=u.getPointAtLength(v)))<f?(i=d,o=v,f=m):(g=o+l)<=c&&(y=r(p=u.getPointAtLength(g)))<f?(i=p,o=g,f=y):l*=.5}return i={x:i.x,y:i.y,length:o,distance:Math.sqrt(f)}},n.is=i,n.snapTo=function(t,e,n){if(n=i(n,"finite")?n:10,i(t,"array")){for(var r=t.length;r--;)if(D(t[r]-e)<=n)return t[r]}else{t=+t;var o=e%t;if(o<n)return e-o;if(o>t-n)return e-o+t}return e},n.getRGB=u(function(t){if(!t||(t=S(t)).indexOf("-")+1)return{r:-1,g:-1,b:-1,hex:"none",error:1,toString:Q};if("none"==t)return{r:-1,g:-1,b:-1,hex:"none",toString:Q};if(!(R[A](t.toLowerCase().substring(0,2))||"#"==t.charAt())&&(t=Z(t)),!t)return{r:-1,g:-1,b:-1,hex:"none",error:1,toString:Q};var e,r,o,a,s,u,c=t.match(B);return c?(c[2]&&(o=E(c[2].substring(5),16),r=E(c[2].substring(3,5),16),e=E(c[2].substring(1,3),16)),c[3]&&(o=E((s=c[3].charAt(3))+s,16),r=E((s=c[3].charAt(2))+s,16),e=E((s=c[3].charAt(1))+s,16)),c[4]&&(u=c[4].split(L),e=$(u[0]),"%"==u[0].slice(-1)&&(e*=2.55),r=$(u[1]),"%"==u[1].slice(-1)&&(r*=2.55),o=$(u[2]),"%"==u[2].slice(-1)&&(o*=2.55),"rgba"==c[1].toLowerCase().slice(0,4)&&(a=$(u[3])),u[3]&&"%"==u[3].slice(-1)&&(a/=100)),c[5]?(u=c[5].split(L),e=$(u[0]),"%"==u[0].slice(-1)&&(e/=100),r=$(u[1]),"%"==u[1].slice(-1)&&(r/=100),o=$(u[2]),"%"==u[2].slice(-1)&&(o/=100),("deg"==u[0].slice(-3)||"°"==u[0].slice(-1))&&(e/=360),"hsba"==c[1].toLowerCase().slice(0,4)&&(a=$(u[3])),u[3]&&"%"==u[3].slice(-1)&&(a/=100),n.hsb2rgb(e,r,o,a)):c[6]?(u=c[6].split(L),e=$(u[0]),"%"==u[0].slice(-1)&&(e/=100),r=$(u[1]),"%"==u[1].slice(-1)&&(r/=100),o=$(u[2]),"%"==u[2].slice(-1)&&(o/=100),("deg"==u[0].slice(-3)||"°"==u[0].slice(-1))&&(e/=360),"hsla"==c[1].toLowerCase().slice(0,4)&&(a=$(u[3])),u[3]&&"%"==u[3].slice(-1)&&(a/=100),n.hsl2rgb(e,r,o,a)):(e=N(j.round(e),255),r=N(j.round(r),255),o=N(j.round(o),255),a=N(O(a,0),1),c={r:e,g:r,b:o,toString:Q},c.hex="#"+(16777216|o|r<<8|e<<16).toString(16).slice(1),c.opacity=i(a,"finite")?a:1,c)):{r:-1,g:-1,b:-1,hex:"none",error:1,toString:Q}},n),n.hsb=u(function(t,e,r){return n.hsb2rgb(t,e,r).hex}),n.hsl=u(function(t,e,r){return n.hsl2rgb(t,e,r).hex}),n.rgb=u(function(t,e,n,r){if(i(r,"finite")){var o=j.round;return"rgba("+[o(t),o(e),o(n),+r.toFixed(2)]+")"}return"#"+(16777216|n|e<<8|t<<16).toString(16).slice(1)});var Z=function(t){var e=T.doc.getElementsByTagName("head")[0]||T.doc.getElementsByTagName("svg")[0],n="rgb(255, 0, 0)";return(Z=u(function(t){if("red"==t.toLowerCase())return n;e.style.color=n,e.style.color=t;var r=T.doc.defaultView.getComputedStyle(e,P).getPropertyValue("color");return r==n?null:r}))(t)},J=function(){return"hsb("+[this.h,this.s,this.b]+")"},Y=function(){return"hsl("+[this.h,this.s,this.l]+")"},Q=function(){return 1==this.opacity||null==this.opacity?this.hex:"rgba("+[this.r,this.g,this.b,this.opacity]+")"},K=function(t,e,r){if(null==e&&i(t,"object")&&"r"in t&&"g"in t&&"b"in t&&(r=t.b,e=t.g,t=t.r),null==e&&i(t,string)){var o=n.getRGB(t);t=o.r,e=o.g,r=o.b}return(t>1||e>1||r>1)&&(t/=255,e/=255,r/=255),[t,e,r]},tt=function(t,e,r,o){t=j.round(255*t),e=j.round(255*e),r=j.round(255*r);var a={r:t,g:e,b:r,opacity:i(o,"finite")?o:1,hex:n.rgb(t,e,r),toString:Q};return i(o,"finite")&&(a.opacity=o),a};n.color=function(t){var e;return i(t,"object")&&"h"in t&&"s"in t&&"b"in t?(e=n.hsb2rgb(t),t.r=e.r,t.g=e.g,t.b=e.b,t.opacity=1,t.hex=e.hex):i(t,"object")&&"h"in t&&"s"in t&&"l"in t?(e=n.hsl2rgb(t),t.r=e.r,t.g=e.g,t.b=e.b,t.opacity=1,t.hex=e.hex):(i(t,"string")&&(t=n.getRGB(t)),i(t,"object")&&"r"in t&&"g"in t&&"b"in t&&!("error"in t)?(e=n.rgb2hsl(t),t.h=e.h,t.s=e.s,t.l=e.l,e=n.rgb2hsb(t),t.v=e.b):(t={hex:"none"},t.r=t.g=t.b=t.h=t.s=t.v=t.l=-1,t.error=1)),t.toString=Q,t},n.hsb2rgb=function(t,e,n,r){i(t,"object")&&"h"in t&&"s"in t&&"b"in t&&(n=t.b,e=t.s,r=t.o,t=t.h),t*=360;var o,a,s,u,c;return t=t%360/60,c=n*e,u=c*(1-D(t%2-1)),o=a=s=n-c,t=~~t,o+=[c,u,0,0,u,c][t],a+=[u,c,c,u,0,0][t],s+=[0,0,u,c,c,u][t],tt(o,a,s,r)},n.hsl2rgb=function(t,e,n,r){i(t,"object")&&"h"in t&&"s"in t&&"l"in t&&(n=t.l,e=t.s,t=t.h),(t>1||e>1||n>1)&&(t/=360,e/=100,n/=100),t*=360;var o,a,s,u,c;return t=t%360/60,c=2*e*(n<.5?n:1-n),u=c*(1-D(t%2-1)),o=a=s=n-c/2,t=~~t,o+=[c,u,0,0,u,c][t],a+=[u,c,c,u,0,0][t],s+=[0,0,u,c,c,u][t],tt(o,a,s,r)},n.rgb2hsb=function(t,e,n){n=K(t,e,n),t=n[0],e=n[1],n=n[2];var r,i,o,a;return o=O(t,e,n),a=o-N(t,e,n),r=0==a?null:o==t?(e-n)/a:o==e?(n-t)/a+2:(t-e)/a+4,r=(r+360)%6*60/360,i=0==a?0:a/o,{h:r,s:i,b:o,toString:J}},n.rgb2hsl=function(t,e,n){n=K(t,e,n),t=n[0],e=n[1],n=n[2];var r,i,o,a,s,u;return a=O(t,e,n),s=N(t,e,n),u=a-s,r=0==u?null:a==t?(e-n)/u:a==e?(n-t)/u+2:(t-e)/u+4,r=(r+360)%6*60/360,o=(a+s)/2,i=0==u?0:o<.5?u/(2*o):u/(2-2*o),{h:r,s:i,l:o,toString:Y}},n.parsePathString=function(t){if(!t)return null;var e=n.path(t);if(e.arr)return n.path.clone(e.arr);var r={a:7,c:6,o:2,h:1,l:2,m:2,r:4,q:4,s:4,t:2,v:1,u:3,z:0},o=[];return i(t,"array")&&i(t[0],"array")&&(o=n.path.clone(t)),o.length||S(t).replace(I,function(t,e,n){var i=[],a=e.toLowerCase();if(n.replace(q,function(t,e){e&&i.push(+e)}),"m"==a&&i.length>2&&(o.push([e].concat(i.splice(0,2))),a="l",e="m"==e?"l":"L"),"o"==a&&1==i.length&&o.push([e,i[0]]),"r"==a)o.push([e].concat(i));else for(;i.length>=r[a]&&(o.push([e].concat(i.splice(0,r[a]))),r[a]););}),o.toString=n.path.toString,e.arr=n.path.clone(o),o};var et=n.parseTransformString=function(t){if(!t)return null;var e=[];return i(t,"array")&&i(t[0],"array")&&(e=n.path.clone(t)),e.length||S(t).replace(H,function(t,n,r){var i=[];n.toLowerCase();r.replace(q,function(t,e){e&&i.push(+e)}),e.push([n].concat(i))}),e.toString=n.path.toString,e};n._.svgTransform2string=h,n._.rgTransform=/^[a-z][\s]*-?\.?\d/i,n._.transform2matrix=d,n._unit2px=m;T.doc.contains||T.doc.compareDocumentPosition?function(t,e){var n=9==t.nodeType?t.documentElement:t,r=e&&e.parentNode;return t==r||!(!r||1!=r.nodeType||!(n.contains?n.contains(r):t.compareDocumentPosition&&16&t.compareDocumentPosition(r)))}:function(t,e){if(e)for(;e;)if(e=e.parentNode,e==t)return!0;return!1};n._.getSomeDefs=p,n._.getSomeSVG=v,n.select=function(t){return t=S(t).replace(/([^\\]):/g,"$1\\:"),C(T.doc.querySelector(t))},n.selectAll=function(t){for(var e=T.doc.querySelectorAll(t),r=(n.set||Array)(),i=0;i<e.length;i++)r.push(C(e[i]));return r},setInterval(function(){for(var t in G)if(G[A](t)){var e=G[t],n=e.node;("svg"!=e.type&&!n.ownerSVGElement||"svg"==e.type&&(!n.parentNode||"ownerSVGElement"in n.parentNode&&!n.ownerSVGElement))&&delete G[t]}},1e4),b.prototype.attr=function(t,n){var r=this,o=r.node;if(!t){if(1!=o.nodeType)return{text:o.nodeValue};for(var a=o.attributes,s={},u=0,c=a.length;u<c;u++)s[a[u].nodeName]=a[u].nodeValue;return s}if(i(t,"string")){if(!(arguments.length>1))return e("snap.util.getattr."+t,r).firstDefined();var l={};l[t]=n,t=l}for(var f in t)t[A](f)&&e("snap.util.attr."+f,r,t[f]);return r},n.parse=function(t){var e=T.doc.createDocumentFragment(),n=!0,r=T.doc.createElement("div");if(t=S(t),t.match(/^\s*<\s*svg(?:\s|>)/)||(t="<svg>"+t+"</svg>",n=!1),r.innerHTML=t,t=r.getElementsByTagName("svg")[0])if(n)e=t;else for(;t.firstChild;)e.appendChild(t.firstChild);return new x(e)},n.fragment=function(){for(var t=Array.prototype.slice.call(arguments,0),e=T.doc.createDocumentFragment(),r=0,i=t.length;r<i;r++){var o=t[r];o.node&&o.node.nodeType&&e.appendChild(o.node),o.nodeType&&e.appendChild(o),"string"==typeof o&&e.appendChild(n.parse(o).node)}return new x(e)},n._.make=w,n._.wrap=C,_.prototype.el=function(t,e){var n=w(t,this.node);return e&&n.attr(e),n},b.prototype.children=function(){for(var t=[],e=this.node.childNodes,r=0,i=e.length;r<i;r++)t[r]=n(e[r]);return t},b.prototype.toJSON=function(){var t=[];return k([this],t),t[0]},e.on("snap.util.getattr",function(){var t=e.nt();t=t.substring(t.lastIndexOf(".")+1);var n=t.replace(/[A-Z]/g,function(t){return"-"+t.toLowerCase()});return nt[A](n)?this.node.ownerDocument.defaultView.getComputedStyle(this.node,null).getPropertyValue(n):r(this.node,t)});var nt={"alignment-baseline":0,"baseline-shift":0,clip:0,"clip-path":0,"clip-rule":0,color:0,"color-interpolation":0,"color-interpolation-filters":0,"color-profile":0,"color-rendering":0,cursor:0,direction:0,display:0,"dominant-baseline":0,"enable-background":0,fill:0,"fill-opacity":0,"fill-rule":0,filter:0,"flood-color":0,"flood-opacity":0,font:0,"font-family":0,"font-size":0,"font-size-adjust":0,"font-stretch":0,"font-style":0,"font-variant":0,"font-weight":0,"glyph-orientation-horizontal":0,"glyph-orientation-vertical":0,"image-rendering":0,kerning:0,"letter-spacing":0,"lighting-color":0,marker:0,"marker-end":0,"marker-mid":0,"marker-start":0,mask:0,opacity:0,overflow:0,"pointer-events":0,"shape-rendering":0,"stop-color":0,"stop-opacity":0,stroke:0,"stroke-dasharray":0,"stroke-dashoffset":0,"stroke-linecap":0,"stroke-linejoin":0,"stroke-miterlimit":0,"stroke-opacity":0,"stroke-width":0,"text-anchor":0,"text-decoration":0,"text-rendering":0,"unicode-bidi":0,visibility:0,"word-spacing":0,"writing-mode":0};e.on("snap.util.attr",function(t){var n=e.nt(),i={};n=n.substring(n.lastIndexOf(".")+1),i[n]=t;var o=n.replace(/-(\w)/gi,function(t,e){return e.toUpperCase()}),a=n.replace(/[A-Z]/g,function(t){return"-"+t.toLowerCase()});nt[A](a)?this.node.style[o]=null==t?P:t:r(this.node,i)}),function(t){}(_.prototype),n.ajax=function(t,n,r,o){var a=new XMLHttpRequest,s=U();if(a){if(i(n,"function"))o=r,r=n,n=null;else if(i(n,"object")){var u=[];for(var c in n)n.hasOwnProperty(c)&&u.push(encodeURIComponent(c)+"="+encodeURIComponent(n[c]));n=u.join("&")}return a.open(n?"POST":"GET",t,!0),n&&(a.setRequestHeader("X-Requested-With","XMLHttpRequest"),a.setRequestHeader("Content-type","application/x-www-form-urlencoded")),r&&(e.once("snap.ajax."+s+".0",r),e.once("snap.ajax."+s+".200",r),e.once("snap.ajax."+s+".304",r)),a.onreadystatechange=function(){4==a.readyState&&e("snap.ajax."+s+"."+a.status,o,a)},4==a.readyState?a:(a.send(n),a)}},n.load=function(t,e,r){n.ajax(t,function(t){var i=n.parse(t.responseText);r?e.call(r,i):e(i)})};var rt=function(t){var e=t.getBoundingClientRect(),n=t.ownerDocument,r=n.body,i=n.documentElement,o=i.clientTop||r.clientTop||0,a=i.clientLeft||r.clientLeft||0,s=e.top+(g.win.pageYOffset||i.scrollTop||r.scrollTop)-o,u=e.left+(g.win.pageXOffset||i.scrollLeft||r.scrollLeft)-a;return{y:s,x:u}};return n.getElementByPoint=function(t,e){var n=this,r=(n.canvas,T.doc.elementFromPoint(t,e));if(T.win.opera&&"svg"==r.tagName){var i=rt(r),o=r.createSVGRect();o.x=t-i.x,o.y=e-i.y,o.width=o.height=1;var a=r.getIntersectionList(o,null);a.length&&(r=a[a.length-1])}return r?C(r):null},n.plugin=function(t){t(n,b,_,T,x)},T.win.Snap=n,n}(t||this);return r.plugin(function(r,i,o,a,s){function u(t,e){if(null==e){var n=!0;if(e="linearGradient"==t.type||"radialGradient"==t.type?t.node.getAttribute("gradientTransform"):"pattern"==t.type?t.node.getAttribute("patternTransform"):t.node.getAttribute("transform"),!e)return new r.Matrix;e=r._.svgTransform2string(e)}else e=r._.rgTransform.test(e)?p(e).replace(/\.{3}|\u2026/g,t._.transform||E):r._.svgTransform2string(e),d(e,"array")&&(e=r.path?r.path.toString.call(e):p(e)),t._.transform=e;var i=r._.transform2matrix(e,t.getBBox(1));return n?i:void(t.matrix=i)}function c(t){function e(t,e){var n=g(t.node,e);n=n&&n.match(o),n=n&&n[2],n&&"#"==n.charAt()&&(n=n.substring(1),n&&(s[n]=(s[n]||[]).concat(function(n){var r={};r[e]=URL(n),g(t.node,r)})))}function n(t){var e=g(t.node,"xlink:href");e&&"#"==e.charAt()&&(e=e.substring(1),e&&(s[e]=(s[e]||[]).concat(function(e){t.attr("xlink:href","#"+e)})))}for(var r,i=t.selectAll("*"),o=/^\s*url\(("|'|)(.*)\1\)\s*$/,a=[],s={},u=0,c=i.length;u<c;u++){r=i[u],e(r,"fill"),e(r,"stroke"),e(r,"filter"),e(r,"mask"),e(r,"clip-path"),n(r);var l=g(r.node,"id");l&&(g(r.node,{id:r.id}),a.push({old:l,id:r.id}))}for(u=0,c=a.length;u<c;u++){var f=s[a[u].old];if(f)for(var h=0,d=f.length;h<d;h++)f[h](a[u].id)}}function l(t,e,n){return function(r){var i=r.slice(t,e);return 1==i.length&&(i=i[0]),n?n(i):i}}function f(t){return function(){var e=t?"<"+this.type:"",n=this.node.attributes,r=this.node.childNodes;if(t)for(var i=0,o=n.length;i<o;i++)e+=" "+n[i].name+'="'+n[i].value.replace(/"/g,'\\"')+'"';if(r.length){for(t&&(e+=">"),i=0,o=r.length;i<o;i++)3==r[i].nodeType?e+=r[i].nodeValue:1==r[i].nodeType&&(e+=x(r[i]).toString());t&&(e+="</"+this.type+">")}else t&&(e+="/>");return e}}var h=i.prototype,d=r.is,p=String,v=r._unit2px,g=r._.$,m=r._.make,y=r._.getSomeDefs,b="hasOwnProperty",x=r._.wrap;h.getBBox=function(t){if(!r.Matrix||!r.path)return this.node.getBBox();var e=this,n=new r.Matrix;if(e.removed)return r._.box();for(;"use"==e.type;)if(t||(n=n.add(e.transform().localMatrix.translate(e.attr("x")||0,e.attr("y")||0))),e.original)e=e.original;else{var i=e.attr("xlink:href");e=e.original=e.node.ownerDocument.getElementById(i.substring(i.indexOf("#")+1))}var o=e._,a=r.path.get[e.type]||r.path.get.deflt;try{return t?(o.bboxwt=a?r.path.getBBox(e.realPath=a(e)):r._.box(e.node.getBBox()),r._.box(o.bboxwt)):(e.realPath=a(e),e.matrix=e.transform().localMatrix,o.bbox=r.path.getBBox(r.path.map(e.realPath,n.add(e.matrix))),r._.box(o.bbox))}catch(s){return r._.box()}};var w=function(){return this.string};h.transform=function(t){var e=this._;if(null==t){for(var n,i=this,o=new r.Matrix(this.node.getCTM()),a=u(this),s=[a],c=new r.Matrix,l=a.toTransformString(),f=p(a)==p(this.matrix)?p(e.transform):l;"svg"!=i.type&&(i=i.parent());)s.push(u(i));for(n=s.length;n--;)c.add(s[n]);return{string:f,globalMatrix:o,totalMatrix:c,localMatrix:a,diffMatrix:o.clone().add(a.invert()),global:o.toTransformString(),total:c.toTransformString(),local:l,toString:w}}return t instanceof r.Matrix?(this.matrix=t,this._.transform=t.toTransformString()):u(this,t),this.node&&("linearGradient"==this.type||"radialGradient"==this.type?g(this.node,{gradientTransform:this.matrix}):"pattern"==this.type?g(this.node,{patternTransform:this.matrix}):g(this.node,{transform:this.matrix})),this},h.parent=function(){return x(this.node.parentNode)},h.append=h.add=function(t){if(t){if("set"==t.type){var e=this;return t.forEach(function(t){e.add(t)}),this}t=x(t),this.node.appendChild(t.node),t.paper=this.paper}return this},h.appendTo=function(t){return t&&(t=x(t),t.append(this)),this},h.prepend=function(t){if(t){if("set"==t.type){var e,n=this;return t.forEach(function(t){e?e.after(t):n.prepend(t),e=t}),this}t=x(t);var r=t.parent();this.node.insertBefore(t.node,this.node.firstChild),this.add&&this.add(),t.paper=this.paper,this.parent()&&this.parent().add(),r&&r.add()}return this},h.prependTo=function(t){return t=x(t),t.prepend(this),this},h.before=function(t){if("set"==t.type){var e=this;return t.forEach(function(t){var n=t.parent();e.node.parentNode.insertBefore(t.node,e.node),n&&n.add()}),this.parent().add(),this}t=x(t);var n=t.parent();return this.node.parentNode.insertBefore(t.node,this.node),this.parent()&&this.parent().add(),n&&n.add(),t.paper=this.paper,this},h.after=function(t){t=x(t);var e=t.parent();return this.node.nextSibling?this.node.parentNode.insertBefore(t.node,this.node.nextSibling):this.node.parentNode.appendChild(t.node),this.parent()&&this.parent().add(),e&&e.add(),t.paper=this.paper,this},h.insertBefore=function(t){t=x(t);var e=this.parent();return t.node.parentNode.insertBefore(this.node,t.node),this.paper=t.paper,e&&e.add(),t.parent()&&t.parent().add(),this},h.insertAfter=function(t){t=x(t);var e=this.parent();return t.node.parentNode.insertBefore(this.node,t.node.nextSibling),this.paper=t.paper,e&&e.add(),t.parent()&&t.parent().add(),this},h.remove=function(){var t=this.parent();return this.node.parentNode&&this.node.parentNode.removeChild(this.node),delete this.paper,this.removed=!0,t&&t.add(),this},h.select=function(t){return t=p(t).replace(/([^\\]):/g,"$1\\:"),x(this.node.querySelector(t))},h.selectAll=function(t){for(var e=this.node.querySelectorAll(t),n=(r.set||Array)(),i=0;i<e.length;i++)n.push(x(e[i]));return n},h.asPX=function(t,e){return null==e&&(e=this.attr(t)),+v(this,t,e)},h.use=function(){var t,e=this.node.id;return e||(e=this.id,g(this.node,{id:e})),t="linearGradient"==this.type||"radialGradient"==this.type||"pattern"==this.type?m(this.type,this.node.parentNode):m("use",this.node.parentNode),g(t.node,{"xlink:href":"#"+e}),t.original=this,t},h.clone=function(){var t=x(this.node.cloneNode(!0));return g(t.node,"id")&&g(t.node,{id:t.id}),c(t),t.insertAfter(this),t},h.toDefs=function(){var t=y(this);return t.appendChild(this.node),this},h.pattern=h.toPattern=function(t,e,n,r){var i=m("pattern",y(this));return null==t&&(t=this.getBBox()),d(t,"object")&&"x"in t&&(e=t.y,n=t.width,r=t.height,t=t.x),g(i.node,{x:t,y:e,width:n,height:r,patternUnits:"userSpaceOnUse",id:i.id,viewBox:[t,e,n,r].join(" ")}),i.node.appendChild(this.node),i},h.marker=function(t,e,n,r,i,o){var a=m("marker",y(this));return null==t&&(t=this.getBBox()),d(t,"object")&&"x"in t&&(e=t.y,n=t.width,r=t.height,i=t.refX||t.cx,o=t.refY||t.cy,t=t.x),g(a.node,{viewBox:[t,e,n,r].join(" "),markerWidth:n,markerHeight:r,orient:"auto",refX:i||0,refY:o||0,id:a.id}),a.node.appendChild(this.node),a};var _=function(t,e,r,i){"function"!=typeof r||r.length||(i=r,r=n.linear),this.attr=t,this.dur=e,r&&(this.easing=r),i&&(this.callback=i)};r._.Animation=_,r.animation=function(t,e,n,r){return new _(t,e,n,r)},h.inAnim=function(){
-var t=this,e=[];for(var n in t.anims)t.anims[b](n)&&!function(t){e.push({anim:new _(t._attrs,t.dur,t.easing,t._callback),mina:t,curStatus:t.status(),status:function(e){return t.status(e)},stop:function(){t.stop()}})}(t.anims[n]);return e},r.animate=function(t,r,i,o,a,s){"function"!=typeof a||a.length||(s=a,a=n.linear);var u=n.time(),c=n(t,r,u,u+o,n.time,i,a);return s&&e.once("mina.finish."+c.id,s),c},h.stop=function(){for(var t=this.inAnim(),e=0,n=t.length;e<n;e++)t[e].stop();return this},h.animate=function(t,r,i,o){"function"!=typeof i||i.length||(o=i,i=n.linear),t instanceof _&&(o=t.callback,i=t.easing,r=i.dur,t=t.attr);var a,s,u,c,f=[],h=[],v={},g=this;for(var m in t)if(t[b](m)){g.equal?(c=g.equal(m,p(t[m])),a=c.from,s=c.to,u=c.f):(a=+g.attr(m),s=+t[m]);var y=d(a,"array")?a.length:1;v[m]=l(f.length,f.length+y,u),f=f.concat(a),h=h.concat(s)}var x=n.time(),w=n(f,h,x,x+r,n.time,function(t){var e={};for(var n in v)v[b](n)&&(e[n]=v[n](t));g.attr(e)},i);return g.anims[w.id]=w,w._attrs=t,w._callback=o,e("snap.animcreated."+g.id,w),e.once("mina.finish."+w.id,function(){delete g.anims[w.id],o&&o.call(g)}),e.once("mina.stop."+w.id,function(){delete g.anims[w.id]}),g};var C={};h.data=function(t,n){var i=C[this.id]=C[this.id]||{};if(0==arguments.length)return e("snap.data.get."+this.id,this,i,null),i;if(1==arguments.length){if(r.is(t,"object")){for(var o in t)t[b](o)&&this.data(o,t[o]);return this}return e("snap.data.get."+this.id,this,i[t],t),i[t]}return i[t]=n,e("snap.data.set."+this.id,this,n,t),this},h.removeData=function(t){return null==t?C[this.id]={}:C[this.id]&&delete C[this.id][t],this},h.outerSVG=h.toString=f(1),h.innerSVG=f(),h.toDataURL=function(){if(t&&t.btoa){var e=this.getBBox(),n=r.format('<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="{width}" height="{height}" viewBox="{x} {y} {width} {height}">{contents}</svg>',{x:+e.x.toFixed(3),y:+e.y.toFixed(3),width:+e.width.toFixed(3),height:+e.height.toFixed(3),contents:this.outerSVG()});return"data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent(n)))}},s.prototype.select=h.select,s.prototype.selectAll=h.selectAll}),r.plugin(function(t,e,n,r,i){function o(t,e,n,r,i,o){return null==e&&"[object SVGMatrix]"==a.call(t)?(this.a=t.a,this.b=t.b,this.c=t.c,this.d=t.d,this.e=t.e,void(this.f=t.f)):void(null!=t?(this.a=+t,this.b=+e,this.c=+n,this.d=+r,this.e=+i,this.f=+o):(this.a=1,this.b=0,this.c=0,this.d=1,this.e=0,this.f=0))}var a=Object.prototype.toString,s=String,u=Math,c="";!function(e){function n(t){return t[0]*t[0]+t[1]*t[1]}function r(t){var e=u.sqrt(n(t));t[0]&&(t[0]/=e),t[1]&&(t[1]/=e)}e.add=function(t,e,n,r,i,a){var s,u,c,l,f=[[],[],[]],h=[[this.a,this.c,this.e],[this.b,this.d,this.f],[0,0,1]],d=[[t,n,i],[e,r,a],[0,0,1]];for(t&&t instanceof o&&(d=[[t.a,t.c,t.e],[t.b,t.d,t.f],[0,0,1]]),s=0;s<3;s++)for(u=0;u<3;u++){for(l=0,c=0;c<3;c++)l+=h[s][c]*d[c][u];f[s][u]=l}return this.a=f[0][0],this.b=f[1][0],this.c=f[0][1],this.d=f[1][1],this.e=f[0][2],this.f=f[1][2],this},e.invert=function(){var t=this,e=t.a*t.d-t.b*t.c;return new o(t.d/e,-t.b/e,-t.c/e,t.a/e,(t.c*t.f-t.d*t.e)/e,(t.b*t.e-t.a*t.f)/e)},e.clone=function(){return new o(this.a,this.b,this.c,this.d,this.e,this.f)},e.translate=function(t,e){return this.add(1,0,0,1,t,e)},e.scale=function(t,e,n,r){return null==e&&(e=t),(n||r)&&this.add(1,0,0,1,n,r),this.add(t,0,0,e,0,0),(n||r)&&this.add(1,0,0,1,-n,-r),this},e.rotate=function(e,n,r){e=t.rad(e),n=n||0,r=r||0;var i=+u.cos(e).toFixed(9),o=+u.sin(e).toFixed(9);return this.add(i,o,-o,i,n,r),this.add(1,0,0,1,-n,-r)},e.x=function(t,e){return t*this.a+e*this.c+this.e},e.y=function(t,e){return t*this.b+e*this.d+this.f},e.get=function(t){return+this[s.fromCharCode(97+t)].toFixed(4)},e.toString=function(){return"matrix("+[this.get(0),this.get(1),this.get(2),this.get(3),this.get(4),this.get(5)].join()+")"},e.offset=function(){return[this.e.toFixed(4),this.f.toFixed(4)]},e.determinant=function(){return this.a*this.d-this.b*this.c},e.split=function(){var e={};e.dx=this.e,e.dy=this.f;var i=[[this.a,this.c],[this.b,this.d]];e.scalex=u.sqrt(n(i[0])),r(i[0]),e.shear=i[0][0]*i[1][0]+i[0][1]*i[1][1],i[1]=[i[1][0]-i[0][0]*e.shear,i[1][1]-i[0][1]*e.shear],e.scaley=u.sqrt(n(i[1])),r(i[1]),e.shear/=e.scaley,this.determinant()<0&&(e.scalex=-e.scalex);var o=-i[0][1],a=i[1][1];return a<0?(e.rotate=t.deg(u.acos(a)),o<0&&(e.rotate=360-e.rotate)):e.rotate=t.deg(u.asin(o)),e.isSimple=!(+e.shear.toFixed(9)||e.scalex.toFixed(9)!=e.scaley.toFixed(9)&&e.rotate),e.isSuperSimple=!+e.shear.toFixed(9)&&e.scalex.toFixed(9)==e.scaley.toFixed(9)&&!e.rotate,e.noRotation=!+e.shear.toFixed(9)&&!e.rotate,e},e.toTransformString=function(t){var e=t||this.split();return+e.shear.toFixed(9)?"m"+[this.get(0),this.get(1),this.get(2),this.get(3),this.get(4),this.get(5)]:(e.scalex=+e.scalex.toFixed(4),e.scaley=+e.scaley.toFixed(4),e.rotate=+e.rotate.toFixed(4),(e.dx||e.dy?"t"+[+e.dx.toFixed(4),+e.dy.toFixed(4)]:c)+(1!=e.scalex||1!=e.scaley?"s"+[e.scalex,e.scaley,0,0]:c)+(e.rotate?"r"+[+e.rotate.toFixed(4),0,0]:c))}}(o.prototype),t.Matrix=o,t.matrix=function(t,e,n,r,i,a){return new o(t,e,n,r,i,a)}}),r.plugin(function(t,n,r,i,o){function a(r){return function(i){if(e.stop(),i instanceof o&&1==i.node.childNodes.length&&("radialGradient"==i.node.firstChild.tagName||"linearGradient"==i.node.firstChild.tagName||"pattern"==i.node.firstChild.tagName)&&(i=i.node.firstChild,d(this).appendChild(i),i=f(i)),i instanceof n)if("radialGradient"==i.type||"linearGradient"==i.type||"pattern"==i.type){i.node.id||v(i.node,{id:i.id});var a=g(i.node.id)}else a=i.attr(r);else if(a=t.color(i),a.error){var s=t(d(this).ownerSVGElement).gradient(i);s?(s.node.id||v(s.node,{id:s.id}),a=g(s.node.id)):a=i}else a=m(a);var u={};u[r]=a,v(this.node,u),this.node.style[r]=b}}function s(t){e.stop(),t==+t&&(t+="px"),this.node.style.fontSize=t}function u(t){for(var e=[],n=t.childNodes,r=0,i=n.length;r<i;r++){var o=n[r];3==o.nodeType&&e.push(o.nodeValue),"tspan"==o.tagName&&(1==o.childNodes.length&&3==o.firstChild.nodeType?e.push(o.firstChild.nodeValue):e.push(u(o)))}return e}function c(){return e.stop(),this.node.style.fontSize}var l=t._.make,f=t._.wrap,h=t.is,d=t._.getSomeDefs,p=/^url\(#?([^)]+)\)$/,v=t._.$,g=t.url,m=String,y=t._.separator,b="";e.on("snap.util.attr.mask",function(t){if(t instanceof n||t instanceof o){if(e.stop(),t instanceof o&&1==t.node.childNodes.length&&(t=t.node.firstChild,d(this).appendChild(t),t=f(t)),"mask"==t.type)var r=t;else r=l("mask",d(this)),r.node.appendChild(t.node);!r.node.id&&v(r.node,{id:r.id}),v(this.node,{mask:g(r.id)})}}),function(t){e.on("snap.util.attr.clip",t),e.on("snap.util.attr.clip-path",t),e.on("snap.util.attr.clipPath",t)}(function(t){if(t instanceof n||t instanceof o){if(e.stop(),"clipPath"==t.type)var r=t;else r=l("clipPath",d(this)),r.node.appendChild(t.node),!r.node.id&&v(r.node,{id:r.id});v(this.node,{"clip-path":g(r.node.id||r.id)})}}),e.on("snap.util.attr.fill",a("fill")),e.on("snap.util.attr.stroke",a("stroke"));var x=/^([lr])(?:\(([^)]*)\))?(.*)$/i;e.on("snap.util.grad.parse",function(t){t=m(t);var e=t.match(x);if(!e)return null;var n=e[1],r=e[2],i=e[3];return r=r.split(/\s*,\s*/).map(function(t){return+t==t?+t:t}),1==r.length&&0==r[0]&&(r=[]),i=i.split("-"),i=i.map(function(t){t=t.split(":");var e={color:t[0]};return t[1]&&(e.offset=parseFloat(t[1])),e}),{type:n,params:r,stops:i}}),e.on("snap.util.attr.d",function(n){e.stop(),h(n,"array")&&h(n[0],"array")&&(n=t.path.toString.call(n)),n=m(n),n.match(/[ruo]/i)&&(n=t.path.toAbsolute(n)),v(this.node,{d:n})})(-1),e.on("snap.util.attr.#text",function(t){e.stop(),t=m(t);for(var n=i.doc.createTextNode(t);this.node.firstChild;)this.node.removeChild(this.node.firstChild);this.node.appendChild(n)})(-1),e.on("snap.util.attr.path",function(t){e.stop(),this.attr({d:t})})(-1),e.on("snap.util.attr.class",function(t){e.stop(),this.node.className.baseVal=t})(-1),e.on("snap.util.attr.viewBox",function(t){var n;n=h(t,"object")&&"x"in t?[t.x,t.y,t.width,t.height].join(" "):h(t,"array")?t.join(" "):t,v(this.node,{viewBox:n}),e.stop()})(-1),e.on("snap.util.attr.transform",function(t){this.transform(t),e.stop()})(-1),e.on("snap.util.attr.r",function(t){"rect"==this.type&&(e.stop(),v(this.node,{rx:t,ry:t}))})(-1),e.on("snap.util.attr.textpath",function(t){if(e.stop(),"text"==this.type){var r,i,o;if(!t&&this.textPath){for(i=this.textPath;i.node.firstChild;)this.node.appendChild(i.node.firstChild);return i.remove(),void delete this.textPath}if(h(t,"string")){var a=d(this),s=f(a.parentNode).path(t);a.appendChild(s.node),r=s.id,s.attr({id:r})}else t=f(t),t instanceof n&&(r=t.attr("id"),r||(r=t.id,t.attr({id:r})));if(r)if(i=this.textPath,o=this.node,i)i.attr({"xlink:href":"#"+r});else{for(i=v("textPath",{"xlink:href":"#"+r});o.firstChild;)i.appendChild(o.firstChild);o.appendChild(i),this.textPath=f(i)}}})(-1),e.on("snap.util.attr.text",function(t){if("text"==this.type){for(var n=this.node,r=function a(t){var e=v("tspan");if(h(t,"array"))for(var n=0;n<t.length;n++)e.appendChild(a(t[n]));else e.appendChild(i.doc.createTextNode(t));return e.normalize&&e.normalize(),e};n.firstChild;)n.removeChild(n.firstChild);for(var o=r(t);o.firstChild;)n.appendChild(o.firstChild)}e.stop()})(-1),e.on("snap.util.attr.fontSize",s)(-1),e.on("snap.util.attr.font-size",s)(-1),e.on("snap.util.getattr.transform",function(){return e.stop(),this.transform()})(-1),e.on("snap.util.getattr.textpath",function(){return e.stop(),this.textPath})(-1),function(){function n(n){return function(){e.stop();var r=i.doc.defaultView.getComputedStyle(this.node,null).getPropertyValue("marker-"+n);return"none"==r?r:t(i.doc.getElementById(r.match(p)[1]))}}function r(t){return function(n){e.stop();var r="marker"+t.charAt(0).toUpperCase()+t.substring(1);if(""==n||!n)return void(this.node.style[r]="none");if("marker"==n.type){var i=n.node.id;return i||v(n.node,{id:n.id}),void(this.node.style[r]=g(i))}}}e.on("snap.util.getattr.marker-end",n("end"))(-1),e.on("snap.util.getattr.markerEnd",n("end"))(-1),e.on("snap.util.getattr.marker-start",n("start"))(-1),e.on("snap.util.getattr.markerStart",n("start"))(-1),e.on("snap.util.getattr.marker-mid",n("mid"))(-1),e.on("snap.util.getattr.markerMid",n("mid"))(-1),e.on("snap.util.attr.marker-end",r("end"))(-1),e.on("snap.util.attr.markerEnd",r("end"))(-1),e.on("snap.util.attr.marker-start",r("start"))(-1),e.on("snap.util.attr.markerStart",r("start"))(-1),e.on("snap.util.attr.marker-mid",r("mid"))(-1),e.on("snap.util.attr.markerMid",r("mid"))(-1)}(),e.on("snap.util.getattr.r",function(){if("rect"==this.type&&v(this.node,"rx")==v(this.node,"ry"))return e.stop(),v(this.node,"rx")})(-1),e.on("snap.util.getattr.text",function(){if("text"==this.type||"tspan"==this.type){e.stop();var t=u(this.node);return 1==t.length?t[0]:t}})(-1),e.on("snap.util.getattr.#text",function(){return this.node.textContent})(-1),e.on("snap.util.getattr.viewBox",function(){e.stop();var n=v(this.node,"viewBox");return n?(n=n.split(y),t._.box(+n[0],+n[1],+n[2],+n[3])):void 0})(-1),e.on("snap.util.getattr.points",function(){var t=v(this.node,"points");return e.stop(),t?t.split(y):void 0})(-1),e.on("snap.util.getattr.path",function(){var t=v(this.node,"d");return e.stop(),t})(-1),e.on("snap.util.getattr.class",function(){return this.node.className.baseVal})(-1),e.on("snap.util.getattr.fontSize",c)(-1),e.on("snap.util.getattr.font-size",c)(-1)}),r.plugin(function(t,e,n,r,i){var o=/\S+/g,a=String,s=e.prototype;s.addClass=function(t){var e,n,r,i,s=a(t||"").match(o)||[],u=this.node,c=u.className.baseVal,l=c.match(o)||[];if(s.length){for(e=0;r=s[e++];)n=l.indexOf(r),~n||l.push(r);i=l.join(" "),c!=i&&(u.className.baseVal=i)}return this},s.removeClass=function(t){var e,n,r,i,s=a(t||"").match(o)||[],u=this.node,c=u.className.baseVal,l=c.match(o)||[];if(l.length){for(e=0;r=s[e++];)n=l.indexOf(r),~n&&l.splice(n,1);i=l.join(" "),c!=i&&(u.className.baseVal=i)}return this},s.hasClass=function(t){var e=this.node,n=e.className.baseVal,r=n.match(o)||[];return!!~r.indexOf(t)},s.toggleClass=function(t,e){if(null!=e)return e?this.addClass(t):this.removeClass(t);var n,r,i,a,s=(t||"").match(o)||[],u=this.node,c=u.className.baseVal,l=c.match(o)||[];for(n=0;i=s[n++];)r=l.indexOf(i),~r?l.splice(r,1):l.push(i);return a=l.join(" "),c!=a&&(u.className.baseVal=a),this}}),r.plugin(function(t,n,r,i,o){function a(t){return t}function s(t){return function(e){return+e.toFixed(3)+t}}var u={"+":function(t,e){return t+e},"-":function(t,e){return t-e},"/":function(t,e){return t/e},"*":function(t,e){return t*e}},c=String,l=/[a-z]+$/i,f=/^\s*([+\-\/*])\s*=\s*([\d.eE+\-]+)\s*([^\d\s]+)?\s*$/;e.on("snap.util.attr",function(t){var n=c(t).match(f);if(n){var r=e.nt(),i=r.substring(r.lastIndexOf(".")+1),o=this.attr(i),a={};e.stop();var s=n[3]||"",h=o.match(l),d=u[n[1]];if(h&&h==s?t=d(parseFloat(o),+n[2]):(o=this.asPX(i),t=d(this.asPX(i),this.asPX(i,n[2]+s))),isNaN(o)||isNaN(t))return;a[i]=t,this.attr(a)}})(-10),e.on("snap.util.equal",function(t,n){var r=c(this.attr(t)||""),i=c(n).match(f);if(i){e.stop();var o=i[3]||"",h=r.match(l),d=u[i[1]];return h&&h==o?{from:parseFloat(r),to:d(parseFloat(r),+i[2]),f:s(h)}:(r=this.asPX(t),{from:r,to:d(r,this.asPX(t,i[2]+o)),f:a})}})(-10)}),r.plugin(function(n,r,i,o,a){var s=i.prototype,u=n.is;s.rect=function(t,e,n,r,i,o){var a;return null==o&&(o=i),u(t,"object")&&"[object Object]"==t?a=t:null!=t&&(a={x:t,y:e,width:n,height:r},null!=i&&(a.rx=i,a.ry=o)),this.el("rect",a)},s.circle=function(t,e,n){var r;return u(t,"object")&&"[object Object]"==t?r=t:null!=t&&(r={cx:t,cy:e,r:n}),this.el("circle",r)};var c=function(){function t(){this.parentNode.removeChild(this)}return function(e,n){var r=o.doc.createElement("img"),i=o.doc.body;r.style.cssText="position:absolute;left:-9999em;top:-9999em",r.onload=function(){n.call(r),r.onload=r.onerror=null,i.removeChild(r)},r.onerror=t,i.appendChild(r),r.src=e}}();s.image=function(t,e,r,i,o){var a=this.el("image");if(u(t,"object")&&"src"in t)a.attr(t);else if(null!=t){var s={"xlink:href":t,preserveAspectRatio:"none"};null!=e&&null!=r&&(s.x=e,s.y=r),null!=i&&null!=o?(s.width=i,s.height=o):c(t,function(){n._.$(a.node,{width:this.offsetWidth,height:this.offsetHeight})}),n._.$(a.node,s)}return a},s.ellipse=function(t,e,n,r){var i;return u(t,"object")&&"[object Object]"==t?i=t:null!=t&&(i={cx:t,cy:e,rx:n,ry:r}),this.el("ellipse",i)},s.path=function(t){var e;return u(t,"object")&&!u(t,"array")?e=t:t&&(e={d:t}),this.el("path",e)},s.group=s.g=function(t){var e=this.el("g");return 1==arguments.length&&t&&!t.type?e.attr(t):arguments.length&&e.add(Array.prototype.slice.call(arguments,0)),e},s.svg=function(t,e,n,r,i,o,a,s){var c={};return u(t,"object")&&null==e?c=t:(null!=t&&(c.x=t),null!=e&&(c.y=e),null!=n&&(c.width=n),null!=r&&(c.height=r),null!=i&&null!=o&&null!=a&&null!=s&&(c.viewBox=[i,o,a,s])),this.el("svg",c)},s.mask=function(t){var e=this.el("mask");return 1==arguments.length&&t&&!t.type?e.attr(t):arguments.length&&e.add(Array.prototype.slice.call(arguments,0)),e},s.ptrn=function(t,e,n,r,i,o,a,s){if(u(t,"object"))var c=t;else c={patternUnits:"userSpaceOnUse"},t&&(c.x=t),e&&(c.y=e),null!=n&&(c.width=n),null!=r&&(c.height=r),null!=i&&null!=o&&null!=a&&null!=s?c.viewBox=[i,o,a,s]:c.viewBox=[t||0,e||0,n||0,r||0];return this.el("pattern",c)},s.use=function(t){return null!=t?(t instanceof r&&(t.attr("id")||t.attr({id:n._.id(t)}),t=t.attr("id")),"#"==String(t).charAt()&&(t=t.substring(1)),this.el("use",{"xlink:href":"#"+t})):r.prototype.use.call(this)},s.symbol=function(t,e,n,r){var i={};return null!=t&&null!=e&&null!=n&&null!=r&&(i.viewBox=[t,e,n,r]),this.el("symbol",i)},s.text=function(t,e,n){var r={};return u(t,"object")?r=t:null!=t&&(r={x:t,y:e,text:n||""}),this.el("text",r)},s.line=function(t,e,n,r){var i={};return u(t,"object")?i=t:null!=t&&(i={x1:t,x2:n,y1:e,y2:r}),this.el("line",i)},s.polyline=function(t){arguments.length>1&&(t=Array.prototype.slice.call(arguments,0));var e={};return u(t,"object")&&!u(t,"array")?e=t:null!=t&&(e={points:t}),this.el("polyline",e)},s.polygon=function(t){arguments.length>1&&(t=Array.prototype.slice.call(arguments,0));var e={};return u(t,"object")&&!u(t,"array")?e=t:null!=t&&(e={points:t}),this.el("polygon",e)},function(){function r(){return this.selectAll("stop")}function i(t,e){var r=l("stop"),i={offset:+e+"%"};return t=n.color(t),i["stop-color"]=t.hex,t.opacity<1&&(i["stop-opacity"]=t.opacity),l(r,i),this.node.appendChild(r),this}function o(){if("linearGradient"==this.type){var t=l(this.node,"x1")||0,e=l(this.node,"x2")||1,r=l(this.node,"y1")||0,i=l(this.node,"y2")||0;return n._.box(t,r,math.abs(e-t),math.abs(i-r))}var o=this.node.cx||.5,a=this.node.cy||.5,s=this.node.r||0;return n._.box(o-s,a-s,2*s,2*s)}function a(t,n){function r(t,e){for(var n=(e-f)/(t-h),r=h;r<t;r++)a[r].offset=+(+f+n*(r-h)).toFixed(2);h=t,f=e}var i,o=e("snap.util.grad.parse",null,n).firstDefined();if(!o)return null;o.params.unshift(t),i="l"==o.type.toLowerCase()?u.apply(0,o.params):c.apply(0,o.params),o.type!=o.type.toLowerCase()&&l(i.node,{gradientUnits:"userSpaceOnUse"});var a=o.stops,s=a.length,f=0,h=0;s--;for(var d=0;d<s;d++)"offset"in a[d]&&r(d,a[d].offset);for(a[s].offset=a[s].offset||100,r(s,a[s].offset),d=0;d<=s;d++){var p=a[d];i.addStop(p.color,p.offset)}return i}function u(t,e,a,s,u){var c=n._.make("linearGradient",t);return c.stops=r,c.addStop=i,c.getBBox=o,null!=e&&l(c.node,{x1:e,y1:a,x2:s,y2:u}),c}function c(t,e,a,s,u,c){var f=n._.make("radialGradient",t);return f.stops=r,f.addStop=i,f.getBBox=o,null!=e&&l(f.node,{cx:e,cy:a,r:s}),null!=u&&null!=c&&l(f.node,{fx:u,fy:c}),f}var l=n._.$;s.gradient=function(t){return a(this.defs,t)},s.gradientLinear=function(t,e,n,r){return u(this.defs,t,e,n,r)},s.gradientRadial=function(t,e,n,r,i){return c(this.defs,t,e,n,r,i)},s.toString=function(){var t,e=this.node.ownerDocument,r=e.createDocumentFragment(),i=e.createElement("div"),o=this.node.cloneNode(!0);return r.appendChild(i),i.appendChild(o),n._.$(o,{xmlns:"http://www.w3.org/2000/svg"}),t=i.innerHTML,r.removeChild(r.firstChild),t},s.toDataURL=function(){if(t&&t.btoa)return"data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent(this)))},s.clear=function(){for(var t,e=this.node.firstChild;e;)t=e.nextSibling,"defs"!=e.tagName?e.parentNode.removeChild(e):s.clear.call({node:e}),e=t}}()}),r.plugin(function(t,e,n,r){function i(t){var e=i.ps=i.ps||{};return e[t]?e[t].sleep=100:e[t]={sleep:100},setTimeout(function(){for(var n in e)e[L](n)&&n!=t&&(e[n].sleep--,!e[n].sleep&&delete e[n])}),e[t]}function o(t,e,n,r){return null==t&&(t=e=n=r=0),null==e&&(e=t.y,n=t.width,r=t.height,t=t.x),{x:t,y:e,width:n,w:n,height:r,h:r,x2:t+n,y2:e+r,cx:t+n/2,cy:e+r/2,r1:H.min(n,r)/2,r2:H.max(n,r)/2,r0:H.sqrt(n*n+r*r)/2,path:k(t,e,n,r),vb:[t,e,n,r].join(" ")}}function a(){return this.join(",").replace(R,"$1")}function s(t){var e=B(t);return e.toString=a,e}function u(t,e,n,r,i,o,a,s,u){return null==u?v(t,e,n,r,i,o,a,s):l(t,e,n,r,i,o,a,s,g(t,e,n,r,i,o,a,s,u))}function c(n,r){function i(t){return+(+t).toFixed(3)}return t._.cacher(function(t,o,a){t instanceof e&&(t=t.attr("d")),t=N(t);for(var s,c,f,h,d,p="",v={},g=0,m=0,y=t.length;m<y;m++){if(f=t[m],"M"==f[0])s=+f[1],c=+f[2];else{if(h=u(s,c,f[1],f[2],f[3],f[4],f[5],f[6]),g+h>o){if(r&&!v.start){if(d=u(s,c,f[1],f[2],f[3],f[4],f[5],f[6],o-g),p+=["C"+i(d.start.x),i(d.start.y),i(d.m.x),i(d.m.y),i(d.x),i(d.y)],a)return p;v.start=p,p=["M"+i(d.x),i(d.y)+"C"+i(d.n.x),i(d.n.y),i(d.end.x),i(d.end.y),i(f[5]),i(f[6])].join(),g+=h,s=+f[5],c=+f[6];continue}if(!n&&!r)return d=u(s,c,f[1],f[2],f[3],f[4],f[5],f[6],o-g)}g+=h,s=+f[5],c=+f[6]}p+=f.shift()+f}return v.end=p,d=n?g:r?v:l(s,c,f[0],f[1],f[2],f[3],f[4],f[5],1)},null,t._.clone)}function l(t,e,n,r,i,o,a,s,u){var c=1-u,l=U(c,3),f=U(c,2),h=u*u,d=h*u,p=l*t+3*f*u*n+3*c*u*u*i+d*a,v=l*e+3*f*u*r+3*c*u*u*o+d*s,g=t+2*u*(n-t)+h*(i-2*n+t),m=e+2*u*(r-e)+h*(o-2*r+e),y=n+2*u*(i-n)+h*(a-2*i+n),b=r+2*u*(o-r)+h*(s-2*o+r),x=c*t+u*n,w=c*e+u*r,_=c*i+u*a,C=c*o+u*s,k=90-180*H.atan2(g-y,m-b)/q;return{x:p,y:v,m:{x:g,y:m},n:{x:y,y:b},start:{x:x,y:w},end:{x:_,y:C},alpha:k}}function f(e,n,r,i,a,s,u,c){t.is(e,"array")||(e=[e,n,r,i,a,s,u,c]);var l=O.apply(null,e);return o(l.min.x,l.min.y,l.max.x-l.min.x,l.max.y-l.min.y)}function h(t,e,n){return e>=t.x&&e<=t.x+t.width&&n>=t.y&&n<=t.y+t.height}function d(t,e){return t=o(t),e=o(e),h(e,t.x,t.y)||h(e,t.x2,t.y)||h(e,t.x,t.y2)||h(e,t.x2,t.y2)||h(t,e.x,e.y)||h(t,e.x2,e.y)||h(t,e.x,e.y2)||h(t,e.x2,e.y2)||(t.x<e.x2&&t.x>e.x||e.x<t.x2&&e.x>t.x)&&(t.y<e.y2&&t.y>e.y||e.y<t.y2&&e.y>t.y)}function p(t,e,n,r,i){var o=-3*e+9*n-9*r+3*i,a=t*o+6*e-12*n+6*r;return t*a-3*e+3*n}function v(t,e,n,r,i,o,a,s,u){null==u&&(u=1),u=u>1?1:u<0?0:u;for(var c=u/2,l=12,f=[-.1252,.1252,-.3678,.3678,-.5873,.5873,-.7699,.7699,-.9041,.9041,-.9816,.9816],h=[.2491,.2491,.2335,.2335,.2032,.2032,.1601,.1601,.1069,.1069,.0472,.0472],d=0,v=0;v<l;v++){var g=c*f[v]+c,m=p(g,t,n,i,a),y=p(g,e,r,o,s),b=m*m+y*y;d+=h[v]*H.sqrt(b)}return c*d}function g(t,e,n,r,i,o,a,s,u){if(!(u<0||v(t,e,n,r,i,o,a,s)<u)){var c,l=1,f=l/2,h=l-f,d=.01;for(c=v(t,e,n,r,i,o,a,s,h);W(c-u)>d;)f/=2,h+=(c<u?1:-1)*f,c=v(t,e,n,r,i,o,a,s,h);return h}}function m(t,e,n,r,i,o,a,s){if(!(V(t,n)<z(i,a)||z(t,n)>V(i,a)||V(e,r)<z(o,s)||z(e,r)>V(o,s))){var u=(t*r-e*n)*(i-a)-(t-n)*(i*s-o*a),c=(t*r-e*n)*(o-s)-(e-r)*(i*s-o*a),l=(t-n)*(o-s)-(e-r)*(i-a);if(l){var f=u/l,h=c/l,d=+f.toFixed(2),p=+h.toFixed(2);if(!(d<+z(t,n).toFixed(2)||d>+V(t,n).toFixed(2)||d<+z(i,a).toFixed(2)||d>+V(i,a).toFixed(2)||p<+z(e,r).toFixed(2)||p>+V(e,r).toFixed(2)||p<+z(o,s).toFixed(2)||p>+V(o,s).toFixed(2)))return{x:f,y:h}}}}function y(t,e,n){var r=f(t),i=f(e);if(!d(r,i))return n?0:[];for(var o=v.apply(0,t),a=v.apply(0,e),s=~~(o/8),u=~~(a/8),c=[],h=[],p={},g=n?0:[],y=0;y<s+1;y++){var b=l.apply(0,t.concat(y/s));c.push({x:b.x,y:b.y,t:y/s})}for(y=0;y<u+1;y++)b=l.apply(0,e.concat(y/u)),h.push({x:b.x,y:b.y,t:y/u});for(y=0;y<s;y++)for(var x=0;x<u;x++){var w=c[y],_=c[y+1],C=h[x],k=h[x+1],T=W(_.x-w.x)<.001?"y":"x",A=W(k.x-C.x)<.001?"y":"x",S=m(w.x,w.y,_.x,_.y,C.x,C.y,k.x,k.y);if(S){if(p[S.x.toFixed(4)]==S.y.toFixed(4))continue;p[S.x.toFixed(4)]=S.y.toFixed(4);var $=w.t+W((S[T]-w[T])/(_[T]-w[T]))*(_.t-w.t),E=C.t+W((S[A]-C[A])/(k[A]-C[A]))*(k.t-C.t);$>=0&&$<=1&&E>=0&&E<=1&&(n?g++:g.push({x:S.x,y:S.y,t1:$,t2:E}))}}return g}function b(t,e){return w(t,e)}function x(t,e){return w(t,e,1)}function w(t,e,n){t=N(t),e=N(e);for(var r,i,o,a,s,u,c,l,f,h,d=n?0:[],p=0,v=t.length;p<v;p++){var g=t[p];if("M"==g[0])r=s=g[1],i=u=g[2];else{"C"==g[0]?(f=[r,i].concat(g.slice(1)),r=f[6],i=f[7]):(f=[r,i,r,i,s,u,s,u],r=s,i=u);for(var m=0,b=e.length;m<b;m++){var x=e[m];if("M"==x[0])o=c=x[1],a=l=x[2];else{"C"==x[0]?(h=[o,a].concat(x.slice(1)),o=h[6],a=h[7]):(h=[o,a,o,a,c,l,c,l],o=c,a=l);var w=y(f,h,n);if(n)d+=w;else{for(var _=0,C=w.length;_<C;_++)w[_].segment1=p,w[_].segment2=m,w[_].bez1=f,w[_].bez2=h;d=d.concat(w)}}}}}return d}function _(t,e,n){var r=C(t);return h(r,e,n)&&w(t,[["M",e,n],["H",r.x2+10]],1)%2==1}function C(t){var e=i(t);if(e.bbox)return B(e.bbox);if(!t)return o();t=N(t);for(var n,r=0,a=0,s=[],u=[],c=0,l=t.length;c<l;c++)if(n=t[c],"M"==n[0])r=n[1],a=n[2],s.push(r),u.push(a);else{var f=O(r,a,n[1],n[2],n[3],n[4],n[5],n[6]);s=s.concat(f.min.x,f.max.x),u=u.concat(f.min.y,f.max.y),r=n[5],a=n[6]}var h=z.apply(0,s),d=z.apply(0,u),p=V.apply(0,s),v=V.apply(0,u),g=o(h,d,p-h,v-d);return e.bbox=B(g),g}function k(t,e,n,r,i){if(i)return[["M",+t+ +i,e],["l",n-2*i,0],["a",i,i,0,0,1,i,i],["l",0,r-2*i],["a",i,i,0,0,1,-i,i],["l",2*i-n,0],["a",i,i,0,0,1,-i,-i],["l",0,2*i-r],["a",i,i,0,0,1,i,-i],["z"]];var o=[["M",t,e],["l",n,0],["l",0,r],["l",-n,0],["z"]];return o.toString=a,o}function T(t,e,n,r,i){if(null==i&&null==r&&(r=n),t=+t,e=+e,n=+n,r=+r,null!=i)var o=Math.PI/180,s=t+n*Math.cos(-r*o),u=t+n*Math.cos(-i*o),c=e+n*Math.sin(-r*o),l=e+n*Math.sin(-i*o),f=[["M",s,c],["A",n,n,0,+(i-r>180),0,u,l]];else f=[["M",t,e],["m",0,-r],["a",n,r,0,1,1,0,2*r],["a",n,r,0,1,1,0,-2*r],["z"]];return f.toString=a,f}function A(e){var n=i(e),r=String.prototype.toLowerCase;if(n.rel)return s(n.rel);t.is(e,"array")&&t.is(e&&e[0],"array")||(e=t.parsePathString(e));var o=[],u=0,c=0,l=0,f=0,h=0;"M"==e[0][0]&&(u=e[0][1],c=e[0][2],l=u,f=c,h++,o.push(["M",u,c]));for(var d=h,p=e.length;d<p;d++){var v=o[d]=[],g=e[d];if(g[0]!=r.call(g[0]))switch(v[0]=r.call(g[0]),v[0]){case"a":v[1]=g[1],v[2]=g[2],v[3]=g[3],v[4]=g[4],v[5]=g[5],v[6]=+(g[6]-u).toFixed(3),v[7]=+(g[7]-c).toFixed(3);break;case"v":v[1]=+(g[1]-c).toFixed(3);break;case"m":l=g[1],f=g[2];default:for(var m=1,y=g.length;m<y;m++)v[m]=+(g[m]-(m%2?u:c)).toFixed(3)}else{v=o[d]=[],"m"==g[0]&&(l=g[1]+u,f=g[2]+c);for(var b=0,x=g.length;b<x;b++)o[d][b]=g[b]}var w=o[d].length;switch(o[d][0]){case"z":u=l,c=f;break;case"h":u+=+o[d][w-1];break;case"v":c+=+o[d][w-1];break;default:u+=+o[d][w-2],c+=+o[d][w-1]}}return o.toString=a,n.rel=s(o),o}function S(e){var n=i(e);if(n.abs)return s(n.abs);if(F(e,"array")&&F(e&&e[0],"array")||(e=t.parsePathString(e)),!e||!e.length)return[["M",0,0]];var r,o=[],u=0,c=0,l=0,f=0,h=0;"M"==e[0][0]&&(u=+e[0][1],c=+e[0][2],l=u,f=c,h++,o[0]=["M",u,c]);for(var d,p,v=3==e.length&&"M"==e[0][0]&&"R"==e[1][0].toUpperCase()&&"Z"==e[2][0].toUpperCase(),g=h,m=e.length;g<m;g++){if(o.push(d=[]),p=e[g],r=p[0],r!=r.toUpperCase())switch(d[0]=r.toUpperCase(),d[0]){case"A":d[1]=p[1],d[2]=p[2],d[3]=p[3],d[4]=p[4],d[5]=p[5],d[6]=+p[6]+u,d[7]=+p[7]+c;break;case"V":d[1]=+p[1]+c;break;case"H":d[1]=+p[1]+u;break;case"R":for(var y=[u,c].concat(p.slice(1)),b=2,x=y.length;b<x;b++)y[b]=+y[b]+u,y[++b]=+y[b]+c;o.pop(),o=o.concat(M(y,v));break;case"O":o.pop(),y=T(u,c,p[1],p[2]),y.push(y[0]),o=o.concat(y);break;case"U":o.pop(),o=o.concat(T(u,c,p[1],p[2],p[3])),d=["U"].concat(o[o.length-1].slice(-2));break;case"M":l=+p[1]+u,f=+p[2]+c;default:for(b=1,x=p.length;b<x;b++)d[b]=+p[b]+(b%2?u:c)}else if("R"==r)y=[u,c].concat(p.slice(1)),o.pop(),o=o.concat(M(y,v)),d=["R"].concat(p.slice(-2));else if("O"==r)o.pop(),y=T(u,c,p[1],p[2]),y.push(y[0]),o=o.concat(y);else if("U"==r)o.pop(),o=o.concat(T(u,c,p[1],p[2],p[3])),d=["U"].concat(o[o.length-1].slice(-2));else for(var w=0,_=p.length;w<_;w++)d[w]=p[w];if(r=r.toUpperCase(),"O"!=r)switch(d[0]){case"Z":u=+l,c=+f;break;case"H":u=d[1];break;case"V":c=d[1];break;case"M":l=d[d.length-2],f=d[d.length-1];default:u=d[d.length-2],c=d[d.length-1]}}return o.toString=a,n.abs=s(o),o}function $(t,e,n,r){return[t,e,n,r,n,r]}function E(t,e,n,r,i,o){var a=1/3,s=2/3;return[a*t+s*n,a*e+s*r,a*i+s*n,a*o+s*r,i,o]}function j(e,n,r,i,o,a,s,u,c,l){var f,h=120*q/180,d=q/180*(+o||0),p=[],v=t._.cacher(function(t,e,n){var r=t*H.cos(n)-e*H.sin(n),i=t*H.sin(n)+e*H.cos(n);return{x:r,y:i}});if(l)k=l[0],T=l[1],_=l[2],C=l[3];else{f=v(e,n,-d),e=f.x,n=f.y,f=v(u,c,-d),u=f.x,c=f.y;var g=(H.cos(q/180*o),H.sin(q/180*o),(e-u)/2),m=(n-c)/2,y=g*g/(r*r)+m*m/(i*i);y>1&&(y=H.sqrt(y),r=y*r,i=y*i);var b=r*r,x=i*i,w=(a==s?-1:1)*H.sqrt(W((b*x-b*m*m-x*g*g)/(b*m*m+x*g*g))),_=w*r*m/i+(e+u)/2,C=w*-i*g/r+(n+c)/2,k=H.asin(((n-C)/i).toFixed(9)),T=H.asin(((c-C)/i).toFixed(9));k=e<_?q-k:k,T=u<_?q-T:T,k<0&&(k=2*q+k),T<0&&(T=2*q+T),s&&k>T&&(k-=2*q),!s&&T>k&&(T-=2*q)}var A=T-k;if(W(A)>h){var S=T,$=u,E=c;T=k+h*(s&&T>k?1:-1),u=_+r*H.cos(T),c=C+i*H.sin(T),p=j(u,c,r,i,o,0,s,$,E,[T,S,_,C])}A=T-k;var O=H.cos(k),N=H.sin(k),D=H.cos(T),M=H.sin(T),P=H.tan(A/4),F=4/3*r*P,B=4/3*i*P,L=[e,n],R=[e+F*N,n-B*O],I=[u+F*M,c-B*D],z=[u,c];if(R[0]=2*L[0]-R[0],R[1]=2*L[1]-R[1],l)return[R,I,z].concat(p);p=[R,I,z].concat(p).join().split(",");for(var V=[],U=0,X=p.length;U<X;U++)V[U]=U%2?v(p[U-1],p[U],d).y:v(p[U],p[U+1],d).x;return V}function O(t,e,n,r,i,o,a,s){for(var u,c,l,f,h,d,p,v,g=[],m=[[],[]],y=0;y<2;++y)if(0==y?(c=6*t-12*n+6*i,u=-3*t+9*n-9*i+3*a,l=3*n-3*t):(c=6*e-12*r+6*o,u=-3*e+9*r-9*o+3*s,l=3*r-3*e),W(u)<1e-12){if(W(c)<1e-12)continue;f=-l/c,0<f&&f<1&&g.push(f)}else p=c*c-4*l*u,v=H.sqrt(p),p<0||(h=(-c+v)/(2*u),0<h&&h<1&&g.push(h),d=(-c-v)/(2*u),0<d&&d<1&&g.push(d));for(var b,x=g.length,w=x;x--;)f=g[x],b=1-f,m[0][x]=b*b*b*t+3*b*b*f*n+3*b*f*f*i+f*f*f*a,m[1][x]=b*b*b*e+3*b*b*f*r+3*b*f*f*o+f*f*f*s;return m[0][w]=t,m[1][w]=e,m[0][w+1]=a,m[1][w+1]=s,m[0].length=m[1].length=w+2,{min:{x:z.apply(0,m[0]),y:z.apply(0,m[1])},max:{x:V.apply(0,m[0]),y:V.apply(0,m[1])}}}function N(t,e){var n=!e&&i(t);if(!e&&n.curve)return s(n.curve);for(var r=S(t),o=e&&S(e),a={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},u={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},c=(function(t,e,n){var r,i;if(!t)return["C",e.x,e.y,e.x,e.y,e.x,e.y];switch(!(t[0]in{T:1,Q:1})&&(e.qx=e.qy=null),t[0]){case"M":e.X=t[1],e.Y=t[2];break;case"A":t=["C"].concat(j.apply(0,[e.x,e.y].concat(t.slice(1))));break;case"S":"C"==n||"S"==n?(r=2*e.x-e.bx,i=2*e.y-e.by):(r=e.x,i=e.y),t=["C",r,i].concat(t.slice(1));break;case"T":"Q"==n||"T"==n?(e.qx=2*e.x-e.qx,e.qy=2*e.y-e.qy):(e.qx=e.x,e.qy=e.y),t=["C"].concat(E(e.x,e.y,e.qx,e.qy,t[1],t[2]));break;case"Q":e.qx=t[1],e.qy=t[2],t=["C"].concat(E(e.x,e.y,t[1],t[2],t[3],t[4]));break;case"L":t=["C"].concat($(e.x,e.y,t[1],t[2]));break;case"H":t=["C"].concat($(e.x,e.y,t[1],e.y));break;case"V":t=["C"].concat($(e.x,e.y,e.x,t[1]));break;case"Z":t=["C"].concat($(e.x,e.y,e.X,e.Y))}return t}),l=function(t,e){if(t[e].length>7){t[e].shift();for(var n=t[e];n.length;)h[e]="A",o&&(d[e]="A"),t.splice(e++,0,["C"].concat(n.splice(0,6)));t.splice(e,1),m=V(r.length,o&&o.length||0)}},f=function(t,e,n,i,a){t&&e&&"M"==t[a][0]&&"M"!=e[a][0]&&(e.splice(a,0,["M",i.x,i.y]),n.bx=0,n.by=0,n.x=t[a][1],n.y=t[a][2],m=V(r.length,o&&o.length||0))},h=[],d=[],p="",v="",g=0,m=V(r.length,o&&o.length||0);g<m;g++){r[g]&&(p=r[g][0]),"C"!=p&&(h[g]=p,g&&(v=h[g-1])),r[g]=c(r[g],a,v),"A"!=h[g]&&"C"==p&&(h[g]="C"),l(r,g),o&&(o[g]&&(p=o[g][0]),"C"!=p&&(d[g]=p,g&&(v=d[g-1])),o[g]=c(o[g],u,v),"A"!=d[g]&&"C"==p&&(d[g]="C"),l(o,g)),f(r,o,a,u,g),f(o,r,u,a,g);var y=r[g],b=o&&o[g],x=y.length,w=o&&b.length;a.x=y[x-2],a.y=y[x-1],a.bx=I(y[x-4])||a.x,a.by=I(y[x-3])||a.y,u.bx=o&&(I(b[w-4])||u.x),u.by=o&&(I(b[w-3])||u.y),u.x=o&&b[w-2],u.y=o&&b[w-1]}return o||(n.curve=s(r)),o?[r,o]:r}function D(t,e){if(!e)return t;var n,r,i,o,a,s,u;for(t=N(t),i=0,a=t.length;i<a;i++)for(u=t[i],o=1,s=u.length;o<s;o+=2)n=e.x(u[o],u[o+1]),r=e.y(u[o],u[o+1]),u[o]=n,u[o+1]=r;return t}function M(t,e){for(var n=[],r=0,i=t.length;i-2*!e>r;r+=2){var o=[{x:+t[r-2],y:+t[r-1]},{x:+t[r],y:+t[r+1]},{x:+t[r+2],y:+t[r+3]},{x:+t[r+4],y:+t[r+5]}];e?r?i-4==r?o[3]={x:+t[0],y:+t[1]}:i-2==r&&(o[2]={x:+t[0],y:+t[1]},o[3]={x:+t[2],y:+t[3]}):o[0]={x:+t[i-2],y:+t[i-1]}:i-4==r?o[3]=o[2]:r||(o[0]={x:+t[r],y:+t[r+1]}),n.push(["C",(-o[0].x+6*o[1].x+o[2].x)/6,(-o[0].y+6*o[1].y+o[2].y)/6,(o[1].x+6*o[2].x-o[3].x)/6,(o[1].y+6*o[2].y-o[3].y)/6,o[2].x,o[2].y])}return n}var P=e.prototype,F=t.is,B=t._.clone,L="hasOwnProperty",R=/,?([a-z]),?/gi,I=parseFloat,H=Math,q=H.PI,z=H.min,V=H.max,U=H.pow,W=H.abs,X=c(1),G=c(),Z=c(0,1),J=t._unit2px,Y={path:function(t){return t.attr("path")},circle:function(t){var e=J(t);return T(e.cx,e.cy,e.r)},ellipse:function(t){var e=J(t);return T(e.cx||0,e.cy||0,e.rx,e.ry)},rect:function(t){var e=J(t);return k(e.x||0,e.y||0,e.width,e.height,e.rx,e.ry)},image:function(t){var e=J(t);return k(e.x||0,e.y||0,e.width,e.height)},line:function(t){return"M"+[t.attr("x1")||0,t.attr("y1")||0,t.attr("x2"),t.attr("y2")]},polyline:function(t){return"M"+t.attr("points")},polygon:function(t){return"M"+t.attr("points")+"z"},deflt:function(t){var e=t.node.getBBox();return k(e.x,e.y,e.width,e.height)}};t.path=i,t.path.getTotalLength=X,t.path.getPointAtLength=G,t.path.getSubpath=function(t,e,n){if(this.getTotalLength(t)-n<1e-6)return Z(t,e).end;var r=Z(t,n,1);return e?Z(r,e).end:r},P.getTotalLength=function(){if(this.node.getTotalLength)return this.node.getTotalLength()},P.getPointAtLength=function(t){return G(this.attr("d"),t)},P.getSubpath=function(e,n){return t.path.getSubpath(this.attr("d"),e,n)},t._.box=o,t.path.findDotsAtSegment=l,t.path.bezierBBox=f,t.path.isPointInsideBBox=h,t.closest=function(e,n,r,i){for(var a=100,s=o(e-a/2,n-a/2,a,a),u=[],c=r[0].hasOwnProperty("x")?function(t){return{x:r[t].x,y:r[t].y}}:function(t){return{x:r[t],y:i[t]}},l=0;a<=1e6&&!l;){for(var f=0,d=r.length;f<d;f++){
+!function(t){function e(r){if(n[r])return n[r].exports;var i=n[r]={exports:{},id:r,loaded:!1};return t[r].call(i.exports,i,i.exports,e),i.loaded=!0,i.exports}var n={};return e.m=t,e.c=n,e.p="/dist/",e(0)}([function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}n(38),n(39),n(37);var i=n(28),o=(r(i),n(2)),a=r(o),s=n(33),u=r(s),c=n(6),l=r(c),f=n(41),h=r(f),d={Cutout:u["default"],VueComponents:{Typeahead:a["default"],MergeTool:h["default"],Zoomview:l["default"]}};window.iconolab||(window.iconolab=d)},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0}),e.eventEmitter=e.generateId=void 0;var i=n(27),o=r(i),a=(0,o["default"])({}),s=function(){var t=0,e="item_";return function(n){return n="string"==typeof n?n:e,t+=1,n+t}}();e.generateId=s,e.eventEmitter=a},function(t,e,n){var r,i;n(47),r=n(10);var o=n(44);i=r||{},i.__esModule&&(i=i["default"]),"function"==typeof i&&(i=i.options),i.render=o.render,i.staticRenderFns=o.staticRenderFns,i._scopeId="data-v-3",t.exports=r||i},function(t,e,n){var r,i,r,o,a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol?"symbol":typeof t};(function(){t.exports=0;!function(n){var o,a,s="0.4.2",u="hasOwnProperty",c=/[\.\/]/,l=/\s*,\s*/,f="*",h=function(t,e){return t-e},d={n:{}},p=function(){for(var t=0,e=this.length;t<e;t++)if("undefined"!=typeof this[t])return this[t]},v=function(){for(var t=this.length;--t;)if("undefined"!=typeof this[t])return this[t]},g=function m(t,e){t=String(t);var n,r=a,i=Array.prototype.slice.call(arguments,2),s=m.listeners(t),u=0,c=[],l={},f=[],d=o;f.firstDefined=p,f.lastDefined=v,o=t,a=0;for(var g=0,y=s.length;g<y;g++)"zIndex"in s[g]&&(c.push(s[g].zIndex),s[g].zIndex<0&&(l[s[g].zIndex]=s[g]));for(c.sort(h);c[u]<0;)if(n=l[c[u++]],f.push(n.apply(e,i)),a)return a=r,f;for(g=0;g<y;g++)if(n=s[g],"zIndex"in n)if(n.zIndex==c[u]){if(f.push(n.apply(e,i)),a)break;do if(u++,n=l[c[u]],n&&f.push(n.apply(e,i)),a)break;while(n)}else l[n.zIndex]=n;else if(f.push(n.apply(e,i)),a)break;return a=r,o=d,f};g._events=d,g.listeners=function(t){var e,n,r,i,o,a,s,u,l=t.split(c),h=d,p=[h],v=[];for(i=0,o=l.length;i<o;i++){for(u=[],a=0,s=p.length;a<s;a++)for(h=p[a].n,n=[h[l[i]],h[f]],r=2;r--;)e=n[r],e&&(u.push(e),v=v.concat(e.f||[]));p=u}return v},g.on=function(t,e){if(t=String(t),"function"!=typeof e)return function(){};for(var n=t.split(l),r=0,i=n.length;r<i;r++)!function(t){for(var n,r=t.split(c),i=d,o=0,a=r.length;o<a;o++)i=i.n,i=i.hasOwnProperty(r[o])&&i[r[o]]||(i[r[o]]={n:{}});for(i.f=i.f||[],o=0,a=i.f.length;o<a;o++)if(i.f[o]==e){n=!0;break}!n&&i.f.push(e)}(n[r]);return function(t){+t==+t&&(e.zIndex=+t)}},g.f=function(t){var e=[].slice.call(arguments,1);return function(){g.apply(null,[t,null].concat(e).concat([].slice.call(arguments,0)))}},g.stop=function(){a=1},g.nt=function(t){return t?new RegExp("(?:\\.|\\/|^)"+t+"(?:\\.|\\/|$)").test(o):o},g.nts=function(){return o.split(c)},g.off=g.unbind=function(t,e){if(!t)return void(g._events=d={n:{}});var n=t.split(l);if(n.length>1)for(var r=0,i=n.length;r<i;r++)g.off(n[r],e);else{n=t.split(c);var o,a,s,r,i,h,p,v=[d];for(r=0,i=n.length;r<i;r++)for(h=0;h<v.length;h+=s.length-2){if(s=[h,1],o=v[h].n,n[r]!=f)o[n[r]]&&s.push(o[n[r]]);else for(a in o)o[u](a)&&s.push(o[a]);v.splice.apply(v,s)}for(r=0,i=v.length;r<i;r++)for(o=v[r];o.n;){if(e){if(o.f){for(h=0,p=o.f.length;h<p;h++)if(o.f[h]==e){o.f.splice(h,1);break}!o.f.length&&delete o.f}for(a in o.n)if(o.n[u](a)&&o.n[a].f){var m=o.n[a].f;for(h=0,p=m.length;h<p;h++)if(m[h]==e){m.splice(h,1);break}!m.length&&delete o.n[a].f}}else{delete o.f;for(a in o.n)o.n[u](a)&&o.n[a].f&&delete o.n[a].f}o=o.n}}},g.once=function(t,e){var n=function r(){return g.unbind(t,r),e.apply(this,arguments)};return g.on(t,n)},g.version=s,g.toString=function(){return"You are running Eve "+s},"undefined"!=typeof t&&t.exports?t.exports=g:(r=[],!(i=function(){return g}.apply(e,r)))}(this),function(n,a){r=[i],o=function(t){return a(n,t)}.apply(e,r),!(void 0!==o&&(t.exports=o))}(window||this,function(t,e){var n=function(e){var n={},r=t.requestAnimationFrame||t.webkitRequestAnimationFrame||t.mozRequestAnimationFrame||t.oRequestAnimationFrame||t.msRequestAnimationFrame||function(t){setTimeout(t,16)},i=Array.isArray||function(t){return t instanceof Array||"[object Array]"==Object.prototype.toString.call(t)},o=0,a="M"+(+new Date).toString(36),s=function(){return a+(o++).toString(36)},u=Date.now||function(){return+new Date},c=function(t){var e=this;if(null==t)return e.s;var n=e.s-t;e.b+=e.dur*n,e.B+=e.dur*n,e.s=t},l=function(t){var e=this;return null==t?e.spd:void(e.spd=t)},f=function(t){var e=this;return null==t?e.dur:(e.s=e.s*t/e.dur,void(e.dur=t))},h=function(){var t=this;delete n[t.id],t.update(),e("mina.stop."+t.id,t)},d=function(){var t=this;t.pdif||(delete n[t.id],t.update(),t.pdif=t.get()-t.b)},p=function(){var t=this;t.pdif&&(t.b=t.get()-t.pdif,delete t.pdif,n[t.id]=t)},v=function(){var t,e=this;if(i(e.start)){t=[];for(var n=0,r=e.start.length;n<r;n++)t[n]=+e.start[n]+(e.end[n]-e.start[n])*e.easing(e.s)}else t=+e.start+(e.end-e.start)*e.easing(e.s);e.set(t)},g=function y(){var t=0;for(var i in n)if(n.hasOwnProperty(i)){var o=n[i],a=o.get();t++,o.s=(a-o.b)/(o.dur/o.spd),o.s>=1&&(delete n[i],o.s=1,t--,function(t){setTimeout(function(){e("mina.finish."+t.id,t)})}(o)),o.update()}t&&r(y)},m=function b(t,e,i,o,a,u,m){var y={id:s(),start:t,end:e,b:i,s:0,dur:o-i,spd:1,get:a,set:u,easing:m||b.linear,status:c,speed:l,duration:f,stop:h,pause:d,resume:p,update:v};n[y.id]=y;var x,w=0;for(x in n)if(n.hasOwnProperty(x)&&(w++,2==w))break;return 1==w&&r(g),y};return m.time=u,m.getById=function(t){return n[t]||null},m.linear=function(t){return t},m.easeout=function(t){return Math.pow(t,1.7)},m.easein=function(t){return Math.pow(t,.48)},m.easeinout=function(t){if(1==t)return 1;if(0==t)return 0;var e=.48-t/1.04,n=Math.sqrt(.1734+e*e),r=n-e,i=Math.pow(Math.abs(r),1/3)*(r<0?-1:1),o=-n-e,a=Math.pow(Math.abs(o),1/3)*(o<0?-1:1),s=i+a+.5;return 3*(1-s)*s*s+s*s*s},m.backin=function(t){if(1==t)return 1;var e=1.70158;return t*t*((e+1)*t-e)},m.backout=function(t){if(0==t)return 0;t-=1;var e=1.70158;return t*t*((e+1)*t+e)+1},m.elastic=function(t){return t==!!t?t:Math.pow(2,-10*t)*Math.sin((t-.075)*(2*Math.PI)/.3)+1},m.bounce=function(t){var e,n=7.5625,r=2.75;return t<1/r?e=n*t*t:t<2/r?(t-=1.5/r,e=n*t*t+.75):t<2.5/r?(t-=2.25/r,e=n*t*t+.9375):(t-=2.625/r,e=n*t*t+.984375),e},t.mina=m,m}("undefined"==typeof e?function(){}:e),r=function(t){function n(t,e){if(t){if(t.nodeType)return C(t);if(i(t,"array")&&n.set)return n.set.apply(n,t);if(t instanceof b)return t;if(null==e)return t=T.doc.querySelector(String(t)),C(t)}return t=null==t?"100%":t,e=null==e?"100%":e,new _(t,e)}function r(t,e){if(e){if("#text"==t&&(t=T.doc.createTextNode(e.text||e["#text"]||"")),"#comment"==t&&(t=T.doc.createComment(e.text||e["#text"]||"")),"string"==typeof t&&(t=r(t)),"string"==typeof e)return 1==t.nodeType?"xlink:"==e.substring(0,6)?t.getAttributeNS(W,e.substring(6)):"xml:"==e.substring(0,4)?t.getAttributeNS(X,e.substring(4)):t.getAttribute(e):"text"==e?t.nodeValue:null;if(1==t.nodeType){for(var n in e)if(e[A](n)){var i=S(e[n]);i?"xlink:"==n.substring(0,6)?t.setAttributeNS(W,n.substring(6),i):"xml:"==n.substring(0,4)?t.setAttributeNS(X,n.substring(4),i):t.setAttribute(n,i):t.removeAttribute(n)}}else"text"in e&&(t.nodeValue=e.text)}else t=T.doc.createElementNS(X,t);return t}function i(t,e){return e=S.prototype.toLowerCase.call(e),"finite"==e?isFinite(t):!("array"!=e||!(t instanceof Array||Array.isArray&&Array.isArray(t)))||("null"==e&&null===t||e==("undefined"==typeof t?"undefined":a(t))&&null!==t||"object"==e&&t===Object(t)||F.call(t).slice(8,-1).toLowerCase()==e)}function o(t){if("function"==typeof t||Object(t)!==t)return t;var e=new t.constructor;for(var n in t)t[A](n)&&(e[n]=o(t[n]));return e}function s(t,e){for(var n=0,r=t.length;n<r;n++)if(t[n]===e)return t.push(t.splice(n,1)[0])}function u(t,e,n){function r(){var i=Array.prototype.slice.call(arguments,0),o=i.join("␀"),a=r.cache=r.cache||{},u=r.count=r.count||[];return a[A](o)?(s(u,o),n?n(a[o]):a[o]):(u.length>=1e3&&delete a[u.shift()],u.push(o),a[o]=t.apply(e,i),n?n(a[o]):a[o])}return r}function c(t,e,n,r,i,o){if(null==i){var a=t-n,s=e-r;return a||s?(180+180*j.atan2(-s,-a)/M+360)%360:0}return c(t,e,i,o)-c(n,r,i,o)}function l(t){return t%360*M/180}function f(t){return 180*t/M%360}function h(t){var e=[];return t=t.replace(/(?:^|\s)(\w+)\(([^)]+)\)/g,function(t,n,r){return r=r.split(/\s*,\s*|\s+/),"rotate"==n&&1==r.length&&r.push(0,0),"scale"==n&&(r.length>2?r=r.slice(0,2):2==r.length&&r.push(0,0),1==r.length&&r.push(r[0],0,0)),"skewX"==n?e.push(["m",1,0,j.tan(l(r[0])),1,0,0]):"skewY"==n?e.push(["m",1,j.tan(l(r[0])),0,1,0,0]):e.push([n.charAt(0)].concat(r)),t}),e}function d(t,e){var r=et(t),i=new n.Matrix;if(r)for(var o=0,a=r.length;o<a;o++){var s,u,c,l,f,h=r[o],d=h.length,p=S(h[0]).toLowerCase(),v=h[0]!=p,g=v?i.invert():0;"t"==p&&2==d?i.translate(h[1],0):"t"==p&&3==d?v?(s=g.x(0,0),u=g.y(0,0),c=g.x(h[1],h[2]),l=g.y(h[1],h[2]),i.translate(c-s,l-u)):i.translate(h[1],h[2]):"r"==p?2==d?(f=f||e,i.rotate(h[1],f.x+f.width/2,f.y+f.height/2)):4==d&&(v?(c=g.x(h[2],h[3]),l=g.y(h[2],h[3]),i.rotate(h[1],c,l)):i.rotate(h[1],h[2],h[3])):"s"==p?2==d||3==d?(f=f||e,i.scale(h[1],h[d-1],f.x+f.width/2,f.y+f.height/2)):4==d?v?(c=g.x(h[2],h[3]),l=g.y(h[2],h[3]),i.scale(h[1],h[1],c,l)):i.scale(h[1],h[1],h[2],h[3]):5==d&&(v?(c=g.x(h[3],h[4]),l=g.y(h[3],h[4]),i.scale(h[1],h[2],c,l)):i.scale(h[1],h[2],h[3],h[4])):"m"==p&&7==d&&i.add(h[1],h[2],h[3],h[4],h[5],h[6])}return i}function p(t){var e=t.node.ownerSVGElement&&C(t.node.ownerSVGElement)||t.node.parentNode&&C(t.node.parentNode)||n.select("svg")||n(0,0),r=e.select("defs"),i=null!=r&&r.node;return i||(i=w("defs",e.node).node),i}function v(t){return t.node.ownerSVGElement&&C(t.node.ownerSVGElement)||n.select("svg")}function m(t,e,n){function i(t){if(null==t)return P;if(t==+t)return t;r(c,{width:t});try{return c.getBBox().width}catch(e){return 0}}function o(t){if(null==t)return P;if(t==+t)return t;r(c,{height:t});try{return c.getBBox().height}catch(e){return 0}}function a(r,i){null==e?u[r]=i(t.attr(r)||0):r==e&&(u=i(null==n?t.attr(r)||0:n))}var s=v(t).node,u={},c=s.querySelector(".svg---mgr");switch(c||(c=r("rect"),r(c,{x:-9e9,y:-9e9,width:10,height:10,"class":"svg---mgr",fill:"none"}),s.appendChild(c)),t.type){case"rect":a("rx",i),a("ry",o);case"image":a("width",i),a("height",o);case"text":a("x",i),a("y",o);break;case"circle":a("cx",i),a("cy",o),a("r",i);break;case"ellipse":a("cx",i),a("cy",o),a("rx",i),a("ry",o);break;case"line":a("x1",i),a("x2",i),a("y1",o),a("y2",o);break;case"marker":a("refX",i),a("markerWidth",i),a("refY",o),a("markerHeight",o);break;case"radialGradient":a("fx",i),a("fy",o);break;case"tspan":a("dx",i),a("dy",o);break;default:a(e,i)}return s.removeChild(c),u}function y(t){i(t,"array")||(t=Array.prototype.slice.call(arguments,0));for(var e=0,n=0,r=this.node;this[e];)delete this[e++];for(e=0;e<t.length;e++)"set"==t[e].type?t[e].forEach(function(t){r.appendChild(t.node)}):r.appendChild(t[e].node);var o=r.childNodes;for(e=0;e<o.length;e++)this[n++]=C(o[e]);return this}function b(t){if(t.snap in G)return G[t.snap];var e;try{e=t.ownerSVGElement}catch(n){}this.node=t,e&&(this.paper=new _(e)),this.type=t.tagName||t.nodeName;var r=this.id=U(this);if(this.anims={},this._={transform:[]},t.snap=r,G[r]=this,"g"==this.type&&(this.add=y),this.type in{g:1,mask:1,pattern:1,symbol:1})for(var i in _.prototype)_.prototype[A](i)&&(this[i]=_.prototype[i])}function x(t){this.node=t}function w(t,e){var n=r(t);e.appendChild(n);var i=C(n);return i}function _(t,e){var n,i,o,a=_.prototype;if(t&&"svg"==t.tagName){if(t.snap in G)return G[t.snap];var s=t.ownerDocument;n=new b(t),i=t.getElementsByTagName("desc")[0],o=t.getElementsByTagName("defs")[0],i||(i=r("desc"),i.appendChild(s.createTextNode("Created with Snap")),n.node.appendChild(i)),o||(o=r("defs"),n.node.appendChild(o)),n.defs=o;for(var u in a)a[A](u)&&(n[u]=a[u]);n.paper=n.root=n}else n=w("svg",T.doc.body),r(n.node,{height:e,version:1.1,width:t,xmlns:X});return n}function C(t){return t?t instanceof b||t instanceof x?t:t.tagName&&"svg"==t.tagName.toLowerCase()?new _(t):t.tagName&&"object"==t.tagName.toLowerCase()&&"image/svg+xml"==t.type?new _(t.contentDocument.getElementsByTagName("svg")[0]):new b(t):t}function k(t,e){for(var n=0,r=t.length;n<r;n++){var i={type:t[n].type,attr:t[n].attr()},o=t[n].children();e.push(i),o.length&&k(o,i.childNodes=[])}}n.version="0.4.0",n.toString=function(){return"Snap v"+this.version},n._={};var T={win:t.window,doc:t.window.document};n._.glob=T;var A="hasOwnProperty",S=String,$=parseFloat,E=parseInt,j=Math,O=j.max,N=j.min,D=j.abs,M=(j.pow,j.PI),P=(j.round,""),F=Object.prototype.toString,B=/^\s*((#[a-f\d]{6})|(#[a-f\d]{3})|rgba?\(\s*([\d\.]+%?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+%?(?:\s*,\s*[\d\.]+%?)?)\s*\)|hsba?\(\s*([\d\.]+(?:deg|\xb0|%)?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+(?:%?\s*,\s*[\d\.]+)?%?)\s*\)|hsla?\(\s*([\d\.]+(?:deg|\xb0|%)?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+(?:%?\s*,\s*[\d\.]+)?%?)\s*\))\s*$/i,L=(n._.separator=/[,\s]+/,/[\s]*,[\s]*/),R={hs:1,rg:1},I=/([a-z])[\s,]*((-?\d*\.?\d*(?:e[\-+]?\d+)?[\s]*,?[\s]*)+)/gi,q=/([rstm])[\s,]*((-?\d*\.?\d*(?:e[\-+]?\d+)?[\s]*,?[\s]*)+)/gi,H=/(-?\d*\.?\d*(?:e[\-+]?\\d+)?)[\s]*,?[\s]*/gi,z=0,V="S"+(+new Date).toString(36),U=function(t){return(t&&t.type?t.type:P)+V+(z++).toString(36)},W="http://www.w3.org/1999/xlink",X="http://www.w3.org/2000/svg",G={};n.url=function(t){return"url('#"+t+"')"};n._.$=r,n._.id=U,n.format=function(){var t=/\{([^\}]+)\}/g,e=/(?:(?:^|\.)(.+?)(?=\[|\.|$|\()|\[('|")(.+?)\2\])(\(\))?/g,n=function(t,n,r){var i=r;return n.replace(e,function(t,e,n,r,o){e=e||r,i&&(e in i&&(i=i[e]),"function"==typeof i&&o&&(i=i()))}),i=(null==i||i==r?t:i)+""};return function(e,r){return S(e).replace(t,function(t,e){return n(t,e,r)})}}(),n._.clone=o,n._.cacher=u,n.rad=l,n.deg=f,n.sin=function(t){return j.sin(n.rad(t))},n.tan=function(t){return j.tan(n.rad(t))},n.cos=function(t){return j.cos(n.rad(t))},n.asin=function(t){return n.deg(j.asin(t))},n.acos=function(t){return n.deg(j.acos(t))},n.atan=function(t){return n.deg(j.atan(t))},n.atan2=function(t){return n.deg(j.atan2(t))},n.angle=c,n.len=function(t,e,r,i){return Math.sqrt(n.len2(t,e,r,i))},n.len2=function(t,e,n,r){return(t-n)*(t-n)+(e-r)*(e-r)},n.closestPoint=function(t,e,n){function r(t){var r=t.x-e,i=t.y-n;return r*r+i*i}for(var i,o,a,s,u=t.node,c=u.getTotalLength(),l=c/u.pathSegList.numberOfItems*.125,f=1/0,h=0;h<=c;h+=l)(s=r(a=u.getPointAtLength(h)))<f&&(i=a,o=h,f=s);for(l*=.5;l>.5;){var d,p,v,g,m,y;(v=o-l)>=0&&(m=r(d=u.getPointAtLength(v)))<f?(i=d,o=v,f=m):(g=o+l)<=c&&(y=r(p=u.getPointAtLength(g)))<f?(i=p,o=g,f=y):l*=.5}return i={x:i.x,y:i.y,length:o,distance:Math.sqrt(f)}},n.is=i,n.snapTo=function(t,e,n){if(n=i(n,"finite")?n:10,i(t,"array")){for(var r=t.length;r--;)if(D(t[r]-e)<=n)return t[r]}else{t=+t;var o=e%t;if(o<n)return e-o;if(o>t-n)return e-o+t}return e},n.getRGB=u(function(t){if(!t||(t=S(t)).indexOf("-")+1)return{r:-1,g:-1,b:-1,hex:"none",error:1,toString:Q};if("none"==t)return{r:-1,g:-1,b:-1,hex:"none",toString:Q};if(!(R[A](t.toLowerCase().substring(0,2))||"#"==t.charAt())&&(t=Z(t)),!t)return{r:-1,g:-1,b:-1,hex:"none",error:1,toString:Q};var e,r,o,a,s,u,c=t.match(B);return c?(c[2]&&(o=E(c[2].substring(5),16),r=E(c[2].substring(3,5),16),e=E(c[2].substring(1,3),16)),c[3]&&(o=E((s=c[3].charAt(3))+s,16),r=E((s=c[3].charAt(2))+s,16),e=E((s=c[3].charAt(1))+s,16)),c[4]&&(u=c[4].split(L),e=$(u[0]),"%"==u[0].slice(-1)&&(e*=2.55),r=$(u[1]),"%"==u[1].slice(-1)&&(r*=2.55),o=$(u[2]),"%"==u[2].slice(-1)&&(o*=2.55),"rgba"==c[1].toLowerCase().slice(0,4)&&(a=$(u[3])),u[3]&&"%"==u[3].slice(-1)&&(a/=100)),c[5]?(u=c[5].split(L),e=$(u[0]),"%"==u[0].slice(-1)&&(e/=100),r=$(u[1]),"%"==u[1].slice(-1)&&(r/=100),o=$(u[2]),"%"==u[2].slice(-1)&&(o/=100),("deg"==u[0].slice(-3)||"°"==u[0].slice(-1))&&(e/=360),"hsba"==c[1].toLowerCase().slice(0,4)&&(a=$(u[3])),u[3]&&"%"==u[3].slice(-1)&&(a/=100),n.hsb2rgb(e,r,o,a)):c[6]?(u=c[6].split(L),e=$(u[0]),"%"==u[0].slice(-1)&&(e/=100),r=$(u[1]),"%"==u[1].slice(-1)&&(r/=100),o=$(u[2]),"%"==u[2].slice(-1)&&(o/=100),("deg"==u[0].slice(-3)||"°"==u[0].slice(-1))&&(e/=360),"hsla"==c[1].toLowerCase().slice(0,4)&&(a=$(u[3])),u[3]&&"%"==u[3].slice(-1)&&(a/=100),n.hsl2rgb(e,r,o,a)):(e=N(j.round(e),255),r=N(j.round(r),255),o=N(j.round(o),255),a=N(O(a,0),1),c={r:e,g:r,b:o,toString:Q},c.hex="#"+(16777216|o|r<<8|e<<16).toString(16).slice(1),c.opacity=i(a,"finite")?a:1,c)):{r:-1,g:-1,b:-1,hex:"none",error:1,toString:Q}},n),n.hsb=u(function(t,e,r){return n.hsb2rgb(t,e,r).hex}),n.hsl=u(function(t,e,r){return n.hsl2rgb(t,e,r).hex}),n.rgb=u(function(t,e,n,r){if(i(r,"finite")){var o=j.round;return"rgba("+[o(t),o(e),o(n),+r.toFixed(2)]+")"}return"#"+(16777216|n|e<<8|t<<16).toString(16).slice(1)});var Z=function(t){var e=T.doc.getElementsByTagName("head")[0]||T.doc.getElementsByTagName("svg")[0],n="rgb(255, 0, 0)";return(Z=u(function(t){if("red"==t.toLowerCase())return n;e.style.color=n,e.style.color=t;var r=T.doc.defaultView.getComputedStyle(e,P).getPropertyValue("color");return r==n?null:r}))(t)},J=function(){return"hsb("+[this.h,this.s,this.b]+")"},Y=function(){return"hsl("+[this.h,this.s,this.l]+")"},Q=function(){return 1==this.opacity||null==this.opacity?this.hex:"rgba("+[this.r,this.g,this.b,this.opacity]+")"},K=function(t,e,r){if(null==e&&i(t,"object")&&"r"in t&&"g"in t&&"b"in t&&(r=t.b,e=t.g,t=t.r),null==e&&i(t,string)){var o=n.getRGB(t);t=o.r,e=o.g,r=o.b}return(t>1||e>1||r>1)&&(t/=255,e/=255,r/=255),[t,e,r]},tt=function(t,e,r,o){t=j.round(255*t),e=j.round(255*e),r=j.round(255*r);var a={r:t,g:e,b:r,opacity:i(o,"finite")?o:1,hex:n.rgb(t,e,r),toString:Q};return i(o,"finite")&&(a.opacity=o),a};n.color=function(t){var e;return i(t,"object")&&"h"in t&&"s"in t&&"b"in t?(e=n.hsb2rgb(t),t.r=e.r,t.g=e.g,t.b=e.b,t.opacity=1,t.hex=e.hex):i(t,"object")&&"h"in t&&"s"in t&&"l"in t?(e=n.hsl2rgb(t),t.r=e.r,t.g=e.g,t.b=e.b,t.opacity=1,t.hex=e.hex):(i(t,"string")&&(t=n.getRGB(t)),i(t,"object")&&"r"in t&&"g"in t&&"b"in t&&!("error"in t)?(e=n.rgb2hsl(t),t.h=e.h,t.s=e.s,t.l=e.l,e=n.rgb2hsb(t),t.v=e.b):(t={hex:"none"},t.r=t.g=t.b=t.h=t.s=t.v=t.l=-1,t.error=1)),t.toString=Q,t},n.hsb2rgb=function(t,e,n,r){i(t,"object")&&"h"in t&&"s"in t&&"b"in t&&(n=t.b,e=t.s,r=t.o,t=t.h),t*=360;var o,a,s,u,c;return t=t%360/60,c=n*e,u=c*(1-D(t%2-1)),o=a=s=n-c,t=~~t,o+=[c,u,0,0,u,c][t],a+=[u,c,c,u,0,0][t],s+=[0,0,u,c,c,u][t],tt(o,a,s,r)},n.hsl2rgb=function(t,e,n,r){i(t,"object")&&"h"in t&&"s"in t&&"l"in t&&(n=t.l,e=t.s,t=t.h),(t>1||e>1||n>1)&&(t/=360,e/=100,n/=100),t*=360;var o,a,s,u,c;return t=t%360/60,c=2*e*(n<.5?n:1-n),u=c*(1-D(t%2-1)),o=a=s=n-c/2,t=~~t,o+=[c,u,0,0,u,c][t],a+=[u,c,c,u,0,0][t],s+=[0,0,u,c,c,u][t],tt(o,a,s,r)},n.rgb2hsb=function(t,e,n){n=K(t,e,n),t=n[0],e=n[1],n=n[2];var r,i,o,a;return o=O(t,e,n),a=o-N(t,e,n),r=0==a?null:o==t?(e-n)/a:o==e?(n-t)/a+2:(t-e)/a+4,r=(r+360)%6*60/360,i=0==a?0:a/o,{h:r,s:i,b:o,toString:J}},n.rgb2hsl=function(t,e,n){n=K(t,e,n),t=n[0],e=n[1],n=n[2];var r,i,o,a,s,u;return a=O(t,e,n),s=N(t,e,n),u=a-s,r=0==u?null:a==t?(e-n)/u:a==e?(n-t)/u+2:(t-e)/u+4,r=(r+360)%6*60/360,o=(a+s)/2,i=0==u?0:o<.5?u/(2*o):u/(2-2*o),{h:r,s:i,l:o,toString:Y}},n.parsePathString=function(t){if(!t)return null;var e=n.path(t);if(e.arr)return n.path.clone(e.arr);var r={a:7,c:6,o:2,h:1,l:2,m:2,r:4,q:4,s:4,t:2,v:1,u:3,z:0},o=[];return i(t,"array")&&i(t[0],"array")&&(o=n.path.clone(t)),o.length||S(t).replace(I,function(t,e,n){var i=[],a=e.toLowerCase();if(n.replace(H,function(t,e){e&&i.push(+e)}),"m"==a&&i.length>2&&(o.push([e].concat(i.splice(0,2))),a="l",e="m"==e?"l":"L"),"o"==a&&1==i.length&&o.push([e,i[0]]),"r"==a)o.push([e].concat(i));else for(;i.length>=r[a]&&(o.push([e].concat(i.splice(0,r[a]))),r[a]););}),o.toString=n.path.toString,e.arr=n.path.clone(o),o};var et=n.parseTransformString=function(t){if(!t)return null;var e=[];return i(t,"array")&&i(t[0],"array")&&(e=n.path.clone(t)),e.length||S(t).replace(q,function(t,n,r){var i=[];n.toLowerCase();r.replace(H,function(t,e){e&&i.push(+e)}),e.push([n].concat(i))}),e.toString=n.path.toString,e};n._.svgTransform2string=h,n._.rgTransform=/^[a-z][\s]*-?\.?\d/i,n._.transform2matrix=d,n._unit2px=m;T.doc.contains||T.doc.compareDocumentPosition?function(t,e){var n=9==t.nodeType?t.documentElement:t,r=e&&e.parentNode;return t==r||!(!r||1!=r.nodeType||!(n.contains?n.contains(r):t.compareDocumentPosition&&16&t.compareDocumentPosition(r)))}:function(t,e){if(e)for(;e;)if(e=e.parentNode,e==t)return!0;return!1};n._.getSomeDefs=p,n._.getSomeSVG=v,n.select=function(t){return t=S(t).replace(/([^\\]):/g,"$1\\:"),C(T.doc.querySelector(t))},n.selectAll=function(t){for(var e=T.doc.querySelectorAll(t),r=(n.set||Array)(),i=0;i<e.length;i++)r.push(C(e[i]));return r},setInterval(function(){for(var t in G)if(G[A](t)){var e=G[t],n=e.node;("svg"!=e.type&&!n.ownerSVGElement||"svg"==e.type&&(!n.parentNode||"ownerSVGElement"in n.parentNode&&!n.ownerSVGElement))&&delete G[t]}},1e4),b.prototype.attr=function(t,n){var r=this,o=r.node;if(!t){if(1!=o.nodeType)return{text:o.nodeValue};for(var a=o.attributes,s={},u=0,c=a.length;u<c;u++)s[a[u].nodeName]=a[u].nodeValue;return s}if(i(t,"string")){if(!(arguments.length>1))return e("snap.util.getattr."+t,r).firstDefined();var l={};l[t]=n,t=l}for(var f in t)t[A](f)&&e("snap.util.attr."+f,r,t[f]);return r},n.parse=function(t){var e=T.doc.createDocumentFragment(),n=!0,r=T.doc.createElement("div");if(t=S(t),t.match(/^\s*<\s*svg(?:\s|>)/)||(t="<svg>"+t+"</svg>",n=!1),r.innerHTML=t,t=r.getElementsByTagName("svg")[0])if(n)e=t;else for(;t.firstChild;)e.appendChild(t.firstChild);return new x(e)},n.fragment=function(){for(var t=Array.prototype.slice.call(arguments,0),e=T.doc.createDocumentFragment(),r=0,i=t.length;r<i;r++){var o=t[r];o.node&&o.node.nodeType&&e.appendChild(o.node),o.nodeType&&e.appendChild(o),"string"==typeof o&&e.appendChild(n.parse(o).node)}return new x(e)},n._.make=w,n._.wrap=C,_.prototype.el=function(t,e){var n=w(t,this.node);return e&&n.attr(e),n},b.prototype.children=function(){for(var t=[],e=this.node.childNodes,r=0,i=e.length;r<i;r++)t[r]=n(e[r]);return t},b.prototype.toJSON=function(){var t=[];return k([this],t),t[0]},e.on("snap.util.getattr",function(){var t=e.nt();t=t.substring(t.lastIndexOf(".")+1);var n=t.replace(/[A-Z]/g,function(t){return"-"+t.toLowerCase()});return nt[A](n)?this.node.ownerDocument.defaultView.getComputedStyle(this.node,null).getPropertyValue(n):r(this.node,t)});var nt={"alignment-baseline":0,"baseline-shift":0,clip:0,"clip-path":0,"clip-rule":0,color:0,"color-interpolation":0,"color-interpolation-filters":0,"color-profile":0,"color-rendering":0,cursor:0,direction:0,display:0,"dominant-baseline":0,"enable-background":0,fill:0,"fill-opacity":0,"fill-rule":0,filter:0,"flood-color":0,"flood-opacity":0,font:0,"font-family":0,"font-size":0,"font-size-adjust":0,"font-stretch":0,"font-style":0,"font-variant":0,"font-weight":0,"glyph-orientation-horizontal":0,"glyph-orientation-vertical":0,"image-rendering":0,kerning:0,"letter-spacing":0,"lighting-color":0,marker:0,"marker-end":0,"marker-mid":0,"marker-start":0,mask:0,opacity:0,overflow:0,"pointer-events":0,"shape-rendering":0,"stop-color":0,"stop-opacity":0,stroke:0,"stroke-dasharray":0,"stroke-dashoffset":0,"stroke-linecap":0,"stroke-linejoin":0,"stroke-miterlimit":0,"stroke-opacity":0,"stroke-width":0,"text-anchor":0,"text-decoration":0,"text-rendering":0,"unicode-bidi":0,visibility:0,"word-spacing":0,"writing-mode":0};e.on("snap.util.attr",function(t){var n=e.nt(),i={};n=n.substring(n.lastIndexOf(".")+1),i[n]=t;var o=n.replace(/-(\w)/gi,function(t,e){return e.toUpperCase()}),a=n.replace(/[A-Z]/g,function(t){return"-"+t.toLowerCase()});nt[A](a)?this.node.style[o]=null==t?P:t:r(this.node,i)}),function(t){}(_.prototype),n.ajax=function(t,n,r,o){var a=new XMLHttpRequest,s=U();if(a){if(i(n,"function"))o=r,r=n,n=null;else if(i(n,"object")){var u=[];for(var c in n)n.hasOwnProperty(c)&&u.push(encodeURIComponent(c)+"="+encodeURIComponent(n[c]));n=u.join("&")}return a.open(n?"POST":"GET",t,!0),n&&(a.setRequestHeader("X-Requested-With","XMLHttpRequest"),a.setRequestHeader("Content-type","application/x-www-form-urlencoded")),r&&(e.once("snap.ajax."+s+".0",r),e.once("snap.ajax."+s+".200",r),e.once("snap.ajax."+s+".304",r)),a.onreadystatechange=function(){4==a.readyState&&e("snap.ajax."+s+"."+a.status,o,a)},4==a.readyState?a:(a.send(n),a)}},n.load=function(t,e,r){n.ajax(t,function(t){var i=n.parse(t.responseText);r?e.call(r,i):e(i)})};var rt=function(t){var e=t.getBoundingClientRect(),n=t.ownerDocument,r=n.body,i=n.documentElement,o=i.clientTop||r.clientTop||0,a=i.clientLeft||r.clientLeft||0,s=e.top+(g.win.pageYOffset||i.scrollTop||r.scrollTop)-o,u=e.left+(g.win.pageXOffset||i.scrollLeft||r.scrollLeft)-a;return{y:s,x:u}};return n.getElementByPoint=function(t,e){var n=this,r=(n.canvas,T.doc.elementFromPoint(t,e));if(T.win.opera&&"svg"==r.tagName){var i=rt(r),o=r.createSVGRect();o.x=t-i.x,o.y=e-i.y,o.width=o.height=1;var a=r.getIntersectionList(o,null);a.length&&(r=a[a.length-1])}return r?C(r):null},n.plugin=function(t){t(n,b,_,T,x)},T.win.Snap=n,n}(t||this);return r.plugin(function(r,i,o,a,s){function u(t,e){if(null==e){var n=!0;if(e="linearGradient"==t.type||"radialGradient"==t.type?t.node.getAttribute("gradientTransform"):"pattern"==t.type?t.node.getAttribute("patternTransform"):t.node.getAttribute("transform"),!e)return new r.Matrix;e=r._.svgTransform2string(e)}else e=r._.rgTransform.test(e)?p(e).replace(/\.{3}|\u2026/g,t._.transform||E):r._.svgTransform2string(e),d(e,"array")&&(e=r.path?r.path.toString.call(e):p(e)),t._.transform=e;var i=r._.transform2matrix(e,t.getBBox(1));return n?i:void(t.matrix=i)}function c(t){function e(t,e){var n=g(t.node,e);n=n&&n.match(o),n=n&&n[2],n&&"#"==n.charAt()&&(n=n.substring(1),n&&(s[n]=(s[n]||[]).concat(function(n){var r={};r[e]=URL(n),g(t.node,r)})))}function n(t){var e=g(t.node,"xlink:href");e&&"#"==e.charAt()&&(e=e.substring(1),e&&(s[e]=(s[e]||[]).concat(function(e){t.attr("xlink:href","#"+e)})))}for(var r,i=t.selectAll("*"),o=/^\s*url\(("|'|)(.*)\1\)\s*$/,a=[],s={},u=0,c=i.length;u<c;u++){r=i[u],e(r,"fill"),e(r,"stroke"),e(r,"filter"),e(r,"mask"),e(r,"clip-path"),n(r);var l=g(r.node,"id");l&&(g(r.node,{id:r.id}),a.push({old:l,id:r.id}))}for(u=0,c=a.length;u<c;u++){var f=s[a[u].old];if(f)for(var h=0,d=f.length;h<d;h++)f[h](a[u].id)}}function l(t,e,n){return function(r){var i=r.slice(t,e);return 1==i.length&&(i=i[0]),n?n(i):i}}function f(t){return function(){var e=t?"<"+this.type:"",n=this.node.attributes,r=this.node.childNodes;if(t)for(var i=0,o=n.length;i<o;i++)e+=" "+n[i].name+'="'+n[i].value.replace(/"/g,'\\"')+'"';if(r.length){for(t&&(e+=">"),i=0,o=r.length;i<o;i++)3==r[i].nodeType?e+=r[i].nodeValue:1==r[i].nodeType&&(e+=x(r[i]).toString());t&&(e+="</"+this.type+">")}else t&&(e+="/>");return e}}var h=i.prototype,d=r.is,p=String,v=r._unit2px,g=r._.$,m=r._.make,y=r._.getSomeDefs,b="hasOwnProperty",x=r._.wrap;h.getBBox=function(t){if(!r.Matrix||!r.path)return this.node.getBBox();var e=this,n=new r.Matrix;if(e.removed)return r._.box();for(;"use"==e.type;)if(t||(n=n.add(e.transform().localMatrix.translate(e.attr("x")||0,e.attr("y")||0))),e.original)e=e.original;else{var i=e.attr("xlink:href");e=e.original=e.node.ownerDocument.getElementById(i.substring(i.indexOf("#")+1))}var o=e._,a=r.path.get[e.type]||r.path.get.deflt;try{return t?(o.bboxwt=a?r.path.getBBox(e.realPath=a(e)):r._.box(e.node.getBBox()),r._.box(o.bboxwt)):(e.realPath=a(e),e.matrix=e.transform().localMatrix,o.bbox=r.path.getBBox(r.path.map(e.realPath,n.add(e.matrix))),r._.box(o.bbox))}catch(s){return r._.box()}};var w=function(){return this.string};h.transform=function(t){var e=this._;if(null==t){for(var n,i=this,o=new r.Matrix(this.node.getCTM()),a=u(this),s=[a],c=new r.Matrix,l=a.toTransformString(),f=p(a)==p(this.matrix)?p(e.transform):l;"svg"!=i.type&&(i=i.parent());)s.push(u(i));for(n=s.length;n--;)c.add(s[n]);return{string:f,globalMatrix:o,totalMatrix:c,localMatrix:a,diffMatrix:o.clone().add(a.invert()),global:o.toTransformString(),total:c.toTransformString(),local:l,toString:w}}return t instanceof r.Matrix?(this.matrix=t,this._.transform=t.toTransformString()):u(this,t),this.node&&("linearGradient"==this.type||"radialGradient"==this.type?g(this.node,{gradientTransform:this.matrix}):"pattern"==this.type?g(this.node,{patternTransform:this.matrix}):g(this.node,{transform:this.matrix})),this},h.parent=function(){return x(this.node.parentNode)},h.append=h.add=function(t){if(t){if("set"==t.type){var e=this;return t.forEach(function(t){e.add(t)}),this}t=x(t),this.node.appendChild(t.node),t.paper=this.paper}return this},h.appendTo=function(t){return t&&(t=x(t),t.append(this)),this},h.prepend=function(t){if(t){if("set"==t.type){var e,n=this;return t.forEach(function(t){e?e.after(t):n.prepend(t),e=t}),this}t=x(t);var r=t.parent();this.node.insertBefore(t.node,this.node.firstChild),this.add&&this.add(),t.paper=this.paper,this.parent()&&this.parent().add(),r&&r.add()}return this},h.prependTo=function(t){return t=x(t),t.prepend(this),this},h.before=function(t){if("set"==t.type){var e=this;return t.forEach(function(t){var n=t.parent();e.node.parentNode.insertBefore(t.node,e.node),n&&n.add()}),this.parent().add(),this}t=x(t);var n=t.parent();return this.node.parentNode.insertBefore(t.node,this.node),this.parent()&&this.parent().add(),n&&n.add(),t.paper=this.paper,this},h.after=function(t){t=x(t);var e=t.parent();return this.node.nextSibling?this.node.parentNode.insertBefore(t.node,this.node.nextSibling):this.node.parentNode.appendChild(t.node),this.parent()&&this.parent().add(),e&&e.add(),t.paper=this.paper,this},h.insertBefore=function(t){t=x(t);var e=this.parent();return t.node.parentNode.insertBefore(this.node,t.node),this.paper=t.paper,e&&e.add(),t.parent()&&t.parent().add(),this},h.insertAfter=function(t){t=x(t);var e=this.parent();return t.node.parentNode.insertBefore(this.node,t.node.nextSibling),this.paper=t.paper,e&&e.add(),t.parent()&&t.parent().add(),this},h.remove=function(){var t=this.parent();return this.node.parentNode&&this.node.parentNode.removeChild(this.node),delete this.paper,this.removed=!0,t&&t.add(),this},h.select=function(t){return t=p(t).replace(/([^\\]):/g,"$1\\:"),x(this.node.querySelector(t))},h.selectAll=function(t){for(var e=this.node.querySelectorAll(t),n=(r.set||Array)(),i=0;i<e.length;i++)n.push(x(e[i]));return n},h.asPX=function(t,e){return null==e&&(e=this.attr(t)),+v(this,t,e)},h.use=function(){var t,e=this.node.id;return e||(e=this.id,g(this.node,{id:e})),t="linearGradient"==this.type||"radialGradient"==this.type||"pattern"==this.type?m(this.type,this.node.parentNode):m("use",this.node.parentNode),g(t.node,{"xlink:href":"#"+e}),t.original=this,t},h.clone=function(){var t=x(this.node.cloneNode(!0));return g(t.node,"id")&&g(t.node,{id:t.id}),c(t),t.insertAfter(this),t},h.toDefs=function(){var t=y(this);return t.appendChild(this.node),this},h.pattern=h.toPattern=function(t,e,n,r){var i=m("pattern",y(this));return null==t&&(t=this.getBBox()),d(t,"object")&&"x"in t&&(e=t.y,n=t.width,r=t.height,t=t.x),g(i.node,{x:t,y:e,width:n,height:r,patternUnits:"userSpaceOnUse",id:i.id,viewBox:[t,e,n,r].join(" ")}),i.node.appendChild(this.node),i},h.marker=function(t,e,n,r,i,o){var a=m("marker",y(this));return null==t&&(t=this.getBBox()),d(t,"object")&&"x"in t&&(e=t.y,n=t.width,r=t.height,i=t.refX||t.cx,o=t.refY||t.cy,t=t.x),g(a.node,{viewBox:[t,e,n,r].join(" "),markerWidth:n,markerHeight:r,orient:"auto",refX:i||0,refY:o||0,id:a.id}),a.node.appendChild(this.node),a};var _=function(t,e,r,i){"function"!=typeof r||r.length||(i=r,r=n.linear),this.attr=t,this.dur=e,r&&(this.easing=r),i&&(this.callback=i)};r._.Animation=_,r.animation=function(t,e,n,r){return new _(t,e,n,r)},h.inAnim=function(){
+var t=this,e=[];for(var n in t.anims)t.anims[b](n)&&!function(t){e.push({anim:new _(t._attrs,t.dur,t.easing,t._callback),mina:t,curStatus:t.status(),status:function(e){return t.status(e)},stop:function(){t.stop()}})}(t.anims[n]);return e},r.animate=function(t,r,i,o,a,s){"function"!=typeof a||a.length||(s=a,a=n.linear);var u=n.time(),c=n(t,r,u,u+o,n.time,i,a);return s&&e.once("mina.finish."+c.id,s),c},h.stop=function(){for(var t=this.inAnim(),e=0,n=t.length;e<n;e++)t[e].stop();return this},h.animate=function(t,r,i,o){"function"!=typeof i||i.length||(o=i,i=n.linear),t instanceof _&&(o=t.callback,i=t.easing,r=i.dur,t=t.attr);var a,s,u,c,f=[],h=[],v={},g=this;for(var m in t)if(t[b](m)){g.equal?(c=g.equal(m,p(t[m])),a=c.from,s=c.to,u=c.f):(a=+g.attr(m),s=+t[m]);var y=d(a,"array")?a.length:1;v[m]=l(f.length,f.length+y,u),f=f.concat(a),h=h.concat(s)}var x=n.time(),w=n(f,h,x,x+r,n.time,function(t){var e={};for(var n in v)v[b](n)&&(e[n]=v[n](t));g.attr(e)},i);return g.anims[w.id]=w,w._attrs=t,w._callback=o,e("snap.animcreated."+g.id,w),e.once("mina.finish."+w.id,function(){delete g.anims[w.id],o&&o.call(g)}),e.once("mina.stop."+w.id,function(){delete g.anims[w.id]}),g};var C={};h.data=function(t,n){var i=C[this.id]=C[this.id]||{};if(0==arguments.length)return e("snap.data.get."+this.id,this,i,null),i;if(1==arguments.length){if(r.is(t,"object")){for(var o in t)t[b](o)&&this.data(o,t[o]);return this}return e("snap.data.get."+this.id,this,i[t],t),i[t]}return i[t]=n,e("snap.data.set."+this.id,this,n,t),this},h.removeData=function(t){return null==t?C[this.id]={}:C[this.id]&&delete C[this.id][t],this},h.outerSVG=h.toString=f(1),h.innerSVG=f(),h.toDataURL=function(){if(t&&t.btoa){var e=this.getBBox(),n=r.format('<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="{width}" height="{height}" viewBox="{x} {y} {width} {height}">{contents}</svg>',{x:+e.x.toFixed(3),y:+e.y.toFixed(3),width:+e.width.toFixed(3),height:+e.height.toFixed(3),contents:this.outerSVG()});return"data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent(n)))}},s.prototype.select=h.select,s.prototype.selectAll=h.selectAll}),r.plugin(function(t,e,n,r,i){function o(t,e,n,r,i,o){return null==e&&"[object SVGMatrix]"==a.call(t)?(this.a=t.a,this.b=t.b,this.c=t.c,this.d=t.d,this.e=t.e,void(this.f=t.f)):void(null!=t?(this.a=+t,this.b=+e,this.c=+n,this.d=+r,this.e=+i,this.f=+o):(this.a=1,this.b=0,this.c=0,this.d=1,this.e=0,this.f=0))}var a=Object.prototype.toString,s=String,u=Math,c="";!function(e){function n(t){return t[0]*t[0]+t[1]*t[1]}function r(t){var e=u.sqrt(n(t));t[0]&&(t[0]/=e),t[1]&&(t[1]/=e)}e.add=function(t,e,n,r,i,a){var s,u,c,l,f=[[],[],[]],h=[[this.a,this.c,this.e],[this.b,this.d,this.f],[0,0,1]],d=[[t,n,i],[e,r,a],[0,0,1]];for(t&&t instanceof o&&(d=[[t.a,t.c,t.e],[t.b,t.d,t.f],[0,0,1]]),s=0;s<3;s++)for(u=0;u<3;u++){for(l=0,c=0;c<3;c++)l+=h[s][c]*d[c][u];f[s][u]=l}return this.a=f[0][0],this.b=f[1][0],this.c=f[0][1],this.d=f[1][1],this.e=f[0][2],this.f=f[1][2],this},e.invert=function(){var t=this,e=t.a*t.d-t.b*t.c;return new o(t.d/e,-t.b/e,-t.c/e,t.a/e,(t.c*t.f-t.d*t.e)/e,(t.b*t.e-t.a*t.f)/e)},e.clone=function(){return new o(this.a,this.b,this.c,this.d,this.e,this.f)},e.translate=function(t,e){return this.add(1,0,0,1,t,e)},e.scale=function(t,e,n,r){return null==e&&(e=t),(n||r)&&this.add(1,0,0,1,n,r),this.add(t,0,0,e,0,0),(n||r)&&this.add(1,0,0,1,-n,-r),this},e.rotate=function(e,n,r){e=t.rad(e),n=n||0,r=r||0;var i=+u.cos(e).toFixed(9),o=+u.sin(e).toFixed(9);return this.add(i,o,-o,i,n,r),this.add(1,0,0,1,-n,-r)},e.x=function(t,e){return t*this.a+e*this.c+this.e},e.y=function(t,e){return t*this.b+e*this.d+this.f},e.get=function(t){return+this[s.fromCharCode(97+t)].toFixed(4)},e.toString=function(){return"matrix("+[this.get(0),this.get(1),this.get(2),this.get(3),this.get(4),this.get(5)].join()+")"},e.offset=function(){return[this.e.toFixed(4),this.f.toFixed(4)]},e.determinant=function(){return this.a*this.d-this.b*this.c},e.split=function(){var e={};e.dx=this.e,e.dy=this.f;var i=[[this.a,this.c],[this.b,this.d]];e.scalex=u.sqrt(n(i[0])),r(i[0]),e.shear=i[0][0]*i[1][0]+i[0][1]*i[1][1],i[1]=[i[1][0]-i[0][0]*e.shear,i[1][1]-i[0][1]*e.shear],e.scaley=u.sqrt(n(i[1])),r(i[1]),e.shear/=e.scaley,this.determinant()<0&&(e.scalex=-e.scalex);var o=-i[0][1],a=i[1][1];return a<0?(e.rotate=t.deg(u.acos(a)),o<0&&(e.rotate=360-e.rotate)):e.rotate=t.deg(u.asin(o)),e.isSimple=!(+e.shear.toFixed(9)||e.scalex.toFixed(9)!=e.scaley.toFixed(9)&&e.rotate),e.isSuperSimple=!+e.shear.toFixed(9)&&e.scalex.toFixed(9)==e.scaley.toFixed(9)&&!e.rotate,e.noRotation=!+e.shear.toFixed(9)&&!e.rotate,e},e.toTransformString=function(t){var e=t||this.split();return+e.shear.toFixed(9)?"m"+[this.get(0),this.get(1),this.get(2),this.get(3),this.get(4),this.get(5)]:(e.scalex=+e.scalex.toFixed(4),e.scaley=+e.scaley.toFixed(4),e.rotate=+e.rotate.toFixed(4),(e.dx||e.dy?"t"+[+e.dx.toFixed(4),+e.dy.toFixed(4)]:c)+(1!=e.scalex||1!=e.scaley?"s"+[e.scalex,e.scaley,0,0]:c)+(e.rotate?"r"+[+e.rotate.toFixed(4),0,0]:c))}}(o.prototype),t.Matrix=o,t.matrix=function(t,e,n,r,i,a){return new o(t,e,n,r,i,a)}}),r.plugin(function(t,n,r,i,o){function a(r){return function(i){if(e.stop(),i instanceof o&&1==i.node.childNodes.length&&("radialGradient"==i.node.firstChild.tagName||"linearGradient"==i.node.firstChild.tagName||"pattern"==i.node.firstChild.tagName)&&(i=i.node.firstChild,d(this).appendChild(i),i=f(i)),i instanceof n)if("radialGradient"==i.type||"linearGradient"==i.type||"pattern"==i.type){i.node.id||v(i.node,{id:i.id});var a=g(i.node.id)}else a=i.attr(r);else if(a=t.color(i),a.error){var s=t(d(this).ownerSVGElement).gradient(i);s?(s.node.id||v(s.node,{id:s.id}),a=g(s.node.id)):a=i}else a=m(a);var u={};u[r]=a,v(this.node,u),this.node.style[r]=b}}function s(t){e.stop(),t==+t&&(t+="px"),this.node.style.fontSize=t}function u(t){for(var e=[],n=t.childNodes,r=0,i=n.length;r<i;r++){var o=n[r];3==o.nodeType&&e.push(o.nodeValue),"tspan"==o.tagName&&(1==o.childNodes.length&&3==o.firstChild.nodeType?e.push(o.firstChild.nodeValue):e.push(u(o)))}return e}function c(){return e.stop(),this.node.style.fontSize}var l=t._.make,f=t._.wrap,h=t.is,d=t._.getSomeDefs,p=/^url\(#?([^)]+)\)$/,v=t._.$,g=t.url,m=String,y=t._.separator,b="";e.on("snap.util.attr.mask",function(t){if(t instanceof n||t instanceof o){if(e.stop(),t instanceof o&&1==t.node.childNodes.length&&(t=t.node.firstChild,d(this).appendChild(t),t=f(t)),"mask"==t.type)var r=t;else r=l("mask",d(this)),r.node.appendChild(t.node);!r.node.id&&v(r.node,{id:r.id}),v(this.node,{mask:g(r.id)})}}),function(t){e.on("snap.util.attr.clip",t),e.on("snap.util.attr.clip-path",t),e.on("snap.util.attr.clipPath",t)}(function(t){if(t instanceof n||t instanceof o){if(e.stop(),"clipPath"==t.type)var r=t;else r=l("clipPath",d(this)),r.node.appendChild(t.node),!r.node.id&&v(r.node,{id:r.id});v(this.node,{"clip-path":g(r.node.id||r.id)})}}),e.on("snap.util.attr.fill",a("fill")),e.on("snap.util.attr.stroke",a("stroke"));var x=/^([lr])(?:\(([^)]*)\))?(.*)$/i;e.on("snap.util.grad.parse",function(t){t=m(t);var e=t.match(x);if(!e)return null;var n=e[1],r=e[2],i=e[3];return r=r.split(/\s*,\s*/).map(function(t){return+t==t?+t:t}),1==r.length&&0==r[0]&&(r=[]),i=i.split("-"),i=i.map(function(t){t=t.split(":");var e={color:t[0]};return t[1]&&(e.offset=parseFloat(t[1])),e}),{type:n,params:r,stops:i}}),e.on("snap.util.attr.d",function(n){e.stop(),h(n,"array")&&h(n[0],"array")&&(n=t.path.toString.call(n)),n=m(n),n.match(/[ruo]/i)&&(n=t.path.toAbsolute(n)),v(this.node,{d:n})})(-1),e.on("snap.util.attr.#text",function(t){e.stop(),t=m(t);for(var n=i.doc.createTextNode(t);this.node.firstChild;)this.node.removeChild(this.node.firstChild);this.node.appendChild(n)})(-1),e.on("snap.util.attr.path",function(t){e.stop(),this.attr({d:t})})(-1),e.on("snap.util.attr.class",function(t){e.stop(),this.node.className.baseVal=t})(-1),e.on("snap.util.attr.viewBox",function(t){var n;n=h(t,"object")&&"x"in t?[t.x,t.y,t.width,t.height].join(" "):h(t,"array")?t.join(" "):t,v(this.node,{viewBox:n}),e.stop()})(-1),e.on("snap.util.attr.transform",function(t){this.transform(t),e.stop()})(-1),e.on("snap.util.attr.r",function(t){"rect"==this.type&&(e.stop(),v(this.node,{rx:t,ry:t}))})(-1),e.on("snap.util.attr.textpath",function(t){if(e.stop(),"text"==this.type){var r,i,o;if(!t&&this.textPath){for(i=this.textPath;i.node.firstChild;)this.node.appendChild(i.node.firstChild);return i.remove(),void delete this.textPath}if(h(t,"string")){var a=d(this),s=f(a.parentNode).path(t);a.appendChild(s.node),r=s.id,s.attr({id:r})}else t=f(t),t instanceof n&&(r=t.attr("id"),r||(r=t.id,t.attr({id:r})));if(r)if(i=this.textPath,o=this.node,i)i.attr({"xlink:href":"#"+r});else{for(i=v("textPath",{"xlink:href":"#"+r});o.firstChild;)i.appendChild(o.firstChild);o.appendChild(i),this.textPath=f(i)}}})(-1),e.on("snap.util.attr.text",function(t){if("text"==this.type){for(var n=this.node,r=function a(t){var e=v("tspan");if(h(t,"array"))for(var n=0;n<t.length;n++)e.appendChild(a(t[n]));else e.appendChild(i.doc.createTextNode(t));return e.normalize&&e.normalize(),e};n.firstChild;)n.removeChild(n.firstChild);for(var o=r(t);o.firstChild;)n.appendChild(o.firstChild)}e.stop()})(-1),e.on("snap.util.attr.fontSize",s)(-1),e.on("snap.util.attr.font-size",s)(-1),e.on("snap.util.getattr.transform",function(){return e.stop(),this.transform()})(-1),e.on("snap.util.getattr.textpath",function(){return e.stop(),this.textPath})(-1),function(){function n(n){return function(){e.stop();var r=i.doc.defaultView.getComputedStyle(this.node,null).getPropertyValue("marker-"+n);return"none"==r?r:t(i.doc.getElementById(r.match(p)[1]))}}function r(t){return function(n){e.stop();var r="marker"+t.charAt(0).toUpperCase()+t.substring(1);if(""==n||!n)return void(this.node.style[r]="none");if("marker"==n.type){var i=n.node.id;return i||v(n.node,{id:n.id}),void(this.node.style[r]=g(i))}}}e.on("snap.util.getattr.marker-end",n("end"))(-1),e.on("snap.util.getattr.markerEnd",n("end"))(-1),e.on("snap.util.getattr.marker-start",n("start"))(-1),e.on("snap.util.getattr.markerStart",n("start"))(-1),e.on("snap.util.getattr.marker-mid",n("mid"))(-1),e.on("snap.util.getattr.markerMid",n("mid"))(-1),e.on("snap.util.attr.marker-end",r("end"))(-1),e.on("snap.util.attr.markerEnd",r("end"))(-1),e.on("snap.util.attr.marker-start",r("start"))(-1),e.on("snap.util.attr.markerStart",r("start"))(-1),e.on("snap.util.attr.marker-mid",r("mid"))(-1),e.on("snap.util.attr.markerMid",r("mid"))(-1)}(),e.on("snap.util.getattr.r",function(){if("rect"==this.type&&v(this.node,"rx")==v(this.node,"ry"))return e.stop(),v(this.node,"rx")})(-1),e.on("snap.util.getattr.text",function(){if("text"==this.type||"tspan"==this.type){e.stop();var t=u(this.node);return 1==t.length?t[0]:t}})(-1),e.on("snap.util.getattr.#text",function(){return this.node.textContent})(-1),e.on("snap.util.getattr.viewBox",function(){e.stop();var n=v(this.node,"viewBox");return n?(n=n.split(y),t._.box(+n[0],+n[1],+n[2],+n[3])):void 0})(-1),e.on("snap.util.getattr.points",function(){var t=v(this.node,"points");return e.stop(),t?t.split(y):void 0})(-1),e.on("snap.util.getattr.path",function(){var t=v(this.node,"d");return e.stop(),t})(-1),e.on("snap.util.getattr.class",function(){return this.node.className.baseVal})(-1),e.on("snap.util.getattr.fontSize",c)(-1),e.on("snap.util.getattr.font-size",c)(-1)}),r.plugin(function(t,e,n,r,i){var o=/\S+/g,a=String,s=e.prototype;s.addClass=function(t){var e,n,r,i,s=a(t||"").match(o)||[],u=this.node,c=u.className.baseVal,l=c.match(o)||[];if(s.length){for(e=0;r=s[e++];)n=l.indexOf(r),~n||l.push(r);i=l.join(" "),c!=i&&(u.className.baseVal=i)}return this},s.removeClass=function(t){var e,n,r,i,s=a(t||"").match(o)||[],u=this.node,c=u.className.baseVal,l=c.match(o)||[];if(l.length){for(e=0;r=s[e++];)n=l.indexOf(r),~n&&l.splice(n,1);i=l.join(" "),c!=i&&(u.className.baseVal=i)}return this},s.hasClass=function(t){var e=this.node,n=e.className.baseVal,r=n.match(o)||[];return!!~r.indexOf(t)},s.toggleClass=function(t,e){if(null!=e)return e?this.addClass(t):this.removeClass(t);var n,r,i,a,s=(t||"").match(o)||[],u=this.node,c=u.className.baseVal,l=c.match(o)||[];for(n=0;i=s[n++];)r=l.indexOf(i),~r?l.splice(r,1):l.push(i);return a=l.join(" "),c!=a&&(u.className.baseVal=a),this}}),r.plugin(function(t,n,r,i,o){function a(t){return t}function s(t){return function(e){return+e.toFixed(3)+t}}var u={"+":function(t,e){return t+e},"-":function(t,e){return t-e},"/":function(t,e){return t/e},"*":function(t,e){return t*e}},c=String,l=/[a-z]+$/i,f=/^\s*([+\-\/*])\s*=\s*([\d.eE+\-]+)\s*([^\d\s]+)?\s*$/;e.on("snap.util.attr",function(t){var n=c(t).match(f);if(n){var r=e.nt(),i=r.substring(r.lastIndexOf(".")+1),o=this.attr(i),a={};e.stop();var s=n[3]||"",h=o.match(l),d=u[n[1]];if(h&&h==s?t=d(parseFloat(o),+n[2]):(o=this.asPX(i),t=d(this.asPX(i),this.asPX(i,n[2]+s))),isNaN(o)||isNaN(t))return;a[i]=t,this.attr(a)}})(-10),e.on("snap.util.equal",function(t,n){var r=c(this.attr(t)||""),i=c(n).match(f);if(i){e.stop();var o=i[3]||"",h=r.match(l),d=u[i[1]];return h&&h==o?{from:parseFloat(r),to:d(parseFloat(r),+i[2]),f:s(h)}:(r=this.asPX(t),{from:r,to:d(r,this.asPX(t,i[2]+o)),f:a})}})(-10)}),r.plugin(function(n,r,i,o,a){var s=i.prototype,u=n.is;s.rect=function(t,e,n,r,i,o){var a;return null==o&&(o=i),u(t,"object")&&"[object Object]"==t?a=t:null!=t&&(a={x:t,y:e,width:n,height:r},null!=i&&(a.rx=i,a.ry=o)),this.el("rect",a)},s.circle=function(t,e,n){var r;return u(t,"object")&&"[object Object]"==t?r=t:null!=t&&(r={cx:t,cy:e,r:n}),this.el("circle",r)};var c=function(){function t(){this.parentNode.removeChild(this)}return function(e,n){var r=o.doc.createElement("img"),i=o.doc.body;r.style.cssText="position:absolute;left:-9999em;top:-9999em",r.onload=function(){n.call(r),r.onload=r.onerror=null,i.removeChild(r)},r.onerror=t,i.appendChild(r),r.src=e}}();s.image=function(t,e,r,i,o){var a=this.el("image");if(u(t,"object")&&"src"in t)a.attr(t);else if(null!=t){var s={"xlink:href":t,preserveAspectRatio:"none"};null!=e&&null!=r&&(s.x=e,s.y=r),null!=i&&null!=o?(s.width=i,s.height=o):c(t,function(){n._.$(a.node,{width:this.offsetWidth,height:this.offsetHeight})}),n._.$(a.node,s)}return a},s.ellipse=function(t,e,n,r){var i;return u(t,"object")&&"[object Object]"==t?i=t:null!=t&&(i={cx:t,cy:e,rx:n,ry:r}),this.el("ellipse",i)},s.path=function(t){var e;return u(t,"object")&&!u(t,"array")?e=t:t&&(e={d:t}),this.el("path",e)},s.group=s.g=function(t){var e=this.el("g");return 1==arguments.length&&t&&!t.type?e.attr(t):arguments.length&&e.add(Array.prototype.slice.call(arguments,0)),e},s.svg=function(t,e,n,r,i,o,a,s){var c={};return u(t,"object")&&null==e?c=t:(null!=t&&(c.x=t),null!=e&&(c.y=e),null!=n&&(c.width=n),null!=r&&(c.height=r),null!=i&&null!=o&&null!=a&&null!=s&&(c.viewBox=[i,o,a,s])),this.el("svg",c)},s.mask=function(t){var e=this.el("mask");return 1==arguments.length&&t&&!t.type?e.attr(t):arguments.length&&e.add(Array.prototype.slice.call(arguments,0)),e},s.ptrn=function(t,e,n,r,i,o,a,s){if(u(t,"object"))var c=t;else c={patternUnits:"userSpaceOnUse"},t&&(c.x=t),e&&(c.y=e),null!=n&&(c.width=n),null!=r&&(c.height=r),null!=i&&null!=o&&null!=a&&null!=s?c.viewBox=[i,o,a,s]:c.viewBox=[t||0,e||0,n||0,r||0];return this.el("pattern",c)},s.use=function(t){return null!=t?(t instanceof r&&(t.attr("id")||t.attr({id:n._.id(t)}),t=t.attr("id")),"#"==String(t).charAt()&&(t=t.substring(1)),this.el("use",{"xlink:href":"#"+t})):r.prototype.use.call(this)},s.symbol=function(t,e,n,r){var i={};return null!=t&&null!=e&&null!=n&&null!=r&&(i.viewBox=[t,e,n,r]),this.el("symbol",i)},s.text=function(t,e,n){var r={};return u(t,"object")?r=t:null!=t&&(r={x:t,y:e,text:n||""}),this.el("text",r)},s.line=function(t,e,n,r){var i={};return u(t,"object")?i=t:null!=t&&(i={x1:t,x2:n,y1:e,y2:r}),this.el("line",i)},s.polyline=function(t){arguments.length>1&&(t=Array.prototype.slice.call(arguments,0));var e={};return u(t,"object")&&!u(t,"array")?e=t:null!=t&&(e={points:t}),this.el("polyline",e)},s.polygon=function(t){arguments.length>1&&(t=Array.prototype.slice.call(arguments,0));var e={};return u(t,"object")&&!u(t,"array")?e=t:null!=t&&(e={points:t}),this.el("polygon",e)},function(){function r(){return this.selectAll("stop")}function i(t,e){var r=l("stop"),i={offset:+e+"%"};return t=n.color(t),i["stop-color"]=t.hex,t.opacity<1&&(i["stop-opacity"]=t.opacity),l(r,i),this.node.appendChild(r),this}function o(){if("linearGradient"==this.type){var t=l(this.node,"x1")||0,e=l(this.node,"x2")||1,r=l(this.node,"y1")||0,i=l(this.node,"y2")||0;return n._.box(t,r,math.abs(e-t),math.abs(i-r))}var o=this.node.cx||.5,a=this.node.cy||.5,s=this.node.r||0;return n._.box(o-s,a-s,2*s,2*s)}function a(t,n){function r(t,e){for(var n=(e-f)/(t-h),r=h;r<t;r++)a[r].offset=+(+f+n*(r-h)).toFixed(2);h=t,f=e}var i,o=e("snap.util.grad.parse",null,n).firstDefined();if(!o)return null;o.params.unshift(t),i="l"==o.type.toLowerCase()?u.apply(0,o.params):c.apply(0,o.params),o.type!=o.type.toLowerCase()&&l(i.node,{gradientUnits:"userSpaceOnUse"});var a=o.stops,s=a.length,f=0,h=0;s--;for(var d=0;d<s;d++)"offset"in a[d]&&r(d,a[d].offset);for(a[s].offset=a[s].offset||100,r(s,a[s].offset),d=0;d<=s;d++){var p=a[d];i.addStop(p.color,p.offset)}return i}function u(t,e,a,s,u){var c=n._.make("linearGradient",t);return c.stops=r,c.addStop=i,c.getBBox=o,null!=e&&l(c.node,{x1:e,y1:a,x2:s,y2:u}),c}function c(t,e,a,s,u,c){var f=n._.make("radialGradient",t);return f.stops=r,f.addStop=i,f.getBBox=o,null!=e&&l(f.node,{cx:e,cy:a,r:s}),null!=u&&null!=c&&l(f.node,{fx:u,fy:c}),f}var l=n._.$;s.gradient=function(t){return a(this.defs,t)},s.gradientLinear=function(t,e,n,r){return u(this.defs,t,e,n,r)},s.gradientRadial=function(t,e,n,r,i){return c(this.defs,t,e,n,r,i)},s.toString=function(){var t,e=this.node.ownerDocument,r=e.createDocumentFragment(),i=e.createElement("div"),o=this.node.cloneNode(!0);return r.appendChild(i),i.appendChild(o),n._.$(o,{xmlns:"http://www.w3.org/2000/svg"}),t=i.innerHTML,r.removeChild(r.firstChild),t},s.toDataURL=function(){if(t&&t.btoa)return"data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent(this)))},s.clear=function(){for(var t,e=this.node.firstChild;e;)t=e.nextSibling,"defs"!=e.tagName?e.parentNode.removeChild(e):s.clear.call({node:e}),e=t}}()}),r.plugin(function(t,e,n,r){function i(t){var e=i.ps=i.ps||{};return e[t]?e[t].sleep=100:e[t]={sleep:100},setTimeout(function(){for(var n in e)e[L](n)&&n!=t&&(e[n].sleep--,!e[n].sleep&&delete e[n])}),e[t]}function o(t,e,n,r){return null==t&&(t=e=n=r=0),null==e&&(e=t.y,n=t.width,r=t.height,t=t.x),{x:t,y:e,width:n,w:n,height:r,h:r,x2:t+n,y2:e+r,cx:t+n/2,cy:e+r/2,r1:q.min(n,r)/2,r2:q.max(n,r)/2,r0:q.sqrt(n*n+r*r)/2,path:k(t,e,n,r),vb:[t,e,n,r].join(" ")}}function a(){return this.join(",").replace(R,"$1")}function s(t){var e=B(t);return e.toString=a,e}function u(t,e,n,r,i,o,a,s,u){return null==u?v(t,e,n,r,i,o,a,s):l(t,e,n,r,i,o,a,s,g(t,e,n,r,i,o,a,s,u))}function c(n,r){function i(t){return+(+t).toFixed(3)}return t._.cacher(function(t,o,a){t instanceof e&&(t=t.attr("d")),t=N(t);for(var s,c,f,h,d,p="",v={},g=0,m=0,y=t.length;m<y;m++){if(f=t[m],"M"==f[0])s=+f[1],c=+f[2];else{if(h=u(s,c,f[1],f[2],f[3],f[4],f[5],f[6]),g+h>o){if(r&&!v.start){if(d=u(s,c,f[1],f[2],f[3],f[4],f[5],f[6],o-g),p+=["C"+i(d.start.x),i(d.start.y),i(d.m.x),i(d.m.y),i(d.x),i(d.y)],a)return p;v.start=p,p=["M"+i(d.x),i(d.y)+"C"+i(d.n.x),i(d.n.y),i(d.end.x),i(d.end.y),i(f[5]),i(f[6])].join(),g+=h,s=+f[5],c=+f[6];continue}if(!n&&!r)return d=u(s,c,f[1],f[2],f[3],f[4],f[5],f[6],o-g)}g+=h,s=+f[5],c=+f[6]}p+=f.shift()+f}return v.end=p,d=n?g:r?v:l(s,c,f[0],f[1],f[2],f[3],f[4],f[5],1)},null,t._.clone)}function l(t,e,n,r,i,o,a,s,u){var c=1-u,l=U(c,3),f=U(c,2),h=u*u,d=h*u,p=l*t+3*f*u*n+3*c*u*u*i+d*a,v=l*e+3*f*u*r+3*c*u*u*o+d*s,g=t+2*u*(n-t)+h*(i-2*n+t),m=e+2*u*(r-e)+h*(o-2*r+e),y=n+2*u*(i-n)+h*(a-2*i+n),b=r+2*u*(o-r)+h*(s-2*o+r),x=c*t+u*n,w=c*e+u*r,_=c*i+u*a,C=c*o+u*s,k=90-180*q.atan2(g-y,m-b)/H;return{x:p,y:v,m:{x:g,y:m},n:{x:y,y:b},start:{x:x,y:w},end:{x:_,y:C},alpha:k}}function f(e,n,r,i,a,s,u,c){t.is(e,"array")||(e=[e,n,r,i,a,s,u,c]);var l=O.apply(null,e);return o(l.min.x,l.min.y,l.max.x-l.min.x,l.max.y-l.min.y)}function h(t,e,n){return e>=t.x&&e<=t.x+t.width&&n>=t.y&&n<=t.y+t.height}function d(t,e){return t=o(t),e=o(e),h(e,t.x,t.y)||h(e,t.x2,t.y)||h(e,t.x,t.y2)||h(e,t.x2,t.y2)||h(t,e.x,e.y)||h(t,e.x2,e.y)||h(t,e.x,e.y2)||h(t,e.x2,e.y2)||(t.x<e.x2&&t.x>e.x||e.x<t.x2&&e.x>t.x)&&(t.y<e.y2&&t.y>e.y||e.y<t.y2&&e.y>t.y)}function p(t,e,n,r,i){var o=-3*e+9*n-9*r+3*i,a=t*o+6*e-12*n+6*r;return t*a-3*e+3*n}function v(t,e,n,r,i,o,a,s,u){null==u&&(u=1),u=u>1?1:u<0?0:u;for(var c=u/2,l=12,f=[-.1252,.1252,-.3678,.3678,-.5873,.5873,-.7699,.7699,-.9041,.9041,-.9816,.9816],h=[.2491,.2491,.2335,.2335,.2032,.2032,.1601,.1601,.1069,.1069,.0472,.0472],d=0,v=0;v<l;v++){var g=c*f[v]+c,m=p(g,t,n,i,a),y=p(g,e,r,o,s),b=m*m+y*y;d+=h[v]*q.sqrt(b)}return c*d}function g(t,e,n,r,i,o,a,s,u){if(!(u<0||v(t,e,n,r,i,o,a,s)<u)){var c,l=1,f=l/2,h=l-f,d=.01;for(c=v(t,e,n,r,i,o,a,s,h);W(c-u)>d;)f/=2,h+=(c<u?1:-1)*f,c=v(t,e,n,r,i,o,a,s,h);return h}}function m(t,e,n,r,i,o,a,s){if(!(V(t,n)<z(i,a)||z(t,n)>V(i,a)||V(e,r)<z(o,s)||z(e,r)>V(o,s))){var u=(t*r-e*n)*(i-a)-(t-n)*(i*s-o*a),c=(t*r-e*n)*(o-s)-(e-r)*(i*s-o*a),l=(t-n)*(o-s)-(e-r)*(i-a);if(l){var f=u/l,h=c/l,d=+f.toFixed(2),p=+h.toFixed(2);if(!(d<+z(t,n).toFixed(2)||d>+V(t,n).toFixed(2)||d<+z(i,a).toFixed(2)||d>+V(i,a).toFixed(2)||p<+z(e,r).toFixed(2)||p>+V(e,r).toFixed(2)||p<+z(o,s).toFixed(2)||p>+V(o,s).toFixed(2)))return{x:f,y:h}}}}function y(t,e,n){var r=f(t),i=f(e);if(!d(r,i))return n?0:[];for(var o=v.apply(0,t),a=v.apply(0,e),s=~~(o/8),u=~~(a/8),c=[],h=[],p={},g=n?0:[],y=0;y<s+1;y++){var b=l.apply(0,t.concat(y/s));c.push({x:b.x,y:b.y,t:y/s})}for(y=0;y<u+1;y++)b=l.apply(0,e.concat(y/u)),h.push({x:b.x,y:b.y,t:y/u});for(y=0;y<s;y++)for(var x=0;x<u;x++){var w=c[y],_=c[y+1],C=h[x],k=h[x+1],T=W(_.x-w.x)<.001?"y":"x",A=W(k.x-C.x)<.001?"y":"x",S=m(w.x,w.y,_.x,_.y,C.x,C.y,k.x,k.y);if(S){if(p[S.x.toFixed(4)]==S.y.toFixed(4))continue;p[S.x.toFixed(4)]=S.y.toFixed(4);var $=w.t+W((S[T]-w[T])/(_[T]-w[T]))*(_.t-w.t),E=C.t+W((S[A]-C[A])/(k[A]-C[A]))*(k.t-C.t);$>=0&&$<=1&&E>=0&&E<=1&&(n?g++:g.push({x:S.x,y:S.y,t1:$,t2:E}))}}return g}function b(t,e){return w(t,e)}function x(t,e){return w(t,e,1)}function w(t,e,n){t=N(t),e=N(e);for(var r,i,o,a,s,u,c,l,f,h,d=n?0:[],p=0,v=t.length;p<v;p++){var g=t[p];if("M"==g[0])r=s=g[1],i=u=g[2];else{"C"==g[0]?(f=[r,i].concat(g.slice(1)),r=f[6],i=f[7]):(f=[r,i,r,i,s,u,s,u],r=s,i=u);for(var m=0,b=e.length;m<b;m++){var x=e[m];if("M"==x[0])o=c=x[1],a=l=x[2];else{"C"==x[0]?(h=[o,a].concat(x.slice(1)),o=h[6],a=h[7]):(h=[o,a,o,a,c,l,c,l],o=c,a=l);var w=y(f,h,n);if(n)d+=w;else{for(var _=0,C=w.length;_<C;_++)w[_].segment1=p,w[_].segment2=m,w[_].bez1=f,w[_].bez2=h;d=d.concat(w)}}}}}return d}function _(t,e,n){var r=C(t);return h(r,e,n)&&w(t,[["M",e,n],["H",r.x2+10]],1)%2==1}function C(t){var e=i(t);if(e.bbox)return B(e.bbox);if(!t)return o();t=N(t);for(var n,r=0,a=0,s=[],u=[],c=0,l=t.length;c<l;c++)if(n=t[c],"M"==n[0])r=n[1],a=n[2],s.push(r),u.push(a);else{var f=O(r,a,n[1],n[2],n[3],n[4],n[5],n[6]);s=s.concat(f.min.x,f.max.x),u=u.concat(f.min.y,f.max.y),r=n[5],a=n[6]}var h=z.apply(0,s),d=z.apply(0,u),p=V.apply(0,s),v=V.apply(0,u),g=o(h,d,p-h,v-d);return e.bbox=B(g),g}function k(t,e,n,r,i){if(i)return[["M",+t+ +i,e],["l",n-2*i,0],["a",i,i,0,0,1,i,i],["l",0,r-2*i],["a",i,i,0,0,1,-i,i],["l",2*i-n,0],["a",i,i,0,0,1,-i,-i],["l",0,2*i-r],["a",i,i,0,0,1,i,-i],["z"]];var o=[["M",t,e],["l",n,0],["l",0,r],["l",-n,0],["z"]];return o.toString=a,o}function T(t,e,n,r,i){if(null==i&&null==r&&(r=n),t=+t,e=+e,n=+n,r=+r,null!=i)var o=Math.PI/180,s=t+n*Math.cos(-r*o),u=t+n*Math.cos(-i*o),c=e+n*Math.sin(-r*o),l=e+n*Math.sin(-i*o),f=[["M",s,c],["A",n,n,0,+(i-r>180),0,u,l]];else f=[["M",t,e],["m",0,-r],["a",n,r,0,1,1,0,2*r],["a",n,r,0,1,1,0,-2*r],["z"]];return f.toString=a,f}function A(e){var n=i(e),r=String.prototype.toLowerCase;if(n.rel)return s(n.rel);t.is(e,"array")&&t.is(e&&e[0],"array")||(e=t.parsePathString(e));var o=[],u=0,c=0,l=0,f=0,h=0;"M"==e[0][0]&&(u=e[0][1],c=e[0][2],l=u,f=c,h++,o.push(["M",u,c]));for(var d=h,p=e.length;d<p;d++){var v=o[d]=[],g=e[d];if(g[0]!=r.call(g[0]))switch(v[0]=r.call(g[0]),v[0]){case"a":v[1]=g[1],v[2]=g[2],v[3]=g[3],v[4]=g[4],v[5]=g[5],v[6]=+(g[6]-u).toFixed(3),v[7]=+(g[7]-c).toFixed(3);break;case"v":v[1]=+(g[1]-c).toFixed(3);break;case"m":l=g[1],f=g[2];default:for(var m=1,y=g.length;m<y;m++)v[m]=+(g[m]-(m%2?u:c)).toFixed(3)}else{v=o[d]=[],"m"==g[0]&&(l=g[1]+u,f=g[2]+c);for(var b=0,x=g.length;b<x;b++)o[d][b]=g[b]}var w=o[d].length;switch(o[d][0]){case"z":u=l,c=f;break;case"h":u+=+o[d][w-1];break;case"v":c+=+o[d][w-1];break;default:u+=+o[d][w-2],c+=+o[d][w-1]}}return o.toString=a,n.rel=s(o),o}function S(e){var n=i(e);if(n.abs)return s(n.abs);if(F(e,"array")&&F(e&&e[0],"array")||(e=t.parsePathString(e)),!e||!e.length)return[["M",0,0]];var r,o=[],u=0,c=0,l=0,f=0,h=0;"M"==e[0][0]&&(u=+e[0][1],c=+e[0][2],l=u,f=c,h++,o[0]=["M",u,c]);for(var d,p,v=3==e.length&&"M"==e[0][0]&&"R"==e[1][0].toUpperCase()&&"Z"==e[2][0].toUpperCase(),g=h,m=e.length;g<m;g++){if(o.push(d=[]),p=e[g],r=p[0],r!=r.toUpperCase())switch(d[0]=r.toUpperCase(),d[0]){case"A":d[1]=p[1],d[2]=p[2],d[3]=p[3],d[4]=p[4],d[5]=p[5],d[6]=+p[6]+u,d[7]=+p[7]+c;break;case"V":d[1]=+p[1]+c;break;case"H":d[1]=+p[1]+u;break;case"R":for(var y=[u,c].concat(p.slice(1)),b=2,x=y.length;b<x;b++)y[b]=+y[b]+u,y[++b]=+y[b]+c;o.pop(),o=o.concat(M(y,v));break;case"O":o.pop(),y=T(u,c,p[1],p[2]),y.push(y[0]),o=o.concat(y);break;case"U":o.pop(),o=o.concat(T(u,c,p[1],p[2],p[3])),d=["U"].concat(o[o.length-1].slice(-2));break;case"M":l=+p[1]+u,f=+p[2]+c;default:for(b=1,x=p.length;b<x;b++)d[b]=+p[b]+(b%2?u:c)}else if("R"==r)y=[u,c].concat(p.slice(1)),o.pop(),o=o.concat(M(y,v)),d=["R"].concat(p.slice(-2));else if("O"==r)o.pop(),y=T(u,c,p[1],p[2]),y.push(y[0]),o=o.concat(y);else if("U"==r)o.pop(),o=o.concat(T(u,c,p[1],p[2],p[3])),d=["U"].concat(o[o.length-1].slice(-2));else for(var w=0,_=p.length;w<_;w++)d[w]=p[w];if(r=r.toUpperCase(),"O"!=r)switch(d[0]){case"Z":u=+l,c=+f;break;case"H":u=d[1];break;case"V":c=d[1];break;case"M":l=d[d.length-2],f=d[d.length-1];default:u=d[d.length-2],c=d[d.length-1]}}return o.toString=a,n.abs=s(o),o}function $(t,e,n,r){return[t,e,n,r,n,r]}function E(t,e,n,r,i,o){var a=1/3,s=2/3;return[a*t+s*n,a*e+s*r,a*i+s*n,a*o+s*r,i,o]}function j(e,n,r,i,o,a,s,u,c,l){var f,h=120*H/180,d=H/180*(+o||0),p=[],v=t._.cacher(function(t,e,n){var r=t*q.cos(n)-e*q.sin(n),i=t*q.sin(n)+e*q.cos(n);return{x:r,y:i}});if(l)k=l[0],T=l[1],_=l[2],C=l[3];else{f=v(e,n,-d),e=f.x,n=f.y,f=v(u,c,-d),u=f.x,c=f.y;var g=(q.cos(H/180*o),q.sin(H/180*o),(e-u)/2),m=(n-c)/2,y=g*g/(r*r)+m*m/(i*i);y>1&&(y=q.sqrt(y),r=y*r,i=y*i);var b=r*r,x=i*i,w=(a==s?-1:1)*q.sqrt(W((b*x-b*m*m-x*g*g)/(b*m*m+x*g*g))),_=w*r*m/i+(e+u)/2,C=w*-i*g/r+(n+c)/2,k=q.asin(((n-C)/i).toFixed(9)),T=q.asin(((c-C)/i).toFixed(9));k=e<_?H-k:k,T=u<_?H-T:T,k<0&&(k=2*H+k),T<0&&(T=2*H+T),s&&k>T&&(k-=2*H),!s&&T>k&&(T-=2*H)}var A=T-k;if(W(A)>h){var S=T,$=u,E=c;T=k+h*(s&&T>k?1:-1),u=_+r*q.cos(T),c=C+i*q.sin(T),p=j(u,c,r,i,o,0,s,$,E,[T,S,_,C])}A=T-k;var O=q.cos(k),N=q.sin(k),D=q.cos(T),M=q.sin(T),P=q.tan(A/4),F=4/3*r*P,B=4/3*i*P,L=[e,n],R=[e+F*N,n-B*O],I=[u+F*M,c-B*D],z=[u,c];if(R[0]=2*L[0]-R[0],R[1]=2*L[1]-R[1],l)return[R,I,z].concat(p);p=[R,I,z].concat(p).join().split(",");for(var V=[],U=0,X=p.length;U<X;U++)V[U]=U%2?v(p[U-1],p[U],d).y:v(p[U],p[U+1],d).x;return V}function O(t,e,n,r,i,o,a,s){for(var u,c,l,f,h,d,p,v,g=[],m=[[],[]],y=0;y<2;++y)if(0==y?(c=6*t-12*n+6*i,u=-3*t+9*n-9*i+3*a,l=3*n-3*t):(c=6*e-12*r+6*o,u=-3*e+9*r-9*o+3*s,l=3*r-3*e),W(u)<1e-12){if(W(c)<1e-12)continue;f=-l/c,0<f&&f<1&&g.push(f)}else p=c*c-4*l*u,v=q.sqrt(p),p<0||(h=(-c+v)/(2*u),0<h&&h<1&&g.push(h),d=(-c-v)/(2*u),0<d&&d<1&&g.push(d));for(var b,x=g.length,w=x;x--;)f=g[x],b=1-f,m[0][x]=b*b*b*t+3*b*b*f*n+3*b*f*f*i+f*f*f*a,m[1][x]=b*b*b*e+3*b*b*f*r+3*b*f*f*o+f*f*f*s;return m[0][w]=t,m[1][w]=e,m[0][w+1]=a,m[1][w+1]=s,m[0].length=m[1].length=w+2,{min:{x:z.apply(0,m[0]),y:z.apply(0,m[1])},max:{x:V.apply(0,m[0]),y:V.apply(0,m[1])}}}function N(t,e){var n=!e&&i(t);if(!e&&n.curve)return s(n.curve);for(var r=S(t),o=e&&S(e),a={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},u={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},c=(function(t,e,n){var r,i;if(!t)return["C",e.x,e.y,e.x,e.y,e.x,e.y];switch(!(t[0]in{T:1,Q:1})&&(e.qx=e.qy=null),t[0]){case"M":e.X=t[1],e.Y=t[2];break;case"A":t=["C"].concat(j.apply(0,[e.x,e.y].concat(t.slice(1))));break;case"S":"C"==n||"S"==n?(r=2*e.x-e.bx,i=2*e.y-e.by):(r=e.x,i=e.y),t=["C",r,i].concat(t.slice(1));break;case"T":"Q"==n||"T"==n?(e.qx=2*e.x-e.qx,e.qy=2*e.y-e.qy):(e.qx=e.x,e.qy=e.y),t=["C"].concat(E(e.x,e.y,e.qx,e.qy,t[1],t[2]));break;case"Q":e.qx=t[1],e.qy=t[2],t=["C"].concat(E(e.x,e.y,t[1],t[2],t[3],t[4]));break;case"L":t=["C"].concat($(e.x,e.y,t[1],t[2]));break;case"H":t=["C"].concat($(e.x,e.y,t[1],e.y));break;case"V":t=["C"].concat($(e.x,e.y,e.x,t[1]));break;case"Z":t=["C"].concat($(e.x,e.y,e.X,e.Y))}return t}),l=function(t,e){if(t[e].length>7){t[e].shift();for(var n=t[e];n.length;)h[e]="A",o&&(d[e]="A"),t.splice(e++,0,["C"].concat(n.splice(0,6)));t.splice(e,1),m=V(r.length,o&&o.length||0)}},f=function(t,e,n,i,a){t&&e&&"M"==t[a][0]&&"M"!=e[a][0]&&(e.splice(a,0,["M",i.x,i.y]),n.bx=0,n.by=0,n.x=t[a][1],n.y=t[a][2],m=V(r.length,o&&o.length||0))},h=[],d=[],p="",v="",g=0,m=V(r.length,o&&o.length||0);g<m;g++){r[g]&&(p=r[g][0]),"C"!=p&&(h[g]=p,g&&(v=h[g-1])),r[g]=c(r[g],a,v),"A"!=h[g]&&"C"==p&&(h[g]="C"),l(r,g),o&&(o[g]&&(p=o[g][0]),"C"!=p&&(d[g]=p,g&&(v=d[g-1])),o[g]=c(o[g],u,v),"A"!=d[g]&&"C"==p&&(d[g]="C"),l(o,g)),f(r,o,a,u,g),f(o,r,u,a,g);var y=r[g],b=o&&o[g],x=y.length,w=o&&b.length;a.x=y[x-2],a.y=y[x-1],a.bx=I(y[x-4])||a.x,a.by=I(y[x-3])||a.y,u.bx=o&&(I(b[w-4])||u.x),u.by=o&&(I(b[w-3])||u.y),u.x=o&&b[w-2],u.y=o&&b[w-1]}return o||(n.curve=s(r)),o?[r,o]:r}function D(t,e){if(!e)return t;var n,r,i,o,a,s,u;for(t=N(t),i=0,a=t.length;i<a;i++)for(u=t[i],o=1,s=u.length;o<s;o+=2)n=e.x(u[o],u[o+1]),r=e.y(u[o],u[o+1]),u[o]=n,u[o+1]=r;return t}function M(t,e){for(var n=[],r=0,i=t.length;i-2*!e>r;r+=2){var o=[{x:+t[r-2],y:+t[r-1]},{x:+t[r],y:+t[r+1]},{x:+t[r+2],y:+t[r+3]},{x:+t[r+4],y:+t[r+5]}];e?r?i-4==r?o[3]={x:+t[0],y:+t[1]}:i-2==r&&(o[2]={x:+t[0],y:+t[1]},o[3]={x:+t[2],y:+t[3]}):o[0]={x:+t[i-2],y:+t[i-1]}:i-4==r?o[3]=o[2]:r||(o[0]={x:+t[r],y:+t[r+1]}),n.push(["C",(-o[0].x+6*o[1].x+o[2].x)/6,(-o[0].y+6*o[1].y+o[2].y)/6,(o[1].x+6*o[2].x-o[3].x)/6,(o[1].y+6*o[2].y-o[3].y)/6,o[2].x,o[2].y])}return n}var P=e.prototype,F=t.is,B=t._.clone,L="hasOwnProperty",R=/,?([a-z]),?/gi,I=parseFloat,q=Math,H=q.PI,z=q.min,V=q.max,U=q.pow,W=q.abs,X=c(1),G=c(),Z=c(0,1),J=t._unit2px,Y={path:function(t){return t.attr("path")},circle:function(t){var e=J(t);return T(e.cx,e.cy,e.r)},ellipse:function(t){var e=J(t);return T(e.cx||0,e.cy||0,e.rx,e.ry)},rect:function(t){var e=J(t);return k(e.x||0,e.y||0,e.width,e.height,e.rx,e.ry)},image:function(t){var e=J(t);return k(e.x||0,e.y||0,e.width,e.height)},line:function(t){return"M"+[t.attr("x1")||0,t.attr("y1")||0,t.attr("x2"),t.attr("y2")]},polyline:function(t){return"M"+t.attr("points")},polygon:function(t){return"M"+t.attr("points")+"z"},deflt:function(t){var e=t.node.getBBox();return k(e.x,e.y,e.width,e.height)}};t.path=i,t.path.getTotalLength=X,t.path.getPointAtLength=G,t.path.getSubpath=function(t,e,n){if(this.getTotalLength(t)-n<1e-6)return Z(t,e).end;var r=Z(t,n,1);return e?Z(r,e).end:r},P.getTotalLength=function(){if(this.node.getTotalLength)return this.node.getTotalLength()},P.getPointAtLength=function(t){return G(this.attr("d"),t)},P.getSubpath=function(e,n){return t.path.getSubpath(this.attr("d"),e,n)},t._.box=o,t.path.findDotsAtSegment=l,t.path.bezierBBox=f,t.path.isPointInsideBBox=h,t.closest=function(e,n,r,i){for(var a=100,s=o(e-a/2,n-a/2,a,a),u=[],c=r[0].hasOwnProperty("x")?function(t){return{x:r[t].x,y:r[t].y}}:function(t){return{x:r[t],y:i[t]}},l=0;a<=1e6&&!l;){for(var f=0,d=r.length;f<d;f++){
var p=c(f);if(h(s,p.x,p.y)){l++,u.push(p);break}}l||(a*=2,s=o(e-a/2,n-a/2,a,a))}if(1e6!=a){var v,g=1/0;for(f=0,d=u.length;f<d;f++){var m=t.len(e,n,u[f].x,u[f].y);g>m&&(g=m,u[f].len=m,v=u[f])}return v}},t.path.isBBoxIntersect=d,t.path.intersection=b,t.path.intersectionNumber=x,t.path.isPointInside=_,t.path.getBBox=C,t.path.get=Y,t.path.toRelative=A,t.path.toAbsolute=S,t.path.toCubic=N,t.path.map=D,t.path.toString=a,t.path.clone=s}),r.plugin(function(t,r,i,o){var a=Math.max,s=Math.min,u=function(t){if(this.items=[],this.bindings={},this.length=0,this.type="set",t)for(var e=0,n=t.length;e<n;e++)t[e]&&(this[this.items.length]=this.items[this.items.length]=t[e],this.length++)},c=u.prototype;c.push=function(){for(var t,e,n=0,r=arguments.length;n<r;n++)t=arguments[n],t&&(e=this.items.length,this[e]=this.items[e]=t,this.length++);return this},c.pop=function(){return this.length&&delete this[this.length--],this.items.pop()},c.forEach=function(t,e){for(var n=0,r=this.items.length;n<r;n++)if(t.call(e,this.items[n],n)===!1)return this;return this},c.animate=function(r,i,o,a){"function"!=typeof o||o.length||(a=o,o=n.linear),r instanceof t._.Animation&&(a=r.callback,o=r.easing,i=o.dur,r=r.attr);var s=arguments;if(t.is(r,"array")&&t.is(s[s.length-1],"array"))var u=!0;var c,l=function(){c?this.b=c:c=this.b},f=0,h=this,d=a&&function(){++f==h.length&&a.call(this)};return this.forEach(function(t,n){e.once("snap.animcreated."+t.id,l),u?s[n]&&t.animate.apply(t,s[n]):t.animate(r,i,o,d)})},c.remove=function(){for(;this.length;)this.pop().remove();return this},c.bind=function(t,e,n){var r={};if("function"==typeof e)this.bindings[t]=e;else{var i=n||t;this.bindings[t]=function(t){r[i]=t,e.attr(r)}}return this},c.attr=function(t){var e={};for(var n in t)this.bindings[n]?this.bindings[n](t[n]):e[n]=t[n];for(var r=0,i=this.items.length;r<i;r++)this.items[r].attr(e);return this},c.clear=function(){for(;this.length;)this.pop()},c.splice=function(t,e,n){t=t<0?a(this.length+t,0):t,e=a(0,s(this.length-t,e));var r,i=[],o=[],c=[];for(r=2;r<arguments.length;r++)c.push(arguments[r]);for(r=0;r<e;r++)o.push(this[t+r]);for(;r<this.length-t;r++)i.push(this[t+r]);var l=c.length;for(r=0;r<l+i.length;r++)this.items[t+r]=this[t+r]=r<l?c[r]:i[r-l];for(r=this.items.length=this.length-=e-l;this[r];)delete this[r++];return new u(o)},c.exclude=function(t){for(var e=0,n=this.length;e<n;e++)if(this[e]==t)return this.splice(e,1),!0;return!1},c.insertAfter=function(t){for(var e=this.items.length;e--;)this.items[e].insertAfter(t);return this},c.getBBox=function(){for(var t=[],e=[],n=[],r=[],i=this.items.length;i--;)if(!this.items[i].removed){var o=this.items[i].getBBox();t.push(o.x),e.push(o.y),n.push(o.x+o.width),r.push(o.y+o.height)}return t=s.apply(0,t),e=s.apply(0,e),n=a.apply(0,n),r=a.apply(0,r),{x:t,y:e,x2:n,y2:r,width:n-t,height:r-e,cx:t+(n-t)/2,cy:e+(r-e)/2}},c.clone=function(t){t=new u;for(var e=0,n=this.items.length;e<n;e++)t.push(this.items[e].clone());return t},c.toString=function(){return"Snap‘s set"},c.type="set",t.Set=u,t.set=function(){var t=new u;return arguments.length&&t.push.apply(t,Array.prototype.slice.call(arguments,0)),t}}),r.plugin(function(t,n,r,i){function o(t){var e=t[0];switch(e.toLowerCase()){case"t":return[e,0,0];case"m":return[e,1,0,0,1,0,0];case"r":return 4==t.length?[e,0,t[2],t[3]]:[e,0];case"s":return 5==t.length?[e,1,1,t[3],t[4]]:3==t.length?[e,1,1]:[e,1]}}function a(e,n,r){n=m(n).replace(/\.{3}|\u2026/g,e),e=t.parseTransformString(e)||[],n=t.parseTransformString(n)||[];for(var i,a,s,u,c=Math.max(e.length,n.length),l=[],d=[],p=0;p<c;p++){if(s=e[p]||o(n[p]),u=n[p]||o(s),s[0]!=u[0]||"r"==s[0].toLowerCase()&&(s[2]!=u[2]||s[3]!=u[3])||"s"==s[0].toLowerCase()&&(s[3]!=u[3]||s[4]!=u[4])){e=t._.transform2matrix(e,r()),n=t._.transform2matrix(n,r()),l=[["m",e.a,e.b,e.c,e.d,e.e,e.f]],d=[["m",n.a,n.b,n.c,n.d,n.e,n.f]];break}for(l[p]=[],d[p]=[],i=0,a=Math.max(s.length,u.length);i<a;i++)i in s&&(l[p][i]=s[i]),i in u&&(d[p][i]=u[i])}return{from:h(l),to:h(d),f:f(l)}}function s(t){return t}function u(t){return function(e){return+e.toFixed(3)+t}}function c(t){return t.join(" ")}function l(e){return t.rgb(e[0],e[1],e[2])}function f(t){var e,n,r,i,o,a,s=0,u=[];for(e=0,n=t.length;e<n;e++){for(o="[",a=['"'+t[e][0]+'"'],r=1,i=t[e].length;r<i;r++)a[r]="val["+s++ +"]";o+=a+"]",u[e]=o}return Function("val","return Snap.path.toString.call(["+u+"])")}function h(t){for(var e=[],n=0,r=t.length;n<r;n++)for(var i=1,o=t[n].length;i<o;i++)e.push(t[n][i]);return e}function d(t){return isFinite(parseFloat(t))}function p(e,n){return!(!t.is(e,"array")||!t.is(n,"array"))&&e.toString()==n.toString()}var v={},g=/[a-z]+$/i,m=String;v.stroke=v.fill="colour",n.prototype.equal=function(t,n){return e("snap.util.equal",this,t,n).firstDefined()},e.on("snap.util.equal",function(e,n){var r,i,o=m(this.attr(e)||""),y=this;if(d(o)&&d(n))return{from:parseFloat(o),to:parseFloat(n),f:s};if("colour"==v[e])return r=t.color(o),i=t.color(n),{from:[r.r,r.g,r.b,r.opacity],to:[i.r,i.g,i.b,i.opacity],f:l};if("viewBox"==e)return r=this.attr(e).vb.split(" ").map(Number),i=n.split(" ").map(Number),{from:r,to:i,f:c};if("transform"==e||"gradientTransform"==e||"patternTransform"==e)return n instanceof t.Matrix&&(n=n.toTransformString()),t._.rgTransform.test(n)||(n=t._.svgTransform2string(n)),a(o,n,function(){return y.getBBox(1)});if("d"==e||"path"==e)return r=t.path.toCubic(o,n),{from:h(r[0]),to:h(r[1]),f:f(r[0])};if("points"==e)return r=m(o).split(t._.separator),i=m(n).split(t._.separator),{from:r,to:i,f:function(t){return t}};var b=o.match(g),x=m(n).match(g);return b&&p(b,x)?{from:parseFloat(o),to:parseFloat(n),f:u(b)}:{from:this.asPX(e),to:this.asPX(e,n),f:s}})}),r.plugin(function(t,n,r,i){for(var o=n.prototype,a="hasOwnProperty",s=("createTouch"in i.doc),u=["click","dblclick","mousedown","mousemove","mouseout","mouseover","mouseup","touchstart","touchmove","touchend","touchcancel"],c={mousedown:"touchstart",mousemove:"touchmove",mouseup:"touchend"},l=(function(t,e){var n="y"==t?"scrollTop":"scrollLeft",r=e&&e.node?e.node.ownerDocument:i.doc;return r[n in r.documentElement?"documentElement":"body"][n]}),f=function(){return this.originalEvent.preventDefault()},h=function(){return this.originalEvent.stopPropagation()},d=function(t,e,n,r){var i=s&&c[e]?c[e]:e,o=function(i){var o=l("y",r),u=l("x",r);if(s&&c[a](e))for(var d=0,p=i.targetTouches&&i.targetTouches.length;d<p;d++)if(i.targetTouches[d].target==t||t.contains(i.targetTouches[d].target)){var v=i;i=i.targetTouches[d],i.originalEvent=v,i.preventDefault=f,i.stopPropagation=h;break}var g=i.clientX+u,m=i.clientY+o;return n.call(r,i,g,m)};return e!==i&&t.addEventListener(e,o,!1),t.addEventListener(i,o,!1),function(){return e!==i&&t.removeEventListener(e,o,!1),t.removeEventListener(i,o,!1),!0}},p=[],v=function(t){for(var n,r=t.clientX,i=t.clientY,o=l("y"),a=l("x"),u=p.length;u--;){if(n=p[u],s){for(var c,f=t.touches&&t.touches.length;f--;)if(c=t.touches[f],c.identifier==n.el._drag.id||n.el.node.contains(c.target)){r=c.clientX,i=c.clientY,(t.originalEvent?t.originalEvent:t).preventDefault();break}}else t.preventDefault();var h=n.el.node;h.nextSibling,h.parentNode,h.style.display;r+=a,i+=o,e("snap.drag.move."+n.el.id,n.move_scope||n.el,r-n.el._drag.x,i-n.el._drag.y,r,i,t)}},g=function b(n){t.unmousemove(v).unmouseup(b);for(var r,i=p.length;i--;)r=p[i],r.el._drag={},e("snap.drag.end."+r.el.id,r.end_scope||r.start_scope||r.move_scope||r.el,n),e.off("snap.drag.*."+r.el.id);p=[]},m=u.length;m--;)!function(e){t[e]=o[e]=function(n,r){if(t.is(n,"function"))this.events=this.events||[],this.events.push({name:e,f:n,unbind:d(this.node||document,e,n,r||this)});else for(var i=0,o=this.events.length;i<o;i++)if(this.events[i].name==e)try{this.events[i].f.call(this)}catch(a){}return this},t["un"+e]=o["un"+e]=function(t){for(var n=this.events||[],r=n.length;r--;)if(n[r].name==e&&(n[r].f==t||!t))return n[r].unbind(),n.splice(r,1),!n.length&&delete this.events,this;return this}}(u[m]);o.hover=function(t,e,n,r){return this.mouseover(t,n).mouseout(e,r||n)},o.unhover=function(t,e){return this.unmouseover(t).unmouseout(e)};var y=[];o.drag=function(n,r,i,o,a,s){function u(u,c,f){(u.originalEvent||u).preventDefault(),l._drag.x=c,l._drag.y=f,l._drag.id=u.identifier,!p.length&&t.mousemove(v).mouseup(g),p.push({el:l,move_scope:o,start_scope:a,end_scope:s}),r&&e.on("snap.drag.start."+l.id,r),n&&e.on("snap.drag.move."+l.id,n),i&&e.on("snap.drag.end."+l.id,i),e("snap.drag.start."+l.id,a||o||l,c,f,u)}function c(t,n,r){e("snap.draginit."+l.id,l,t,n,r)}var l=this;if(!arguments.length){var f;return l.drag(function(t,e){this.attr({transform:f+(f?"T":"t")+[t,e]})},function(){f=this.transform().local})}return e.on("snap.draginit."+l.id,u),l._drag={},y.push({el:l,start:u,init:c}),l.mousedown(c),l},o.undrag=function(){for(var n=y.length;n--;)y[n].el==this&&(this.unmousedown(y[n].init),y.splice(n,1),e.unbind("snap.drag.*."+this.id),e.unbind("snap.draginit."+this.id));return!y.length&&t.unmousemove(v).unmouseup(g),this}}),r.plugin(function(t,n,r,i){var o=(n.prototype,r.prototype),a=/^\s*url\((.+)\)/,s=String,u=t._.$;t.filter={},o.filter=function(e){var r=this;"svg"!=r.type&&(r=r.paper);var i=t.parse(s(e)),o=t._.id(),a=(r.node.offsetWidth,r.node.offsetHeight,u("filter"));return u(a,{id:o,filterUnits:"userSpaceOnUse"}),a.appendChild(i.node),r.defs.appendChild(a),new n(a)},e.on("snap.util.getattr.filter",function(){e.stop();var n=u(this.node,"filter");if(n){var r=s(n).match(a);return r&&t.select(r[1])}}),e.on("snap.util.attr.filter",function(r){if(r instanceof n&&"filter"==r.type){e.stop();var i=r.node.id;i||(u(r.node,{id:r.id}),i=r.id),u(this.node,{filter:t.url(i)})}r&&"none"!=r||(e.stop(),this.node.removeAttribute("filter"))}),t.filter.blur=function(e,n){null==e&&(e=2);var r=null==n?e:[e,n];return t.format('<feGaussianBlur stdDeviation="{def}"/>',{def:r})},t.filter.blur.toString=function(){return this()},t.filter.shadow=function(e,n,r,i,o){return"string"==typeof r&&(i=r,o=i,r=4),"string"!=typeof i&&(o=i,i="#000"),i=i||"#000",null==r&&(r=4),null==o&&(o=1),null==e&&(e=0,n=2),null==n&&(n=e),i=t.color(i),t.format('<feGaussianBlur in="SourceAlpha" stdDeviation="{blur}"/><feOffset dx="{dx}" dy="{dy}" result="offsetblur"/><feFlood flood-color="{color}"/><feComposite in2="offsetblur" operator="in"/><feComponentTransfer><feFuncA type="linear" slope="{opacity}"/></feComponentTransfer><feMerge><feMergeNode/><feMergeNode in="SourceGraphic"/></feMerge>',{color:i,dx:e,dy:n,blur:r,opacity:o})},t.filter.shadow.toString=function(){return this()},t.filter.grayscale=function(e){return null==e&&(e=1),t.format('<feColorMatrix type="matrix" values="{a} {b} {c} 0 0 {d} {e} {f} 0 0 {g} {b} {h} 0 0 0 0 0 1 0"/>',{a:.2126+.7874*(1-e),b:.7152-.7152*(1-e),c:.0722-.0722*(1-e),d:.2126-.2126*(1-e),e:.7152+.2848*(1-e),f:.0722-.0722*(1-e),g:.2126-.2126*(1-e),h:.0722+.9278*(1-e)})},t.filter.grayscale.toString=function(){return this()},t.filter.sepia=function(e){return null==e&&(e=1),t.format('<feColorMatrix type="matrix" values="{a} {b} {c} 0 0 {d} {e} {f} 0 0 {g} {h} {i} 0 0 0 0 0 1 0"/>',{a:.393+.607*(1-e),b:.769-.769*(1-e),c:.189-.189*(1-e),d:.349-.349*(1-e),e:.686+.314*(1-e),f:.168-.168*(1-e),g:.272-.272*(1-e),h:.534-.534*(1-e),i:.131+.869*(1-e)})},t.filter.sepia.toString=function(){return this()},t.filter.saturate=function(e){return null==e&&(e=1),t.format('<feColorMatrix type="saturate" values="{amount}"/>',{amount:1-e})},t.filter.saturate.toString=function(){return this()},t.filter.hueRotate=function(e){return e=e||0,t.format('<feColorMatrix type="hueRotate" values="{angle}"/>',{angle:e})},t.filter.hueRotate.toString=function(){return this()},t.filter.invert=function(e){return null==e&&(e=1),t.format('<feComponentTransfer><feFuncR type="table" tableValues="{amount} {amount2}"/><feFuncG type="table" tableValues="{amount} {amount2}"/><feFuncB type="table" tableValues="{amount} {amount2}"/></feComponentTransfer>',{amount:e,amount2:1-e})},t.filter.invert.toString=function(){return this()},t.filter.brightness=function(e){return null==e&&(e=1),t.format('<feComponentTransfer><feFuncR type="linear" slope="{amount}"/><feFuncG type="linear" slope="{amount}"/><feFuncB type="linear" slope="{amount}"/></feComponentTransfer>',{amount:e})},t.filter.brightness.toString=function(){return this()},t.filter.contrast=function(e){return null==e&&(e=1),t.format('<feComponentTransfer><feFuncR type="linear" slope="{amount}" intercept="{amount2}"/><feFuncG type="linear" slope="{amount}" intercept="{amount2}"/><feFuncB type="linear" slope="{amount}" intercept="{amount2}"/></feComponentTransfer>',{amount:e,amount2:.5-e/2})},t.filter.contrast.toString=function(){return this()}}),r.plugin(function(t,e,n,r,i){var o=t._.box,a=t.is,s=/^[^a-z]*([tbmlrc])/i,u=function(){return"T"+this.dx+","+this.dy};e.prototype.getAlign=function(t,e){null==e&&a(t,"string")&&(e=t,t=null),t=t||this.paper;var n=t.getBBox?t.getBBox():o(t),r=this.getBBox(),i={};switch(e=e&&e.match(s),e=e?e[1].toLowerCase():"c"){case"t":i.dx=0,i.dy=n.y-r.y;break;case"b":i.dx=0,i.dy=n.y2-r.y2;break;case"m":i.dx=0,i.dy=n.cy-r.cy;break;case"l":i.dx=n.x-r.x,i.dy=0;break;case"r":i.dx=n.x2-r.x2,i.dy=0;break;default:i.dx=n.cx-r.cx,i.dy=0}return i.toString=u,i},e.prototype.align=function(t,e){return this.transform("..."+this.getAlign(t,e))}}),r})}).call(window)},function(t,e,n){var r,i;(function(t){"use strict";var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol?"symbol":typeof t};/*!
* jQuery JavaScript Library v3.0.0
* https://jquery.com/
@@ -13,7 +13,7 @@
*
* Date: 2016-06-09T18:02Z
*/
-!function(e,r){"object"===n(t)&&"object"===n(t.exports)?t.exports=e.document?r(e,!0):function(t){if(!t.document)throw new Error("jQuery requires a window with a document");return r(t)}:r(e)}("undefined"!=typeof window?window:void 0,function(o,a){function s(t,e){e=e||it;var n=e.createElement("script");n.text=t,e.head.appendChild(n).parentNode.removeChild(n)}function u(t){var e=!!t&&"length"in t&&t.length,n=mt.type(t);return"function"!==n&&!mt.isWindow(t)&&("array"===n||0===e||"number"==typeof e&&e>0&&e-1 in t)}function c(t,e,n){if(mt.isFunction(e))return mt.grep(t,function(t,r){return!!e.call(t,r,t)!==n});if(e.nodeType)return mt.grep(t,function(t){return t===e!==n});if("string"==typeof e){if(St.test(e))return mt.filter(e,t,n);e=mt.filter(e,t)}return mt.grep(t,function(t){return ct.call(e,t)>-1!==n&&1===t.nodeType})}function l(t,e){for(;(t=t[e])&&1!==t.nodeType;);return t}function f(t){var e={};return mt.each(t.match(Dt)||[],function(t,n){e[n]=!0}),e}function h(t){return t}function d(t){throw t}function p(t,e,n){var r;try{t&&mt.isFunction(r=t.promise)?r.call(t).done(e).fail(n):t&&mt.isFunction(r=t.then)?r.call(t,e,n):e.call(void 0,t)}catch(t){n.call(void 0,t)}}function v(){it.removeEventListener("DOMContentLoaded",v),o.removeEventListener("load",v),mt.ready()}function g(){this.expando=mt.expando+g.uid++}function m(t,e,n){var r;if(void 0===n&&1===t.nodeType)if(r="data-"+e.replace(Ht,"-$&").toLowerCase(),n=t.getAttribute(r),"string"==typeof n){try{n="true"===n||"false"!==n&&("null"===n?null:+n+""===n?+n:It.test(n)?JSON.parse(n):n)}catch(i){}Rt.set(t,e,n)}else n=void 0;return n}function y(t,e,n,r){var i,o=1,a=20,s=r?function(){return r.cur()}:function(){return mt.css(t,e,"")},u=s(),c=n&&n[3]||(mt.cssNumber[e]?"":"px"),l=(mt.cssNumber[e]||"px"!==c&&+u)&&zt.exec(mt.css(t,e));if(l&&l[3]!==c){c=c||l[3],n=n||[],l=+u||1;do o=o||".5",l/=o,mt.style(t,e,l+c);while(o!==(o=s()/u)&&1!==o&&--a)}return n&&(l=+l||+u||0,i=n[1]?l+(n[1]+1)*n[2]:+n[2],r&&(r.unit=c,r.start=l,r.end=i)),i}function b(t){var e,n=t.ownerDocument,r=t.nodeName,i=Xt[r];return i?i:(e=n.body.appendChild(n.createElement(r)),i=mt.css(e,"display"),e.parentNode.removeChild(e),"none"===i&&(i="block"),Xt[r]=i,i)}function x(t,e){for(var n,r,i=[],o=0,a=t.length;o<a;o++)r=t[o],r.style&&(n=r.style.display,e?("none"===n&&(i[o]=Lt.get(r,"display")||null,i[o]||(r.style.display="")),""===r.style.display&&Ut(r)&&(i[o]=b(r))):"none"!==n&&(i[o]="none",Lt.set(r,"display",n)));for(o=0;o<a;o++)null!=i[o]&&(t[o].style.display=i[o]);return t}function w(t,e){var n="undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e||"*"):"undefined"!=typeof t.querySelectorAll?t.querySelectorAll(e||"*"):[];return void 0===e||e&&mt.nodeName(t,e)?mt.merge([t],n):n}function _(t,e){for(var n=0,r=t.length;n<r;n++)Lt.set(t[n],"globalEval",!e||Lt.get(e[n],"globalEval"))}function C(t,e,n,r,i){for(var o,a,s,u,c,l,f=e.createDocumentFragment(),h=[],d=0,p=t.length;d<p;d++)if(o=t[d],o||0===o)if("object"===mt.type(o))mt.merge(h,o.nodeType?[o]:o);else if(Qt.test(o)){for(a=a||f.appendChild(e.createElement("div")),s=(Zt.exec(o)||["",""])[1].toLowerCase(),u=Yt[s]||Yt._default,a.innerHTML=u[1]+mt.htmlPrefilter(o)+u[2],l=u[0];l--;)a=a.lastChild;mt.merge(h,a.childNodes),a=f.firstChild,a.textContent=""}else h.push(e.createTextNode(o));for(f.textContent="",d=0;o=h[d++];)if(r&&mt.inArray(o,r)>-1)i&&i.push(o);else if(c=mt.contains(o.ownerDocument,o),a=w(f.appendChild(o),"script"),c&&_(a),n)for(l=0;o=a[l++];)Jt.test(o.type||"")&&n.push(o);return f}function k(){return!0}function T(){return!1}function A(){try{return it.activeElement}catch(t){}}function S(t,e,r,i,o,a){var s,u;if("object"===("undefined"==typeof e?"undefined":n(e))){"string"!=typeof r&&(i=i||r,r=void 0);for(u in e)S(t,u,r,i,e[u],a);return t}if(null==i&&null==o?(o=r,i=r=void 0):null==o&&("string"==typeof r?(o=i,i=void 0):(o=i,i=r,r=void 0)),o===!1)o=T;else if(!o)return t;return 1===a&&(s=o,o=function(t){return mt().off(t),s.apply(this,arguments)},o.guid=s.guid||(s.guid=mt.guid++)),t.each(function(){mt.event.add(this,e,o,i,r)})}function $(t,e){return mt.nodeName(t,"table")&&mt.nodeName(11!==e.nodeType?e:e.firstChild,"tr")?t.getElementsByTagName("tbody")[0]||t:t}function E(t){return t.type=(null!==t.getAttribute("type"))+"/"+t.type,t}function j(t){var e=ae.exec(t.type);return e?t.type=e[1]:t.removeAttribute("type"),t}function O(t,e){var n,r,i,o,a,s,u,c;if(1===e.nodeType){if(Lt.hasData(t)&&(o=Lt.access(t),a=Lt.set(e,o),c=o.events)){delete a.handle,a.events={};for(i in c)for(n=0,r=c[i].length;n<r;n++)mt.event.add(e,i,c[i][n])}Rt.hasData(t)&&(s=Rt.access(t),u=mt.extend({},s),Rt.set(e,u))}}function N(t,e){var n=e.nodeName.toLowerCase();"input"===n&&Gt.test(t.type)?e.checked=t.checked:"input"!==n&&"textarea"!==n||(e.defaultValue=t.defaultValue)}function D(t,e,n,r){e=st.apply([],e);var i,o,a,u,c,l,f=0,h=t.length,d=h-1,p=e[0],v=mt.isFunction(p);if(v||h>1&&"string"==typeof p&&!vt.checkClone&&oe.test(p))return t.each(function(i){var o=t.eq(i);v&&(e[0]=p.call(this,i,o.html())),D(o,e,n,r)});if(h&&(i=C(e,t[0].ownerDocument,!1,t,r),o=i.firstChild,1===i.childNodes.length&&(i=o),o||r)){for(a=mt.map(w(i,"script"),E),u=a.length;f<h;f++)c=i,f!==d&&(c=mt.clone(c,!0,!0),u&&mt.merge(a,w(c,"script"))),n.call(t[f],c,f);if(u)for(l=a[a.length-1].ownerDocument,mt.map(a,j),f=0;f<u;f++)c=a[f],Jt.test(c.type||"")&&!Lt.access(c,"globalEval")&&mt.contains(l,c)&&(c.src?mt._evalUrl&&mt._evalUrl(c.src):s(c.textContent.replace(se,""),l))}return t}function M(t,e,n){for(var r,i=e?mt.filter(e,t):t,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||mt.cleanData(w(r)),r.parentNode&&(n&&mt.contains(r.ownerDocument,r)&&_(w(r,"script")),r.parentNode.removeChild(r));return t}function P(t,e,n){var r,i,o,a,s=t.style;return n=n||le(t),n&&(a=n.getPropertyValue(e)||n[e],""!==a||mt.contains(t.ownerDocument,t)||(a=mt.style(t,e)),!vt.pixelMarginRight()&&ce.test(a)&&ue.test(e)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function F(t,e){return{get:function(){return t()?void delete this.get:(this.get=e).apply(this,arguments)}}}function B(t){if(t in ve)return t;for(var e=t[0].toUpperCase()+t.slice(1),n=pe.length;n--;)if(t=pe[n]+e,t in ve)return t}function L(t,e,n){var r=zt.exec(e);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):e}function R(t,e,n,r,i){for(var o=n===(r?"border":"content")?4:"width"===e?1:0,a=0;o<4;o+=2)"margin"===n&&(a+=mt.css(t,n+Vt[o],!0,i)),r?("content"===n&&(a-=mt.css(t,"padding"+Vt[o],!0,i)),"margin"!==n&&(a-=mt.css(t,"border"+Vt[o]+"Width",!0,i))):(a+=mt.css(t,"padding"+Vt[o],!0,i),"padding"!==n&&(a+=mt.css(t,"border"+Vt[o]+"Width",!0,i)));return a}function I(t,e,n){var r,i=!0,o=le(t),a="border-box"===mt.css(t,"boxSizing",!1,o);if(t.getClientRects().length&&(r=t.getBoundingClientRect()[e]),r<=0||null==r){if(r=P(t,e,o),(r<0||null==r)&&(r=t.style[e]),ce.test(r))return r;i=a&&(vt.boxSizingReliable()||r===t.style[e]),r=parseFloat(r)||0}return r+R(t,e,n||(a?"border":"content"),i,o)+"px"}function H(t,e,n,r,i){return new H.prototype.init(t,e,n,r,i)}function q(){me&&(o.requestAnimationFrame(q),mt.fx.tick())}function z(){return o.setTimeout(function(){ge=void 0}),ge=mt.now()}function V(t,e){var n,r=0,i={height:t};for(e=e?1:0;r<4;r+=2-e)n=Vt[r],i["margin"+n]=i["padding"+n]=t;return e&&(i.opacity=i.width=t),i}function U(t,e,n){for(var r,i=(G.tweeners[e]||[]).concat(G.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,e,t))return r}function W(t,e,n){var r,i,o,a,s,u,c,l,f="width"in e||"height"in e,h=this,d={},p=t.style,v=t.nodeType&&Ut(t),g=Lt.get(t,"fxshow");n.queue||(a=mt._queueHooks(t,"fx"),null==a.unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,h.always(function(){h.always(function(){a.unqueued--,mt.queue(t,"fx").length||a.empty.fire()})}));for(r in e)if(i=e[r],ye.test(i)){if(delete e[r],o=o||"toggle"===i,i===(v?"hide":"show")){if("show"!==i||!g||void 0===g[r])continue;v=!0}d[r]=g&&g[r]||mt.style(t,r)}if(u=!mt.isEmptyObject(e),u||!mt.isEmptyObject(d)){f&&1===t.nodeType&&(n.overflow=[p.overflow,p.overflowX,p.overflowY],c=g&&g.display,null==c&&(c=Lt.get(t,"display")),l=mt.css(t,"display"),"none"===l&&(c?l=c:(x([t],!0),c=t.style.display||c,l=mt.css(t,"display"),x([t]))),("inline"===l||"inline-block"===l&&null!=c)&&"none"===mt.css(t,"float")&&(u||(h.done(function(){p.display=c}),null==c&&(l=p.display,c="none"===l?"":l)),p.display="inline-block")),n.overflow&&(p.overflow="hidden",h.always(function(){p.overflow=n.overflow[0],p.overflowX=n.overflow[1],p.overflowY=n.overflow[2]})),u=!1;for(r in d)u||(g?"hidden"in g&&(v=g.hidden):g=Lt.access(t,"fxshow",{display:c}),o&&(g.hidden=!v),v&&x([t],!0),h.done(function(){v||x([t]),Lt.remove(t,"fxshow");for(r in d)mt.style(t,r,d[r])})),u=U(v?g[r]:0,r,h),r in g||(g[r]=u.start,v&&(u.end=u.start,u.start=0))}}function X(t,e){var n,r,i,o,a;for(n in t)if(r=mt.camelCase(n),i=e[r],o=t[n],mt.isArray(o)&&(i=o[1],o=t[n]=o[0]),n!==r&&(t[r]=o,delete t[n]),a=mt.cssHooks[r],a&&"expand"in a){o=a.expand(o),delete t[r];for(n in o)n in t||(t[n]=o[n],e[n]=i)}else e[r]=i}function G(t,e,n){var r,i,o=0,a=G.prefilters.length,s=mt.Deferred().always(function(){delete u.elem}),u=function(){if(i)return!1;for(var e=ge||z(),n=Math.max(0,c.startTime+c.duration-e),r=n/c.duration||0,o=1-r,a=0,u=c.tweens.length;a<u;a++)c.tweens[a].run(o);return s.notifyWith(t,[c,o,n]),o<1&&u?n:(s.resolveWith(t,[c]),!1)},c=s.promise({elem:t,props:mt.extend({},e),opts:mt.extend(!0,{specialEasing:{},easing:mt.easing._default},n),originalProperties:e,originalOptions:n,startTime:ge||z(),duration:n.duration,tweens:[],createTween:function(e,n){var r=mt.Tween(t,c.opts,e,n,c.opts.specialEasing[e]||c.opts.easing);return c.tweens.push(r),r},stop:function(e){var n=0,r=e?c.tweens.length:0;if(i)return this;for(i=!0;n<r;n++)c.tweens[n].run(1);return e?(s.notifyWith(t,[c,1,0]),s.resolveWith(t,[c,e])):s.rejectWith(t,[c,e]),this}}),l=c.props;for(X(l,c.opts.specialEasing);o<a;o++)if(r=G.prefilters[o].call(c,t,l,c.opts))return mt.isFunction(r.stop)&&(mt._queueHooks(c.elem,c.opts.queue).stop=mt.proxy(r.stop,r)),r;return mt.map(l,U,c),mt.isFunction(c.opts.start)&&c.opts.start.call(t,c),mt.fx.timer(mt.extend(u,{elem:t,anim:c,queue:c.opts.queue})),c.progress(c.opts.progress).done(c.opts.done,c.opts.complete).fail(c.opts.fail).always(c.opts.always)}function Z(t){return t.getAttribute&&t.getAttribute("class")||""}function J(t,e,r,i){var o;if(mt.isArray(e))mt.each(e,function(e,o){r||Oe.test(t)?i(t,o):J(t+"["+("object"===("undefined"==typeof o?"undefined":n(o))&&null!=o?e:"")+"]",o,r,i)});else if(r||"object"!==mt.type(e))i(t,e);else for(o in e)J(t+"["+o+"]",e[o],r,i)}function Y(t){return function(e,n){"string"!=typeof e&&(n=e,e="*");var r,i=0,o=e.toLowerCase().match(Dt)||[];if(mt.isFunction(n))for(;r=o[i++];)"+"===r[0]?(r=r.slice(1)||"*",(t[r]=t[r]||[]).unshift(n)):(t[r]=t[r]||[]).push(n)}}function Q(t,e,n,r){function i(s){var u;return o[s]=!0,mt.each(t[s]||[],function(t,s){var c=s(e,n,r);return"string"!=typeof c||a||o[c]?a?!(u=c):void 0:(e.dataTypes.unshift(c),i(c),!1)}),u}var o={},a=t===ze;return i(e.dataTypes[0])||!o["*"]&&i("*")}function K(t,e){var n,r,i=mt.ajaxSettings.flatOptions||{};for(n in e)void 0!==e[n]&&((i[n]?t:r||(r={}))[n]=e[n]);return r&&mt.extend(!0,t,r),t}function tt(t,e,n){for(var r,i,o,a,s=t.contents,u=t.dataTypes;"*"===u[0];)u.shift(),void 0===r&&(r=t.mimeType||e.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||t.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}function et(t,e,n,r){var i,o,a,s,u,c={},l=t.dataTypes.slice();if(l[1])for(a in t.converters)c[a.toLowerCase()]=t.converters[a];for(o=l.shift();o;)if(t.responseFields[o]&&(n[t.responseFields[o]]=e),!u&&r&&t.dataFilter&&(e=t.dataFilter(e,t.dataType)),u=o,o=l.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(a=c[u+" "+o]||c["* "+o],!a)for(i in c)if(s=i.split(" "),s[1]===o&&(a=c[u+" "+s[0]]||c["* "+s[0]])){a===!0?a=c[i]:c[i]!==!0&&(o=s[0],l.unshift(s[1]));break}if(a!==!0)if(a&&t["throws"])e=a(e);else try{e=a(e)}catch(f){return{state:"parsererror",error:a?f:"No conversion from "+u+" to "+o}}}return{state:"success",data:e}}function nt(t){return mt.isWindow(t)?t:9===t.nodeType&&t.defaultView}var rt=[],it=o.document,ot=Object.getPrototypeOf,at=rt.slice,st=rt.concat,ut=rt.push,ct=rt.indexOf,lt={},ft=lt.toString,ht=lt.hasOwnProperty,dt=ht.toString,pt=dt.call(Object),vt={},gt="3.0.0",mt=function Qe(t,e){return new Qe.fn.init(t,e)},yt=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,bt=/^-ms-/,xt=/-([a-z])/g,wt=function(t,e){return e.toUpperCase()};mt.fn=mt.prototype={jquery:gt,constructor:mt,length:0,toArray:function(){return at.call(this)},get:function(t){return null!=t?t<0?this[t+this.length]:this[t]:at.call(this)},pushStack:function(t){var e=mt.merge(this.constructor(),t);return e.prevObject=this,e},each:function(t){return mt.each(this,t)},map:function(t){return this.pushStack(mt.map(this,function(e,n){return t.call(e,n,e)}))},slice:function(){return this.pushStack(at.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(t){var e=this.length,n=+t+(t<0?e:0);return this.pushStack(n>=0&&n<e?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:ut,sort:rt.sort,splice:rt.splice},mt.extend=mt.fn.extend=function(){var t,e,r,i,o,a,s=arguments[0]||{},u=1,c=arguments.length,l=!1;for("boolean"==typeof s&&(l=s,s=arguments[u]||{},u++),"object"===("undefined"==typeof s?"undefined":n(s))||mt.isFunction(s)||(s={}),u===c&&(s=this,u--);u<c;u++)if(null!=(t=arguments[u]))for(e in t)r=s[e],i=t[e],s!==i&&(l&&i&&(mt.isPlainObject(i)||(o=mt.isArray(i)))?(o?(o=!1,a=r&&mt.isArray(r)?r:[]):a=r&&mt.isPlainObject(r)?r:{},s[e]=mt.extend(l,a,i)):void 0!==i&&(s[e]=i));return s},mt.extend({expando:"jQuery"+(gt+Math.random()).replace(/\D/g,""),isReady:!0,error:function(t){throw new Error(t)},noop:function(){},isFunction:function(t){return"function"===mt.type(t)},isArray:Array.isArray,isWindow:function(t){return null!=t&&t===t.window},isNumeric:function(t){var e=mt.type(t);return("number"===e||"string"===e)&&!isNaN(t-parseFloat(t))},isPlainObject:function(t){var e,n;return!(!t||"[object Object]"!==ft.call(t))&&(!(e=ot(t))||(n=ht.call(e,"constructor")&&e.constructor,"function"==typeof n&&dt.call(n)===pt))},isEmptyObject:function(t){var e;for(e in t)return!1;return!0},type:function(t){return null==t?t+"":"object"===("undefined"==typeof t?"undefined":n(t))||"function"==typeof t?lt[ft.call(t)]||"object":"undefined"==typeof t?"undefined":n(t)},globalEval:function(t){s(t)},camelCase:function(t){return t.replace(bt,"ms-").replace(xt,wt)},nodeName:function(t,e){return t.nodeName&&t.nodeName.toLowerCase()===e.toLowerCase()},each:function(t,e){var n,r=0;if(u(t))for(n=t.length;r<n&&e.call(t[r],r,t[r])!==!1;r++);else for(r in t)if(e.call(t[r],r,t[r])===!1)break;return t},trim:function(t){return null==t?"":(t+"").replace(yt,"")},makeArray:function(t,e){var n=e||[];return null!=t&&(u(Object(t))?mt.merge(n,"string"==typeof t?[t]:t):ut.call(n,t)),n},inArray:function(t,e,n){return null==e?-1:ct.call(e,t,n)},merge:function(t,e){for(var n=+e.length,r=0,i=t.length;r<n;r++)t[i++]=e[r];return t.length=i,t},grep:function(t,e,n){for(var r,i=[],o=0,a=t.length,s=!n;o<a;o++)r=!e(t[o],o),r!==s&&i.push(t[o]);return i},map:function(t,e,n){var r,i,o=0,a=[];if(u(t))for(r=t.length;o<r;o++)i=e(t[o],o,n),null!=i&&a.push(i);else for(o in t)i=e(t[o],o,n),null!=i&&a.push(i);return st.apply([],a)},guid:1,proxy:function Ke(t,e){var n,r,Ke;if("string"==typeof e&&(n=t[e],e=t,t=n),mt.isFunction(t))return r=at.call(arguments,2),Ke=function(){return t.apply(e||this,r.concat(at.call(arguments)))},Ke.guid=t.guid=t.guid||mt.guid++,Ke},now:Date.now,support:vt}),"function"==typeof Symbol&&(mt.fn[Symbol.iterator]=rt[Symbol.iterator]),mt.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(t,e){lt["[object "+e+"]"]=e.toLowerCase()});var _t=/*!
+!function(e,r){"object"===n(t)&&"object"===n(t.exports)?t.exports=e.document?r(e,!0):function(t){if(!t.document)throw new Error("jQuery requires a window with a document");return r(t)}:r(e)}("undefined"!=typeof window?window:void 0,function(o,a){function s(t,e){e=e||it;var n=e.createElement("script");n.text=t,e.head.appendChild(n).parentNode.removeChild(n)}function u(t){var e=!!t&&"length"in t&&t.length,n=mt.type(t);return"function"!==n&&!mt.isWindow(t)&&("array"===n||0===e||"number"==typeof e&&e>0&&e-1 in t)}function c(t,e,n){if(mt.isFunction(e))return mt.grep(t,function(t,r){return!!e.call(t,r,t)!==n});if(e.nodeType)return mt.grep(t,function(t){return t===e!==n});if("string"==typeof e){if(St.test(e))return mt.filter(e,t,n);e=mt.filter(e,t)}return mt.grep(t,function(t){return ct.call(e,t)>-1!==n&&1===t.nodeType})}function l(t,e){for(;(t=t[e])&&1!==t.nodeType;);return t}function f(t){var e={};return mt.each(t.match(Dt)||[],function(t,n){e[n]=!0}),e}function h(t){return t}function d(t){throw t}function p(t,e,n){var r;try{t&&mt.isFunction(r=t.promise)?r.call(t).done(e).fail(n):t&&mt.isFunction(r=t.then)?r.call(t,e,n):e.call(void 0,t)}catch(t){n.call(void 0,t)}}function v(){it.removeEventListener("DOMContentLoaded",v),o.removeEventListener("load",v),mt.ready()}function g(){this.expando=mt.expando+g.uid++}function m(t,e,n){var r;if(void 0===n&&1===t.nodeType)if(r="data-"+e.replace(qt,"-$&").toLowerCase(),n=t.getAttribute(r),"string"==typeof n){try{n="true"===n||"false"!==n&&("null"===n?null:+n+""===n?+n:It.test(n)?JSON.parse(n):n)}catch(i){}Rt.set(t,e,n)}else n=void 0;return n}function y(t,e,n,r){var i,o=1,a=20,s=r?function(){return r.cur()}:function(){return mt.css(t,e,"")},u=s(),c=n&&n[3]||(mt.cssNumber[e]?"":"px"),l=(mt.cssNumber[e]||"px"!==c&&+u)&&zt.exec(mt.css(t,e));if(l&&l[3]!==c){c=c||l[3],n=n||[],l=+u||1;do o=o||".5",l/=o,mt.style(t,e,l+c);while(o!==(o=s()/u)&&1!==o&&--a)}return n&&(l=+l||+u||0,i=n[1]?l+(n[1]+1)*n[2]:+n[2],r&&(r.unit=c,r.start=l,r.end=i)),i}function b(t){var e,n=t.ownerDocument,r=t.nodeName,i=Xt[r];return i?i:(e=n.body.appendChild(n.createElement(r)),i=mt.css(e,"display"),e.parentNode.removeChild(e),"none"===i&&(i="block"),Xt[r]=i,i)}function x(t,e){for(var n,r,i=[],o=0,a=t.length;o<a;o++)r=t[o],r.style&&(n=r.style.display,e?("none"===n&&(i[o]=Lt.get(r,"display")||null,i[o]||(r.style.display="")),""===r.style.display&&Ut(r)&&(i[o]=b(r))):"none"!==n&&(i[o]="none",Lt.set(r,"display",n)));for(o=0;o<a;o++)null!=i[o]&&(t[o].style.display=i[o]);return t}function w(t,e){var n="undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e||"*"):"undefined"!=typeof t.querySelectorAll?t.querySelectorAll(e||"*"):[];return void 0===e||e&&mt.nodeName(t,e)?mt.merge([t],n):n}function _(t,e){for(var n=0,r=t.length;n<r;n++)Lt.set(t[n],"globalEval",!e||Lt.get(e[n],"globalEval"))}function C(t,e,n,r,i){for(var o,a,s,u,c,l,f=e.createDocumentFragment(),h=[],d=0,p=t.length;d<p;d++)if(o=t[d],o||0===o)if("object"===mt.type(o))mt.merge(h,o.nodeType?[o]:o);else if(Qt.test(o)){for(a=a||f.appendChild(e.createElement("div")),s=(Zt.exec(o)||["",""])[1].toLowerCase(),u=Yt[s]||Yt._default,a.innerHTML=u[1]+mt.htmlPrefilter(o)+u[2],l=u[0];l--;)a=a.lastChild;mt.merge(h,a.childNodes),a=f.firstChild,a.textContent=""}else h.push(e.createTextNode(o));for(f.textContent="",d=0;o=h[d++];)if(r&&mt.inArray(o,r)>-1)i&&i.push(o);else if(c=mt.contains(o.ownerDocument,o),a=w(f.appendChild(o),"script"),c&&_(a),n)for(l=0;o=a[l++];)Jt.test(o.type||"")&&n.push(o);return f}function k(){return!0}function T(){return!1}function A(){try{return it.activeElement}catch(t){}}function S(t,e,r,i,o,a){var s,u;if("object"===("undefined"==typeof e?"undefined":n(e))){"string"!=typeof r&&(i=i||r,r=void 0);for(u in e)S(t,u,r,i,e[u],a);return t}if(null==i&&null==o?(o=r,i=r=void 0):null==o&&("string"==typeof r?(o=i,i=void 0):(o=i,i=r,r=void 0)),o===!1)o=T;else if(!o)return t;return 1===a&&(s=o,o=function(t){return mt().off(t),s.apply(this,arguments)},o.guid=s.guid||(s.guid=mt.guid++)),t.each(function(){mt.event.add(this,e,o,i,r)})}function $(t,e){return mt.nodeName(t,"table")&&mt.nodeName(11!==e.nodeType?e:e.firstChild,"tr")?t.getElementsByTagName("tbody")[0]||t:t}function E(t){return t.type=(null!==t.getAttribute("type"))+"/"+t.type,t}function j(t){var e=ae.exec(t.type);return e?t.type=e[1]:t.removeAttribute("type"),t}function O(t,e){var n,r,i,o,a,s,u,c;if(1===e.nodeType){if(Lt.hasData(t)&&(o=Lt.access(t),a=Lt.set(e,o),c=o.events)){delete a.handle,a.events={};for(i in c)for(n=0,r=c[i].length;n<r;n++)mt.event.add(e,i,c[i][n])}Rt.hasData(t)&&(s=Rt.access(t),u=mt.extend({},s),Rt.set(e,u))}}function N(t,e){var n=e.nodeName.toLowerCase();"input"===n&&Gt.test(t.type)?e.checked=t.checked:"input"!==n&&"textarea"!==n||(e.defaultValue=t.defaultValue)}function D(t,e,n,r){e=st.apply([],e);var i,o,a,u,c,l,f=0,h=t.length,d=h-1,p=e[0],v=mt.isFunction(p);if(v||h>1&&"string"==typeof p&&!vt.checkClone&&oe.test(p))return t.each(function(i){var o=t.eq(i);v&&(e[0]=p.call(this,i,o.html())),D(o,e,n,r)});if(h&&(i=C(e,t[0].ownerDocument,!1,t,r),o=i.firstChild,1===i.childNodes.length&&(i=o),o||r)){for(a=mt.map(w(i,"script"),E),u=a.length;f<h;f++)c=i,f!==d&&(c=mt.clone(c,!0,!0),u&&mt.merge(a,w(c,"script"))),n.call(t[f],c,f);if(u)for(l=a[a.length-1].ownerDocument,mt.map(a,j),f=0;f<u;f++)c=a[f],Jt.test(c.type||"")&&!Lt.access(c,"globalEval")&&mt.contains(l,c)&&(c.src?mt._evalUrl&&mt._evalUrl(c.src):s(c.textContent.replace(se,""),l))}return t}function M(t,e,n){for(var r,i=e?mt.filter(e,t):t,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||mt.cleanData(w(r)),r.parentNode&&(n&&mt.contains(r.ownerDocument,r)&&_(w(r,"script")),r.parentNode.removeChild(r));return t}function P(t,e,n){var r,i,o,a,s=t.style;return n=n||le(t),n&&(a=n.getPropertyValue(e)||n[e],""!==a||mt.contains(t.ownerDocument,t)||(a=mt.style(t,e)),!vt.pixelMarginRight()&&ce.test(a)&&ue.test(e)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function F(t,e){return{get:function(){return t()?void delete this.get:(this.get=e).apply(this,arguments)}}}function B(t){if(t in ve)return t;for(var e=t[0].toUpperCase()+t.slice(1),n=pe.length;n--;)if(t=pe[n]+e,t in ve)return t}function L(t,e,n){var r=zt.exec(e);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):e}function R(t,e,n,r,i){for(var o=n===(r?"border":"content")?4:"width"===e?1:0,a=0;o<4;o+=2)"margin"===n&&(a+=mt.css(t,n+Vt[o],!0,i)),r?("content"===n&&(a-=mt.css(t,"padding"+Vt[o],!0,i)),"margin"!==n&&(a-=mt.css(t,"border"+Vt[o]+"Width",!0,i))):(a+=mt.css(t,"padding"+Vt[o],!0,i),"padding"!==n&&(a+=mt.css(t,"border"+Vt[o]+"Width",!0,i)));return a}function I(t,e,n){var r,i=!0,o=le(t),a="border-box"===mt.css(t,"boxSizing",!1,o);if(t.getClientRects().length&&(r=t.getBoundingClientRect()[e]),r<=0||null==r){if(r=P(t,e,o),(r<0||null==r)&&(r=t.style[e]),ce.test(r))return r;i=a&&(vt.boxSizingReliable()||r===t.style[e]),r=parseFloat(r)||0}return r+R(t,e,n||(a?"border":"content"),i,o)+"px"}function q(t,e,n,r,i){return new q.prototype.init(t,e,n,r,i)}function H(){me&&(o.requestAnimationFrame(H),mt.fx.tick())}function z(){return o.setTimeout(function(){ge=void 0}),ge=mt.now()}function V(t,e){var n,r=0,i={height:t};for(e=e?1:0;r<4;r+=2-e)n=Vt[r],i["margin"+n]=i["padding"+n]=t;return e&&(i.opacity=i.width=t),i}function U(t,e,n){for(var r,i=(G.tweeners[e]||[]).concat(G.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,e,t))return r}function W(t,e,n){var r,i,o,a,s,u,c,l,f="width"in e||"height"in e,h=this,d={},p=t.style,v=t.nodeType&&Ut(t),g=Lt.get(t,"fxshow");n.queue||(a=mt._queueHooks(t,"fx"),null==a.unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,h.always(function(){h.always(function(){a.unqueued--,mt.queue(t,"fx").length||a.empty.fire()})}));for(r in e)if(i=e[r],ye.test(i)){if(delete e[r],o=o||"toggle"===i,i===(v?"hide":"show")){if("show"!==i||!g||void 0===g[r])continue;v=!0}d[r]=g&&g[r]||mt.style(t,r)}if(u=!mt.isEmptyObject(e),u||!mt.isEmptyObject(d)){f&&1===t.nodeType&&(n.overflow=[p.overflow,p.overflowX,p.overflowY],c=g&&g.display,null==c&&(c=Lt.get(t,"display")),l=mt.css(t,"display"),"none"===l&&(c?l=c:(x([t],!0),c=t.style.display||c,l=mt.css(t,"display"),x([t]))),("inline"===l||"inline-block"===l&&null!=c)&&"none"===mt.css(t,"float")&&(u||(h.done(function(){p.display=c}),null==c&&(l=p.display,c="none"===l?"":l)),p.display="inline-block")),n.overflow&&(p.overflow="hidden",h.always(function(){p.overflow=n.overflow[0],p.overflowX=n.overflow[1],p.overflowY=n.overflow[2]})),u=!1;for(r in d)u||(g?"hidden"in g&&(v=g.hidden):g=Lt.access(t,"fxshow",{display:c}),o&&(g.hidden=!v),v&&x([t],!0),h.done(function(){v||x([t]),Lt.remove(t,"fxshow");for(r in d)mt.style(t,r,d[r])})),u=U(v?g[r]:0,r,h),r in g||(g[r]=u.start,v&&(u.end=u.start,u.start=0))}}function X(t,e){var n,r,i,o,a;for(n in t)if(r=mt.camelCase(n),i=e[r],o=t[n],mt.isArray(o)&&(i=o[1],o=t[n]=o[0]),n!==r&&(t[r]=o,delete t[n]),a=mt.cssHooks[r],a&&"expand"in a){o=a.expand(o),delete t[r];for(n in o)n in t||(t[n]=o[n],e[n]=i)}else e[r]=i}function G(t,e,n){var r,i,o=0,a=G.prefilters.length,s=mt.Deferred().always(function(){delete u.elem}),u=function(){if(i)return!1;for(var e=ge||z(),n=Math.max(0,c.startTime+c.duration-e),r=n/c.duration||0,o=1-r,a=0,u=c.tweens.length;a<u;a++)c.tweens[a].run(o);return s.notifyWith(t,[c,o,n]),o<1&&u?n:(s.resolveWith(t,[c]),!1)},c=s.promise({elem:t,props:mt.extend({},e),opts:mt.extend(!0,{specialEasing:{},easing:mt.easing._default},n),originalProperties:e,originalOptions:n,startTime:ge||z(),duration:n.duration,tweens:[],createTween:function(e,n){var r=mt.Tween(t,c.opts,e,n,c.opts.specialEasing[e]||c.opts.easing);return c.tweens.push(r),r},stop:function(e){var n=0,r=e?c.tweens.length:0;if(i)return this;for(i=!0;n<r;n++)c.tweens[n].run(1);return e?(s.notifyWith(t,[c,1,0]),s.resolveWith(t,[c,e])):s.rejectWith(t,[c,e]),this}}),l=c.props;for(X(l,c.opts.specialEasing);o<a;o++)if(r=G.prefilters[o].call(c,t,l,c.opts))return mt.isFunction(r.stop)&&(mt._queueHooks(c.elem,c.opts.queue).stop=mt.proxy(r.stop,r)),r;return mt.map(l,U,c),mt.isFunction(c.opts.start)&&c.opts.start.call(t,c),mt.fx.timer(mt.extend(u,{elem:t,anim:c,queue:c.opts.queue})),c.progress(c.opts.progress).done(c.opts.done,c.opts.complete).fail(c.opts.fail).always(c.opts.always)}function Z(t){return t.getAttribute&&t.getAttribute("class")||""}function J(t,e,r,i){var o;if(mt.isArray(e))mt.each(e,function(e,o){r||Oe.test(t)?i(t,o):J(t+"["+("object"===("undefined"==typeof o?"undefined":n(o))&&null!=o?e:"")+"]",o,r,i)});else if(r||"object"!==mt.type(e))i(t,e);else for(o in e)J(t+"["+o+"]",e[o],r,i)}function Y(t){return function(e,n){"string"!=typeof e&&(n=e,e="*");var r,i=0,o=e.toLowerCase().match(Dt)||[];if(mt.isFunction(n))for(;r=o[i++];)"+"===r[0]?(r=r.slice(1)||"*",(t[r]=t[r]||[]).unshift(n)):(t[r]=t[r]||[]).push(n)}}function Q(t,e,n,r){function i(s){var u;return o[s]=!0,mt.each(t[s]||[],function(t,s){var c=s(e,n,r);return"string"!=typeof c||a||o[c]?a?!(u=c):void 0:(e.dataTypes.unshift(c),i(c),!1)}),u}var o={},a=t===ze;return i(e.dataTypes[0])||!o["*"]&&i("*")}function K(t,e){var n,r,i=mt.ajaxSettings.flatOptions||{};for(n in e)void 0!==e[n]&&((i[n]?t:r||(r={}))[n]=e[n]);return r&&mt.extend(!0,t,r),t}function tt(t,e,n){for(var r,i,o,a,s=t.contents,u=t.dataTypes;"*"===u[0];)u.shift(),void 0===r&&(r=t.mimeType||e.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||t.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}function et(t,e,n,r){var i,o,a,s,u,c={},l=t.dataTypes.slice();if(l[1])for(a in t.converters)c[a.toLowerCase()]=t.converters[a];for(o=l.shift();o;)if(t.responseFields[o]&&(n[t.responseFields[o]]=e),!u&&r&&t.dataFilter&&(e=t.dataFilter(e,t.dataType)),u=o,o=l.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(a=c[u+" "+o]||c["* "+o],!a)for(i in c)if(s=i.split(" "),s[1]===o&&(a=c[u+" "+s[0]]||c["* "+s[0]])){a===!0?a=c[i]:c[i]!==!0&&(o=s[0],l.unshift(s[1]));break}if(a!==!0)if(a&&t["throws"])e=a(e);else try{e=a(e)}catch(f){return{state:"parsererror",error:a?f:"No conversion from "+u+" to "+o}}}return{state:"success",data:e}}function nt(t){return mt.isWindow(t)?t:9===t.nodeType&&t.defaultView}var rt=[],it=o.document,ot=Object.getPrototypeOf,at=rt.slice,st=rt.concat,ut=rt.push,ct=rt.indexOf,lt={},ft=lt.toString,ht=lt.hasOwnProperty,dt=ht.toString,pt=dt.call(Object),vt={},gt="3.0.0",mt=function Qe(t,e){return new Qe.fn.init(t,e)},yt=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,bt=/^-ms-/,xt=/-([a-z])/g,wt=function(t,e){return e.toUpperCase()};mt.fn=mt.prototype={jquery:gt,constructor:mt,length:0,toArray:function(){return at.call(this)},get:function(t){return null!=t?t<0?this[t+this.length]:this[t]:at.call(this)},pushStack:function(t){var e=mt.merge(this.constructor(),t);return e.prevObject=this,e},each:function(t){return mt.each(this,t)},map:function(t){return this.pushStack(mt.map(this,function(e,n){return t.call(e,n,e)}))},slice:function(){return this.pushStack(at.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(t){var e=this.length,n=+t+(t<0?e:0);return this.pushStack(n>=0&&n<e?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:ut,sort:rt.sort,splice:rt.splice},mt.extend=mt.fn.extend=function(){var t,e,r,i,o,a,s=arguments[0]||{},u=1,c=arguments.length,l=!1;for("boolean"==typeof s&&(l=s,s=arguments[u]||{},u++),"object"===("undefined"==typeof s?"undefined":n(s))||mt.isFunction(s)||(s={}),u===c&&(s=this,u--);u<c;u++)if(null!=(t=arguments[u]))for(e in t)r=s[e],i=t[e],s!==i&&(l&&i&&(mt.isPlainObject(i)||(o=mt.isArray(i)))?(o?(o=!1,a=r&&mt.isArray(r)?r:[]):a=r&&mt.isPlainObject(r)?r:{},s[e]=mt.extend(l,a,i)):void 0!==i&&(s[e]=i));return s},mt.extend({expando:"jQuery"+(gt+Math.random()).replace(/\D/g,""),isReady:!0,error:function(t){throw new Error(t)},noop:function(){},isFunction:function(t){return"function"===mt.type(t)},isArray:Array.isArray,isWindow:function(t){return null!=t&&t===t.window},isNumeric:function(t){var e=mt.type(t);return("number"===e||"string"===e)&&!isNaN(t-parseFloat(t))},isPlainObject:function(t){var e,n;return!(!t||"[object Object]"!==ft.call(t))&&(!(e=ot(t))||(n=ht.call(e,"constructor")&&e.constructor,"function"==typeof n&&dt.call(n)===pt))},isEmptyObject:function(t){var e;for(e in t)return!1;return!0},type:function(t){return null==t?t+"":"object"===("undefined"==typeof t?"undefined":n(t))||"function"==typeof t?lt[ft.call(t)]||"object":"undefined"==typeof t?"undefined":n(t)},globalEval:function(t){s(t)},camelCase:function(t){return t.replace(bt,"ms-").replace(xt,wt)},nodeName:function(t,e){return t.nodeName&&t.nodeName.toLowerCase()===e.toLowerCase()},each:function(t,e){var n,r=0;if(u(t))for(n=t.length;r<n&&e.call(t[r],r,t[r])!==!1;r++);else for(r in t)if(e.call(t[r],r,t[r])===!1)break;return t},trim:function(t){return null==t?"":(t+"").replace(yt,"")},makeArray:function(t,e){var n=e||[];return null!=t&&(u(Object(t))?mt.merge(n,"string"==typeof t?[t]:t):ut.call(n,t)),n},inArray:function(t,e,n){return null==e?-1:ct.call(e,t,n)},merge:function(t,e){for(var n=+e.length,r=0,i=t.length;r<n;r++)t[i++]=e[r];return t.length=i,t},grep:function(t,e,n){for(var r,i=[],o=0,a=t.length,s=!n;o<a;o++)r=!e(t[o],o),r!==s&&i.push(t[o]);return i},map:function(t,e,n){var r,i,o=0,a=[];if(u(t))for(r=t.length;o<r;o++)i=e(t[o],o,n),null!=i&&a.push(i);else for(o in t)i=e(t[o],o,n),null!=i&&a.push(i);return st.apply([],a)},guid:1,proxy:function Ke(t,e){var n,r,Ke;if("string"==typeof e&&(n=t[e],e=t,t=n),mt.isFunction(t))return r=at.call(arguments,2),Ke=function(){return t.apply(e||this,r.concat(at.call(arguments)))},Ke.guid=t.guid=t.guid||mt.guid++,Ke},now:Date.now,support:vt}),"function"==typeof Symbol&&(mt.fn[Symbol.iterator]=rt[Symbol.iterator]),mt.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(t,e){lt["[object "+e+"]"]=e.toLowerCase()});var _t=/*!
* Sizzle CSS Selector Engine v2.3.0
* https://sizzlejs.com/
*
@@ -23,26 +23,26 @@
*
* Date: 2016-01-04
*/
-function(t){function e(t,e,n,r){var i,o,a,s,u,c,l,h=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:H)!==D&&N(e),e=e||D,P)){if(11!==p&&(u=mt.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(h&&(a=h.getElementById(i))&&R(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return Q.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&_.getElementsByClassName&&e.getElementsByClassName)return Q.apply(n,e.getElementsByClassName(i)),n}if(_.qsa&&!W[t+" "]&&(!F||!F.test(t))){if(1!==p)h=e,l=t;else if("object"!==e.nodeName.toLowerCase()){for((s=e.getAttribute("id"))?s=s.replace(wt,_t):e.setAttribute("id",s=I),c=A(t),o=c.length;o--;)c[o]="#"+s+" "+d(c[o]);l=c.join(","),h=yt.test(t)&&f(e.parentNode)||e}if(l)try{return Q.apply(n,h.querySelectorAll(l)),n}catch(v){}finally{s===I&&e.removeAttribute("id")}}}return $(t.replace(st,"$1"),e,n,r)}function n(){function t(n,r){return e.push(n+" ")>C.cacheLength&&delete t[e.shift()],t[n+" "]=r}var e=[];return t}function r(t){return t[I]=!0,t}function i(t){var e=D.createElement("fieldset");try{return!!t(e)}catch(n){return!1}finally{e.parentNode&&e.parentNode.removeChild(e),e=null}}function o(t,e){for(var n=t.split("|"),r=n.length;r--;)C.attrHandle[n[r]]=e}function a(t,e){var n=e&&t,r=n&&1===t.nodeType&&1===e.nodeType&&t.sourceIndex-e.sourceIndex;if(r)return r;if(n)for(;n=n.nextSibling;)if(n===e)return-1;return t?1:-1}function s(t){return function(e){var n=e.nodeName.toLowerCase();return"input"===n&&e.type===t}}function u(t){return function(e){var n=e.nodeName.toLowerCase();return("input"===n||"button"===n)&&e.type===t}}function c(t){return function(e){return"label"in e&&e.disabled===t||"form"in e&&e.disabled===t||"form"in e&&e.disabled===!1&&(e.isDisabled===t||e.isDisabled!==!t&&("label"in e||!kt(e))!==t)}}function l(t){return r(function(e){return e=+e,r(function(n,r){for(var i,o=t([],n.length,e),a=o.length;a--;)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function f(t){return t&&"undefined"!=typeof t.getElementsByTagName&&t}function h(){}function d(t){for(var e=0,n=t.length,r="";e<n;e++)r+=t[e].value;return r}function p(t,e,n){var r=e.dir,i=e.next,o=i||r,a=n&&"parentNode"===o,s=z++;return e.first?function(e,n,i){for(;e=e[r];)if(1===e.nodeType||a)return t(e,n,i)}:function(e,n,u){var c,l,f,h=[q,s];if(u){for(;e=e[r];)if((1===e.nodeType||a)&&t(e,n,u))return!0}else for(;e=e[r];)if(1===e.nodeType||a)if(f=e[I]||(e[I]={}),l=f[e.uniqueID]||(f[e.uniqueID]={}),i&&i===e.nodeName.toLowerCase())e=e[r]||e;else{if((c=l[o])&&c[0]===q&&c[1]===s)return h[2]=c[2];if(l[o]=h,h[2]=t(e,n,u))return!0}}}function v(t){return t.length>1?function(e,n,r){for(var i=t.length;i--;)if(!t[i](e,n,r))return!1;return!0}:t[0]}function g(t,n,r){for(var i=0,o=n.length;i<o;i++)e(t,n[i],r);return r}function m(t,e,n,r,i){for(var o,a=[],s=0,u=t.length,c=null!=e;s<u;s++)(o=t[s])&&(n&&!n(o,r,i)||(a.push(o),c&&e.push(s)));return a}function y(t,e,n,i,o,a){return i&&!i[I]&&(i=y(i)),o&&!o[I]&&(o=y(o,a)),r(function(r,a,s,u){var c,l,f,h=[],d=[],p=a.length,v=r||g(e||"*",s.nodeType?[s]:s,[]),y=!t||!r&&e?v:m(v,h,t,s,u),b=n?o||(r?t:p||i)?[]:a:y;if(n&&n(y,b,s,u),i)for(c=m(b,d),i(c,[],s,u),l=c.length;l--;)(f=c[l])&&(b[d[l]]=!(y[d[l]]=f));if(r){if(o||t){if(o){for(c=[],l=b.length;l--;)(f=b[l])&&c.push(y[l]=f);o(null,b=[],c,u)}for(l=b.length;l--;)(f=b[l])&&(c=o?tt(r,f):h[l])>-1&&(r[c]=!(a[c]=f))}}else b=m(b===a?b.splice(p,b.length):b),o?o(null,a,b,u):Q.apply(a,b)})}function b(t){for(var e,n,r,i=t.length,o=C.relative[t[0].type],a=o||C.relative[" "],s=o?1:0,u=p(function(t){return t===e},a,!0),c=p(function(t){return tt(e,t)>-1},a,!0),l=[function(t,n,r){var i=!o&&(r||n!==E)||((e=n).nodeType?u(t,n,r):c(t,n,r));return e=null,i}];s<i;s++)if(n=C.relative[t[s].type])l=[p(v(l),n)];else{if(n=C.filter[t[s].type].apply(null,t[s].matches),n[I]){for(r=++s;r<i&&!C.relative[t[r].type];r++);return y(s>1&&v(l),s>1&&d(t.slice(0,s-1).concat({value:" "===t[s-2].type?"*":""})).replace(st,"$1"),n,s<r&&b(t.slice(s,r)),r<i&&b(t=t.slice(r)),r<i&&d(t))}l.push(n)}return v(l)}function x(t,n){var i=n.length>0,o=t.length>0,a=function(r,a,s,u,c){var l,f,h,d=0,p="0",v=r&&[],g=[],y=E,b=r||o&&C.find.TAG("*",c),x=q+=null==y?1:Math.random()||.1,w=b.length;for(c&&(E=a===D||a||c);p!==w&&null!=(l=b[p]);p++){if(o&&l){for(f=0,a||l.ownerDocument===D||(N(l),s=!P);h=t[f++];)if(h(l,a||D,s)){u.push(l);break}c&&(q=x)}i&&((l=!h&&l)&&d--,r&&v.push(l))}if(d+=p,i&&p!==d){for(f=0;h=n[f++];)h(v,g,a,s);if(r){if(d>0)for(;p--;)v[p]||g[p]||(g[p]=J.call(u));g=m(g)}Q.apply(u,g),c&&!r&&g.length>0&&d+n.length>1&&e.uniqueSort(u)}return c&&(q=x,E=y),v};return i?r(a):a}var w,_,C,k,T,A,S,$,E,j,O,N,D,M,P,F,B,L,R,I="sizzle"+1*new Date,H=t.document,q=0,z=0,V=n(),U=n(),W=n(),X=function(t,e){return t===e&&(O=!0),0},G={}.hasOwnProperty,Z=[],J=Z.pop,Y=Z.push,Q=Z.push,K=Z.slice,tt=function(t,e){for(var n=0,r=t.length;n<r;n++)if(t[n]===e)return n;return-1},et="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",nt="[\\x20\\t\\r\\n\\f]",rt="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",it="\\["+nt+"*("+rt+")(?:"+nt+"*([*^$|!~]?=)"+nt+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+rt+"))|)"+nt+"*\\]",ot=":("+rt+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+it+")*)|.*)\\)|)",at=new RegExp(nt+"+","g"),st=new RegExp("^"+nt+"+|((?:^|[^\\\\])(?:\\\\.)*)"+nt+"+$","g"),ut=new RegExp("^"+nt+"*,"+nt+"*"),ct=new RegExp("^"+nt+"*([>+~]|"+nt+")"+nt+"*"),lt=new RegExp("="+nt+"*([^\\]'\"]*?)"+nt+"*\\]","g"),ft=new RegExp(ot),ht=new RegExp("^"+rt+"$"),dt={ID:new RegExp("^#("+rt+")"),CLASS:new RegExp("^\\.("+rt+")"),TAG:new RegExp("^("+rt+"|[*])"),ATTR:new RegExp("^"+it),PSEUDO:new RegExp("^"+ot),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+nt+"*(even|odd|(([+-]|)(\\d*)n|)"+nt+"*(?:([+-]|)"+nt+"*(\\d+)|))"+nt+"*\\)|)","i"),bool:new RegExp("^(?:"+et+")$","i"),needsContext:new RegExp("^"+nt+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+nt+"*((?:-\\d)?\\d*)"+nt+"*\\)|)(?=[^-]|$)","i")},pt=/^(?:input|select|textarea|button)$/i,vt=/^h\d$/i,gt=/^[^{]+\{\s*\[native \w/,mt=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,yt=/[+~]/,bt=new RegExp("\\\\([\\da-f]{1,6}"+nt+"?|("+nt+")|.)","ig"),xt=function(t,e,n){var r="0x"+e-65536;return r!==r||n?e:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},wt=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g,_t=function(t,e){return e?"\0"===t?"�":t.slice(0,-1)+"\\"+t.charCodeAt(t.length-1).toString(16)+" ":"\\"+t},Ct=function(){N()},kt=p(function(t){return t.disabled===!0},{dir:"parentNode",next:"legend"});try{Q.apply(Z=K.call(H.childNodes),H.childNodes),Z[H.childNodes.length].nodeType}catch(Tt){Q={apply:Z.length?function(t,e){Y.apply(t,K.call(e))}:function(t,e){for(var n=t.length,r=0;t[n++]=e[r++];);t.length=n-1}}}_=e.support={},T=e.isXML=function(t){var e=t&&(t.ownerDocument||t).documentElement;return!!e&&"HTML"!==e.nodeName},N=e.setDocument=function(t){var e,n,r=t?t.ownerDocument||t:H;return r!==D&&9===r.nodeType&&r.documentElement?(D=r,M=D.documentElement,P=!T(D),H!==D&&(n=D.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",Ct,!1):n.attachEvent&&n.attachEvent("onunload",Ct)),_.attributes=i(function(t){return t.className="i",!t.getAttribute("className")}),_.getElementsByTagName=i(function(t){return t.appendChild(D.createComment("")),!t.getElementsByTagName("*").length}),_.getElementsByClassName=gt.test(D.getElementsByClassName),_.getById=i(function(t){return M.appendChild(t).id=I,!D.getElementsByName||!D.getElementsByName(I).length}),_.getById?(C.find.ID=function(t,e){if("undefined"!=typeof e.getElementById&&P){var n=e.getElementById(t);return n?[n]:[]}},C.filter.ID=function(t){var e=t.replace(bt,xt);return function(t){return t.getAttribute("id")===e}}):(delete C.find.ID,C.filter.ID=function(t){var e=t.replace(bt,xt);return function(t){var n="undefined"!=typeof t.getAttributeNode&&t.getAttributeNode("id");return n&&n.value===e}}),C.find.TAG=_.getElementsByTagName?function(t,e){return"undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t):_.qsa?e.querySelectorAll(t):void 0}:function(t,e){var n,r=[],i=0,o=e.getElementsByTagName(t);if("*"===t){for(;n=o[i++];)1===n.nodeType&&r.push(n);return r}return o},C.find.CLASS=_.getElementsByClassName&&function(t,e){if("undefined"!=typeof e.getElementsByClassName&&P)return e.getElementsByClassName(t)},B=[],F=[],(_.qsa=gt.test(D.querySelectorAll))&&(i(function(t){M.appendChild(t).innerHTML="<a id='"+I+"'></a><select id='"+I+"-\r\\' msallowcapture=''><option selected=''></option></select>",t.querySelectorAll("[msallowcapture^='']").length&&F.push("[*^$]="+nt+"*(?:''|\"\")"),t.querySelectorAll("[selected]").length||F.push("\\["+nt+"*(?:value|"+et+")"),t.querySelectorAll("[id~="+I+"-]").length||F.push("~="),t.querySelectorAll(":checked").length||F.push(":checked"),t.querySelectorAll("a#"+I+"+*").length||F.push(".#.+[+~]")}),i(function(t){t.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var e=D.createElement("input");e.setAttribute("type","hidden"),t.appendChild(e).setAttribute("name","D"),t.querySelectorAll("[name=d]").length&&F.push("name"+nt+"*[*^$|!~]?="),2!==t.querySelectorAll(":enabled").length&&F.push(":enabled",":disabled"),M.appendChild(t).disabled=!0,2!==t.querySelectorAll(":disabled").length&&F.push(":enabled",":disabled"),t.querySelectorAll("*,:x"),F.push(",.*:")})),(_.matchesSelector=gt.test(L=M.matches||M.webkitMatchesSelector||M.mozMatchesSelector||M.oMatchesSelector||M.msMatchesSelector))&&i(function(t){_.disconnectedMatch=L.call(t,"*"),L.call(t,"[s!='']:x"),B.push("!=",ot)}),F=F.length&&new RegExp(F.join("|")),B=B.length&&new RegExp(B.join("|")),e=gt.test(M.compareDocumentPosition),R=e||gt.test(M.contains)?function(t,e){var n=9===t.nodeType?t.documentElement:t,r=e&&e.parentNode;return t===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):t.compareDocumentPosition&&16&t.compareDocumentPosition(r)))}:function(t,e){if(e)for(;e=e.parentNode;)if(e===t)return!0;return!1},X=e?function(t,e){if(t===e)return O=!0,0;var n=!t.compareDocumentPosition-!e.compareDocumentPosition;return n?n:(n=(t.ownerDocument||t)===(e.ownerDocument||e)?t.compareDocumentPosition(e):1,1&n||!_.sortDetached&&e.compareDocumentPosition(t)===n?t===D||t.ownerDocument===H&&R(H,t)?-1:e===D||e.ownerDocument===H&&R(H,e)?1:j?tt(j,t)-tt(j,e):0:4&n?-1:1)}:function(t,e){if(t===e)return O=!0,0;var n,r=0,i=t.parentNode,o=e.parentNode,s=[t],u=[e];if(!i||!o)return t===D?-1:e===D?1:i?-1:o?1:j?tt(j,t)-tt(j,e):0;if(i===o)return a(t,e);for(n=t;n=n.parentNode;)s.unshift(n);for(n=e;n=n.parentNode;)u.unshift(n);for(;s[r]===u[r];)r++;return r?a(s[r],u[r]):s[r]===H?-1:u[r]===H?1:0},D):D},e.matches=function(t,n){return e(t,null,null,n)},e.matchesSelector=function(t,n){if((t.ownerDocument||t)!==D&&N(t),n=n.replace(lt,"='$1']"),_.matchesSelector&&P&&!W[n+" "]&&(!B||!B.test(n))&&(!F||!F.test(n)))try{var r=L.call(t,n);if(r||_.disconnectedMatch||t.document&&11!==t.document.nodeType)return r}catch(i){}return e(n,D,null,[t]).length>0},e.contains=function(t,e){return(t.ownerDocument||t)!==D&&N(t),R(t,e)},e.attr=function(t,e){(t.ownerDocument||t)!==D&&N(t);var n=C.attrHandle[e.toLowerCase()],r=n&&G.call(C.attrHandle,e.toLowerCase())?n(t,e,!P):void 0;return void 0!==r?r:_.attributes||!P?t.getAttribute(e):(r=t.getAttributeNode(e))&&r.specified?r.value:null},e.escape=function(t){return(t+"").replace(wt,_t)},e.error=function(t){throw new Error("Syntax error, unrecognized expression: "+t)},e.uniqueSort=function(t){var e,n=[],r=0,i=0;if(O=!_.detectDuplicates,j=!_.sortStable&&t.slice(0),t.sort(X),O){for(;e=t[i++];)e===t[i]&&(r=n.push(i));for(;r--;)t.splice(n[r],1)}return j=null,t},k=e.getText=function(t){var e,n="",r=0,i=t.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof t.textContent)return t.textContent;for(t=t.firstChild;t;t=t.nextSibling)n+=k(t)}else if(3===i||4===i)return t.nodeValue}else for(;e=t[r++];)n+=k(e);return n},C=e.selectors={cacheLength:50,createPseudo:r,match:dt,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(t){return t[1]=t[1].replace(bt,xt),t[3]=(t[3]||t[4]||t[5]||"").replace(bt,xt),"~="===t[2]&&(t[3]=" "+t[3]+" "),t.slice(0,4)},CHILD:function(t){return t[1]=t[1].toLowerCase(),"nth"===t[1].slice(0,3)?(t[3]||e.error(t[0]),t[4]=+(t[4]?t[5]+(t[6]||1):2*("even"===t[3]||"odd"===t[3])),t[5]=+(t[7]+t[8]||"odd"===t[3])):t[3]&&e.error(t[0]),t},PSEUDO:function(t){var e,n=!t[6]&&t[2];return dt.CHILD.test(t[0])?null:(t[3]?t[2]=t[4]||t[5]||"":n&&ft.test(n)&&(e=A(n,!0))&&(e=n.indexOf(")",n.length-e)-n.length)&&(t[0]=t[0].slice(0,e),t[2]=n.slice(0,e)),t.slice(0,3))}},filter:{TAG:function(t){var e=t.replace(bt,xt).toLowerCase();return"*"===t?function(){return!0}:function(t){return t.nodeName&&t.nodeName.toLowerCase()===e}},CLASS:function(t){var e=V[t+" "];return e||(e=new RegExp("(^|"+nt+")"+t+"("+nt+"|$)"))&&V(t,function(t){return e.test("string"==typeof t.className&&t.className||"undefined"!=typeof t.getAttribute&&t.getAttribute("class")||"")})},ATTR:function(t,n,r){return function(i){var o=e.attr(i,t);return null==o?"!="===n:!n||(o+="","="===n?o===r:"!="===n?o!==r:"^="===n?r&&0===o.indexOf(r):"*="===n?r&&o.indexOf(r)>-1:"$="===n?r&&o.slice(-r.length)===r:"~="===n?(" "+o.replace(at," ")+" ").indexOf(r)>-1:"|="===n&&(o===r||o.slice(0,r.length+1)===r+"-"))}},CHILD:function(t,e,n,r,i){var o="nth"!==t.slice(0,3),a="last"!==t.slice(-4),s="of-type"===e;return 1===r&&0===i?function(t){return!!t.parentNode}:function(e,n,u){var c,l,f,h,d,p,v=o!==a?"nextSibling":"previousSibling",g=e.parentNode,m=s&&e.nodeName.toLowerCase(),y=!u&&!s,b=!1;if(g){if(o){for(;v;){for(h=e;h=h[v];)if(s?h.nodeName.toLowerCase()===m:1===h.nodeType)return!1;p=v="only"===t&&!p&&"nextSibling"}return!0}if(p=[a?g.firstChild:g.lastChild],a&&y){for(h=g,f=h[I]||(h[I]={}),l=f[h.uniqueID]||(f[h.uniqueID]={}),c=l[t]||[],d=c[0]===q&&c[1],b=d&&c[2],h=d&&g.childNodes[d];h=++d&&h&&h[v]||(b=d=0)||p.pop();)if(1===h.nodeType&&++b&&h===e){l[t]=[q,d,b];break}}else if(y&&(h=e,f=h[I]||(h[I]={}),l=f[h.uniqueID]||(f[h.uniqueID]={}),c=l[t]||[],d=c[0]===q&&c[1],b=d),b===!1)for(;(h=++d&&h&&h[v]||(b=d=0)||p.pop())&&((s?h.nodeName.toLowerCase()!==m:1!==h.nodeType)||!++b||(y&&(f=h[I]||(h[I]={}),l=f[h.uniqueID]||(f[h.uniqueID]={}),l[t]=[q,b]),h!==e)););return b-=i,b===r||b%r===0&&b/r>=0}}},PSEUDO:function(t,n){var i,o=C.pseudos[t]||C.setFilters[t.toLowerCase()]||e.error("unsupported pseudo: "+t);return o[I]?o(n):o.length>1?(i=[t,t,"",n],C.setFilters.hasOwnProperty(t.toLowerCase())?r(function(t,e){for(var r,i=o(t,n),a=i.length;a--;)r=tt(t,i[a]),t[r]=!(e[r]=i[a])}):function(t){return o(t,0,i)}):o}},pseudos:{not:r(function(t){var e=[],n=[],i=S(t.replace(st,"$1"));return i[I]?r(function(t,e,n,r){for(var o,a=i(t,null,r,[]),s=t.length;s--;)(o=a[s])&&(t[s]=!(e[s]=o))}):function(t,r,o){return e[0]=t,i(e,null,o,n),e[0]=null,!n.pop()}}),has:r(function(t){return function(n){return e(t,n).length>0}}),contains:r(function(t){return t=t.replace(bt,xt),function(e){return(e.textContent||e.innerText||k(e)).indexOf(t)>-1}}),lang:r(function(t){return ht.test(t||"")||e.error("unsupported lang: "+t),t=t.replace(bt,xt).toLowerCase(),function(e){var n;do if(n=P?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return n=n.toLowerCase(),n===t||0===n.indexOf(t+"-");while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var n=t.location&&t.location.hash;return n&&n.slice(1)===e.id},root:function(t){return t===M},focus:function(t){return t===D.activeElement&&(!D.hasFocus||D.hasFocus())&&!!(t.type||t.href||~t.tabIndex)},enabled:c(!1),disabled:c(!0),checked:function(t){var e=t.nodeName.toLowerCase();return"input"===e&&!!t.checked||"option"===e&&!!t.selected},selected:function(t){return t.parentNode&&t.parentNode.selectedIndex,t.selected===!0},empty:function(t){for(t=t.firstChild;t;t=t.nextSibling)if(t.nodeType<6)return!1;return!0},parent:function(t){return!C.pseudos.empty(t)},header:function(t){return vt.test(t.nodeName)},input:function(t){return pt.test(t.nodeName)},button:function(t){var e=t.nodeName.toLowerCase();return"input"===e&&"button"===t.type||"button"===e},text:function(t){var e;return"input"===t.nodeName.toLowerCase()&&"text"===t.type&&(null==(e=t.getAttribute("type"))||"text"===e.toLowerCase())},first:l(function(){return[0]}),last:l(function(t,e){return[e-1]}),eq:l(function(t,e,n){return[n<0?n+e:n]}),even:l(function(t,e){for(var n=0;n<e;n+=2)t.push(n);return t}),odd:l(function(t,e){for(var n=1;n<e;n+=2)t.push(n);return t}),lt:l(function(t,e,n){for(var r=n<0?n+e:n;--r>=0;)t.push(r);return t}),gt:l(function(t,e,n){for(var r=n<0?n+e:n;++r<e;)t.push(r);return t})}},C.pseudos.nth=C.pseudos.eq;for(w in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})C.pseudos[w]=s(w);for(w in{submit:!0,reset:!0})C.pseudos[w]=u(w);return h.prototype=C.filters=C.pseudos,C.setFilters=new h,A=e.tokenize=function(t,n){var r,i,o,a,s,u,c,l=U[t+" "];if(l)return n?0:l.slice(0);for(s=t,u=[],c=C.preFilter;s;){r&&!(i=ut.exec(s))||(i&&(s=s.slice(i[0].length)||s),u.push(o=[])),r=!1,(i=ct.exec(s))&&(r=i.shift(),o.push({value:r,type:i[0].replace(st," ")}),s=s.slice(r.length));for(a in C.filter)!(i=dt[a].exec(s))||c[a]&&!(i=c[a](i))||(r=i.shift(),o.push({value:r,type:a,matches:i}),s=s.slice(r.length));if(!r)break}return n?s.length:s?e.error(t):U(t,u).slice(0)},S=e.compile=function(t,e){var n,r=[],i=[],o=W[t+" "];if(!o){for(e||(e=A(t)),n=e.length;n--;)o=b(e[n]),o[I]?r.push(o):i.push(o);o=W(t,x(i,r)),o.selector=t}return o},$=e.select=function(t,e,n,r){var i,o,a,s,u,c="function"==typeof t&&t,l=!r&&A(t=c.selector||t);if(n=n||[],1===l.length){if(o=l[0]=l[0].slice(0),o.length>2&&"ID"===(a=o[0]).type&&_.getById&&9===e.nodeType&&P&&C.relative[o[1].type]){if(e=(C.find.ID(a.matches[0].replace(bt,xt),e)||[])[0],!e)return n;c&&(e=e.parentNode),t=t.slice(o.shift().value.length)}for(i=dt.needsContext.test(t)?0:o.length;i--&&(a=o[i],!C.relative[s=a.type]);)if((u=C.find[s])&&(r=u(a.matches[0].replace(bt,xt),yt.test(o[0].type)&&f(e.parentNode)||e))){if(o.splice(i,1),t=r.length&&d(o),!t)return Q.apply(n,r),n;break}}return(c||S(t,l))(r,e,!P,n,!e||yt.test(t)&&f(e.parentNode)||e),n},_.sortStable=I.split("").sort(X).join("")===I,_.detectDuplicates=!!O,N(),_.sortDetached=i(function(t){return 1&t.compareDocumentPosition(D.createElement("fieldset"))}),i(function(t){return t.innerHTML="<a href='#'></a>","#"===t.firstChild.getAttribute("href")})||o("type|href|height|width",function(t,e,n){if(!n)return t.getAttribute(e,"type"===e.toLowerCase()?1:2)}),_.attributes&&i(function(t){return t.innerHTML="<input/>",t.firstChild.setAttribute("value",""),""===t.firstChild.getAttribute("value")})||o("value",function(t,e,n){if(!n&&"input"===t.nodeName.toLowerCase())return t.defaultValue}),i(function(t){return null==t.getAttribute("disabled")})||o(et,function(t,e,n){var r;if(!n)return t[e]===!0?e.toLowerCase():(r=t.getAttributeNode(e))&&r.specified?r.value:null}),e}(o);mt.find=_t,mt.expr=_t.selectors,mt.expr[":"]=mt.expr.pseudos,mt.uniqueSort=mt.unique=_t.uniqueSort,mt.text=_t.getText,mt.isXMLDoc=_t.isXML,mt.contains=_t.contains,mt.escapeSelector=_t.escape;var Ct=function(t,e,n){for(var r=[],i=void 0!==n;(t=t[e])&&9!==t.nodeType;)if(1===t.nodeType){if(i&&mt(t).is(n))break;r.push(t)}return r},kt=function(t,e){for(var n=[];t;t=t.nextSibling)1===t.nodeType&&t!==e&&n.push(t);return n},Tt=mt.expr.match.needsContext,At=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i,St=/^.[^:#\[\.,]*$/;mt.filter=function(t,e,n){var r=e[0];return n&&(t=":not("+t+")"),1===e.length&&1===r.nodeType?mt.find.matchesSelector(r,t)?[r]:[]:mt.find.matches(t,mt.grep(e,function(t){return 1===t.nodeType}))},mt.fn.extend({find:function(t){var e,n,r=this.length,i=this;if("string"!=typeof t)return this.pushStack(mt(t).filter(function(){for(e=0;e<r;e++)if(mt.contains(i[e],this))return!0}));for(n=this.pushStack([]),e=0;e<r;e++)mt.find(t,i[e],n);return r>1?mt.uniqueSort(n):n},filter:function(t){return this.pushStack(c(this,t||[],!1))},not:function(t){return this.pushStack(c(this,t||[],!0))},is:function(t){return!!c(this,"string"==typeof t&&Tt.test(t)?mt(t):t||[],!1).length}});var $t,Et=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,jt=mt.fn.init=function(t,e,n){var r,i;if(!t)return this;if(n=n||$t,"string"==typeof t){if(r="<"===t[0]&&">"===t[t.length-1]&&t.length>=3?[null,t,null]:Et.exec(t),!r||!r[1]&&e)return!e||e.jquery?(e||n).find(t):this.constructor(e).find(t);if(r[1]){if(e=e instanceof mt?e[0]:e,mt.merge(this,mt.parseHTML(r[1],e&&e.nodeType?e.ownerDocument||e:it,!0)),At.test(r[1])&&mt.isPlainObject(e))for(r in e)mt.isFunction(this[r])?this[r](e[r]):this.attr(r,e[r]);return this}return i=it.getElementById(r[2]),i&&(this[0]=i,this.length=1),this}return t.nodeType?(this[0]=t,this.length=1,this):mt.isFunction(t)?void 0!==n.ready?n.ready(t):t(mt):mt.makeArray(t,this)};jt.prototype=mt.fn,$t=mt(it);var Ot=/^(?:parents|prev(?:Until|All))/,Nt={children:!0,contents:!0,next:!0,prev:!0};mt.fn.extend({has:function(t){var e=mt(t,this),n=e.length;return this.filter(function(){for(var t=0;t<n;t++)if(mt.contains(this,e[t]))return!0})},closest:function(t,e){var n,r=0,i=this.length,o=[],a="string"!=typeof t&&mt(t);if(!Tt.test(t))for(;r<i;r++)for(n=this[r];n&&n!==e;n=n.parentNode)if(n.nodeType<11&&(a?a.index(n)>-1:1===n.nodeType&&mt.find.matchesSelector(n,t))){o.push(n);break}return this.pushStack(o.length>1?mt.uniqueSort(o):o)},index:function(t){return t?"string"==typeof t?ct.call(mt(t),this[0]):ct.call(this,t.jquery?t[0]:t):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(t,e){return this.pushStack(mt.uniqueSort(mt.merge(this.get(),mt(t,e))))},addBack:function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}}),mt.each({parent:function tn(t){var tn=t.parentNode;return tn&&11!==tn.nodeType?tn:null},parents:function(t){return Ct(t,"parentNode")},parentsUntil:function(t,e,n){return Ct(t,"parentNode",n)},next:function(t){return l(t,"nextSibling")},prev:function(t){return l(t,"previousSibling")},nextAll:function(t){return Ct(t,"nextSibling")},prevAll:function(t){return Ct(t,"previousSibling")},nextUntil:function(t,e,n){return Ct(t,"nextSibling",n)},prevUntil:function(t,e,n){return Ct(t,"previousSibling",n)},siblings:function(t){return kt((t.parentNode||{}).firstChild,t)},children:function(t){return kt(t.firstChild)},contents:function(t){return t.contentDocument||mt.merge([],t.childNodes)}},function(t,e){mt.fn[t]=function(n,r){var i=mt.map(this,e,n);return"Until"!==t.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=mt.filter(r,i)),this.length>1&&(Nt[t]||mt.uniqueSort(i),Ot.test(t)&&i.reverse()),this.pushStack(i)}});var Dt=/\S+/g;mt.Callbacks=function(t){t="string"==typeof t?f(t):mt.extend({},t);var e,n,r,i,o=[],a=[],s=-1,u=function(){for(i=t.once,r=e=!0;a.length;s=-1)for(n=a.shift();++s<o.length;)o[s].apply(n[0],n[1])===!1&&t.stopOnFalse&&(s=o.length,n=!1);t.memory||(n=!1),e=!1,i&&(o=n?[]:"")},c={add:function(){return o&&(n&&!e&&(s=o.length-1,a.push(n)),function r(e){mt.each(e,function(e,n){mt.isFunction(n)?t.unique&&c.has(n)||o.push(n):n&&n.length&&"string"!==mt.type(n)&&r(n)})}(arguments),n&&!e&&u()),this},remove:function(){return mt.each(arguments,function(t,e){for(var n;(n=mt.inArray(e,o,n))>-1;)o.splice(n,1),n<=s&&s--}),this},has:function(t){return t?mt.inArray(t,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return i=a=[],o=n="",this},disabled:function(){return!o},lock:function(){return i=a=[],n||e||(o=n=""),this},locked:function(){return!!i},fireWith:function(t,n){return i||(n=n||[],n=[t,n.slice?n.slice():n],a.push(n),e||u()),this},fire:function(){return c.fireWith(this,arguments),this},fired:function(){return!!r}};return c},mt.extend({Deferred:function(t){var e=[["notify","progress",mt.Callbacks("memory"),mt.Callbacks("memory"),2],["resolve","done",mt.Callbacks("once memory"),mt.Callbacks("once memory"),0,"resolved"],["reject","fail",mt.Callbacks("once memory"),mt.Callbacks("once memory"),1,"rejected"]],r="pending",i={state:function(){return r},always:function(){return a.done(arguments).fail(arguments),this},"catch":function(t){return i.then(null,t)},pipe:function(){var t=arguments;return mt.Deferred(function(n){mt.each(e,function(e,r){var i=mt.isFunction(t[r[4]])&&t[r[4]];a[r[1]](function(){var t=i&&i.apply(this,arguments);t&&mt.isFunction(t.promise)?t.promise().progress(n.notify).done(n.resolve).fail(n.reject):n[r[0]+"With"](this,i?[t]:arguments)})}),t=null}).promise()},then:function(t,r,i){function a(t,e,r,i){return function(){var u=this,c=arguments,l=function(){var o,l;if(!(t<s)){if(o=r.apply(u,c),o===e.promise())throw new TypeError("Thenable self-resolution");l=o&&("object"===("undefined"==typeof o?"undefined":n(o))||"function"==typeof o)&&o.then,mt.isFunction(l)?i?l.call(o,a(s,e,h,i),a(s,e,d,i)):(s++,l.call(o,a(s,e,h,i),a(s,e,d,i),a(s,e,h,e.notifyWith))):(r!==h&&(u=void 0,c=[o]),(i||e.resolveWith)(u,c))}},f=i?l:function(){try{l()}catch(n){mt.Deferred.exceptionHook&&mt.Deferred.exceptionHook(n,f.stackTrace),t+1>=s&&(r!==d&&(u=void 0,c=[n]),e.rejectWith(u,c))}};t?f():(mt.Deferred.getStackHook&&(f.stackTrace=mt.Deferred.getStackHook()),o.setTimeout(f))}}var s=0;return mt.Deferred(function(n){e[0][3].add(a(0,n,mt.isFunction(i)?i:h,n.notifyWith)),e[1][3].add(a(0,n,mt.isFunction(t)?t:h)),e[2][3].add(a(0,n,mt.isFunction(r)?r:d))}).promise()},promise:function(t){return null!=t?mt.extend(t,i):i}},a={};return mt.each(e,function(t,n){var o=n[2],s=n[5];i[n[1]]=o.add,s&&o.add(function(){r=s},e[3-t][2].disable,e[0][2].lock),o.add(n[3].fire),a[n[0]]=function(){return a[n[0]+"With"](this===a?void 0:this,arguments),this},a[n[0]+"With"]=o.fireWith}),i.promise(a),t&&t.call(a,a),a},when:function(t){var e=arguments.length,n=e,r=Array(n),i=at.call(arguments),o=mt.Deferred(),a=function(t){return function(n){r[t]=this,i[t]=arguments.length>1?at.call(arguments):n,--e||o.resolveWith(r,i)}};if(e<=1&&(p(t,o.done(a(n)).resolve,o.reject),"pending"===o.state()||mt.isFunction(i[n]&&i[n].then)))return o.then();for(;n--;)p(i[n],a(n),o.reject);return o.promise()}});var Mt=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;mt.Deferred.exceptionHook=function(t,e){o.console&&o.console.warn&&t&&Mt.test(t.name)&&o.console.warn("jQuery.Deferred exception: "+t.message,t.stack,e)};var Pt=mt.Deferred();mt.fn.ready=function(t){return Pt.then(t),this},mt.extend({isReady:!1,readyWait:1,holdReady:function(t){t?mt.readyWait++:mt.ready(!0)},ready:function(t){(t===!0?--mt.readyWait:mt.isReady)||(mt.isReady=!0,t!==!0&&--mt.readyWait>0||Pt.resolveWith(it,[mt]))}}),mt.ready.then=Pt.then,"complete"===it.readyState||"loading"!==it.readyState&&!it.documentElement.doScroll?o.setTimeout(mt.ready):(it.addEventListener("DOMContentLoaded",v),o.addEventListener("load",v));var Ft=function en(t,e,n,r,i,o,a){var s=0,u=t.length,c=null==n;if("object"===mt.type(n)){i=!0;for(s in n)en(t,e,s,n[s],!0,o,a)}else if(void 0!==r&&(i=!0,mt.isFunction(r)||(a=!0),c&&(a?(e.call(t,r),e=null):(c=e,e=function(t,e,n){return c.call(mt(t),n)})),e))for(;s<u;s++)e(t[s],n,a?r:r.call(t[s],s,e(t[s],n)));return i?t:c?e.call(t):u?e(t[0],n):o},Bt=function(t){return 1===t.nodeType||9===t.nodeType||!+t.nodeType};g.uid=1,g.prototype={cache:function(t){var e=t[this.expando];return e||(e={},Bt(t)&&(t.nodeType?t[this.expando]=e:Object.defineProperty(t,this.expando,{value:e,configurable:!0}))),e},set:function(t,e,n){var r,i=this.cache(t);if("string"==typeof e)i[mt.camelCase(e)]=n;else for(r in e)i[mt.camelCase(r)]=e[r];return i},get:function(t,e){return void 0===e?this.cache(t):t[this.expando]&&t[this.expando][mt.camelCase(e)]},access:function(t,e,n){return void 0===e||e&&"string"==typeof e&&void 0===n?this.get(t,e):(this.set(t,e,n),void 0!==n?n:e)},remove:function(t,e){var n,r=t[this.expando];if(void 0!==r){if(void 0!==e){mt.isArray(e)?e=e.map(mt.camelCase):(e=mt.camelCase(e),e=e in r?[e]:e.match(Dt)||[]),n=e.length;for(;n--;)delete r[e[n]]}(void 0===e||mt.isEmptyObject(r))&&(t.nodeType?t[this.expando]=void 0:delete t[this.expando])}},hasData:function(t){var e=t[this.expando];return void 0!==e&&!mt.isEmptyObject(e)}};var Lt=new g,Rt=new g,It=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Ht=/[A-Z]/g;mt.extend({hasData:function(t){return Rt.hasData(t)||Lt.hasData(t)},data:function(t,e,n){return Rt.access(t,e,n)},removeData:function(t,e){Rt.remove(t,e)},_data:function(t,e,n){return Lt.access(t,e,n)},_removeData:function(t,e){Lt.remove(t,e)}}),mt.fn.extend({data:function nn(t,e){var r,i,nn,o=this[0],a=o&&o.attributes;if(void 0===t){if(this.length&&(nn=Rt.get(o),1===o.nodeType&&!Lt.get(o,"hasDataAttrs"))){for(r=a.length;r--;)a[r]&&(i=a[r].name,0===i.indexOf("data-")&&(i=mt.camelCase(i.slice(5)),m(o,i,nn[i])));Lt.set(o,"hasDataAttrs",!0)}return nn}return"object"===("undefined"==typeof t?"undefined":n(t))?this.each(function(){Rt.set(this,t)}):Ft(this,function(e){var n;if(o&&void 0===e){if(n=Rt.get(o,t),void 0!==n)return n;if(n=m(o,t),void 0!==n)return n}else this.each(function(){Rt.set(this,t,e)})},null,e,arguments.length>1,null,!0)},removeData:function(t){return this.each(function(){Rt.remove(this,t)})}}),mt.extend({queue:function rn(t,e,n){var rn;if(t)return e=(e||"fx")+"queue",rn=Lt.get(t,e),n&&(!rn||mt.isArray(n)?rn=Lt.access(t,e,mt.makeArray(n)):rn.push(n)),rn||[]},dequeue:function(t,e){e=e||"fx";var n=mt.queue(t,e),r=n.length,i=n.shift(),o=mt._queueHooks(t,e),a=function(){mt.dequeue(t,e)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===e&&n.unshift("inprogress"),delete o.stop,i.call(t,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(t,e){var n=e+"queueHooks";return Lt.get(t,n)||Lt.access(t,n,{empty:mt.Callbacks("once memory").add(function(){Lt.remove(t,[e+"queue",n])})})}}),mt.fn.extend({queue:function(t,e){var n=2;return"string"!=typeof t&&(e=t,t="fx",n--),arguments.length<n?mt.queue(this[0],t):void 0===e?this:this.each(function(){var n=mt.queue(this,t,e);mt._queueHooks(this,t),"fx"===t&&"inprogress"!==n[0]&&mt.dequeue(this,t)})},dequeue:function(t){return this.each(function(){mt.dequeue(this,t)})},clearQueue:function(t){return this.queue(t||"fx",[])},promise:function(t,e){var n,r=1,i=mt.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};for("string"!=typeof t&&(e=t,t=void 0),t=t||"fx";a--;)n=Lt.get(o[a],t+"queueHooks"),n&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(e)}});var qt=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,zt=new RegExp("^(?:([+-])=|)("+qt+")([a-z%]*)$","i"),Vt=["Top","Right","Bottom","Left"],Ut=function(t,e){return t=e||t,"none"===t.style.display||""===t.style.display&&mt.contains(t.ownerDocument,t)&&"none"===mt.css(t,"display")},Wt=function(t,e,n,r){var i,o,a={};for(o in e)a[o]=t.style[o],t.style[o]=e[o];i=n.apply(t,r||[]);for(o in e)t.style[o]=a[o];return i},Xt={};mt.fn.extend({show:function(){return x(this,!0)},hide:function(){return x(this)},toggle:function(t){return"boolean"==typeof t?t?this.show():this.hide():this.each(function(){Ut(this)?mt(this).show():mt(this).hide()})}});var Gt=/^(?:checkbox|radio)$/i,Zt=/<([a-z][^\/\0>\x20\t\r\n\f]+)/i,Jt=/^$|\/(?:java|ecma)script/i,Yt={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};Yt.optgroup=Yt.option,Yt.tbody=Yt.tfoot=Yt.colgroup=Yt.caption=Yt.thead,Yt.th=Yt.td;var Qt=/<|&#?\w+;/;!function(){var t=it.createDocumentFragment(),e=t.appendChild(it.createElement("div")),n=it.createElement("input");n.setAttribute("type","radio"),n.setAttribute("checked","checked"),n.setAttribute("name","t"),e.appendChild(n),vt.checkClone=e.cloneNode(!0).cloneNode(!0).lastChild.checked,e.innerHTML="<textarea>x</textarea>",vt.noCloneChecked=!!e.cloneNode(!0).lastChild.defaultValue;
-}();var Kt=it.documentElement,te=/^key/,ee=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,ne=/^([^.]*)(?:\.(.+)|)/;mt.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,c,l,f,h,d,p,v,g=Lt.get(t);if(g)for(n.handler&&(o=n,n=o.handler,i=o.selector),i&&mt.find.matchesSelector(Kt,i),n.guid||(n.guid=mt.guid++),(u=g.events)||(u=g.events={}),(a=g.handle)||(a=g.handle=function(e){return"undefined"!=typeof mt&&mt.event.triggered!==e.type?mt.event.dispatch.apply(t,arguments):void 0}),e=(e||"").match(Dt)||[""],c=e.length;c--;)s=ne.exec(e[c])||[],d=v=s[1],p=(s[2]||"").split(".").sort(),d&&(f=mt.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=mt.event.special[d]||{},l=mt.extend({type:d,origType:v,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&mt.expr.match.needsContext.test(i),namespace:p.join(".")},o),(h=u[d])||(h=u[d]=[],h.delegateCount=0,f.setup&&f.setup.call(t,r,p,a)!==!1||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,l),l.handler.guid||(l.handler.guid=n.guid)),i?h.splice(h.delegateCount++,0,l):h.push(l),mt.event.global[d]=!0)},remove:function(t,e,n,r,i){var o,a,s,u,c,l,f,h,d,p,v,g=Lt.hasData(t)&&Lt.get(t);if(g&&(u=g.events)){for(e=(e||"").match(Dt)||[""],c=e.length;c--;)if(s=ne.exec(e[c])||[],d=v=s[1],p=(s[2]||"").split(".").sort(),d){for(f=mt.event.special[d]||{},d=(r?f.delegateType:f.bindType)||d,h=u[d]||[],s=s[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=h.length;o--;)l=h[o],!i&&v!==l.origType||n&&n.guid!==l.guid||s&&!s.test(l.namespace)||r&&r!==l.selector&&("**"!==r||!l.selector)||(h.splice(o,1),l.selector&&h.delegateCount--,f.remove&&f.remove.call(t,l));a&&!h.length&&(f.teardown&&f.teardown.call(t,p,g.handle)!==!1||mt.removeEvent(t,d,g.handle),delete u[d])}else for(d in u)mt.event.remove(t,d+e[c],n,r,!0);mt.isEmptyObject(u)&&Lt.remove(t,"handle events")}},dispatch:function(t){var e,n,r,i,o,a,s=mt.event.fix(t),u=new Array(arguments.length),c=(Lt.get(this,"events")||{})[s.type]||[],l=mt.event.special[s.type]||{};for(u[0]=s,e=1;e<arguments.length;e++)u[e]=arguments[e];if(s.delegateTarget=this,!l.preDispatch||l.preDispatch.call(this,s)!==!1){for(a=mt.event.handlers.call(this,s,c),e=0;(i=a[e++])&&!s.isPropagationStopped();)for(s.currentTarget=i.elem,n=0;(o=i.handlers[n++])&&!s.isImmediatePropagationStopped();)s.rnamespace&&!s.rnamespace.test(o.namespace)||(s.handleObj=o,s.data=o.data,r=((mt.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,u),void 0!==r&&(s.result=r)===!1&&(s.preventDefault(),s.stopPropagation()));return l.postDispatch&&l.postDispatch.call(this,s),s.result}},handlers:function(t,e){var n,r,i,o,a=[],s=e.delegateCount,u=t.target;if(s&&u.nodeType&&("click"!==t.type||isNaN(t.button)||t.button<1))for(;u!==this;u=u.parentNode||this)if(1===u.nodeType&&(u.disabled!==!0||"click"!==t.type)){for(r=[],n=0;n<s;n++)o=e[n],i=o.selector+" ",void 0===r[i]&&(r[i]=o.needsContext?mt(i,this).index(u)>-1:mt.find(i,this,null,[u]).length),r[i]&&r.push(o);r.length&&a.push({elem:u,handlers:r})}return s<e.length&&a.push({elem:this,handlers:e.slice(s)}),a},addProp:function(t,e){Object.defineProperty(mt.Event.prototype,t,{enumerable:!0,configurable:!0,get:mt.isFunction(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(t){return t[mt.expando]?t:new mt.Event(t)},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==A()&&this.focus)return this.focus(),!1},delegateType:"focusin"},blur:{trigger:function(){if(this===A()&&this.blur)return this.blur(),!1},delegateType:"focusout"},click:{trigger:function(){if("checkbox"===this.type&&this.click&&mt.nodeName(this,"input"))return this.click(),!1},_default:function(t){return mt.nodeName(t.target,"a")}},beforeunload:{postDispatch:function(t){void 0!==t.result&&t.originalEvent&&(t.originalEvent.returnValue=t.result)}}}},mt.removeEvent=function(t,e,n){t.removeEventListener&&t.removeEventListener(e,n)},mt.Event=function(t,e){return this instanceof mt.Event?(t&&t.type?(this.originalEvent=t,this.type=t.type,this.isDefaultPrevented=t.defaultPrevented||void 0===t.defaultPrevented&&t.returnValue===!1?k:T,this.target=t.target&&3===t.target.nodeType?t.target.parentNode:t.target,this.currentTarget=t.currentTarget,this.relatedTarget=t.relatedTarget):this.type=t,e&&mt.extend(this,e),this.timeStamp=t&&t.timeStamp||mt.now(),void(this[mt.expando]=!0)):new mt.Event(t,e)},mt.Event.prototype={constructor:mt.Event,isDefaultPrevented:T,isPropagationStopped:T,isImmediatePropagationStopped:T,isSimulated:!1,preventDefault:function(){var t=this.originalEvent;this.isDefaultPrevented=k,t&&!this.isSimulated&&t.preventDefault()},stopPropagation:function(){var t=this.originalEvent;this.isPropagationStopped=k,t&&!this.isSimulated&&t.stopPropagation()},stopImmediatePropagation:function(){var t=this.originalEvent;this.isImmediatePropagationStopped=k,t&&!this.isSimulated&&t.stopImmediatePropagation(),this.stopPropagation()}},mt.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(t){var e=t.button;return null==t.which&&te.test(t.type)?null!=t.charCode?t.charCode:t.keyCode:!t.which&&void 0!==e&&ee.test(t.type)?1&e?1:2&e?3:4&e?2:0:t.which}},mt.event.addProp),mt.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(t,e){mt.event.special[t]={delegateType:e,bindType:e,handle:function(t){var n,r=this,i=t.relatedTarget,o=t.handleObj;return i&&(i===r||mt.contains(r,i))||(t.type=o.origType,n=o.handler.apply(this,arguments),t.type=e),n}}}),mt.fn.extend({on:function(t,e,n,r){return S(this,t,e,n,r)},one:function(t,e,n,r){return S(this,t,e,n,r,1)},off:function(t,e,r){var i,o;if(t&&t.preventDefault&&t.handleObj)return i=t.handleObj,mt(t.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"===("undefined"==typeof t?"undefined":n(t))){for(o in t)this.off(o,e,t[o]);return this}return e!==!1&&"function"!=typeof e||(r=e,e=void 0),r===!1&&(r=T),this.each(function(){mt.event.remove(this,t,r,e)})}});var re=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,ie=/<script|<style|<link/i,oe=/checked\s*(?:[^=]|=\s*.checked.)/i,ae=/^true\/(.*)/,se=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;mt.extend({htmlPrefilter:function(t){return t.replace(re,"<$1></$2>")},clone:function on(t,e,n){var r,i,o,a,on=t.cloneNode(!0),s=mt.contains(t.ownerDocument,t);if(!(vt.noCloneChecked||1!==t.nodeType&&11!==t.nodeType||mt.isXMLDoc(t)))for(a=w(on),o=w(t),r=0,i=o.length;r<i;r++)N(o[r],a[r]);if(e)if(n)for(o=o||w(t),a=a||w(on),r=0,i=o.length;r<i;r++)O(o[r],a[r]);else O(t,on);return a=w(on,"script"),a.length>0&&_(a,!s&&w(t,"script")),on},cleanData:function(t){for(var e,n,r,i=mt.event.special,o=0;void 0!==(n=t[o]);o++)if(Bt(n)){if(e=n[Lt.expando]){if(e.events)for(r in e.events)i[r]?mt.event.remove(n,r):mt.removeEvent(n,r,e.handle);n[Lt.expando]=void 0}n[Rt.expando]&&(n[Rt.expando]=void 0)}}}),mt.fn.extend({detach:function(t){return M(this,t,!0)},remove:function(t){return M(this,t)},text:function(t){return Ft(this,function(t){return void 0===t?mt.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=t)})},null,t,arguments.length)},append:function(){return D(this,arguments,function(t){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var e=$(this,t);e.appendChild(t)}})},prepend:function(){return D(this,arguments,function(t){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var e=$(this,t);e.insertBefore(t,e.firstChild)}})},before:function(){return D(this,arguments,function(t){this.parentNode&&this.parentNode.insertBefore(t,this)})},after:function(){return D(this,arguments,function(t){this.parentNode&&this.parentNode.insertBefore(t,this.nextSibling)})},empty:function(){for(var t,e=0;null!=(t=this[e]);e++)1===t.nodeType&&(mt.cleanData(w(t,!1)),t.textContent="");return this},clone:function(t,e){return t=null!=t&&t,e=null==e?t:e,this.map(function(){return mt.clone(this,t,e)})},html:function(t){return Ft(this,function(t){var e=this[0]||{},n=0,r=this.length;if(void 0===t&&1===e.nodeType)return e.innerHTML;if("string"==typeof t&&!ie.test(t)&&!Yt[(Zt.exec(t)||["",""])[1].toLowerCase()]){t=mt.htmlPrefilter(t);try{for(;n<r;n++)e=this[n]||{},1===e.nodeType&&(mt.cleanData(w(e,!1)),e.innerHTML=t);e=0}catch(i){}}e&&this.empty().append(t)},null,t,arguments.length)},replaceWith:function(){var t=[];return D(this,arguments,function(e){var n=this.parentNode;mt.inArray(this,t)<0&&(mt.cleanData(w(this)),n&&n.replaceChild(e,this))},t)}}),mt.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(t,e){mt.fn[t]=function(t){for(var n,r=[],i=mt(t),o=i.length-1,a=0;a<=o;a++)n=a===o?this:this.clone(!0),mt(i[a])[e](n),ut.apply(r,n.get());return this.pushStack(r)}});var ue=/^margin/,ce=new RegExp("^("+qt+")(?!px)[a-z%]+$","i"),le=function(t){var e=t.ownerDocument.defaultView;return e&&e.opener||(e=o),e.getComputedStyle(t)};!function(){function t(){if(s){s.style.cssText="box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",s.innerHTML="",Kt.appendChild(a);var t=o.getComputedStyle(s);e="1%"!==t.top,i="2px"===t.marginLeft,n="4px"===t.width,s.style.marginRight="50%",r="4px"===t.marginRight,Kt.removeChild(a),s=null}}var e,n,r,i,a=it.createElement("div"),s=it.createElement("div");s.style&&(s.style.backgroundClip="content-box",s.cloneNode(!0).style.backgroundClip="",vt.clearCloneStyle="content-box"===s.style.backgroundClip,a.style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",a.appendChild(s),mt.extend(vt,{pixelPosition:function(){return t(),e},boxSizingReliable:function(){return t(),n},pixelMarginRight:function(){return t(),r},reliableMarginLeft:function(){return t(),i}}))}();var fe=/^(none|table(?!-c[ea]).+)/,he={position:"absolute",visibility:"hidden",display:"block"},de={letterSpacing:"0",fontWeight:"400"},pe=["Webkit","Moz","ms"],ve=it.createElement("div").style;mt.extend({cssHooks:{opacity:{get:function(t,e){if(e){var n=P(t,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function an(t,e,r,i){if(t&&3!==t.nodeType&&8!==t.nodeType&&t.style){var o,a,s,u=mt.camelCase(e),an=t.style;return e=mt.cssProps[u]||(mt.cssProps[u]=B(u)||u),s=mt.cssHooks[e]||mt.cssHooks[u],void 0===r?s&&"get"in s&&void 0!==(o=s.get(t,!1,i))?o:an[e]:(a="undefined"==typeof r?"undefined":n(r),"string"===a&&(o=zt.exec(r))&&o[1]&&(r=y(t,e,o),a="number"),null!=r&&r===r&&("number"===a&&(r+=o&&o[3]||(mt.cssNumber[u]?"":"px")),vt.clearCloneStyle||""!==r||0!==e.indexOf("background")||(an[e]="inherit"),s&&"set"in s&&void 0===(r=s.set(t,r,i))||(an[e]=r)),void 0)}},css:function(t,e,n,r){var i,o,a,s=mt.camelCase(e);return e=mt.cssProps[s]||(mt.cssProps[s]=B(s)||s),a=mt.cssHooks[e]||mt.cssHooks[s],a&&"get"in a&&(i=a.get(t,!0,n)),void 0===i&&(i=P(t,e,r)),"normal"===i&&e in de&&(i=de[e]),""===n||n?(o=parseFloat(i),n===!0||isFinite(o)?o||0:i):i}}),mt.each(["height","width"],function(t,e){mt.cssHooks[e]={get:function(t,n,r){if(n)return!fe.test(mt.css(t,"display"))||t.getClientRects().length&&t.getBoundingClientRect().width?I(t,e,r):Wt(t,he,function(){return I(t,e,r)})},set:function(t,n,r){var i,o=r&&le(t),a=r&&R(t,e,r,"border-box"===mt.css(t,"boxSizing",!1,o),o);return a&&(i=zt.exec(n))&&"px"!==(i[3]||"px")&&(t.style[e]=n,n=mt.css(t,e)),L(t,n,a)}}}),mt.cssHooks.marginLeft=F(vt.reliableMarginLeft,function(t,e){if(e)return(parseFloat(P(t,"marginLeft"))||t.getBoundingClientRect().left-Wt(t,{marginLeft:0},function(){return t.getBoundingClientRect().left}))+"px"}),mt.each({margin:"",padding:"",border:"Width"},function(t,e){mt.cssHooks[t+e]={expand:function(n){for(var r=0,i={},o="string"==typeof n?n.split(" "):[n];r<4;r++)i[t+Vt[r]+e]=o[r]||o[r-2]||o[0];return i}},ue.test(t)||(mt.cssHooks[t+e].set=L)}),mt.fn.extend({css:function(t,e){return Ft(this,function(t,e,n){var r,i,o={},a=0;if(mt.isArray(e)){for(r=le(t),i=e.length;a<i;a++)o[e[a]]=mt.css(t,e[a],!1,r);return o}return void 0!==n?mt.style(t,e,n):mt.css(t,e)},t,e,arguments.length>1)}}),mt.Tween=H,H.prototype={constructor:H,init:function(t,e,n,r,i,o){this.elem=t,this.prop=n,this.easing=i||mt.easing._default,this.options=e,this.start=this.now=this.cur(),this.end=r,this.unit=o||(mt.cssNumber[n]?"":"px")},cur:function(){var t=H.propHooks[this.prop];return t&&t.get?t.get(this):H.propHooks._default.get(this)},run:function(t){var e,n=H.propHooks[this.prop];return this.options.duration?this.pos=e=mt.easing[this.easing](t,this.options.duration*t,0,1,this.options.duration):this.pos=e=t,this.now=(this.end-this.start)*e+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):H.propHooks._default.set(this),this}},H.prototype.init.prototype=H.prototype,H.propHooks={_default:{get:function(t){var e;return 1!==t.elem.nodeType||null!=t.elem[t.prop]&&null==t.elem.style[t.prop]?t.elem[t.prop]:(e=mt.css(t.elem,t.prop,""),e&&"auto"!==e?e:0)},set:function(t){mt.fx.step[t.prop]?mt.fx.step[t.prop](t):1!==t.elem.nodeType||null==t.elem.style[mt.cssProps[t.prop]]&&!mt.cssHooks[t.prop]?t.elem[t.prop]=t.now:mt.style(t.elem,t.prop,t.now+t.unit)}}},H.propHooks.scrollTop=H.propHooks.scrollLeft={set:function(t){t.elem.nodeType&&t.elem.parentNode&&(t.elem[t.prop]=t.now)}},mt.easing={linear:function(t){return t},swing:function(t){return.5-Math.cos(t*Math.PI)/2},_default:"swing"},mt.fx=H.prototype.init,mt.fx.step={};var ge,me,ye=/^(?:toggle|show|hide)$/,be=/queueHooks$/;mt.Animation=mt.extend(G,{tweeners:{"*":[function(t,e){var n=this.createTween(t,e);return y(n.elem,t,zt.exec(e),n),n}]},tweener:function(t,e){mt.isFunction(t)?(e=t,t=["*"]):t=t.match(Dt);for(var n,r=0,i=t.length;r<i;r++)n=t[r],G.tweeners[n]=G.tweeners[n]||[],G.tweeners[n].unshift(e)},prefilters:[W],prefilter:function(t,e){e?G.prefilters.unshift(t):G.prefilters.push(t)}}),mt.speed=function(t,e,r){var i=t&&"object"===("undefined"==typeof t?"undefined":n(t))?mt.extend({},t):{complete:r||!r&&e||mt.isFunction(t)&&t,duration:t,easing:r&&e||e&&!mt.isFunction(e)&&e};return mt.fx.off||it.hidden?i.duration=0:i.duration="number"==typeof i.duration?i.duration:i.duration in mt.fx.speeds?mt.fx.speeds[i.duration]:mt.fx.speeds._default,null!=i.queue&&i.queue!==!0||(i.queue="fx"),i.old=i.complete,i.complete=function(){mt.isFunction(i.old)&&i.old.call(this),i.queue&&mt.dequeue(this,i.queue)},i},mt.fn.extend({fadeTo:function(t,e,n,r){return this.filter(Ut).css("opacity",0).show().end().animate({opacity:e},t,n,r)},animate:function(t,e,n,r){var i=mt.isEmptyObject(t),o=mt.speed(e,n,r),a=function(){var e=G(this,mt.extend({},t),o);(i||Lt.get(this,"finish"))&&e.stop(!0)};return a.finish=a,i||o.queue===!1?this.each(a):this.queue(o.queue,a)},stop:function(t,e,n){var r=function(t){var e=t.stop;delete t.stop,e(n)};return"string"!=typeof t&&(n=e,e=t,t=void 0),e&&t!==!1&&this.queue(t||"fx",[]),this.each(function(){var e=!0,i=null!=t&&t+"queueHooks",o=mt.timers,a=Lt.get(this);if(i)a[i]&&a[i].stop&&r(a[i]);else for(i in a)a[i]&&a[i].stop&&be.test(i)&&r(a[i]);for(i=o.length;i--;)o[i].elem!==this||null!=t&&o[i].queue!==t||(o[i].anim.stop(n),e=!1,o.splice(i,1));!e&&n||mt.dequeue(this,t)})},finish:function(t){return t!==!1&&(t=t||"fx"),this.each(function(){var e,n=Lt.get(this),r=n[t+"queue"],i=n[t+"queueHooks"],o=mt.timers,a=r?r.length:0;for(n.finish=!0,mt.queue(this,t,[]),i&&i.stop&&i.stop.call(this,!0),e=o.length;e--;)o[e].elem===this&&o[e].queue===t&&(o[e].anim.stop(!0),o.splice(e,1));for(e=0;e<a;e++)r[e]&&r[e].finish&&r[e].finish.call(this);delete n.finish})}}),mt.each(["toggle","show","hide"],function(t,e){var n=mt.fn[e];mt.fn[e]=function(t,r,i){return null==t||"boolean"==typeof t?n.apply(this,arguments):this.animate(V(e,!0),t,r,i)}}),mt.each({slideDown:V("show"),slideUp:V("hide"),slideToggle:V("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(t,e){mt.fn[t]=function(t,n,r){return this.animate(e,t,n,r)}}),mt.timers=[],mt.fx.tick=function(){var t,e=0,n=mt.timers;for(ge=mt.now();e<n.length;e++)t=n[e],t()||n[e]!==t||n.splice(e--,1);n.length||mt.fx.stop(),ge=void 0},mt.fx.timer=function(t){mt.timers.push(t),t()?mt.fx.start():mt.timers.pop()},mt.fx.interval=13,mt.fx.start=function(){me||(me=o.requestAnimationFrame?o.requestAnimationFrame(q):o.setInterval(mt.fx.tick,mt.fx.interval))},mt.fx.stop=function(){o.cancelAnimationFrame?o.cancelAnimationFrame(me):o.clearInterval(me),me=null},mt.fx.speeds={slow:600,fast:200,_default:400},mt.fn.delay=function(t,e){return t=mt.fx?mt.fx.speeds[t]||t:t,e=e||"fx",this.queue(e,function(e,n){var r=o.setTimeout(e,t);n.stop=function(){o.clearTimeout(r)}})},function(){var t=it.createElement("input"),e=it.createElement("select"),n=e.appendChild(it.createElement("option"));t.type="checkbox",vt.checkOn=""!==t.value,vt.optSelected=n.selected,t=it.createElement("input"),t.value="t",t.type="radio",vt.radioValue="t"===t.value}();var xe,we=mt.expr.attrHandle;mt.fn.extend({attr:function(t,e){return Ft(this,mt.attr,t,e,arguments.length>1)},removeAttr:function(t){return this.each(function(){mt.removeAttr(this,t)})}}),mt.extend({attr:function(t,e,n){var r,i,o=t.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof t.getAttribute?mt.prop(t,e,n):(1===o&&mt.isXMLDoc(t)||(i=mt.attrHooks[e.toLowerCase()]||(mt.expr.match.bool.test(e)?xe:void 0)),void 0!==n?null===n?void mt.removeAttr(t,e):i&&"set"in i&&void 0!==(r=i.set(t,n,e))?r:(t.setAttribute(e,n+""),n):i&&"get"in i&&null!==(r=i.get(t,e))?r:(r=mt.find.attr(t,e),null==r?void 0:r))},attrHooks:{type:{set:function(t,e){if(!vt.radioValue&&"radio"===e&&mt.nodeName(t,"input")){var n=t.value;return t.setAttribute("type",e),n&&(t.value=n),e}}}},removeAttr:function(t,e){var n,r=0,i=e&&e.match(Dt);if(i&&1===t.nodeType)for(;n=i[r++];)t.removeAttribute(n)}}),xe={set:function(t,e,n){return e===!1?mt.removeAttr(t,n):t.setAttribute(n,n),n}},mt.each(mt.expr.match.bool.source.match(/\w+/g),function(t,e){var n=we[e]||mt.find.attr;we[e]=function(t,e,r){var i,o,a=e.toLowerCase();return r||(o=we[a],we[a]=i,i=null!=n(t,e,r)?a:null,we[a]=o),i}});var _e=/^(?:input|select|textarea|button)$/i,Ce=/^(?:a|area)$/i;mt.fn.extend({prop:function(t,e){return Ft(this,mt.prop,t,e,arguments.length>1)},removeProp:function(t){return this.each(function(){delete this[mt.propFix[t]||t]})}}),mt.extend({prop:function(t,e,n){var r,i,o=t.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&mt.isXMLDoc(t)||(e=mt.propFix[e]||e,i=mt.propHooks[e]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(t,n,e))?r:t[e]=n:i&&"get"in i&&null!==(r=i.get(t,e))?r:t[e]},propHooks:{tabIndex:{get:function(t){var e=mt.find.attr(t,"tabindex");return e?parseInt(e,10):_e.test(t.nodeName)||Ce.test(t.nodeName)&&t.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),vt.optSelected||(mt.propHooks.selected={get:function(t){var e=t.parentNode;return e&&e.parentNode&&e.parentNode.selectedIndex,null},set:function(t){var e=t.parentNode;e&&(e.selectedIndex,e.parentNode&&e.parentNode.selectedIndex)}}),mt.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){mt.propFix[this.toLowerCase()]=this});var ke=/[\t\r\n\f]/g;mt.fn.extend({addClass:function(t){var e,n,r,i,o,a,s,u=0;if(mt.isFunction(t))return this.each(function(e){mt(this).addClass(t.call(this,e,Z(this)))});if("string"==typeof t&&t)for(e=t.match(Dt)||[];n=this[u++];)if(i=Z(n),r=1===n.nodeType&&(" "+i+" ").replace(ke," ")){for(a=0;o=e[a++];)r.indexOf(" "+o+" ")<0&&(r+=o+" ");s=mt.trim(r),i!==s&&n.setAttribute("class",s)}return this},removeClass:function(t){var e,n,r,i,o,a,s,u=0;if(mt.isFunction(t))return this.each(function(e){mt(this).removeClass(t.call(this,e,Z(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof t&&t)for(e=t.match(Dt)||[];n=this[u++];)if(i=Z(n),r=1===n.nodeType&&(" "+i+" ").replace(ke," ")){for(a=0;o=e[a++];)for(;r.indexOf(" "+o+" ")>-1;)r=r.replace(" "+o+" "," ");s=mt.trim(r),i!==s&&n.setAttribute("class",s)}return this},toggleClass:function(t,e){var r="undefined"==typeof t?"undefined":n(t);return"boolean"==typeof e&&"string"===r?e?this.addClass(t):this.removeClass(t):mt.isFunction(t)?this.each(function(n){mt(this).toggleClass(t.call(this,n,Z(this),e),e)}):this.each(function(){var e,n,i,o;if("string"===r)for(n=0,i=mt(this),o=t.match(Dt)||[];e=o[n++];)i.hasClass(e)?i.removeClass(e):i.addClass(e);else void 0!==t&&"boolean"!==r||(e=Z(this),e&&Lt.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||t===!1?"":Lt.get(this,"__className__")||""))})},hasClass:function(t){var e,n,r=0;for(e=" "+t+" ";n=this[r++];)if(1===n.nodeType&&(" "+Z(n)+" ").replace(ke," ").indexOf(e)>-1)return!0;return!1}});var Te=/\r/g,Ae=/[\x20\t\r\n\f]+/g;mt.fn.extend({val:function(t){var e,n,r,i=this[0];{if(arguments.length)return r=mt.isFunction(t),this.each(function(n){var i;1===this.nodeType&&(i=r?t.call(this,n,mt(this).val()):t,null==i?i="":"number"==typeof i?i+="":mt.isArray(i)&&(i=mt.map(i,function(t){return null==t?"":t+""})),e=mt.valHooks[this.type]||mt.valHooks[this.nodeName.toLowerCase()],e&&"set"in e&&void 0!==e.set(this,i,"value")||(this.value=i))});if(i)return e=mt.valHooks[i.type]||mt.valHooks[i.nodeName.toLowerCase()],e&&"get"in e&&void 0!==(n=e.get(i,"value"))?n:(n=i.value,"string"==typeof n?n.replace(Te,""):null==n?"":n)}}}),mt.extend({valHooks:{option:{get:function(t){var e=mt.find.attr(t,"value");return null!=e?e:mt.trim(mt.text(t)).replace(Ae," ")}},select:{get:function(t){for(var e,n,r=t.options,i=t.selectedIndex,o="select-one"===t.type,a=o?null:[],s=o?i+1:r.length,u=i<0?s:o?i:0;u<s;u++)if(n=r[u],(n.selected||u===i)&&!n.disabled&&(!n.parentNode.disabled||!mt.nodeName(n.parentNode,"optgroup"))){if(e=mt(n).val(),o)return e;a.push(e)}return a},set:function(t,e){for(var n,r,i=t.options,o=mt.makeArray(e),a=i.length;a--;)r=i[a],(r.selected=mt.inArray(mt.valHooks.option.get(r),o)>-1)&&(n=!0);return n||(t.selectedIndex=-1),o}}}}),mt.each(["radio","checkbox"],function(){mt.valHooks[this]={set:function(t,e){if(mt.isArray(e))return t.checked=mt.inArray(mt(t).val(),e)>-1}},vt.checkOn||(mt.valHooks[this].get=function(t){return null===t.getAttribute("value")?"on":t.value})});var Se=/^(?:focusinfocus|focusoutblur)$/;mt.extend(mt.event,{trigger:function(t,e,r,i){var a,s,u,c,l,f,h,d=[r||it],p=ht.call(t,"type")?t.type:t,v=ht.call(t,"namespace")?t.namespace.split("."):[];if(s=u=r=r||it,3!==r.nodeType&&8!==r.nodeType&&!Se.test(p+mt.event.triggered)&&(p.indexOf(".")>-1&&(v=p.split("."),p=v.shift(),v.sort()),l=p.indexOf(":")<0&&"on"+p,t=t[mt.expando]?t:new mt.Event(p,"object"===("undefined"==typeof t?"undefined":n(t))&&t),t.isTrigger=i?2:3,t.namespace=v.join("."),t.rnamespace=t.namespace?new RegExp("(^|\\.)"+v.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=r),e=null==e?[t]:mt.makeArray(e,[t]),h=mt.event.special[p]||{},i||!h.trigger||h.trigger.apply(r,e)!==!1)){if(!i&&!h.noBubble&&!mt.isWindow(r)){for(c=h.delegateType||p,Se.test(c+p)||(s=s.parentNode);s;s=s.parentNode)d.push(s),u=s;u===(r.ownerDocument||it)&&d.push(u.defaultView||u.parentWindow||o)}for(a=0;(s=d[a++])&&!t.isPropagationStopped();)t.type=a>1?c:h.bindType||p,f=(Lt.get(s,"events")||{})[t.type]&&Lt.get(s,"handle"),f&&f.apply(s,e),f=l&&s[l],f&&f.apply&&Bt(s)&&(t.result=f.apply(s,e),t.result===!1&&t.preventDefault());return t.type=p,i||t.isDefaultPrevented()||h._default&&h._default.apply(d.pop(),e)!==!1||!Bt(r)||l&&mt.isFunction(r[p])&&!mt.isWindow(r)&&(u=r[l],u&&(r[l]=null),mt.event.triggered=p,r[p](),mt.event.triggered=void 0,u&&(r[l]=u)),t.result}},simulate:function(t,e,n){var r=mt.extend(new mt.Event,n,{type:t,isSimulated:!0});mt.event.trigger(r,null,e)}}),mt.fn.extend({trigger:function(t,e){return this.each(function(){mt.event.trigger(t,e,this)})},triggerHandler:function(t,e){var n=this[0];if(n)return mt.event.trigger(t,e,n,!0)}}),mt.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(t,e){mt.fn[e]=function(t,n){return arguments.length>0?this.on(e,null,t,n):this.trigger(e)}}),mt.fn.extend({hover:function(t,e){return this.mouseenter(t).mouseleave(e||t)}}),vt.focusin="onfocusin"in o,vt.focusin||mt.each({focus:"focusin",blur:"focusout"},function(t,e){var n=function(t){mt.event.simulate(e,t.target,mt.event.fix(t))};mt.event.special[e]={setup:function(){var r=this.ownerDocument||this,i=Lt.access(r,e);i||r.addEventListener(t,n,!0),Lt.access(r,e,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this,i=Lt.access(r,e)-1;i?Lt.access(r,e,i):(r.removeEventListener(t,n,!0),Lt.remove(r,e))}}});var $e=o.location,Ee=mt.now(),je=/\?/;mt.parseXML=function(t){var e;if(!t||"string"!=typeof t)return null;try{e=(new o.DOMParser).parseFromString(t,"text/xml")}catch(n){e=void 0}return e&&!e.getElementsByTagName("parsererror").length||mt.error("Invalid XML: "+t),e};var Oe=/\[\]$/,Ne=/\r?\n/g,De=/^(?:submit|button|image|reset|file)$/i,Me=/^(?:input|select|textarea|keygen)/i;mt.param=function(t,e){var n,r=[],i=function(t,e){var n=mt.isFunction(e)?e():e;r[r.length]=encodeURIComponent(t)+"="+encodeURIComponent(null==n?"":n)};if(mt.isArray(t)||t.jquery&&!mt.isPlainObject(t))mt.each(t,function(){i(this.name,this.value)});else for(n in t)J(n,t[n],e,i);return r.join("&")},mt.fn.extend({serialize:function(){return mt.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var t=mt.prop(this,"elements");return t?mt.makeArray(t):this}).filter(function(){var t=this.type;return this.name&&!mt(this).is(":disabled")&&Me.test(this.nodeName)&&!De.test(t)&&(this.checked||!Gt.test(t))}).map(function(t,e){var n=mt(this).val();return null==n?null:mt.isArray(n)?mt.map(n,function(t){return{name:e.name,value:t.replace(Ne,"\r\n")}}):{name:e.name,value:n.replace(Ne,"\r\n")}}).get()}});var Pe=/%20/g,Fe=/#.*$/,Be=/([?&])_=[^&]*/,Le=/^(.*?):[ \t]*([^\r\n]*)$/gm,Re=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Ie=/^(?:GET|HEAD)$/,He=/^\/\//,qe={},ze={},Ve="*/".concat("*"),Ue=it.createElement("a");Ue.href=$e.href,mt.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:$e.href,type:"GET",isLocal:Re.test($e.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Ve,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":mt.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(t,e){return e?K(K(t,mt.ajaxSettings),e):K(mt.ajaxSettings,t)},ajaxPrefilter:Y(qe),ajaxTransport:Y(ze),ajax:function(t,e){function r(t,e,n,r){var u,l,d,p,w,_=e;f||(f=!0,c&&o.clearTimeout(c),i=void 0,s=r||"",k.readyState=t>0?4:0,u=t>=200&&t<300||304===t,n&&(p=tt(v,k,n)),p=et(v,p,k,u),u?(v.ifModified&&(w=k.getResponseHeader("Last-Modified"),w&&(mt.lastModified[a]=w),w=k.getResponseHeader("etag"),w&&(mt.etag[a]=w)),204===t||"HEAD"===v.type?_="nocontent":304===t?_="notmodified":(_=p.state,l=p.data,d=p.error,u=!d)):(d=_,!t&&_||(_="error",t<0&&(t=0))),k.status=t,k.statusText=(e||_)+"",u?y.resolveWith(g,[l,_,k]):y.rejectWith(g,[k,_,d]),k.statusCode(x),x=void 0,h&&m.trigger(u?"ajaxSuccess":"ajaxError",[k,v,u?l:d]),b.fireWith(g,[k,_]),h&&(m.trigger("ajaxComplete",[k,v]),--mt.active||mt.event.trigger("ajaxStop")))}"object"===("undefined"==typeof t?"undefined":n(t))&&(e=t,t=void 0),e=e||{};var i,a,s,u,c,l,f,h,d,p,v=mt.ajaxSetup({},e),g=v.context||v,m=v.context&&(g.nodeType||g.jquery)?mt(g):mt.event,y=mt.Deferred(),b=mt.Callbacks("once memory"),x=v.statusCode||{},w={},_={},C="canceled",k={readyState:0,getResponseHeader:function(t){var e;if(f){if(!u)for(u={};e=Le.exec(s);)u[e[1].toLowerCase()]=e[2];e=u[t.toLowerCase()]}return null==e?null:e},getAllResponseHeaders:function(){return f?s:null},setRequestHeader:function(t,e){return null==f&&(t=_[t.toLowerCase()]=_[t.toLowerCase()]||t,w[t]=e),this},overrideMimeType:function(t){return null==f&&(v.mimeType=t),this},statusCode:function(t){var e;if(t)if(f)k.always(t[k.status]);else for(e in t)x[e]=[x[e],t[e]];return this},abort:function(t){var e=t||C;return i&&i.abort(e),r(0,e),this}};if(y.promise(k),v.url=((t||v.url||$e.href)+"").replace(He,$e.protocol+"//"),v.type=e.method||e.type||v.method||v.type,v.dataTypes=(v.dataType||"*").toLowerCase().match(Dt)||[""],null==v.crossDomain){l=it.createElement("a");try{l.href=v.url,l.href=l.href,v.crossDomain=Ue.protocol+"//"+Ue.host!=l.protocol+"//"+l.host}catch(T){v.crossDomain=!0}}if(v.data&&v.processData&&"string"!=typeof v.data&&(v.data=mt.param(v.data,v.traditional)),Q(qe,v,e,k),f)return k;h=mt.event&&v.global,h&&0===mt.active++&&mt.event.trigger("ajaxStart"),v.type=v.type.toUpperCase(),v.hasContent=!Ie.test(v.type),a=v.url.replace(Fe,""),v.hasContent?v.data&&v.processData&&0===(v.contentType||"").indexOf("application/x-www-form-urlencoded")&&(v.data=v.data.replace(Pe,"+")):(p=v.url.slice(a.length),v.data&&(a+=(je.test(a)?"&":"?")+v.data,delete v.data),v.cache===!1&&(a=a.replace(Be,""),p=(je.test(a)?"&":"?")+"_="+Ee++ +p),v.url=a+p),v.ifModified&&(mt.lastModified[a]&&k.setRequestHeader("If-Modified-Since",mt.lastModified[a]),mt.etag[a]&&k.setRequestHeader("If-None-Match",mt.etag[a])),(v.data&&v.hasContent&&v.contentType!==!1||e.contentType)&&k.setRequestHeader("Content-Type",v.contentType),k.setRequestHeader("Accept",v.dataTypes[0]&&v.accepts[v.dataTypes[0]]?v.accepts[v.dataTypes[0]]+("*"!==v.dataTypes[0]?", "+Ve+"; q=0.01":""):v.accepts["*"]);for(d in v.headers)k.setRequestHeader(d,v.headers[d]);if(v.beforeSend&&(v.beforeSend.call(g,k,v)===!1||f))return k.abort();if(C="abort",b.add(v.complete),k.done(v.success),k.fail(v.error),i=Q(ze,v,e,k)){if(k.readyState=1,h&&m.trigger("ajaxSend",[k,v]),f)return k;v.async&&v.timeout>0&&(c=o.setTimeout(function(){k.abort("timeout")},v.timeout));try{f=!1,i.send(w,r)}catch(T){if(f)throw T;r(-1,T)}}else r(-1,"No Transport");return k},getJSON:function(t,e,n){return mt.get(t,e,n,"json")},getScript:function(t,e){return mt.get(t,void 0,e,"script")}}),mt.each(["get","post"],function(t,e){mt[e]=function(t,n,r,i){return mt.isFunction(n)&&(i=i||r,r=n,n=void 0),mt.ajax(mt.extend({url:t,type:e,dataType:i,data:n,success:r},mt.isPlainObject(t)&&t))}}),mt._evalUrl=function(t){return mt.ajax({url:t,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},mt.fn.extend({wrapAll:function(t){var e;return this[0]&&(mt.isFunction(t)&&(t=t.call(this[0])),e=mt(t,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&e.insertBefore(this[0]),e.map(function(){for(var t=this;t.firstElementChild;)t=t.firstElementChild;return t}).append(this)),this},wrapInner:function(t){return mt.isFunction(t)?this.each(function(e){mt(this).wrapInner(t.call(this,e))}):this.each(function(){var e=mt(this),n=e.contents();n.length?n.wrapAll(t):e.append(t)})},wrap:function(t){var e=mt.isFunction(t);return this.each(function(n){mt(this).wrapAll(e?t.call(this,n):t)})},unwrap:function(t){return this.parent(t).not("body").each(function(){mt(this).replaceWith(this.childNodes);
-}),this}}),mt.expr.pseudos.hidden=function(t){return!mt.expr.pseudos.visible(t)},mt.expr.pseudos.visible=function(t){return!!(t.offsetWidth||t.offsetHeight||t.getClientRects().length)},mt.ajaxSettings.xhr=function(){try{return new o.XMLHttpRequest}catch(t){}};var We={0:200,1223:204},Xe=mt.ajaxSettings.xhr();vt.cors=!!Xe&&"withCredentials"in Xe,vt.ajax=Xe=!!Xe,mt.ajaxTransport(function(t){var e,n;if(vt.cors||Xe&&!t.crossDomain)return{send:function(r,i){var a,s=t.xhr();if(s.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(a in t.xhrFields)s[a]=t.xhrFields[a];t.mimeType&&s.overrideMimeType&&s.overrideMimeType(t.mimeType),t.crossDomain||r["X-Requested-With"]||(r["X-Requested-With"]="XMLHttpRequest");for(a in r)s.setRequestHeader(a,r[a]);e=function(t){return function(){e&&(e=n=s.onload=s.onerror=s.onabort=s.onreadystatechange=null,"abort"===t?s.abort():"error"===t?"number"!=typeof s.status?i(0,"error"):i(s.status,s.statusText):i(We[s.status]||s.status,s.statusText,"text"!==(s.responseType||"text")||"string"!=typeof s.responseText?{binary:s.response}:{text:s.responseText},s.getAllResponseHeaders()))}},s.onload=e(),n=s.onerror=e("error"),void 0!==s.onabort?s.onabort=n:s.onreadystatechange=function(){4===s.readyState&&o.setTimeout(function(){e&&n()})},e=e("abort");try{s.send(t.hasContent&&t.data||null)}catch(u){if(e)throw u}},abort:function(){e&&e()}}}),mt.ajaxPrefilter(function(t){t.crossDomain&&(t.contents.script=!1)}),mt.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(t){return mt.globalEval(t),t}}}),mt.ajaxPrefilter("script",function(t){void 0===t.cache&&(t.cache=!1),t.crossDomain&&(t.type="GET")}),mt.ajaxTransport("script",function(t){if(t.crossDomain){var e,n;return{send:function(r,i){e=mt("<script>").prop({charset:t.scriptCharset,src:t.url}).on("load error",n=function(t){e.remove(),n=null,t&&i("error"===t.type?404:200,t.type)}),it.head.appendChild(e[0])},abort:function(){n&&n()}}}});var Ge=[],Ze=/(=)\?(?=&|$)|\?\?/;mt.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var t=Ge.pop()||mt.expando+"_"+Ee++;return this[t]=!0,t}}),mt.ajaxPrefilter("json jsonp",function(t,e,n){var r,i,a,s=t.jsonp!==!1&&(Ze.test(t.url)?"url":"string"==typeof t.data&&0===(t.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ze.test(t.data)&&"data");if(s||"jsonp"===t.dataTypes[0])return r=t.jsonpCallback=mt.isFunction(t.jsonpCallback)?t.jsonpCallback():t.jsonpCallback,s?t[s]=t[s].replace(Ze,"$1"+r):t.jsonp!==!1&&(t.url+=(je.test(t.url)?"&":"?")+t.jsonp+"="+r),t.converters["script json"]=function(){return a||mt.error(r+" was not called"),a[0]},t.dataTypes[0]="json",i=o[r],o[r]=function(){a=arguments},n.always(function(){void 0===i?mt(o).removeProp(r):o[r]=i,t[r]&&(t.jsonpCallback=e.jsonpCallback,Ge.push(r)),a&&mt.isFunction(i)&&i(a[0]),a=i=void 0}),"script"}),vt.createHTMLDocument=function(){var t=it.implementation.createHTMLDocument("").body;return t.innerHTML="<form></form><form></form>",2===t.childNodes.length}(),mt.parseHTML=function(t,e,n){if("string"!=typeof t)return[];"boolean"==typeof e&&(n=e,e=!1);var r,i,o;return e||(vt.createHTMLDocument?(e=it.implementation.createHTMLDocument(""),r=e.createElement("base"),r.href=it.location.href,e.head.appendChild(r)):e=it),i=At.exec(t),o=!n&&[],i?[e.createElement(i[1])]:(i=C([t],e,o),o&&o.length&&mt(o).remove(),mt.merge([],i.childNodes))},mt.fn.load=function(t,e,r){var i,o,a,s=this,u=t.indexOf(" ");return u>-1&&(i=mt.trim(t.slice(u)),t=t.slice(0,u)),mt.isFunction(e)?(r=e,e=void 0):e&&"object"===("undefined"==typeof e?"undefined":n(e))&&(o="POST"),s.length>0&&mt.ajax({url:t,type:o||"GET",dataType:"html",data:e}).done(function(t){a=arguments,s.html(i?mt("<div>").append(mt.parseHTML(t)).find(i):t)}).always(r&&function(t,e){s.each(function(){r.apply(this,a||[t.responseText,e,t])})}),this},mt.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(t,e){mt.fn[e]=function(t){return this.on(e,t)}}),mt.expr.pseudos.animated=function(t){return mt.grep(mt.timers,function(e){return t===e.elem}).length},mt.offset={setOffset:function(t,e,n){var r,i,o,a,s,u,c,l=mt.css(t,"position"),f=mt(t),h={};"static"===l&&(t.style.position="relative"),s=f.offset(),o=mt.css(t,"top"),u=mt.css(t,"left"),c=("absolute"===l||"fixed"===l)&&(o+u).indexOf("auto")>-1,c?(r=f.position(),a=r.top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),mt.isFunction(e)&&(e=e.call(t,n,mt.extend({},s))),null!=e.top&&(h.top=e.top-s.top+a),null!=e.left&&(h.left=e.left-s.left+i),"using"in e?e.using.call(t,h):f.css(h)}},mt.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){mt.offset.setOffset(this,t,e)});var e,n,r,i,o=this[0];if(o)return o.getClientRects().length?(r=o.getBoundingClientRect(),r.width||r.height?(i=o.ownerDocument,n=nt(i),e=i.documentElement,{top:r.top+n.pageYOffset-e.clientTop,left:r.left+n.pageXOffset-e.clientLeft}):r):{top:0,left:0}},position:function(){if(this[0]){var t,e,n=this[0],r={top:0,left:0};return"fixed"===mt.css(n,"position")?e=n.getBoundingClientRect():(t=this.offsetParent(),e=this.offset(),mt.nodeName(t[0],"html")||(r=t.offset()),r={top:r.top+mt.css(t[0],"borderTopWidth",!0),left:r.left+mt.css(t[0],"borderLeftWidth",!0)}),{top:e.top-r.top-mt.css(n,"marginTop",!0),left:e.left-r.left-mt.css(n,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var t=this.offsetParent;t&&"static"===mt.css(t,"position");)t=t.offsetParent;return t||Kt})}}),mt.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,e){var n="pageYOffset"===e;mt.fn[t]=function(r){return Ft(this,function(t,r,i){var o=nt(t);return void 0===i?o?o[e]:t[r]:void(o?o.scrollTo(n?o.pageXOffset:i,n?i:o.pageYOffset):t[r]=i)},t,r,arguments.length)}}),mt.each(["top","left"],function(t,e){mt.cssHooks[e]=F(vt.pixelPosition,function(t,n){if(n)return n=P(t,e),ce.test(n)?mt(t).position()[e]+"px":n})}),mt.each({Height:"height",Width:"width"},function(t,e){mt.each({padding:"inner"+t,content:e,"":"outer"+t},function(n,r){mt.fn[r]=function(i,o){var a=arguments.length&&(n||"boolean"!=typeof i),s=n||(i===!0||o===!0?"margin":"border");return Ft(this,function(e,n,i){var o;return mt.isWindow(e)?0===r.indexOf("outer")?e["inner"+t]:e.document.documentElement["client"+t]:9===e.nodeType?(o=e.documentElement,Math.max(e.body["scroll"+t],o["scroll"+t],e.body["offset"+t],o["offset"+t],o["client"+t])):void 0===i?mt.css(e,n,s):mt.style(e,n,i,s)},e,a?i:void 0,a)}})}),mt.fn.extend({bind:function(t,e,n){return this.on(t,null,e,n)},unbind:function(t,e){return this.off(t,null,e)},delegate:function(t,e,n,r){return this.on(e,t,n,r)},undelegate:function(t,e,n){return 1===arguments.length?this.off(t,"**"):this.off(e,t||"**",n)}}),mt.parseJSON=JSON.parse,r=[],i=function(){return mt}.apply(e,r),!(void 0!==i&&(t.exports=i));var Je=o.jQuery,Ye=o.$;return mt.noConflict=function(t){return o.$===mt&&(o.$=Ye),t&&o.jQuery===mt&&(o.jQuery=Je),mt},a||(o.jQuery=o.$=mt),mt})}).call(e,n(32)(t))},function(t,e,n){"use strict";function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var i=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),o=n(1),a=function(){function t(e){r(this,t),this.zoomFactor=.1,this.paper=e.paper,this.MIN_SIZE=40,this.imageWidth=parseInt(this.paper.select(".main-image").attr("width")),this.imageHeight=parseInt(this.paper.select(".main-image").attr("height")),this.viewport={width:parseInt(this.paper.attr("width")),height:parseInt(this.paper.attr("height"))},this.scale=1,this.paper.attr({stroke:2,fill:"blue"}),this.disableDrag=!1,this.imgMinSize=Math.min(this.imageWidth,this.imageHeight),this.lastPosition=[],this.updateViewBox([0,0,this.imageWidth,this.imageHeight])}return i(t,[{key:"testShowCenter",value:function(t,e){this.center&&this.center.remove(),this.center=this.paper.rect(t-3,e-3,20,20),this.center.attr({fill:"red"})}},{key:"drawTestRectangle",value:function(t,e,n,r){var i=t-n/2,o=e-r/2;this.paper.rect(i,o,n,r)}},{key:"zoomIn",value:function(){if(9===this.scale)return void this.scale--;var t=this.currentViewBox[0]+this.currentViewBox[2]/2,e=this.currentViewBox[1]+this.currentViewBox[3]/2,n=this.zoomFactor*this.scale,r=this.imgMinSize-this.imgMinSize*n,i=r;this.currentViewBox[0]=t-r/2,this.currentViewBox[1]=e-i/2,this.currentViewBox[2]=r,this.currentViewBox[3]=i,this.scale++,this.updateViewBox()}},{key:"updateViewBox",value:function(t,e){if(e="boolean"!=typeof e||e,t&&4!=t.length)throw new Error("Provided currentViewBox is not valid!");if(t&&(this.currentViewBox=t),this.paper.attr({viewBox:this.currentViewBox}),!e)return!1;var n=this;o.eventEmitter.emit("zoomChanged",{updateFunction:function(t){n.updateViewBox(t,!1)},zoomFactor:this.getZoomFactor(),viewport:this.viewport,currentScale:this.scale,imageSize:{width:this.imageWidth,height:this.imageHeight},minSize:Math.min(this.imageWidth,this.imageHeight),currentViewBox:this.currentViewBox.slice()})}},{key:"getZoomFactor",value:function(){return{x:this.viewport.width/this.currentViewBox[2],y:this.viewport.height/this.currentViewBox[3]}}},{key:"onStart",value:function(t,e,n){this.lastPosition[0]=this.currentViewBox[0],this.lastPosition[1]=this.currentViewBox[1],"drawingHandler"===n.target.className.baseVal&&(this.disableDrag=!0)}},{key:"canDrag",value:function(){return!this.disableDrag}},{key:"onStop",value:function(){this.disableDrag=!1}},{key:"onDrag",value:function(t,e,n,r,i){if(!this.canDrag())return!0;var o=this.lastPosition[0]-t,a=this.lastPosition[1]-e;o+this.currentViewBox[2]>=this.viewport.width&&(o=this.viewport.width-this.currentViewBox[2]),a+this.currentViewBox[3]>=this.viewport.height&&(a=this.viewport.height-this.currentViewBox[3]),o<=0&&(o=0),a<=0&&(a=0),this.currentViewBox[0]=o,this.currentViewBox[1]=a,this.updateViewBox()}},{key:"reset",value:function(){this.scale=1,this.currentViewBox=[0,0,this.imageWidth,this.imageHeight],this.updateViewBox()}},{key:"zoomOut",value:function(){if(1==this.scale)return!1;var t=this.currentViewBox[0]+this.currentViewBox[2]/2,e=this.currentViewBox[1]+this.currentViewBox[3]/2,n=this.zoomFactor*(this.scale-1),r=this.imgMinSize-this.imgMinSize*n,i=r,o=t-r/2,a=e-i/2;this.currentViewBox[0]=o,this.currentViewBox[1]=a,this.currentViewBox[2]=r,this.currentViewBox[3]=i,this.updateViewBox(),this.scale--}}]),t}();e["default"]={enable_zoom:function(t){return new a(t)}}},function(t,e,n){var r,i;r=n(11);var o=n(44);i=r||{},i.__esModule&&(i=i["default"]),"function"==typeof i&&(i=i.options),i.render=o.render,i.staticRenderFns=o.staticRenderFns,t.exports=r||i},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(35),o=r(i),a=n(2),s=r(a),u=n(6),c=r(u);e["default"]={el:"#drawing-zone",MODE_RECT:"RECT",MODE_FREE:"FREE",ZOOM_IN:"in",ZOOM_OUT:"out",components:{typeahead:s["default"],zoomview:c["default"]},data:{mode:"",isRect:!0,normalizePath:"",readOnly:!1,formView:!0,useClipPath:!1,transformMatrix:"",fragmentPath:"",canZoom:!0,displayMask:!1},mounted:function(){var t=this;this.initialDrawingMode=null,this.drawingComponent=o["default"].init({wrapperId:"#iconolab-image-wrapper",actionWrapper:"#action-wrapper",readOnly:!1,onDrawingModeChange:function(e){t.setDrawingMode(e,!1)}}),this.$refs.zoomview.setZoomTarget(this.drawingComponent.getPaper()),this.showEditor(),this.drawingComponent.createTestHandler(10,20,50)},methods:{computeCentreredViewBox:function(){var t=this.$refs.zoomSvg,e=[],n=t.getAttribute("width"),r=t.getAttribute("height"),i=n/100,o=r/100,a=this.drawingComponent.getShapeBBox();return e=[(a.x-1)*i,(a.y-1)*o,(a.w+2)*i,(a.h+2)*o],e.join(" ")},computeZoomedViewBox:function(){var t=[],e=this.$refs.zoomSvg,n=this.drawingComponent.getShapeBBox(),r=e.getAttribute("width"),i=e.getAttribute("height"),o=r/100,a=i/100;n.x=n.x*o,n.y=n.y*a,n.w=n.w*o,n.h=n.h*a;var s=r/i;return n.w>n.h?(n.y=Math.max(0,n.y-(n.w*s-n.h)/2),n.h=n.w*s):(n.x=Math.max(0,n.x-(n.h/s-n.w)/2),n.w=n.h/s),t=[n.x,n.y,n.w,n.h],!!n&&t.join(" ")},zoom:function(t){var e=this.$refs.smallSvgWrapper;if(this.$options.ZOOM_OUT===t){var n=[0,0,e.getAttribute("width"),e.getAttribute("height")];e.setAttribute("viewBox",n.join(" ")),this.canZoom=!0}this.$options.ZOOM_IN===t&&(e.setAttribute("viewBox",this.computeCentreredViewBox()),this.canZoom=!1)},setDrawingMode:function(t,e){this.initialDrawingMode||(this.initialDrawingMode=t);var e="boolean"!=typeof e||e;this.mode=this.$options["MODE_"+t],this.isRect=this.mode===this.$options.MODE_RECT,e&&this.drawingComponent.setDrawingMode(this.mode)},cancel:function(){this.formView=!0;var t=this.$refs.currentPath.getAttribute("d");t.length&&this.initialDrawingMode&&(t+=";"+this.initialDrawingMode,this.drawingComponent.setPath(t))},highLightZone:function(){this.displayMask?this.displayMask=!1:this.displayMask=!0},displayEditedPath:function(){this.drawingComponent.getPath()},resetZoom:function(){this.zoom(this.$options.ZOOM_OUT)},showEditor:function(){this.formView=!0,this.resetZoom()},showForm:function(){this.normalizePath=this.drawingComponent.getPath();var t=this.$refs.smallImage;this.formView=!0;var e=t.getAttribute("width")/100,n=t.getAttribute("height")/100,r=[e,0,0,n,0,0].join(",");this.transformMatrix="matrix("+r+")",this.fragmentPath=this.normalizePath.split(";")[0]},clear:function(){this.drawingComponent.clear()}}}},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(2),o=r(i);e["default"]={data:function(){return{}},components:{Typeahead:o["default"]},mounted:function(){this.targetKeyMap={title:"proposal-title",desc:"proposal-description",frag:"proposal-fragment"},this.targetFieldTypeMap={title:"input",desc:"input",frag:"frag"},this.originalValues={title:"",desc:"",frag:""}},methods:{pickProposition:function(t,e,n){var r="",i=document.getElementById(e),o=this.$refs[this.targetKeyMap[n]],a=this.targetFieldTypeMap[n];if(!a)throw new Error("A target type must be provided...");if("input"===a&&(r=o.value,o.value=i.value),"frag"===a){r=o.getAttribute("d");var s=i.getAttribute("d");o.getAttribute("data-path-type");o.setAttribute("d",s);var u=i.getAttribute("data-path-type");u=u||"FREE";var c=this.$refs["fragment-field"];c.value=s+";"+u}this.preserveOriginalValue(n,r)},pickTag:function(t,e){var n=this.$refs[e],r=this.$refs["proposal-tags"];this.preserveOriginalValue("proposal-tags",r.tags),r.setTags(n.tags,!0)},preserveOriginalValue:function(t,e){this.originalValues[t]||(this.originalValues[t]=e)},hightlightSource:function(t){t.className+="highlight"},save:function(){alert("this is it ... ")}}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(1);e["default"]={data:function(){return{tags:[],readOnly:!1}},methods:{removeTag:function(t){this.tags.$remove(t),this.normalizeSelectedTags()},reset:function(){this.tags=[],this.normalizeSelectedTags()},tagAlreadyExists:function(t){var e=!1,n=this.tags.find(function(e){if(e.tag_link){if(e.tag_link===t.tag_link)return!0}else if(e.tag_label===t.tag_label)return!0});if(n){var r=this.$refs[n.id][0];r.style.border="1px solid red",setTimeout(function(){r.style.border=""},1e3),e=!0}return e},setTags:function(t){Array.isArray(t)||new Error("setTags expects an array!");var e=this;t.map(function(t){e.addTag(t)})},addTag:function(t){return!this.tagAlreadyExists(t)&&void(t&&t.hasOwnProperty("tag_label")&&(t.id||(t.id=(0,r.generateId)("tag_")),this.tags.push(t),this.normalizeSelectedTags()))},normalizeSelectedTags:function(){var t=[];this.tags.map(function(e){var n={};n.tag_input="string"==typeof e.tag_link&&e.tag_link.length?e.tag_link:e.tag_label,n.accuracy=e.accuracy,n.relevancy=e.relevancy,t.push(n)}),this.$parent.$data.selectedTags=JSON.stringify(t)},updateAccuracy:function(t,e){e.accuracy=t.target.value,this.normalizeSelectedTags()},updatePertinence:function(t,e){e.relevancy=t.target.value,this.normalizeSelectedTags()}}}},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(29),o=r(i),a=n(42),s=r(a),u="http://lookup.dbpedia.org/api/search/PrefixSearch?MaxHits=5",c="http://fr.wikipedia.org/w/api.php",l={reset:o["default"].methods.reset},f=function(t,e){var n=jQuery.Deferred();jQuery.getJSON(t,e).done(function(t){var e={};e.data=t,n.resolve(e)}).fail(n.reject);return n.promise()};e["default"]={mixins:[o["default"]],components:{taglist:s["default"]},props:["tags","read-only"],mounted:function(){this.taglist=this.$refs.taglist,this.taglist.readOnly=this.readOnly,this.setTags(this.tags)},data:function(){return{src:u,limit:7,minChars:2,showAddButton:!1,datasource:"wikipedia",selectedTags:"[]",items:[],queryParamName:"QueryString"}},methods:{setTags:function(t,e){t=Array.isArray(t)?t:[],e="boolean"==typeof e&&e,e&&this.taglist.reset(),this.taglist.setTags(t)},checkQuery:function(){0===this.query.length&&this.reset()},fetch:function(){if("wikipedia"===this.datasource)return this.fetchWikiPedia();var t={};return t[this.queryParamName]=this.query,f(this.src,query)},fetchWikiPedia:function(){this.src=c;var t={action:"opensearch",format:"json",search:this.query},e=jQuery.Deferred();return jQuery.ajax({url:this.src,data:t,dataType:"jsonp",success:function(t){var n={};n.data=t,e.resolve(n)}}),e.promise()},reset:function(){this.showAddButton=!1,l.reset.call(this)},prepareWikipediaResponse:function(t){var e=[];if(4!==t.length)return e;var n=t[1],r=t[3];return n.length===r.length?(n.map(function(t,n){var i={};i.tag_label=t;var o=r[n];o=o.replace("https://fr.wikipedia.org/wiki/","http://fr.dbpedia.org/resource/"),i.tag_link=decodeURI(o),i.accuracy=1,i.relevancy=1,e.push(i)}),e):void 0},prepareResponseData:function(t){var e="string"==typeof t?JSON.parse(t):t;return"wikipedia"===this.datasource&&(e=this.prepareWikipediaResponse(e)),Array.isArray(e)&&!e.length&&(this.showAddButton=!0),e},addTag:function(){if(this.hasItems)return!1;var t={tag_label:this.query,accuracy:1,relevancy:1};this.$refs.taglist.addTag(t),this.reset()},onHit:function(t){this.$refs.taglist.addTag(t),this.reset()}}}},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(1),o=n(5),a=r(o),s=n(3),u=r(s);e["default"]={props:["image-url","image-width","image-height","zoomTarget","main-image-id"],mounted:function(){this.root=new u["default"](this.$refs["root-svg"]),this.handler=this.root.select("#zoom-handler"),this.image=this.root.select("#small-image"),this.root.attr({width:101,height:101});var t=parseInt(this.image.attr("width")),e=parseInt(this.image.attr("height"));this.root.attr({viewBox:[0,0,t,e]}),this.imgMinSize=Math.min(t,e),this.handlerSize=20,this.handler.attr({width:this.handlerSize,height:this.handlerSize}),this.currentViewBox=null,this.currentViewport=null,this.updateFunction=null;var n=document.getElementById("zoomTarget");n&&this.setZoomTarget(n),this.handleEvents()},data:function(){return{showHandler:!1}},methods:{setZoomTarget:function(t){if(t.hasOwnProperty("type")&&"svg"===t.type)this.paper=t;else{this.paper=new u["default"](t);var e=this.paper.select("#"+this.mainImageId);if(!e)throw new Error("A main image wasn't found.")}this.zoomHandler=a["default"].enable_zoom(this.paper)},incraseDrawingZoom:function(){this.zoomHandler.zoomIn()},resetDrawingZoom:function(){this.zoomHandler.reset()},decreaseDrawingZoom:function(){this.zoomHandler.zoomOut()},handleEvents:function(){i.eventEmitter.on("zoomChanged",this.handleZoomChanged.bind(this));var t=this;this.handler.drag(function(e,n){var r=this.getBBox(),i=this.data("startPosition").x,o=this.data("startPosition").y,a=parseInt(t.image.attr("width")),s=parseInt(t.image.attr("height")),u=i+e,c=o+n;u+r.w>=a&&(u=a-r.w),c+r.h>=s&&(c=s-r.h),u=u<0?0:u,c=c<0?0:c;var l="T"+[u,c];this.attr("transform",l),t.notifyMove(this.getBBox().x,this.getBBox().y)},function(){this.data("startPosition",{x:this.getBBox().x,y:this.getBBox().y}),this.data("origTransform",this.transform().local)},function(){})},moveHandlerToCenter:function(t,e){cx=cx?cx:this.width/2,cy=cy?cy:this.height/2;var n=cx-this.handler.getBBox().w/2,r=cy-this.handler.getBBox().h/2;this.handler.transform("T"+[n,r])},notifyMove:function(t,e){if(i.eventEmitter.emit("moveZoomHandler",{x:t,y:e,viewport:{width:this.image.attr("width"),height:this.image.attr("height")}}),!this.currentViewBox||!this.currentViewport||"function"!=typeof this.updateFunction)return!1;var n=this.currentImageSize.width/this.image.attr("width"),r=this.currentImageSize.height/this.image.attr("height"),o=t*n,a=e*r;this.currentViewBox[0]=o,this.currentViewBox[1]=a,this.updateFunction(this.currentViewBox)},handleZoomChanged:function(t){if(1===t.currentScale)return void(this.showHandler=!1);this.showHandler=!0,this.currentViewport=t.viewport,this.currentViewBox=t.currentViewBox,this.currentImageSize=t.imageSize,this.updateFunction=t.updateFunction;var e=t.currentViewBox[2]*this.imgMinSize/t.minSize;this.handler.attr("width",e),this.handler.attr("height",e);var n=t.currentViewBox[0]*this.image.attr("width")/t.imageSize.width,r=t.currentViewBox[1]*this.image.attr("height")/t.imageSize.height;this.handler.transform("T"+[n,r])}}}},function(t,e){"use strict";t.exports=function(){var t=[];return t.toString=function(){for(var t=[],e=0;e<this.length;e++){var n=this[e];n[2]?t.push("@media "+n[2]+"{"+n[1]+"}"):t.push(n[1])}return t.join("")},t.i=function(e,n){"string"==typeof e&&(e=[[null,e,""]]);for(var r={},i=0;i<this.length;i++){var o=this[i][0];"number"==typeof o&&(r[o]=!0)}for(i=0;i<e.length;i++){var a=e[i];"number"==typeof a[0]&&r[a[0]]||(n&&!a[2]?a[2]=n:n&&(a[2]="("+a[2]+") and ("+n+")"),t.push(a))}},t}},function(t,e,n){"use strict";var r,i=n(14),o=n(21),a=n(17),s=n(24);r=t.exports=function(t,e){var n,r,a,u,c;return arguments.length<2||"string"!=typeof t?(u=e,e=t,t=null):u=arguments[2],null==t?(n=a=!0,r=!1):(n=s.call(t,"c"),r=s.call(t,"e"),a=s.call(t,"w")),c={value:e,configurable:n,enumerable:r,writable:a},u?i(o(u),c):c},r.gs=function(t,e,n){var r,u,c,l;return"string"!=typeof t?(c=n,n=e,e=t,t=null):c=arguments[3],null==e?e=void 0:a(e)?null==n?n=void 0:a(n)||(c=n,n=void 0):(c=e,e=n=void 0),null==t?(r=!0,u=!1):(r=s.call(t,"c"),u=s.call(t,"e")),l={get:e,set:n,configurable:r,enumerable:u},c?i(o(c),l):l}},function(t,e,n){"use strict";t.exports=n(15)()?Object.assign:n(16)},function(t,e){"use strict";t.exports=function(){var t,e=Object.assign;return"function"==typeof e&&(t={foo:"raz"},e(t,{bar:"dwa"},{trzy:"trzy"}),t.foo+t.bar+t.trzy==="razdwatrzy")}},function(t,e,n){"use strict";var r=n(18),i=n(23),o=Math.max;t.exports=function(t,e){var n,a,s,u=o(arguments.length,2);for(t=Object(i(t)),s=function(r){try{t[r]=e[r]}catch(i){n||(n=i)}},a=1;a<u;++a)e=arguments[a],r(e).forEach(s);if(void 0!==n)throw n;return t}},function(t,e){"use strict";t.exports=function(t){return"function"==typeof t}},function(t,e,n){"use strict";t.exports=n(19)()?Object.keys:n(20)},function(t,e){"use strict";t.exports=function(){try{return Object.keys("primitive"),!0}catch(t){return!1}}},function(t,e){"use strict";var n=Object.keys;t.exports=function(t){return n(null==t?t:Object(t))}},function(t,e){"use strict";var n=Array.prototype.forEach,r=Object.create,i=function(t,e){var n;for(n in t)e[n]=t[n]};t.exports=function(t){var e=r(null);return n.call(arguments,function(t){null!=t&&i(Object(t),e)}),e}},function(t,e){"use strict";t.exports=function(t){if("function"!=typeof t)throw new TypeError(t+" is not a function");return t}},function(t,e){"use strict";t.exports=function(t){if(null==t)throw new TypeError("Cannot use null or undefined");return t}},function(t,e,n){"use strict";t.exports=n(25)()?String.prototype.contains:n(26)},function(t,e){"use strict";var n="razdwatrzy";t.exports=function(){return"function"==typeof n.contains&&(n.contains("dwa")===!0&&n.contains("foo")===!1)}},function(t,e){"use strict";var n=String.prototype.indexOf;t.exports=function(t){return n.call(this,t,arguments[1])>-1}},function(t,e,n){"use strict";var r,i,o,a,s,u,c,l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol?"symbol":typeof t},f=n(13),h=n(22),d=Function.prototype.apply,p=Function.prototype.call,v=Object.create,g=Object.defineProperty,m=Object.defineProperties,y=Object.prototype.hasOwnProperty,b={configurable:!0,enumerable:!1,writable:!0};r=function(t,e){var n;return h(e),y.call(this,"__ee__")?n=this.__ee__:(n=b.value=v(null),g(this,"__ee__",b),b.value=null),n[t]?"object"===l(n[t])?n[t].push(e):n[t]=[n[t],e]:n[t]=e,this},i=function(t,e){var n,i;return h(e),i=this,r.call(this,t,n=function(){o.call(i,t,n),d.call(e,this,arguments)}),n.__eeOnceListener__=e,this},o=function(t,e){var n,r,i,o;if(h(e),!y.call(this,"__ee__"))return this;if(n=this.__ee__,!n[t])return this;if(r=n[t],"object"===("undefined"==typeof r?"undefined":l(r)))for(o=0;i=r[o];++o)i!==e&&i.__eeOnceListener__!==e||(2===r.length?n[t]=r[o?0:1]:r.splice(o,1));else r!==e&&r.__eeOnceListener__!==e||delete n[t];return this},a=function(t){var e,n,r,i,o;if(y.call(this,"__ee__")&&(i=this.__ee__[t]))if("object"===("undefined"==typeof i?"undefined":l(i))){for(n=arguments.length,o=new Array(n-1),e=1;e<n;++e)o[e-1]=arguments[e];for(i=i.slice(),e=0;r=i[e];++e)d.call(r,this,o)}else switch(arguments.length){case 1:p.call(i,this);break;case 2:p.call(i,this,arguments[1]);break;case 3:p.call(i,this,arguments[1],arguments[2]);break;default:for(n=arguments.length,o=new Array(n-1),e=1;e<n;++e)o[e-1]=arguments[e];d.call(i,this,o)}},s={on:r,once:i,off:o,emit:a},u={on:f(r),once:f(i),off:f(o),emit:f(a)},c=m({},u),t.exports=e=function(t){return null==t?v(c):m(Object(t),u)},e.methods=s},function(t,e){/*!
+function(t){function e(t,e,n,r){var i,o,a,s,u,c,l,h=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:q)!==D&&N(e),e=e||D,P)){if(11!==p&&(u=mt.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(h&&(a=h.getElementById(i))&&R(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return Q.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&_.getElementsByClassName&&e.getElementsByClassName)return Q.apply(n,e.getElementsByClassName(i)),n}if(_.qsa&&!W[t+" "]&&(!F||!F.test(t))){if(1!==p)h=e,l=t;else if("object"!==e.nodeName.toLowerCase()){for((s=e.getAttribute("id"))?s=s.replace(wt,_t):e.setAttribute("id",s=I),c=A(t),o=c.length;o--;)c[o]="#"+s+" "+d(c[o]);l=c.join(","),h=yt.test(t)&&f(e.parentNode)||e}if(l)try{return Q.apply(n,h.querySelectorAll(l)),n}catch(v){}finally{s===I&&e.removeAttribute("id")}}}return $(t.replace(st,"$1"),e,n,r)}function n(){function t(n,r){return e.push(n+" ")>C.cacheLength&&delete t[e.shift()],t[n+" "]=r}var e=[];return t}function r(t){return t[I]=!0,t}function i(t){var e=D.createElement("fieldset");try{return!!t(e)}catch(n){return!1}finally{e.parentNode&&e.parentNode.removeChild(e),e=null}}function o(t,e){for(var n=t.split("|"),r=n.length;r--;)C.attrHandle[n[r]]=e}function a(t,e){var n=e&&t,r=n&&1===t.nodeType&&1===e.nodeType&&t.sourceIndex-e.sourceIndex;if(r)return r;if(n)for(;n=n.nextSibling;)if(n===e)return-1;return t?1:-1}function s(t){return function(e){var n=e.nodeName.toLowerCase();return"input"===n&&e.type===t}}function u(t){return function(e){var n=e.nodeName.toLowerCase();return("input"===n||"button"===n)&&e.type===t}}function c(t){return function(e){return"label"in e&&e.disabled===t||"form"in e&&e.disabled===t||"form"in e&&e.disabled===!1&&(e.isDisabled===t||e.isDisabled!==!t&&("label"in e||!kt(e))!==t)}}function l(t){return r(function(e){return e=+e,r(function(n,r){for(var i,o=t([],n.length,e),a=o.length;a--;)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function f(t){return t&&"undefined"!=typeof t.getElementsByTagName&&t}function h(){}function d(t){for(var e=0,n=t.length,r="";e<n;e++)r+=t[e].value;return r}function p(t,e,n){var r=e.dir,i=e.next,o=i||r,a=n&&"parentNode"===o,s=z++;return e.first?function(e,n,i){for(;e=e[r];)if(1===e.nodeType||a)return t(e,n,i)}:function(e,n,u){var c,l,f,h=[H,s];if(u){for(;e=e[r];)if((1===e.nodeType||a)&&t(e,n,u))return!0}else for(;e=e[r];)if(1===e.nodeType||a)if(f=e[I]||(e[I]={}),l=f[e.uniqueID]||(f[e.uniqueID]={}),i&&i===e.nodeName.toLowerCase())e=e[r]||e;else{if((c=l[o])&&c[0]===H&&c[1]===s)return h[2]=c[2];if(l[o]=h,h[2]=t(e,n,u))return!0}}}function v(t){return t.length>1?function(e,n,r){for(var i=t.length;i--;)if(!t[i](e,n,r))return!1;return!0}:t[0]}function g(t,n,r){for(var i=0,o=n.length;i<o;i++)e(t,n[i],r);return r}function m(t,e,n,r,i){for(var o,a=[],s=0,u=t.length,c=null!=e;s<u;s++)(o=t[s])&&(n&&!n(o,r,i)||(a.push(o),c&&e.push(s)));return a}function y(t,e,n,i,o,a){return i&&!i[I]&&(i=y(i)),o&&!o[I]&&(o=y(o,a)),r(function(r,a,s,u){var c,l,f,h=[],d=[],p=a.length,v=r||g(e||"*",s.nodeType?[s]:s,[]),y=!t||!r&&e?v:m(v,h,t,s,u),b=n?o||(r?t:p||i)?[]:a:y;if(n&&n(y,b,s,u),i)for(c=m(b,d),i(c,[],s,u),l=c.length;l--;)(f=c[l])&&(b[d[l]]=!(y[d[l]]=f));if(r){if(o||t){if(o){for(c=[],l=b.length;l--;)(f=b[l])&&c.push(y[l]=f);o(null,b=[],c,u)}for(l=b.length;l--;)(f=b[l])&&(c=o?tt(r,f):h[l])>-1&&(r[c]=!(a[c]=f))}}else b=m(b===a?b.splice(p,b.length):b),o?o(null,a,b,u):Q.apply(a,b)})}function b(t){for(var e,n,r,i=t.length,o=C.relative[t[0].type],a=o||C.relative[" "],s=o?1:0,u=p(function(t){return t===e},a,!0),c=p(function(t){return tt(e,t)>-1},a,!0),l=[function(t,n,r){var i=!o&&(r||n!==E)||((e=n).nodeType?u(t,n,r):c(t,n,r));return e=null,i}];s<i;s++)if(n=C.relative[t[s].type])l=[p(v(l),n)];else{if(n=C.filter[t[s].type].apply(null,t[s].matches),n[I]){for(r=++s;r<i&&!C.relative[t[r].type];r++);return y(s>1&&v(l),s>1&&d(t.slice(0,s-1).concat({value:" "===t[s-2].type?"*":""})).replace(st,"$1"),n,s<r&&b(t.slice(s,r)),r<i&&b(t=t.slice(r)),r<i&&d(t))}l.push(n)}return v(l)}function x(t,n){var i=n.length>0,o=t.length>0,a=function(r,a,s,u,c){var l,f,h,d=0,p="0",v=r&&[],g=[],y=E,b=r||o&&C.find.TAG("*",c),x=H+=null==y?1:Math.random()||.1,w=b.length;for(c&&(E=a===D||a||c);p!==w&&null!=(l=b[p]);p++){if(o&&l){for(f=0,a||l.ownerDocument===D||(N(l),s=!P);h=t[f++];)if(h(l,a||D,s)){u.push(l);break}c&&(H=x)}i&&((l=!h&&l)&&d--,r&&v.push(l))}if(d+=p,i&&p!==d){for(f=0;h=n[f++];)h(v,g,a,s);if(r){if(d>0)for(;p--;)v[p]||g[p]||(g[p]=J.call(u));g=m(g)}Q.apply(u,g),c&&!r&&g.length>0&&d+n.length>1&&e.uniqueSort(u)}return c&&(H=x,E=y),v};return i?r(a):a}var w,_,C,k,T,A,S,$,E,j,O,N,D,M,P,F,B,L,R,I="sizzle"+1*new Date,q=t.document,H=0,z=0,V=n(),U=n(),W=n(),X=function(t,e){return t===e&&(O=!0),0},G={}.hasOwnProperty,Z=[],J=Z.pop,Y=Z.push,Q=Z.push,K=Z.slice,tt=function(t,e){for(var n=0,r=t.length;n<r;n++)if(t[n]===e)return n;return-1},et="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",nt="[\\x20\\t\\r\\n\\f]",rt="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",it="\\["+nt+"*("+rt+")(?:"+nt+"*([*^$|!~]?=)"+nt+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+rt+"))|)"+nt+"*\\]",ot=":("+rt+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+it+")*)|.*)\\)|)",at=new RegExp(nt+"+","g"),st=new RegExp("^"+nt+"+|((?:^|[^\\\\])(?:\\\\.)*)"+nt+"+$","g"),ut=new RegExp("^"+nt+"*,"+nt+"*"),ct=new RegExp("^"+nt+"*([>+~]|"+nt+")"+nt+"*"),lt=new RegExp("="+nt+"*([^\\]'\"]*?)"+nt+"*\\]","g"),ft=new RegExp(ot),ht=new RegExp("^"+rt+"$"),dt={ID:new RegExp("^#("+rt+")"),CLASS:new RegExp("^\\.("+rt+")"),TAG:new RegExp("^("+rt+"|[*])"),ATTR:new RegExp("^"+it),PSEUDO:new RegExp("^"+ot),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+nt+"*(even|odd|(([+-]|)(\\d*)n|)"+nt+"*(?:([+-]|)"+nt+"*(\\d+)|))"+nt+"*\\)|)","i"),bool:new RegExp("^(?:"+et+")$","i"),needsContext:new RegExp("^"+nt+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+nt+"*((?:-\\d)?\\d*)"+nt+"*\\)|)(?=[^-]|$)","i")},pt=/^(?:input|select|textarea|button)$/i,vt=/^h\d$/i,gt=/^[^{]+\{\s*\[native \w/,mt=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,yt=/[+~]/,bt=new RegExp("\\\\([\\da-f]{1,6}"+nt+"?|("+nt+")|.)","ig"),xt=function(t,e,n){var r="0x"+e-65536;return r!==r||n?e:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},wt=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g,_t=function(t,e){return e?"\0"===t?"�":t.slice(0,-1)+"\\"+t.charCodeAt(t.length-1).toString(16)+" ":"\\"+t},Ct=function(){N()},kt=p(function(t){return t.disabled===!0},{dir:"parentNode",next:"legend"});try{Q.apply(Z=K.call(q.childNodes),q.childNodes),Z[q.childNodes.length].nodeType}catch(Tt){Q={apply:Z.length?function(t,e){Y.apply(t,K.call(e))}:function(t,e){for(var n=t.length,r=0;t[n++]=e[r++];);t.length=n-1}}}_=e.support={},T=e.isXML=function(t){var e=t&&(t.ownerDocument||t).documentElement;return!!e&&"HTML"!==e.nodeName},N=e.setDocument=function(t){var e,n,r=t?t.ownerDocument||t:q;return r!==D&&9===r.nodeType&&r.documentElement?(D=r,M=D.documentElement,P=!T(D),q!==D&&(n=D.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",Ct,!1):n.attachEvent&&n.attachEvent("onunload",Ct)),_.attributes=i(function(t){return t.className="i",!t.getAttribute("className")}),_.getElementsByTagName=i(function(t){return t.appendChild(D.createComment("")),!t.getElementsByTagName("*").length}),_.getElementsByClassName=gt.test(D.getElementsByClassName),_.getById=i(function(t){return M.appendChild(t).id=I,!D.getElementsByName||!D.getElementsByName(I).length}),_.getById?(C.find.ID=function(t,e){if("undefined"!=typeof e.getElementById&&P){var n=e.getElementById(t);return n?[n]:[]}},C.filter.ID=function(t){var e=t.replace(bt,xt);return function(t){return t.getAttribute("id")===e}}):(delete C.find.ID,C.filter.ID=function(t){var e=t.replace(bt,xt);return function(t){var n="undefined"!=typeof t.getAttributeNode&&t.getAttributeNode("id");return n&&n.value===e}}),C.find.TAG=_.getElementsByTagName?function(t,e){return"undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t):_.qsa?e.querySelectorAll(t):void 0}:function(t,e){var n,r=[],i=0,o=e.getElementsByTagName(t);if("*"===t){for(;n=o[i++];)1===n.nodeType&&r.push(n);return r}return o},C.find.CLASS=_.getElementsByClassName&&function(t,e){if("undefined"!=typeof e.getElementsByClassName&&P)return e.getElementsByClassName(t)},B=[],F=[],(_.qsa=gt.test(D.querySelectorAll))&&(i(function(t){M.appendChild(t).innerHTML="<a id='"+I+"'></a><select id='"+I+"-\r\\' msallowcapture=''><option selected=''></option></select>",t.querySelectorAll("[msallowcapture^='']").length&&F.push("[*^$]="+nt+"*(?:''|\"\")"),t.querySelectorAll("[selected]").length||F.push("\\["+nt+"*(?:value|"+et+")"),t.querySelectorAll("[id~="+I+"-]").length||F.push("~="),t.querySelectorAll(":checked").length||F.push(":checked"),t.querySelectorAll("a#"+I+"+*").length||F.push(".#.+[+~]")}),i(function(t){t.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var e=D.createElement("input");e.setAttribute("type","hidden"),t.appendChild(e).setAttribute("name","D"),t.querySelectorAll("[name=d]").length&&F.push("name"+nt+"*[*^$|!~]?="),2!==t.querySelectorAll(":enabled").length&&F.push(":enabled",":disabled"),M.appendChild(t).disabled=!0,2!==t.querySelectorAll(":disabled").length&&F.push(":enabled",":disabled"),t.querySelectorAll("*,:x"),F.push(",.*:")})),(_.matchesSelector=gt.test(L=M.matches||M.webkitMatchesSelector||M.mozMatchesSelector||M.oMatchesSelector||M.msMatchesSelector))&&i(function(t){_.disconnectedMatch=L.call(t,"*"),L.call(t,"[s!='']:x"),B.push("!=",ot)}),F=F.length&&new RegExp(F.join("|")),B=B.length&&new RegExp(B.join("|")),e=gt.test(M.compareDocumentPosition),R=e||gt.test(M.contains)?function(t,e){var n=9===t.nodeType?t.documentElement:t,r=e&&e.parentNode;return t===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):t.compareDocumentPosition&&16&t.compareDocumentPosition(r)))}:function(t,e){if(e)for(;e=e.parentNode;)if(e===t)return!0;return!1},X=e?function(t,e){if(t===e)return O=!0,0;var n=!t.compareDocumentPosition-!e.compareDocumentPosition;return n?n:(n=(t.ownerDocument||t)===(e.ownerDocument||e)?t.compareDocumentPosition(e):1,1&n||!_.sortDetached&&e.compareDocumentPosition(t)===n?t===D||t.ownerDocument===q&&R(q,t)?-1:e===D||e.ownerDocument===q&&R(q,e)?1:j?tt(j,t)-tt(j,e):0:4&n?-1:1)}:function(t,e){if(t===e)return O=!0,0;var n,r=0,i=t.parentNode,o=e.parentNode,s=[t],u=[e];if(!i||!o)return t===D?-1:e===D?1:i?-1:o?1:j?tt(j,t)-tt(j,e):0;if(i===o)return a(t,e);for(n=t;n=n.parentNode;)s.unshift(n);for(n=e;n=n.parentNode;)u.unshift(n);for(;s[r]===u[r];)r++;return r?a(s[r],u[r]):s[r]===q?-1:u[r]===q?1:0},D):D},e.matches=function(t,n){return e(t,null,null,n)},e.matchesSelector=function(t,n){if((t.ownerDocument||t)!==D&&N(t),n=n.replace(lt,"='$1']"),_.matchesSelector&&P&&!W[n+" "]&&(!B||!B.test(n))&&(!F||!F.test(n)))try{var r=L.call(t,n);if(r||_.disconnectedMatch||t.document&&11!==t.document.nodeType)return r}catch(i){}return e(n,D,null,[t]).length>0},e.contains=function(t,e){return(t.ownerDocument||t)!==D&&N(t),R(t,e)},e.attr=function(t,e){(t.ownerDocument||t)!==D&&N(t);var n=C.attrHandle[e.toLowerCase()],r=n&&G.call(C.attrHandle,e.toLowerCase())?n(t,e,!P):void 0;return void 0!==r?r:_.attributes||!P?t.getAttribute(e):(r=t.getAttributeNode(e))&&r.specified?r.value:null},e.escape=function(t){return(t+"").replace(wt,_t)},e.error=function(t){throw new Error("Syntax error, unrecognized expression: "+t)},e.uniqueSort=function(t){var e,n=[],r=0,i=0;if(O=!_.detectDuplicates,j=!_.sortStable&&t.slice(0),t.sort(X),O){for(;e=t[i++];)e===t[i]&&(r=n.push(i));for(;r--;)t.splice(n[r],1)}return j=null,t},k=e.getText=function(t){var e,n="",r=0,i=t.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof t.textContent)return t.textContent;for(t=t.firstChild;t;t=t.nextSibling)n+=k(t)}else if(3===i||4===i)return t.nodeValue}else for(;e=t[r++];)n+=k(e);return n},C=e.selectors={cacheLength:50,createPseudo:r,match:dt,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(t){return t[1]=t[1].replace(bt,xt),t[3]=(t[3]||t[4]||t[5]||"").replace(bt,xt),"~="===t[2]&&(t[3]=" "+t[3]+" "),t.slice(0,4)},CHILD:function(t){return t[1]=t[1].toLowerCase(),"nth"===t[1].slice(0,3)?(t[3]||e.error(t[0]),t[4]=+(t[4]?t[5]+(t[6]||1):2*("even"===t[3]||"odd"===t[3])),t[5]=+(t[7]+t[8]||"odd"===t[3])):t[3]&&e.error(t[0]),t},PSEUDO:function(t){var e,n=!t[6]&&t[2];return dt.CHILD.test(t[0])?null:(t[3]?t[2]=t[4]||t[5]||"":n&&ft.test(n)&&(e=A(n,!0))&&(e=n.indexOf(")",n.length-e)-n.length)&&(t[0]=t[0].slice(0,e),t[2]=n.slice(0,e)),t.slice(0,3))}},filter:{TAG:function(t){var e=t.replace(bt,xt).toLowerCase();return"*"===t?function(){return!0}:function(t){return t.nodeName&&t.nodeName.toLowerCase()===e}},CLASS:function(t){var e=V[t+" "];return e||(e=new RegExp("(^|"+nt+")"+t+"("+nt+"|$)"))&&V(t,function(t){return e.test("string"==typeof t.className&&t.className||"undefined"!=typeof t.getAttribute&&t.getAttribute("class")||"")})},ATTR:function(t,n,r){return function(i){var o=e.attr(i,t);return null==o?"!="===n:!n||(o+="","="===n?o===r:"!="===n?o!==r:"^="===n?r&&0===o.indexOf(r):"*="===n?r&&o.indexOf(r)>-1:"$="===n?r&&o.slice(-r.length)===r:"~="===n?(" "+o.replace(at," ")+" ").indexOf(r)>-1:"|="===n&&(o===r||o.slice(0,r.length+1)===r+"-"))}},CHILD:function(t,e,n,r,i){var o="nth"!==t.slice(0,3),a="last"!==t.slice(-4),s="of-type"===e;return 1===r&&0===i?function(t){return!!t.parentNode}:function(e,n,u){var c,l,f,h,d,p,v=o!==a?"nextSibling":"previousSibling",g=e.parentNode,m=s&&e.nodeName.toLowerCase(),y=!u&&!s,b=!1;if(g){if(o){for(;v;){for(h=e;h=h[v];)if(s?h.nodeName.toLowerCase()===m:1===h.nodeType)return!1;p=v="only"===t&&!p&&"nextSibling"}return!0}if(p=[a?g.firstChild:g.lastChild],a&&y){for(h=g,f=h[I]||(h[I]={}),l=f[h.uniqueID]||(f[h.uniqueID]={}),c=l[t]||[],d=c[0]===H&&c[1],b=d&&c[2],h=d&&g.childNodes[d];h=++d&&h&&h[v]||(b=d=0)||p.pop();)if(1===h.nodeType&&++b&&h===e){l[t]=[H,d,b];break}}else if(y&&(h=e,f=h[I]||(h[I]={}),l=f[h.uniqueID]||(f[h.uniqueID]={}),c=l[t]||[],d=c[0]===H&&c[1],b=d),b===!1)for(;(h=++d&&h&&h[v]||(b=d=0)||p.pop())&&((s?h.nodeName.toLowerCase()!==m:1!==h.nodeType)||!++b||(y&&(f=h[I]||(h[I]={}),l=f[h.uniqueID]||(f[h.uniqueID]={}),l[t]=[H,b]),h!==e)););return b-=i,b===r||b%r===0&&b/r>=0}}},PSEUDO:function(t,n){var i,o=C.pseudos[t]||C.setFilters[t.toLowerCase()]||e.error("unsupported pseudo: "+t);return o[I]?o(n):o.length>1?(i=[t,t,"",n],C.setFilters.hasOwnProperty(t.toLowerCase())?r(function(t,e){for(var r,i=o(t,n),a=i.length;a--;)r=tt(t,i[a]),t[r]=!(e[r]=i[a])}):function(t){return o(t,0,i)}):o}},pseudos:{not:r(function(t){var e=[],n=[],i=S(t.replace(st,"$1"));return i[I]?r(function(t,e,n,r){for(var o,a=i(t,null,r,[]),s=t.length;s--;)(o=a[s])&&(t[s]=!(e[s]=o))}):function(t,r,o){return e[0]=t,i(e,null,o,n),e[0]=null,!n.pop()}}),has:r(function(t){return function(n){return e(t,n).length>0}}),contains:r(function(t){return t=t.replace(bt,xt),function(e){return(e.textContent||e.innerText||k(e)).indexOf(t)>-1}}),lang:r(function(t){return ht.test(t||"")||e.error("unsupported lang: "+t),t=t.replace(bt,xt).toLowerCase(),function(e){var n;do if(n=P?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return n=n.toLowerCase(),n===t||0===n.indexOf(t+"-");while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var n=t.location&&t.location.hash;return n&&n.slice(1)===e.id},root:function(t){return t===M},focus:function(t){return t===D.activeElement&&(!D.hasFocus||D.hasFocus())&&!!(t.type||t.href||~t.tabIndex)},enabled:c(!1),disabled:c(!0),checked:function(t){var e=t.nodeName.toLowerCase();return"input"===e&&!!t.checked||"option"===e&&!!t.selected},selected:function(t){return t.parentNode&&t.parentNode.selectedIndex,t.selected===!0},empty:function(t){for(t=t.firstChild;t;t=t.nextSibling)if(t.nodeType<6)return!1;return!0},parent:function(t){return!C.pseudos.empty(t)},header:function(t){return vt.test(t.nodeName)},input:function(t){return pt.test(t.nodeName)},button:function(t){var e=t.nodeName.toLowerCase();return"input"===e&&"button"===t.type||"button"===e},text:function(t){var e;return"input"===t.nodeName.toLowerCase()&&"text"===t.type&&(null==(e=t.getAttribute("type"))||"text"===e.toLowerCase())},first:l(function(){return[0]}),last:l(function(t,e){return[e-1]}),eq:l(function(t,e,n){return[n<0?n+e:n]}),even:l(function(t,e){for(var n=0;n<e;n+=2)t.push(n);return t}),odd:l(function(t,e){for(var n=1;n<e;n+=2)t.push(n);return t}),lt:l(function(t,e,n){for(var r=n<0?n+e:n;--r>=0;)t.push(r);return t}),gt:l(function(t,e,n){for(var r=n<0?n+e:n;++r<e;)t.push(r);return t})}},C.pseudos.nth=C.pseudos.eq;for(w in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})C.pseudos[w]=s(w);for(w in{submit:!0,reset:!0})C.pseudos[w]=u(w);return h.prototype=C.filters=C.pseudos,C.setFilters=new h,A=e.tokenize=function(t,n){var r,i,o,a,s,u,c,l=U[t+" "];if(l)return n?0:l.slice(0);for(s=t,u=[],c=C.preFilter;s;){r&&!(i=ut.exec(s))||(i&&(s=s.slice(i[0].length)||s),u.push(o=[])),r=!1,(i=ct.exec(s))&&(r=i.shift(),o.push({value:r,type:i[0].replace(st," ")}),s=s.slice(r.length));for(a in C.filter)!(i=dt[a].exec(s))||c[a]&&!(i=c[a](i))||(r=i.shift(),o.push({value:r,type:a,matches:i}),s=s.slice(r.length));if(!r)break}return n?s.length:s?e.error(t):U(t,u).slice(0)},S=e.compile=function(t,e){var n,r=[],i=[],o=W[t+" "];if(!o){for(e||(e=A(t)),n=e.length;n--;)o=b(e[n]),o[I]?r.push(o):i.push(o);o=W(t,x(i,r)),o.selector=t}return o},$=e.select=function(t,e,n,r){var i,o,a,s,u,c="function"==typeof t&&t,l=!r&&A(t=c.selector||t);if(n=n||[],1===l.length){if(o=l[0]=l[0].slice(0),o.length>2&&"ID"===(a=o[0]).type&&_.getById&&9===e.nodeType&&P&&C.relative[o[1].type]){if(e=(C.find.ID(a.matches[0].replace(bt,xt),e)||[])[0],!e)return n;c&&(e=e.parentNode),t=t.slice(o.shift().value.length)}for(i=dt.needsContext.test(t)?0:o.length;i--&&(a=o[i],!C.relative[s=a.type]);)if((u=C.find[s])&&(r=u(a.matches[0].replace(bt,xt),yt.test(o[0].type)&&f(e.parentNode)||e))){if(o.splice(i,1),t=r.length&&d(o),!t)return Q.apply(n,r),n;break}}return(c||S(t,l))(r,e,!P,n,!e||yt.test(t)&&f(e.parentNode)||e),n},_.sortStable=I.split("").sort(X).join("")===I,_.detectDuplicates=!!O,N(),_.sortDetached=i(function(t){return 1&t.compareDocumentPosition(D.createElement("fieldset"))}),i(function(t){return t.innerHTML="<a href='#'></a>","#"===t.firstChild.getAttribute("href")})||o("type|href|height|width",function(t,e,n){if(!n)return t.getAttribute(e,"type"===e.toLowerCase()?1:2)}),_.attributes&&i(function(t){return t.innerHTML="<input/>",t.firstChild.setAttribute("value",""),""===t.firstChild.getAttribute("value")})||o("value",function(t,e,n){if(!n&&"input"===t.nodeName.toLowerCase())return t.defaultValue}),i(function(t){return null==t.getAttribute("disabled")})||o(et,function(t,e,n){var r;if(!n)return t[e]===!0?e.toLowerCase():(r=t.getAttributeNode(e))&&r.specified?r.value:null}),e}(o);mt.find=_t,mt.expr=_t.selectors,mt.expr[":"]=mt.expr.pseudos,mt.uniqueSort=mt.unique=_t.uniqueSort,mt.text=_t.getText,mt.isXMLDoc=_t.isXML,mt.contains=_t.contains,mt.escapeSelector=_t.escape;var Ct=function(t,e,n){for(var r=[],i=void 0!==n;(t=t[e])&&9!==t.nodeType;)if(1===t.nodeType){if(i&&mt(t).is(n))break;r.push(t)}return r},kt=function(t,e){for(var n=[];t;t=t.nextSibling)1===t.nodeType&&t!==e&&n.push(t);return n},Tt=mt.expr.match.needsContext,At=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i,St=/^.[^:#\[\.,]*$/;mt.filter=function(t,e,n){var r=e[0];return n&&(t=":not("+t+")"),1===e.length&&1===r.nodeType?mt.find.matchesSelector(r,t)?[r]:[]:mt.find.matches(t,mt.grep(e,function(t){return 1===t.nodeType}))},mt.fn.extend({find:function(t){var e,n,r=this.length,i=this;if("string"!=typeof t)return this.pushStack(mt(t).filter(function(){for(e=0;e<r;e++)if(mt.contains(i[e],this))return!0}));for(n=this.pushStack([]),e=0;e<r;e++)mt.find(t,i[e],n);return r>1?mt.uniqueSort(n):n},filter:function(t){return this.pushStack(c(this,t||[],!1))},not:function(t){return this.pushStack(c(this,t||[],!0))},is:function(t){return!!c(this,"string"==typeof t&&Tt.test(t)?mt(t):t||[],!1).length}});var $t,Et=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,jt=mt.fn.init=function(t,e,n){var r,i;if(!t)return this;if(n=n||$t,"string"==typeof t){if(r="<"===t[0]&&">"===t[t.length-1]&&t.length>=3?[null,t,null]:Et.exec(t),!r||!r[1]&&e)return!e||e.jquery?(e||n).find(t):this.constructor(e).find(t);if(r[1]){if(e=e instanceof mt?e[0]:e,mt.merge(this,mt.parseHTML(r[1],e&&e.nodeType?e.ownerDocument||e:it,!0)),At.test(r[1])&&mt.isPlainObject(e))for(r in e)mt.isFunction(this[r])?this[r](e[r]):this.attr(r,e[r]);return this}return i=it.getElementById(r[2]),i&&(this[0]=i,this.length=1),this}return t.nodeType?(this[0]=t,this.length=1,this):mt.isFunction(t)?void 0!==n.ready?n.ready(t):t(mt):mt.makeArray(t,this)};jt.prototype=mt.fn,$t=mt(it);var Ot=/^(?:parents|prev(?:Until|All))/,Nt={children:!0,contents:!0,next:!0,prev:!0};mt.fn.extend({has:function(t){var e=mt(t,this),n=e.length;return this.filter(function(){for(var t=0;t<n;t++)if(mt.contains(this,e[t]))return!0})},closest:function(t,e){var n,r=0,i=this.length,o=[],a="string"!=typeof t&&mt(t);if(!Tt.test(t))for(;r<i;r++)for(n=this[r];n&&n!==e;n=n.parentNode)if(n.nodeType<11&&(a?a.index(n)>-1:1===n.nodeType&&mt.find.matchesSelector(n,t))){o.push(n);break}return this.pushStack(o.length>1?mt.uniqueSort(o):o)},index:function(t){return t?"string"==typeof t?ct.call(mt(t),this[0]):ct.call(this,t.jquery?t[0]:t):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(t,e){return this.pushStack(mt.uniqueSort(mt.merge(this.get(),mt(t,e))))},addBack:function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}}),mt.each({parent:function tn(t){var tn=t.parentNode;return tn&&11!==tn.nodeType?tn:null},parents:function(t){return Ct(t,"parentNode")},parentsUntil:function(t,e,n){return Ct(t,"parentNode",n)},next:function(t){return l(t,"nextSibling")},prev:function(t){return l(t,"previousSibling")},nextAll:function(t){return Ct(t,"nextSibling")},prevAll:function(t){return Ct(t,"previousSibling")},nextUntil:function(t,e,n){return Ct(t,"nextSibling",n)},prevUntil:function(t,e,n){return Ct(t,"previousSibling",n)},siblings:function(t){return kt((t.parentNode||{}).firstChild,t)},children:function(t){return kt(t.firstChild)},contents:function(t){return t.contentDocument||mt.merge([],t.childNodes)}},function(t,e){mt.fn[t]=function(n,r){var i=mt.map(this,e,n);return"Until"!==t.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=mt.filter(r,i)),this.length>1&&(Nt[t]||mt.uniqueSort(i),Ot.test(t)&&i.reverse()),this.pushStack(i)}});var Dt=/\S+/g;mt.Callbacks=function(t){t="string"==typeof t?f(t):mt.extend({},t);var e,n,r,i,o=[],a=[],s=-1,u=function(){for(i=t.once,r=e=!0;a.length;s=-1)for(n=a.shift();++s<o.length;)o[s].apply(n[0],n[1])===!1&&t.stopOnFalse&&(s=o.length,n=!1);t.memory||(n=!1),e=!1,i&&(o=n?[]:"")},c={add:function(){return o&&(n&&!e&&(s=o.length-1,a.push(n)),function r(e){mt.each(e,function(e,n){mt.isFunction(n)?t.unique&&c.has(n)||o.push(n):n&&n.length&&"string"!==mt.type(n)&&r(n)})}(arguments),n&&!e&&u()),this},remove:function(){return mt.each(arguments,function(t,e){for(var n;(n=mt.inArray(e,o,n))>-1;)o.splice(n,1),n<=s&&s--}),this},has:function(t){return t?mt.inArray(t,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return i=a=[],o=n="",this},disabled:function(){return!o},lock:function(){return i=a=[],n||e||(o=n=""),this},locked:function(){return!!i},fireWith:function(t,n){return i||(n=n||[],n=[t,n.slice?n.slice():n],a.push(n),e||u()),this},fire:function(){return c.fireWith(this,arguments),this},fired:function(){return!!r}};return c},mt.extend({Deferred:function(t){var e=[["notify","progress",mt.Callbacks("memory"),mt.Callbacks("memory"),2],["resolve","done",mt.Callbacks("once memory"),mt.Callbacks("once memory"),0,"resolved"],["reject","fail",mt.Callbacks("once memory"),mt.Callbacks("once memory"),1,"rejected"]],r="pending",i={state:function(){return r},always:function(){return a.done(arguments).fail(arguments),this},"catch":function(t){return i.then(null,t)},pipe:function(){var t=arguments;return mt.Deferred(function(n){mt.each(e,function(e,r){var i=mt.isFunction(t[r[4]])&&t[r[4]];a[r[1]](function(){var t=i&&i.apply(this,arguments);t&&mt.isFunction(t.promise)?t.promise().progress(n.notify).done(n.resolve).fail(n.reject):n[r[0]+"With"](this,i?[t]:arguments)})}),t=null}).promise()},then:function(t,r,i){function a(t,e,r,i){return function(){var u=this,c=arguments,l=function(){var o,l;if(!(t<s)){if(o=r.apply(u,c),o===e.promise())throw new TypeError("Thenable self-resolution");l=o&&("object"===("undefined"==typeof o?"undefined":n(o))||"function"==typeof o)&&o.then,mt.isFunction(l)?i?l.call(o,a(s,e,h,i),a(s,e,d,i)):(s++,l.call(o,a(s,e,h,i),a(s,e,d,i),a(s,e,h,e.notifyWith))):(r!==h&&(u=void 0,c=[o]),(i||e.resolveWith)(u,c))}},f=i?l:function(){try{l()}catch(n){mt.Deferred.exceptionHook&&mt.Deferred.exceptionHook(n,f.stackTrace),t+1>=s&&(r!==d&&(u=void 0,c=[n]),e.rejectWith(u,c))}};t?f():(mt.Deferred.getStackHook&&(f.stackTrace=mt.Deferred.getStackHook()),o.setTimeout(f))}}var s=0;return mt.Deferred(function(n){e[0][3].add(a(0,n,mt.isFunction(i)?i:h,n.notifyWith)),e[1][3].add(a(0,n,mt.isFunction(t)?t:h)),e[2][3].add(a(0,n,mt.isFunction(r)?r:d))}).promise()},promise:function(t){return null!=t?mt.extend(t,i):i}},a={};return mt.each(e,function(t,n){var o=n[2],s=n[5];i[n[1]]=o.add,s&&o.add(function(){r=s},e[3-t][2].disable,e[0][2].lock),o.add(n[3].fire),a[n[0]]=function(){return a[n[0]+"With"](this===a?void 0:this,arguments),this},a[n[0]+"With"]=o.fireWith}),i.promise(a),t&&t.call(a,a),a},when:function(t){var e=arguments.length,n=e,r=Array(n),i=at.call(arguments),o=mt.Deferred(),a=function(t){return function(n){r[t]=this,i[t]=arguments.length>1?at.call(arguments):n,--e||o.resolveWith(r,i)}};if(e<=1&&(p(t,o.done(a(n)).resolve,o.reject),"pending"===o.state()||mt.isFunction(i[n]&&i[n].then)))return o.then();for(;n--;)p(i[n],a(n),o.reject);return o.promise()}});var Mt=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;mt.Deferred.exceptionHook=function(t,e){o.console&&o.console.warn&&t&&Mt.test(t.name)&&o.console.warn("jQuery.Deferred exception: "+t.message,t.stack,e)};var Pt=mt.Deferred();mt.fn.ready=function(t){return Pt.then(t),this},mt.extend({isReady:!1,readyWait:1,holdReady:function(t){t?mt.readyWait++:mt.ready(!0)},ready:function(t){(t===!0?--mt.readyWait:mt.isReady)||(mt.isReady=!0,t!==!0&&--mt.readyWait>0||Pt.resolveWith(it,[mt]))}}),mt.ready.then=Pt.then,"complete"===it.readyState||"loading"!==it.readyState&&!it.documentElement.doScroll?o.setTimeout(mt.ready):(it.addEventListener("DOMContentLoaded",v),o.addEventListener("load",v));var Ft=function en(t,e,n,r,i,o,a){var s=0,u=t.length,c=null==n;if("object"===mt.type(n)){i=!0;for(s in n)en(t,e,s,n[s],!0,o,a)}else if(void 0!==r&&(i=!0,mt.isFunction(r)||(a=!0),c&&(a?(e.call(t,r),e=null):(c=e,e=function(t,e,n){return c.call(mt(t),n)})),e))for(;s<u;s++)e(t[s],n,a?r:r.call(t[s],s,e(t[s],n)));return i?t:c?e.call(t):u?e(t[0],n):o},Bt=function(t){return 1===t.nodeType||9===t.nodeType||!+t.nodeType};g.uid=1,g.prototype={cache:function(t){var e=t[this.expando];return e||(e={},Bt(t)&&(t.nodeType?t[this.expando]=e:Object.defineProperty(t,this.expando,{value:e,configurable:!0}))),e},set:function(t,e,n){var r,i=this.cache(t);if("string"==typeof e)i[mt.camelCase(e)]=n;else for(r in e)i[mt.camelCase(r)]=e[r];return i},get:function(t,e){return void 0===e?this.cache(t):t[this.expando]&&t[this.expando][mt.camelCase(e)]},access:function(t,e,n){return void 0===e||e&&"string"==typeof e&&void 0===n?this.get(t,e):(this.set(t,e,n),void 0!==n?n:e)},remove:function(t,e){var n,r=t[this.expando];if(void 0!==r){if(void 0!==e){mt.isArray(e)?e=e.map(mt.camelCase):(e=mt.camelCase(e),e=e in r?[e]:e.match(Dt)||[]),n=e.length;for(;n--;)delete r[e[n]]}(void 0===e||mt.isEmptyObject(r))&&(t.nodeType?t[this.expando]=void 0:delete t[this.expando])}},hasData:function(t){var e=t[this.expando];return void 0!==e&&!mt.isEmptyObject(e)}};var Lt=new g,Rt=new g,It=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,qt=/[A-Z]/g;mt.extend({hasData:function(t){return Rt.hasData(t)||Lt.hasData(t)},data:function(t,e,n){return Rt.access(t,e,n)},removeData:function(t,e){Rt.remove(t,e)},_data:function(t,e,n){return Lt.access(t,e,n)},_removeData:function(t,e){Lt.remove(t,e)}}),mt.fn.extend({data:function nn(t,e){var r,i,nn,o=this[0],a=o&&o.attributes;if(void 0===t){if(this.length&&(nn=Rt.get(o),1===o.nodeType&&!Lt.get(o,"hasDataAttrs"))){for(r=a.length;r--;)a[r]&&(i=a[r].name,0===i.indexOf("data-")&&(i=mt.camelCase(i.slice(5)),m(o,i,nn[i])));Lt.set(o,"hasDataAttrs",!0)}return nn}return"object"===("undefined"==typeof t?"undefined":n(t))?this.each(function(){Rt.set(this,t)}):Ft(this,function(e){var n;if(o&&void 0===e){if(n=Rt.get(o,t),void 0!==n)return n;if(n=m(o,t),void 0!==n)return n}else this.each(function(){Rt.set(this,t,e)})},null,e,arguments.length>1,null,!0)},removeData:function(t){return this.each(function(){Rt.remove(this,t)})}}),mt.extend({queue:function rn(t,e,n){var rn;if(t)return e=(e||"fx")+"queue",rn=Lt.get(t,e),n&&(!rn||mt.isArray(n)?rn=Lt.access(t,e,mt.makeArray(n)):rn.push(n)),rn||[]},dequeue:function(t,e){e=e||"fx";var n=mt.queue(t,e),r=n.length,i=n.shift(),o=mt._queueHooks(t,e),a=function(){mt.dequeue(t,e)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===e&&n.unshift("inprogress"),delete o.stop,i.call(t,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(t,e){var n=e+"queueHooks";return Lt.get(t,n)||Lt.access(t,n,{empty:mt.Callbacks("once memory").add(function(){Lt.remove(t,[e+"queue",n])})})}}),mt.fn.extend({queue:function(t,e){var n=2;return"string"!=typeof t&&(e=t,t="fx",n--),arguments.length<n?mt.queue(this[0],t):void 0===e?this:this.each(function(){var n=mt.queue(this,t,e);mt._queueHooks(this,t),"fx"===t&&"inprogress"!==n[0]&&mt.dequeue(this,t)})},dequeue:function(t){return this.each(function(){mt.dequeue(this,t)})},clearQueue:function(t){return this.queue(t||"fx",[])},promise:function(t,e){var n,r=1,i=mt.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};for("string"!=typeof t&&(e=t,t=void 0),t=t||"fx";a--;)n=Lt.get(o[a],t+"queueHooks"),n&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(e)}});var Ht=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,zt=new RegExp("^(?:([+-])=|)("+Ht+")([a-z%]*)$","i"),Vt=["Top","Right","Bottom","Left"],Ut=function(t,e){return t=e||t,"none"===t.style.display||""===t.style.display&&mt.contains(t.ownerDocument,t)&&"none"===mt.css(t,"display")},Wt=function(t,e,n,r){var i,o,a={};for(o in e)a[o]=t.style[o],t.style[o]=e[o];i=n.apply(t,r||[]);for(o in e)t.style[o]=a[o];return i},Xt={};mt.fn.extend({show:function(){return x(this,!0)},hide:function(){return x(this)},toggle:function(t){return"boolean"==typeof t?t?this.show():this.hide():this.each(function(){Ut(this)?mt(this).show():mt(this).hide()})}});var Gt=/^(?:checkbox|radio)$/i,Zt=/<([a-z][^\/\0>\x20\t\r\n\f]+)/i,Jt=/^$|\/(?:java|ecma)script/i,Yt={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};Yt.optgroup=Yt.option,Yt.tbody=Yt.tfoot=Yt.colgroup=Yt.caption=Yt.thead,Yt.th=Yt.td;var Qt=/<|&#?\w+;/;!function(){var t=it.createDocumentFragment(),e=t.appendChild(it.createElement("div")),n=it.createElement("input");n.setAttribute("type","radio"),n.setAttribute("checked","checked"),n.setAttribute("name","t"),e.appendChild(n),vt.checkClone=e.cloneNode(!0).cloneNode(!0).lastChild.checked,e.innerHTML="<textarea>x</textarea>",vt.noCloneChecked=!!e.cloneNode(!0).lastChild.defaultValue;
+}();var Kt=it.documentElement,te=/^key/,ee=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,ne=/^([^.]*)(?:\.(.+)|)/;mt.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,c,l,f,h,d,p,v,g=Lt.get(t);if(g)for(n.handler&&(o=n,n=o.handler,i=o.selector),i&&mt.find.matchesSelector(Kt,i),n.guid||(n.guid=mt.guid++),(u=g.events)||(u=g.events={}),(a=g.handle)||(a=g.handle=function(e){return"undefined"!=typeof mt&&mt.event.triggered!==e.type?mt.event.dispatch.apply(t,arguments):void 0}),e=(e||"").match(Dt)||[""],c=e.length;c--;)s=ne.exec(e[c])||[],d=v=s[1],p=(s[2]||"").split(".").sort(),d&&(f=mt.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=mt.event.special[d]||{},l=mt.extend({type:d,origType:v,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&mt.expr.match.needsContext.test(i),namespace:p.join(".")},o),(h=u[d])||(h=u[d]=[],h.delegateCount=0,f.setup&&f.setup.call(t,r,p,a)!==!1||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,l),l.handler.guid||(l.handler.guid=n.guid)),i?h.splice(h.delegateCount++,0,l):h.push(l),mt.event.global[d]=!0)},remove:function(t,e,n,r,i){var o,a,s,u,c,l,f,h,d,p,v,g=Lt.hasData(t)&&Lt.get(t);if(g&&(u=g.events)){for(e=(e||"").match(Dt)||[""],c=e.length;c--;)if(s=ne.exec(e[c])||[],d=v=s[1],p=(s[2]||"").split(".").sort(),d){for(f=mt.event.special[d]||{},d=(r?f.delegateType:f.bindType)||d,h=u[d]||[],s=s[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=h.length;o--;)l=h[o],!i&&v!==l.origType||n&&n.guid!==l.guid||s&&!s.test(l.namespace)||r&&r!==l.selector&&("**"!==r||!l.selector)||(h.splice(o,1),l.selector&&h.delegateCount--,f.remove&&f.remove.call(t,l));a&&!h.length&&(f.teardown&&f.teardown.call(t,p,g.handle)!==!1||mt.removeEvent(t,d,g.handle),delete u[d])}else for(d in u)mt.event.remove(t,d+e[c],n,r,!0);mt.isEmptyObject(u)&&Lt.remove(t,"handle events")}},dispatch:function(t){var e,n,r,i,o,a,s=mt.event.fix(t),u=new Array(arguments.length),c=(Lt.get(this,"events")||{})[s.type]||[],l=mt.event.special[s.type]||{};for(u[0]=s,e=1;e<arguments.length;e++)u[e]=arguments[e];if(s.delegateTarget=this,!l.preDispatch||l.preDispatch.call(this,s)!==!1){for(a=mt.event.handlers.call(this,s,c),e=0;(i=a[e++])&&!s.isPropagationStopped();)for(s.currentTarget=i.elem,n=0;(o=i.handlers[n++])&&!s.isImmediatePropagationStopped();)s.rnamespace&&!s.rnamespace.test(o.namespace)||(s.handleObj=o,s.data=o.data,r=((mt.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,u),void 0!==r&&(s.result=r)===!1&&(s.preventDefault(),s.stopPropagation()));return l.postDispatch&&l.postDispatch.call(this,s),s.result}},handlers:function(t,e){var n,r,i,o,a=[],s=e.delegateCount,u=t.target;if(s&&u.nodeType&&("click"!==t.type||isNaN(t.button)||t.button<1))for(;u!==this;u=u.parentNode||this)if(1===u.nodeType&&(u.disabled!==!0||"click"!==t.type)){for(r=[],n=0;n<s;n++)o=e[n],i=o.selector+" ",void 0===r[i]&&(r[i]=o.needsContext?mt(i,this).index(u)>-1:mt.find(i,this,null,[u]).length),r[i]&&r.push(o);r.length&&a.push({elem:u,handlers:r})}return s<e.length&&a.push({elem:this,handlers:e.slice(s)}),a},addProp:function(t,e){Object.defineProperty(mt.Event.prototype,t,{enumerable:!0,configurable:!0,get:mt.isFunction(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(t){return t[mt.expando]?t:new mt.Event(t)},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==A()&&this.focus)return this.focus(),!1},delegateType:"focusin"},blur:{trigger:function(){if(this===A()&&this.blur)return this.blur(),!1},delegateType:"focusout"},click:{trigger:function(){if("checkbox"===this.type&&this.click&&mt.nodeName(this,"input"))return this.click(),!1},_default:function(t){return mt.nodeName(t.target,"a")}},beforeunload:{postDispatch:function(t){void 0!==t.result&&t.originalEvent&&(t.originalEvent.returnValue=t.result)}}}},mt.removeEvent=function(t,e,n){t.removeEventListener&&t.removeEventListener(e,n)},mt.Event=function(t,e){return this instanceof mt.Event?(t&&t.type?(this.originalEvent=t,this.type=t.type,this.isDefaultPrevented=t.defaultPrevented||void 0===t.defaultPrevented&&t.returnValue===!1?k:T,this.target=t.target&&3===t.target.nodeType?t.target.parentNode:t.target,this.currentTarget=t.currentTarget,this.relatedTarget=t.relatedTarget):this.type=t,e&&mt.extend(this,e),this.timeStamp=t&&t.timeStamp||mt.now(),void(this[mt.expando]=!0)):new mt.Event(t,e)},mt.Event.prototype={constructor:mt.Event,isDefaultPrevented:T,isPropagationStopped:T,isImmediatePropagationStopped:T,isSimulated:!1,preventDefault:function(){var t=this.originalEvent;this.isDefaultPrevented=k,t&&!this.isSimulated&&t.preventDefault()},stopPropagation:function(){var t=this.originalEvent;this.isPropagationStopped=k,t&&!this.isSimulated&&t.stopPropagation()},stopImmediatePropagation:function(){var t=this.originalEvent;this.isImmediatePropagationStopped=k,t&&!this.isSimulated&&t.stopImmediatePropagation(),this.stopPropagation()}},mt.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(t){var e=t.button;return null==t.which&&te.test(t.type)?null!=t.charCode?t.charCode:t.keyCode:!t.which&&void 0!==e&&ee.test(t.type)?1&e?1:2&e?3:4&e?2:0:t.which}},mt.event.addProp),mt.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(t,e){mt.event.special[t]={delegateType:e,bindType:e,handle:function(t){var n,r=this,i=t.relatedTarget,o=t.handleObj;return i&&(i===r||mt.contains(r,i))||(t.type=o.origType,n=o.handler.apply(this,arguments),t.type=e),n}}}),mt.fn.extend({on:function(t,e,n,r){return S(this,t,e,n,r)},one:function(t,e,n,r){return S(this,t,e,n,r,1)},off:function(t,e,r){var i,o;if(t&&t.preventDefault&&t.handleObj)return i=t.handleObj,mt(t.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"===("undefined"==typeof t?"undefined":n(t))){for(o in t)this.off(o,e,t[o]);return this}return e!==!1&&"function"!=typeof e||(r=e,e=void 0),r===!1&&(r=T),this.each(function(){mt.event.remove(this,t,r,e)})}});var re=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,ie=/<script|<style|<link/i,oe=/checked\s*(?:[^=]|=\s*.checked.)/i,ae=/^true\/(.*)/,se=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;mt.extend({htmlPrefilter:function(t){return t.replace(re,"<$1></$2>")},clone:function on(t,e,n){var r,i,o,a,on=t.cloneNode(!0),s=mt.contains(t.ownerDocument,t);if(!(vt.noCloneChecked||1!==t.nodeType&&11!==t.nodeType||mt.isXMLDoc(t)))for(a=w(on),o=w(t),r=0,i=o.length;r<i;r++)N(o[r],a[r]);if(e)if(n)for(o=o||w(t),a=a||w(on),r=0,i=o.length;r<i;r++)O(o[r],a[r]);else O(t,on);return a=w(on,"script"),a.length>0&&_(a,!s&&w(t,"script")),on},cleanData:function(t){for(var e,n,r,i=mt.event.special,o=0;void 0!==(n=t[o]);o++)if(Bt(n)){if(e=n[Lt.expando]){if(e.events)for(r in e.events)i[r]?mt.event.remove(n,r):mt.removeEvent(n,r,e.handle);n[Lt.expando]=void 0}n[Rt.expando]&&(n[Rt.expando]=void 0)}}}),mt.fn.extend({detach:function(t){return M(this,t,!0)},remove:function(t){return M(this,t)},text:function(t){return Ft(this,function(t){return void 0===t?mt.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=t)})},null,t,arguments.length)},append:function(){return D(this,arguments,function(t){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var e=$(this,t);e.appendChild(t)}})},prepend:function(){return D(this,arguments,function(t){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var e=$(this,t);e.insertBefore(t,e.firstChild)}})},before:function(){return D(this,arguments,function(t){this.parentNode&&this.parentNode.insertBefore(t,this)})},after:function(){return D(this,arguments,function(t){this.parentNode&&this.parentNode.insertBefore(t,this.nextSibling)})},empty:function(){for(var t,e=0;null!=(t=this[e]);e++)1===t.nodeType&&(mt.cleanData(w(t,!1)),t.textContent="");return this},clone:function(t,e){return t=null!=t&&t,e=null==e?t:e,this.map(function(){return mt.clone(this,t,e)})},html:function(t){return Ft(this,function(t){var e=this[0]||{},n=0,r=this.length;if(void 0===t&&1===e.nodeType)return e.innerHTML;if("string"==typeof t&&!ie.test(t)&&!Yt[(Zt.exec(t)||["",""])[1].toLowerCase()]){t=mt.htmlPrefilter(t);try{for(;n<r;n++)e=this[n]||{},1===e.nodeType&&(mt.cleanData(w(e,!1)),e.innerHTML=t);e=0}catch(i){}}e&&this.empty().append(t)},null,t,arguments.length)},replaceWith:function(){var t=[];return D(this,arguments,function(e){var n=this.parentNode;mt.inArray(this,t)<0&&(mt.cleanData(w(this)),n&&n.replaceChild(e,this))},t)}}),mt.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(t,e){mt.fn[t]=function(t){for(var n,r=[],i=mt(t),o=i.length-1,a=0;a<=o;a++)n=a===o?this:this.clone(!0),mt(i[a])[e](n),ut.apply(r,n.get());return this.pushStack(r)}});var ue=/^margin/,ce=new RegExp("^("+Ht+")(?!px)[a-z%]+$","i"),le=function(t){var e=t.ownerDocument.defaultView;return e&&e.opener||(e=o),e.getComputedStyle(t)};!function(){function t(){if(s){s.style.cssText="box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",s.innerHTML="",Kt.appendChild(a);var t=o.getComputedStyle(s);e="1%"!==t.top,i="2px"===t.marginLeft,n="4px"===t.width,s.style.marginRight="50%",r="4px"===t.marginRight,Kt.removeChild(a),s=null}}var e,n,r,i,a=it.createElement("div"),s=it.createElement("div");s.style&&(s.style.backgroundClip="content-box",s.cloneNode(!0).style.backgroundClip="",vt.clearCloneStyle="content-box"===s.style.backgroundClip,a.style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",a.appendChild(s),mt.extend(vt,{pixelPosition:function(){return t(),e},boxSizingReliable:function(){return t(),n},pixelMarginRight:function(){return t(),r},reliableMarginLeft:function(){return t(),i}}))}();var fe=/^(none|table(?!-c[ea]).+)/,he={position:"absolute",visibility:"hidden",display:"block"},de={letterSpacing:"0",fontWeight:"400"},pe=["Webkit","Moz","ms"],ve=it.createElement("div").style;mt.extend({cssHooks:{opacity:{get:function(t,e){if(e){var n=P(t,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function an(t,e,r,i){if(t&&3!==t.nodeType&&8!==t.nodeType&&t.style){var o,a,s,u=mt.camelCase(e),an=t.style;return e=mt.cssProps[u]||(mt.cssProps[u]=B(u)||u),s=mt.cssHooks[e]||mt.cssHooks[u],void 0===r?s&&"get"in s&&void 0!==(o=s.get(t,!1,i))?o:an[e]:(a="undefined"==typeof r?"undefined":n(r),"string"===a&&(o=zt.exec(r))&&o[1]&&(r=y(t,e,o),a="number"),null!=r&&r===r&&("number"===a&&(r+=o&&o[3]||(mt.cssNumber[u]?"":"px")),vt.clearCloneStyle||""!==r||0!==e.indexOf("background")||(an[e]="inherit"),s&&"set"in s&&void 0===(r=s.set(t,r,i))||(an[e]=r)),void 0)}},css:function(t,e,n,r){var i,o,a,s=mt.camelCase(e);return e=mt.cssProps[s]||(mt.cssProps[s]=B(s)||s),a=mt.cssHooks[e]||mt.cssHooks[s],a&&"get"in a&&(i=a.get(t,!0,n)),void 0===i&&(i=P(t,e,r)),"normal"===i&&e in de&&(i=de[e]),""===n||n?(o=parseFloat(i),n===!0||isFinite(o)?o||0:i):i}}),mt.each(["height","width"],function(t,e){mt.cssHooks[e]={get:function(t,n,r){if(n)return!fe.test(mt.css(t,"display"))||t.getClientRects().length&&t.getBoundingClientRect().width?I(t,e,r):Wt(t,he,function(){return I(t,e,r)})},set:function(t,n,r){var i,o=r&&le(t),a=r&&R(t,e,r,"border-box"===mt.css(t,"boxSizing",!1,o),o);return a&&(i=zt.exec(n))&&"px"!==(i[3]||"px")&&(t.style[e]=n,n=mt.css(t,e)),L(t,n,a)}}}),mt.cssHooks.marginLeft=F(vt.reliableMarginLeft,function(t,e){if(e)return(parseFloat(P(t,"marginLeft"))||t.getBoundingClientRect().left-Wt(t,{marginLeft:0},function(){return t.getBoundingClientRect().left}))+"px"}),mt.each({margin:"",padding:"",border:"Width"},function(t,e){mt.cssHooks[t+e]={expand:function(n){for(var r=0,i={},o="string"==typeof n?n.split(" "):[n];r<4;r++)i[t+Vt[r]+e]=o[r]||o[r-2]||o[0];return i}},ue.test(t)||(mt.cssHooks[t+e].set=L)}),mt.fn.extend({css:function(t,e){return Ft(this,function(t,e,n){var r,i,o={},a=0;if(mt.isArray(e)){for(r=le(t),i=e.length;a<i;a++)o[e[a]]=mt.css(t,e[a],!1,r);return o}return void 0!==n?mt.style(t,e,n):mt.css(t,e)},t,e,arguments.length>1)}}),mt.Tween=q,q.prototype={constructor:q,init:function(t,e,n,r,i,o){this.elem=t,this.prop=n,this.easing=i||mt.easing._default,this.options=e,this.start=this.now=this.cur(),this.end=r,this.unit=o||(mt.cssNumber[n]?"":"px")},cur:function(){var t=q.propHooks[this.prop];return t&&t.get?t.get(this):q.propHooks._default.get(this)},run:function(t){var e,n=q.propHooks[this.prop];return this.options.duration?this.pos=e=mt.easing[this.easing](t,this.options.duration*t,0,1,this.options.duration):this.pos=e=t,this.now=(this.end-this.start)*e+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):q.propHooks._default.set(this),this}},q.prototype.init.prototype=q.prototype,q.propHooks={_default:{get:function(t){var e;return 1!==t.elem.nodeType||null!=t.elem[t.prop]&&null==t.elem.style[t.prop]?t.elem[t.prop]:(e=mt.css(t.elem,t.prop,""),e&&"auto"!==e?e:0)},set:function(t){mt.fx.step[t.prop]?mt.fx.step[t.prop](t):1!==t.elem.nodeType||null==t.elem.style[mt.cssProps[t.prop]]&&!mt.cssHooks[t.prop]?t.elem[t.prop]=t.now:mt.style(t.elem,t.prop,t.now+t.unit)}}},q.propHooks.scrollTop=q.propHooks.scrollLeft={set:function(t){t.elem.nodeType&&t.elem.parentNode&&(t.elem[t.prop]=t.now)}},mt.easing={linear:function(t){return t},swing:function(t){return.5-Math.cos(t*Math.PI)/2},_default:"swing"},mt.fx=q.prototype.init,mt.fx.step={};var ge,me,ye=/^(?:toggle|show|hide)$/,be=/queueHooks$/;mt.Animation=mt.extend(G,{tweeners:{"*":[function(t,e){var n=this.createTween(t,e);return y(n.elem,t,zt.exec(e),n),n}]},tweener:function(t,e){mt.isFunction(t)?(e=t,t=["*"]):t=t.match(Dt);for(var n,r=0,i=t.length;r<i;r++)n=t[r],G.tweeners[n]=G.tweeners[n]||[],G.tweeners[n].unshift(e)},prefilters:[W],prefilter:function(t,e){e?G.prefilters.unshift(t):G.prefilters.push(t)}}),mt.speed=function(t,e,r){var i=t&&"object"===("undefined"==typeof t?"undefined":n(t))?mt.extend({},t):{complete:r||!r&&e||mt.isFunction(t)&&t,duration:t,easing:r&&e||e&&!mt.isFunction(e)&&e};return mt.fx.off||it.hidden?i.duration=0:i.duration="number"==typeof i.duration?i.duration:i.duration in mt.fx.speeds?mt.fx.speeds[i.duration]:mt.fx.speeds._default,null!=i.queue&&i.queue!==!0||(i.queue="fx"),i.old=i.complete,i.complete=function(){mt.isFunction(i.old)&&i.old.call(this),i.queue&&mt.dequeue(this,i.queue)},i},mt.fn.extend({fadeTo:function(t,e,n,r){return this.filter(Ut).css("opacity",0).show().end().animate({opacity:e},t,n,r)},animate:function(t,e,n,r){var i=mt.isEmptyObject(t),o=mt.speed(e,n,r),a=function(){var e=G(this,mt.extend({},t),o);(i||Lt.get(this,"finish"))&&e.stop(!0)};return a.finish=a,i||o.queue===!1?this.each(a):this.queue(o.queue,a)},stop:function(t,e,n){var r=function(t){var e=t.stop;delete t.stop,e(n)};return"string"!=typeof t&&(n=e,e=t,t=void 0),e&&t!==!1&&this.queue(t||"fx",[]),this.each(function(){var e=!0,i=null!=t&&t+"queueHooks",o=mt.timers,a=Lt.get(this);if(i)a[i]&&a[i].stop&&r(a[i]);else for(i in a)a[i]&&a[i].stop&&be.test(i)&&r(a[i]);for(i=o.length;i--;)o[i].elem!==this||null!=t&&o[i].queue!==t||(o[i].anim.stop(n),e=!1,o.splice(i,1));!e&&n||mt.dequeue(this,t)})},finish:function(t){return t!==!1&&(t=t||"fx"),this.each(function(){var e,n=Lt.get(this),r=n[t+"queue"],i=n[t+"queueHooks"],o=mt.timers,a=r?r.length:0;for(n.finish=!0,mt.queue(this,t,[]),i&&i.stop&&i.stop.call(this,!0),e=o.length;e--;)o[e].elem===this&&o[e].queue===t&&(o[e].anim.stop(!0),o.splice(e,1));for(e=0;e<a;e++)r[e]&&r[e].finish&&r[e].finish.call(this);delete n.finish})}}),mt.each(["toggle","show","hide"],function(t,e){var n=mt.fn[e];mt.fn[e]=function(t,r,i){return null==t||"boolean"==typeof t?n.apply(this,arguments):this.animate(V(e,!0),t,r,i)}}),mt.each({slideDown:V("show"),slideUp:V("hide"),slideToggle:V("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(t,e){mt.fn[t]=function(t,n,r){return this.animate(e,t,n,r)}}),mt.timers=[],mt.fx.tick=function(){var t,e=0,n=mt.timers;for(ge=mt.now();e<n.length;e++)t=n[e],t()||n[e]!==t||n.splice(e--,1);n.length||mt.fx.stop(),ge=void 0},mt.fx.timer=function(t){mt.timers.push(t),t()?mt.fx.start():mt.timers.pop()},mt.fx.interval=13,mt.fx.start=function(){me||(me=o.requestAnimationFrame?o.requestAnimationFrame(H):o.setInterval(mt.fx.tick,mt.fx.interval))},mt.fx.stop=function(){o.cancelAnimationFrame?o.cancelAnimationFrame(me):o.clearInterval(me),me=null},mt.fx.speeds={slow:600,fast:200,_default:400},mt.fn.delay=function(t,e){return t=mt.fx?mt.fx.speeds[t]||t:t,e=e||"fx",this.queue(e,function(e,n){var r=o.setTimeout(e,t);n.stop=function(){o.clearTimeout(r)}})},function(){var t=it.createElement("input"),e=it.createElement("select"),n=e.appendChild(it.createElement("option"));t.type="checkbox",vt.checkOn=""!==t.value,vt.optSelected=n.selected,t=it.createElement("input"),t.value="t",t.type="radio",vt.radioValue="t"===t.value}();var xe,we=mt.expr.attrHandle;mt.fn.extend({attr:function(t,e){return Ft(this,mt.attr,t,e,arguments.length>1)},removeAttr:function(t){return this.each(function(){mt.removeAttr(this,t)})}}),mt.extend({attr:function(t,e,n){var r,i,o=t.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof t.getAttribute?mt.prop(t,e,n):(1===o&&mt.isXMLDoc(t)||(i=mt.attrHooks[e.toLowerCase()]||(mt.expr.match.bool.test(e)?xe:void 0)),void 0!==n?null===n?void mt.removeAttr(t,e):i&&"set"in i&&void 0!==(r=i.set(t,n,e))?r:(t.setAttribute(e,n+""),n):i&&"get"in i&&null!==(r=i.get(t,e))?r:(r=mt.find.attr(t,e),null==r?void 0:r))},attrHooks:{type:{set:function(t,e){if(!vt.radioValue&&"radio"===e&&mt.nodeName(t,"input")){var n=t.value;return t.setAttribute("type",e),n&&(t.value=n),e}}}},removeAttr:function(t,e){var n,r=0,i=e&&e.match(Dt);if(i&&1===t.nodeType)for(;n=i[r++];)t.removeAttribute(n)}}),xe={set:function(t,e,n){return e===!1?mt.removeAttr(t,n):t.setAttribute(n,n),n}},mt.each(mt.expr.match.bool.source.match(/\w+/g),function(t,e){var n=we[e]||mt.find.attr;we[e]=function(t,e,r){var i,o,a=e.toLowerCase();return r||(o=we[a],we[a]=i,i=null!=n(t,e,r)?a:null,we[a]=o),i}});var _e=/^(?:input|select|textarea|button)$/i,Ce=/^(?:a|area)$/i;mt.fn.extend({prop:function(t,e){return Ft(this,mt.prop,t,e,arguments.length>1)},removeProp:function(t){return this.each(function(){delete this[mt.propFix[t]||t]})}}),mt.extend({prop:function(t,e,n){var r,i,o=t.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&mt.isXMLDoc(t)||(e=mt.propFix[e]||e,i=mt.propHooks[e]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(t,n,e))?r:t[e]=n:i&&"get"in i&&null!==(r=i.get(t,e))?r:t[e]},propHooks:{tabIndex:{get:function(t){var e=mt.find.attr(t,"tabindex");return e?parseInt(e,10):_e.test(t.nodeName)||Ce.test(t.nodeName)&&t.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),vt.optSelected||(mt.propHooks.selected={get:function(t){var e=t.parentNode;return e&&e.parentNode&&e.parentNode.selectedIndex,null},set:function(t){var e=t.parentNode;e&&(e.selectedIndex,e.parentNode&&e.parentNode.selectedIndex)}}),mt.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){mt.propFix[this.toLowerCase()]=this});var ke=/[\t\r\n\f]/g;mt.fn.extend({addClass:function(t){var e,n,r,i,o,a,s,u=0;if(mt.isFunction(t))return this.each(function(e){mt(this).addClass(t.call(this,e,Z(this)))});if("string"==typeof t&&t)for(e=t.match(Dt)||[];n=this[u++];)if(i=Z(n),r=1===n.nodeType&&(" "+i+" ").replace(ke," ")){for(a=0;o=e[a++];)r.indexOf(" "+o+" ")<0&&(r+=o+" ");s=mt.trim(r),i!==s&&n.setAttribute("class",s)}return this},removeClass:function(t){var e,n,r,i,o,a,s,u=0;if(mt.isFunction(t))return this.each(function(e){mt(this).removeClass(t.call(this,e,Z(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof t&&t)for(e=t.match(Dt)||[];n=this[u++];)if(i=Z(n),r=1===n.nodeType&&(" "+i+" ").replace(ke," ")){for(a=0;o=e[a++];)for(;r.indexOf(" "+o+" ")>-1;)r=r.replace(" "+o+" "," ");s=mt.trim(r),i!==s&&n.setAttribute("class",s)}return this},toggleClass:function(t,e){var r="undefined"==typeof t?"undefined":n(t);return"boolean"==typeof e&&"string"===r?e?this.addClass(t):this.removeClass(t):mt.isFunction(t)?this.each(function(n){mt(this).toggleClass(t.call(this,n,Z(this),e),e)}):this.each(function(){var e,n,i,o;if("string"===r)for(n=0,i=mt(this),o=t.match(Dt)||[];e=o[n++];)i.hasClass(e)?i.removeClass(e):i.addClass(e);else void 0!==t&&"boolean"!==r||(e=Z(this),e&&Lt.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||t===!1?"":Lt.get(this,"__className__")||""))})},hasClass:function(t){var e,n,r=0;for(e=" "+t+" ";n=this[r++];)if(1===n.nodeType&&(" "+Z(n)+" ").replace(ke," ").indexOf(e)>-1)return!0;return!1}});var Te=/\r/g,Ae=/[\x20\t\r\n\f]+/g;mt.fn.extend({val:function(t){var e,n,r,i=this[0];{if(arguments.length)return r=mt.isFunction(t),this.each(function(n){var i;1===this.nodeType&&(i=r?t.call(this,n,mt(this).val()):t,null==i?i="":"number"==typeof i?i+="":mt.isArray(i)&&(i=mt.map(i,function(t){return null==t?"":t+""})),e=mt.valHooks[this.type]||mt.valHooks[this.nodeName.toLowerCase()],e&&"set"in e&&void 0!==e.set(this,i,"value")||(this.value=i))});if(i)return e=mt.valHooks[i.type]||mt.valHooks[i.nodeName.toLowerCase()],e&&"get"in e&&void 0!==(n=e.get(i,"value"))?n:(n=i.value,"string"==typeof n?n.replace(Te,""):null==n?"":n)}}}),mt.extend({valHooks:{option:{get:function(t){var e=mt.find.attr(t,"value");return null!=e?e:mt.trim(mt.text(t)).replace(Ae," ")}},select:{get:function(t){for(var e,n,r=t.options,i=t.selectedIndex,o="select-one"===t.type,a=o?null:[],s=o?i+1:r.length,u=i<0?s:o?i:0;u<s;u++)if(n=r[u],(n.selected||u===i)&&!n.disabled&&(!n.parentNode.disabled||!mt.nodeName(n.parentNode,"optgroup"))){if(e=mt(n).val(),o)return e;a.push(e)}return a},set:function(t,e){for(var n,r,i=t.options,o=mt.makeArray(e),a=i.length;a--;)r=i[a],(r.selected=mt.inArray(mt.valHooks.option.get(r),o)>-1)&&(n=!0);return n||(t.selectedIndex=-1),o}}}}),mt.each(["radio","checkbox"],function(){mt.valHooks[this]={set:function(t,e){if(mt.isArray(e))return t.checked=mt.inArray(mt(t).val(),e)>-1}},vt.checkOn||(mt.valHooks[this].get=function(t){return null===t.getAttribute("value")?"on":t.value})});var Se=/^(?:focusinfocus|focusoutblur)$/;mt.extend(mt.event,{trigger:function(t,e,r,i){var a,s,u,c,l,f,h,d=[r||it],p=ht.call(t,"type")?t.type:t,v=ht.call(t,"namespace")?t.namespace.split("."):[];if(s=u=r=r||it,3!==r.nodeType&&8!==r.nodeType&&!Se.test(p+mt.event.triggered)&&(p.indexOf(".")>-1&&(v=p.split("."),p=v.shift(),v.sort()),l=p.indexOf(":")<0&&"on"+p,t=t[mt.expando]?t:new mt.Event(p,"object"===("undefined"==typeof t?"undefined":n(t))&&t),t.isTrigger=i?2:3,t.namespace=v.join("."),t.rnamespace=t.namespace?new RegExp("(^|\\.)"+v.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=r),e=null==e?[t]:mt.makeArray(e,[t]),h=mt.event.special[p]||{},i||!h.trigger||h.trigger.apply(r,e)!==!1)){if(!i&&!h.noBubble&&!mt.isWindow(r)){for(c=h.delegateType||p,Se.test(c+p)||(s=s.parentNode);s;s=s.parentNode)d.push(s),u=s;u===(r.ownerDocument||it)&&d.push(u.defaultView||u.parentWindow||o)}for(a=0;(s=d[a++])&&!t.isPropagationStopped();)t.type=a>1?c:h.bindType||p,f=(Lt.get(s,"events")||{})[t.type]&&Lt.get(s,"handle"),f&&f.apply(s,e),f=l&&s[l],f&&f.apply&&Bt(s)&&(t.result=f.apply(s,e),t.result===!1&&t.preventDefault());return t.type=p,i||t.isDefaultPrevented()||h._default&&h._default.apply(d.pop(),e)!==!1||!Bt(r)||l&&mt.isFunction(r[p])&&!mt.isWindow(r)&&(u=r[l],u&&(r[l]=null),mt.event.triggered=p,r[p](),mt.event.triggered=void 0,u&&(r[l]=u)),t.result}},simulate:function(t,e,n){var r=mt.extend(new mt.Event,n,{type:t,isSimulated:!0});mt.event.trigger(r,null,e)}}),mt.fn.extend({trigger:function(t,e){return this.each(function(){mt.event.trigger(t,e,this)})},triggerHandler:function(t,e){var n=this[0];if(n)return mt.event.trigger(t,e,n,!0)}}),mt.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(t,e){mt.fn[e]=function(t,n){return arguments.length>0?this.on(e,null,t,n):this.trigger(e)}}),mt.fn.extend({hover:function(t,e){return this.mouseenter(t).mouseleave(e||t)}}),vt.focusin="onfocusin"in o,vt.focusin||mt.each({focus:"focusin",blur:"focusout"},function(t,e){var n=function(t){mt.event.simulate(e,t.target,mt.event.fix(t))};mt.event.special[e]={setup:function(){var r=this.ownerDocument||this,i=Lt.access(r,e);i||r.addEventListener(t,n,!0),Lt.access(r,e,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this,i=Lt.access(r,e)-1;i?Lt.access(r,e,i):(r.removeEventListener(t,n,!0),Lt.remove(r,e))}}});var $e=o.location,Ee=mt.now(),je=/\?/;mt.parseXML=function(t){var e;if(!t||"string"!=typeof t)return null;try{e=(new o.DOMParser).parseFromString(t,"text/xml")}catch(n){e=void 0}return e&&!e.getElementsByTagName("parsererror").length||mt.error("Invalid XML: "+t),e};var Oe=/\[\]$/,Ne=/\r?\n/g,De=/^(?:submit|button|image|reset|file)$/i,Me=/^(?:input|select|textarea|keygen)/i;mt.param=function(t,e){var n,r=[],i=function(t,e){var n=mt.isFunction(e)?e():e;r[r.length]=encodeURIComponent(t)+"="+encodeURIComponent(null==n?"":n)};if(mt.isArray(t)||t.jquery&&!mt.isPlainObject(t))mt.each(t,function(){i(this.name,this.value)});else for(n in t)J(n,t[n],e,i);return r.join("&")},mt.fn.extend({serialize:function(){return mt.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var t=mt.prop(this,"elements");return t?mt.makeArray(t):this}).filter(function(){var t=this.type;return this.name&&!mt(this).is(":disabled")&&Me.test(this.nodeName)&&!De.test(t)&&(this.checked||!Gt.test(t))}).map(function(t,e){var n=mt(this).val();return null==n?null:mt.isArray(n)?mt.map(n,function(t){return{name:e.name,value:t.replace(Ne,"\r\n")}}):{name:e.name,value:n.replace(Ne,"\r\n")}}).get()}});var Pe=/%20/g,Fe=/#.*$/,Be=/([?&])_=[^&]*/,Le=/^(.*?):[ \t]*([^\r\n]*)$/gm,Re=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Ie=/^(?:GET|HEAD)$/,qe=/^\/\//,He={},ze={},Ve="*/".concat("*"),Ue=it.createElement("a");Ue.href=$e.href,mt.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:$e.href,type:"GET",isLocal:Re.test($e.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Ve,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":mt.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(t,e){return e?K(K(t,mt.ajaxSettings),e):K(mt.ajaxSettings,t)},ajaxPrefilter:Y(He),ajaxTransport:Y(ze),ajax:function(t,e){function r(t,e,n,r){var u,l,d,p,w,_=e;f||(f=!0,c&&o.clearTimeout(c),i=void 0,s=r||"",k.readyState=t>0?4:0,u=t>=200&&t<300||304===t,n&&(p=tt(v,k,n)),p=et(v,p,k,u),u?(v.ifModified&&(w=k.getResponseHeader("Last-Modified"),w&&(mt.lastModified[a]=w),w=k.getResponseHeader("etag"),w&&(mt.etag[a]=w)),204===t||"HEAD"===v.type?_="nocontent":304===t?_="notmodified":(_=p.state,l=p.data,d=p.error,u=!d)):(d=_,!t&&_||(_="error",t<0&&(t=0))),k.status=t,k.statusText=(e||_)+"",u?y.resolveWith(g,[l,_,k]):y.rejectWith(g,[k,_,d]),k.statusCode(x),x=void 0,h&&m.trigger(u?"ajaxSuccess":"ajaxError",[k,v,u?l:d]),b.fireWith(g,[k,_]),h&&(m.trigger("ajaxComplete",[k,v]),--mt.active||mt.event.trigger("ajaxStop")))}"object"===("undefined"==typeof t?"undefined":n(t))&&(e=t,t=void 0),e=e||{};var i,a,s,u,c,l,f,h,d,p,v=mt.ajaxSetup({},e),g=v.context||v,m=v.context&&(g.nodeType||g.jquery)?mt(g):mt.event,y=mt.Deferred(),b=mt.Callbacks("once memory"),x=v.statusCode||{},w={},_={},C="canceled",k={readyState:0,getResponseHeader:function(t){var e;if(f){if(!u)for(u={};e=Le.exec(s);)u[e[1].toLowerCase()]=e[2];e=u[t.toLowerCase()]}return null==e?null:e},getAllResponseHeaders:function(){return f?s:null},setRequestHeader:function(t,e){return null==f&&(t=_[t.toLowerCase()]=_[t.toLowerCase()]||t,w[t]=e),this},overrideMimeType:function(t){return null==f&&(v.mimeType=t),this},statusCode:function(t){var e;if(t)if(f)k.always(t[k.status]);else for(e in t)x[e]=[x[e],t[e]];return this},abort:function(t){var e=t||C;return i&&i.abort(e),r(0,e),this}};if(y.promise(k),v.url=((t||v.url||$e.href)+"").replace(qe,$e.protocol+"//"),v.type=e.method||e.type||v.method||v.type,v.dataTypes=(v.dataType||"*").toLowerCase().match(Dt)||[""],null==v.crossDomain){l=it.createElement("a");try{l.href=v.url,l.href=l.href,v.crossDomain=Ue.protocol+"//"+Ue.host!=l.protocol+"//"+l.host}catch(T){v.crossDomain=!0}}if(v.data&&v.processData&&"string"!=typeof v.data&&(v.data=mt.param(v.data,v.traditional)),Q(He,v,e,k),f)return k;h=mt.event&&v.global,h&&0===mt.active++&&mt.event.trigger("ajaxStart"),v.type=v.type.toUpperCase(),v.hasContent=!Ie.test(v.type),a=v.url.replace(Fe,""),v.hasContent?v.data&&v.processData&&0===(v.contentType||"").indexOf("application/x-www-form-urlencoded")&&(v.data=v.data.replace(Pe,"+")):(p=v.url.slice(a.length),v.data&&(a+=(je.test(a)?"&":"?")+v.data,delete v.data),v.cache===!1&&(a=a.replace(Be,""),p=(je.test(a)?"&":"?")+"_="+Ee++ +p),v.url=a+p),v.ifModified&&(mt.lastModified[a]&&k.setRequestHeader("If-Modified-Since",mt.lastModified[a]),mt.etag[a]&&k.setRequestHeader("If-None-Match",mt.etag[a])),(v.data&&v.hasContent&&v.contentType!==!1||e.contentType)&&k.setRequestHeader("Content-Type",v.contentType),k.setRequestHeader("Accept",v.dataTypes[0]&&v.accepts[v.dataTypes[0]]?v.accepts[v.dataTypes[0]]+("*"!==v.dataTypes[0]?", "+Ve+"; q=0.01":""):v.accepts["*"]);for(d in v.headers)k.setRequestHeader(d,v.headers[d]);if(v.beforeSend&&(v.beforeSend.call(g,k,v)===!1||f))return k.abort();if(C="abort",b.add(v.complete),k.done(v.success),k.fail(v.error),i=Q(ze,v,e,k)){if(k.readyState=1,h&&m.trigger("ajaxSend",[k,v]),f)return k;v.async&&v.timeout>0&&(c=o.setTimeout(function(){k.abort("timeout")},v.timeout));try{f=!1,i.send(w,r)}catch(T){if(f)throw T;r(-1,T)}}else r(-1,"No Transport");return k},getJSON:function(t,e,n){return mt.get(t,e,n,"json")},getScript:function(t,e){return mt.get(t,void 0,e,"script")}}),mt.each(["get","post"],function(t,e){mt[e]=function(t,n,r,i){return mt.isFunction(n)&&(i=i||r,r=n,n=void 0),mt.ajax(mt.extend({url:t,type:e,dataType:i,data:n,success:r},mt.isPlainObject(t)&&t))}}),mt._evalUrl=function(t){return mt.ajax({url:t,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},mt.fn.extend({wrapAll:function(t){var e;return this[0]&&(mt.isFunction(t)&&(t=t.call(this[0])),e=mt(t,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&e.insertBefore(this[0]),e.map(function(){for(var t=this;t.firstElementChild;)t=t.firstElementChild;return t}).append(this)),this},wrapInner:function(t){return mt.isFunction(t)?this.each(function(e){mt(this).wrapInner(t.call(this,e))}):this.each(function(){var e=mt(this),n=e.contents();n.length?n.wrapAll(t):e.append(t)})},wrap:function(t){var e=mt.isFunction(t);return this.each(function(n){mt(this).wrapAll(e?t.call(this,n):t)})},unwrap:function(t){return this.parent(t).not("body").each(function(){mt(this).replaceWith(this.childNodes);
+}),this}}),mt.expr.pseudos.hidden=function(t){return!mt.expr.pseudos.visible(t)},mt.expr.pseudos.visible=function(t){return!!(t.offsetWidth||t.offsetHeight||t.getClientRects().length)},mt.ajaxSettings.xhr=function(){try{return new o.XMLHttpRequest}catch(t){}};var We={0:200,1223:204},Xe=mt.ajaxSettings.xhr();vt.cors=!!Xe&&"withCredentials"in Xe,vt.ajax=Xe=!!Xe,mt.ajaxTransport(function(t){var e,n;if(vt.cors||Xe&&!t.crossDomain)return{send:function(r,i){var a,s=t.xhr();if(s.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(a in t.xhrFields)s[a]=t.xhrFields[a];t.mimeType&&s.overrideMimeType&&s.overrideMimeType(t.mimeType),t.crossDomain||r["X-Requested-With"]||(r["X-Requested-With"]="XMLHttpRequest");for(a in r)s.setRequestHeader(a,r[a]);e=function(t){return function(){e&&(e=n=s.onload=s.onerror=s.onabort=s.onreadystatechange=null,"abort"===t?s.abort():"error"===t?"number"!=typeof s.status?i(0,"error"):i(s.status,s.statusText):i(We[s.status]||s.status,s.statusText,"text"!==(s.responseType||"text")||"string"!=typeof s.responseText?{binary:s.response}:{text:s.responseText},s.getAllResponseHeaders()))}},s.onload=e(),n=s.onerror=e("error"),void 0!==s.onabort?s.onabort=n:s.onreadystatechange=function(){4===s.readyState&&o.setTimeout(function(){e&&n()})},e=e("abort");try{s.send(t.hasContent&&t.data||null)}catch(u){if(e)throw u}},abort:function(){e&&e()}}}),mt.ajaxPrefilter(function(t){t.crossDomain&&(t.contents.script=!1)}),mt.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(t){return mt.globalEval(t),t}}}),mt.ajaxPrefilter("script",function(t){void 0===t.cache&&(t.cache=!1),t.crossDomain&&(t.type="GET")}),mt.ajaxTransport("script",function(t){if(t.crossDomain){var e,n;return{send:function(r,i){e=mt("<script>").prop({charset:t.scriptCharset,src:t.url}).on("load error",n=function(t){e.remove(),n=null,t&&i("error"===t.type?404:200,t.type)}),it.head.appendChild(e[0])},abort:function(){n&&n()}}}});var Ge=[],Ze=/(=)\?(?=&|$)|\?\?/;mt.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var t=Ge.pop()||mt.expando+"_"+Ee++;return this[t]=!0,t}}),mt.ajaxPrefilter("json jsonp",function(t,e,n){var r,i,a,s=t.jsonp!==!1&&(Ze.test(t.url)?"url":"string"==typeof t.data&&0===(t.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ze.test(t.data)&&"data");if(s||"jsonp"===t.dataTypes[0])return r=t.jsonpCallback=mt.isFunction(t.jsonpCallback)?t.jsonpCallback():t.jsonpCallback,s?t[s]=t[s].replace(Ze,"$1"+r):t.jsonp!==!1&&(t.url+=(je.test(t.url)?"&":"?")+t.jsonp+"="+r),t.converters["script json"]=function(){return a||mt.error(r+" was not called"),a[0]},t.dataTypes[0]="json",i=o[r],o[r]=function(){a=arguments},n.always(function(){void 0===i?mt(o).removeProp(r):o[r]=i,t[r]&&(t.jsonpCallback=e.jsonpCallback,Ge.push(r)),a&&mt.isFunction(i)&&i(a[0]),a=i=void 0}),"script"}),vt.createHTMLDocument=function(){var t=it.implementation.createHTMLDocument("").body;return t.innerHTML="<form></form><form></form>",2===t.childNodes.length}(),mt.parseHTML=function(t,e,n){if("string"!=typeof t)return[];"boolean"==typeof e&&(n=e,e=!1);var r,i,o;return e||(vt.createHTMLDocument?(e=it.implementation.createHTMLDocument(""),r=e.createElement("base"),r.href=it.location.href,e.head.appendChild(r)):e=it),i=At.exec(t),o=!n&&[],i?[e.createElement(i[1])]:(i=C([t],e,o),o&&o.length&&mt(o).remove(),mt.merge([],i.childNodes))},mt.fn.load=function(t,e,r){var i,o,a,s=this,u=t.indexOf(" ");return u>-1&&(i=mt.trim(t.slice(u)),t=t.slice(0,u)),mt.isFunction(e)?(r=e,e=void 0):e&&"object"===("undefined"==typeof e?"undefined":n(e))&&(o="POST"),s.length>0&&mt.ajax({url:t,type:o||"GET",dataType:"html",data:e}).done(function(t){a=arguments,s.html(i?mt("<div>").append(mt.parseHTML(t)).find(i):t)}).always(r&&function(t,e){s.each(function(){r.apply(this,a||[t.responseText,e,t])})}),this},mt.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(t,e){mt.fn[e]=function(t){return this.on(e,t)}}),mt.expr.pseudos.animated=function(t){return mt.grep(mt.timers,function(e){return t===e.elem}).length},mt.offset={setOffset:function(t,e,n){var r,i,o,a,s,u,c,l=mt.css(t,"position"),f=mt(t),h={};"static"===l&&(t.style.position="relative"),s=f.offset(),o=mt.css(t,"top"),u=mt.css(t,"left"),c=("absolute"===l||"fixed"===l)&&(o+u).indexOf("auto")>-1,c?(r=f.position(),a=r.top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),mt.isFunction(e)&&(e=e.call(t,n,mt.extend({},s))),null!=e.top&&(h.top=e.top-s.top+a),null!=e.left&&(h.left=e.left-s.left+i),"using"in e?e.using.call(t,h):f.css(h)}},mt.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){mt.offset.setOffset(this,t,e)});var e,n,r,i,o=this[0];if(o)return o.getClientRects().length?(r=o.getBoundingClientRect(),r.width||r.height?(i=o.ownerDocument,n=nt(i),e=i.documentElement,{top:r.top+n.pageYOffset-e.clientTop,left:r.left+n.pageXOffset-e.clientLeft}):r):{top:0,left:0}},position:function(){if(this[0]){var t,e,n=this[0],r={top:0,left:0};return"fixed"===mt.css(n,"position")?e=n.getBoundingClientRect():(t=this.offsetParent(),e=this.offset(),mt.nodeName(t[0],"html")||(r=t.offset()),r={top:r.top+mt.css(t[0],"borderTopWidth",!0),left:r.left+mt.css(t[0],"borderLeftWidth",!0)}),{top:e.top-r.top-mt.css(n,"marginTop",!0),left:e.left-r.left-mt.css(n,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var t=this.offsetParent;t&&"static"===mt.css(t,"position");)t=t.offsetParent;return t||Kt})}}),mt.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,e){var n="pageYOffset"===e;mt.fn[t]=function(r){return Ft(this,function(t,r,i){var o=nt(t);return void 0===i?o?o[e]:t[r]:void(o?o.scrollTo(n?o.pageXOffset:i,n?i:o.pageYOffset):t[r]=i)},t,r,arguments.length)}}),mt.each(["top","left"],function(t,e){mt.cssHooks[e]=F(vt.pixelPosition,function(t,n){if(n)return n=P(t,e),ce.test(n)?mt(t).position()[e]+"px":n})}),mt.each({Height:"height",Width:"width"},function(t,e){mt.each({padding:"inner"+t,content:e,"":"outer"+t},function(n,r){mt.fn[r]=function(i,o){var a=arguments.length&&(n||"boolean"!=typeof i),s=n||(i===!0||o===!0?"margin":"border");return Ft(this,function(e,n,i){var o;return mt.isWindow(e)?0===r.indexOf("outer")?e["inner"+t]:e.document.documentElement["client"+t]:9===e.nodeType?(o=e.documentElement,Math.max(e.body["scroll"+t],o["scroll"+t],e.body["offset"+t],o["offset"+t],o["client"+t])):void 0===i?mt.css(e,n,s):mt.style(e,n,i,s)},e,a?i:void 0,a)}})}),mt.fn.extend({bind:function(t,e,n){return this.on(t,null,e,n)},unbind:function(t,e){return this.off(t,null,e)},delegate:function(t,e,n,r){return this.on(e,t,n,r)},undelegate:function(t,e,n){return 1===arguments.length?this.off(t,"**"):this.off(e,t||"**",n)}}),mt.parseJSON=JSON.parse,r=[],i=function(){return mt}.apply(e,r),!(void 0!==i&&(t.exports=i));var Je=o.jQuery,Ye=o.$;return mt.noConflict=function(t){return o.$===mt&&(o.$=Ye),t&&o.jQuery===mt&&(o.jQuery=Je),mt},a||(o.jQuery=o.$=mt),mt})}).call(e,n(32)(t))},function(t,e,n){"use strict";function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var i=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),o=n(1),a=function(){function t(e){r(this,t),this.zoomFactor=.1,this.paper=e.paper,this.MIN_SIZE=40,this.imageWidth=parseInt(this.paper.select(".main-image").attr("width")),this.imageHeight=parseInt(this.paper.select(".main-image").attr("height")),this.viewport={width:parseInt(this.paper.attr("width")),height:parseInt(this.paper.attr("height"))},this.scale=1,this.paper.attr({stroke:2,fill:"blue"}),this.disableDrag=!1,this.imgMinSize=Math.min(this.imageWidth,this.imageHeight),this.lastPosition=[],this.updateViewBox([0,0,this.imageWidth,this.imageHeight])}return i(t,[{key:"testShowCenter",value:function(t,e){this.center&&this.center.remove(),this.center=this.paper.rect(t-3,e-3,20,20),this.center.attr({fill:"red"})}},{key:"drawTestRectangle",value:function(t,e,n,r){var i=t-n/2,o=e-r/2;this.paper.rect(i,o,n,r)}},{key:"zoomIn",value:function(){if(9===this.scale)return void this.scale--;var t=this.currentViewBox[0]+this.currentViewBox[2]/2,e=this.currentViewBox[1]+this.currentViewBox[3]/2,n=this.zoomFactor*this.scale,r=this.imgMinSize-this.imgMinSize*n,i=r;this.currentViewBox[0]=t-r/2,this.currentViewBox[1]=e-i/2,this.currentViewBox[2]=r,this.currentViewBox[3]=i,this.scale++,this.updateViewBox()}},{key:"updateViewBox",value:function(t,e){if(e="boolean"!=typeof e||e,t&&4!=t.length)throw new Error("Provided currentViewBox is not valid!");if(t&&(this.currentViewBox=t),this.paper.attr({viewBox:this.currentViewBox}),!e)return!1;var n=this;o.eventEmitter.emit("zoomChanged",{updateFunction:function(t){n.updateViewBox(t,!1)},zoomFactor:this.getZoomFactor(),viewport:this.viewport,currentScale:this.scale,imageSize:{width:this.imageWidth,height:this.imageHeight},minSize:Math.min(this.imageWidth,this.imageHeight),currentViewBox:this.currentViewBox.slice()})}},{key:"getZoomFactor",value:function(){return{x:this.viewport.width/this.currentViewBox[2],y:this.viewport.height/this.currentViewBox[3]}}},{key:"onStart",value:function(t,e,n){this.lastPosition[0]=this.currentViewBox[0],this.lastPosition[1]=this.currentViewBox[1],"drawingHandler"===n.target.className.baseVal&&(this.disableDrag=!0)}},{key:"canDrag",value:function(){return!this.disableDrag}},{key:"onStop",value:function(){this.disableDrag=!1}},{key:"onDrag",value:function(t,e,n,r,i){if(!this.canDrag())return!0;var o=this.lastPosition[0]-t,a=this.lastPosition[1]-e;o+this.currentViewBox[2]>=this.viewport.width&&(o=this.viewport.width-this.currentViewBox[2]),a+this.currentViewBox[3]>=this.viewport.height&&(a=this.viewport.height-this.currentViewBox[3]),o<=0&&(o=0),a<=0&&(a=0),this.currentViewBox[0]=o,this.currentViewBox[1]=a,this.updateViewBox()}},{key:"reset",value:function(){this.scale=1,this.currentViewBox=[0,0,this.imageWidth,this.imageHeight],this.updateViewBox()}},{key:"zoomOut",value:function(){if(1==this.scale)return!1;var t=this.currentViewBox[0]+this.currentViewBox[2]/2,e=this.currentViewBox[1]+this.currentViewBox[3]/2,n=this.zoomFactor*(this.scale-1),r=this.imgMinSize-this.imgMinSize*n,i=r,o=t-r/2,a=e-i/2;this.currentViewBox[0]=o,this.currentViewBox[1]=a,this.currentViewBox[2]=r,this.currentViewBox[3]=i,this.updateViewBox(),this.scale--}}]),t}();e["default"]={enable_zoom:function(t){return new a(t)}}},function(t,e,n){var r,i;r=n(11);var o=n(43);i=r||{},i.__esModule&&(i=i["default"]),"function"==typeof i&&(i=i.options),i.render=o.render,i.staticRenderFns=o.staticRenderFns,t.exports=r||i},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(35),o=r(i),a=n(2),s=r(a),u=n(6),c=r(u);e["default"]={el:"#drawing-zone",MODE_RECT:"RECT",MODE_FREE:"FREE",ZOOM_IN:"in",ZOOM_OUT:"out",components:{typeahead:s["default"],zoomview:c["default"]},data:{mode:"",isRect:!0,normalizePath:"",readOnly:!1,formView:!0,useClipPath:!1,transformMatrix:"",fragmentPath:"",canZoom:!0,displayMask:!1},mounted:function(){var t=this;this.initialDrawingMode=null,this.drawingComponent=o["default"].init({wrapperId:"#iconolab-image-wrapper",actionWrapper:"#action-wrapper",readOnly:!1,onDrawingModeChange:function(e){t.setDrawingMode(e,!1)}}),this.$refs.zoomview.setZoomTarget(this.drawingComponent.getPaper()),this.showForm()},methods:{computeCentreredViewBox:function(){var t=this.$refs.zoomSvg,e=[],n=t.getAttribute("width"),r=t.getAttribute("height"),i=n/100,o=r/100,a=this.drawingComponent.getShapeBBox();return e=[(a.x-1)*i,(a.y-1)*o,(a.w+2)*i,(a.h+2)*o],e.join(" ")},computeZoomedViewBox:function(){var t=[],e=this.$refs.zoomSvg,n=this.drawingComponent.getShapeBBox(),r=e.getAttribute("width"),i=e.getAttribute("height"),o=r/100,a=i/100;n.x=n.x*o,n.y=n.y*a,n.w=n.w*o,n.h=n.h*a;var s=r/i;return n.w>n.h?(n.y=Math.max(0,n.y-(n.w*s-n.h)/2),n.h=n.w*s):(n.x=Math.max(0,n.x-(n.h/s-n.w)/2),n.w=n.h/s),t=[n.x,n.y,n.w,n.h],!!n&&t.join(" ")},zoom:function(t){var e=this.$refs.smallSvgWrapper;if(this.$options.ZOOM_OUT===t){var n=[0,0,e.getAttribute("width"),e.getAttribute("height")];e.setAttribute("viewBox",n.join(" ")),this.canZoom=!0}this.$options.ZOOM_IN===t&&(e.setAttribute("viewBox",this.computeCentreredViewBox()),this.canZoom=!1)},setDrawingMode:function(t,e){this.initialDrawingMode||(this.initialDrawingMode=t);var e="boolean"!=typeof e||e;this.mode=this.$options["MODE_"+t],this.isRect=this.mode===this.$options.MODE_RECT,e&&this.drawingComponent.setDrawingMode(this.mode)},cancel:function(){this.formView=!0;var t=this.$refs.currentPath.getAttribute("d");t.length&&this.initialDrawingMode&&(t+=";"+this.initialDrawingMode,this.drawingComponent.setPath(t))},highLightZone:function(){this.displayMask?this.displayMask=!1:this.displayMask=!0},displayEditedPath:function(){this.drawingComponent.getPath()},resetZoom:function(){this.zoom(this.$options.ZOOM_OUT)},showEditor:function(){this.formView=!1,this.resetZoom()},showForm:function(){this.normalizePath=this.drawingComponent.getPath();var t=this.$refs.smallImage;this.formView=!0;var e=t.getAttribute("width")/100,n=t.getAttribute("height")/100,r=[e,0,0,n,0,0].join(",");this.transformMatrix="matrix("+r+")",this.fragmentPath=this.normalizePath.split(";")[0]},clear:function(){this.drawingComponent.clear()}}}},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(2),o=r(i);e["default"]={data:function(){return{}},components:{Typeahead:o["default"]},mounted:function(){this.targetKeyMap={title:"proposal-title",desc:"proposal-description",frag:"proposal-fragment"},this.targetFieldTypeMap={title:"input",desc:"input",frag:"frag"},this.originalValues={title:"",desc:"",frag:""}},methods:{pickProposition:function(t,e,n){var r="",i=document.getElementById(e),o=this.$refs[this.targetKeyMap[n]],a=this.targetFieldTypeMap[n];if(!a)throw new Error("A target type must be provided...");if("input"===a&&(r=o.value,o.value=i.value),"frag"===a){r=o.getAttribute("d");var s=i.getAttribute("d");o.getAttribute("data-path-type");o.setAttribute("d",s);var u=i.getAttribute("data-path-type");u=u||"FREE";var c=this.$refs["fragment-field"];c.value=s+";"+u}this.preserveOriginalValue(n,r)},pickTag:function(t,e){var n=this.$refs[e],r=this.$refs["proposal-tags"];this.preserveOriginalValue("proposal-tags",r.tags),r.setTags(n.tags,!0)},preserveOriginalValue:function(t,e){this.originalValues[t]||(this.originalValues[t]=e)},hightlightSource:function(t){t.className+="highlight"},save:function(){alert("this is it ... ")}}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(1);e["default"]={data:function(){return{tags:[],readOnly:!1}},methods:{removeTag:function(t){this.tags.$remove(t),this.normalizeSelectedTags()},reset:function(){this.tags=[],this.normalizeSelectedTags()},tagAlreadyExists:function(t){var e=!1,n=this.tags.find(function(e){if(e.tag_link){if(e.tag_link===t.tag_link)return!0}else if(e.tag_label===t.tag_label)return!0});if(n){var r=this.$refs[n.id][0];r.style.border="1px solid red",setTimeout(function(){r.style.border=""},1e3),e=!0}return e},setTags:function(t){Array.isArray(t)||new Error("setTags expects an array!");var e=this;t.map(function(t){e.addTag(t)})},addTag:function(t){return!this.tagAlreadyExists(t)&&void(t&&t.hasOwnProperty("tag_label")&&(t.id||(t.id=(0,r.generateId)("tag_")),this.tags.push(t),this.normalizeSelectedTags()))},normalizeSelectedTags:function(){var t=[];this.tags.map(function(e){var n={};n.tag_input="string"==typeof e.tag_link&&e.tag_link.length?e.tag_link:e.tag_label,n.accuracy=e.accuracy,n.relevancy=e.relevancy,t.push(n)}),this.$parent.$data.selectedTags=JSON.stringify(t)},updateAccuracy:function(t,e){e.accuracy=t.target.value,this.normalizeSelectedTags()},updatePertinence:function(t,e){e.relevancy=t.target.value,this.normalizeSelectedTags()}}}},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(29),o=r(i),a=n(42),s=r(a),u="http://lookup.dbpedia.org/api/search/PrefixSearch?MaxHits=5",c="http://fr.wikipedia.org/w/api.php",l={reset:o["default"].methods.reset},f=function(t,e){var n=jQuery.Deferred();jQuery.getJSON(t,e).done(function(t){var e={};e.data=t,n.resolve(e)}).fail(n.reject);return n.promise()};e["default"]={mixins:[o["default"]],components:{taglist:s["default"]},props:["tags","read-only"],mounted:function(){this.taglist=this.$refs.taglist,this.taglist.readOnly=this.readOnly,this.setTags(this.tags)},data:function(){return{src:u,limit:7,minChars:2,showAddButton:!1,datasource:"wikipedia",selectedTags:"[]",items:[],queryParamName:"QueryString"}},methods:{setTags:function(t,e){t=Array.isArray(t)?t:[],e="boolean"==typeof e&&e,e&&this.taglist.reset(),this.taglist.setTags(t)},checkQuery:function(){0===this.query.length&&this.reset()},fetch:function(){if("wikipedia"===this.datasource)return this.fetchWikiPedia();var t={};return t[this.queryParamName]=this.query,f(this.src,query)},fetchWikiPedia:function(){this.src=c;var t={action:"opensearch",format:"json",search:this.query},e=jQuery.Deferred();return jQuery.ajax({url:this.src,data:t,dataType:"jsonp",success:function(t){var n={};n.data=t,e.resolve(n)}}),e.promise()},reset:function(){this.showAddButton=!1,l.reset.call(this)},prepareWikipediaResponse:function(t){var e=[];if(4!==t.length)return e;var n=t[1],r=t[3];return n.length===r.length?(n.map(function(t,n){var i={};i.tag_label=t;var o=r[n];o=o.replace("https://fr.wikipedia.org/wiki/","http://fr.dbpedia.org/resource/"),i.tag_link=decodeURI(o),i.accuracy=1,i.relevancy=1,e.push(i)}),e):void 0},prepareResponseData:function(t){var e="string"==typeof t?JSON.parse(t):t;return"wikipedia"===this.datasource&&(e=this.prepareWikipediaResponse(e)),Array.isArray(e)&&!e.length&&(this.showAddButton=!0),e},addTag:function(){if(this.hasItems)return!1;var t={tag_label:this.query,accuracy:1,relevancy:1};this.$refs.taglist.addTag(t),this.reset()},onHit:function(t){this.$refs.taglist.addTag(t),this.reset()}}}},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(1),o=n(5),a=r(o),s=n(3),u=r(s);e["default"]={props:["image-url","image-width","image-height","zoomTarget","main-image-id"],mounted:function(){this.root=new u["default"](this.$refs["root-svg"]),this.handler=this.root.select("#zoom-handler"),this.image=this.root.select("#small-image"),this.root.attr({width:101,height:101});var t=parseInt(this.image.attr("width")),e=parseInt(this.image.attr("height"));this.root.attr({viewBox:[0,0,t,e]}),this.imgMinSize=Math.min(t,e),this.handlerSize=20,this.handler.attr({width:this.handlerSize,height:this.handlerSize}),this.currentViewBox=null,this.currentViewport=null,this.updateFunction=null;var n=document.getElementById("zoomTarget");n&&this.setZoomTarget(n),this.handleEvents()},data:function(){return{showHandler:!1}},methods:{setZoomTarget:function(t){if(t.hasOwnProperty("type")&&"svg"===t.type)this.paper=t;else{this.paper=new u["default"](t);var e=this.paper.select("#"+this.mainImageId);if(!e)throw new Error("A main image wasn't found.")}this.zoomHandler=a["default"].enable_zoom(this.paper)},incraseDrawingZoom:function(){this.zoomHandler.zoomIn()},resetDrawingZoom:function(){this.zoomHandler.reset()},decreaseDrawingZoom:function(){this.zoomHandler.zoomOut()},handleEvents:function(){i.eventEmitter.on("zoomChanged",this.handleZoomChanged.bind(this));var t=this;this.handler.drag(function(e,n){var r=this.getBBox(),i=this.data("startPosition").x,o=this.data("startPosition").y,a=parseInt(t.image.attr("width")),s=parseInt(t.image.attr("height")),u=i+e,c=o+n;u+r.w>=a&&(u=a-r.w),c+r.h>=s&&(c=s-r.h),u=u<0?0:u,c=c<0?0:c;var l="T"+[u,c];this.attr("transform",l),t.notifyMove(this.getBBox().x,this.getBBox().y)},function(){this.data("startPosition",{x:this.getBBox().x,y:this.getBBox().y}),this.data("origTransform",this.transform().local)},function(){})},moveHandlerToCenter:function(t,e){cx=cx?cx:this.width/2,cy=cy?cy:this.height/2;var n=cx-this.handler.getBBox().w/2,r=cy-this.handler.getBBox().h/2;this.handler.transform("T"+[n,r])},notifyMove:function(t,e){if(i.eventEmitter.emit("moveZoomHandler",{x:t,y:e,viewport:{width:this.image.attr("width"),height:this.image.attr("height")}}),!this.currentViewBox||!this.currentViewport||"function"!=typeof this.updateFunction)return!1;var n=this.currentImageSize.width/this.image.attr("width"),r=this.currentImageSize.height/this.image.attr("height"),o=t*n,a=e*r;this.currentViewBox[0]=o,this.currentViewBox[1]=a,this.updateFunction(this.currentViewBox)},handleZoomChanged:function(t){if(1===t.currentScale)return void(this.showHandler=!1);this.showHandler=!0,this.currentViewport=t.viewport,this.currentViewBox=t.currentViewBox,this.currentImageSize=t.imageSize,this.updateFunction=t.updateFunction;var e=t.currentViewBox[2]*this.imgMinSize/t.minSize;this.handler.attr("width",e),this.handler.attr("height",e);var n=t.currentViewBox[0]*this.image.attr("width")/t.imageSize.width,r=t.currentViewBox[1]*this.image.attr("height")/t.imageSize.height;this.handler.transform("T"+[n,r])}}}},function(t,e){"use strict";t.exports=function(){var t=[];return t.toString=function(){for(var t=[],e=0;e<this.length;e++){var n=this[e];n[2]?t.push("@media "+n[2]+"{"+n[1]+"}"):t.push(n[1])}return t.join("")},t.i=function(e,n){"string"==typeof e&&(e=[[null,e,""]]);for(var r={},i=0;i<this.length;i++){var o=this[i][0];"number"==typeof o&&(r[o]=!0)}for(i=0;i<e.length;i++){var a=e[i];"number"==typeof a[0]&&r[a[0]]||(n&&!a[2]?a[2]=n:n&&(a[2]="("+a[2]+") and ("+n+")"),t.push(a))}},t}},function(t,e,n){"use strict";var r,i=n(14),o=n(21),a=n(17),s=n(24);r=t.exports=function(t,e){var n,r,a,u,c;return arguments.length<2||"string"!=typeof t?(u=e,e=t,t=null):u=arguments[2],null==t?(n=a=!0,r=!1):(n=s.call(t,"c"),r=s.call(t,"e"),a=s.call(t,"w")),c={value:e,configurable:n,enumerable:r,writable:a},u?i(o(u),c):c},r.gs=function(t,e,n){var r,u,c,l;return"string"!=typeof t?(c=n,n=e,e=t,t=null):c=arguments[3],null==e?e=void 0:a(e)?null==n?n=void 0:a(n)||(c=n,n=void 0):(c=e,e=n=void 0),null==t?(r=!0,u=!1):(r=s.call(t,"c"),u=s.call(t,"e")),l={get:e,set:n,configurable:r,enumerable:u},c?i(o(c),l):l}},function(t,e,n){"use strict";t.exports=n(15)()?Object.assign:n(16)},function(t,e){"use strict";t.exports=function(){var t,e=Object.assign;return"function"==typeof e&&(t={foo:"raz"},e(t,{bar:"dwa"},{trzy:"trzy"}),t.foo+t.bar+t.trzy==="razdwatrzy")}},function(t,e,n){"use strict";var r=n(18),i=n(23),o=Math.max;t.exports=function(t,e){var n,a,s,u=o(arguments.length,2);for(t=Object(i(t)),s=function(r){try{t[r]=e[r]}catch(i){n||(n=i)}},a=1;a<u;++a)e=arguments[a],r(e).forEach(s);if(void 0!==n)throw n;return t}},function(t,e){"use strict";t.exports=function(t){return"function"==typeof t}},function(t,e,n){"use strict";t.exports=n(19)()?Object.keys:n(20)},function(t,e){"use strict";t.exports=function(){try{return Object.keys("primitive"),!0}catch(t){return!1}}},function(t,e){"use strict";var n=Object.keys;t.exports=function(t){return n(null==t?t:Object(t))}},function(t,e){"use strict";var n=Array.prototype.forEach,r=Object.create,i=function(t,e){var n;for(n in t)e[n]=t[n]};t.exports=function(t){var e=r(null);return n.call(arguments,function(t){null!=t&&i(Object(t),e)}),e}},function(t,e){"use strict";t.exports=function(t){if("function"!=typeof t)throw new TypeError(t+" is not a function");return t}},function(t,e){"use strict";t.exports=function(t){if(null==t)throw new TypeError("Cannot use null or undefined");return t}},function(t,e,n){"use strict";t.exports=n(25)()?String.prototype.contains:n(26)},function(t,e){"use strict";var n="razdwatrzy";t.exports=function(){return"function"==typeof n.contains&&(n.contains("dwa")===!0&&n.contains("foo")===!1)}},function(t,e){"use strict";var n=String.prototype.indexOf;t.exports=function(t){return n.call(this,t,arguments[1])>-1}},function(t,e,n){"use strict";var r,i,o,a,s,u,c,l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol?"symbol":typeof t},f=n(13),h=n(22),d=Function.prototype.apply,p=Function.prototype.call,v=Object.create,g=Object.defineProperty,m=Object.defineProperties,y=Object.prototype.hasOwnProperty,b={configurable:!0,enumerable:!1,writable:!0};r=function(t,e){var n;return h(e),y.call(this,"__ee__")?n=this.__ee__:(n=b.value=v(null),g(this,"__ee__",b),b.value=null),n[t]?"object"===l(n[t])?n[t].push(e):n[t]=[n[t],e]:n[t]=e,this},i=function(t,e){var n,i;return h(e),i=this,r.call(this,t,n=function(){o.call(i,t,n),d.call(e,this,arguments)}),n.__eeOnceListener__=e,this},o=function(t,e){var n,r,i,o;if(h(e),!y.call(this,"__ee__"))return this;if(n=this.__ee__,!n[t])return this;if(r=n[t],"object"===("undefined"==typeof r?"undefined":l(r)))for(o=0;i=r[o];++o)i!==e&&i.__eeOnceListener__!==e||(2===r.length?n[t]=r[o?0:1]:r.splice(o,1));else r!==e&&r.__eeOnceListener__!==e||delete n[t];return this},a=function(t){var e,n,r,i,o;if(y.call(this,"__ee__")&&(i=this.__ee__[t]))if("object"===("undefined"==typeof i?"undefined":l(i))){for(n=arguments.length,o=new Array(n-1),e=1;e<n;++e)o[e-1]=arguments[e];for(i=i.slice(),e=0;r=i[e];++e)d.call(r,this,o)}else switch(arguments.length){case 1:p.call(i,this);break;case 2:p.call(i,this,arguments[1]);break;case 3:p.call(i,this,arguments[1],arguments[2]);break;default:for(n=arguments.length,o=new Array(n-1),e=1;e<n;++e)o[e-1]=arguments[e];d.call(i,this,o)}},s={on:r,once:i,off:o,emit:a},u={on:f(r),once:f(i),off:f(o),emit:f(a)},c=m({},u),t.exports=e=function(t){return null==t?v(c):m(Object(t),u)},e.methods=s},function(t,e){/*!
* vue-resource v0.9.1
* https://github.com/vuejs/vue-resource
* Released under the MIT License.
*/
-"use strict";function n(t){this.state=nt,this.value=void 0,this.deferred=[];var e=this;try{t(function(t){e.resolve(t)},function(t){e.reject(t)})}catch(n){e.reject(n)}}function r(t,e){t instanceof it?this.promise=t:this.promise=new it(t.bind(e)),this.context=e}function i(t){st=t.util,at=t.config.debug||!t.config.silent}function o(t){"undefined"!=typeof console&&at&&console.warn("[VueResource warn]: "+t)}function a(t){"undefined"!=typeof console&&console.error(t)}function s(t,e){return st.nextTick(t,e)}function u(t){return t.replace(/^\s*|\s*$/g,"")}function c(t){return"string"==typeof t}function l(t){return t===!0||t===!1}function f(t){return"function"==typeof t}function h(t){return null!==t&&"object"===("undefined"==typeof t?"undefined":K(t))}function d(t){return h(t)&&Object.getPrototypeOf(t)==Object.prototype}function p(t){return"undefined"!=typeof FormData&&t instanceof FormData}function v(t,e,n){var i=r.resolve(t);return arguments.length<2?i:i.then(e,n)}function g(t,e,n){return n=n||{},f(n)&&(n=n.call(e)),y(t.bind({$vm:e,$options:n}),t,{$options:n})}function m(t,e){var n,r;if("number"==typeof t.length)for(n=0;n<t.length;n++)e.call(t[n],t[n],n);else if(h(t))for(r in t)t.hasOwnProperty(r)&&e.call(t[r],t[r],r);return t}function y(t){var e=ut.slice.call(arguments,1);return e.forEach(function(e){w(t,e,!0)}),t}function b(t){var e=ut.slice.call(arguments,1);return e.forEach(function(e){for(var n in e)void 0===t[n]&&(t[n]=e[n])}),t}function x(t){var e=ut.slice.call(arguments,1);return e.forEach(function(e){w(t,e)}),t}function w(t,e,n){for(var r in e)n&&(d(e[r])||ct(e[r]))?(d(e[r])&&!d(t[r])&&(t[r]={}),ct(e[r])&&!ct(t[r])&&(t[r]=[]),w(t[r],e[r],n)):void 0!==e[r]&&(t[r]=e[r])}function _(t,e){var n=e(t);return c(t.root)&&!n.match(/^(https?:)?\//)&&(n=t.root+"/"+n),n}function C(t,e){var n=Object.keys(N.options.params),r={},i=e(t);return m(t.params,function(t,e){n.indexOf(e)===-1&&(r[e]=t)}),r=N.params(r),r&&(i+=(i.indexOf("?")==-1?"?":"&")+r),i}function k(t,e,n){var r=T(t),i=r.expand(e);return n&&n.push.apply(n,r.vars),i}function T(t){var e=["+","#",".","/",";","?","&"],n=[];return{vars:n,expand:function(r){return t.replace(/\{([^\{\}]+)\}|([^\{\}]+)/g,function(t,i,o){if(i){var a=null,s=[];if(e.indexOf(i.charAt(0))!==-1&&(a=i.charAt(0),i=i.substr(1)),i.split(/,/g).forEach(function(t){var e=/([^:\*]*)(?::(\d+)|(\*))?/.exec(t);s.push.apply(s,A(r,a,e[1],e[2]||e[3])),n.push(e[1])}),a&&"+"!==a){var u=",";return"?"===a?u="&":"#"!==a&&(u=a),(0!==s.length?a:"")+s.join(u)}return s.join(",")}return j(o)})}}}function A(t,e,n,r){var i=t[n],o=[];if(S(i)&&""!==i)if("string"==typeof i||"number"==typeof i||"boolean"==typeof i)i=i.toString(),r&&"*"!==r&&(i=i.substring(0,parseInt(r,10))),o.push(E(e,i,$(e)?n:null));else if("*"===r)Array.isArray(i)?i.filter(S).forEach(function(t){o.push(E(e,t,$(e)?n:null))}):Object.keys(i).forEach(function(t){S(i[t])&&o.push(E(e,i[t],t))});else{var a=[];Array.isArray(i)?i.filter(S).forEach(function(t){a.push(E(e,t))}):Object.keys(i).forEach(function(t){S(i[t])&&(a.push(encodeURIComponent(t)),a.push(E(e,i[t].toString())))}),$(e)?o.push(encodeURIComponent(n)+"="+a.join(",")):0!==a.length&&o.push(a.join(","))}else";"===e?o.push(encodeURIComponent(n)):""!==i||"&"!==e&&"?"!==e?""===i&&o.push(""):o.push(encodeURIComponent(n)+"=");return o}function S(t){return void 0!==t&&null!==t}function $(t){return";"===t||"&"===t||"?"===t}function E(t,e,n){return e="+"===t||"#"===t?j(e):encodeURIComponent(e),n?encodeURIComponent(n)+"="+e:e}function j(t){return t.split(/(%[0-9A-Fa-f]{2})/g).map(function(t){return/%[0-9A-Fa-f]/.test(t)||(t=encodeURI(t)),t}).join("")}function O(t){var e=[],n=k(t.url,t.params,e);return e.forEach(function(e){delete t.params[e]}),n}function N(t,e){var n,r=this||{},i=t;return c(t)&&(i={url:t,params:e}),i=y({},N.options,r.$options,i),N.transforms.forEach(function(t){n=D(t,n,r.$vm)}),n(i)}function D(t,e,n){return function(r){return t.call(n,r,e)}}function M(t,e,n){var r,i=ct(e),o=d(e);m(e,function(e,a){r=h(e)||ct(e),n&&(a=n+"["+(o||r?a:"")+"]"),!n&&i?t.add(e.name,e.value):r?M(t,e,a):t.add(a,e)})}function P(t){return new r(function(e){var n=new XDomainRequest,r=function(r){var i=t.respondWith(n.responseText,{status:n.status,statusText:n.statusText});e(i)};t.abort=function(){return n.abort()},n.open(t.method,t.getUrl(),!0),n.timeout=0,n.onload=r,n.onerror=r,n.ontimeout=function(){},n.onprogress=function(){},n.send(t.getBody())})}function F(t,e){!l(t.crossOrigin)&&B(t)&&(t.crossOrigin=!0),t.crossOrigin&&(pt||(t.client=P),delete t.emulateHTTP),e()}function B(t){var e=N.parse(N(t));return e.protocol!==dt.protocol||e.host!==dt.host}function L(t,e){t.emulateJSON&&d(t.body)&&(t.body=N.params(t.body),t.headers["Content-Type"]="application/x-www-form-urlencoded"),p(t.body)&&delete t.headers["Content-Type"],d(t.body)&&(t.body=JSON.stringify(t.body)),e(function(t){var e=t.headers["Content-Type"];if(c(e)&&0===e.indexOf("application/json"))try{t.data=t.json()}catch(n){t.data=null}else t.data=t.text()})}function R(t){return new r(function(e){var n,r,i=t.jsonp||"callback",o="_jsonp"+Math.random().toString(36).substr(2),a=null;n=function(n){var i=0;"load"===n.type&&null!==a?i=200:"error"===n.type&&(i=404),e(t.respondWith(a,{status:i})),delete window[o],document.body.removeChild(r)},t.params[i]=o,window[o]=function(t){a=JSON.stringify(t)},r=document.createElement("script"),r.src=t.getUrl(),r.type="text/javascript",r.async=!0,r.onload=n,r.onerror=n,document.body.appendChild(r)})}function I(t,e){"JSONP"==t.method&&(t.client=R),e(function(e){"JSONP"==t.method&&(e.data=e.json())})}function H(t,e){f(t.before)&&t.before.call(this,t),e()}function q(t,e){t.emulateHTTP&&/^(PUT|PATCH|DELETE)$/i.test(t.method)&&(t.headers["X-HTTP-Method-Override"]=t.method,t.method="POST"),e()}function z(t,e){t.method=t.method.toUpperCase(),t.headers=lt({},Z.headers.common,t.crossOrigin?{}:Z.headers.custom,Z.headers[t.method.toLowerCase()],t.headers),e()}function V(t,e){var n;t.timeout&&(n=setTimeout(function(){t.cancel()},t.timeout)),e(function(t){clearTimeout(n)})}function U(t){return new r(function(e){var n=new XMLHttpRequest,r=function(r){var i=t.respondWith("response"in n?n.response:n.responseText,{status:1223===n.status?204:n.status,statusText:1223===n.status?"No Content":u(n.statusText),headers:W(n.getAllResponseHeaders())});e(i)};t.abort=function(){return n.abort()},n.open(t.method,t.getUrl(),!0),n.timeout=0,n.onload=r,n.onerror=r,t.progress&&("GET"===t.method?n.addEventListener("progress",t.progress):/^(POST|PUT)$/i.test(t.method)&&n.upload.addEventListener("progress",t.progress)),t.credentials===!0&&(n.withCredentials=!0),m(t.headers||{},function(t,e){n.setRequestHeader(e,t)}),n.send(t.getBody())})}function W(t){var e,n,r,i={};return m(u(t).split("\n"),function(t){r=t.indexOf(":"),n=u(t.slice(0,r)),e=u(t.slice(r+1)),i[n]?ct(i[n])?i[n].push(e):i[n]=[i[n],e]:i[n]=e}),i}function X(t){function e(e){return new r(function(r){function s(){n=i.pop(),f(n)?n.call(t,e,u):(o("Invalid interceptor of type "+("undefined"==typeof n?"undefined":K(n))+", must be a function"),u())}function u(e){v(e,function(e){if(f(e))a.unshift(e);else if(h(e))return a.forEach(function(n){n.call(t,e)}),void r(e);s()})}s()},t)}var n,i=[G],a=[];return h(t)||(t=null),e.use=function(t){i.push(t)},e}function G(t,e){var n=t.client||U;e(n(t))}function Z(t){var e=this||{},n=X(e.$vm);return b(t||{},e.$options,Z.options),Z.interceptors.forEach(function(t){n.use(t)}),n(new mt(t)).then(function(t){return t.ok?t:r.reject(t)},function(t){return t instanceof Error&&a(t),r.reject(t)})}function J(t,e,n,r){var i=this||{},o={};return n=lt({},J.actions,n),m(n,function(n,a){n=y({url:t,params:e||{}},r,n),o[a]=function(){return(i.$http||Z)(Y(n,arguments))}}),o}function Y(t,e){var n,r=lt({},t),i={};switch(e.length){case 2:i=e[0],n=e[1];break;case 1:/^(POST|PUT|PATCH)$/i.test(r.method)?n=e[0]:i=e[0];break;case 0:break;default:throw"Expected up to 4 arguments [params, body], got "+e.length+" arguments"}return r.body=n,r.params=lt({},r.params,i),r}function Q(t){Q.installed||(i(t),t.url=N,t.http=Z,t.resource=J,t.Promise=r,Object.defineProperties(t.prototype,{$url:{get:function(){return g(t.url,this,this.$options.url)}},$http:{get:function(){return g(t.http,this,this.$options.http)}},$resource:{get:function(){return t.resource.bind(this)}},$promise:{get:function(){var e=this;return function(n){return new t.Promise(n,e)}}}}))}var K="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol?"symbol":typeof t},tt=0,et=1,nt=2;n.reject=function(t){return new n(function(e,n){n(t)})},n.resolve=function(t){return new n(function(e,n){e(t)})},n.all=function(t){return new n(function(e,r){function i(n){return function(r){a[n]=r,o+=1,o===t.length&&e(a)}}var o=0,a=[];0===t.length&&e(a);for(var s=0;s<t.length;s+=1)n.resolve(t[s]).then(i(s),r)})},n.race=function(t){return new n(function(e,r){for(var i=0;i<t.length;i+=1)n.resolve(t[i]).then(e,r)})};var rt=n.prototype;rt.resolve=function(t){var e=this;if(e.state===nt){if(t===e)throw new TypeError("Promise settled with itself.");var n=!1;try{var r=t&&t.then;if(null!==t&&"object"===("undefined"==typeof t?"undefined":K(t))&&"function"==typeof r)return void r.call(t,function(t){n||e.resolve(t),n=!0},function(t){n||e.reject(t),n=!0})}catch(i){return void(n||e.reject(i))}e.state=tt,e.value=t,e.notify()}},rt.reject=function(t){var e=this;if(e.state===nt){if(t===e)throw new TypeError("Promise settled with itself.");e.state=et,e.value=t,e.notify()}},rt.notify=function(){var t=this;s(function(){if(t.state!==nt)for(;t.deferred.length;){var e=t.deferred.shift(),n=e[0],r=e[1],i=e[2],o=e[3];try{t.state===tt?i("function"==typeof n?n.call(void 0,t.value):t.value):t.state===et&&("function"==typeof r?i(r.call(void 0,t.value)):o(t.value))}catch(a){o(a)}}})},rt.then=function(t,e){var r=this;return new n(function(n,i){r.deferred.push([t,e,n,i]),r.notify()})},rt["catch"]=function(t){return this.then(void 0,t)};var it=window.Promise||n;r.all=function(t,e){return new r(it.all(t),e)},r.resolve=function(t,e){return new r(it.resolve(t),e)},r.reject=function(t,e){return new r(it.reject(t),e)},r.race=function(t,e){return new r(it.race(t),e)};var ot=r.prototype;ot.bind=function(t){return this.context=t,this},ot.then=function(t,e){return t&&t.bind&&this.context&&(t=t.bind(this.context)),e&&e.bind&&this.context&&(e=e.bind(this.context)),new r(this.promise.then(t,e),this.context)},ot["catch"]=function(t){return t&&t.bind&&this.context&&(t=t.bind(this.context)),new r(this.promise["catch"](t),this.context)},ot["finally"]=function(t){return this.then(function(e){return t.call(this),e},function(e){return t.call(this),it.reject(e)})};var at=!1,st={},ut=[],ct=Array.isArray,lt=Object.assign||x,ft=document.documentMode,ht=document.createElement("a");N.options={url:"",root:null,params:{}},N.transforms=[O,C,_],N.params=function(t){var e=[],n=encodeURIComponent;return e.add=function(t,e){f(e)&&(e=e()),null===e&&(e=""),this.push(n(t)+"="+n(e))},M(e,t),e.join("&").replace(/%20/g,"+")},N.parse=function(t){return ft&&(ht.href=t,t=ht.href),ht.href=t,{href:ht.href,protocol:ht.protocol?ht.protocol.replace(/:$/,""):"",port:ht.port,host:ht.host,hostname:ht.hostname,pathname:"/"===ht.pathname.charAt(0)?ht.pathname:"/"+ht.pathname,search:ht.search?ht.search.replace(/^\?/,""):"",hash:ht.hash?ht.hash.replace(/^#/,""):""}};var dt=N.parse(location.href),pt="withCredentials"in new XMLHttpRequest,vt=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},gt=function(){function t(e,n){var r=n.url,i=n.headers,o=n.status,a=n.statusText;vt(this,t),this.url=r,this.body=e,this.headers=i||{},this.status=o||0,this.statusText=a||"",this.ok=o>=200&&o<300}return t.prototype.text=function(){return this.body},t.prototype.blob=function(){return new Blob([this.body])},t.prototype.json=function(){return JSON.parse(this.body)},t}(),mt=function(){function t(e){vt(this,t),this.method="GET",this.body=null,this.params={},this.headers={},lt(this,e)}return t.prototype.getUrl=function(){return N(this)},t.prototype.getBody=function(){return this.body},t.prototype.respondWith=function(t,e){return new gt(t,lt(e||{},{url:this.getUrl()}))},t}(),yt={"X-Requested-With":"XMLHttpRequest"},bt={Accept:"application/json, text/plain, */*"},xt={"Content-Type":"application/json;charset=utf-8"};Z.options={},Z.headers={put:xt,post:xt,patch:xt,"delete":xt,custom:yt,common:bt},Z.interceptors=[H,V,q,L,I,z,F],["get","delete","head","jsonp"].forEach(function(t){Z[t]=function(e,n){return this(lt(n||{},{url:e,method:t}))}}),["post","put","patch"].forEach(function(t){Z[t]=function(e,n,r){return this(lt(r||{},{url:e,method:t,body:n}))}}),J.actions={get:{method:"GET"},save:{method:"POST"},query:{method:"GET"},update:{method:"PUT"},remove:{method:"DELETE"},"delete":{method:"DELETE"}},"undefined"!=typeof window&&window.Vue&&window.Vue.use(Q),t.exports=Q},function(t,e,n){"use strict";function r(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}var i=n(30),o={data:function(){return{items:[],query:"",current:-1,loading:!1,queryParamName:"q"}},computed:{hasItems:function(){return this.items.length>0},isEmpty:function(){return!this.query},isDirty:function(){return!!this.query}},methods:{update:function(){var t=this;return this.query?void(this.minChars&&this.query.length<this.minChars||(this.loading=!0,this.fetch().then(function(e){if(t.query){var n=e.data;n=t.prepareResponseData?t.prepareResponseData(n):n,t.items=t.limit?n.slice(0,t.limit):n,t.current=-1,t.loading=!1}}))):this.reset()},fetch:function(){if(!this.$http)return i.util.warn("You need to install the `vue-resource` plugin",this);if(!this.src)return i.util.warn("You need to set the `src` property",this);var t=r({},this.queryParamName,this.query);return this.$http.get(this.src,Object.assign(t,this.data))},reset:function(){this.items=[],this.query="",this.loading=!1},setActive:function(t){this.current=t},activeClass:function(t){return{active:this.current==t}},hit:function(){this.current!==-1&&this.onHit(this.items[this.current])},up:function(){this.current>0?this.current--:this.current==-1?this.current=this.items.length-1:this.current=-1},down:function(){this.current<this.items.length-1?this.current++:this.current=-1},onHit:function(){i.util.warn("You need to implement the `onHit` method",this)}}};t.exports=o},function(t,e,n){(function(e){/*!
+"use strict";function n(t){this.state=nt,this.value=void 0,this.deferred=[];var e=this;try{t(function(t){e.resolve(t)},function(t){e.reject(t)})}catch(n){e.reject(n)}}function r(t,e){t instanceof it?this.promise=t:this.promise=new it(t.bind(e)),this.context=e}function i(t){st=t.util,at=t.config.debug||!t.config.silent}function o(t){"undefined"!=typeof console&&at&&console.warn("[VueResource warn]: "+t)}function a(t){"undefined"!=typeof console&&console.error(t)}function s(t,e){return st.nextTick(t,e)}function u(t){return t.replace(/^\s*|\s*$/g,"")}function c(t){return"string"==typeof t}function l(t){return t===!0||t===!1}function f(t){return"function"==typeof t}function h(t){return null!==t&&"object"===("undefined"==typeof t?"undefined":K(t))}function d(t){return h(t)&&Object.getPrototypeOf(t)==Object.prototype}function p(t){return"undefined"!=typeof FormData&&t instanceof FormData}function v(t,e,n){var i=r.resolve(t);return arguments.length<2?i:i.then(e,n)}function g(t,e,n){return n=n||{},f(n)&&(n=n.call(e)),y(t.bind({$vm:e,$options:n}),t,{$options:n})}function m(t,e){var n,r;if("number"==typeof t.length)for(n=0;n<t.length;n++)e.call(t[n],t[n],n);else if(h(t))for(r in t)t.hasOwnProperty(r)&&e.call(t[r],t[r],r);return t}function y(t){var e=ut.slice.call(arguments,1);return e.forEach(function(e){w(t,e,!0)}),t}function b(t){var e=ut.slice.call(arguments,1);return e.forEach(function(e){for(var n in e)void 0===t[n]&&(t[n]=e[n])}),t}function x(t){var e=ut.slice.call(arguments,1);return e.forEach(function(e){w(t,e)}),t}function w(t,e,n){for(var r in e)n&&(d(e[r])||ct(e[r]))?(d(e[r])&&!d(t[r])&&(t[r]={}),ct(e[r])&&!ct(t[r])&&(t[r]=[]),w(t[r],e[r],n)):void 0!==e[r]&&(t[r]=e[r])}function _(t,e){var n=e(t);return c(t.root)&&!n.match(/^(https?:)?\//)&&(n=t.root+"/"+n),n}function C(t,e){var n=Object.keys(N.options.params),r={},i=e(t);return m(t.params,function(t,e){n.indexOf(e)===-1&&(r[e]=t)}),r=N.params(r),r&&(i+=(i.indexOf("?")==-1?"?":"&")+r),i}function k(t,e,n){var r=T(t),i=r.expand(e);return n&&n.push.apply(n,r.vars),i}function T(t){var e=["+","#",".","/",";","?","&"],n=[];return{vars:n,expand:function(r){return t.replace(/\{([^\{\}]+)\}|([^\{\}]+)/g,function(t,i,o){if(i){var a=null,s=[];if(e.indexOf(i.charAt(0))!==-1&&(a=i.charAt(0),i=i.substr(1)),i.split(/,/g).forEach(function(t){var e=/([^:\*]*)(?::(\d+)|(\*))?/.exec(t);s.push.apply(s,A(r,a,e[1],e[2]||e[3])),n.push(e[1])}),a&&"+"!==a){var u=",";return"?"===a?u="&":"#"!==a&&(u=a),(0!==s.length?a:"")+s.join(u)}return s.join(",")}return j(o)})}}}function A(t,e,n,r){var i=t[n],o=[];if(S(i)&&""!==i)if("string"==typeof i||"number"==typeof i||"boolean"==typeof i)i=i.toString(),r&&"*"!==r&&(i=i.substring(0,parseInt(r,10))),o.push(E(e,i,$(e)?n:null));else if("*"===r)Array.isArray(i)?i.filter(S).forEach(function(t){o.push(E(e,t,$(e)?n:null))}):Object.keys(i).forEach(function(t){S(i[t])&&o.push(E(e,i[t],t))});else{var a=[];Array.isArray(i)?i.filter(S).forEach(function(t){a.push(E(e,t))}):Object.keys(i).forEach(function(t){S(i[t])&&(a.push(encodeURIComponent(t)),a.push(E(e,i[t].toString())))}),$(e)?o.push(encodeURIComponent(n)+"="+a.join(",")):0!==a.length&&o.push(a.join(","))}else";"===e?o.push(encodeURIComponent(n)):""!==i||"&"!==e&&"?"!==e?""===i&&o.push(""):o.push(encodeURIComponent(n)+"=");return o}function S(t){return void 0!==t&&null!==t}function $(t){return";"===t||"&"===t||"?"===t}function E(t,e,n){return e="+"===t||"#"===t?j(e):encodeURIComponent(e),n?encodeURIComponent(n)+"="+e:e}function j(t){return t.split(/(%[0-9A-Fa-f]{2})/g).map(function(t){return/%[0-9A-Fa-f]/.test(t)||(t=encodeURI(t)),t}).join("")}function O(t){var e=[],n=k(t.url,t.params,e);return e.forEach(function(e){delete t.params[e]}),n}function N(t,e){var n,r=this||{},i=t;return c(t)&&(i={url:t,params:e}),i=y({},N.options,r.$options,i),N.transforms.forEach(function(t){n=D(t,n,r.$vm)}),n(i)}function D(t,e,n){return function(r){return t.call(n,r,e)}}function M(t,e,n){var r,i=ct(e),o=d(e);m(e,function(e,a){r=h(e)||ct(e),n&&(a=n+"["+(o||r?a:"")+"]"),!n&&i?t.add(e.name,e.value):r?M(t,e,a):t.add(a,e)})}function P(t){return new r(function(e){var n=new XDomainRequest,r=function(r){var i=t.respondWith(n.responseText,{status:n.status,statusText:n.statusText});e(i)};t.abort=function(){return n.abort()},n.open(t.method,t.getUrl(),!0),n.timeout=0,n.onload=r,n.onerror=r,n.ontimeout=function(){},n.onprogress=function(){},n.send(t.getBody())})}function F(t,e){!l(t.crossOrigin)&&B(t)&&(t.crossOrigin=!0),t.crossOrigin&&(pt||(t.client=P),delete t.emulateHTTP),e()}function B(t){var e=N.parse(N(t));return e.protocol!==dt.protocol||e.host!==dt.host}function L(t,e){t.emulateJSON&&d(t.body)&&(t.body=N.params(t.body),t.headers["Content-Type"]="application/x-www-form-urlencoded"),p(t.body)&&delete t.headers["Content-Type"],d(t.body)&&(t.body=JSON.stringify(t.body)),e(function(t){var e=t.headers["Content-Type"];if(c(e)&&0===e.indexOf("application/json"))try{t.data=t.json()}catch(n){t.data=null}else t.data=t.text()})}function R(t){return new r(function(e){var n,r,i=t.jsonp||"callback",o="_jsonp"+Math.random().toString(36).substr(2),a=null;n=function(n){var i=0;"load"===n.type&&null!==a?i=200:"error"===n.type&&(i=404),e(t.respondWith(a,{status:i})),delete window[o],document.body.removeChild(r)},t.params[i]=o,window[o]=function(t){a=JSON.stringify(t)},r=document.createElement("script"),r.src=t.getUrl(),r.type="text/javascript",r.async=!0,r.onload=n,r.onerror=n,document.body.appendChild(r)})}function I(t,e){"JSONP"==t.method&&(t.client=R),e(function(e){"JSONP"==t.method&&(e.data=e.json())})}function q(t,e){f(t.before)&&t.before.call(this,t),e()}function H(t,e){t.emulateHTTP&&/^(PUT|PATCH|DELETE)$/i.test(t.method)&&(t.headers["X-HTTP-Method-Override"]=t.method,t.method="POST"),e()}function z(t,e){t.method=t.method.toUpperCase(),t.headers=lt({},Z.headers.common,t.crossOrigin?{}:Z.headers.custom,Z.headers[t.method.toLowerCase()],t.headers),e()}function V(t,e){var n;t.timeout&&(n=setTimeout(function(){t.cancel()},t.timeout)),e(function(t){clearTimeout(n)})}function U(t){return new r(function(e){var n=new XMLHttpRequest,r=function(r){var i=t.respondWith("response"in n?n.response:n.responseText,{status:1223===n.status?204:n.status,statusText:1223===n.status?"No Content":u(n.statusText),headers:W(n.getAllResponseHeaders())});e(i)};t.abort=function(){return n.abort()},n.open(t.method,t.getUrl(),!0),n.timeout=0,n.onload=r,n.onerror=r,t.progress&&("GET"===t.method?n.addEventListener("progress",t.progress):/^(POST|PUT)$/i.test(t.method)&&n.upload.addEventListener("progress",t.progress)),t.credentials===!0&&(n.withCredentials=!0),m(t.headers||{},function(t,e){n.setRequestHeader(e,t)}),n.send(t.getBody())})}function W(t){var e,n,r,i={};return m(u(t).split("\n"),function(t){r=t.indexOf(":"),n=u(t.slice(0,r)),e=u(t.slice(r+1)),i[n]?ct(i[n])?i[n].push(e):i[n]=[i[n],e]:i[n]=e}),i}function X(t){function e(e){return new r(function(r){function s(){n=i.pop(),f(n)?n.call(t,e,u):(o("Invalid interceptor of type "+("undefined"==typeof n?"undefined":K(n))+", must be a function"),u())}function u(e){v(e,function(e){if(f(e))a.unshift(e);else if(h(e))return a.forEach(function(n){n.call(t,e)}),void r(e);s()})}s()},t)}var n,i=[G],a=[];return h(t)||(t=null),e.use=function(t){i.push(t)},e}function G(t,e){var n=t.client||U;e(n(t))}function Z(t){var e=this||{},n=X(e.$vm);return b(t||{},e.$options,Z.options),Z.interceptors.forEach(function(t){n.use(t)}),n(new mt(t)).then(function(t){return t.ok?t:r.reject(t)},function(t){return t instanceof Error&&a(t),r.reject(t)})}function J(t,e,n,r){var i=this||{},o={};return n=lt({},J.actions,n),m(n,function(n,a){n=y({url:t,params:e||{}},r,n),o[a]=function(){return(i.$http||Z)(Y(n,arguments))}}),o}function Y(t,e){var n,r=lt({},t),i={};switch(e.length){case 2:i=e[0],n=e[1];break;case 1:/^(POST|PUT|PATCH)$/i.test(r.method)?n=e[0]:i=e[0];break;case 0:break;default:throw"Expected up to 4 arguments [params, body], got "+e.length+" arguments"}return r.body=n,r.params=lt({},r.params,i),r}function Q(t){Q.installed||(i(t),t.url=N,t.http=Z,t.resource=J,t.Promise=r,Object.defineProperties(t.prototype,{$url:{get:function(){return g(t.url,this,this.$options.url)}},$http:{get:function(){return g(t.http,this,this.$options.http)}},$resource:{get:function(){return t.resource.bind(this)}},$promise:{get:function(){var e=this;return function(n){return new t.Promise(n,e)}}}}))}var K="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol?"symbol":typeof t},tt=0,et=1,nt=2;n.reject=function(t){return new n(function(e,n){n(t)})},n.resolve=function(t){return new n(function(e,n){e(t)})},n.all=function(t){return new n(function(e,r){function i(n){return function(r){a[n]=r,o+=1,o===t.length&&e(a)}}var o=0,a=[];0===t.length&&e(a);for(var s=0;s<t.length;s+=1)n.resolve(t[s]).then(i(s),r)})},n.race=function(t){return new n(function(e,r){for(var i=0;i<t.length;i+=1)n.resolve(t[i]).then(e,r)})};var rt=n.prototype;rt.resolve=function(t){var e=this;if(e.state===nt){if(t===e)throw new TypeError("Promise settled with itself.");var n=!1;try{var r=t&&t.then;if(null!==t&&"object"===("undefined"==typeof t?"undefined":K(t))&&"function"==typeof r)return void r.call(t,function(t){n||e.resolve(t),n=!0},function(t){n||e.reject(t),n=!0})}catch(i){return void(n||e.reject(i))}e.state=tt,e.value=t,e.notify()}},rt.reject=function(t){var e=this;if(e.state===nt){if(t===e)throw new TypeError("Promise settled with itself.");e.state=et,e.value=t,e.notify()}},rt.notify=function(){var t=this;s(function(){if(t.state!==nt)for(;t.deferred.length;){var e=t.deferred.shift(),n=e[0],r=e[1],i=e[2],o=e[3];try{t.state===tt?i("function"==typeof n?n.call(void 0,t.value):t.value):t.state===et&&("function"==typeof r?i(r.call(void 0,t.value)):o(t.value))}catch(a){o(a)}}})},rt.then=function(t,e){var r=this;return new n(function(n,i){r.deferred.push([t,e,n,i]),r.notify()})},rt["catch"]=function(t){return this.then(void 0,t)};var it=window.Promise||n;r.all=function(t,e){return new r(it.all(t),e)},r.resolve=function(t,e){return new r(it.resolve(t),e)},r.reject=function(t,e){return new r(it.reject(t),e)},r.race=function(t,e){return new r(it.race(t),e)};var ot=r.prototype;ot.bind=function(t){return this.context=t,this},ot.then=function(t,e){return t&&t.bind&&this.context&&(t=t.bind(this.context)),e&&e.bind&&this.context&&(e=e.bind(this.context)),new r(this.promise.then(t,e),this.context)},ot["catch"]=function(t){return t&&t.bind&&this.context&&(t=t.bind(this.context)),new r(this.promise["catch"](t),this.context)},ot["finally"]=function(t){return this.then(function(e){return t.call(this),e},function(e){return t.call(this),it.reject(e)})};var at=!1,st={},ut=[],ct=Array.isArray,lt=Object.assign||x,ft=document.documentMode,ht=document.createElement("a");N.options={url:"",root:null,params:{}},N.transforms=[O,C,_],N.params=function(t){var e=[],n=encodeURIComponent;return e.add=function(t,e){f(e)&&(e=e()),null===e&&(e=""),this.push(n(t)+"="+n(e))},M(e,t),e.join("&").replace(/%20/g,"+")},N.parse=function(t){return ft&&(ht.href=t,t=ht.href),ht.href=t,{href:ht.href,protocol:ht.protocol?ht.protocol.replace(/:$/,""):"",port:ht.port,host:ht.host,hostname:ht.hostname,pathname:"/"===ht.pathname.charAt(0)?ht.pathname:"/"+ht.pathname,search:ht.search?ht.search.replace(/^\?/,""):"",hash:ht.hash?ht.hash.replace(/^#/,""):""}};var dt=N.parse(location.href),pt="withCredentials"in new XMLHttpRequest,vt=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},gt=function(){function t(e,n){var r=n.url,i=n.headers,o=n.status,a=n.statusText;vt(this,t),this.url=r,this.body=e,this.headers=i||{},this.status=o||0,this.statusText=a||"",this.ok=o>=200&&o<300}return t.prototype.text=function(){return this.body},t.prototype.blob=function(){return new Blob([this.body])},t.prototype.json=function(){return JSON.parse(this.body)},t}(),mt=function(){function t(e){vt(this,t),this.method="GET",this.body=null,this.params={},this.headers={},lt(this,e)}return t.prototype.getUrl=function(){return N(this)},t.prototype.getBody=function(){return this.body},t.prototype.respondWith=function(t,e){return new gt(t,lt(e||{},{url:this.getUrl()}))},t}(),yt={"X-Requested-With":"XMLHttpRequest"},bt={Accept:"application/json, text/plain, */*"},xt={"Content-Type":"application/json;charset=utf-8"};Z.options={},Z.headers={put:xt,post:xt,patch:xt,"delete":xt,custom:yt,common:bt},Z.interceptors=[q,V,H,L,I,z,F],["get","delete","head","jsonp"].forEach(function(t){Z[t]=function(e,n){return this(lt(n||{},{url:e,method:t}))}}),["post","put","patch"].forEach(function(t){Z[t]=function(e,n,r){return this(lt(r||{},{url:e,method:t,body:n}))}}),J.actions={get:{method:"GET"},save:{method:"POST"},query:{method:"GET"},update:{method:"PUT"},remove:{method:"DELETE"},"delete":{method:"DELETE"}},"undefined"!=typeof window&&window.Vue&&window.Vue.use(Q),t.exports=Q},function(t,e,n){"use strict";function r(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}var i=n(30),o={data:function(){return{items:[],query:"",current:-1,loading:!1,queryParamName:"q"}},computed:{hasItems:function(){return this.items.length>0},isEmpty:function(){return!this.query},isDirty:function(){return!!this.query}},methods:{update:function(){var t=this;return this.query?void(this.minChars&&this.query.length<this.minChars||(this.loading=!0,this.fetch().then(function(e){if(t.query){var n=e.data;n=t.prepareResponseData?t.prepareResponseData(n):n,t.items=t.limit?n.slice(0,t.limit):n,t.current=-1,t.loading=!1}}))):this.reset()},fetch:function(){if(!this.$http)return i.util.warn("You need to install the `vue-resource` plugin",this);if(!this.src)return i.util.warn("You need to set the `src` property",this);var t=r({},this.queryParamName,this.query);return this.$http.get(this.src,Object.assign(t,this.data))},reset:function(){this.items=[],this.query="",this.loading=!1},setActive:function(t){this.current=t},activeClass:function(t){return{active:this.current==t}},hit:function(){this.current!==-1&&this.onHit(this.items[this.current])},up:function(){this.current>0?this.current--:this.current==-1?this.current=this.items.length-1:this.current=-1},down:function(){this.current<this.items.length-1?this.current++:this.current=-1},onHit:function(){i.util.warn("You need to implement the `onHit` method",this)}}};t.exports=o},function(t,e,n){(function(e){/*!
* Vue.js v1.0.25
* (c) 2016 Evan You
* Released under the MIT License.
*/
-"use strict";function n(t,e,r){if(i(t,e))return void(t[e]=r);if(t._isVue)return void n(t._data,e,r);var o=t.__ob__;if(!o)return void(t[e]=r);if(o.convert(e,r),o.dep.notify(),o.vms)for(var a=o.vms.length;a--;){var s=o.vms[a];s._proxy(e),s._digest()}return r}function r(t,e){if(i(t,e)){delete t[e];var n=t.__ob__;if(!n)return void(t._isVue&&(delete t._data[e],t._digest()));if(n.dep.notify(),n.vms)for(var r=n.vms.length;r--;){var o=n.vms[r];o._unproxy(e),o._digest()}}}function i(t,e){return On.call(t,e)}function o(t){return Nn.test(t)}function a(t){var e=(t+"").charCodeAt(0);return 36===e||95===e}function s(t){return null==t?"":t.toString()}function u(t){if("string"!=typeof t)return t;var e=Number(t);return isNaN(e)?t:e}function c(t){return"true"===t||"false"!==t&&t}function l(t){var e=t.charCodeAt(0),n=t.charCodeAt(t.length-1);return e!==n||34!==e&&39!==e?t:t.slice(1,-1)}function f(t){return t.replace(Dn,h)}function h(t,e){return e?e.toUpperCase():""}function d(t){return t.replace(Mn,"$1-$2").toLowerCase()}function p(t){return t.replace(Pn,h)}function v(t,e){return function(n){var r=arguments.length;return r?r>1?t.apply(e,arguments):t.call(e,n):t.call(e)}}function g(t,e){e=e||0;for(var n=t.length-e,r=new Array(n);n--;)r[n]=t[n+e];return r}function m(t,e){for(var n=Object.keys(e),r=n.length;r--;)t[n[r]]=e[n[r]];return t}function y(t){return null!==t&&"object"===("undefined"==typeof t?"undefined":jn(t))}function b(t){return Fn.call(t)===Bn}function x(t,e,n,r){Object.defineProperty(t,e,{value:n,enumerable:!!r,writable:!0,configurable:!0})}function w(t,e){var n,r,i,o,a,s=function u(){var s=Date.now()-o;s<e&&s>=0?n=setTimeout(u,e-s):(n=null,a=t.apply(i,r),n||(i=r=null))};return function(){return i=this,r=arguments,o=Date.now(),n||(n=setTimeout(s,e)),a}}function _(t,e){for(var n=t.length;n--;)if(t[n]===e)return n;return-1}function C(t){var e=function n(){if(!n.cancelled)return t.apply(this,arguments)};return e.cancel=function(){e.cancelled=!0},e}function k(t,e){return t==e||!(!y(t)||!y(e))&&JSON.stringify(t)===JSON.stringify(e)}function T(t){this.size=0,this.limit=t,this.head=this.tail=void 0,this._keymap=Object.create(null)}function A(){var t,e=or.slice(fr,cr).trim();if(e){t={};var n=e.match(yr);t.name=n[0],n.length>1&&(t.args=n.slice(1).map(S))}t&&(ar.filters=ar.filters||[]).push(t),fr=cr+1}function S(t){if(br.test(t))return{value:u(t),dynamic:!1};var e=l(t),n=e===t;return{value:n?t:e,dynamic:n}}function $(t){var e=mr.get(t);if(e)return e;for(or=t,hr=dr=!1,pr=vr=gr=0,fr=0,ar={},cr=0,lr=or.length;cr<lr;cr++)if(ur=sr,sr=or.charCodeAt(cr),hr)39===sr&&92!==ur&&(hr=!hr);else if(dr)34===sr&&92!==ur&&(dr=!dr);else if(124===sr&&124!==or.charCodeAt(cr+1)&&124!==or.charCodeAt(cr-1))null==ar.expression?(fr=cr+1,ar.expression=or.slice(0,cr).trim()):A();else switch(sr){case 34:dr=!0;break;case 39:hr=!0;break;case 40:gr++;break;case 41:gr--;break;case 91:vr++;break;case 93:vr--;break;case 123:pr++;break;case 125:pr--}return null==ar.expression?ar.expression=or.slice(0,cr).trim():0!==fr&&A(),mr.put(t,ar),ar}function E(t){return t.replace(wr,"\\$&")}function j(){var t=E(Er.delimiters[0]),e=E(Er.delimiters[1]),n=E(Er.unsafeDelimiters[0]),r=E(Er.unsafeDelimiters[1]);Cr=new RegExp(n+"((?:.|\\n)+?)"+r+"|"+t+"((?:.|\\n)+?)"+e,"g"),kr=new RegExp("^"+n+"((?:.|\\n)+?)"+r+"$"),_r=new T(1e3)}function O(t){_r||j();var e=_r.get(t);if(e)return e;if(!Cr.test(t))return null;for(var n,r,i,o,a,s,u=[],c=Cr.lastIndex=0;n=Cr.exec(t);)r=n.index,r>c&&u.push({value:t.slice(c,r)}),i=kr.test(n[0]),o=i?n[1]:n[2],a=o.charCodeAt(0),s=42===a,o=s?o.slice(1):o,u.push({tag:!0,value:o.trim(),html:i,oneTime:s}),c=r+n[0].length;return c<t.length&&u.push({value:t.slice(c)}),_r.put(t,u),u}function N(t,e){return t.length>1?t.map(function(t){return D(t,e)}).join("+"):D(t[0],e,!0)}function D(t,e,n){return t.tag?t.oneTime&&e?'"'+e.$eval(t.value)+'"':M(t.value,n):'"'+t.value+'"'}function M(t,e){if(Tr.test(t)){var n=$(t);return n.filters?"this._applyFilters("+n.expression+",null,"+JSON.stringify(n.filters)+",false)":"("+t+")"}return e?t:"("+t+")"}function P(t,e,n,r){L(t,1,function(){e.appendChild(t)},n,r)}function F(t,e,n,r){L(t,1,function(){V(t,e)},n,r)}function B(t,e,n){L(t,-1,function(){W(t)},e,n)}function L(t,e,n,r,i){var o=t.__v_trans;if(!o||!o.hooks&&!Yn||!r._isCompiled||r.$parent&&!r.$parent._isCompiled)return n(),void(i&&i());var a=e>0?"enter":"leave";o[a](n,i)}function R(t){if("string"==typeof t){t=document.querySelector(t)}return t}function I(t){if(!t)return!1;var e=t.ownerDocument.documentElement,n=t.parentNode;return e===t||e===n||!(!n||1!==n.nodeType||!e.contains(n))}function H(t,e){var n=t.getAttribute(e);return null!==n&&t.removeAttribute(e),n}function q(t,e){var n=H(t,":"+e);return null===n&&(n=H(t,"v-bind:"+e)),n}function z(t,e){return t.hasAttribute(e)||t.hasAttribute(":"+e)||t.hasAttribute("v-bind:"+e)}function V(t,e){e.parentNode.insertBefore(t,e)}function U(t,e){e.nextSibling?V(t,e.nextSibling):e.parentNode.appendChild(t)}function W(t){t.parentNode.removeChild(t)}function X(t,e){e.firstChild?V(t,e.firstChild):e.appendChild(t)}function G(t,e){var n=t.parentNode;n&&n.replaceChild(e,t)}function Z(t,e,n,r){t.addEventListener(e,n,r)}function J(t,e,n){t.removeEventListener(e,n)}function Y(t){var e=t.className;return"object"===("undefined"==typeof e?"undefined":jn(e))&&(e=e.baseVal||""),e}function Q(t,e){Vn&&!/svg$/.test(t.namespaceURI)?t.className=e:t.setAttribute("class",e)}function K(t,e){if(t.classList)t.classList.add(e);else{var n=" "+Y(t)+" ";n.indexOf(" "+e+" ")<0&&Q(t,(n+e).trim())}}function tt(t,e){if(t.classList)t.classList.remove(e);else{for(var n=" "+Y(t)+" ",r=" "+e+" ";n.indexOf(r)>=0;)n=n.replace(r," ");Q(t,n.trim())}t.className||t.removeAttribute("class")}function et(t,e){var n,r;if(it(t)&&ct(t.content)&&(t=t.content),t.hasChildNodes())for(nt(t),r=e?document.createDocumentFragment():document.createElement("div");n=t.firstChild;)r.appendChild(n);return r}function nt(t){for(var e;e=t.firstChild,rt(e);)t.removeChild(e);for(;e=t.lastChild,rt(e);)t.removeChild(e)}function rt(t){return t&&(3===t.nodeType&&!t.data.trim()||8===t.nodeType)}function it(t){return t.tagName&&"template"===t.tagName.toLowerCase()}function ot(t,e){var n=Er.debug?document.createComment(t):document.createTextNode(e?" ":"");return n.__v_anchor=!0,n}function at(t){if(t.hasAttributes())for(var e=t.attributes,n=0,r=e.length;n<r;n++){var i=e[n].name;if(Nr.test(i))return f(i.replace(Nr,""))}}function st(t,e,n){for(var r;t!==e;)r=t.nextSibling,n(t),t=r;n(e)}function ut(t,e,n,r,i){function o(){if(s++,a&&s>=u.length){for(var t=0;t<u.length;t++)r.appendChild(u[t]);i&&i()}}var a=!1,s=0,u=[];st(t,e,function(t){t===e&&(a=!0),u.push(t),B(t,n,o)})}function ct(t){return t&&11===t.nodeType}function lt(t){if(t.outerHTML)return t.outerHTML;var e=document.createElement("div");return e.appendChild(t.cloneNode(!0)),e.innerHTML}function ft(t,e){var n=t.tagName.toLowerCase(),r=t.hasAttributes();if(Dr.test(n)||Mr.test(n)){if(r)return ht(t,e)}else{if(bt(e,"components",n))return{id:n};var i=r&&ht(t,e);if(i)return i}}function ht(t,e){var n=t.getAttribute("is");if(null!=n){if(bt(e,"components",n))return t.removeAttribute("is"),{id:n}}else if(n=q(t,"is"),null!=n)return{id:n,dynamic:!0}}function dt(t,e){var r,o,a;for(r in e)o=t[r],a=e[r],i(t,r)?y(o)&&y(a)&&dt(o,a):n(t,r,a);return t}function pt(t,e){var n=Object.create(t||null);return e?m(n,mt(e)):n}function vt(t){if(t.components)for(var e,n=t.components=mt(t.components),r=Object.keys(n),i=0,o=r.length;i<o;i++){var a=r[i];Dr.test(a)||Mr.test(a)||(e=n[a],b(e)&&(n[a]=kn.extend(e)))}}function gt(t){var e,n,r=t.props;if(Ln(r))for(t.props={},e=r.length;e--;)n=r[e],"string"==typeof n?t.props[n]=null:n.name&&(t.props[n.name]=n);else if(b(r)){var i=Object.keys(r);for(e=i.length;e--;)n=r[i[e]],"function"==typeof n&&(r[i[e]]={type:n})}}function mt(t){if(Ln(t)){for(var e,n={},r=t.length;r--;){e=t[r];var i="function"==typeof e?e.options&&e.options.name||e.id:e.name||e.id;i&&(n[i]=e)}return n}return t}function yt(t,e,n){function r(r){var i=Pr[r]||Fr;a[r]=i(t[r],e[r],n,r)}vt(e),gt(e);var o,a={};if(e["extends"]&&(t="function"==typeof e["extends"]?yt(t,e["extends"].options,n):yt(t,e["extends"],n)),e.mixins)for(var s=0,u=e.mixins.length;s<u;s++){var c=e.mixins[s],l=c.prototype instanceof kn?c.options:c;t=yt(t,l,n)}for(o in t)r(o);for(o in e)i(t,o)||r(o);return a}function bt(t,e,n,r){if("string"==typeof n){var i,o=t[e],a=o[n]||o[i=f(n)]||o[i.charAt(0).toUpperCase()+i.slice(1)];return a}}function xt(){this.id=Br++,this.subs=[]}function wt(t){Hr=!1,t(),Hr=!0}function _t(t){if(this.value=t,this.dep=new xt,x(t,"__ob__",this),Ln(t)){var e=Rn?Ct:kt;e(t,Rr,Ir),this.observeArray(t)}else this.walk(t)}function Ct(t,e){t.__proto__=e}function kt(t,e,n){for(var r=0,i=n.length;r<i;r++){var o=n[r];x(t,o,e[o])}}function Tt(t,e){if(t&&"object"===("undefined"==typeof t?"undefined":jn(t))){var n;return i(t,"__ob__")&&t.__ob__ instanceof _t?n=t.__ob__:Hr&&(Ln(t)||b(t))&&Object.isExtensible(t)&&!t._isVue&&(n=new _t(t)),n&&e&&n.addVm(e),n}}function At(t,e,n){var r=new xt,i=Object.getOwnPropertyDescriptor(t,e);if(!i||i.configurable!==!1){var o=i&&i.get,a=i&&i.set,s=Tt(n);Object.defineProperty(t,e,{enumerable:!0,configurable:!0,get:function(){var e=o?o.call(t):n;if(xt.target&&(r.depend(),s&&s.dep.depend(),Ln(e)))for(var i,a=0,u=e.length;a<u;a++)i=e[a],i&&i.__ob__&&i.__ob__.dep.depend();return e},set:function(e){var i=o?o.call(t):n;e!==i&&(a?a.call(t,e):n=e,s=Tt(e),r.notify())}})}}function St(t){t.prototype._init=function(t){t=t||{},this.$el=null,this.$parent=t.parent,this.$root=this.$parent?this.$parent.$root:this,this.$children=[],this.$refs={},this.$els={},this._watchers=[],this._directives=[],this._uid=zr++,this._isVue=!0,this._events={},this._eventsCount={},this._isFragment=!1,this._fragment=this._fragmentStart=this._fragmentEnd=null,this._isCompiled=this._isDestroyed=this._isReady=this._isAttached=this._isBeingDestroyed=this._vForRemoving=!1,this._unlinkFn=null,this._context=t._context||this.$parent,this._scope=t._scope,this._frag=t._frag,this._frag&&this._frag.children.push(this),this.$parent&&this.$parent.$children.push(this),t=this.$options=yt(this.constructor.options,t,this),this._updateRef(),this._data={},this._callHook("init"),this._initState(),this._initEvents(),this._callHook("created"),t.el&&this.$mount(t.el)}}function $t(t){if(void 0===t)return"eof";var e=t.charCodeAt(0);switch(e){case 91:case 93:case 46:case 34:case 39:case 48:return t;case 95:case 36:return"ident";case 32:case 9:case 10:case 13:case 160:case 65279:case 8232:case 8233:return"ws"}return e>=97&&e<=122||e>=65&&e<=90?"ident":e>=49&&e<=57?"number":"else"}function Et(t){var e=t.trim();return("0"!==t.charAt(0)||!isNaN(t))&&(o(e)?l(e):"*"+e)}function jt(t){function e(){var e=t[l+1];if(f===ti&&"'"===e||f===ei&&'"'===e)return l++,r="\\"+e,d[Ur](),!0}var n,r,i,o,a,s,u,c=[],l=-1,f=Zr,h=0,d=[];for(d[Wr]=function(){void 0!==i&&(c.push(i),i=void 0)},d[Ur]=function(){void 0===i?i=r:i+=r},d[Xr]=function(){d[Ur](),h++},d[Gr]=function(){if(h>0)h--,f=Kr,d[Ur]();else{if(h=0,i=Et(i),i===!1)return!1;d[Wr]()}};null!=f;)if(l++,n=t[l],"\\"!==n||!e()){if(o=$t(n),u=ii[f],a=u[o]||u["else"]||ri,a===ri)return;if(f=a[0],s=d[a[1]],s&&(r=a[2],r=void 0===r?n:r,s()===!1))return;if(f===ni)return c.raw=t,c}}function Ot(t){var e=Vr.get(t);return e||(e=jt(t),e&&Vr.put(t,e)),e}function Nt(t,e){return Ht(e).get(t)}function Dt(t,e,r){var i=t;if("string"==typeof e&&(e=jt(e)),!e||!y(t))return!1;for(var o,a,s=0,u=e.length;s<u;s++)o=t,a=e[s],"*"===a.charAt(0)&&(a=Ht(a.slice(1)).get.call(i,i)),s<u-1?(t=t[a],y(t)||(t={},n(o,a,t))):Ln(t)?t.$set(a,r):a in t?t[a]=r:n(t,a,r);return!0}function Mt(){}function Pt(t,e){var n=yi.length;return yi[n]=e?t.replace(hi,"\\n"):t,'"'+n+'"'}function Ft(t){var e=t.charAt(0),n=t.slice(1);return ui.test(n)?t:(n=n.indexOf('"')>-1?n.replace(pi,Bt):n,e+"scope."+n)}function Bt(t,e){return yi[e]}function Lt(t){li.test(t),yi.length=0;var e=t.replace(di,Pt).replace(fi,"");return e=(" "+e).replace(gi,Ft).replace(pi,Bt),Rt(e)}function Rt(t){try{return new Function("scope","return "+t+";")}catch(e){return Mt}}function It(t){var e=Ot(t);if(e)return function(t,n){Dt(t,e,n)}}function Ht(t,e){t=t.trim();var n=ai.get(t);if(n)return e&&!n.set&&(n.set=It(n.exp)),n;var r={exp:t};return r.get=qt(t)&&t.indexOf("[")<0?Rt("scope."+t):Lt(t),e&&(r.set=It(t)),ai.put(t,r),r}function qt(t){return vi.test(t)&&!mi.test(t)&&"Math."!==t.slice(0,5)}function zt(){xi.length=0,wi.length=0,_i={},Ci={},ki=!1}function Vt(){for(var t=!0;t;)t=!1,Ut(xi),Ut(wi),xi.length?t=!0:(Hn&&Er.devtools&&Hn.emit("flush"),zt())}function Ut(t){for(var e=0;e<t.length;e++){var n=t[e],r=n.id;_i[r]=null,n.run()}t.length=0}function Wt(t){var e=t.id;if(null==_i[e]){var n=t.user?wi:xi;_i[e]=n.length,n.push(t),ki||(ki=!0,nr(Vt))}}function Xt(t,e,n,r){r&&m(this,r);var i="function"==typeof e;if(this.vm=t,t._watchers.push(this),this.expression=e,this.cb=n,this.id=++Ti,this.active=!0,this.dirty=this.lazy,this.deps=[],this.newDeps=[],this.depIds=new rr,this.newDepIds=new rr,this.prevError=null,i)this.getter=e,this.setter=void 0;else{var o=Ht(e,this.twoWay);this.getter=o.get,this.setter=o.set}this.value=this.lazy?void 0:this.get(),this.queued=this.shallow=!1}function Gt(t,e){var n=void 0,r=void 0;e||(e=Ai,e.clear());var i=Ln(t),o=y(t);if(i||o){if(t.__ob__){var a=t.__ob__.dep.id;if(e.has(a))return;e.add(a)}if(i)for(n=t.length;n--;)Gt(t[n],e);else if(o)for(r=Object.keys(t),n=r.length;n--;)Gt(t[r[n]],e)}}function Zt(t){return it(t)&&ct(t.content)}function Jt(t,e){var n=e?t:t.trim(),r=$i.get(n);if(r)return r;var i=document.createDocumentFragment(),o=t.match(Oi),a=Ni.test(t),s=Di.test(t);if(o||a||s){var u=o&&o[1],c=ji[u]||ji.efault,l=c[0],f=c[1],h=c[2],d=document.createElement("div");for(d.innerHTML=f+t+h;l--;)d=d.lastChild;for(var p;p=d.firstChild;)i.appendChild(p)}else i.appendChild(document.createTextNode(t));return e||nt(i),$i.put(n,i),i}function Yt(t){if(Zt(t))return Jt(t.innerHTML);if("SCRIPT"===t.tagName)return Jt(t.textContent);for(var e,n=Qt(t),r=document.createDocumentFragment();e=n.firstChild;)r.appendChild(e);return nt(r),r}function Qt(t){if(!t.querySelectorAll)return t.cloneNode();var e,n,r,i=t.cloneNode(!0);if(Mi){var o=i;if(Zt(t)&&(t=t.content,o=i.content),n=t.querySelectorAll("template"),n.length)for(r=o.querySelectorAll("template"),e=r.length;e--;)r[e].parentNode.replaceChild(Qt(n[e]),r[e])}if(Pi)if("TEXTAREA"===t.tagName)i.value=t.value;else if(n=t.querySelectorAll("textarea"),n.length)for(r=i.querySelectorAll("textarea"),e=r.length;e--;)r[e].value=n[e].value;return i}function Kt(t,e,n){var r,i;return ct(t)?(nt(t),e?Qt(t):t):("string"==typeof t?n||"#"!==t.charAt(0)?i=Jt(t,n):(i=Ei.get(t),i||(r=document.getElementById(t.slice(1)),r&&(i=Yt(r),Ei.put(t,i)))):t.nodeType&&(i=Yt(t)),i&&e?Qt(i):i)}function te(t,e,n,r,i,o){this.children=[],this.childFrags=[],this.vm=e,this.scope=i,this.inserted=!1,this.parentFrag=o,o&&o.childFrags.push(this),this.unlink=t(e,n,r,i,this);var a=this.single=1===n.childNodes.length&&!n.childNodes[0].__v_anchor;a?(this.node=n.childNodes[0],this.before=ee,this.remove=ne):(this.node=ot("fragment-start"),this.end=ot("fragment-end"),this.frag=n,X(this.node,n),n.appendChild(this.end),this.before=re,this.remove=ie),this.node.__v_frag=this}function ee(t,e){this.inserted=!0;var n=e!==!1?F:V;n(this.node,t,this.vm),I(this.node)&&this.callHook(oe)}function ne(){this.inserted=!1;var t=I(this.node),e=this;this.beforeRemove(),B(this.node,this.vm,function(){t&&e.callHook(ae),e.destroy()})}function re(t,e){this.inserted=!0;var n=this.vm,r=e!==!1?F:V;st(this.node,this.end,function(e){r(e,t,n)}),I(this.node)&&this.callHook(oe)}function ie(){this.inserted=!1;var t=this,e=I(this.node);this.beforeRemove(),ut(this.node,this.end,this.vm,this.frag,function(){e&&t.callHook(ae),t.destroy()})}function oe(t){!t._isAttached&&I(t.$el)&&t._callHook("attached")}function ae(t){t._isAttached&&!I(t.$el)&&t._callHook("detached")}function se(t,e){this.vm=t;var n,r="string"==typeof e;r||it(e)&&!e.hasAttribute("v-if")?n=Kt(e,!0):(n=document.createDocumentFragment(),n.appendChild(e)),this.template=n;var i,o=t.constructor.cid;if(o>0){var a=o+(r?e:lt(e));i=Li.get(a),i||(i=Fe(n,t.$options,!0),Li.put(a,i))}else i=Fe(n,t.$options,!0);this.linker=i}function ue(t,e,n){var r=t.node.previousSibling;if(r){for(t=r.__v_frag;!(t&&t.forId===n&&t.inserted||r===e);){if(r=r.previousSibling,!r)return;t=r.__v_frag}return t}}function ce(t){var e=t.node;if(t.end)for(;!e.__vue__&&e!==t.end&&e.nextSibling;)e=e.nextSibling;return e.__vue__}function le(t){for(var e=-1,n=new Array(Math.floor(t));++e<t;)n[e]=e;return n}function fe(t,e,n,r){return r?"$index"===r?t:r.charAt(0).match(/\w/)?Nt(n,r):n[r]:e||n}function he(t,e,n){for(var r,i,o,a=e?[]:null,s=0,u=t.options.length;s<u;s++)if(r=t.options[s],o=n?r.hasAttribute("selected"):r.selected){if(i=r.hasOwnProperty("_value")?r._value:r.value,!e)return i;a.push(i)}return a}function de(t,e){for(var n=t.length;n--;)if(k(t[n],e))return n;return-1}function pe(t,e){var n=e.map(function(t){var e=t.charCodeAt(0);return e>47&&e<58?parseInt(t,10):1===t.length&&(e=t.toUpperCase().charCodeAt(0),e>64&&e<91)?e:oo[t]});return n=[].concat.apply([],n),function(e){if(n.indexOf(e.keyCode)>-1)return t.call(this,e)}}function ve(t){return function(e){return e.stopPropagation(),t.call(this,e)}}function ge(t){return function(e){return e.preventDefault(),t.call(this,e)}}function me(t){return function(e){if(e.target===e.currentTarget)return t.call(this,e)}}function ye(t){if(lo[t])return lo[t];var e=be(t);return lo[t]=lo[e]=e,e}function be(t){t=d(t);var e=f(t),n=e.charAt(0).toUpperCase()+e.slice(1);fo||(fo=document.createElement("div"));var r,i=so.length;if("filter"!==e&&e in fo.style)return{kebab:t,camel:e};for(;i--;)if(r=uo[i]+n,r in fo.style)return{kebab:so[i]+t,camel:r}}function xe(t){var e=[];if(Ln(t))for(var n=0,r=t.length;n<r;n++){var i=t[n];if(i)if("string"==typeof i)e.push(i);else for(var o in i)i[o]&&e.push(o)}else if(y(t))for(var a in t)t[a]&&e.push(a);return e}function we(t,e,n){if(e=e.trim(),e.indexOf(" ")===-1)return void n(t,e);for(var r=e.split(/\s+/),i=0,o=r.length;i<o;i++)n(t,r[i])}function _e(t,e,n){function r(){++o>=i?n():t[o].call(e,r)}var i=t.length,o=0;t[0].call(e,r)}function Ce(t,e,n){for(var r,i,a,s,u,c,l,h=[],p=Object.keys(e),v=p.length;v--;)if(i=p[v],r=e[i]||$o,u=f(i),Eo.test(u)){if(l={name:i,path:u,options:r,mode:So.ONE_WAY,raw:null},a=d(i),null===(s=q(t,a))&&(null!==(s=q(t,a+".sync"))?l.mode=So.TWO_WAY:null!==(s=q(t,a+".once"))&&(l.mode=So.ONE_TIME)),null!==s)l.raw=s,c=$(s),s=c.expression,l.filters=c.filters,o(s)&&!c.filters?l.optimizedLiteral=!0:l.dynamic=!0,l.parentPath=s;else if(null!==(s=H(t,a)))l.raw=s;else;h.push(l)}return ke(h)}function ke(t){return function(e,n){e._props={};for(var r,o,a,s,f,h=e.$options.propsData,p=t.length;p--;)if(r=t[p],f=r.raw,o=r.path,a=r.options,e._props[o]=r,h&&i(h,o)&&Ae(e,r,h[o]),null===f)Ae(e,r,void 0);else if(r.dynamic)r.mode===So.ONE_TIME?(s=(n||e._context||e).$get(r.parentPath),Ae(e,r,s)):e._context?e._bindDir({name:"prop",def:Oo,prop:r},null,null,n):Ae(e,r,e.$get(r.parentPath));else if(r.optimizedLiteral){var v=l(f);s=v===f?c(u(f)):v,Ae(e,r,s)}else s=a.type===Boolean&&(""===f||f===d(r.name))||f,Ae(e,r,s)}}function Te(t,e,n,r){var i=e.dynamic&&qt(e.parentPath),o=n;void 0===o&&(o=$e(t,e)),o=je(e,o,t);var a=o!==n;Ee(e,o,t)||(o=void 0),i&&!a?wt(function(){r(o)}):r(o)}function Ae(t,e,n){Te(t,e,n,function(n){At(t,e.path,n)})}function Se(t,e,n){Te(t,e,n,function(n){t[e.path]=n})}function $e(t,e){var n=e.options;if(!i(n,"default"))return n.type!==Boolean&&void 0;var r=n["default"];return y(r),"function"==typeof r&&n.type!==Function?r.call(t):r}function Ee(t,e,n){if(!t.options.required&&(null===t.raw||null==e))return!0;var r=t.options,i=r.type,o=!i,a=[];if(i){Ln(i)||(i=[i]);for(var s=0;s<i.length&&!o;s++){var u=Oe(e,i[s]);a.push(u.expectedType),o=u.valid}}if(!o)return!1;var c=r.validator;return!(c&&!c(e))}function je(t,e,n){var r=t.options.coerce;return r&&"function"==typeof r?r(e):e}function Oe(t,e){var n,r;return e===String?(r="string",n=("undefined"==typeof t?"undefined":jn(t))===r):e===Number?(r="number",n=("undefined"==typeof t?"undefined":jn(t))===r):e===Boolean?(r="boolean",n=("undefined"==typeof t?"undefined":jn(t))===r):e===Function?(r="function",n=("undefined"==typeof t?"undefined":jn(t))===r):e===Object?(r="object",n=b(t)):e===Array?(r="array",n=Ln(t)):n=t instanceof e,{valid:n,expectedType:r}}function Ne(t){No.push(t),Do||(Do=!0,nr(De))}function De(){for(var t=document.documentElement.offsetHeight,e=0;e<No.length;e++)No[e]();return No=[],Do=!1,t}function Me(t,e,n,r){this.id=e,this.el=t,this.enterClass=n&&n.enterClass||e+"-enter",this.leaveClass=n&&n.leaveClass||e+"-leave",this.hooks=n,this.vm=r,this.pendingCssEvent=this.pendingCssCb=this.cancel=this.pendingJsCb=this.op=this.cb=null,this.justEntered=!1,this.entered=this.left=!1,this.typeCache={},this.type=n&&n.type;var i=this;["enterNextTick","enterDone","leaveNextTick","leaveDone"].forEach(function(t){i[t]=v(i[t],i)})}function Pe(t){if(/svg$/.test(t.namespaceURI)){var e=t.getBoundingClientRect();return!(e.width||e.height)}return!(t.offsetWidth||t.offsetHeight||t.getClientRects().length)}function Fe(t,e,n){var r=n||!e._asComponent?ze(t,e):null,i=r&&r.terminal||sn(t)||!t.hasChildNodes()?null:Ze(t.childNodes,e);return function(t,e,n,o,a){var s=g(e.childNodes),u=Be(function(){r&&r(t,e,n,o,a),i&&i(t,s,n,o,a)},t);return Re(t,u)}}function Be(t,e){e._directives=[];var n=e._directives.length;t();var r=e._directives.slice(n);r.sort(Le);for(var i=0,o=r.length;i<o;i++)r[i]._bind();return r}function Le(t,e){return t=t.descriptor.def.priority||Go,e=e.descriptor.def.priority||Go,t>e?-1:t===e?0:1}function Re(t,e,n,r){function i(i){Ie(t,e,i),n&&r&&Ie(n,r)}return i.dirs=e,i}function Ie(t,e,n){for(var r=e.length;r--;)e[r]._teardown()}function He(t,e,n,r){var i=Ce(e,n,t),o=Be(function(){i(t,r)},t);return Re(t,o)}function qe(t,e,n){var r,i,o=e._containerAttrs,a=e._replacerAttrs;if(11!==t.nodeType)e._asComponent?(o&&n&&(r=nn(o,n)),a&&(i=nn(a,e))):i=nn(t.attributes,e);else;return e._containerAttrs=e._replacerAttrs=null,function(t,e,n){var o,a=t._context;a&&r&&(o=Be(function(){r(a,e,null,n)},a));var s=Be(function(){i&&i(t,e)},t);return Re(t,s,a,o)}}function ze(t,e){var n=t.nodeType;return 1!==n||sn(t)?3===n&&t.data.trim()?Ue(t,e):null:Ve(t,e)}function Ve(t,e){if("TEXTAREA"===t.tagName){var n=O(t.value);n&&(t.setAttribute(":value",N(n)),t.value="")}var r,i=t.hasAttributes(),o=i&&g(t.attributes);return i&&(r=Ke(t,o,e)),r||(r=Ye(t,e)),r||(r=Qe(t,e)),!r&&i&&(r=nn(o,e)),r}function Ue(t,e){if(t._skip)return We;var n=O(t.wholeText);if(!n)return null;for(var r=t.nextSibling;r&&3===r.nodeType;)r._skip=!0,r=r.nextSibling;for(var i,o,a=document.createDocumentFragment(),s=0,u=n.length;s<u;s++)o=n[s],i=o.tag?Xe(o,e):document.createTextNode(o.value),a.appendChild(i);return Ge(n,a,e)}function We(t,e){W(e)}function Xe(t,e){function n(e){if(!t.descriptor){var n=$(t.value);t.descriptor={name:e,def:ko[e],expression:n.expression,filters:n.filters}}}var r;return t.oneTime?r=document.createTextNode(t.value):t.html?(r=document.createComment("v-html"),n("html")):(r=document.createTextNode(" "),n("text")),r}function Ge(t,e){return function(n,r,i,o){for(var a,u,c,l=e.cloneNode(!0),f=g(l.childNodes),h=0,d=t.length;h<d;h++)a=t[h],u=a.value,a.tag&&(c=f[h],a.oneTime?(u=(o||n).$eval(u),a.html?G(c,Kt(u,!0)):c.data=s(u)):n._bindDir(a.descriptor,c,i,o));G(r,l)}}function Ze(t,e){for(var n,r,i,o=[],a=0,s=t.length;a<s;a++)i=t[a],n=ze(i,e),r=n&&n.terminal||"SCRIPT"===i.tagName||!i.hasChildNodes()?null:Ze(i.childNodes,e),o.push(n,r);return o.length?Je(o):null}function Je(t){return function(e,n,r,i,o){for(var a,s,u,c=0,l=0,f=t.length;c<f;l++){a=n[l],s=t[c++],u=t[c++];var h=g(a.childNodes);s&&s(e,a,r,i,o),u&&u(e,h,r,i,o)}}}function Ye(t,e){var n=t.tagName.toLowerCase();if(!Dr.test(n)){var r=bt(e,"elementDirectives",n);return r?en(t,n,"",e,r):void 0}}function Qe(t,e){var n=ft(t,e);if(n){var r=at(t),i={name:"component",ref:r,expression:n.id,def:qo.component,modifiers:{literal:!n.dynamic}},o=function(t,e,n,o,a){r&&At((o||t).$refs,r,null),t._bindDir(i,e,n,o,a)};return o.terminal=!0,o}}function Ke(t,e,n){if(null!==H(t,"v-pre"))return tn;if(t.hasAttribute("v-else")){var r=t.previousElementSibling;if(r&&r.hasAttribute("v-if"))return tn}for(var i,o,a,s,u,c,l,f,h,d,p=0,v=e.length;p<v;p++)i=e[p],o=i.name.replace(Wo,""),(u=o.match(Uo))&&(h=bt(n,"directives",u[1]),h&&h.terminal&&(!d||(h.priority||Zo)>d.priority)&&(d=h,l=i.name,s=rn(i.name),a=i.value,c=u[1],f=u[2]));return d?en(t,c,a,n,d,l,f,s):void 0}function tn(){}function en(t,e,n,r,i,o,a,s){var u=$(n),c={name:e,arg:a,expression:u.expression,filters:u.filters,raw:n,attr:o,modifiers:s,def:i};"for"!==e&&"router-view"!==e||(c.ref=at(t));var l=function(t,e,n,r,i){c.ref&&At((r||t).$refs,c.ref,null),t._bindDir(c,e,n,r,i)};return l.terminal=!0,l}function nn(t,e){function n(t,e,n){var r=n&&an(n),i=!r&&$(o);v.push({name:t,attr:a,raw:s,def:e,arg:c,modifiers:l,expression:i&&i.expression,filters:i&&i.filters,interp:n,hasOneTime:r})}for(var r,i,o,a,s,u,c,l,f,h,d,p=t.length,v=[];p--;)if(r=t[p],i=a=r.name,o=s=r.value,h=O(o),c=null,l=rn(i),i=i.replace(Wo,""),h)o=N(h),c=i,n("bind",ko.bind,h);else if(Xo.test(i))l.literal=!zo.test(i),n("transition",qo.transition);else if(Vo.test(i))c=i.replace(Vo,""),n("on",ko.on);else if(zo.test(i))u=i.replace(zo,""),"style"===u||"class"===u?n(u,qo[u]):(c=u,n("bind",ko.bind));else if(d=i.match(Uo)){if(u=d[1],c=d[2],"else"===u)continue;f=bt(e,"directives",u,!0),f&&n(u,f)}if(v.length)return on(v)}function rn(t){var e=Object.create(null),n=t.match(Wo);if(n)for(var r=n.length;r--;)e[n[r].slice(1)]=!0;return e}function on(t){return function(e,n,r,i,o){for(var a=t.length;a--;)e._bindDir(t[a],n,r,i,o)}}function an(t){for(var e=t.length;e--;)if(t[e].oneTime)return!0}function sn(t){return"SCRIPT"===t.tagName&&(!t.hasAttribute("type")||"text/javascript"===t.getAttribute("type"))}function un(t,e){return e&&(e._containerAttrs=ln(t)),it(t)&&(t=Kt(t)),e&&(e._asComponent&&!e.template&&(e.template="<slot></slot>"),e.template&&(e._content=et(t),t=cn(t,e))),ct(t)&&(X(ot("v-start",!0),t),t.appendChild(ot("v-end",!0))),t}function cn(t,e){var n=e.template,r=Kt(n,!0);if(r){var i=r.firstChild,o=i.tagName&&i.tagName.toLowerCase();return e.replace?(t===document.body,r.childNodes.length>1||1!==i.nodeType||"component"===o||bt(e,"components",o)||z(i,"is")||bt(e,"elementDirectives",o)||i.hasAttribute("v-for")||i.hasAttribute("v-if")?r:(e._replacerAttrs=ln(i),fn(t,i),i)):(t.appendChild(r),t)}}function ln(t){if(1===t.nodeType&&t.hasAttributes())return g(t.attributes)}function fn(t,e){for(var n,r,i=t.attributes,o=i.length;o--;)n=i[o].name,r=i[o].value,e.hasAttribute(n)||Jo.test(n)?"class"===n&&!O(r)&&(r=r.trim())&&r.split(/\s+/).forEach(function(t){K(e,t)}):e.setAttribute(n,r)}function hn(t,e){if(e){for(var n,r,i=t._slotContents=Object.create(null),o=0,a=e.children.length;o<a;o++)n=e.children[o],(r=n.getAttribute("slot"))&&(i[r]||(i[r]=[])).push(n);for(r in i)i[r]=dn(i[r],e);if(e.hasChildNodes()){var s=e.childNodes;if(1===s.length&&3===s[0].nodeType&&!s[0].data.trim())return;i["default"]=dn(e.childNodes,e)}}}function dn(t,e){var n=document.createDocumentFragment();t=g(t);for(var r=0,i=t.length;r<i;r++){var o=t[r];!it(o)||o.hasAttribute("v-if")||o.hasAttribute("v-for")||(e.removeChild(o),o=Kt(o,!0)),n.appendChild(o)}return n}function pn(t){function e(){}function n(t,e){var n=new Xt(e,t,null,{lazy:!0});return function(){return n.dirty&&n.evaluate(),xt.target&&n.depend(),n.value}}Object.defineProperty(t.prototype,"$data",{get:function(){return this._data},set:function(t){t!==this._data&&this._setData(t)}}),t.prototype._initState=function(){this._initProps(),this._initMeta(),this._initMethods(),this._initData(),this._initComputed()},t.prototype._initProps=function(){var t=this.$options,e=t.el,n=t.props;e=t.el=R(e),this._propsUnlinkFn=e&&1===e.nodeType&&n?He(this,e,n,this._scope):null},t.prototype._initData=function(){var t=this.$options.data,e=this._data=t?t():{};b(e)||(e={});var n,r,o=this._props,a=Object.keys(e);for(n=a.length;n--;)r=a[n],o&&i(o,r)||this._proxy(r);Tt(e,this)},t.prototype._setData=function(t){t=t||{};var e=this._data;this._data=t;var n,r,o;for(n=Object.keys(e),o=n.length;o--;)r=n[o],r in t||this._unproxy(r);for(n=Object.keys(t),o=n.length;o--;)r=n[o],i(this,r)||this._proxy(r);e.__ob__.removeVm(this),Tt(t,this),this._digest()},t.prototype._proxy=function(t){if(!a(t)){var e=this;Object.defineProperty(e,t,{configurable:!0,enumerable:!0,get:function(){return e._data[t]},set:function(n){e._data[t]=n}})}},t.prototype._unproxy=function(t){a(t)||delete this[t]},t.prototype._digest=function(){for(var t=0,e=this._watchers.length;t<e;t++)this._watchers[t].update(!0)},t.prototype._initComputed=function(){var t=this.$options.computed;if(t)for(var r in t){var i=t[r],o={enumerable:!0,configurable:!0};"function"==typeof i?(o.get=n(i,this),o.set=e):(o.get=i.get?i.cache!==!1?n(i.get,this):v(i.get,this):e,o.set=i.set?v(i.set,this):e),Object.defineProperty(this,r,o)}},t.prototype._initMethods=function(){var t=this.$options.methods;if(t)for(var e in t)this[e]=v(t[e],this)},t.prototype._initMeta=function(){var t=this.$options._meta;if(t)for(var e in t)At(this,e,t[e])}}function vn(t){function e(t,e){for(var n,r,i,o=e.attributes,a=0,s=o.length;a<s;a++)n=o[a].name,Qo.test(n)&&(n=n.replace(Qo,""),r=o[a].value,qt(r)&&(r+=".apply(this, $arguments)"),i=(t._scope||t._context).$eval(r,!0),i._fromParent=!0,t.$on(n.replace(Qo),i))}function n(t,e,n){if(n){var i,o,a,s;for(o in n)if(i=n[o],Ln(i))for(a=0,s=i.length;a<s;a++)r(t,e,o,i[a]);else r(t,e,o,i)}}function r(t,e,n,i,o){var a="undefined"==typeof i?"undefined":jn(i);if("function"===a)t[e](n,i,o);else if("string"===a){var s=t.$options.methods,u=s&&s[i];u&&t[e](n,u,o)}else i&&"object"===a&&r(t,e,n,i.handler,i)}function i(){this._isAttached||(this._isAttached=!0,this.$children.forEach(o))}function o(t){!t._isAttached&&I(t.$el)&&t._callHook("attached")}function a(){this._isAttached&&(this._isAttached=!1,this.$children.forEach(s))}function s(t){t._isAttached&&!I(t.$el)&&t._callHook("detached")}t.prototype._initEvents=function(){var t=this.$options;t._asComponent&&e(this,t.el),n(this,"$on",t.events),n(this,"$watch",t.watch)},t.prototype._initDOMHooks=function(){this.$on("hook:attached",i),this.$on("hook:detached",a)},t.prototype._callHook=function(t){this.$emit("pre-hook:"+t);var e=this.$options[t];if(e)for(var n=0,r=e.length;n<r;n++)e[n].call(this);this.$emit("hook:"+t)}}function gn(){}function mn(t,e,n,r,i,o){this.vm=e,this.el=n,this.descriptor=t,this.name=t.name,this.expression=t.expression,this.arg=t.arg,this.modifiers=t.modifiers,this.filters=t.filters,this.literal=this.modifiers&&this.modifiers.literal,this._locked=!1,this._bound=!1,this._listeners=null,this._host=r,this._scope=i,this._frag=o}function yn(t){t.prototype._updateRef=function(t){var e=this.$options._ref;if(e){var n=(this._scope||this._context).$refs;t?n[e]===this&&(n[e]=null):n[e]=this}},t.prototype._compile=function(t){var e=this.$options,n=t;if(t=un(t,e),this._initElement(t),1!==t.nodeType||null===H(t,"v-pre")){var r=this._context&&this._context.$options,i=qe(t,e,r);hn(this,e._content);var o,a=this.constructor;e._linkerCachable&&(o=a.linker,o||(o=a.linker=Fe(t,e)));var s=i(this,t,this._scope),u=o?o(this,t):Fe(t,e)(this,t);this._unlinkFn=function(){s(),u(!0)},e.replace&&G(n,t),this._isCompiled=!0,this._callHook("compiled")}},t.prototype._initElement=function(t){ct(t)?(this._isFragment=!0,this.$el=this._fragmentStart=t.firstChild,this._fragmentEnd=t.lastChild,3===this._fragmentStart.nodeType&&(this._fragmentStart.data=this._fragmentEnd.data=""),this._fragment=t):this.$el=t,this.$el.__vue__=this,this._callHook("beforeCompile")},t.prototype._bindDir=function(t,e,n,r,i){this._directives.push(new mn(t,this,e,n,r,i))},t.prototype._destroy=function(t,e){if(this._isBeingDestroyed)return void(e||this._cleanup());var n,r,i=this,o=function(){
-!n||r||e||i._cleanup()};t&&this.$el&&(r=!0,this.$remove(function(){r=!1,o()})),this._callHook("beforeDestroy"),this._isBeingDestroyed=!0;var a,s=this.$parent;for(s&&!s._isBeingDestroyed&&(s.$children.$remove(this),this._updateRef(!0)),a=this.$children.length;a--;)this.$children[a].$destroy();for(this._propsUnlinkFn&&this._propsUnlinkFn(),this._unlinkFn&&this._unlinkFn(),a=this._watchers.length;a--;)this._watchers[a].teardown();this.$el&&(this.$el.__vue__=null),n=!0,o()},t.prototype._cleanup=function(){this._isDestroyed||(this._frag&&this._frag.children.$remove(this),this._data&&this._data.__ob__&&this._data.__ob__.removeVm(this),this.$el=this.$parent=this.$root=this.$children=this._watchers=this._context=this._scope=this._directives=null,this._isDestroyed=!0,this._callHook("destroyed"),this.$off())}}function bn(t){t.prototype._applyFilters=function(t,e,n,r){var i,o,a,s,u,c,l,f,h;for(c=0,l=n.length;c<l;c++)if(i=n[r?l-c-1:c],o=bt(this.$options,"filters",i.name,!0),o&&(o=r?o.write:o.read||o,"function"==typeof o)){if(a=r?[t,e]:[t],u=r?2:1,i.args)for(f=0,h=i.args.length;f<h;f++)s=i.args[f],a[f+u]=s.dynamic?this.$get(s.value):s.value;t=o.apply(this,a)}return t},t.prototype._resolveComponent=function(e,n){var r;if(r="function"==typeof e?e:bt(this.$options,"components",e,!0))if(r.options)n(r);else if(r.resolved)n(r.resolved);else if(r.requested)r.pendingCallbacks.push(n);else{r.requested=!0;var i=r.pendingCallbacks=[n];r.call(this,function(e){b(e)&&(e=t.extend(e)),r.resolved=e;for(var n=0,o=i.length;n<o;n++)i[n](e)},function(t){})}}}function xn(t){function e(t){return JSON.parse(JSON.stringify(t))}t.prototype.$get=function(t,e){var n=Ht(t);if(n){if(e){var r=this;return function(){r.$arguments=g(arguments);var t=n.get.call(r,r);return r.$arguments=null,t}}try{return n.get.call(this,this)}catch(i){}}},t.prototype.$set=function(t,e){var n=Ht(t,!0);n&&n.set&&n.set.call(this,this,e)},t.prototype.$delete=function(t){r(this._data,t)},t.prototype.$watch=function(t,e,n){var r,i=this;"string"==typeof t&&(r=$(t),t=r.expression);var o=new Xt(i,t,e,{deep:n&&n.deep,sync:n&&n.sync,filters:r&&r.filters,user:!n||n.user!==!1});return n&&n.immediate&&e.call(i,o.value),function(){o.teardown()}},t.prototype.$eval=function(t,e){if(Ko.test(t)){var n=$(t),r=this.$get(n.expression,e);return n.filters?this._applyFilters(r,null,n.filters):r}return this.$get(t,e)},t.prototype.$interpolate=function(t){var e=O(t),n=this;return e?1===e.length?n.$eval(e[0].value)+"":e.map(function(t){return t.tag?n.$eval(t.value):t.value}).join(""):t},t.prototype.$log=function(t){var n=t?Nt(this._data,t):this._data;if(n&&(n=e(n)),!t){var r;for(r in this.$options.computed)n[r]=e(this[r]);if(this._props)for(r in this._props)n[r]=e(this[r])}console.log(n)}}function wn(t){function e(t,e,r,i,o,a){e=n(e);var s=!I(e),u=i===!1||s?o:a,c=!s&&!t._isAttached&&!I(t.$el);return t._isFragment?(st(t._fragmentStart,t._fragmentEnd,function(n){u(n,e,t)}),r&&r()):u(t.$el,e,t,r),c&&t._callHook("attached"),t}function n(t){return"string"==typeof t?document.querySelector(t):t}function r(t,e,n,r){e.appendChild(t),r&&r()}function i(t,e,n,r){V(t,e),r&&r()}function o(t,e,n){W(t),n&&n()}t.prototype.$nextTick=function(t){nr(t,this)},t.prototype.$appendTo=function(t,n,i){return e(this,t,n,i,r,P)},t.prototype.$prependTo=function(t,e,r){return t=n(t),t.hasChildNodes()?this.$before(t.firstChild,e,r):this.$appendTo(t,e,r),this},t.prototype.$before=function(t,n,r){return e(this,t,n,r,i,F)},t.prototype.$after=function(t,e,r){return t=n(t),t.nextSibling?this.$before(t.nextSibling,e,r):this.$appendTo(t.parentNode,e,r),this},t.prototype.$remove=function(t,e){if(!this.$el.parentNode)return t&&t();var n=this._isAttached&&I(this.$el);n||(e=!1);var r=this,i=function(){n&&r._callHook("detached"),t&&t()};if(this._isFragment)ut(this._fragmentStart,this._fragmentEnd,this,this._fragment,i);else{var a=e===!1?o:B;a(this.$el,this,i)}return this}}function _n(t){function e(t,e,r){var i=t.$parent;if(i&&r&&!n.test(e))for(;i;)i._eventsCount[e]=(i._eventsCount[e]||0)+r,i=i.$parent}t.prototype.$on=function(t,n){return(this._events[t]||(this._events[t]=[])).push(n),e(this,t,1),this},t.prototype.$once=function(t,e){function n(){r.$off(t,n),e.apply(this,arguments)}var r=this;return n.fn=e,this.$on(t,n),this},t.prototype.$off=function(t,n){var r;if(!arguments.length){if(this.$parent)for(t in this._events)r=this._events[t],r&&e(this,t,-r.length);return this._events={},this}if(r=this._events[t],!r)return this;if(1===arguments.length)return e(this,t,-r.length),this._events[t]=null,this;for(var i,o=r.length;o--;)if(i=r[o],i===n||i.fn===n){e(this,t,-1),r.splice(o,1);break}return this},t.prototype.$emit=function(t){var e="string"==typeof t;t=e?t:t.name;var n=this._events[t],r=e||!n;if(n){n=n.length>1?g(n):n;var i=e&&n.some(function(t){return t._fromParent});i&&(r=!1);for(var o=g(arguments,1),a=0,s=n.length;a<s;a++){var u=n[a],c=u.apply(this,o);c!==!0||i&&!u._fromParent||(r=!0)}}return r},t.prototype.$broadcast=function(t){var e="string"==typeof t;if(t=e?t:t.name,this._eventsCount[t]){var n=this.$children,r=g(arguments);e&&(r[0]={name:t,source:this});for(var i=0,o=n.length;i<o;i++){var a=n[i],s=a.$emit.apply(a,r);s&&a.$broadcast.apply(a,r)}return this}},t.prototype.$dispatch=function(t){var e=this.$emit.apply(this,arguments);if(e){var n=this.$parent,r=g(arguments);for(r[0]={name:t,source:this};n;)e=n.$emit.apply(n,r),n=e?n.$parent:null;return this}};var n=/^hook:/}function Cn(t){function e(){this._isAttached=!0,this._isReady=!0,this._callHook("ready")}t.prototype.$mount=function(t){if(!this._isCompiled)return t=R(t),t||(t=document.createElement("div")),this._compile(t),this._initDOMHooks(),I(this.$el)?(this._callHook("attached"),e.call(this)):this.$once("hook:attached",e),this},t.prototype.$destroy=function(t,e){this._destroy(t,e)},t.prototype.$compile=function(t,e,n,r){return Fe(t,this.$options,!0)(this,t,e,n,r)}}function kn(t){this._init(t)}function Tn(t,e,n){return n=n?parseInt(n,10):0,e=u(e),"number"==typeof e?t.slice(n,n+e):t}function An(t,e,n){if(t=ra(t),null==e)return t;if("function"==typeof e)return t.filter(e);e=(""+e).toLowerCase();for(var r,i,o,a,s="in"===n?3:2,u=Array.prototype.concat.apply([],g(arguments,s)),c=[],l=0,f=t.length;l<f;l++)if(r=t[l],o=r&&r.$value||r,a=u.length){for(;a--;)if(i=u[a],"$key"===i&&$n(r.$key,e)||$n(Nt(o,i),e)){c.push(r);break}}else $n(r,e)&&c.push(r);return c}function Sn(t){function e(t,e,n){var i=r[n];return i&&("$key"!==i&&(y(t)&&"$value"in t&&(t=t.$value),y(e)&&"$value"in e&&(e=e.$value)),t=y(t)?Nt(t,i):t,e=y(e)?Nt(e,i):e),t===e?0:t>e?o:-o}var n=null,r=void 0;t=ra(t);var i=g(arguments,1),o=i[i.length-1];"number"==typeof o?(o=o<0?-1:1,i=i.length>1?i.slice(0,-1):i):o=1;var a=i[0];return a?("function"==typeof a?n=function(t,e){return a(t,e)*o}:(r=Array.prototype.concat.apply([],i),n=function(t,i,o){return o=o||0,o>=r.length-1?e(t,i,o):e(t,i,o)||n(t,i,o+1)}),t.slice().sort(n)):t}function $n(t,e){var n;if(b(t)){var r=Object.keys(t);for(n=r.length;n--;)if($n(t[r[n]],e))return!0}else if(Ln(t)){for(n=t.length;n--;)if($n(t[n],e))return!0}else if(null!=t)return t.toString().toLowerCase().indexOf(e)>-1}function En(t){function e(t){return new Function("return function "+p(t)+" (options) { this._init(options) }")()}t.options={directives:ko,elementDirectives:na,filters:oa,transitions:{},components:{},partials:{},replace:!0},t.util=qr,t.config=Er,t.set=n,t["delete"]=r,t.nextTick=nr,t.compiler=Yo,t.FragmentFactory=se,t.internalDirectives=qo,t.parsers={path:oi,text:Ar,template:Fi,directive:xr,expression:bi},t.cid=0;var i=1;t.extend=function(t){t=t||{};var n=this,r=0===n.cid;if(r&&t._Ctor)return t._Ctor;var o=t.name||n.options.name,a=e(o||"VueComponent");return a.prototype=Object.create(n.prototype),a.prototype.constructor=a,a.cid=i++,a.options=yt(n.options,t),a["super"]=n,a.extend=n.extend,Er._assetTypes.forEach(function(t){a[t]=n[t]}),o&&(a.options.components[o]=a),r&&(t._Ctor=a),a},t.use=function(t){if(!t.installed){var e=g(arguments,1);return e.unshift(this),"function"==typeof t.install?t.install.apply(t,e):t.apply(null,e),t.installed=!0,this}},t.mixin=function(e){t.options=yt(t.options,e)},Er._assetTypes.forEach(function(e){t[e]=function(n,r){return r?("component"===e&&b(r)&&(r.name||(r.name=n),r=t.extend(r)),this.options[e+"s"][n]=r,r):this.options[e+"s"][n]}}),m(t.transition,Or)}var jn="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol?"symbol":typeof t},On=Object.prototype.hasOwnProperty,Nn=/^\s?(true|false|-?[\d\.]+|'[^']*'|"[^"]*")\s?$/,Dn=/-(\w)/g,Mn=/([a-z\d])([A-Z])/g,Pn=/(?:^|[-_\/])(\w)/g,Fn=Object.prototype.toString,Bn="[object Object]",Ln=Array.isArray,Rn="__proto__"in{},In="undefined"!=typeof window&&"[object Object]"!==Object.prototype.toString.call(window),Hn=In&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__,qn=In&&window.navigator.userAgent.toLowerCase(),zn=qn&&qn.indexOf("trident")>0,Vn=qn&&qn.indexOf("msie 9.0")>0,Un=qn&&qn.indexOf("android")>0,Wn=qn&&/(iphone|ipad|ipod|ios)/i.test(qn),Xn=Wn&&qn.match(/os ([\d_]+)/),Gn=Xn&&Xn[1].split("_"),Zn=Gn&&Number(Gn[0])>=9&&Number(Gn[1])>=3&&!window.indexedDB,Jn=void 0,Yn=void 0,Qn=void 0,Kn=void 0;if(In&&!Vn){var tr=void 0===window.ontransitionend&&void 0!==window.onwebkittransitionend,er=void 0===window.onanimationend&&void 0!==window.onwebkitanimationend;Jn=tr?"WebkitTransition":"transition",Yn=tr?"webkitTransitionEnd":"transitionend",Qn=er?"WebkitAnimation":"animation",Kn=er?"webkitAnimationEnd":"animationend"}var nr=function(){function t(){i=!1;var t=r.slice(0);r=[];for(var e=0;e<t.length;e++)t[e]()}var n,r=[],i=!1;if("undefined"==typeof MutationObserver||Zn){var o=In?window:"undefined"!=typeof e?e:{};n=o.setImmediate||setTimeout}else{var a=1,s=new MutationObserver(t),u=document.createTextNode(a);s.observe(u,{characterData:!0}),n=function(){a=(a+1)%2,u.data=a}}return function(e,o){var a=o?function(){e.call(o)}:e;r.push(a),i||(i=!0,n(t,0))}}(),rr=void 0;"undefined"!=typeof Set&&Set.toString().match(/native code/)?rr=Set:(rr=function(){this.set=Object.create(null)},rr.prototype.has=function(t){return void 0!==this.set[t]},rr.prototype.add=function(t){this.set[t]=1},rr.prototype.clear=function(){this.set=Object.create(null)});var ir=T.prototype;ir.put=function(t,e){var n,r=this.get(t,!0);return r||(this.size===this.limit&&(n=this.shift()),r={key:t},this._keymap[t]=r,this.tail?(this.tail.newer=r,r.older=this.tail):this.head=r,this.tail=r,this.size++),r.value=e,n},ir.shift=function(){var t=this.head;return t&&(this.head=this.head.newer,this.head.older=void 0,t.newer=t.older=void 0,this._keymap[t.key]=void 0,this.size--),t},ir.get=function(t,e){var n=this._keymap[t];if(void 0!==n)return n===this.tail?e?n:n.value:(n.newer&&(n===this.head&&(this.head=n.newer),n.newer.older=n.older),n.older&&(n.older.newer=n.newer),n.newer=void 0,n.older=this.tail,this.tail&&(this.tail.newer=n),this.tail=n,e?n:n.value)};var or,ar,sr,ur,cr,lr,fr,hr,dr,pr,vr,gr,mr=new T(1e3),yr=/[^\s'"]+|'[^']*'|"[^"]*"/g,br=/^in$|^-?\d+/,xr=Object.freeze({parseDirective:$}),wr=/[-.*+?^${}()|[\]\/\\]/g,_r=void 0,Cr=void 0,kr=void 0,Tr=/[^|]\|[^|]/,Ar=Object.freeze({compileRegex:j,parseText:O,tokensToExp:N}),Sr=["{{","}}"],$r=["{{{","}}}"],Er=Object.defineProperties({debug:!1,silent:!1,async:!0,warnExpressionErrors:!0,devtools:!1,_delimitersChanged:!0,_assetTypes:["component","directive","elementDirective","filter","transition","partial"],_propBindingModes:{ONE_WAY:0,TWO_WAY:1,ONE_TIME:2},_maxUpdateCount:100},{delimiters:{get:function(){return Sr},set:function(t){Sr=t,j()},configurable:!0,enumerable:!0},unsafeDelimiters:{get:function(){return $r},set:function(t){$r=t,j()},configurable:!0,enumerable:!0}}),jr=void 0,Or=Object.freeze({appendWithTransition:P,beforeWithTransition:F,removeWithTransition:B,applyTransition:L}),Nr=/^v-ref:/,Dr=/^(div|p|span|img|a|b|i|br|ul|ol|li|h1|h2|h3|h4|h5|h6|code|pre|table|th|td|tr|form|label|input|select|option|nav|article|section|header|footer)$/i,Mr=/^(slot|partial|component)$/i,Pr=Er.optionMergeStrategies=Object.create(null);Pr.data=function(t,e,n){return n?t||e?function(){var r="function"==typeof e?e.call(n):e,i="function"==typeof t?t.call(n):void 0;return r?dt(r,i):i}:void 0:e?"function"!=typeof e?t:t?function(){return dt(e.call(this),t.call(this))}:e:t},Pr.el=function(t,e,n){if(n||!e||"function"==typeof e){var r=e||t;return n&&"function"==typeof r?r.call(n):r}},Pr.init=Pr.created=Pr.ready=Pr.attached=Pr.detached=Pr.beforeCompile=Pr.compiled=Pr.beforeDestroy=Pr.destroyed=Pr.activate=function(t,e){return e?t?t.concat(e):Ln(e)?e:[e]:t},Er._assetTypes.forEach(function(t){Pr[t+"s"]=pt}),Pr.watch=Pr.events=function(t,e){if(!e)return t;if(!t)return e;var n={};m(n,t);for(var r in e){var i=n[r],o=e[r];i&&!Ln(i)&&(i=[i]),n[r]=i?i.concat(o):[o]}return n},Pr.props=Pr.methods=Pr.computed=function(t,e){if(!e)return t;if(!t)return e;var n=Object.create(null);return m(n,t),m(n,e),n};var Fr=function(t,e){return void 0===e?t:e},Br=0;xt.target=null,xt.prototype.addSub=function(t){this.subs.push(t)},xt.prototype.removeSub=function(t){this.subs.$remove(t)},xt.prototype.depend=function(){xt.target.addDep(this)},xt.prototype.notify=function(){for(var t=g(this.subs),e=0,n=t.length;e<n;e++)t[e].update()};var Lr=Array.prototype,Rr=Object.create(Lr);["push","pop","shift","unshift","splice","sort","reverse"].forEach(function(t){var e=Lr[t];x(Rr,t,function(){for(var n=arguments.length,r=new Array(n);n--;)r[n]=arguments[n];var i,o=e.apply(this,r),a=this.__ob__;switch(t){case"push":i=r;break;case"unshift":i=r;break;case"splice":i=r.slice(2)}return i&&a.observeArray(i),a.dep.notify(),o})}),x(Lr,"$set",function(t,e){return t>=this.length&&(this.length=Number(t)+1),this.splice(t,1,e)[0]}),x(Lr,"$remove",function(t){if(this.length){var e=_(this,t);return e>-1?this.splice(e,1):void 0}});var Ir=Object.getOwnPropertyNames(Rr),Hr=!0;_t.prototype.walk=function(t){for(var e=Object.keys(t),n=0,r=e.length;n<r;n++)this.convert(e[n],t[e[n]])},_t.prototype.observeArray=function(t){for(var e=0,n=t.length;e<n;e++)Tt(t[e])},_t.prototype.convert=function(t,e){At(this.value,t,e)},_t.prototype.addVm=function(t){(this.vms||(this.vms=[])).push(t)},_t.prototype.removeVm=function(t){this.vms.$remove(t)};var qr=Object.freeze({defineReactive:At,set:n,del:r,hasOwn:i,isLiteral:o,isReserved:a,_toString:s,toNumber:u,toBoolean:c,stripQuotes:l,camelize:f,hyphenate:d,classify:p,bind:v,toArray:g,extend:m,isObject:y,isPlainObject:b,def:x,debounce:w,indexOf:_,cancellable:C,looseEqual:k,isArray:Ln,hasProto:Rn,inBrowser:In,devtools:Hn,isIE:zn,isIE9:Vn,isAndroid:Un,isIos:Wn,iosVersionMatch:Xn,iosVersion:Gn,hasMutationObserverBug:Zn,get transitionProp(){return Jn},get transitionEndEvent(){return Yn},get animationProp(){return Qn},get animationEndEvent(){return Kn},nextTick:nr,get _Set(){return rr},query:R,inDoc:I,getAttr:H,getBindAttr:q,hasBindAttr:z,before:V,after:U,remove:W,prepend:X,replace:G,on:Z,off:J,setClass:Q,addClass:K,removeClass:tt,extractContent:et,trimNode:nt,isTemplate:it,createAnchor:ot,findRef:at,mapNodeRange:st,removeNodeRange:ut,isFragment:ct,getOuterHTML:lt,mergeOptions:yt,resolveAsset:bt,checkComponentAttr:ft,commonTagRE:Dr,reservedTagRE:Mr,get warn(){return jr}}),zr=0,Vr=new T(1e3),Ur=0,Wr=1,Xr=2,Gr=3,Zr=0,Jr=1,Yr=2,Qr=3,Kr=4,ti=5,ei=6,ni=7,ri=8,ii=[];ii[Zr]={ws:[Zr],ident:[Qr,Ur],"[":[Kr],eof:[ni]},ii[Jr]={ws:[Jr],".":[Yr],"[":[Kr],eof:[ni]},ii[Yr]={ws:[Yr],ident:[Qr,Ur]},ii[Qr]={ident:[Qr,Ur],0:[Qr,Ur],number:[Qr,Ur],ws:[Jr,Wr],".":[Yr,Wr],"[":[Kr,Wr],eof:[ni,Wr]},ii[Kr]={"'":[ti,Ur],'"':[ei,Ur],"[":[Kr,Xr],"]":[Jr,Gr],eof:ri,"else":[Kr,Ur]},ii[ti]={"'":[Kr,Ur],eof:ri,"else":[ti,Ur]},ii[ei]={'"':[Kr,Ur],eof:ri,"else":[ei,Ur]};var oi=Object.freeze({parsePath:Ot,getPath:Nt,setPath:Dt}),ai=new T(1e3),si="Math,Date,this,true,false,null,undefined,Infinity,NaN,isNaN,isFinite,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,parseInt,parseFloat",ui=new RegExp("^("+si.replace(/,/g,"\\b|")+"\\b)"),ci="break,case,class,catch,const,continue,debugger,default,delete,do,else,export,extends,finally,for,function,if,import,in,instanceof,let,return,super,switch,throw,try,var,while,with,yield,enum,await,implements,package,protected,static,interface,private,public",li=new RegExp("^("+ci.replace(/,/g,"\\b|")+"\\b)"),fi=/\s/g,hi=/\n/g,di=/[\{,]\s*[\w\$_]+\s*:|('(?:[^'\\]|\\.)*'|"(?:[^"\\]|\\.)*"|`(?:[^`\\]|\\.)*\$\{|\}(?:[^`\\]|\\.)*`|`(?:[^`\\]|\\.)*`)|new |typeof |void /g,pi=/"(\d+)"/g,vi=/^[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*|\['.*?'\]|\[".*?"\]|\[\d+\]|\[[A-Za-z_$][\w$]*\])*$/,gi=/[^\w$\.](?:[A-Za-z_$][\w$]*)/g,mi=/^(?:true|false|null|undefined|Infinity|NaN)$/,yi=[],bi=Object.freeze({parseExpression:Ht,isSimplePath:qt}),xi=[],wi=[],_i={},Ci={},ki=!1,Ti=0;Xt.prototype.get=function(){this.beforeGet();var t,e=this.scope||this.vm;try{t=this.getter.call(e,e)}catch(n){}return this.deep&&Gt(t),this.preProcess&&(t=this.preProcess(t)),this.filters&&(t=e._applyFilters(t,null,this.filters,!1)),this.postProcess&&(t=this.postProcess(t)),this.afterGet(),t},Xt.prototype.set=function(t){var e=this.scope||this.vm;this.filters&&(t=e._applyFilters(t,this.value,this.filters,!0));try{this.setter.call(e,e,t)}catch(n){}var r=e.$forContext;if(r&&r.alias===this.expression){if(r.filters)return;r._withLock(function(){e.$key?r.rawValue[e.$key]=t:r.rawValue.$set(e.$index,t)})}},Xt.prototype.beforeGet=function(){xt.target=this},Xt.prototype.addDep=function(t){var e=t.id;this.newDepIds.has(e)||(this.newDepIds.add(e),this.newDeps.push(t),this.depIds.has(e)||t.addSub(this))},Xt.prototype.afterGet=function(){xt.target=null;for(var t=this.deps.length;t--;){var e=this.deps[t];this.newDepIds.has(e.id)||e.removeSub(this)}var n=this.depIds;this.depIds=this.newDepIds,this.newDepIds=n,this.newDepIds.clear(),n=this.deps,this.deps=this.newDeps,this.newDeps=n,this.newDeps.length=0},Xt.prototype.update=function(t){this.lazy?this.dirty=!0:this.sync||!Er.async?this.run():(this.shallow=this.queued?!!t&&this.shallow:!!t,this.queued=!0,Wt(this))},Xt.prototype.run=function(){if(this.active){var t=this.get();if(t!==this.value||(y(t)||this.deep)&&!this.shallow){var e=this.value;this.value=t;this.prevError;this.cb.call(this.vm,t,e)}this.queued=this.shallow=!1}},Xt.prototype.evaluate=function(){var t=xt.target;this.value=this.get(),this.dirty=!1,xt.target=t},Xt.prototype.depend=function(){for(var t=this.deps.length;t--;)this.deps[t].depend()},Xt.prototype.teardown=function(){if(this.active){this.vm._isBeingDestroyed||this.vm._vForRemoving||this.vm._watchers.$remove(this);for(var t=this.deps.length;t--;)this.deps[t].removeSub(this);this.active=!1,this.vm=this.cb=this.value=null}};var Ai=new rr,Si={bind:function(){this.attr=3===this.el.nodeType?"data":"textContent"},update:function(t){this.el[this.attr]=s(t)}},$i=new T(1e3),Ei=new T(1e3),ji={efault:[0,"",""],legend:[1,"<fieldset>","</fieldset>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"]};ji.td=ji.th=[3,"<table><tbody><tr>","</tr></tbody></table>"],ji.option=ji.optgroup=[1,'<select multiple="multiple">',"</select>"],ji.thead=ji.tbody=ji.colgroup=ji.caption=ji.tfoot=[1,"<table>","</table>"],ji.g=ji.defs=ji.symbol=ji.use=ji.image=ji.text=ji.circle=ji.ellipse=ji.line=ji.path=ji.polygon=ji.polyline=ji.rect=[1,'<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ev="http://www.w3.org/2001/xml-events"version="1.1">',"</svg>"];var Oi=/<([\w:-]+)/,Ni=/&#?\w+?;/,Di=/<!--/,Mi=function(){if(In){var t=document.createElement("div");return t.innerHTML="<template>1</template>",!t.cloneNode(!0).firstChild.innerHTML}return!1}(),Pi=function(){if(In){var t=document.createElement("textarea");return t.placeholder="t","t"===t.cloneNode(!0).value}return!1}(),Fi=Object.freeze({cloneNode:Qt,parseTemplate:Kt}),Bi={bind:function(){8===this.el.nodeType&&(this.nodes=[],this.anchor=ot("v-html"),G(this.el,this.anchor))},update:function(t){t=s(t),this.nodes?this.swap(t):this.el.innerHTML=t},swap:function(t){for(var e=this.nodes.length;e--;)W(this.nodes[e]);var n=Kt(t,!0,!0);this.nodes=g(n.childNodes),V(n,this.anchor)}};te.prototype.callHook=function(t){var e,n;for(e=0,n=this.childFrags.length;e<n;e++)this.childFrags[e].callHook(t);for(e=0,n=this.children.length;e<n;e++)t(this.children[e])},te.prototype.beforeRemove=function(){var t,e;for(t=0,e=this.childFrags.length;t<e;t++)this.childFrags[t].beforeRemove(!1);for(t=0,e=this.children.length;t<e;t++)this.children[t].$destroy(!1,!0);var n=this.unlink.dirs;for(t=0,e=n.length;t<e;t++)n[t]._watcher&&n[t]._watcher.teardown()},te.prototype.destroy=function(){this.parentFrag&&this.parentFrag.childFrags.$remove(this),this.node.__v_frag=null,this.unlink()};var Li=new T(5e3);se.prototype.create=function(t,e,n){var r=Qt(this.template);return new te(this.linker,this.vm,r,t,e,n)};var Ri=700,Ii=800,Hi=850,qi=1100,zi=1500,Vi=1500,Ui=1750,Wi=2100,Xi=2200,Gi=2300,Zi=0,Ji={priority:Xi,terminal:!0,params:["track-by","stagger","enter-stagger","leave-stagger"],bind:function(){var t=this.expression.match(/(.*) (?:in|of) (.*)/);if(t){var e=t[1].match(/\((.*),(.*)\)/);e?(this.iterator=e[1].trim(),this.alias=e[2].trim()):this.alias=t[1].trim(),this.expression=t[2]}if(this.alias){this.id="__v-for__"+ ++Zi;var n=this.el.tagName;this.isOption=("OPTION"===n||"OPTGROUP"===n)&&"SELECT"===this.el.parentNode.tagName,this.start=ot("v-for-start"),this.end=ot("v-for-end"),G(this.el,this.end),V(this.start,this.end),this.cache=Object.create(null),this.factory=new se(this.vm,this.el)}},update:function(t){this.diff(t),this.updateRef(),this.updateModel()},diff:function(t){var e,n,r,o,a,s,u=t[0],c=this.fromObject=y(u)&&i(u,"$key")&&i(u,"$value"),l=this.params.trackBy,f=this.frags,h=this.frags=new Array(t.length),d=this.alias,p=this.iterator,v=this.start,g=this.end,m=I(v),b=!f;for(e=0,n=t.length;e<n;e++)u=t[e],o=c?u.$key:null,a=c?u.$value:u,s=!y(a),r=!b&&this.getCachedFrag(a,e,o),r?(r.reused=!0,r.scope.$index=e,o&&(r.scope.$key=o),p&&(r.scope[p]=null!==o?o:e),(l||c||s)&&wt(function(){r.scope[d]=a})):(r=this.create(a,d,e,o),r.fresh=!b),h[e]=r,b&&r.before(g);if(!b){var x=0,w=f.length-h.length;for(this.vm._vForRemoving=!0,e=0,n=f.length;e<n;e++)r=f[e],r.reused||(this.deleteCachedFrag(r),this.remove(r,x++,w,m));this.vm._vForRemoving=!1,x&&(this.vm._watchers=this.vm._watchers.filter(function(t){return t.active}));var _,C,k,T=0;for(e=0,n=h.length;e<n;e++)r=h[e],_=h[e-1],C=_?_.staggerCb?_.staggerAnchor:_.end||_.node:v,r.reused&&!r.staggerCb?(k=ue(r,v,this.id),k===_||k&&ue(k,v,this.id)===_||this.move(r,C)):this.insert(r,T++,C,m),r.reused=r.fresh=!1}},create:function(t,e,n,r){var i=this._host,o=this._scope||this.vm,a=Object.create(o);a.$refs=Object.create(o.$refs),a.$els=Object.create(o.$els),a.$parent=o,a.$forContext=this,wt(function(){At(a,e,t)}),At(a,"$index",n),r?At(a,"$key",r):a.$key&&x(a,"$key",null),this.iterator&&At(a,this.iterator,null!==r?r:n);var s=this.factory.create(i,a,this._frag);return s.forId=this.id,this.cacheFrag(t,s,n,r),s},updateRef:function(){var t=this.descriptor.ref;if(t){var e,n=(this._scope||this.vm).$refs;this.fromObject?(e={},this.frags.forEach(function(t){e[t.scope.$key]=ce(t)})):e=this.frags.map(ce),n[t]=e}},updateModel:function(){if(this.isOption){var t=this.start.parentNode,e=t&&t.__v_model;e&&e.forceUpdate()}},insert:function(t,e,n,r){t.staggerCb&&(t.staggerCb.cancel(),t.staggerCb=null);var i=this.getStagger(t,e,null,"enter");if(r&&i){var o=t.staggerAnchor;o||(o=t.staggerAnchor=ot("stagger-anchor"),o.__v_frag=t),U(o,n);var a=t.staggerCb=C(function(){t.staggerCb=null,t.before(o),W(o)});setTimeout(a,i)}else{var s=n.nextSibling;s||(U(this.end,n),s=this.end),t.before(s)}},remove:function(t,e,n,r){if(t.staggerCb)return t.staggerCb.cancel(),void(t.staggerCb=null);var i=this.getStagger(t,e,n,"leave");if(r&&i){var o=t.staggerCb=C(function(){t.staggerCb=null,t.remove()});setTimeout(o,i)}else t.remove()},move:function(t,e){e.nextSibling||this.end.parentNode.appendChild(this.end),t.before(e.nextSibling,!1)},cacheFrag:function(t,e,n,r){var o,a=this.params.trackBy,s=this.cache,u=!y(t);r||a||u?(o=fe(n,r,t,a),s[o]||(s[o]=e)):(o=this.id,i(t,o)?null===t[o]&&(t[o]=e):Object.isExtensible(t)&&x(t,o,e)),e.raw=t},getCachedFrag:function(t,e,n){var r,i=this.params.trackBy,o=!y(t);if(n||i||o){var a=fe(e,n,t,i);r=this.cache[a]}else r=t[this.id];return r&&(r.reused||r.fresh),r},deleteCachedFrag:function(t){var e=t.raw,n=this.params.trackBy,r=t.scope,o=r.$index,a=i(r,"$key")&&r.$key,s=!y(e);if(n||a||s){var u=fe(o,a,e,n);this.cache[u]=null}else e[this.id]=null,t.raw=null},getStagger:function(t,e,n,r){r+="Stagger";var i=t.node.__v_trans,o=i&&i.hooks,a=o&&(o[r]||o.stagger);return a?a.call(t,e,n):e*parseInt(this.params[r]||this.params.stagger,10)},_preProcess:function(t){return this.rawValue=t,t},_postProcess:function(t){if(Ln(t))return t;if(b(t)){for(var e,n=Object.keys(t),r=n.length,i=new Array(r);r--;)e=n[r],i[r]={$key:e,$value:t[e]};return i}return"number"!=typeof t||isNaN(t)||(t=le(t)),t||[]},unbind:function(){if(this.descriptor.ref&&((this._scope||this.vm).$refs[this.descriptor.ref]=null),this.frags)for(var t,e=this.frags.length;e--;)t=this.frags[e],this.deleteCachedFrag(t),t.destroy()}},Yi={priority:Wi,terminal:!0,bind:function(){var t=this.el;if(t.__vue__)this.invalid=!0;else{var e=t.nextElementSibling;e&&null!==H(e,"v-else")&&(W(e),this.elseEl=e),this.anchor=ot("v-if"),G(t,this.anchor)}},update:function(t){this.invalid||(t?this.frag||this.insert():this.remove())},insert:function(){this.elseFrag&&(this.elseFrag.remove(),this.elseFrag=null),this.factory||(this.factory=new se(this.vm,this.el)),this.frag=this.factory.create(this._host,this._scope,this._frag),this.frag.before(this.anchor)},remove:function(){this.frag&&(this.frag.remove(),this.frag=null),this.elseEl&&!this.elseFrag&&(this.elseFactory||(this.elseFactory=new se(this.elseEl._context||this.vm,this.elseEl)),this.elseFrag=this.elseFactory.create(this._host,this._scope,this._frag),this.elseFrag.before(this.anchor))},unbind:function(){this.frag&&this.frag.destroy(),this.elseFrag&&this.elseFrag.destroy()}},Qi={bind:function(){var t=this.el.nextElementSibling;t&&null!==H(t,"v-else")&&(this.elseEl=t)},update:function(t){this.apply(this.el,t),this.elseEl&&this.apply(this.elseEl,!t)},apply:function(t,e){function n(){t.style.display=e?"":"none"}I(t)?L(t,e?1:-1,n,this.vm):n()}},Ki={bind:function(){var t=this,e=this.el,n="range"===e.type,r=this.params.lazy,i=this.params.number,o=this.params.debounce,a=!1;if(Un||n||(this.on("compositionstart",function(){a=!0}),this.on("compositionend",function(){a=!1,r||t.listener()})),this.focused=!1,n||r||(this.on("focus",function(){t.focused=!0}),this.on("blur",function(){t.focused=!1,t._frag&&!t._frag.inserted||t.rawListener()})),this.listener=this.rawListener=function(){if(!a&&t._bound){var r=i||n?u(e.value):e.value;t.set(r),nr(function(){t._bound&&!t.focused&&t.update(t._watcher.value)})}},o&&(this.listener=w(this.listener,o)),this.hasjQuery="function"==typeof jQuery,this.hasjQuery){var s=jQuery.fn.on?"on":"bind";jQuery(e)[s]("change",this.rawListener),r||jQuery(e)[s]("input",this.listener)}else this.on("change",this.rawListener),r||this.on("input",this.listener);!r&&Vn&&(this.on("cut",function(){nr(t.listener)}),this.on("keyup",function(e){46!==e.keyCode&&8!==e.keyCode||t.listener()})),(e.hasAttribute("value")||"TEXTAREA"===e.tagName&&e.value.trim())&&(this.afterBind=this.listener)},update:function(t){t=s(t),t!==this.el.value&&(this.el.value=t)},unbind:function(){var t=this.el;if(this.hasjQuery){var e=jQuery.fn.off?"off":"unbind";jQuery(t)[e]("change",this.listener),jQuery(t)[e]("input",this.listener)}}},to={bind:function(){var t=this,e=this.el;this.getValue=function(){if(e.hasOwnProperty("_value"))return e._value;var n=e.value;return t.params.number&&(n=u(n)),n},this.listener=function(){t.set(t.getValue())},this.on("change",this.listener),e.hasAttribute("checked")&&(this.afterBind=this.listener)},update:function(t){this.el.checked=k(t,this.getValue())}},eo={bind:function(){var t=this,e=this,n=this.el;this.forceUpdate=function(){e._watcher&&e.update(e._watcher.get())};var r=this.multiple=n.hasAttribute("multiple");this.listener=function(){var t=he(n,r);t=e.params.number?Ln(t)?t.map(u):u(t):t,e.set(t)},this.on("change",this.listener);var i=he(n,r,!0);(r&&i.length||!r&&null!==i)&&(this.afterBind=this.listener),this.vm.$on("hook:attached",function(){nr(t.forceUpdate)})},update:function(t){var e=this.el;if(!I(e))return nr(this.forceUpdate);e.selectedIndex=-1;for(var n,r,i=this.multiple&&Ln(t),o=e.options,a=o.length;a--;)n=o[a],r=n.hasOwnProperty("_value")?n._value:n.value,n.selected=i?de(t,r)>-1:k(t,r)},unbind:function(){this.vm.$off("hook:attached",this.forceUpdate)}},no={bind:function(){function t(){var t=n.checked;return t&&n.hasOwnProperty("_trueValue")?n._trueValue:!t&&n.hasOwnProperty("_falseValue")?n._falseValue:t}var e=this,n=this.el;this.getValue=function(){return n.hasOwnProperty("_value")?n._value:e.params.number?u(n.value):n.value},this.listener=function(){var r=e._watcher.value;if(Ln(r)){var i=e.getValue();n.checked?_(r,i)<0&&r.push(i):r.$remove(i)}else e.set(t())},this.on("change",this.listener),n.hasAttribute("checked")&&(this.afterBind=this.listener)},update:function(t){var e=this.el;Ln(t)?e.checked=_(t,this.getValue())>-1:e.hasOwnProperty("_trueValue")?e.checked=k(t,e._trueValue):e.checked=!!t}},ro={text:Ki,radio:to,select:eo,checkbox:no},io={priority:Ii,twoWay:!0,handlers:ro,params:["lazy","number","debounce"],bind:function(){this.checkFilters(),this.hasRead&&!this.hasWrite;var t,e=this.el,n=e.tagName;if("INPUT"===n)t=ro[e.type]||ro.text;else if("SELECT"===n)t=ro.select;else{if("TEXTAREA"!==n)return;t=ro.text}e.__v_model=this,t.bind.call(this),this.update=t.update,this._unbind=t.unbind},checkFilters:function(){var t=this.filters;if(t)for(var e=t.length;e--;){var n=bt(this.vm.$options,"filters",t[e].name);("function"==typeof n||n.read)&&(this.hasRead=!0),n.write&&(this.hasWrite=!0)}},unbind:function(){this.el.__v_model=null,this._unbind&&this._unbind()}},oo={esc:27,tab:9,enter:13,space:32,"delete":[8,46],up:38,left:37,right:39,down:40},ao={priority:Ri,acceptStatement:!0,keyCodes:oo,bind:function(){if("IFRAME"===this.el.tagName&&"load"!==this.arg){var t=this;this.iframeBind=function(){Z(t.el.contentWindow,t.arg,t.handler,t.modifiers.capture)},this.on("load",this.iframeBind)}},update:function(t){if(this.descriptor.raw||(t=function(){}),"function"==typeof t){this.modifiers.stop&&(t=ve(t)),this.modifiers.prevent&&(t=ge(t)),this.modifiers.self&&(t=me(t));var e=Object.keys(this.modifiers).filter(function(t){return"stop"!==t&&"prevent"!==t&&"self"!==t&&"capture"!==t});e.length&&(t=pe(t,e)),this.reset(),this.handler=t,this.iframeBind?this.iframeBind():Z(this.el,this.arg,this.handler,this.modifiers.capture)}},reset:function(){var t=this.iframeBind?this.el.contentWindow:this.el;this.handler&&J(t,this.arg,this.handler)},unbind:function(){this.reset()}},so=["-webkit-","-moz-","-ms-"],uo=["Webkit","Moz","ms"],co=/!important;?$/,lo=Object.create(null),fo=null,ho={deep:!0,update:function(t){"string"==typeof t?this.el.style.cssText=t:Ln(t)?this.handleObject(t.reduce(m,{})):this.handleObject(t||{})},handleObject:function(t){var e,n,r=this.cache||(this.cache={});for(e in r)e in t||(this.handleSingle(e,null),delete r[e]);for(e in t)n=t[e],n!==r[e]&&(r[e]=n,this.handleSingle(e,n))},handleSingle:function(t,e){if(t=ye(t))if(null!=e&&(e+=""),e){var n=co.test(e)?"important":"";n?(e=e.replace(co,"").trim(),this.el.style.setProperty(t.kebab,e,n)):this.el.style[t.camel]=e}else this.el.style[t.camel]=""}},po="http://www.w3.org/1999/xlink",vo=/^xlink:/,go=/^v-|^:|^@|^(?:is|transition|transition-mode|debounce|track-by|stagger|enter-stagger|leave-stagger)$/,mo=/^(?:value|checked|selected|muted)$/,yo=/^(?:draggable|contenteditable|spellcheck)$/,bo={value:"_value","true-value":"_trueValue","false-value":"_falseValue"},xo={priority:Hi,bind:function(){
-var t=this.arg,e=this.el.tagName;t||(this.deep=!0);var n=this.descriptor,r=n.interp;if(r){n.hasOneTime&&(this.expression=N(r,this._scope||this.vm)),(go.test(t)||"name"===t&&("PARTIAL"===e||"SLOT"===e))&&(this.el.removeAttribute(t),this.invalid=!0)}},update:function(t){if(!this.invalid){var e=this.arg;this.arg?this.handleSingle(e,t):this.handleObject(t||{})}},handleObject:ho.handleObject,handleSingle:function(t,e){var n=this.el,r=this.descriptor.interp;if(this.modifiers.camel&&(t=f(t)),!r&&mo.test(t)&&t in n){var i="value"===t&&null==e?"":e;n[t]!==i&&(n[t]=i)}var o=bo[t];if(!r&&o){n[o]=e;var a=n.__v_model;a&&a.listener()}return"value"===t&&"TEXTAREA"===n.tagName?void n.removeAttribute(t):void(yo.test(t)?n.setAttribute(t,e?"true":"false"):null!=e&&e!==!1?"class"===t?(n.__v_trans&&(e+=" "+n.__v_trans.id+"-transition"),Q(n,e)):vo.test(t)?n.setAttributeNS(po,t,e===!0?"":e):n.setAttribute(t,e===!0?"":e):n.removeAttribute(t))}},wo={priority:zi,bind:function(){if(this.arg){var t=this.id=f(this.arg),e=(this._scope||this.vm).$els;i(e,t)?e[t]=this.el:At(e,t,this.el)}},unbind:function(){var t=(this._scope||this.vm).$els;t[this.id]===this.el&&(t[this.id]=null)}},_o={bind:function(){}},Co={bind:function(){var t=this.el;this.vm.$once("pre-hook:compiled",function(){t.removeAttribute("v-cloak")})}},ko={text:Si,html:Bi,"for":Ji,"if":Yi,show:Qi,model:io,on:ao,bind:xo,el:wo,ref:_o,cloak:Co},To={deep:!0,update:function(t){t?"string"==typeof t?this.setClass(t.trim().split(/\s+/)):this.setClass(xe(t)):this.cleanup()},setClass:function(t){this.cleanup(t);for(var e=0,n=t.length;e<n;e++){var r=t[e];r&&we(this.el,r,K)}this.prevKeys=t},cleanup:function(t){var e=this.prevKeys;if(e)for(var n=e.length;n--;){var r=e[n];(!t||t.indexOf(r)<0)&&we(this.el,r,tt)}}},Ao={priority:Vi,params:["keep-alive","transition-mode","inline-template"],bind:function(){this.el.__vue__||(this.keepAlive=this.params.keepAlive,this.keepAlive&&(this.cache={}),this.params.inlineTemplate&&(this.inlineTemplate=et(this.el,!0)),this.pendingComponentCb=this.Component=null,this.pendingRemovals=0,this.pendingRemovalCb=null,this.anchor=ot("v-component"),G(this.el,this.anchor),this.el.removeAttribute("is"),this.el.removeAttribute(":is"),this.descriptor.ref&&this.el.removeAttribute("v-ref:"+d(this.descriptor.ref)),this.literal&&this.setComponent(this.expression))},update:function(t){this.literal||this.setComponent(t)},setComponent:function(t,e){if(this.invalidatePending(),t){var n=this;this.resolveComponent(t,function(){n.mountComponent(e)})}else this.unbuild(!0),this.remove(this.childVM,e),this.childVM=null},resolveComponent:function(t,e){var n=this;this.pendingComponentCb=C(function(r){n.ComponentName=r.options.name||("string"==typeof t?t:null),n.Component=r,e()}),this.vm._resolveComponent(t,this.pendingComponentCb)},mountComponent:function(t){this.unbuild(!0);var e=this,n=this.Component.options.activate,r=this.getCached(),i=this.build();n&&!r?(this.waitingFor=i,_e(n,i,function(){e.waitingFor===i&&(e.waitingFor=null,e.transition(i,t))})):(r&&i._updateRef(),this.transition(i,t))},invalidatePending:function(){this.pendingComponentCb&&(this.pendingComponentCb.cancel(),this.pendingComponentCb=null)},build:function(t){var e=this.getCached();if(e)return e;if(this.Component){var n={name:this.ComponentName,el:Qt(this.el),template:this.inlineTemplate,parent:this._host||this.vm,_linkerCachable:!this.inlineTemplate,_ref:this.descriptor.ref,_asComponent:!0,_isRouterView:this._isRouterView,_context:this.vm,_scope:this._scope,_frag:this._frag};t&&m(n,t);var r=new this.Component(n);return this.keepAlive&&(this.cache[this.Component.cid]=r),r}},getCached:function(){return this.keepAlive&&this.cache[this.Component.cid]},unbuild:function(t){this.waitingFor&&(this.keepAlive||this.waitingFor.$destroy(),this.waitingFor=null);var e=this.childVM;return!e||this.keepAlive?void(e&&(e._inactive=!0,e._updateRef(!0))):void e.$destroy(!1,t)},remove:function(t,e){var n=this.keepAlive;if(t){this.pendingRemovals++,this.pendingRemovalCb=e;var r=this;t.$remove(function(){r.pendingRemovals--,n||t._cleanup(),!r.pendingRemovals&&r.pendingRemovalCb&&(r.pendingRemovalCb(),r.pendingRemovalCb=null)})}else e&&e()},transition:function(t,e){var n=this,r=this.childVM;switch(r&&(r._inactive=!0),t._inactive=!1,this.childVM=t,n.params.transitionMode){case"in-out":t.$before(n.anchor,function(){n.remove(r,e)});break;case"out-in":n.remove(r,function(){t.$before(n.anchor,e)});break;default:n.remove(r),t.$before(n.anchor,e)}},unbind:function(){if(this.invalidatePending(),this.unbuild(),this.cache){for(var t in this.cache)this.cache[t].$destroy();this.cache=null}}},So=Er._propBindingModes,$o={},Eo=/^[$_a-zA-Z]+[\w$]*$/,jo=Er._propBindingModes,Oo={bind:function(){var t=this.vm,e=t._context,n=this.descriptor.prop,r=n.path,i=n.parentPath,o=n.mode===jo.TWO_WAY,a=this.parentWatcher=new Xt(e,i,function(e){Se(t,n,e)},{twoWay:o,filters:n.filters,scope:this._scope});if(Ae(t,n,a.value),o){var s=this;t.$once("pre-hook:created",function(){s.childWatcher=new Xt(t,r,function(t){a.set(t)},{sync:!0})})}},unbind:function(){this.parentWatcher.teardown(),this.childWatcher&&this.childWatcher.teardown()}},No=[],Do=!1,Mo="transition",Po="animation",Fo=Jn+"Duration",Bo=Qn+"Duration",Lo=In&&window.requestAnimationFrame,Ro=Lo?function(t){Lo(function(){Lo(t)})}:function(t){setTimeout(t,50)},Io=Me.prototype;Io.enter=function(t,e){this.cancelPending(),this.callHook("beforeEnter"),this.cb=e,K(this.el,this.enterClass),t(),this.entered=!1,this.callHookWithCb("enter"),this.entered||(this.cancel=this.hooks&&this.hooks.enterCancelled,Ne(this.enterNextTick))},Io.enterNextTick=function(){var t=this;this.justEntered=!0,Ro(function(){t.justEntered=!1});var e=this.enterDone,n=this.getCssTransitionType(this.enterClass);this.pendingJsCb?n===Mo&&tt(this.el,this.enterClass):n===Mo?(tt(this.el,this.enterClass),this.setupCssCb(Yn,e)):n===Po?this.setupCssCb(Kn,e):e()},Io.enterDone=function(){this.entered=!0,this.cancel=this.pendingJsCb=null,tt(this.el,this.enterClass),this.callHook("afterEnter"),this.cb&&this.cb()},Io.leave=function(t,e){this.cancelPending(),this.callHook("beforeLeave"),this.op=t,this.cb=e,K(this.el,this.leaveClass),this.left=!1,this.callHookWithCb("leave"),this.left||(this.cancel=this.hooks&&this.hooks.leaveCancelled,this.op&&!this.pendingJsCb&&(this.justEntered?this.leaveDone():Ne(this.leaveNextTick)))},Io.leaveNextTick=function(){var t=this.getCssTransitionType(this.leaveClass);if(t){var e=t===Mo?Yn:Kn;this.setupCssCb(e,this.leaveDone)}else this.leaveDone()},Io.leaveDone=function(){this.left=!0,this.cancel=this.pendingJsCb=null,this.op(),tt(this.el,this.leaveClass),this.callHook("afterLeave"),this.cb&&this.cb(),this.op=null},Io.cancelPending=function(){this.op=this.cb=null;var t=!1;this.pendingCssCb&&(t=!0,J(this.el,this.pendingCssEvent,this.pendingCssCb),this.pendingCssEvent=this.pendingCssCb=null),this.pendingJsCb&&(t=!0,this.pendingJsCb.cancel(),this.pendingJsCb=null),t&&(tt(this.el,this.enterClass),tt(this.el,this.leaveClass)),this.cancel&&(this.cancel.call(this.vm,this.el),this.cancel=null)},Io.callHook=function(t){this.hooks&&this.hooks[t]&&this.hooks[t].call(this.vm,this.el)},Io.callHookWithCb=function(t){var e=this.hooks&&this.hooks[t];e&&(e.length>1&&(this.pendingJsCb=C(this[t+"Done"])),e.call(this.vm,this.el,this.pendingJsCb))},Io.getCssTransitionType=function(t){if(!(!Yn||document.hidden||this.hooks&&this.hooks.css===!1||Pe(this.el))){var e=this.type||this.typeCache[t];if(e)return e;var n=this.el.style,r=window.getComputedStyle(this.el),i=n[Fo]||r[Fo];if(i&&"0s"!==i)e=Mo;else{var o=n[Bo]||r[Bo];o&&"0s"!==o&&(e=Po)}return e&&(this.typeCache[t]=e),e}},Io.setupCssCb=function(t,e){this.pendingCssEvent=t;var n=this,r=this.el,i=this.pendingCssCb=function(o){o.target===r&&(J(r,t,i),n.pendingCssEvent=n.pendingCssCb=null,!n.pendingJsCb&&e&&e())};Z(r,t,i)};var Ho={priority:qi,update:function(t,e){var n=this.el,r=bt(this.vm.$options,"transitions",t);t=t||"v",e=e||"v",n.__v_trans=new Me(n,t,r,this.vm),tt(n,e+"-transition"),K(n,t+"-transition")}},qo={style:ho,"class":To,component:Ao,prop:Oo,transition:Ho},zo=/^v-bind:|^:/,Vo=/^v-on:|^@/,Uo=/^v-([^:]+)(?:$|:(.*)$)/,Wo=/\.[^\.]+/g,Xo=/^(v-bind:|:)?transition$/,Go=1e3,Zo=2e3;tn.terminal=!0;var Jo=/[^\w\-:\.]/,Yo=Object.freeze({compile:Fe,compileAndLinkProps:He,compileRoot:qe,transclude:un,resolveSlots:hn}),Qo=/^v-on:|^@/;mn.prototype._bind=function(){var t=this.name,e=this.descriptor;if(("cloak"!==t||this.vm._isCompiled)&&this.el&&this.el.removeAttribute){var n=e.attr||"v-"+t;this.el.removeAttribute(n)}var r=e.def;if("function"==typeof r?this.update=r:m(this,r),this._setupParams(),this.bind&&this.bind(),this._bound=!0,this.literal)this.update&&this.update(e.raw);else if((this.expression||this.modifiers)&&(this.update||this.twoWay)&&!this._checkStatement()){var i=this;this.update?this._update=function(t,e){i._locked||i.update(t,e)}:this._update=gn;var o=this._preProcess?v(this._preProcess,this):null,a=this._postProcess?v(this._postProcess,this):null,s=this._watcher=new Xt(this.vm,this.expression,this._update,{filters:this.filters,twoWay:this.twoWay,deep:this.deep,preProcess:o,postProcess:a,scope:this._scope});this.afterBind?this.afterBind():this.update&&this.update(s.value)}},mn.prototype._setupParams=function(){if(this.params){var t=this.params;this.params=Object.create(null);for(var e,n,r,i=t.length;i--;)e=d(t[i]),r=f(e),n=q(this.el,e),null!=n?this._setupParamWatcher(r,n):(n=H(this.el,e),null!=n&&(this.params[r]=""===n||n))}},mn.prototype._setupParamWatcher=function(t,e){var n=this,r=!1,i=(this._scope||this.vm).$watch(e,function(e,i){if(n.params[t]=e,r){var o=n.paramWatchers&&n.paramWatchers[t];o&&o.call(n,e,i)}else r=!0},{immediate:!0,user:!1});(this._paramUnwatchFns||(this._paramUnwatchFns=[])).push(i)},mn.prototype._checkStatement=function(){var t=this.expression;if(t&&this.acceptStatement&&!qt(t)){var e=Ht(t).get,n=this._scope||this.vm,r=function(t){n.$event=t,e.call(n,n),n.$event=null};return this.filters&&(r=n._applyFilters(r,null,this.filters)),this.update(r),!0}},mn.prototype.set=function(t){this.twoWay&&this._withLock(function(){this._watcher.set(t)})},mn.prototype._withLock=function(t){var e=this;e._locked=!0,t.call(e),nr(function(){e._locked=!1})},mn.prototype.on=function(t,e,n){Z(this.el,t,e,n),(this._listeners||(this._listeners=[])).push([t,e])},mn.prototype._teardown=function(){if(this._bound){this._bound=!1,this.unbind&&this.unbind(),this._watcher&&this._watcher.teardown();var t,e=this._listeners;if(e)for(t=e.length;t--;)J(this.el,e[t][0],e[t][1]);var n=this._paramUnwatchFns;if(n)for(t=n.length;t--;)n[t]();this.vm=this.el=this._watcher=this._listeners=null}};var Ko=/[^|]\|[^|]/;St(kn),pn(kn),vn(kn),yn(kn),bn(kn),xn(kn),wn(kn),_n(kn),Cn(kn);var ta={priority:Gi,params:["name"],bind:function(){var t=this.params.name||"default",e=this.vm._slotContents&&this.vm._slotContents[t];e&&e.hasChildNodes()?this.compile(e.cloneNode(!0),this.vm._context,this.vm):this.fallback()},compile:function(t,e,n){if(t&&e){if(this.el.hasChildNodes()&&1===t.childNodes.length&&1===t.childNodes[0].nodeType&&t.childNodes[0].hasAttribute("v-if")){var r=document.createElement("template");r.setAttribute("v-else",""),r.innerHTML=this.el.innerHTML,r._context=this.vm,t.appendChild(r)}var i=n?n._scope:this._scope;this.unlink=e.$compile(t,n,i,this._frag)}t?G(this.el,t):W(this.el)},fallback:function(){this.compile(et(this.el,!0),this.vm)},unbind:function(){this.unlink&&this.unlink()}},ea={priority:Ui,params:["name"],paramWatchers:{name:function(t){Yi.remove.call(this),t&&this.insert(t)}},bind:function(){this.anchor=ot("v-partial"),G(this.el,this.anchor),this.insert(this.params.name)},insert:function(t){var e=bt(this.vm.$options,"partials",t,!0);e&&(this.factory=new se(this.vm,e),Yi.insert.call(this))},unbind:function(){this.frag&&this.frag.destroy()}},na={slot:ta,partial:ea},ra=Ji._postProcess,ia=/(\d{3})(?=\d)/g,oa={orderBy:Sn,filterBy:An,limitBy:Tn,json:{read:function(t,e){return"string"==typeof t?t:JSON.stringify(t,null,arguments.length>1?e:2)},write:function(t){try{return JSON.parse(t)}catch(e){return t}}},capitalize:function(t){return t||0===t?(t=t.toString(),t.charAt(0).toUpperCase()+t.slice(1)):""},uppercase:function(t){return t||0===t?t.toString().toUpperCase():""},lowercase:function(t){return t||0===t?t.toString().toLowerCase():""},currency:function(t,e,n){if(t=parseFloat(t),!isFinite(t)||!t&&0!==t)return"";e=null!=e?e:"$",n=null!=n?n:2;var r=Math.abs(t).toFixed(n),i=n?r.slice(0,-1-n):r,o=i.length%3,a=o>0?i.slice(0,o)+(i.length>3?",":""):"",s=n?r.slice(-1-n):"",u=t<0?"-":"";return u+e+a+i.slice(o).replace(ia,"$1,")+s},pluralize:function(t){var e=g(arguments,1);return e.length>1?e[t%10-1]||e[e.length-1]:e[0]+(1===t?"":"s")},debounce:function(t,e){if(t)return e||(e=300),w(t,e)}};En(kn),kn.version="1.0.25",setTimeout(function(){Er.devtools&&Hn&&Hn.emit("init",kn)},0),t.exports=kn}).call(e,function(){return this}())},function(t,e,n){var r,i;(function(o){"use strict";var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol?"symbol":typeof t};/*!
+"use strict";function n(t,e,r){if(i(t,e))return void(t[e]=r);if(t._isVue)return void n(t._data,e,r);var o=t.__ob__;if(!o)return void(t[e]=r);if(o.convert(e,r),o.dep.notify(),o.vms)for(var a=o.vms.length;a--;){var s=o.vms[a];s._proxy(e),s._digest()}return r}function r(t,e){if(i(t,e)){delete t[e];var n=t.__ob__;if(!n)return void(t._isVue&&(delete t._data[e],t._digest()));if(n.dep.notify(),n.vms)for(var r=n.vms.length;r--;){var o=n.vms[r];o._unproxy(e),o._digest()}}}function i(t,e){return On.call(t,e)}function o(t){return Nn.test(t)}function a(t){var e=(t+"").charCodeAt(0);return 36===e||95===e}function s(t){return null==t?"":t.toString()}function u(t){if("string"!=typeof t)return t;var e=Number(t);return isNaN(e)?t:e}function c(t){return"true"===t||"false"!==t&&t}function l(t){var e=t.charCodeAt(0),n=t.charCodeAt(t.length-1);return e!==n||34!==e&&39!==e?t:t.slice(1,-1)}function f(t){return t.replace(Dn,h)}function h(t,e){return e?e.toUpperCase():""}function d(t){return t.replace(Mn,"$1-$2").toLowerCase()}function p(t){return t.replace(Pn,h)}function v(t,e){return function(n){var r=arguments.length;return r?r>1?t.apply(e,arguments):t.call(e,n):t.call(e)}}function g(t,e){e=e||0;for(var n=t.length-e,r=new Array(n);n--;)r[n]=t[n+e];return r}function m(t,e){for(var n=Object.keys(e),r=n.length;r--;)t[n[r]]=e[n[r]];return t}function y(t){return null!==t&&"object"===("undefined"==typeof t?"undefined":jn(t))}function b(t){return Fn.call(t)===Bn}function x(t,e,n,r){Object.defineProperty(t,e,{value:n,enumerable:!!r,writable:!0,configurable:!0})}function w(t,e){var n,r,i,o,a,s=function u(){var s=Date.now()-o;s<e&&s>=0?n=setTimeout(u,e-s):(n=null,a=t.apply(i,r),n||(i=r=null))};return function(){return i=this,r=arguments,o=Date.now(),n||(n=setTimeout(s,e)),a}}function _(t,e){for(var n=t.length;n--;)if(t[n]===e)return n;return-1}function C(t){var e=function n(){if(!n.cancelled)return t.apply(this,arguments)};return e.cancel=function(){e.cancelled=!0},e}function k(t,e){return t==e||!(!y(t)||!y(e))&&JSON.stringify(t)===JSON.stringify(e)}function T(t){this.size=0,this.limit=t,this.head=this.tail=void 0,this._keymap=Object.create(null)}function A(){var t,e=or.slice(fr,cr).trim();if(e){t={};var n=e.match(yr);t.name=n[0],n.length>1&&(t.args=n.slice(1).map(S))}t&&(ar.filters=ar.filters||[]).push(t),fr=cr+1}function S(t){if(br.test(t))return{value:u(t),dynamic:!1};var e=l(t),n=e===t;return{value:n?t:e,dynamic:n}}function $(t){var e=mr.get(t);if(e)return e;for(or=t,hr=dr=!1,pr=vr=gr=0,fr=0,ar={},cr=0,lr=or.length;cr<lr;cr++)if(ur=sr,sr=or.charCodeAt(cr),hr)39===sr&&92!==ur&&(hr=!hr);else if(dr)34===sr&&92!==ur&&(dr=!dr);else if(124===sr&&124!==or.charCodeAt(cr+1)&&124!==or.charCodeAt(cr-1))null==ar.expression?(fr=cr+1,ar.expression=or.slice(0,cr).trim()):A();else switch(sr){case 34:dr=!0;break;case 39:hr=!0;break;case 40:gr++;break;case 41:gr--;break;case 91:vr++;break;case 93:vr--;break;case 123:pr++;break;case 125:pr--}return null==ar.expression?ar.expression=or.slice(0,cr).trim():0!==fr&&A(),mr.put(t,ar),ar}function E(t){return t.replace(wr,"\\$&")}function j(){var t=E(Er.delimiters[0]),e=E(Er.delimiters[1]),n=E(Er.unsafeDelimiters[0]),r=E(Er.unsafeDelimiters[1]);Cr=new RegExp(n+"((?:.|\\n)+?)"+r+"|"+t+"((?:.|\\n)+?)"+e,"g"),kr=new RegExp("^"+n+"((?:.|\\n)+?)"+r+"$"),_r=new T(1e3)}function O(t){_r||j();var e=_r.get(t);if(e)return e;if(!Cr.test(t))return null;for(var n,r,i,o,a,s,u=[],c=Cr.lastIndex=0;n=Cr.exec(t);)r=n.index,r>c&&u.push({value:t.slice(c,r)}),i=kr.test(n[0]),o=i?n[1]:n[2],a=o.charCodeAt(0),s=42===a,o=s?o.slice(1):o,u.push({tag:!0,value:o.trim(),html:i,oneTime:s}),c=r+n[0].length;return c<t.length&&u.push({value:t.slice(c)}),_r.put(t,u),u}function N(t,e){return t.length>1?t.map(function(t){return D(t,e)}).join("+"):D(t[0],e,!0)}function D(t,e,n){return t.tag?t.oneTime&&e?'"'+e.$eval(t.value)+'"':M(t.value,n):'"'+t.value+'"'}function M(t,e){if(Tr.test(t)){var n=$(t);return n.filters?"this._applyFilters("+n.expression+",null,"+JSON.stringify(n.filters)+",false)":"("+t+")"}return e?t:"("+t+")"}function P(t,e,n,r){L(t,1,function(){e.appendChild(t)},n,r)}function F(t,e,n,r){L(t,1,function(){V(t,e)},n,r)}function B(t,e,n){L(t,-1,function(){W(t)},e,n)}function L(t,e,n,r,i){var o=t.__v_trans;if(!o||!o.hooks&&!Yn||!r._isCompiled||r.$parent&&!r.$parent._isCompiled)return n(),void(i&&i());var a=e>0?"enter":"leave";o[a](n,i)}function R(t){if("string"==typeof t){t=document.querySelector(t)}return t}function I(t){if(!t)return!1;var e=t.ownerDocument.documentElement,n=t.parentNode;return e===t||e===n||!(!n||1!==n.nodeType||!e.contains(n))}function q(t,e){var n=t.getAttribute(e);return null!==n&&t.removeAttribute(e),n}function H(t,e){var n=q(t,":"+e);return null===n&&(n=q(t,"v-bind:"+e)),n}function z(t,e){return t.hasAttribute(e)||t.hasAttribute(":"+e)||t.hasAttribute("v-bind:"+e)}function V(t,e){e.parentNode.insertBefore(t,e)}function U(t,e){e.nextSibling?V(t,e.nextSibling):e.parentNode.appendChild(t)}function W(t){t.parentNode.removeChild(t)}function X(t,e){e.firstChild?V(t,e.firstChild):e.appendChild(t)}function G(t,e){var n=t.parentNode;n&&n.replaceChild(e,t)}function Z(t,e,n,r){t.addEventListener(e,n,r)}function J(t,e,n){t.removeEventListener(e,n)}function Y(t){var e=t.className;return"object"===("undefined"==typeof e?"undefined":jn(e))&&(e=e.baseVal||""),e}function Q(t,e){Vn&&!/svg$/.test(t.namespaceURI)?t.className=e:t.setAttribute("class",e)}function K(t,e){if(t.classList)t.classList.add(e);else{var n=" "+Y(t)+" ";n.indexOf(" "+e+" ")<0&&Q(t,(n+e).trim())}}function tt(t,e){if(t.classList)t.classList.remove(e);else{for(var n=" "+Y(t)+" ",r=" "+e+" ";n.indexOf(r)>=0;)n=n.replace(r," ");Q(t,n.trim())}t.className||t.removeAttribute("class")}function et(t,e){var n,r;if(it(t)&&ct(t.content)&&(t=t.content),t.hasChildNodes())for(nt(t),r=e?document.createDocumentFragment():document.createElement("div");n=t.firstChild;)r.appendChild(n);return r}function nt(t){for(var e;e=t.firstChild,rt(e);)t.removeChild(e);for(;e=t.lastChild,rt(e);)t.removeChild(e)}function rt(t){return t&&(3===t.nodeType&&!t.data.trim()||8===t.nodeType)}function it(t){return t.tagName&&"template"===t.tagName.toLowerCase()}function ot(t,e){var n=Er.debug?document.createComment(t):document.createTextNode(e?" ":"");return n.__v_anchor=!0,n}function at(t){if(t.hasAttributes())for(var e=t.attributes,n=0,r=e.length;n<r;n++){var i=e[n].name;if(Nr.test(i))return f(i.replace(Nr,""))}}function st(t,e,n){for(var r;t!==e;)r=t.nextSibling,n(t),t=r;n(e)}function ut(t,e,n,r,i){function o(){if(s++,a&&s>=u.length){for(var t=0;t<u.length;t++)r.appendChild(u[t]);i&&i()}}var a=!1,s=0,u=[];st(t,e,function(t){t===e&&(a=!0),u.push(t),B(t,n,o)})}function ct(t){return t&&11===t.nodeType}function lt(t){if(t.outerHTML)return t.outerHTML;var e=document.createElement("div");return e.appendChild(t.cloneNode(!0)),e.innerHTML}function ft(t,e){var n=t.tagName.toLowerCase(),r=t.hasAttributes();if(Dr.test(n)||Mr.test(n)){if(r)return ht(t,e)}else{if(bt(e,"components",n))return{id:n};var i=r&&ht(t,e);if(i)return i}}function ht(t,e){var n=t.getAttribute("is");if(null!=n){if(bt(e,"components",n))return t.removeAttribute("is"),{id:n}}else if(n=H(t,"is"),null!=n)return{id:n,dynamic:!0}}function dt(t,e){var r,o,a;for(r in e)o=t[r],a=e[r],i(t,r)?y(o)&&y(a)&&dt(o,a):n(t,r,a);return t}function pt(t,e){var n=Object.create(t||null);return e?m(n,mt(e)):n}function vt(t){if(t.components)for(var e,n=t.components=mt(t.components),r=Object.keys(n),i=0,o=r.length;i<o;i++){var a=r[i];Dr.test(a)||Mr.test(a)||(e=n[a],b(e)&&(n[a]=kn.extend(e)))}}function gt(t){var e,n,r=t.props;if(Ln(r))for(t.props={},e=r.length;e--;)n=r[e],"string"==typeof n?t.props[n]=null:n.name&&(t.props[n.name]=n);else if(b(r)){var i=Object.keys(r);for(e=i.length;e--;)n=r[i[e]],"function"==typeof n&&(r[i[e]]={type:n})}}function mt(t){if(Ln(t)){for(var e,n={},r=t.length;r--;){e=t[r];var i="function"==typeof e?e.options&&e.options.name||e.id:e.name||e.id;i&&(n[i]=e)}return n}return t}function yt(t,e,n){function r(r){var i=Pr[r]||Fr;a[r]=i(t[r],e[r],n,r)}vt(e),gt(e);var o,a={};if(e["extends"]&&(t="function"==typeof e["extends"]?yt(t,e["extends"].options,n):yt(t,e["extends"],n)),e.mixins)for(var s=0,u=e.mixins.length;s<u;s++){var c=e.mixins[s],l=c.prototype instanceof kn?c.options:c;t=yt(t,l,n)}for(o in t)r(o);for(o in e)i(t,o)||r(o);return a}function bt(t,e,n,r){if("string"==typeof n){var i,o=t[e],a=o[n]||o[i=f(n)]||o[i.charAt(0).toUpperCase()+i.slice(1)];return a}}function xt(){this.id=Br++,this.subs=[]}function wt(t){qr=!1,t(),qr=!0}function _t(t){if(this.value=t,this.dep=new xt,x(t,"__ob__",this),Ln(t)){var e=Rn?Ct:kt;e(t,Rr,Ir),this.observeArray(t)}else this.walk(t)}function Ct(t,e){t.__proto__=e}function kt(t,e,n){for(var r=0,i=n.length;r<i;r++){var o=n[r];x(t,o,e[o])}}function Tt(t,e){if(t&&"object"===("undefined"==typeof t?"undefined":jn(t))){var n;return i(t,"__ob__")&&t.__ob__ instanceof _t?n=t.__ob__:qr&&(Ln(t)||b(t))&&Object.isExtensible(t)&&!t._isVue&&(n=new _t(t)),n&&e&&n.addVm(e),n}}function At(t,e,n){var r=new xt,i=Object.getOwnPropertyDescriptor(t,e);if(!i||i.configurable!==!1){var o=i&&i.get,a=i&&i.set,s=Tt(n);Object.defineProperty(t,e,{enumerable:!0,configurable:!0,get:function(){var e=o?o.call(t):n;if(xt.target&&(r.depend(),s&&s.dep.depend(),Ln(e)))for(var i,a=0,u=e.length;a<u;a++)i=e[a],i&&i.__ob__&&i.__ob__.dep.depend();return e},set:function(e){var i=o?o.call(t):n;e!==i&&(a?a.call(t,e):n=e,s=Tt(e),r.notify())}})}}function St(t){t.prototype._init=function(t){t=t||{},this.$el=null,this.$parent=t.parent,this.$root=this.$parent?this.$parent.$root:this,this.$children=[],this.$refs={},this.$els={},this._watchers=[],this._directives=[],this._uid=zr++,this._isVue=!0,this._events={},this._eventsCount={},this._isFragment=!1,this._fragment=this._fragmentStart=this._fragmentEnd=null,this._isCompiled=this._isDestroyed=this._isReady=this._isAttached=this._isBeingDestroyed=this._vForRemoving=!1,this._unlinkFn=null,this._context=t._context||this.$parent,this._scope=t._scope,this._frag=t._frag,this._frag&&this._frag.children.push(this),this.$parent&&this.$parent.$children.push(this),t=this.$options=yt(this.constructor.options,t,this),this._updateRef(),this._data={},this._callHook("init"),this._initState(),this._initEvents(),this._callHook("created"),t.el&&this.$mount(t.el)}}function $t(t){if(void 0===t)return"eof";var e=t.charCodeAt(0);switch(e){case 91:case 93:case 46:case 34:case 39:case 48:return t;case 95:case 36:return"ident";case 32:case 9:case 10:case 13:case 160:case 65279:case 8232:case 8233:return"ws"}return e>=97&&e<=122||e>=65&&e<=90?"ident":e>=49&&e<=57?"number":"else"}function Et(t){var e=t.trim();return("0"!==t.charAt(0)||!isNaN(t))&&(o(e)?l(e):"*"+e)}function jt(t){function e(){var e=t[l+1];if(f===ti&&"'"===e||f===ei&&'"'===e)return l++,r="\\"+e,d[Ur](),!0}var n,r,i,o,a,s,u,c=[],l=-1,f=Zr,h=0,d=[];for(d[Wr]=function(){void 0!==i&&(c.push(i),i=void 0)},d[Ur]=function(){void 0===i?i=r:i+=r},d[Xr]=function(){d[Ur](),h++},d[Gr]=function(){if(h>0)h--,f=Kr,d[Ur]();else{if(h=0,i=Et(i),i===!1)return!1;d[Wr]()}};null!=f;)if(l++,n=t[l],"\\"!==n||!e()){if(o=$t(n),u=ii[f],a=u[o]||u["else"]||ri,a===ri)return;if(f=a[0],s=d[a[1]],s&&(r=a[2],r=void 0===r?n:r,s()===!1))return;if(f===ni)return c.raw=t,c}}function Ot(t){var e=Vr.get(t);return e||(e=jt(t),e&&Vr.put(t,e)),e}function Nt(t,e){return qt(e).get(t)}function Dt(t,e,r){var i=t;if("string"==typeof e&&(e=jt(e)),!e||!y(t))return!1;for(var o,a,s=0,u=e.length;s<u;s++)o=t,a=e[s],"*"===a.charAt(0)&&(a=qt(a.slice(1)).get.call(i,i)),s<u-1?(t=t[a],y(t)||(t={},n(o,a,t))):Ln(t)?t.$set(a,r):a in t?t[a]=r:n(t,a,r);return!0}function Mt(){}function Pt(t,e){var n=yi.length;return yi[n]=e?t.replace(hi,"\\n"):t,'"'+n+'"'}function Ft(t){var e=t.charAt(0),n=t.slice(1);return ui.test(n)?t:(n=n.indexOf('"')>-1?n.replace(pi,Bt):n,e+"scope."+n)}function Bt(t,e){return yi[e]}function Lt(t){li.test(t),yi.length=0;var e=t.replace(di,Pt).replace(fi,"");return e=(" "+e).replace(gi,Ft).replace(pi,Bt),Rt(e)}function Rt(t){try{return new Function("scope","return "+t+";")}catch(e){return Mt}}function It(t){var e=Ot(t);if(e)return function(t,n){Dt(t,e,n)}}function qt(t,e){t=t.trim();var n=ai.get(t);if(n)return e&&!n.set&&(n.set=It(n.exp)),n;var r={exp:t};return r.get=Ht(t)&&t.indexOf("[")<0?Rt("scope."+t):Lt(t),e&&(r.set=It(t)),ai.put(t,r),r}function Ht(t){return vi.test(t)&&!mi.test(t)&&"Math."!==t.slice(0,5)}function zt(){xi.length=0,wi.length=0,_i={},Ci={},ki=!1}function Vt(){for(var t=!0;t;)t=!1,Ut(xi),Ut(wi),xi.length?t=!0:(qn&&Er.devtools&&qn.emit("flush"),zt())}function Ut(t){for(var e=0;e<t.length;e++){var n=t[e],r=n.id;_i[r]=null,n.run()}t.length=0}function Wt(t){var e=t.id;if(null==_i[e]){var n=t.user?wi:xi;_i[e]=n.length,n.push(t),ki||(ki=!0,nr(Vt))}}function Xt(t,e,n,r){r&&m(this,r);var i="function"==typeof e;if(this.vm=t,t._watchers.push(this),this.expression=e,this.cb=n,this.id=++Ti,this.active=!0,this.dirty=this.lazy,this.deps=[],this.newDeps=[],this.depIds=new rr,this.newDepIds=new rr,this.prevError=null,i)this.getter=e,this.setter=void 0;else{var o=qt(e,this.twoWay);this.getter=o.get,this.setter=o.set}this.value=this.lazy?void 0:this.get(),this.queued=this.shallow=!1}function Gt(t,e){var n=void 0,r=void 0;e||(e=Ai,e.clear());var i=Ln(t),o=y(t);if(i||o){if(t.__ob__){var a=t.__ob__.dep.id;if(e.has(a))return;e.add(a)}if(i)for(n=t.length;n--;)Gt(t[n],e);else if(o)for(r=Object.keys(t),n=r.length;n--;)Gt(t[r[n]],e)}}function Zt(t){return it(t)&&ct(t.content)}function Jt(t,e){var n=e?t:t.trim(),r=$i.get(n);if(r)return r;var i=document.createDocumentFragment(),o=t.match(Oi),a=Ni.test(t),s=Di.test(t);if(o||a||s){var u=o&&o[1],c=ji[u]||ji.efault,l=c[0],f=c[1],h=c[2],d=document.createElement("div");for(d.innerHTML=f+t+h;l--;)d=d.lastChild;for(var p;p=d.firstChild;)i.appendChild(p)}else i.appendChild(document.createTextNode(t));return e||nt(i),$i.put(n,i),i}function Yt(t){if(Zt(t))return Jt(t.innerHTML);if("SCRIPT"===t.tagName)return Jt(t.textContent);for(var e,n=Qt(t),r=document.createDocumentFragment();e=n.firstChild;)r.appendChild(e);return nt(r),r}function Qt(t){if(!t.querySelectorAll)return t.cloneNode();var e,n,r,i=t.cloneNode(!0);if(Mi){var o=i;if(Zt(t)&&(t=t.content,o=i.content),n=t.querySelectorAll("template"),n.length)for(r=o.querySelectorAll("template"),e=r.length;e--;)r[e].parentNode.replaceChild(Qt(n[e]),r[e])}if(Pi)if("TEXTAREA"===t.tagName)i.value=t.value;else if(n=t.querySelectorAll("textarea"),n.length)for(r=i.querySelectorAll("textarea"),e=r.length;e--;)r[e].value=n[e].value;return i}function Kt(t,e,n){var r,i;return ct(t)?(nt(t),e?Qt(t):t):("string"==typeof t?n||"#"!==t.charAt(0)?i=Jt(t,n):(i=Ei.get(t),i||(r=document.getElementById(t.slice(1)),r&&(i=Yt(r),Ei.put(t,i)))):t.nodeType&&(i=Yt(t)),i&&e?Qt(i):i)}function te(t,e,n,r,i,o){this.children=[],this.childFrags=[],this.vm=e,this.scope=i,this.inserted=!1,this.parentFrag=o,o&&o.childFrags.push(this),this.unlink=t(e,n,r,i,this);var a=this.single=1===n.childNodes.length&&!n.childNodes[0].__v_anchor;a?(this.node=n.childNodes[0],this.before=ee,this.remove=ne):(this.node=ot("fragment-start"),this.end=ot("fragment-end"),this.frag=n,X(this.node,n),n.appendChild(this.end),this.before=re,this.remove=ie),this.node.__v_frag=this}function ee(t,e){this.inserted=!0;var n=e!==!1?F:V;n(this.node,t,this.vm),I(this.node)&&this.callHook(oe)}function ne(){this.inserted=!1;var t=I(this.node),e=this;this.beforeRemove(),B(this.node,this.vm,function(){t&&e.callHook(ae),e.destroy()})}function re(t,e){this.inserted=!0;var n=this.vm,r=e!==!1?F:V;st(this.node,this.end,function(e){r(e,t,n)}),I(this.node)&&this.callHook(oe)}function ie(){this.inserted=!1;var t=this,e=I(this.node);this.beforeRemove(),ut(this.node,this.end,this.vm,this.frag,function(){e&&t.callHook(ae),t.destroy()})}function oe(t){!t._isAttached&&I(t.$el)&&t._callHook("attached")}function ae(t){t._isAttached&&!I(t.$el)&&t._callHook("detached")}function se(t,e){this.vm=t;var n,r="string"==typeof e;r||it(e)&&!e.hasAttribute("v-if")?n=Kt(e,!0):(n=document.createDocumentFragment(),n.appendChild(e)),this.template=n;var i,o=t.constructor.cid;if(o>0){var a=o+(r?e:lt(e));i=Li.get(a),i||(i=Fe(n,t.$options,!0),Li.put(a,i))}else i=Fe(n,t.$options,!0);this.linker=i}function ue(t,e,n){var r=t.node.previousSibling;if(r){for(t=r.__v_frag;!(t&&t.forId===n&&t.inserted||r===e);){if(r=r.previousSibling,!r)return;t=r.__v_frag}return t}}function ce(t){var e=t.node;if(t.end)for(;!e.__vue__&&e!==t.end&&e.nextSibling;)e=e.nextSibling;return e.__vue__}function le(t){for(var e=-1,n=new Array(Math.floor(t));++e<t;)n[e]=e;return n}function fe(t,e,n,r){return r?"$index"===r?t:r.charAt(0).match(/\w/)?Nt(n,r):n[r]:e||n}function he(t,e,n){for(var r,i,o,a=e?[]:null,s=0,u=t.options.length;s<u;s++)if(r=t.options[s],o=n?r.hasAttribute("selected"):r.selected){if(i=r.hasOwnProperty("_value")?r._value:r.value,!e)return i;a.push(i)}return a}function de(t,e){for(var n=t.length;n--;)if(k(t[n],e))return n;return-1}function pe(t,e){var n=e.map(function(t){var e=t.charCodeAt(0);return e>47&&e<58?parseInt(t,10):1===t.length&&(e=t.toUpperCase().charCodeAt(0),e>64&&e<91)?e:oo[t]});return n=[].concat.apply([],n),function(e){if(n.indexOf(e.keyCode)>-1)return t.call(this,e)}}function ve(t){return function(e){return e.stopPropagation(),t.call(this,e)}}function ge(t){return function(e){return e.preventDefault(),t.call(this,e)}}function me(t){return function(e){if(e.target===e.currentTarget)return t.call(this,e)}}function ye(t){if(lo[t])return lo[t];var e=be(t);return lo[t]=lo[e]=e,e}function be(t){t=d(t);var e=f(t),n=e.charAt(0).toUpperCase()+e.slice(1);fo||(fo=document.createElement("div"));var r,i=so.length;if("filter"!==e&&e in fo.style)return{kebab:t,camel:e};for(;i--;)if(r=uo[i]+n,r in fo.style)return{kebab:so[i]+t,camel:r}}function xe(t){var e=[];if(Ln(t))for(var n=0,r=t.length;n<r;n++){var i=t[n];if(i)if("string"==typeof i)e.push(i);else for(var o in i)i[o]&&e.push(o)}else if(y(t))for(var a in t)t[a]&&e.push(a);return e}function we(t,e,n){if(e=e.trim(),e.indexOf(" ")===-1)return void n(t,e);for(var r=e.split(/\s+/),i=0,o=r.length;i<o;i++)n(t,r[i])}function _e(t,e,n){function r(){++o>=i?n():t[o].call(e,r)}var i=t.length,o=0;t[0].call(e,r)}function Ce(t,e,n){for(var r,i,a,s,u,c,l,h=[],p=Object.keys(e),v=p.length;v--;)if(i=p[v],r=e[i]||$o,u=f(i),Eo.test(u)){if(l={name:i,path:u,options:r,mode:So.ONE_WAY,raw:null},a=d(i),null===(s=H(t,a))&&(null!==(s=H(t,a+".sync"))?l.mode=So.TWO_WAY:null!==(s=H(t,a+".once"))&&(l.mode=So.ONE_TIME)),null!==s)l.raw=s,c=$(s),s=c.expression,l.filters=c.filters,o(s)&&!c.filters?l.optimizedLiteral=!0:l.dynamic=!0,l.parentPath=s;else if(null!==(s=q(t,a)))l.raw=s;else;h.push(l)}return ke(h)}function ke(t){return function(e,n){e._props={};for(var r,o,a,s,f,h=e.$options.propsData,p=t.length;p--;)if(r=t[p],f=r.raw,o=r.path,a=r.options,e._props[o]=r,h&&i(h,o)&&Ae(e,r,h[o]),null===f)Ae(e,r,void 0);else if(r.dynamic)r.mode===So.ONE_TIME?(s=(n||e._context||e).$get(r.parentPath),Ae(e,r,s)):e._context?e._bindDir({name:"prop",def:Oo,prop:r},null,null,n):Ae(e,r,e.$get(r.parentPath));else if(r.optimizedLiteral){var v=l(f);s=v===f?c(u(f)):v,Ae(e,r,s)}else s=a.type===Boolean&&(""===f||f===d(r.name))||f,Ae(e,r,s)}}function Te(t,e,n,r){var i=e.dynamic&&Ht(e.parentPath),o=n;void 0===o&&(o=$e(t,e)),o=je(e,o,t);var a=o!==n;Ee(e,o,t)||(o=void 0),i&&!a?wt(function(){r(o)}):r(o)}function Ae(t,e,n){Te(t,e,n,function(n){At(t,e.path,n)})}function Se(t,e,n){Te(t,e,n,function(n){t[e.path]=n})}function $e(t,e){var n=e.options;if(!i(n,"default"))return n.type!==Boolean&&void 0;var r=n["default"];return y(r),"function"==typeof r&&n.type!==Function?r.call(t):r}function Ee(t,e,n){if(!t.options.required&&(null===t.raw||null==e))return!0;var r=t.options,i=r.type,o=!i,a=[];if(i){Ln(i)||(i=[i]);for(var s=0;s<i.length&&!o;s++){var u=Oe(e,i[s]);a.push(u.expectedType),o=u.valid}}if(!o)return!1;var c=r.validator;return!(c&&!c(e))}function je(t,e,n){var r=t.options.coerce;return r&&"function"==typeof r?r(e):e}function Oe(t,e){var n,r;return e===String?(r="string",n=("undefined"==typeof t?"undefined":jn(t))===r):e===Number?(r="number",n=("undefined"==typeof t?"undefined":jn(t))===r):e===Boolean?(r="boolean",n=("undefined"==typeof t?"undefined":jn(t))===r):e===Function?(r="function",n=("undefined"==typeof t?"undefined":jn(t))===r):e===Object?(r="object",n=b(t)):e===Array?(r="array",n=Ln(t)):n=t instanceof e,{valid:n,expectedType:r}}function Ne(t){No.push(t),Do||(Do=!0,nr(De))}function De(){for(var t=document.documentElement.offsetHeight,e=0;e<No.length;e++)No[e]();return No=[],Do=!1,t}function Me(t,e,n,r){this.id=e,this.el=t,this.enterClass=n&&n.enterClass||e+"-enter",this.leaveClass=n&&n.leaveClass||e+"-leave",this.hooks=n,this.vm=r,this.pendingCssEvent=this.pendingCssCb=this.cancel=this.pendingJsCb=this.op=this.cb=null,this.justEntered=!1,this.entered=this.left=!1,this.typeCache={},this.type=n&&n.type;var i=this;["enterNextTick","enterDone","leaveNextTick","leaveDone"].forEach(function(t){i[t]=v(i[t],i)})}function Pe(t){if(/svg$/.test(t.namespaceURI)){var e=t.getBoundingClientRect();return!(e.width||e.height)}return!(t.offsetWidth||t.offsetHeight||t.getClientRects().length)}function Fe(t,e,n){var r=n||!e._asComponent?ze(t,e):null,i=r&&r.terminal||sn(t)||!t.hasChildNodes()?null:Ze(t.childNodes,e);return function(t,e,n,o,a){var s=g(e.childNodes),u=Be(function(){r&&r(t,e,n,o,a),i&&i(t,s,n,o,a)},t);return Re(t,u)}}function Be(t,e){e._directives=[];var n=e._directives.length;t();var r=e._directives.slice(n);r.sort(Le);for(var i=0,o=r.length;i<o;i++)r[i]._bind();return r}function Le(t,e){return t=t.descriptor.def.priority||Go,e=e.descriptor.def.priority||Go,t>e?-1:t===e?0:1}function Re(t,e,n,r){function i(i){Ie(t,e,i),n&&r&&Ie(n,r)}return i.dirs=e,i}function Ie(t,e,n){for(var r=e.length;r--;)e[r]._teardown()}function qe(t,e,n,r){var i=Ce(e,n,t),o=Be(function(){i(t,r)},t);return Re(t,o)}function He(t,e,n){var r,i,o=e._containerAttrs,a=e._replacerAttrs;if(11!==t.nodeType)e._asComponent?(o&&n&&(r=nn(o,n)),a&&(i=nn(a,e))):i=nn(t.attributes,e);else;return e._containerAttrs=e._replacerAttrs=null,function(t,e,n){var o,a=t._context;a&&r&&(o=Be(function(){r(a,e,null,n)},a));var s=Be(function(){i&&i(t,e)},t);return Re(t,s,a,o)}}function ze(t,e){var n=t.nodeType;return 1!==n||sn(t)?3===n&&t.data.trim()?Ue(t,e):null:Ve(t,e)}function Ve(t,e){if("TEXTAREA"===t.tagName){var n=O(t.value);n&&(t.setAttribute(":value",N(n)),t.value="")}var r,i=t.hasAttributes(),o=i&&g(t.attributes);return i&&(r=Ke(t,o,e)),r||(r=Ye(t,e)),r||(r=Qe(t,e)),!r&&i&&(r=nn(o,e)),r}function Ue(t,e){if(t._skip)return We;var n=O(t.wholeText);if(!n)return null;for(var r=t.nextSibling;r&&3===r.nodeType;)r._skip=!0,r=r.nextSibling;for(var i,o,a=document.createDocumentFragment(),s=0,u=n.length;s<u;s++)o=n[s],i=o.tag?Xe(o,e):document.createTextNode(o.value),a.appendChild(i);return Ge(n,a,e)}function We(t,e){W(e)}function Xe(t,e){function n(e){if(!t.descriptor){var n=$(t.value);t.descriptor={name:e,def:ko[e],expression:n.expression,filters:n.filters}}}var r;return t.oneTime?r=document.createTextNode(t.value):t.html?(r=document.createComment("v-html"),n("html")):(r=document.createTextNode(" "),n("text")),r}function Ge(t,e){return function(n,r,i,o){for(var a,u,c,l=e.cloneNode(!0),f=g(l.childNodes),h=0,d=t.length;h<d;h++)a=t[h],u=a.value,a.tag&&(c=f[h],a.oneTime?(u=(o||n).$eval(u),a.html?G(c,Kt(u,!0)):c.data=s(u)):n._bindDir(a.descriptor,c,i,o));G(r,l)}}function Ze(t,e){for(var n,r,i,o=[],a=0,s=t.length;a<s;a++)i=t[a],n=ze(i,e),r=n&&n.terminal||"SCRIPT"===i.tagName||!i.hasChildNodes()?null:Ze(i.childNodes,e),o.push(n,r);return o.length?Je(o):null}function Je(t){return function(e,n,r,i,o){for(var a,s,u,c=0,l=0,f=t.length;c<f;l++){a=n[l],s=t[c++],u=t[c++];var h=g(a.childNodes);s&&s(e,a,r,i,o),u&&u(e,h,r,i,o)}}}function Ye(t,e){var n=t.tagName.toLowerCase();if(!Dr.test(n)){var r=bt(e,"elementDirectives",n);return r?en(t,n,"",e,r):void 0}}function Qe(t,e){var n=ft(t,e);if(n){var r=at(t),i={name:"component",ref:r,expression:n.id,def:Ho.component,modifiers:{literal:!n.dynamic}},o=function(t,e,n,o,a){r&&At((o||t).$refs,r,null),t._bindDir(i,e,n,o,a)};return o.terminal=!0,o}}function Ke(t,e,n){if(null!==q(t,"v-pre"))return tn;if(t.hasAttribute("v-else")){var r=t.previousElementSibling;if(r&&r.hasAttribute("v-if"))return tn}for(var i,o,a,s,u,c,l,f,h,d,p=0,v=e.length;p<v;p++)i=e[p],o=i.name.replace(Wo,""),(u=o.match(Uo))&&(h=bt(n,"directives",u[1]),h&&h.terminal&&(!d||(h.priority||Zo)>d.priority)&&(d=h,l=i.name,s=rn(i.name),a=i.value,c=u[1],f=u[2]));return d?en(t,c,a,n,d,l,f,s):void 0}function tn(){}function en(t,e,n,r,i,o,a,s){var u=$(n),c={name:e,arg:a,expression:u.expression,filters:u.filters,raw:n,attr:o,modifiers:s,def:i};"for"!==e&&"router-view"!==e||(c.ref=at(t));var l=function(t,e,n,r,i){c.ref&&At((r||t).$refs,c.ref,null),t._bindDir(c,e,n,r,i)};return l.terminal=!0,l}function nn(t,e){function n(t,e,n){var r=n&&an(n),i=!r&&$(o);v.push({name:t,attr:a,raw:s,def:e,arg:c,modifiers:l,expression:i&&i.expression,filters:i&&i.filters,interp:n,hasOneTime:r})}for(var r,i,o,a,s,u,c,l,f,h,d,p=t.length,v=[];p--;)if(r=t[p],i=a=r.name,o=s=r.value,h=O(o),c=null,l=rn(i),i=i.replace(Wo,""),h)o=N(h),c=i,n("bind",ko.bind,h);else if(Xo.test(i))l.literal=!zo.test(i),n("transition",Ho.transition);else if(Vo.test(i))c=i.replace(Vo,""),n("on",ko.on);else if(zo.test(i))u=i.replace(zo,""),"style"===u||"class"===u?n(u,Ho[u]):(c=u,n("bind",ko.bind));else if(d=i.match(Uo)){if(u=d[1],c=d[2],"else"===u)continue;f=bt(e,"directives",u,!0),f&&n(u,f)}if(v.length)return on(v)}function rn(t){var e=Object.create(null),n=t.match(Wo);if(n)for(var r=n.length;r--;)e[n[r].slice(1)]=!0;return e}function on(t){return function(e,n,r,i,o){for(var a=t.length;a--;)e._bindDir(t[a],n,r,i,o)}}function an(t){for(var e=t.length;e--;)if(t[e].oneTime)return!0}function sn(t){return"SCRIPT"===t.tagName&&(!t.hasAttribute("type")||"text/javascript"===t.getAttribute("type"))}function un(t,e){return e&&(e._containerAttrs=ln(t)),it(t)&&(t=Kt(t)),e&&(e._asComponent&&!e.template&&(e.template="<slot></slot>"),e.template&&(e._content=et(t),t=cn(t,e))),ct(t)&&(X(ot("v-start",!0),t),t.appendChild(ot("v-end",!0))),t}function cn(t,e){var n=e.template,r=Kt(n,!0);if(r){var i=r.firstChild,o=i.tagName&&i.tagName.toLowerCase();return e.replace?(t===document.body,r.childNodes.length>1||1!==i.nodeType||"component"===o||bt(e,"components",o)||z(i,"is")||bt(e,"elementDirectives",o)||i.hasAttribute("v-for")||i.hasAttribute("v-if")?r:(e._replacerAttrs=ln(i),fn(t,i),i)):(t.appendChild(r),t)}}function ln(t){if(1===t.nodeType&&t.hasAttributes())return g(t.attributes)}function fn(t,e){for(var n,r,i=t.attributes,o=i.length;o--;)n=i[o].name,r=i[o].value,e.hasAttribute(n)||Jo.test(n)?"class"===n&&!O(r)&&(r=r.trim())&&r.split(/\s+/).forEach(function(t){K(e,t)}):e.setAttribute(n,r)}function hn(t,e){if(e){for(var n,r,i=t._slotContents=Object.create(null),o=0,a=e.children.length;o<a;o++)n=e.children[o],(r=n.getAttribute("slot"))&&(i[r]||(i[r]=[])).push(n);for(r in i)i[r]=dn(i[r],e);if(e.hasChildNodes()){var s=e.childNodes;if(1===s.length&&3===s[0].nodeType&&!s[0].data.trim())return;i["default"]=dn(e.childNodes,e)}}}function dn(t,e){var n=document.createDocumentFragment();t=g(t);for(var r=0,i=t.length;r<i;r++){var o=t[r];!it(o)||o.hasAttribute("v-if")||o.hasAttribute("v-for")||(e.removeChild(o),o=Kt(o,!0)),n.appendChild(o)}return n}function pn(t){function e(){}function n(t,e){var n=new Xt(e,t,null,{lazy:!0});return function(){return n.dirty&&n.evaluate(),xt.target&&n.depend(),n.value}}Object.defineProperty(t.prototype,"$data",{get:function(){return this._data},set:function(t){t!==this._data&&this._setData(t)}}),t.prototype._initState=function(){this._initProps(),this._initMeta(),this._initMethods(),this._initData(),this._initComputed()},t.prototype._initProps=function(){var t=this.$options,e=t.el,n=t.props;e=t.el=R(e),this._propsUnlinkFn=e&&1===e.nodeType&&n?qe(this,e,n,this._scope):null},t.prototype._initData=function(){var t=this.$options.data,e=this._data=t?t():{};b(e)||(e={});var n,r,o=this._props,a=Object.keys(e);for(n=a.length;n--;)r=a[n],o&&i(o,r)||this._proxy(r);Tt(e,this)},t.prototype._setData=function(t){t=t||{};var e=this._data;this._data=t;var n,r,o;for(n=Object.keys(e),o=n.length;o--;)r=n[o],r in t||this._unproxy(r);for(n=Object.keys(t),o=n.length;o--;)r=n[o],i(this,r)||this._proxy(r);e.__ob__.removeVm(this),Tt(t,this),this._digest()},t.prototype._proxy=function(t){if(!a(t)){var e=this;Object.defineProperty(e,t,{configurable:!0,enumerable:!0,get:function(){return e._data[t]},set:function(n){e._data[t]=n}})}},t.prototype._unproxy=function(t){a(t)||delete this[t]},t.prototype._digest=function(){for(var t=0,e=this._watchers.length;t<e;t++)this._watchers[t].update(!0)},t.prototype._initComputed=function(){var t=this.$options.computed;if(t)for(var r in t){var i=t[r],o={enumerable:!0,configurable:!0};"function"==typeof i?(o.get=n(i,this),o.set=e):(o.get=i.get?i.cache!==!1?n(i.get,this):v(i.get,this):e,o.set=i.set?v(i.set,this):e),Object.defineProperty(this,r,o)}},t.prototype._initMethods=function(){var t=this.$options.methods;if(t)for(var e in t)this[e]=v(t[e],this)},t.prototype._initMeta=function(){var t=this.$options._meta;if(t)for(var e in t)At(this,e,t[e])}}function vn(t){function e(t,e){for(var n,r,i,o=e.attributes,a=0,s=o.length;a<s;a++)n=o[a].name,Qo.test(n)&&(n=n.replace(Qo,""),r=o[a].value,Ht(r)&&(r+=".apply(this, $arguments)"),i=(t._scope||t._context).$eval(r,!0),i._fromParent=!0,t.$on(n.replace(Qo),i))}function n(t,e,n){if(n){var i,o,a,s;for(o in n)if(i=n[o],Ln(i))for(a=0,s=i.length;a<s;a++)r(t,e,o,i[a]);else r(t,e,o,i)}}function r(t,e,n,i,o){var a="undefined"==typeof i?"undefined":jn(i);if("function"===a)t[e](n,i,o);else if("string"===a){var s=t.$options.methods,u=s&&s[i];u&&t[e](n,u,o)}else i&&"object"===a&&r(t,e,n,i.handler,i)}function i(){this._isAttached||(this._isAttached=!0,this.$children.forEach(o))}function o(t){!t._isAttached&&I(t.$el)&&t._callHook("attached")}function a(){this._isAttached&&(this._isAttached=!1,this.$children.forEach(s))}function s(t){t._isAttached&&!I(t.$el)&&t._callHook("detached")}t.prototype._initEvents=function(){var t=this.$options;t._asComponent&&e(this,t.el),n(this,"$on",t.events),n(this,"$watch",t.watch)},t.prototype._initDOMHooks=function(){this.$on("hook:attached",i),this.$on("hook:detached",a)},t.prototype._callHook=function(t){this.$emit("pre-hook:"+t);var e=this.$options[t];if(e)for(var n=0,r=e.length;n<r;n++)e[n].call(this);this.$emit("hook:"+t)}}function gn(){}function mn(t,e,n,r,i,o){this.vm=e,this.el=n,this.descriptor=t,this.name=t.name,this.expression=t.expression,this.arg=t.arg,this.modifiers=t.modifiers,this.filters=t.filters,this.literal=this.modifiers&&this.modifiers.literal,this._locked=!1,this._bound=!1,this._listeners=null,this._host=r,this._scope=i,this._frag=o}function yn(t){t.prototype._updateRef=function(t){var e=this.$options._ref;if(e){var n=(this._scope||this._context).$refs;t?n[e]===this&&(n[e]=null):n[e]=this}},t.prototype._compile=function(t){var e=this.$options,n=t;if(t=un(t,e),this._initElement(t),1!==t.nodeType||null===q(t,"v-pre")){var r=this._context&&this._context.$options,i=He(t,e,r);hn(this,e._content);var o,a=this.constructor;e._linkerCachable&&(o=a.linker,o||(o=a.linker=Fe(t,e)));var s=i(this,t,this._scope),u=o?o(this,t):Fe(t,e)(this,t);this._unlinkFn=function(){s(),u(!0)},e.replace&&G(n,t),this._isCompiled=!0,this._callHook("compiled")}},t.prototype._initElement=function(t){ct(t)?(this._isFragment=!0,this.$el=this._fragmentStart=t.firstChild,this._fragmentEnd=t.lastChild,3===this._fragmentStart.nodeType&&(this._fragmentStart.data=this._fragmentEnd.data=""),this._fragment=t):this.$el=t,this.$el.__vue__=this,this._callHook("beforeCompile")},t.prototype._bindDir=function(t,e,n,r,i){this._directives.push(new mn(t,this,e,n,r,i))},t.prototype._destroy=function(t,e){if(this._isBeingDestroyed)return void(e||this._cleanup());var n,r,i=this,o=function(){
+!n||r||e||i._cleanup()};t&&this.$el&&(r=!0,this.$remove(function(){r=!1,o()})),this._callHook("beforeDestroy"),this._isBeingDestroyed=!0;var a,s=this.$parent;for(s&&!s._isBeingDestroyed&&(s.$children.$remove(this),this._updateRef(!0)),a=this.$children.length;a--;)this.$children[a].$destroy();for(this._propsUnlinkFn&&this._propsUnlinkFn(),this._unlinkFn&&this._unlinkFn(),a=this._watchers.length;a--;)this._watchers[a].teardown();this.$el&&(this.$el.__vue__=null),n=!0,o()},t.prototype._cleanup=function(){this._isDestroyed||(this._frag&&this._frag.children.$remove(this),this._data&&this._data.__ob__&&this._data.__ob__.removeVm(this),this.$el=this.$parent=this.$root=this.$children=this._watchers=this._context=this._scope=this._directives=null,this._isDestroyed=!0,this._callHook("destroyed"),this.$off())}}function bn(t){t.prototype._applyFilters=function(t,e,n,r){var i,o,a,s,u,c,l,f,h;for(c=0,l=n.length;c<l;c++)if(i=n[r?l-c-1:c],o=bt(this.$options,"filters",i.name,!0),o&&(o=r?o.write:o.read||o,"function"==typeof o)){if(a=r?[t,e]:[t],u=r?2:1,i.args)for(f=0,h=i.args.length;f<h;f++)s=i.args[f],a[f+u]=s.dynamic?this.$get(s.value):s.value;t=o.apply(this,a)}return t},t.prototype._resolveComponent=function(e,n){var r;if(r="function"==typeof e?e:bt(this.$options,"components",e,!0))if(r.options)n(r);else if(r.resolved)n(r.resolved);else if(r.requested)r.pendingCallbacks.push(n);else{r.requested=!0;var i=r.pendingCallbacks=[n];r.call(this,function(e){b(e)&&(e=t.extend(e)),r.resolved=e;for(var n=0,o=i.length;n<o;n++)i[n](e)},function(t){})}}}function xn(t){function e(t){return JSON.parse(JSON.stringify(t))}t.prototype.$get=function(t,e){var n=qt(t);if(n){if(e){var r=this;return function(){r.$arguments=g(arguments);var t=n.get.call(r,r);return r.$arguments=null,t}}try{return n.get.call(this,this)}catch(i){}}},t.prototype.$set=function(t,e){var n=qt(t,!0);n&&n.set&&n.set.call(this,this,e)},t.prototype.$delete=function(t){r(this._data,t)},t.prototype.$watch=function(t,e,n){var r,i=this;"string"==typeof t&&(r=$(t),t=r.expression);var o=new Xt(i,t,e,{deep:n&&n.deep,sync:n&&n.sync,filters:r&&r.filters,user:!n||n.user!==!1});return n&&n.immediate&&e.call(i,o.value),function(){o.teardown()}},t.prototype.$eval=function(t,e){if(Ko.test(t)){var n=$(t),r=this.$get(n.expression,e);return n.filters?this._applyFilters(r,null,n.filters):r}return this.$get(t,e)},t.prototype.$interpolate=function(t){var e=O(t),n=this;return e?1===e.length?n.$eval(e[0].value)+"":e.map(function(t){return t.tag?n.$eval(t.value):t.value}).join(""):t},t.prototype.$log=function(t){var n=t?Nt(this._data,t):this._data;if(n&&(n=e(n)),!t){var r;for(r in this.$options.computed)n[r]=e(this[r]);if(this._props)for(r in this._props)n[r]=e(this[r])}console.log(n)}}function wn(t){function e(t,e,r,i,o,a){e=n(e);var s=!I(e),u=i===!1||s?o:a,c=!s&&!t._isAttached&&!I(t.$el);return t._isFragment?(st(t._fragmentStart,t._fragmentEnd,function(n){u(n,e,t)}),r&&r()):u(t.$el,e,t,r),c&&t._callHook("attached"),t}function n(t){return"string"==typeof t?document.querySelector(t):t}function r(t,e,n,r){e.appendChild(t),r&&r()}function i(t,e,n,r){V(t,e),r&&r()}function o(t,e,n){W(t),n&&n()}t.prototype.$nextTick=function(t){nr(t,this)},t.prototype.$appendTo=function(t,n,i){return e(this,t,n,i,r,P)},t.prototype.$prependTo=function(t,e,r){return t=n(t),t.hasChildNodes()?this.$before(t.firstChild,e,r):this.$appendTo(t,e,r),this},t.prototype.$before=function(t,n,r){return e(this,t,n,r,i,F)},t.prototype.$after=function(t,e,r){return t=n(t),t.nextSibling?this.$before(t.nextSibling,e,r):this.$appendTo(t.parentNode,e,r),this},t.prototype.$remove=function(t,e){if(!this.$el.parentNode)return t&&t();var n=this._isAttached&&I(this.$el);n||(e=!1);var r=this,i=function(){n&&r._callHook("detached"),t&&t()};if(this._isFragment)ut(this._fragmentStart,this._fragmentEnd,this,this._fragment,i);else{var a=e===!1?o:B;a(this.$el,this,i)}return this}}function _n(t){function e(t,e,r){var i=t.$parent;if(i&&r&&!n.test(e))for(;i;)i._eventsCount[e]=(i._eventsCount[e]||0)+r,i=i.$parent}t.prototype.$on=function(t,n){return(this._events[t]||(this._events[t]=[])).push(n),e(this,t,1),this},t.prototype.$once=function(t,e){function n(){r.$off(t,n),e.apply(this,arguments)}var r=this;return n.fn=e,this.$on(t,n),this},t.prototype.$off=function(t,n){var r;if(!arguments.length){if(this.$parent)for(t in this._events)r=this._events[t],r&&e(this,t,-r.length);return this._events={},this}if(r=this._events[t],!r)return this;if(1===arguments.length)return e(this,t,-r.length),this._events[t]=null,this;for(var i,o=r.length;o--;)if(i=r[o],i===n||i.fn===n){e(this,t,-1),r.splice(o,1);break}return this},t.prototype.$emit=function(t){var e="string"==typeof t;t=e?t:t.name;var n=this._events[t],r=e||!n;if(n){n=n.length>1?g(n):n;var i=e&&n.some(function(t){return t._fromParent});i&&(r=!1);for(var o=g(arguments,1),a=0,s=n.length;a<s;a++){var u=n[a],c=u.apply(this,o);c!==!0||i&&!u._fromParent||(r=!0)}}return r},t.prototype.$broadcast=function(t){var e="string"==typeof t;if(t=e?t:t.name,this._eventsCount[t]){var n=this.$children,r=g(arguments);e&&(r[0]={name:t,source:this});for(var i=0,o=n.length;i<o;i++){var a=n[i],s=a.$emit.apply(a,r);s&&a.$broadcast.apply(a,r)}return this}},t.prototype.$dispatch=function(t){var e=this.$emit.apply(this,arguments);if(e){var n=this.$parent,r=g(arguments);for(r[0]={name:t,source:this};n;)e=n.$emit.apply(n,r),n=e?n.$parent:null;return this}};var n=/^hook:/}function Cn(t){function e(){this._isAttached=!0,this._isReady=!0,this._callHook("ready")}t.prototype.$mount=function(t){if(!this._isCompiled)return t=R(t),t||(t=document.createElement("div")),this._compile(t),this._initDOMHooks(),I(this.$el)?(this._callHook("attached"),e.call(this)):this.$once("hook:attached",e),this},t.prototype.$destroy=function(t,e){this._destroy(t,e)},t.prototype.$compile=function(t,e,n,r){return Fe(t,this.$options,!0)(this,t,e,n,r)}}function kn(t){this._init(t)}function Tn(t,e,n){return n=n?parseInt(n,10):0,e=u(e),"number"==typeof e?t.slice(n,n+e):t}function An(t,e,n){if(t=ra(t),null==e)return t;if("function"==typeof e)return t.filter(e);e=(""+e).toLowerCase();for(var r,i,o,a,s="in"===n?3:2,u=Array.prototype.concat.apply([],g(arguments,s)),c=[],l=0,f=t.length;l<f;l++)if(r=t[l],o=r&&r.$value||r,a=u.length){for(;a--;)if(i=u[a],"$key"===i&&$n(r.$key,e)||$n(Nt(o,i),e)){c.push(r);break}}else $n(r,e)&&c.push(r);return c}function Sn(t){function e(t,e,n){var i=r[n];return i&&("$key"!==i&&(y(t)&&"$value"in t&&(t=t.$value),y(e)&&"$value"in e&&(e=e.$value)),t=y(t)?Nt(t,i):t,e=y(e)?Nt(e,i):e),t===e?0:t>e?o:-o}var n=null,r=void 0;t=ra(t);var i=g(arguments,1),o=i[i.length-1];"number"==typeof o?(o=o<0?-1:1,i=i.length>1?i.slice(0,-1):i):o=1;var a=i[0];return a?("function"==typeof a?n=function(t,e){return a(t,e)*o}:(r=Array.prototype.concat.apply([],i),n=function(t,i,o){return o=o||0,o>=r.length-1?e(t,i,o):e(t,i,o)||n(t,i,o+1)}),t.slice().sort(n)):t}function $n(t,e){var n;if(b(t)){var r=Object.keys(t);for(n=r.length;n--;)if($n(t[r[n]],e))return!0}else if(Ln(t)){for(n=t.length;n--;)if($n(t[n],e))return!0}else if(null!=t)return t.toString().toLowerCase().indexOf(e)>-1}function En(t){function e(t){return new Function("return function "+p(t)+" (options) { this._init(options) }")()}t.options={directives:ko,elementDirectives:na,filters:oa,transitions:{},components:{},partials:{},replace:!0},t.util=Hr,t.config=Er,t.set=n,t["delete"]=r,t.nextTick=nr,t.compiler=Yo,t.FragmentFactory=se,t.internalDirectives=Ho,t.parsers={path:oi,text:Ar,template:Fi,directive:xr,expression:bi},t.cid=0;var i=1;t.extend=function(t){t=t||{};var n=this,r=0===n.cid;if(r&&t._Ctor)return t._Ctor;var o=t.name||n.options.name,a=e(o||"VueComponent");return a.prototype=Object.create(n.prototype),a.prototype.constructor=a,a.cid=i++,a.options=yt(n.options,t),a["super"]=n,a.extend=n.extend,Er._assetTypes.forEach(function(t){a[t]=n[t]}),o&&(a.options.components[o]=a),r&&(t._Ctor=a),a},t.use=function(t){if(!t.installed){var e=g(arguments,1);return e.unshift(this),"function"==typeof t.install?t.install.apply(t,e):t.apply(null,e),t.installed=!0,this}},t.mixin=function(e){t.options=yt(t.options,e)},Er._assetTypes.forEach(function(e){t[e]=function(n,r){return r?("component"===e&&b(r)&&(r.name||(r.name=n),r=t.extend(r)),this.options[e+"s"][n]=r,r):this.options[e+"s"][n]}}),m(t.transition,Or)}var jn="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol?"symbol":typeof t},On=Object.prototype.hasOwnProperty,Nn=/^\s?(true|false|-?[\d\.]+|'[^']*'|"[^"]*")\s?$/,Dn=/-(\w)/g,Mn=/([a-z\d])([A-Z])/g,Pn=/(?:^|[-_\/])(\w)/g,Fn=Object.prototype.toString,Bn="[object Object]",Ln=Array.isArray,Rn="__proto__"in{},In="undefined"!=typeof window&&"[object Object]"!==Object.prototype.toString.call(window),qn=In&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__,Hn=In&&window.navigator.userAgent.toLowerCase(),zn=Hn&&Hn.indexOf("trident")>0,Vn=Hn&&Hn.indexOf("msie 9.0")>0,Un=Hn&&Hn.indexOf("android")>0,Wn=Hn&&/(iphone|ipad|ipod|ios)/i.test(Hn),Xn=Wn&&Hn.match(/os ([\d_]+)/),Gn=Xn&&Xn[1].split("_"),Zn=Gn&&Number(Gn[0])>=9&&Number(Gn[1])>=3&&!window.indexedDB,Jn=void 0,Yn=void 0,Qn=void 0,Kn=void 0;if(In&&!Vn){var tr=void 0===window.ontransitionend&&void 0!==window.onwebkittransitionend,er=void 0===window.onanimationend&&void 0!==window.onwebkitanimationend;Jn=tr?"WebkitTransition":"transition",Yn=tr?"webkitTransitionEnd":"transitionend",Qn=er?"WebkitAnimation":"animation",Kn=er?"webkitAnimationEnd":"animationend"}var nr=function(){function t(){i=!1;var t=r.slice(0);r=[];for(var e=0;e<t.length;e++)t[e]()}var n,r=[],i=!1;if("undefined"==typeof MutationObserver||Zn){var o=In?window:"undefined"!=typeof e?e:{};n=o.setImmediate||setTimeout}else{var a=1,s=new MutationObserver(t),u=document.createTextNode(a);s.observe(u,{characterData:!0}),n=function(){a=(a+1)%2,u.data=a}}return function(e,o){var a=o?function(){e.call(o)}:e;r.push(a),i||(i=!0,n(t,0))}}(),rr=void 0;"undefined"!=typeof Set&&Set.toString().match(/native code/)?rr=Set:(rr=function(){this.set=Object.create(null)},rr.prototype.has=function(t){return void 0!==this.set[t]},rr.prototype.add=function(t){this.set[t]=1},rr.prototype.clear=function(){this.set=Object.create(null)});var ir=T.prototype;ir.put=function(t,e){var n,r=this.get(t,!0);return r||(this.size===this.limit&&(n=this.shift()),r={key:t},this._keymap[t]=r,this.tail?(this.tail.newer=r,r.older=this.tail):this.head=r,this.tail=r,this.size++),r.value=e,n},ir.shift=function(){var t=this.head;return t&&(this.head=this.head.newer,this.head.older=void 0,t.newer=t.older=void 0,this._keymap[t.key]=void 0,this.size--),t},ir.get=function(t,e){var n=this._keymap[t];if(void 0!==n)return n===this.tail?e?n:n.value:(n.newer&&(n===this.head&&(this.head=n.newer),n.newer.older=n.older),n.older&&(n.older.newer=n.newer),n.newer=void 0,n.older=this.tail,this.tail&&(this.tail.newer=n),this.tail=n,e?n:n.value)};var or,ar,sr,ur,cr,lr,fr,hr,dr,pr,vr,gr,mr=new T(1e3),yr=/[^\s'"]+|'[^']*'|"[^"]*"/g,br=/^in$|^-?\d+/,xr=Object.freeze({parseDirective:$}),wr=/[-.*+?^${}()|[\]\/\\]/g,_r=void 0,Cr=void 0,kr=void 0,Tr=/[^|]\|[^|]/,Ar=Object.freeze({compileRegex:j,parseText:O,tokensToExp:N}),Sr=["{{","}}"],$r=["{{{","}}}"],Er=Object.defineProperties({debug:!1,silent:!1,async:!0,warnExpressionErrors:!0,devtools:!1,_delimitersChanged:!0,_assetTypes:["component","directive","elementDirective","filter","transition","partial"],_propBindingModes:{ONE_WAY:0,TWO_WAY:1,ONE_TIME:2},_maxUpdateCount:100},{delimiters:{get:function(){return Sr},set:function(t){Sr=t,j()},configurable:!0,enumerable:!0},unsafeDelimiters:{get:function(){return $r},set:function(t){$r=t,j()},configurable:!0,enumerable:!0}}),jr=void 0,Or=Object.freeze({appendWithTransition:P,beforeWithTransition:F,removeWithTransition:B,applyTransition:L}),Nr=/^v-ref:/,Dr=/^(div|p|span|img|a|b|i|br|ul|ol|li|h1|h2|h3|h4|h5|h6|code|pre|table|th|td|tr|form|label|input|select|option|nav|article|section|header|footer)$/i,Mr=/^(slot|partial|component)$/i,Pr=Er.optionMergeStrategies=Object.create(null);Pr.data=function(t,e,n){return n?t||e?function(){var r="function"==typeof e?e.call(n):e,i="function"==typeof t?t.call(n):void 0;return r?dt(r,i):i}:void 0:e?"function"!=typeof e?t:t?function(){return dt(e.call(this),t.call(this))}:e:t},Pr.el=function(t,e,n){if(n||!e||"function"==typeof e){var r=e||t;return n&&"function"==typeof r?r.call(n):r}},Pr.init=Pr.created=Pr.ready=Pr.attached=Pr.detached=Pr.beforeCompile=Pr.compiled=Pr.beforeDestroy=Pr.destroyed=Pr.activate=function(t,e){return e?t?t.concat(e):Ln(e)?e:[e]:t},Er._assetTypes.forEach(function(t){Pr[t+"s"]=pt}),Pr.watch=Pr.events=function(t,e){if(!e)return t;if(!t)return e;var n={};m(n,t);for(var r in e){var i=n[r],o=e[r];i&&!Ln(i)&&(i=[i]),n[r]=i?i.concat(o):[o]}return n},Pr.props=Pr.methods=Pr.computed=function(t,e){if(!e)return t;if(!t)return e;var n=Object.create(null);return m(n,t),m(n,e),n};var Fr=function(t,e){return void 0===e?t:e},Br=0;xt.target=null,xt.prototype.addSub=function(t){this.subs.push(t)},xt.prototype.removeSub=function(t){this.subs.$remove(t)},xt.prototype.depend=function(){xt.target.addDep(this)},xt.prototype.notify=function(){for(var t=g(this.subs),e=0,n=t.length;e<n;e++)t[e].update()};var Lr=Array.prototype,Rr=Object.create(Lr);["push","pop","shift","unshift","splice","sort","reverse"].forEach(function(t){var e=Lr[t];x(Rr,t,function(){for(var n=arguments.length,r=new Array(n);n--;)r[n]=arguments[n];var i,o=e.apply(this,r),a=this.__ob__;switch(t){case"push":i=r;break;case"unshift":i=r;break;case"splice":i=r.slice(2)}return i&&a.observeArray(i),a.dep.notify(),o})}),x(Lr,"$set",function(t,e){return t>=this.length&&(this.length=Number(t)+1),this.splice(t,1,e)[0]}),x(Lr,"$remove",function(t){if(this.length){var e=_(this,t);return e>-1?this.splice(e,1):void 0}});var Ir=Object.getOwnPropertyNames(Rr),qr=!0;_t.prototype.walk=function(t){for(var e=Object.keys(t),n=0,r=e.length;n<r;n++)this.convert(e[n],t[e[n]])},_t.prototype.observeArray=function(t){for(var e=0,n=t.length;e<n;e++)Tt(t[e])},_t.prototype.convert=function(t,e){At(this.value,t,e)},_t.prototype.addVm=function(t){(this.vms||(this.vms=[])).push(t)},_t.prototype.removeVm=function(t){this.vms.$remove(t)};var Hr=Object.freeze({defineReactive:At,set:n,del:r,hasOwn:i,isLiteral:o,isReserved:a,_toString:s,toNumber:u,toBoolean:c,stripQuotes:l,camelize:f,hyphenate:d,classify:p,bind:v,toArray:g,extend:m,isObject:y,isPlainObject:b,def:x,debounce:w,indexOf:_,cancellable:C,looseEqual:k,isArray:Ln,hasProto:Rn,inBrowser:In,devtools:qn,isIE:zn,isIE9:Vn,isAndroid:Un,isIos:Wn,iosVersionMatch:Xn,iosVersion:Gn,hasMutationObserverBug:Zn,get transitionProp(){return Jn},get transitionEndEvent(){return Yn},get animationProp(){return Qn},get animationEndEvent(){return Kn},nextTick:nr,get _Set(){return rr},query:R,inDoc:I,getAttr:q,getBindAttr:H,hasBindAttr:z,before:V,after:U,remove:W,prepend:X,replace:G,on:Z,off:J,setClass:Q,addClass:K,removeClass:tt,extractContent:et,trimNode:nt,isTemplate:it,createAnchor:ot,findRef:at,mapNodeRange:st,removeNodeRange:ut,isFragment:ct,getOuterHTML:lt,mergeOptions:yt,resolveAsset:bt,checkComponentAttr:ft,commonTagRE:Dr,reservedTagRE:Mr,get warn(){return jr}}),zr=0,Vr=new T(1e3),Ur=0,Wr=1,Xr=2,Gr=3,Zr=0,Jr=1,Yr=2,Qr=3,Kr=4,ti=5,ei=6,ni=7,ri=8,ii=[];ii[Zr]={ws:[Zr],ident:[Qr,Ur],"[":[Kr],eof:[ni]},ii[Jr]={ws:[Jr],".":[Yr],"[":[Kr],eof:[ni]},ii[Yr]={ws:[Yr],ident:[Qr,Ur]},ii[Qr]={ident:[Qr,Ur],0:[Qr,Ur],number:[Qr,Ur],ws:[Jr,Wr],".":[Yr,Wr],"[":[Kr,Wr],eof:[ni,Wr]},ii[Kr]={"'":[ti,Ur],'"':[ei,Ur],"[":[Kr,Xr],"]":[Jr,Gr],eof:ri,"else":[Kr,Ur]},ii[ti]={"'":[Kr,Ur],eof:ri,"else":[ti,Ur]},ii[ei]={'"':[Kr,Ur],eof:ri,"else":[ei,Ur]};var oi=Object.freeze({parsePath:Ot,getPath:Nt,setPath:Dt}),ai=new T(1e3),si="Math,Date,this,true,false,null,undefined,Infinity,NaN,isNaN,isFinite,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,parseInt,parseFloat",ui=new RegExp("^("+si.replace(/,/g,"\\b|")+"\\b)"),ci="break,case,class,catch,const,continue,debugger,default,delete,do,else,export,extends,finally,for,function,if,import,in,instanceof,let,return,super,switch,throw,try,var,while,with,yield,enum,await,implements,package,protected,static,interface,private,public",li=new RegExp("^("+ci.replace(/,/g,"\\b|")+"\\b)"),fi=/\s/g,hi=/\n/g,di=/[\{,]\s*[\w\$_]+\s*:|('(?:[^'\\]|\\.)*'|"(?:[^"\\]|\\.)*"|`(?:[^`\\]|\\.)*\$\{|\}(?:[^`\\]|\\.)*`|`(?:[^`\\]|\\.)*`)|new |typeof |void /g,pi=/"(\d+)"/g,vi=/^[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*|\['.*?'\]|\[".*?"\]|\[\d+\]|\[[A-Za-z_$][\w$]*\])*$/,gi=/[^\w$\.](?:[A-Za-z_$][\w$]*)/g,mi=/^(?:true|false|null|undefined|Infinity|NaN)$/,yi=[],bi=Object.freeze({parseExpression:qt,isSimplePath:Ht}),xi=[],wi=[],_i={},Ci={},ki=!1,Ti=0;Xt.prototype.get=function(){this.beforeGet();var t,e=this.scope||this.vm;try{t=this.getter.call(e,e)}catch(n){}return this.deep&&Gt(t),this.preProcess&&(t=this.preProcess(t)),this.filters&&(t=e._applyFilters(t,null,this.filters,!1)),this.postProcess&&(t=this.postProcess(t)),this.afterGet(),t},Xt.prototype.set=function(t){var e=this.scope||this.vm;this.filters&&(t=e._applyFilters(t,this.value,this.filters,!0));try{this.setter.call(e,e,t)}catch(n){}var r=e.$forContext;if(r&&r.alias===this.expression){if(r.filters)return;r._withLock(function(){e.$key?r.rawValue[e.$key]=t:r.rawValue.$set(e.$index,t)})}},Xt.prototype.beforeGet=function(){xt.target=this},Xt.prototype.addDep=function(t){var e=t.id;this.newDepIds.has(e)||(this.newDepIds.add(e),this.newDeps.push(t),this.depIds.has(e)||t.addSub(this))},Xt.prototype.afterGet=function(){xt.target=null;for(var t=this.deps.length;t--;){var e=this.deps[t];this.newDepIds.has(e.id)||e.removeSub(this)}var n=this.depIds;this.depIds=this.newDepIds,this.newDepIds=n,this.newDepIds.clear(),n=this.deps,this.deps=this.newDeps,this.newDeps=n,this.newDeps.length=0},Xt.prototype.update=function(t){this.lazy?this.dirty=!0:this.sync||!Er.async?this.run():(this.shallow=this.queued?!!t&&this.shallow:!!t,this.queued=!0,Wt(this))},Xt.prototype.run=function(){if(this.active){var t=this.get();if(t!==this.value||(y(t)||this.deep)&&!this.shallow){var e=this.value;this.value=t;this.prevError;this.cb.call(this.vm,t,e)}this.queued=this.shallow=!1}},Xt.prototype.evaluate=function(){var t=xt.target;this.value=this.get(),this.dirty=!1,xt.target=t},Xt.prototype.depend=function(){for(var t=this.deps.length;t--;)this.deps[t].depend()},Xt.prototype.teardown=function(){if(this.active){this.vm._isBeingDestroyed||this.vm._vForRemoving||this.vm._watchers.$remove(this);for(var t=this.deps.length;t--;)this.deps[t].removeSub(this);this.active=!1,this.vm=this.cb=this.value=null}};var Ai=new rr,Si={bind:function(){this.attr=3===this.el.nodeType?"data":"textContent"},update:function(t){this.el[this.attr]=s(t)}},$i=new T(1e3),Ei=new T(1e3),ji={efault:[0,"",""],legend:[1,"<fieldset>","</fieldset>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"]};ji.td=ji.th=[3,"<table><tbody><tr>","</tr></tbody></table>"],ji.option=ji.optgroup=[1,'<select multiple="multiple">',"</select>"],ji.thead=ji.tbody=ji.colgroup=ji.caption=ji.tfoot=[1,"<table>","</table>"],ji.g=ji.defs=ji.symbol=ji.use=ji.image=ji.text=ji.circle=ji.ellipse=ji.line=ji.path=ji.polygon=ji.polyline=ji.rect=[1,'<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ev="http://www.w3.org/2001/xml-events"version="1.1">',"</svg>"];var Oi=/<([\w:-]+)/,Ni=/&#?\w+?;/,Di=/<!--/,Mi=function(){if(In){var t=document.createElement("div");return t.innerHTML="<template>1</template>",!t.cloneNode(!0).firstChild.innerHTML}return!1}(),Pi=function(){if(In){var t=document.createElement("textarea");return t.placeholder="t","t"===t.cloneNode(!0).value}return!1}(),Fi=Object.freeze({cloneNode:Qt,parseTemplate:Kt}),Bi={bind:function(){8===this.el.nodeType&&(this.nodes=[],this.anchor=ot("v-html"),G(this.el,this.anchor))},update:function(t){t=s(t),this.nodes?this.swap(t):this.el.innerHTML=t},swap:function(t){for(var e=this.nodes.length;e--;)W(this.nodes[e]);var n=Kt(t,!0,!0);this.nodes=g(n.childNodes),V(n,this.anchor)}};te.prototype.callHook=function(t){var e,n;for(e=0,n=this.childFrags.length;e<n;e++)this.childFrags[e].callHook(t);for(e=0,n=this.children.length;e<n;e++)t(this.children[e])},te.prototype.beforeRemove=function(){var t,e;for(t=0,e=this.childFrags.length;t<e;t++)this.childFrags[t].beforeRemove(!1);for(t=0,e=this.children.length;t<e;t++)this.children[t].$destroy(!1,!0);var n=this.unlink.dirs;for(t=0,e=n.length;t<e;t++)n[t]._watcher&&n[t]._watcher.teardown()},te.prototype.destroy=function(){this.parentFrag&&this.parentFrag.childFrags.$remove(this),this.node.__v_frag=null,this.unlink()};var Li=new T(5e3);se.prototype.create=function(t,e,n){var r=Qt(this.template);return new te(this.linker,this.vm,r,t,e,n)};var Ri=700,Ii=800,qi=850,Hi=1100,zi=1500,Vi=1500,Ui=1750,Wi=2100,Xi=2200,Gi=2300,Zi=0,Ji={priority:Xi,terminal:!0,params:["track-by","stagger","enter-stagger","leave-stagger"],bind:function(){var t=this.expression.match(/(.*) (?:in|of) (.*)/);if(t){var e=t[1].match(/\((.*),(.*)\)/);e?(this.iterator=e[1].trim(),this.alias=e[2].trim()):this.alias=t[1].trim(),this.expression=t[2]}if(this.alias){this.id="__v-for__"+ ++Zi;var n=this.el.tagName;this.isOption=("OPTION"===n||"OPTGROUP"===n)&&"SELECT"===this.el.parentNode.tagName,this.start=ot("v-for-start"),this.end=ot("v-for-end"),G(this.el,this.end),V(this.start,this.end),this.cache=Object.create(null),this.factory=new se(this.vm,this.el)}},update:function(t){this.diff(t),this.updateRef(),this.updateModel()},diff:function(t){var e,n,r,o,a,s,u=t[0],c=this.fromObject=y(u)&&i(u,"$key")&&i(u,"$value"),l=this.params.trackBy,f=this.frags,h=this.frags=new Array(t.length),d=this.alias,p=this.iterator,v=this.start,g=this.end,m=I(v),b=!f;for(e=0,n=t.length;e<n;e++)u=t[e],o=c?u.$key:null,a=c?u.$value:u,s=!y(a),r=!b&&this.getCachedFrag(a,e,o),r?(r.reused=!0,r.scope.$index=e,o&&(r.scope.$key=o),p&&(r.scope[p]=null!==o?o:e),(l||c||s)&&wt(function(){r.scope[d]=a})):(r=this.create(a,d,e,o),r.fresh=!b),h[e]=r,b&&r.before(g);if(!b){var x=0,w=f.length-h.length;for(this.vm._vForRemoving=!0,e=0,n=f.length;e<n;e++)r=f[e],r.reused||(this.deleteCachedFrag(r),this.remove(r,x++,w,m));this.vm._vForRemoving=!1,x&&(this.vm._watchers=this.vm._watchers.filter(function(t){return t.active}));var _,C,k,T=0;for(e=0,n=h.length;e<n;e++)r=h[e],_=h[e-1],C=_?_.staggerCb?_.staggerAnchor:_.end||_.node:v,r.reused&&!r.staggerCb?(k=ue(r,v,this.id),k===_||k&&ue(k,v,this.id)===_||this.move(r,C)):this.insert(r,T++,C,m),r.reused=r.fresh=!1}},create:function(t,e,n,r){var i=this._host,o=this._scope||this.vm,a=Object.create(o);a.$refs=Object.create(o.$refs),a.$els=Object.create(o.$els),a.$parent=o,a.$forContext=this,wt(function(){At(a,e,t)}),At(a,"$index",n),r?At(a,"$key",r):a.$key&&x(a,"$key",null),this.iterator&&At(a,this.iterator,null!==r?r:n);var s=this.factory.create(i,a,this._frag);return s.forId=this.id,this.cacheFrag(t,s,n,r),s},updateRef:function(){var t=this.descriptor.ref;if(t){var e,n=(this._scope||this.vm).$refs;this.fromObject?(e={},this.frags.forEach(function(t){e[t.scope.$key]=ce(t)})):e=this.frags.map(ce),n[t]=e}},updateModel:function(){if(this.isOption){var t=this.start.parentNode,e=t&&t.__v_model;e&&e.forceUpdate()}},insert:function(t,e,n,r){t.staggerCb&&(t.staggerCb.cancel(),t.staggerCb=null);var i=this.getStagger(t,e,null,"enter");if(r&&i){var o=t.staggerAnchor;o||(o=t.staggerAnchor=ot("stagger-anchor"),o.__v_frag=t),U(o,n);var a=t.staggerCb=C(function(){t.staggerCb=null,t.before(o),W(o)});setTimeout(a,i)}else{var s=n.nextSibling;s||(U(this.end,n),s=this.end),t.before(s)}},remove:function(t,e,n,r){if(t.staggerCb)return t.staggerCb.cancel(),void(t.staggerCb=null);var i=this.getStagger(t,e,n,"leave");if(r&&i){var o=t.staggerCb=C(function(){t.staggerCb=null,t.remove()});setTimeout(o,i)}else t.remove()},move:function(t,e){e.nextSibling||this.end.parentNode.appendChild(this.end),t.before(e.nextSibling,!1)},cacheFrag:function(t,e,n,r){var o,a=this.params.trackBy,s=this.cache,u=!y(t);r||a||u?(o=fe(n,r,t,a),s[o]||(s[o]=e)):(o=this.id,i(t,o)?null===t[o]&&(t[o]=e):Object.isExtensible(t)&&x(t,o,e)),e.raw=t},getCachedFrag:function(t,e,n){var r,i=this.params.trackBy,o=!y(t);if(n||i||o){var a=fe(e,n,t,i);r=this.cache[a]}else r=t[this.id];return r&&(r.reused||r.fresh),r},deleteCachedFrag:function(t){var e=t.raw,n=this.params.trackBy,r=t.scope,o=r.$index,a=i(r,"$key")&&r.$key,s=!y(e);if(n||a||s){var u=fe(o,a,e,n);this.cache[u]=null}else e[this.id]=null,t.raw=null},getStagger:function(t,e,n,r){r+="Stagger";var i=t.node.__v_trans,o=i&&i.hooks,a=o&&(o[r]||o.stagger);return a?a.call(t,e,n):e*parseInt(this.params[r]||this.params.stagger,10)},_preProcess:function(t){return this.rawValue=t,t},_postProcess:function(t){if(Ln(t))return t;if(b(t)){for(var e,n=Object.keys(t),r=n.length,i=new Array(r);r--;)e=n[r],i[r]={$key:e,$value:t[e]};return i}return"number"!=typeof t||isNaN(t)||(t=le(t)),t||[]},unbind:function(){if(this.descriptor.ref&&((this._scope||this.vm).$refs[this.descriptor.ref]=null),this.frags)for(var t,e=this.frags.length;e--;)t=this.frags[e],this.deleteCachedFrag(t),t.destroy()}},Yi={priority:Wi,terminal:!0,bind:function(){var t=this.el;if(t.__vue__)this.invalid=!0;else{var e=t.nextElementSibling;e&&null!==q(e,"v-else")&&(W(e),this.elseEl=e),this.anchor=ot("v-if"),G(t,this.anchor)}},update:function(t){this.invalid||(t?this.frag||this.insert():this.remove())},insert:function(){this.elseFrag&&(this.elseFrag.remove(),this.elseFrag=null),this.factory||(this.factory=new se(this.vm,this.el)),this.frag=this.factory.create(this._host,this._scope,this._frag),this.frag.before(this.anchor)},remove:function(){this.frag&&(this.frag.remove(),this.frag=null),this.elseEl&&!this.elseFrag&&(this.elseFactory||(this.elseFactory=new se(this.elseEl._context||this.vm,this.elseEl)),this.elseFrag=this.elseFactory.create(this._host,this._scope,this._frag),this.elseFrag.before(this.anchor))},unbind:function(){this.frag&&this.frag.destroy(),this.elseFrag&&this.elseFrag.destroy()}},Qi={bind:function(){var t=this.el.nextElementSibling;t&&null!==q(t,"v-else")&&(this.elseEl=t)},update:function(t){this.apply(this.el,t),this.elseEl&&this.apply(this.elseEl,!t)},apply:function(t,e){function n(){t.style.display=e?"":"none"}I(t)?L(t,e?1:-1,n,this.vm):n()}},Ki={bind:function(){var t=this,e=this.el,n="range"===e.type,r=this.params.lazy,i=this.params.number,o=this.params.debounce,a=!1;if(Un||n||(this.on("compositionstart",function(){a=!0}),this.on("compositionend",function(){a=!1,r||t.listener()})),this.focused=!1,n||r||(this.on("focus",function(){t.focused=!0}),this.on("blur",function(){t.focused=!1,t._frag&&!t._frag.inserted||t.rawListener()})),this.listener=this.rawListener=function(){if(!a&&t._bound){var r=i||n?u(e.value):e.value;t.set(r),nr(function(){t._bound&&!t.focused&&t.update(t._watcher.value)})}},o&&(this.listener=w(this.listener,o)),this.hasjQuery="function"==typeof jQuery,this.hasjQuery){var s=jQuery.fn.on?"on":"bind";jQuery(e)[s]("change",this.rawListener),r||jQuery(e)[s]("input",this.listener)}else this.on("change",this.rawListener),r||this.on("input",this.listener);!r&&Vn&&(this.on("cut",function(){nr(t.listener)}),this.on("keyup",function(e){46!==e.keyCode&&8!==e.keyCode||t.listener()})),(e.hasAttribute("value")||"TEXTAREA"===e.tagName&&e.value.trim())&&(this.afterBind=this.listener)},update:function(t){t=s(t),t!==this.el.value&&(this.el.value=t)},unbind:function(){var t=this.el;if(this.hasjQuery){var e=jQuery.fn.off?"off":"unbind";jQuery(t)[e]("change",this.listener),jQuery(t)[e]("input",this.listener)}}},to={bind:function(){var t=this,e=this.el;this.getValue=function(){if(e.hasOwnProperty("_value"))return e._value;var n=e.value;return t.params.number&&(n=u(n)),n},this.listener=function(){t.set(t.getValue())},this.on("change",this.listener),e.hasAttribute("checked")&&(this.afterBind=this.listener)},update:function(t){this.el.checked=k(t,this.getValue())}},eo={bind:function(){var t=this,e=this,n=this.el;this.forceUpdate=function(){e._watcher&&e.update(e._watcher.get())};var r=this.multiple=n.hasAttribute("multiple");this.listener=function(){var t=he(n,r);t=e.params.number?Ln(t)?t.map(u):u(t):t,e.set(t)},this.on("change",this.listener);var i=he(n,r,!0);(r&&i.length||!r&&null!==i)&&(this.afterBind=this.listener),this.vm.$on("hook:attached",function(){nr(t.forceUpdate)})},update:function(t){var e=this.el;if(!I(e))return nr(this.forceUpdate);e.selectedIndex=-1;for(var n,r,i=this.multiple&&Ln(t),o=e.options,a=o.length;a--;)n=o[a],r=n.hasOwnProperty("_value")?n._value:n.value,n.selected=i?de(t,r)>-1:k(t,r)},unbind:function(){this.vm.$off("hook:attached",this.forceUpdate)}},no={bind:function(){function t(){var t=n.checked;return t&&n.hasOwnProperty("_trueValue")?n._trueValue:!t&&n.hasOwnProperty("_falseValue")?n._falseValue:t}var e=this,n=this.el;this.getValue=function(){return n.hasOwnProperty("_value")?n._value:e.params.number?u(n.value):n.value},this.listener=function(){var r=e._watcher.value;if(Ln(r)){var i=e.getValue();n.checked?_(r,i)<0&&r.push(i):r.$remove(i)}else e.set(t())},this.on("change",this.listener),n.hasAttribute("checked")&&(this.afterBind=this.listener)},update:function(t){var e=this.el;Ln(t)?e.checked=_(t,this.getValue())>-1:e.hasOwnProperty("_trueValue")?e.checked=k(t,e._trueValue):e.checked=!!t}},ro={text:Ki,radio:to,select:eo,checkbox:no},io={priority:Ii,twoWay:!0,handlers:ro,params:["lazy","number","debounce"],bind:function(){this.checkFilters(),this.hasRead&&!this.hasWrite;var t,e=this.el,n=e.tagName;if("INPUT"===n)t=ro[e.type]||ro.text;else if("SELECT"===n)t=ro.select;else{if("TEXTAREA"!==n)return;t=ro.text}e.__v_model=this,t.bind.call(this),this.update=t.update,this._unbind=t.unbind},checkFilters:function(){var t=this.filters;if(t)for(var e=t.length;e--;){var n=bt(this.vm.$options,"filters",t[e].name);("function"==typeof n||n.read)&&(this.hasRead=!0),n.write&&(this.hasWrite=!0)}},unbind:function(){this.el.__v_model=null,this._unbind&&this._unbind()}},oo={esc:27,tab:9,enter:13,space:32,"delete":[8,46],up:38,left:37,right:39,down:40},ao={priority:Ri,acceptStatement:!0,keyCodes:oo,bind:function(){if("IFRAME"===this.el.tagName&&"load"!==this.arg){var t=this;this.iframeBind=function(){Z(t.el.contentWindow,t.arg,t.handler,t.modifiers.capture)},this.on("load",this.iframeBind)}},update:function(t){if(this.descriptor.raw||(t=function(){}),"function"==typeof t){this.modifiers.stop&&(t=ve(t)),this.modifiers.prevent&&(t=ge(t)),this.modifiers.self&&(t=me(t));var e=Object.keys(this.modifiers).filter(function(t){return"stop"!==t&&"prevent"!==t&&"self"!==t&&"capture"!==t});e.length&&(t=pe(t,e)),this.reset(),this.handler=t,this.iframeBind?this.iframeBind():Z(this.el,this.arg,this.handler,this.modifiers.capture)}},reset:function(){var t=this.iframeBind?this.el.contentWindow:this.el;this.handler&&J(t,this.arg,this.handler)},unbind:function(){this.reset()}},so=["-webkit-","-moz-","-ms-"],uo=["Webkit","Moz","ms"],co=/!important;?$/,lo=Object.create(null),fo=null,ho={deep:!0,update:function(t){"string"==typeof t?this.el.style.cssText=t:Ln(t)?this.handleObject(t.reduce(m,{})):this.handleObject(t||{})},handleObject:function(t){var e,n,r=this.cache||(this.cache={});for(e in r)e in t||(this.handleSingle(e,null),delete r[e]);for(e in t)n=t[e],n!==r[e]&&(r[e]=n,this.handleSingle(e,n))},handleSingle:function(t,e){if(t=ye(t))if(null!=e&&(e+=""),e){var n=co.test(e)?"important":"";n?(e=e.replace(co,"").trim(),this.el.style.setProperty(t.kebab,e,n)):this.el.style[t.camel]=e}else this.el.style[t.camel]=""}},po="http://www.w3.org/1999/xlink",vo=/^xlink:/,go=/^v-|^:|^@|^(?:is|transition|transition-mode|debounce|track-by|stagger|enter-stagger|leave-stagger)$/,mo=/^(?:value|checked|selected|muted)$/,yo=/^(?:draggable|contenteditable|spellcheck)$/,bo={value:"_value","true-value":"_trueValue","false-value":"_falseValue"},xo={priority:qi,bind:function(){
+var t=this.arg,e=this.el.tagName;t||(this.deep=!0);var n=this.descriptor,r=n.interp;if(r){n.hasOneTime&&(this.expression=N(r,this._scope||this.vm)),(go.test(t)||"name"===t&&("PARTIAL"===e||"SLOT"===e))&&(this.el.removeAttribute(t),this.invalid=!0)}},update:function(t){if(!this.invalid){var e=this.arg;this.arg?this.handleSingle(e,t):this.handleObject(t||{})}},handleObject:ho.handleObject,handleSingle:function(t,e){var n=this.el,r=this.descriptor.interp;if(this.modifiers.camel&&(t=f(t)),!r&&mo.test(t)&&t in n){var i="value"===t&&null==e?"":e;n[t]!==i&&(n[t]=i)}var o=bo[t];if(!r&&o){n[o]=e;var a=n.__v_model;a&&a.listener()}return"value"===t&&"TEXTAREA"===n.tagName?void n.removeAttribute(t):void(yo.test(t)?n.setAttribute(t,e?"true":"false"):null!=e&&e!==!1?"class"===t?(n.__v_trans&&(e+=" "+n.__v_trans.id+"-transition"),Q(n,e)):vo.test(t)?n.setAttributeNS(po,t,e===!0?"":e):n.setAttribute(t,e===!0?"":e):n.removeAttribute(t))}},wo={priority:zi,bind:function(){if(this.arg){var t=this.id=f(this.arg),e=(this._scope||this.vm).$els;i(e,t)?e[t]=this.el:At(e,t,this.el)}},unbind:function(){var t=(this._scope||this.vm).$els;t[this.id]===this.el&&(t[this.id]=null)}},_o={bind:function(){}},Co={bind:function(){var t=this.el;this.vm.$once("pre-hook:compiled",function(){t.removeAttribute("v-cloak")})}},ko={text:Si,html:Bi,"for":Ji,"if":Yi,show:Qi,model:io,on:ao,bind:xo,el:wo,ref:_o,cloak:Co},To={deep:!0,update:function(t){t?"string"==typeof t?this.setClass(t.trim().split(/\s+/)):this.setClass(xe(t)):this.cleanup()},setClass:function(t){this.cleanup(t);for(var e=0,n=t.length;e<n;e++){var r=t[e];r&&we(this.el,r,K)}this.prevKeys=t},cleanup:function(t){var e=this.prevKeys;if(e)for(var n=e.length;n--;){var r=e[n];(!t||t.indexOf(r)<0)&&we(this.el,r,tt)}}},Ao={priority:Vi,params:["keep-alive","transition-mode","inline-template"],bind:function(){this.el.__vue__||(this.keepAlive=this.params.keepAlive,this.keepAlive&&(this.cache={}),this.params.inlineTemplate&&(this.inlineTemplate=et(this.el,!0)),this.pendingComponentCb=this.Component=null,this.pendingRemovals=0,this.pendingRemovalCb=null,this.anchor=ot("v-component"),G(this.el,this.anchor),this.el.removeAttribute("is"),this.el.removeAttribute(":is"),this.descriptor.ref&&this.el.removeAttribute("v-ref:"+d(this.descriptor.ref)),this.literal&&this.setComponent(this.expression))},update:function(t){this.literal||this.setComponent(t)},setComponent:function(t,e){if(this.invalidatePending(),t){var n=this;this.resolveComponent(t,function(){n.mountComponent(e)})}else this.unbuild(!0),this.remove(this.childVM,e),this.childVM=null},resolveComponent:function(t,e){var n=this;this.pendingComponentCb=C(function(r){n.ComponentName=r.options.name||("string"==typeof t?t:null),n.Component=r,e()}),this.vm._resolveComponent(t,this.pendingComponentCb)},mountComponent:function(t){this.unbuild(!0);var e=this,n=this.Component.options.activate,r=this.getCached(),i=this.build();n&&!r?(this.waitingFor=i,_e(n,i,function(){e.waitingFor===i&&(e.waitingFor=null,e.transition(i,t))})):(r&&i._updateRef(),this.transition(i,t))},invalidatePending:function(){this.pendingComponentCb&&(this.pendingComponentCb.cancel(),this.pendingComponentCb=null)},build:function(t){var e=this.getCached();if(e)return e;if(this.Component){var n={name:this.ComponentName,el:Qt(this.el),template:this.inlineTemplate,parent:this._host||this.vm,_linkerCachable:!this.inlineTemplate,_ref:this.descriptor.ref,_asComponent:!0,_isRouterView:this._isRouterView,_context:this.vm,_scope:this._scope,_frag:this._frag};t&&m(n,t);var r=new this.Component(n);return this.keepAlive&&(this.cache[this.Component.cid]=r),r}},getCached:function(){return this.keepAlive&&this.cache[this.Component.cid]},unbuild:function(t){this.waitingFor&&(this.keepAlive||this.waitingFor.$destroy(),this.waitingFor=null);var e=this.childVM;return!e||this.keepAlive?void(e&&(e._inactive=!0,e._updateRef(!0))):void e.$destroy(!1,t)},remove:function(t,e){var n=this.keepAlive;if(t){this.pendingRemovals++,this.pendingRemovalCb=e;var r=this;t.$remove(function(){r.pendingRemovals--,n||t._cleanup(),!r.pendingRemovals&&r.pendingRemovalCb&&(r.pendingRemovalCb(),r.pendingRemovalCb=null)})}else e&&e()},transition:function(t,e){var n=this,r=this.childVM;switch(r&&(r._inactive=!0),t._inactive=!1,this.childVM=t,n.params.transitionMode){case"in-out":t.$before(n.anchor,function(){n.remove(r,e)});break;case"out-in":n.remove(r,function(){t.$before(n.anchor,e)});break;default:n.remove(r),t.$before(n.anchor,e)}},unbind:function(){if(this.invalidatePending(),this.unbuild(),this.cache){for(var t in this.cache)this.cache[t].$destroy();this.cache=null}}},So=Er._propBindingModes,$o={},Eo=/^[$_a-zA-Z]+[\w$]*$/,jo=Er._propBindingModes,Oo={bind:function(){var t=this.vm,e=t._context,n=this.descriptor.prop,r=n.path,i=n.parentPath,o=n.mode===jo.TWO_WAY,a=this.parentWatcher=new Xt(e,i,function(e){Se(t,n,e)},{twoWay:o,filters:n.filters,scope:this._scope});if(Ae(t,n,a.value),o){var s=this;t.$once("pre-hook:created",function(){s.childWatcher=new Xt(t,r,function(t){a.set(t)},{sync:!0})})}},unbind:function(){this.parentWatcher.teardown(),this.childWatcher&&this.childWatcher.teardown()}},No=[],Do=!1,Mo="transition",Po="animation",Fo=Jn+"Duration",Bo=Qn+"Duration",Lo=In&&window.requestAnimationFrame,Ro=Lo?function(t){Lo(function(){Lo(t)})}:function(t){setTimeout(t,50)},Io=Me.prototype;Io.enter=function(t,e){this.cancelPending(),this.callHook("beforeEnter"),this.cb=e,K(this.el,this.enterClass),t(),this.entered=!1,this.callHookWithCb("enter"),this.entered||(this.cancel=this.hooks&&this.hooks.enterCancelled,Ne(this.enterNextTick))},Io.enterNextTick=function(){var t=this;this.justEntered=!0,Ro(function(){t.justEntered=!1});var e=this.enterDone,n=this.getCssTransitionType(this.enterClass);this.pendingJsCb?n===Mo&&tt(this.el,this.enterClass):n===Mo?(tt(this.el,this.enterClass),this.setupCssCb(Yn,e)):n===Po?this.setupCssCb(Kn,e):e()},Io.enterDone=function(){this.entered=!0,this.cancel=this.pendingJsCb=null,tt(this.el,this.enterClass),this.callHook("afterEnter"),this.cb&&this.cb()},Io.leave=function(t,e){this.cancelPending(),this.callHook("beforeLeave"),this.op=t,this.cb=e,K(this.el,this.leaveClass),this.left=!1,this.callHookWithCb("leave"),this.left||(this.cancel=this.hooks&&this.hooks.leaveCancelled,this.op&&!this.pendingJsCb&&(this.justEntered?this.leaveDone():Ne(this.leaveNextTick)))},Io.leaveNextTick=function(){var t=this.getCssTransitionType(this.leaveClass);if(t){var e=t===Mo?Yn:Kn;this.setupCssCb(e,this.leaveDone)}else this.leaveDone()},Io.leaveDone=function(){this.left=!0,this.cancel=this.pendingJsCb=null,this.op(),tt(this.el,this.leaveClass),this.callHook("afterLeave"),this.cb&&this.cb(),this.op=null},Io.cancelPending=function(){this.op=this.cb=null;var t=!1;this.pendingCssCb&&(t=!0,J(this.el,this.pendingCssEvent,this.pendingCssCb),this.pendingCssEvent=this.pendingCssCb=null),this.pendingJsCb&&(t=!0,this.pendingJsCb.cancel(),this.pendingJsCb=null),t&&(tt(this.el,this.enterClass),tt(this.el,this.leaveClass)),this.cancel&&(this.cancel.call(this.vm,this.el),this.cancel=null)},Io.callHook=function(t){this.hooks&&this.hooks[t]&&this.hooks[t].call(this.vm,this.el)},Io.callHookWithCb=function(t){var e=this.hooks&&this.hooks[t];e&&(e.length>1&&(this.pendingJsCb=C(this[t+"Done"])),e.call(this.vm,this.el,this.pendingJsCb))},Io.getCssTransitionType=function(t){if(!(!Yn||document.hidden||this.hooks&&this.hooks.css===!1||Pe(this.el))){var e=this.type||this.typeCache[t];if(e)return e;var n=this.el.style,r=window.getComputedStyle(this.el),i=n[Fo]||r[Fo];if(i&&"0s"!==i)e=Mo;else{var o=n[Bo]||r[Bo];o&&"0s"!==o&&(e=Po)}return e&&(this.typeCache[t]=e),e}},Io.setupCssCb=function(t,e){this.pendingCssEvent=t;var n=this,r=this.el,i=this.pendingCssCb=function(o){o.target===r&&(J(r,t,i),n.pendingCssEvent=n.pendingCssCb=null,!n.pendingJsCb&&e&&e())};Z(r,t,i)};var qo={priority:Hi,update:function(t,e){var n=this.el,r=bt(this.vm.$options,"transitions",t);t=t||"v",e=e||"v",n.__v_trans=new Me(n,t,r,this.vm),tt(n,e+"-transition"),K(n,t+"-transition")}},Ho={style:ho,"class":To,component:Ao,prop:Oo,transition:qo},zo=/^v-bind:|^:/,Vo=/^v-on:|^@/,Uo=/^v-([^:]+)(?:$|:(.*)$)/,Wo=/\.[^\.]+/g,Xo=/^(v-bind:|:)?transition$/,Go=1e3,Zo=2e3;tn.terminal=!0;var Jo=/[^\w\-:\.]/,Yo=Object.freeze({compile:Fe,compileAndLinkProps:qe,compileRoot:He,transclude:un,resolveSlots:hn}),Qo=/^v-on:|^@/;mn.prototype._bind=function(){var t=this.name,e=this.descriptor;if(("cloak"!==t||this.vm._isCompiled)&&this.el&&this.el.removeAttribute){var n=e.attr||"v-"+t;this.el.removeAttribute(n)}var r=e.def;if("function"==typeof r?this.update=r:m(this,r),this._setupParams(),this.bind&&this.bind(),this._bound=!0,this.literal)this.update&&this.update(e.raw);else if((this.expression||this.modifiers)&&(this.update||this.twoWay)&&!this._checkStatement()){var i=this;this.update?this._update=function(t,e){i._locked||i.update(t,e)}:this._update=gn;var o=this._preProcess?v(this._preProcess,this):null,a=this._postProcess?v(this._postProcess,this):null,s=this._watcher=new Xt(this.vm,this.expression,this._update,{filters:this.filters,twoWay:this.twoWay,deep:this.deep,preProcess:o,postProcess:a,scope:this._scope});this.afterBind?this.afterBind():this.update&&this.update(s.value)}},mn.prototype._setupParams=function(){if(this.params){var t=this.params;this.params=Object.create(null);for(var e,n,r,i=t.length;i--;)e=d(t[i]),r=f(e),n=H(this.el,e),null!=n?this._setupParamWatcher(r,n):(n=q(this.el,e),null!=n&&(this.params[r]=""===n||n))}},mn.prototype._setupParamWatcher=function(t,e){var n=this,r=!1,i=(this._scope||this.vm).$watch(e,function(e,i){if(n.params[t]=e,r){var o=n.paramWatchers&&n.paramWatchers[t];o&&o.call(n,e,i)}else r=!0},{immediate:!0,user:!1});(this._paramUnwatchFns||(this._paramUnwatchFns=[])).push(i)},mn.prototype._checkStatement=function(){var t=this.expression;if(t&&this.acceptStatement&&!Ht(t)){var e=qt(t).get,n=this._scope||this.vm,r=function(t){n.$event=t,e.call(n,n),n.$event=null};return this.filters&&(r=n._applyFilters(r,null,this.filters)),this.update(r),!0}},mn.prototype.set=function(t){this.twoWay&&this._withLock(function(){this._watcher.set(t)})},mn.prototype._withLock=function(t){var e=this;e._locked=!0,t.call(e),nr(function(){e._locked=!1})},mn.prototype.on=function(t,e,n){Z(this.el,t,e,n),(this._listeners||(this._listeners=[])).push([t,e])},mn.prototype._teardown=function(){if(this._bound){this._bound=!1,this.unbind&&this.unbind(),this._watcher&&this._watcher.teardown();var t,e=this._listeners;if(e)for(t=e.length;t--;)J(this.el,e[t][0],e[t][1]);var n=this._paramUnwatchFns;if(n)for(t=n.length;t--;)n[t]();this.vm=this.el=this._watcher=this._listeners=null}};var Ko=/[^|]\|[^|]/;St(kn),pn(kn),vn(kn),yn(kn),bn(kn),xn(kn),wn(kn),_n(kn),Cn(kn);var ta={priority:Gi,params:["name"],bind:function(){var t=this.params.name||"default",e=this.vm._slotContents&&this.vm._slotContents[t];e&&e.hasChildNodes()?this.compile(e.cloneNode(!0),this.vm._context,this.vm):this.fallback()},compile:function(t,e,n){if(t&&e){if(this.el.hasChildNodes()&&1===t.childNodes.length&&1===t.childNodes[0].nodeType&&t.childNodes[0].hasAttribute("v-if")){var r=document.createElement("template");r.setAttribute("v-else",""),r.innerHTML=this.el.innerHTML,r._context=this.vm,t.appendChild(r)}var i=n?n._scope:this._scope;this.unlink=e.$compile(t,n,i,this._frag)}t?G(this.el,t):W(this.el)},fallback:function(){this.compile(et(this.el,!0),this.vm)},unbind:function(){this.unlink&&this.unlink()}},ea={priority:Ui,params:["name"],paramWatchers:{name:function(t){Yi.remove.call(this),t&&this.insert(t)}},bind:function(){this.anchor=ot("v-partial"),G(this.el,this.anchor),this.insert(this.params.name)},insert:function(t){var e=bt(this.vm.$options,"partials",t,!0);e&&(this.factory=new se(this.vm,e),Yi.insert.call(this))},unbind:function(){this.frag&&this.frag.destroy()}},na={slot:ta,partial:ea},ra=Ji._postProcess,ia=/(\d{3})(?=\d)/g,oa={orderBy:Sn,filterBy:An,limitBy:Tn,json:{read:function(t,e){return"string"==typeof t?t:JSON.stringify(t,null,arguments.length>1?e:2)},write:function(t){try{return JSON.parse(t)}catch(e){return t}}},capitalize:function(t){return t||0===t?(t=t.toString(),t.charAt(0).toUpperCase()+t.slice(1)):""},uppercase:function(t){return t||0===t?t.toString().toUpperCase():""},lowercase:function(t){return t||0===t?t.toString().toLowerCase():""},currency:function(t,e,n){if(t=parseFloat(t),!isFinite(t)||!t&&0!==t)return"";e=null!=e?e:"$",n=null!=n?n:2;var r=Math.abs(t).toFixed(n),i=n?r.slice(0,-1-n):r,o=i.length%3,a=o>0?i.slice(0,o)+(i.length>3?",":""):"",s=n?r.slice(-1-n):"",u=t<0?"-":"";return u+e+a+i.slice(o).replace(ia,"$1,")+s},pluralize:function(t){var e=g(arguments,1);return e.length>1?e[t%10-1]||e[e.length-1]:e[0]+(1===t?"":"s")},debounce:function(t,e){if(t)return e||(e=300),w(t,e)}};En(kn),kn.version="1.0.25",setTimeout(function(){Er.devtools&&qn&&qn.emit("init",kn)},0),t.exports=kn}).call(e,function(){return this}())},function(t,e,n){var r,i;(function(o){"use strict";var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol?"symbol":typeof t};/*!
* Vue.js v2.0.0-alpha.8
* (c) 2014-2016 Evan You
* Released under the MIT License.
*/
-!function(o,s){"object"===a(e)&&"undefined"!=typeof t?t.exports=s():(r=s,i="function"==typeof r?r.call(e,n,e,t):r,!(void 0!==i&&(t.exports=i)))}(void 0,function(){function t(t){return null==t?"":"object"===("undefined"==typeof t?"undefined":a(t))?JSON.stringify(t,null,2):String(t)}function e(t){var e=parseFloat(t,10);return e||0===e?e:t}function n(t,e){for(var n=Object.create(null),r=t.split(","),i=0;i<r.length;i++)n[r[i]]=!0;return e?function(t){return n[t.toLowerCase()]}:function(t){return n[t]}}function r(t,e){if(t.length){var n=t.indexOf(e);if(n>-1)return t.splice(n,1)}}function i(t,e){return vr.call(t,e)}function s(t){return"string"==typeof t||"number"==typeof t}function u(t){var e=Object.create(null);return function(n){var r=e[n];return r||(e[n]=t(n))}}function c(t,e){return function(n){var r=arguments.length;return r?r>1?t.apply(e,arguments):t.call(e,n):t.call(e)}}function l(t,e){e=e||0;for(var n=t.length-e,r=new Array(n);n--;)r[n]=t[n+e];return r}function f(t,e){for(var n in e)t[n]=e[n];return t}function h(t){return null!==t&&"object"===("undefined"==typeof t?"undefined":a(t))}function d(t){return wr.call(t)===_r}function p(t){for(var e=t[0]||{},n=1;n<t.length;n++)t[n]&&f(e,t[n]);return e}function v(){}function g(t){return t.reduce(function(t,e){return t.concat(e.staticKeys||[])},[]).join(",")}function m(t){var e=(t+"").charCodeAt(0);return 36===e||95===e}function y(t,e,n,r){Object.defineProperty(t,e,{value:n,enumerable:!!r,writable:!0,configurable:!0})}function b(t){if(!Tr.test(t)){var e=function(){var e=t.split(".");return{v:function(t){for(var n=0;n<e.length;n++){if(!t)return;t=t[e[n]]}return t}}}();return"object"===("undefined"==typeof e?"undefined":a(e))?e.v:void 0}}function x(t){Ir.target&&Hr.push(Ir.target),Ir.target=t}function w(){Ir.target=Hr.pop()}function _(){qr.length=0,zr.length=0,Vr={},Ur={},Wr=!1}function C(){return T(qr.sort(k)),T(zr),qr.length?C():($r&&kr.devtools&&$r.emit("flush"),void _())}function k(t,e){return t.id-e.id}function T(t){for(var e=0;e<t.length;e++){var n=t[e],r=n.id;if(Vr[r]=null,n.run(),null!=Vr[r]&&(Ur[r]=(Ur[r]||0)+1,Ur[r]>kr._maxUpdateCount)){ui('You may have an infinite update loop for watcher with expression "'+n.expression+'"',n.vm);break}}t.length=0}function A(t){var e=t.id;if(null==Vr[e]){var n=t.user?zr:qr;Vr[e]=!0,n.push(t),Wr||(Wr=!0,Mr(C))}}function S(t,e){var n=void 0,r=void 0;e||(e=Zr,e.clear());var i=Array.isArray(t),o=h(t);if((i||o)&&Object.isExtensible(t)){if(t.__ob__){var a=t.__ob__.dep.id;if(e.has(a))return;e.add(a)}if(i)for(n=t.length;n--;)S(t[n],e);else if(o)for(r=Object.keys(t),n=r.length;n--;)S(t[r[n]],e)}}function $(t,e){t.__proto__=e}function E(t,e,n){for(var r=0,i=n.length;r<i;r++){var o=n[r];y(t,o,e[o])}}function j(t){if(h(t)){var e=void 0;return i(t,"__ob__")&&t.__ob__ instanceof ti?e=t.__ob__:Kr.shouldConvert&&!kr._isServer&&(Array.isArray(t)||d(t))&&Object.isExtensible(t)&&!t._isVue&&(e=new ti(t)),e}}function O(t,e,n,r){var i=new Ir,o=Object.getOwnPropertyDescriptor(t,e);if(!o||o.configurable!==!1){var a=o&&o.get,s=o&&o.set,u=j(n);Object.defineProperty(t,e,{enumerable:!0,configurable:!0,get:function(){var e=a?a.call(t):n;if(Ir.target&&(i.depend(),u&&u.dep.depend(),Array.isArray(e)))for(var r,o=0,s=e.length;o<s;o++)r=e[o],r&&r.__ob__&&r.__ob__.dep.depend();return e},set:function(e){var o=a?a.call(t):n;e!==o&&(r&&r(),s?s.call(t,e):n=e,u=j(e),i.notify())}})}}function N(t,e,n){if(Array.isArray(t))return t.splice(e,1,n),n;if(i(t,e))return void(t[e]=n);var r=t.__ob__;return t._isVue||r&&r.vmCount?void ui("Avoid adding reactive properties to a Vue instance or its root $data at runtime - delcare it upfront in the data option."):r?(O(r.value,e,n),r.dep.notify(),n):void(t[e]=n)}function D(t,e){var n=t.__ob__;return t._isVue||n&&n.vmCount?void ui("Avoid deleting properties on a Vue instance or its root $data - just set it to null."):void(i(t,e)&&(delete t[e],n&&n.dep.notify()))}function M(t){t._watchers=[],P(t),F(t),B(t),R(t),I(t)}function P(t){var e=t.$options.props,n=t.$options.propsData;if(e){var r=t.$options._propKeys=Object.keys(e),i=!t.$parent;Kr.shouldConvert=i;for(var o=function(e){var i=r[e];O(t,i,At(t,i,n),function(){t.$parent&&!Kr.isSettingProps&&ui("Avoid mutating a prop directly since the value will be overwritten whenever the parent component re-renders. Instead, use a data or computed property based on the prop's "+('value. Prop being mutated: "'+i+'"'),t)})},a=0;a<r.length;a++)o(a);Kr.shouldConvert=!0}}function F(t){var e=t.$options.data;e=t._data="function"==typeof e?e.call(t):e||{},d(e)||(e={},ui("data functions should return an object.",t));for(var n=Object.keys(e),r=t.$options.props,o=n.length;o--;)r&&i(r,n[o])?ui('The data property "'+n[o]+'" is already declared as a prop. Use prop default value instead.',t):z(t,n[o]);j(e),e.__ob__&&e.__ob__.vmCount++}function B(t){var e=t.$options.computed;if(e)for(var n in e){var r=e[n];"function"==typeof r?(ei.get=L(r,t),ei.set=v):(ei.get=r.get?r.cache!==!1?L(r.get,t):c(r.get,t):v,ei.set=r.set?c(r.set,t):v),Object.defineProperty(t,n,ei)}}function L(t,e){var n=new Gr(e,t,v,{lazy:!0});return function(){return n.dirty&&n.evaluate(),Ir.target&&n.depend(),n.value}}function R(t){var e=t.$options.methods;if(e)for(var n in e)t[n]=c(e[n],t)}function I(t){var e=t.$options.watch;if(e)for(var n in e){var r=e[n];if(Array.isArray(r))for(var i=0;i<r.length;i++)H(t,n,r[i]);else H(t,n,r)}}function H(t,e,n){var r=void 0;d(n)&&(r=n,n=n.handler),"string"==typeof n&&(n=t[n]),t.$watch(e,n,r)}function q(t){var e={};e.get=function(){return this._data},e.set=function(t){ui("Avoid replacing instance root $data. Use nested data properties instead.",this)},Object.defineProperty(t.prototype,"$data",e),t.prototype.$watch=function(t,e,n){var r=this;n=n||{},n.user=!0;var i=new Gr(r,t,e,n);return n.immediate&&e.call(r,i.value),function(){i.teardown()}}}function z(t,e){m(e)||Object.defineProperty(t,e,{configurable:!0,enumerable:!0,get:function(){return t._data[e]},set:function(n){t._data[e]=n}})}function V(t,e){if("function"==typeof t&&(t=t()),s(t))return[U(t)];if(Array.isArray(t)){for(var n=[],r=0,i=t.length;r<i;r++){var o=t[r],a=n[n.length-1];Array.isArray(o)?n.push.apply(n,V(o)):s(o)?a&&a.text?a.text+=String(o):n.push(U(o)):o instanceof ni&&(o.text&&a&&a.text?a.text+=o.text:(e&&o.tag&&(o.ns=e),n.push(o)))}return n}}function U(t){return new ni((void 0),(void 0),(void 0),String(t))}function W(t,e,n,r){var i=void 0,o=void 0,a=void 0,s=void 0,u=void 0,c=void 0;for(i in t)if(o=t[i],a=e[i])if(Array.isArray(a)){a.length=o.length;for(var l=0;l<a.length;l++)a[l]=o[l];t[i]=a}else a.fn=o,t[i]=a;else c="!"===i.charAt(0),u=c?i.slice(1):i,Array.isArray(o)?n(u,o.invoker=X(o),c):(s=o,o=t[i]={},o.fn=s,n(u,o.invoker=G(o),c));for(i in e)t[i]||(u="!"===i.charAt(0)?i.slice(1):i,r(u,e[i].invoker))}function X(t){return function(e){for(var n=1===arguments.length,r=0;r<t.length;r++)n?t[r](e):t[r].apply(null,arguments)}}function G(t){return function(e){var n=1===arguments.length;n?t.fn(e):t.fn.apply(null,arguments)}}function Z(t){var e=t.$options;t.$parent=e.parent,t.$root=t.$parent?t.$parent.$root:t,t.$parent&&!e._abstract&&t.$parent.$children.push(t),t.$children=[],t.$refs={},t._watcher=null,t._inactive=!1,t._isMounted=!1,t._isDestroyed=!1,t._isBeingDestroyed=!1}function J(t){t.prototype._mount=function(t,e){var n=this;return n.$el=t,n.$options.render||(n.$options.render=ri,n.$options.template?ui("You are using the runtime-only build of Vue where the template option is not available. Either pre-compile the templates into render functions, or use the compiler-included build.",n):ui("Failed to mount component: template or render function not defined.",n)),Y(n,"beforeMount"),n._watcher=new Gr(n,function(){n._update(n._render(),e)},v),e=!1,n.$root===n&&(n._isMounted=!0,Y(n,"mounted")),n},t.prototype._update=function(t,e){var n=this;n._isMounted&&Y(n,"beforeUpdate");var r=n.$el;n._vnode?n.$el=n.__patch__(n._vnode,t):n.$el=n.__patch__(n.$el,t,e),n._vnode=t,r&&(r.__vue__=null),n.$el&&(n.$el.__vue__=n);var i=n.$options._parentVnode;i&&(i.elm=n.$el,n.$parent&&i===n.$parent._vnode&&(n.$parent.$el=n.$el)),n._isMounted&&Y(n,"updated")},t.prototype._updateFromParent=function(t,e,n,r){var i=this;if(i.$options._parentVnode=n,i.$options._renderChildren=r,t&&i.$options.props){Kr.shouldConvert=!1,Kr.isSettingProps=!0;for(var o=i.$options._propKeys||[],a=0;a<o.length;a++){var s=o[a];i[s]=At(i,s,t)}Kr.shouldConvert=!0,Kr.isSettingProps=!1}if(e){var u=i.$options._parentListeners;i.$options._parentListeners=e,i._updateListeners(e,u)}},t.prototype.$forceUpdate=function(){var t=this;if(t._watcher&&t._watcher.update(),t._watchers.length)for(var e=0;e<t._watchers.length;e++)t._watchers[e].update(!0)},t.prototype.$destroy=function(){var t=this;if(!t._isBeingDestroyed){Y(t,"beforeDestroy"),t._isBeingDestroyed=!0;var e=t.$parent;!e||e._isBeingDestroyed||t.$options._abstract||r(e.$children,t),t._watcher&&t._watcher.teardown();for(var n=t._watchers.length;n--;)t._watchers[n].teardown();t._data.__ob__&&t._data.__ob__.vmCount--,t._isDestroyed=!0,Y(t,"destroyed"),t.$off(),t.$el&&(t.$el.__vue__=null)}}}function Y(t,e){t.$emit("pre-hook:"+e);var n=t.$options[e];if(n)for(var r=0,i=n.length;r<i;r++)n[r].call(t);t.$emit("hook:"+e)}function Q(t,e,n,r,i,o,a){if(o&&"function"!=typeof o&&ui("A component's children should be a function that returns the children array. This allows the component to track the children dependencies and optimizes re-rendering."),t){if(h(t)&&(t=mt.extend(t)),"function"!=typeof t)return void ui("Invalid Component definition: "+t,n);if(!t.cid)if(t.resolved)t=t.resolved;else if(t=it(t,function(){n.$forceUpdate()}),!t)return;e=e||{};var s=ot(e,t);if(t.options.functional)return t.options.render.call(null,n.$createElement,s||{},V(o));st(e);var u=e.on;u&&delete e.on;var c=t.options.name||a,l=new ni("vue-component-"+t.cid+(c?"-"+c:""),e,(void 0),(void 0),(void 0),(void 0),r,i,{Ctor:t,propsData:s,listeners:u,parent:n,tag:a,children:o});return l}}function K(t){var e=t.componentOptions,n={_isComponent:!0,parent:e.parent,propsData:e.propsData,_componentTag:e.tag,_parentVnode:t,_parentListeners:e.listeners,_renderChildren:e.children},r=t.data.inlineTemplate;return r&&(n.render=r.render,n.staticRenderFns=r.staticRenderFns),new e.Ctor(n)}function tt(t,e){if(!t.child){var n=t.child=K(t);n.$mount(e?t.elm:void 0,e)}}function et(t,e){var n=e.componentOptions;e.child=t.child,e.child._updateFromParent(n.propsData,n.listeners,e,n.children)}function nt(t){t.child._isMounted||(t.child._isMounted=!0,Y(t.child,"mounted")),t.data.keepAlive&&(t.child._inactive=!1,Y(t.child,"activated"))}function rt(t){t.child._isDestroyed||(t.data.keepAlive?(t.child._inactive=!0,Y(t.child,"deactivated")):t.child.$destroy())}function it(t,e){if(t.requested)t.pendingCallbacks.push(e);else{var n=function(){t.requested=!0;var n=t.pendingCallbacks=[e],r=!0;return t(function(e){if(h(e)&&(e=mt.extend(e)),t.resolved=e,!r)for(var i=0,o=n.length;i<o;i++)n[i](e)},function(e){ui("Failed to resolve async component: "+t+(e?"\nReason: "+e:""))}),r=!1,{v:t.resolved}}();if("object"===("undefined"==typeof n?"undefined":a(n)))return n.v}}function ot(t,e){var n=e.options.props;if(n){var r={},i=t.attrs,o=t.props,a=t.staticAttrs;if(!i&&!o&&!a)return r;for(var s in n){var u=xr(s);at(r,i,s,u)||at(r,o,s,u)||at(r,a,s,u)}return r}}function at(t,e,n,r){if(e){if(i(e,n))return t[n]=e[n],delete e[n],!0;if(i(e,r))return t[n]=e[r],delete e[r],!0}return!1}function st(t){if(t.hook)for(var e=0;e<oi.length;e++){var n=oi[e],r=t.hook[n],i=ii[n];t.hook[n]=r?ut(i,r):i}else t.hook=ii}function ut(t,e){return function(n,r){t(n,r),e(n,r)}}function ct(t,e,n){return e&&(Array.isArray(e)||"object"!==("undefined"==typeof e?"undefined":a(e)))&&(n=e,e=void 0),lt.call(this,t,e,n)}function lt(t,e,n){var r=this._self,i=ai.activeInstance,o=r!==i?i:void 0;if(!i)return void ui("createElement cannot be called outside of component render functions.");if(!t)return ri();if("string"==typeof t){var a=kr.getTagNamespace(t),s=void 0;return kr.isReservedTag(t)?new ni(t,e,V(n,a),(void 0),(void 0),a,r,o):(s=Tt(r.$options,"components",t))?Q(s,e,i,r,o,n,t):(a||kr.ignoredElements&&kr.ignoredElements.indexOf(t)>-1||!kr.isUnknownElement(t)||ui("Unknown custom element: <"+t+'> - did you register the component correctly? For recursive components, make sure to provide the "name" option.'),new ni(t,e,V(n,a),(void 0),(void 0),a,r,o))}return Q(t,e,i,r,o,n)}function ft(t){t._vnode=null,t._staticTrees=null,t.$slots={},t.$createElement=c(ct,t),t.$options.el&&t.$mount(t.$options.el)}function ht(n){n.prototype.$nextTick=function(t){Mr(t,this)},n.prototype._render=function(){var t=this,e=ai.activeInstance;ai.activeInstance=t;var n=t.$options,r=n.render,i=n.staticRenderFns,o=n._renderChildren,a=n._parentVnode;i&&!this._staticTrees&&(this._staticTrees=[]),o&&dt(t,o);var s=r.call(t._renderProxy,t.$createElement);return s instanceof ni||(Array.isArray(s)&&ui("Multiple root nodes returned from render function. Render function should return a single root node.",t),s=ri()),s.parent=a,ai.activeInstance=e,s},n.prototype._h=ct,n.prototype._s=t,n.prototype._n=e,n.prototype._m=function(t){return this._staticTrees[t]||(this._staticTrees[t]=this.$options.staticRenderFns[t].call(this._renderProxy))};var r=function(t){return t};n.prototype._f=function(t){return Tt(this.$options,"filters",t,!0)||r},n.prototype._l=function(t,e){var n=void 0,r=void 0,i=void 0,o=void 0,a=void 0;if(Array.isArray(t))for(n=new Array(t.length),r=0,i=t.length;r<i;r++)n[r]=e(t[r],r);else if("number"==typeof t)for(n=new Array(t),r=0;r<t;r++)n[r]=e(r+1,r);else if(h(t))for(o=Object.keys(t),n=new Array(o.length),r=0,i=o.length;r<i;r++)a=o[r],n[r]=e(t[a],a,r);return n},n.prototype._b=function(t,e){if(e)if(h(e)){Array.isArray(e)&&(e=p(e));var n=t.data;for(var r in e){var i=kr.mustUseProp(r)?n.props||(n.props={}):n.attrs||(n.attrs={});i[r]=e[r]}}else ui("v-bind without argument expects an Object or Array value",this)},n.prototype._k=function(t){return kr.keyCodes[t]}}function dt(t,e){if(e){for(var n=V(e)||[],r={},i=[],o=void 0,a=void 0,s=0,u=n.length;s<u;s++)if(a=n[s],o=a.data&&a.data.slot){var c=r[o]||(r[o]=[]);"template"===a.tag?c.push.apply(c,a.children):c.push(a)}else i.push(a);!i.length||1===i.length&&" "===i[0].text||(r["default"]=i),t.$slots=r}}function pt(t){t._events=Object.create(null);var e=t.$options._parentListeners,n=c(t.$on,t),r=c(t.$off,t);t._updateListeners=function(t,e){W(t,e||{},n,r)},e&&t._updateListeners(e)}function vt(t){t.prototype.$on=function(t,e){var n=this;return(n._events[t]||(n._events[t]=[])).push(e),n},t.prototype.$once=function(t,e){function n(){r.$off(t,n),e.apply(r,arguments)}var r=this;return n.fn=e,r.$on(t,n),r},t.prototype.$off=function(t,e){var n=this;if(!arguments.length)return n._events=Object.create(null),n;var r=n._events[t];if(!r)return n;if(1===arguments.length)return n._events[t]=null,n;for(var i=void 0,o=r.length;o--;)if(i=r[o],i===e||i.fn===e){r.splice(o,1);break}return n},t.prototype.$emit=function(t){var e=this,n=e._events[t];if(n){n=n.length>1?l(n):n;for(var r=l(arguments,1),i=0,o=n.length;i<o;i++)n[i].apply(e,r)}return e}}function gt(t){function e(t,e){var r=t.$options=Object.create(n(t));r.parent=e.parent,r.propsData=e.propsData,r._parentVnode=e._parentVnode,r._parentListeners=e._parentListeners,r._renderChildren=e._renderChildren,r._componentTag=e._componentTag,e.render&&(r.render=e.render,r.staticRenderFns=e.staticRenderFns)}function n(t){var e=t.constructor,n=e.options;if(e["super"]){var r=e["super"].options,i=e.superOptions;r!==i&&(e.superOptions=r,n=e.options=kt(r,e.extendOptions),n.name&&(n.components[n.name]=e))}return n}t.prototype._init=function(t){var r=this;r._uid=si++,r._isVue=!0,t&&t._isComponent?e(r,t):r.$options=kt(n(r),t||{},r),Lr(r),r._self=r,Z(r),pt(r),Y(r,"beforeCreate"),M(r),Y(r,"created"),ft(r)}}function mt(t){this._init(t)}function yt(t,e){var n=void 0,r=void 0,o=void 0;for(n in e)r=t[n],o=e[n],i(t,n)?h(r)&&h(o)&&yt(r,o):N(t,n,o);return t}function bt(t,e){return e?t?t.concat(e):Array.isArray(e)?e:[e]:t}function xt(t,e){var n=Object.create(t||null);return e?f(n,e):n}function wt(t){if(t.components){var e=t.components,n=void 0;for(var r in e){var i=r.toLowerCase();pr(i)||kr.isReservedTag(i)?ui("Do not use built-in or reserved HTML elements as component id: "+r):(n=e[r],d(n)&&(e[r]=mt.extend(n)))}}}function _t(t){var e=t.props;if(e){var n={},r=void 0,i=void 0,o=void 0;if(Array.isArray(e))for(r=e.length;r--;)i=e[r],"string"==typeof i?(o=mr(i),n[o]={type:null}):ui("props must be strings when using array syntax.");else if(d(e))for(var a in e)i=e[a],o=mr(a),n[o]=d(i)?i:{type:i};t.props=n}}function Ct(t){var e=t.directives;if(e)for(var n in e){var r=e[n];"function"==typeof r&&(e[n]={bind:r,update:r})}}function kt(t,e,n){function r(r){var i=li[r]||fi;c[r]=i(t[r],e[r],n,r)}wt(e),_t(e),Ct(e);var o=e["extends"];if(o&&(t="function"==typeof o?kt(t,o.options,n):kt(t,o,n)),e.mixins)for(var a=0,s=e.mixins.length;a<s;a++){var u=e.mixins[a];u.prototype instanceof mt&&(u=u.options),t=kt(t,u,n)}var c={},l=void 0;for(l in t)r(l);for(l in e)i(t,l)||r(l);return c}function Tt(t,e,n,r){if("string"==typeof n){var i=t[e],o=i[n]||i[mr(n)]||i[yr(mr(n))];return r&&!o&&ui("Failed to resolve "+e.slice(0,-1)+": "+n,t),o}}function At(t,e,n){if(t.$options.props&&n){var r=t.$options.props[e],o=!i(n,e),a=n[e];return r.type===Boolean&&(o&&!i(r,"default")?a=!1:""!==a&&a!==xr(e)||(a=!0)),void 0===a&&(a=St(t,r,e),Kr.shouldConvert=!0,j(a),Kr.shouldConvert=!1),$t(r,e,a,t,o),a}}function St(t,e,n){if(i(e,"default")){var r=e["default"];return h(r)&&ui('Invalid default value for prop "'+n+'": Props with type Object/Array must use a factory function to return the default value.',t),"function"==typeof r&&e.type!==Function?r.call(t):r}}function $t(t,e,n,r,i){if(t.required&&i)return void ui('Missing required prop: "'+e+'"',r);if(null!=n||t.required){var o=t.type,a=!o,s=[];if(o){Array.isArray(o)||(o=[o]);for(var u=0;u<o.length&&!a;u++){var c=Et(n,o[u]);s.push(c.expectedType),a=c.valid}}if(!a)return void ui('Invalid prop: type check failed for prop "'+e+'". Expected '+s.map(yr).join(", ")+", got "+Object.prototype.toString.call(n).slice(8,-1)+".",r);var l=t.validator;l&&(l(n)||ui('Invalid prop: custom validator check failed for prop "'+e+'".',r))}}function Et(t,e){var n=void 0,r=void 0;return e===String?(r="string",n=("undefined"==typeof t?"undefined":a(t))===r):e===Number?(r="number",n=("undefined"==typeof t?"undefined":a(t))===r):e===Boolean?(r="boolean",n=("undefined"==typeof t?"undefined":a(t))===r):e===Function?(r="function",n=("undefined"==typeof t?"undefined":a(t))===r):e===Object?(r="Object",n=d(t)):e===Array?(r="Array",n=Array.isArray(t)):(r=e.name||e.toString(),n=t instanceof e),{valid:n,expectedType:r}}function jt(t){t.use=function(t){if(!t.installed){var e=l(arguments,1);return e.unshift(this),"function"==typeof t.install?t.install.apply(t,e):t.apply(null,e),t.installed=!0,this}}}function Ot(t){t.mixin=function(e){t.options=kt(t.options,e)}}function Nt(t){t.cid=0;var e=1;t.extend=function(t){t=t||{};var n=this,r=0===n.cid;if(r&&t._Ctor)return t._Ctor;var i=t.name||n.options.name;/^[a-zA-Z][\w-]*$/.test(i)||(ui('Invalid component name: "'+i+'". Component names can only contain alphanumeric characaters and the hyphen.'),i=null);var o=function(t){this._init(t)};return o.prototype=Object.create(n.prototype),o.prototype.constructor=o,o.cid=e++,o.options=kt(n.options,t),o["super"]=n,o.extend=n.extend,kr._assetTypes.forEach(function(t){o[t]=n[t]}),i&&(o.options.components[i]=o),o.superOptions=n.options,o.extendOptions=t,r&&(t._Ctor=o),o}}function Dt(t){kr._assetTypes.forEach(function(e){t[e]=function(n,r){return r?("component"===e&&kr.isReservedTag(n)&&ui("Do not use built-in or reserved HTML elements as component id: "+n),"component"===e&&d(r)&&(r.name=r.name||n,r=t.extend(r)),this.options[e+"s"][n]=r,r):this.options[e+"s"][n]}})}function Mt(t){var e=t&&t.componentOptions;return e&&e.Ctor.options._abstract?Mt(e.propsData.child):t}function Pt(t){var e={};e.get=function(){return kr},e.set=function(){ui("Do not replace the Vue.config object, set individual fields instead.")},Object.defineProperty(t,"config",e),t.util=hi,t.set=N,t["delete"]=D,t.nextTick=Mr,t.options=Object.create(null),kr._assetTypes.forEach(function(e){t.options[e+"s"]=Object.create(null)}),f(t.options.components,pi),jt(t),Ot(t),Nt(t),Dt(t)}function Ft(t){var e=t.data,n=void 0;return(n=t.child)&&(n=n._vnode.data)&&(e=Bt(n,e)),(n=t.parent)&&(n=n.data)&&(e=Bt(e,n)),Lt(e)}function Bt(t,e){return{staticClass:Rt(t.staticClass,e.staticClass),"class":t["class"]?[t["class"],e["class"]]:e["class"]}}function Lt(t){var e=t["class"],n=t.staticClass;return n||e?Rt(n,It(e)):""}function Rt(t,e){return t?e?t+" "+e:t:e||""}function It(t){var e="";if(!t)return e;if("string"==typeof t)return t;if(Array.isArray(t)){for(var n=void 0,r=0,i=t.length;r<i;r++)t[r]&&(n=It(t[r]))&&(e+=n+" ");return e.slice(0,-1)}if(h(t)){for(var o in t)t[o]&&(e+=o+" ");return e.slice(0,-1)}return e}function Ht(t){return Si(t)?"svg":"math"===t?"math":void 0}function qt(t){if(!Sr)return!0;if(t=t.toLowerCase(),null!=$i[t])return $i[t];var e=document.createElement(t);return t.indexOf("-")>-1?$i[t]=e.constructor===window.HTMLUnknownElement||e.constructor===window.HTMLElement:$i[t]=/HTMLUnknownElement/.test(e.toString())}function zt(t){if("string"==typeof t){var e=t;if(t=document.querySelector(t),!t)return ui("Cannot find element: "+e),document.createElement("div")}return t}function Vt(t){return document.createElement(t)}function Ut(t,e){return document.createElementNS(_i[t],e)}function Wt(t){return document.createTextNode(t)}function Xt(t,e,n){t.insertBefore(e,n)}function Gt(t,e){t.removeChild(e)}function Zt(t,e){t.appendChild(e)}function Jt(t){return t.parentNode}function Yt(t){return t.nextSibling}function Qt(t){return t.tagName}function Kt(t,e){t.textContent=e}function te(t){return t.childNodes}function ee(t,e,n){t.setAttribute(e,n)}function ne(t){return null==t}function re(t){return null!=t}function ie(t,e){return t.key===e.key&&t.tag===e.tag}function oe(t,e,n){var r=void 0,i=void 0,o={};for(r=e;r<=n;++r)i=t[r].key,re(i)&&(o[i]=r);return o}function ae(e){function n(t){return new ni(_.tagName(t).toLowerCase(),{},[],(void 0),t)}function r(t,e){function n(){0===--n.listeners&&i(t)}return n.listeners=e,n}function i(t){var e=_.parentNode(t);_.removeChild(e,t)}function o(t,e){var n=void 0,r=void 0,i=t.data;if(re(i)&&(re(n=i.hook)&&re(n=n.init)&&n(t),re(n=t.child)))return a(t,e),u(t),t.elm;var c=t.children,l=t.tag;if(re(l)){if(r=t.elm=t.ns?_.createElementNS(t.ns,l):_.createElement(l),u(t),Array.isArray(c))for(n=0;n<c.length;++n)_.appendChild(r,o(c[n],e));else s(t.text)&&_.appendChild(r,_.createTextNode(t.text));re(i)&&a(t,e)}else r=t.elm=_.createTextNode(t.text);return t.elm}function a(t,e){for(var n=0;n<x.create.length;++n)x.create[n](Pi,t);y=t.data.hook,re(y)&&(y.create&&y.create(Pi,t),y.insert&&e.push(t))}function u(t){var e=void 0;re(e=t.host)&&re(e=e.$options._scopeId)&&_.setAttribute(t.elm,e,""),re(e=t.context)&&re(e=e.$options._scopeId)&&_.setAttribute(t.elm,e,"")}function c(t,e,n,r,i,a){for(;r<=i;++r)_.insertBefore(t,o(n[r],a),e)}function l(t){var e=void 0,n=void 0,r=t.data;if(re(r))for(re(e=r.hook)&&re(e=e.destroy)&&e(t),e=0;e<x.destroy.length;++e)x.destroy[e](t);if(re(e=t.child)&&!r.keepAlive&&l(e._vnode),re(e=t.children))for(n=0;n<t.children.length;++n)l(t.children[n])}function f(t,e,n,r){for(;n<=r;++n){var i=e[n];re(i)&&(re(i.tag)?(l(i),h(i)):_.removeChild(t,i.elm))}}function h(t,e){if(e||re(t.data)){var n=x.remove.length+1;for(e?e.listeners+=n:e=r(t.elm,n),re(y=t.child)&&re(y=y._vnode)&&re(y.data)&&h(y,e),y=0;y<x.remove.length;++y)x.remove[y](t,e);re(y=t.data.hook)&&re(y=y.remove)?y(t,e):e()}else i(t.elm)}function d(t,e,n,r){for(var i=0,a=0,s=e.length-1,u=e[0],l=e[s],h=n.length-1,d=n[0],v=n[h],g=void 0,m=void 0,y=void 0,b=void 0;i<=s&&a<=h;)ne(u)?u=e[++i]:ne(l)?l=e[--s]:ie(u,d)?(p(u,d,r),u=e[++i],d=n[++a]):ie(l,v)?(p(l,v,r),l=e[--s],v=n[--h]):ie(u,v)?(p(u,v,r),_.insertBefore(t,u.elm,_.nextSibling(l.elm)),u=e[++i],v=n[--h]):ie(l,d)?(p(l,d,r),_.insertBefore(t,l.elm,u.elm),l=e[--s],d=n[++a]):(ne(g)&&(g=oe(e,i,s)),m=g[d.key],ne(m)?(_.insertBefore(t,o(d,r),u.elm),d=n[++a]):(y=e[m],y||ui("It seems there are duplicate keys that is causing an update error. Make sure each v-for item has a unique key."),y.tag!==d.tag?(_.insertBefore(t,o(d,r),u.elm),d=n[++a]):(p(y,d,r),e[m]=void 0,_.insertBefore(t,d.elm,u.elm),d=n[++a])));i>s?(b=ne(n[h+1])?null:n[h+1].elm,c(t,b,n,a,h,r)):a>h&&f(t,e,i,s)}function p(t,e,n){if(t!==e){var r=void 0,i=void 0,o=re(r=e.data);o&&(t.data=t.data||Mi,re(i=r.hook)&&re(r=i.prepatch)&&r(t,e));var a=e.elm=t.elm,s=t.children,u=e.children;if(o){for(r=0;r<x.update.length;++r)x.update[r](t,e);re(i)&&re(r=i.update)&&r(t,e)}if(ne(e.text)?re(s)&&re(u)?s!==u&&d(a,s,u,n):re(u)?(re(t.text)&&_.setTextContent(a,""),c(a,null,u,0,u.length-1,n)):re(s)?f(a,s,0,s.length-1):re(t.text)&&_.setTextContent(a,""):t.text!==e.text&&_.setTextContent(a,e.text),o){for(r=0;r<x.postpatch.length;++r)x.postpatch[r](t,e);re(i)&&re(r=i.postpatch)&&r(t,e)}}}function v(t){for(var e=0;e<t.length;++e)t[e].data.hook.insert(t[e])}function g(t,e,n){if(!m(t,e))return!1;e.elm=t;var r=e.tag,i=e.data,o=e.children;if(re(i)&&(re(y=i.hook)&&re(y=y.init)&&y(e,!0),re(y=e.child)))return a(e,n),!0;if(re(r)){if(re(o))for(var s=_.childNodes(t),u=0;u<o.length;u++){var c=g(s[u],o[u],n);if(!c)return!1}re(i)&&a(e,n)}return!0}function m(e,n){if(n.tag){if(0===n.tag.indexOf("vue-component"))return!0;var r=_.childNodes(e);return n.tag===_.tagName(e).toLowerCase()&&(n.children?n.children.length===r.length:0===r.length)}return t(n.text)===e.data}var y=void 0,b=void 0,x={},w=e.modules,_=e.nodeOps;for(y=0;y<Fi.length;++y)for(x[Fi[y]]=[],b=0;b<w.length;++b)void 0!==w[b][Fi[y]]&&x[Fi[y]].push(w[b][Fi[y]]);return function(t,e,r){var i=void 0,a=void 0,s=[];if(t){var u=re(t.nodeType);if(!u&&ie(t,e))p(t,e,s);else{if(u){if(t.hasAttribute("server-rendered")&&(t.removeAttribute("server-rendered"),r=!0),r){if(g(t,e,s))return v(s),t;ui("The client-side rendered virtual DOM tree is not matching server-rendered content. Bailing hydration and performing full client-side render.")}t=n(t)}i=t.elm,a=_.parentNode(i),o(e,s),null!==a?(_.insertBefore(a,e.elm,_.nextSibling(i)),f(a,[t],0,0)):re(t.tag)&&l(t)}}else o(e,s);return v(s),e.elm}}function se(t,e,n){var r=e.data.directives;if(r)for(var i=t.data.directives,o="update"===n,a=0;a<r.length;a++){var s=r[a],u=Tt(e.context.$options,"directives",s.name,!0),c=u&&u[n];if(c){if(o&&i){var l=s.oldValue=i[a].value;if(l===s.value)continue}c(e.elm,s,e,t)}}}function ue(t,e){var n=t.data.ref;if(n){var i=t.context,o=t.child||t.elm,a=i.$refs;e?Array.isArray(a[n])?r(a[n],o):a[n]===o&&(a[n]=void 0):t.data.refInFor?Array.isArray(a[n])?a[n].push(o):a[n]=[o]:a[n]=o}}function ce(t,e){if(t.data.attrs||e.data.attrs){var n=void 0,r=void 0,i=void 0,o=e.elm,a=t.data.attrs||{},s=e.data.attrs||{};for(n in s)r=s[n],i=a[n],i!==r&&le(o,n,r);for(n in a)null==s[n]&&(bi(n)?o.removeAttributeNS(yi,xi(n)):gi(n)||o.removeAttribute(n))}}function le(t,e,n){mi(e)?wi(n)?t.removeAttribute(e):t.setAttribute(e,e):gi(e)?t.setAttribute(e,wi(n)||"false"===n?"false":"true"):bi(e)?wi(n)?t.removeAttributeNS(yi,xi(e)):t.setAttributeNS(yi,e,n):wi(n)?t.removeAttribute(e):t.setAttribute(e,n)}function fe(t,e){var n=e.elm,r=e.data;if(r.staticClass||r["class"]){var i=Ft(e),o=n._transitionClasses;o&&(i=Rt(i,It(o))),i!==n._prevClass&&(n.setAttribute("class",i),n._prevClass=i)}}function he(t,e){if(t.data.on||e.data.on){var n=e.data.on||{},r=t.data.on||{},i=e.elm._v_add||(e.elm._v_add=function(t,n,r){e.elm.addEventListener(t,n,r)}),o=e.elm._v_remove||(e.elm._v_remove=function(t,n){e.elm.removeEventListener(t,n)});W(n,r,i,o)}}function de(t,e){if(t.data.props||e.data.props){var n=void 0,r=void 0,i=e.elm,o=t.data.props||{},a=e.data.props||{};for(n in o)null==a[n]&&(i[n]=void 0);for(n in a)r=a[n],"value"===n?(i._value=r,i.value!=r&&(i.value=r)):i[n]=r}}function pe(t,e){if(t.data.style||e.data.style){var n=void 0,r=void 0,i=e.elm,o=t.data.style||{},a=e.data.style||{};Array.isArray(a)&&(a=e.data.style=p(a));for(r in o)a[r]||(i.style[Wi(r)]="");for(r in a)n=a[r],n!==o[r]&&(i.style[Wi(r)]=n||"");e.data.style=f({},a)}}function ve(t,e){if(t.classList)e.indexOf(" ")>-1?e.split(/\s+/).forEach(function(e){return t.classList.add(e)}):t.classList.add(e);else{var n=" "+t.getAttribute("class")+" ";n.indexOf(" "+e+" ")<0&&t.setAttribute("class",(n+e).trim())}}function ge(t,e){if(t.classList)e.indexOf(" ")>-1?e.split(/\s+/).forEach(function(e){return t.classList.remove(e)}):t.classList.remove(e);else{for(var n=" "+t.getAttribute("class")+" ",r=" "+e+" ";n.indexOf(r)>=0;)n=n.replace(r," ");t.setAttribute("class",n.trim())}}function me(t){eo(function(){eo(t)})}function ye(t){var e=t.elm,n=t.context;e._leaveCb&&(e._leaveCb.cancelled=!0,e._leaveCb());var r=t.data.transition;if(r){var i=xe(r,t.context),o=i.css,a=i.appear,s=i.enterClass,u=i.enterActiveClass,c=i.appearClass,l=i.appearActiveClass,f=i.beforeEnter,h=i.onEnter,d=i.afterEnter,p=i.enterCancelled,v=i.beforeAppear,g=i.onAppear,m=i.afterAppear,y=i.appearCancelled,b=!t.context.$root._isMounted;if(!b||a||""===a){var x=b?c:s,w=b?l:u,_=b?v||f:f,C=b?g||h:h,k=b?m||d:d,T=b?y||p:p,A=o!==!1,S=C&&C.length>2,$=e._enterCb=Ee(function(){A&&ke(e,w),$.cancelled?(A&&ke(e,x),T&&T(e,n)):k&&k(e,n),e._enterCb=null});_&&_(e,n),A&&(Ce(e,x),Ce(e,w),me(function(){ke(e,x),$.cancelled||S||Te(e,$)})),C&&C(e,n,$),A||S||$()}}}function be(t,e){function n(){l&&l(r,i),v&&(Ce(r,u),Ce(r,c),me(function(){ke(r,u),m.cancelled||g||Te(r,m)})),f&&f(r,i,m),v||g||m()}var r=t.elm,i=t.context;r._enterCb&&(r._enterCb.cancelled=!0,r._enterCb());var o=t.data.transition;if(!o)return e();var a=xe(o,t.context),s=a.css,u=a.leaveClass,c=a.leaveActiveClass,l=a.beforeLeave,f=a.onLeave,h=a.afterLeave,d=a.leaveCancelled,p=a.delayLeave,v=s!==!1,g=f&&f.length>2,m=r._leaveCb=Ee(function(){v&&ke(r,c),m.cancelled?(v&&ke(r,u),d&&d(r,i)):(e(),h&&h(r,i)),r._leaveCb=null});p?p(n):n()}function xe(t,e){var n=void 0;if(t&&"string"==typeof t)return n=Tt(e.$options,"transitions",t),n?we(n.name||t,n):no(t);if("object"===("undefined"==typeof t?"undefined":a(t))){if(t.name&&(n=Tt(e.$options,"transitions",t.name)),n=n?f(we(t.name,n),t):we(t.name,t),t.hooks)for(var r in t.hooks)_e(n,r,t.hooks[r]);return n}return no("v")}function we(t,e){t=t||"v";var n={};return e.css!==!1&&f(n,no(t)),f(n,e),n}function _e(t,e,n){var r=t[e];r?t[e]=function(){r.apply(this,arguments),n()}:t[e]=n}function Ce(t,e){(t._transitionClasses||(t._transitionClasses=[])).push(e),ve(t,e)}function ke(t,e){r(t._transitionClasses,e),ge(t,e)}function Te(t,e){var n=Ae(t),r=n.type,i=n.timeout,o=n.propCount;if(!r)return e();var a=r===Zi?Qi:to,s=0,u=function(){t.removeEventListener(a,c),e()},c=function(){++s>=o&&u()};setTimeout(function(){s<o&&u()},i+1),t.addEventListener(a,c)}function Ae(t){var e=window.getComputedStyle(t),n=e[Yi+"Delay"].split(", "),r=e[Yi+"Duration"].split(", "),i=e[Ki+"Delay"].split(", "),o=e[Ki+"Duration"].split(", "),a=Se(n,r),s=Se(i,o),u=Math.max(a,s),c=u>0?a>s?Zi:Ji:null,l=c?c===Zi?r.length:o.length:0;return{type:c,timeout:u,propCount:l}}function Se(t,e){return Math.max.apply(null,e.map(function(e,n){return $e(e)+$e(t[n])}))}function $e(t){return 1e3*Number(t.slice(0,-1))}function Ee(t){var e=!1;return function(){e||(e=!0,t())}}function je(t){return!!(t.parent&&t.parent.data.transition||t.data.show)}function Oe(t,e){var n=t.multiple;n||(t.selectedIndex=-1);for(var r=0,i=t.options.length;r<i;r++){var o=t.options[r];if(n)o.selected=e.indexOf(De(o))>-1;else if(De(o)===e){t.selectedIndex=r;break}}}function Ne(t,e){for(var n=0,r=e.length;n<r;n++)if(De(e[n])===t)return!1;return!0}function De(t){return"_value"in t?t._value:t.value||t.text}function Me(t){t.target.composing=!0}function Pe(t){t.target.composing=!1,Fe(t.target,"input")}function Fe(t,e){var n=document.createEvent("HTMLEvents");n.initEvent(e,!0,!0),
-t.dispatchEvent(n)}function Be(t){var e=t.parent;return e&&null!=e.data.transition?e.data.transition:t.data.transition}function Le(t,e){if(t.data&&t.data.transition){var n=t.data.transition;"string"==typeof n?n=t.data.transition={name:n}:"object"!==("undefined"==typeof n?"undefined":a(n))&&(n=t.data.transition={name:"v"}),n.hooks=e}}function Re(t){return po.innerHTML=t,po.textContent}function Ie(t){var e=vo.source+"(?:\\s*("+He(t)+")\\s*(?:"+yo.join("|")+"))?";return new RegExp("^\\s*"+e)}function He(t){return mo.map(function(t){return"(?:"+t.source+")"}).join("|")}function qe(t,e){function n(e){l+=e,t=t.substring(e)}function r(){var e=t.match(wo);if(e){var r={tagName:e[1],attrs:[],start:l};n(e[0].length);for(var i=void 0,o=void 0;!(i=t.match(_o))&&(o=t.match(s));)n(o[0].length),r.attrs.push(o);if(i)return r.unarySlash=i[1],n(i[0].length),r.end=l,r}}function i(t){var n=t.tagName,r=t.unarySlash;u&&("p"===h&&Ai(n)&&o("",h),Ti(n)&&h===n&&o("",n));for(var i=c(n)||"html"===n&&"head"===h||!!r,s=t.attrs.length,l=new Array(s),f=0;f<s;f++){var d=t.attrs[f];To&&d[0].indexOf('""')===-1&&(""===d[3]&&delete d[3],""===d[4]&&delete d[4],""===d[5]&&delete d[5]),l[f]={name:d[1],value:Re(d[3]||d[4]||d[5]||"")}}i||(a.push({tag:n,attrs:l}),h=n,r=""),e.start&&e.start(n,l,i,t.start,t.end)}function o(t,n,r,i){var o=void 0;if(null==r&&(r=l),null==i&&(i=l),n){var s=n.toLowerCase();for(o=a.length-1;o>=0&&a[o].tag.toLowerCase()!==s;o--);}else o=0;if(o>=0){for(var u=a.length-1;u>=o;u--)e.end&&e.end(a[u].tag,r,i);a.length=o,h=o&&a[o-1].tag}else"br"===n.toLowerCase()?e.start&&e.start(n,[],!0,r,i):"p"===n.toLowerCase()&&(e.start&&e.start(n,[],!1,r,i),e.end&&e.end(n,r,i))}for(var a=[],s=Ie(e),u=e.expectHTML,c=e.isUnaryTag||Cr,l=0,f=void 0,h=void 0;t;){if(f=t,h&&Ao(h))!function(){var n=h.toLowerCase(),r=So[n]||(So[n]=new RegExp("([\\s\\S]*?)(</"+n+"[^>]*>)","i")),i=0,a=t.replace(r,function(t,r,o){return i=o.length,"script"!==n&&"style"!==n&&"noscript"!==n&&(r=r.replace(/<!--([\s\S]*?)-->/g,"$1").replace(/<!\[CDATA\[([\s\S]*?)\]\]>/g,"$1")),e.chars&&e.chars(r),""});l+=t.length-a.length,t=a,o("</"+n+">",n,l-i,l)}();else{var d=t.indexOf("<");if(0===d){if(/^<!--/.test(t)){var p=t.indexOf("-->");if(p>=0){n(p+3);continue}}if(/^<!\[/.test(t)){var v=t.indexOf("]>");if(v>=0){n(v+2);continue}}var g=t.match(ko);if(g){e.doctype&&e.doctype(g[0]),n(g[0].length);continue}var m=t.match(Co);if(m){var y=l;n(m[0].length),o(m[0],m[1],y,l);continue}var b=r();if(b){i(b);continue}}var x=void 0;d>=0?(x=t.substring(0,d),n(d)):(x=t,t=""),e.chars&&e.chars(x)}if(t===f)throw new Error("Error parsing template:\n\n"+t)}o()}function ze(t){function e(){(h||(h=[])).push(t.slice(s,l).trim()),s=l+1}var n=!1,r=!1,i=0,o=0,a=0,s=0,u=void 0,c=void 0,l=void 0,f=void 0,h=void 0;for(l=0;l<t.length;l++)if(c=u,u=t.charCodeAt(l),n)39===u&&92!==c&&(n=!n);else if(r)34===u&&92!==c&&(r=!r);else if(124!==u||124===t.charCodeAt(l+1)||124===t.charCodeAt(l-1)||i||o||a)switch(u){case 34:r=!0;break;case 39:n=!0;break;case 40:a++;break;case 41:a--;break;case 91:o++;break;case 93:o--;break;case 123:i++;break;case 125:i--}else void 0===f?(s=l+1,f=t.slice(0,l).trim()):e();if(void 0===f?f=t.slice(0,l).trim():0!==s&&e(),h)for(l=0;l<h.length;l++)f=Ve(f,h[l]);return f}function Ve(t,e){var n=e.indexOf("(");if(n<0)return'_f("'+e+'")('+t+")";var r=e.slice(0,n),i=e.slice(n+1);return'_f("'+r+'")('+t+","+i}function Ue(t,e){var n=e?jo(e):$o;if(n.test(t)){for(var r=[],i=n.lastIndex=0,o=void 0,a=void 0;o=n.exec(t);){a=o.index,a>i&&r.push(JSON.stringify(t.slice(i,a)));var s=ze(o[1].trim());r.push("_s("+s+")"),i=a+o[0].length}return i<t.length&&r.push(JSON.stringify(t.slice(i))),r.join("+")}}function We(t){console.error("[Vue parser]: "+t)}function Xe(t,e){return t?t.map(function(t){return t[e]}).filter(function(t){return t}):[]}function Ge(t,e,n){(t.props||(t.props=[])).push({name:e,value:n})}function Ze(t,e,n){(t.attrs||(t.attrs=[])).push({name:e,value:n})}function Je(t,e,n){(t.staticAttrs||(t.staticAttrs=[])).push({name:e,value:n})}function Ye(t,e,n,r,i){(t.directives||(t.directives=[])).push({name:e,value:n,arg:r,modifiers:i})}function Qe(t,e,n){var r=t.hooks||(t.hooks={}),i=r[e];i?i.push(n):r[e]=[n]}function Ke(t,e,n,r){var i=t.events||(t.events={});r&&r.capture&&(delete r.capture,e="!"+e);var o={value:n,modifiers:r},a=i[e];Array.isArray(a)?a.push(o):a?i[e]=[a,o]:i[e]=o}function tn(t,e,n){var r=en(t,":"+e)||en(t,"v-bind:"+e);if(null!=r)return r;if(n!==!1){var i=en(t,e);if(null!=i)return JSON.stringify(i)}}function en(t,e){var n=void 0;if(null!=(n=t.attrsMap[e]))for(var r=t.attrsList,i=0,o=r.length;i<o;i++)if(r[i].name===e){r.splice(i,1);break}return n}function nn(t,e){Io=e.warn||We,Ho=e.getTagNamespace||Cr,qo=e.mustUseProp||Cr,zo=Xe(e.modules,"preTransformNode"),Vo=Xe(e.modules,"transformNode"),Uo=Xe(e.modules,"postTransformNode"),Wo=e.delimiters;var n=[],r=e.preserveWhitespace!==!1,i=void 0,o=void 0,a=!1,s=!1;return qe(t,{expectHTML:e.expectHTML,isUnaryTag:e.isUnaryTag,start:function(r,u,c){Lo.test(r)&&(Io("Found camelCase tag in template: <"+r+">. "+("I've converted it to <"+xr(r)+"> for you.")),r=xr(r)),r=r.toLowerCase();var l=o&&o.ns||Ho(r);e.isIE&&"svg"===l&&(u=bn(u));var f={type:1,tag:r,attrsList:u,attrsMap:gn(u),parent:o,children:[]};l&&(f.ns=l),yn(f)&&(f.forbidden=!0,Io("Templates should only be responsbile for mapping the state to the UI. Avoid placing tags with side-effects in your templates, such as "+("<"+r+">.")));for(var h=0;h<zo.length;h++)zo[h](f,e);if(a||(rn(f),f.pre&&(a=!0)),a)on(f);else{un(f),cn(f),fn(f),f.plain=!f.key&&!u.length,an(f),sn(f),hn(f),dn(f);for(var d=0;d<Vo.length;d++)Vo[d](f,e);pn(f)}i?n.length||s||(s=!0,Io("Component template should contain exactly one root element:\n\n"+t)):(i=f,"slot"!==r&&"template"!==r||Io("Cannot use <"+r+"> as component root element because it may contain multiple nodes:\n"+t),f.attrsMap.hasOwnProperty("v-for")&&Io("Cannot use v-for on stateful component root element because it renders multiple elements:\n"+t)),o&&!f.forbidden&&(f["else"]?ln(f,o):(o.children.push(f),f.parent=o)),c||(o=f,n.push(f));for(var p=0;p<Uo.length;p++)Uo[p](f,e)},end:function(){var t=n[n.length-1],e=t.children[t.children.length-1];e&&3===e.type&&" "===e.text&&t.children.pop(),n.length-=1,o=n[n.length-1],t.pre&&(a=!1)},chars:function(e){if(!o)return void(s||(s=!0,Io("Component template should contain exactly one root element:\n\n"+t)));if(e="pre"===o.tag||e.trim()?Ro(e):r&&o.children.length?" ":""){var n=void 0;!a&&" "!==e&&(n=Ue(e,Wo))?o.children.push({type:2,expression:n,text:e}):o.children.push({type:3,text:e})}}}),i}function rn(t){null!=en(t,"v-pre")&&(t.pre=!0)}function on(t){var e=t.attrsList.length;if(e)for(var n=t.staticAttrs=new Array(e),r=0;r<e;r++)n[r]={name:t.attrsList[r].name,value:JSON.stringify(t.attrsList[r].value)};else t.pre||(t.plain=!0)}function an(t){var e=tn(t,"key");e&&(t.key=e)}function sn(t){var e=tn(t,"ref");if(e){t.ref=e;for(var n=t;n;){if(void 0!==n["for"]){t.refInFor=!0;break}n=n.parent}}}function un(t){var e=void 0;if(e=en(t,"v-for")){var n=e.match(No);if(!n)return void Io("Invalid v-for expression: "+e);t["for"]=n[2].trim();var r=n[1].trim(),i=r.match(Do);i?(t.alias=i[1].trim(),t.iterator1=i[2].trim(),i[3]&&(t.iterator2=i[3].trim())):t.alias=r}}function cn(t){var e=en(t,"v-if");e&&(t["if"]=e),null!=en(t,"v-else")&&(t["else"]=!0)}function ln(t,e){var n=mn(e.children);n&&n["if"]?n.elseBlock=t:Io("v-else used on element <"+t.tag+"> without corresponding v-if.")}function fn(t){var e=en(t,"v-once");null!=e&&(t.once=!0)}function hn(t){if("slot"===t.tag)t.slotName=tn(t,"name");else{var e=tn(t,"slot");e&&(t.slotTarget=e)}}function dn(t){var e=void 0;(e=tn(t,"is"))&&(t.component=e),null!=en(t,"keep-alive")&&(t.keepAlive=!0),null!=en(t,"inline-template")&&(t.inlineTemplate=!0)}function pn(t){var e=t.attrsList,n=void 0,r=void 0,i=void 0,o=void 0,a=void 0,s=void 0;for(n=0,r=e.length;n<r;n++)if(i=e[n].name,o=e[n].value,Oo.test(i))if(s=vn(i),s&&(i=i.replace(Bo,"")),Mo.test(i))i=i.replace(Mo,""),qo(i)?Ge(t,i,o):Ze(t,i,o);else if(Po.test(i))i=i.replace(Po,""),Ke(t,i,o,s);else{i=i.replace(Oo,"");var u=i.match(Fo);u&&(a=u[1])&&(i=i.slice(0,-(a.length+1))),Ye(t,i,o,a,s)}else{var c=Ue(o,Wo);c&&Io(i+'="'+o+'": Interpolation inside attributes has been deprecated. Use v-bind or the colon shorthand instead.'),Je(t,i,JSON.stringify(o))}}function vn(t){var e=t.match(Bo);if(e){var n=function(){var t={};return e.forEach(function(e){t[e.slice(1)]=!0}),{v:t}}();if("object"===("undefined"==typeof n?"undefined":a(n)))return n.v}}function gn(t){for(var e={},n=0,r=t.length;n<r;n++)e[t[n].name]&&Io("duplicate attribute: "+t[n].name),e[t[n].name]=t[n].value;return e}function mn(t){for(var e=t.length;e--;)if(t[e].tag)return t[e]}function yn(t){return"style"===t.tag||"script"===t.tag&&(!t.attrsMap.type||"text/javascript"===t.attrsMap.type)}function bn(t){for(var e=[],n=0;n<t.length;n++){var r=t[n];Xo.test(r.name)||(r.name=r.name.replace(Go,""),e.push(r))}return e}function xn(t,e){t&&(Zo=Yo(e.staticKeys||""),Jo=e.isReservedTag||function(){return!1},_n(t),Cn(t))}function wn(t){return n("type,tag,attrsList,attrsMap,plain,parent,children,staticAttrs"+(t?","+t:""))}function _n(t){if(t["static"]=kn(t),1===t.type)for(var e=0,n=t.children.length;e<n;e++){var r=t.children[e];_n(r),r["static"]||(t["static"]=!1)}}function Cn(t){if(1===t.type&&(t.once||t["static"]))return void(t.staticRoot=!0);if(t.children)for(var e=0,n=t.children.length;e<n;e++)Cn(t.children[e])}function kn(t){return 2!==t.type&&(3===t.type||!(!t.pre&&(t["if"]||t["for"]||pr(t.tag)||!Jo(t.tag)||!t.plain&&!Object.keys(t).every(Zo))))}function Tn(t){var e="on:{";for(var n in t)e+='"'+n+'":'+An(t[n])+",";return e.slice(0,-1)+"}"}function An(t){if(t){if(Array.isArray(t))return"["+t.map(An).join(",")+"]";if(t.modifiers){var e="function($event){";for(var n in t.modifiers)e+=ta[n]||Sn(n);var r=Qo.test(t.value)?t.value+"($event)":t.value;return e+r+"}"}return Qo.test(t.value)?t.value:"function($event){"+t.value+"}"}return"function(){}"}function Sn(t){var e=parseInt(t,10)||Ko[t]||"_k("+JSON.stringify(t)+")";return Array.isArray(e)?"if("+e.map(function(t){return"$event.keyCode!=="+t}).join("&&")+")return;":"if($event.keyCode!=="+e+")return;"}function $n(t,e){Qe(t,"construct","_b(n1,"+e.value+")")}function En(t,e){var n=sa,r=sa=[];ua=e,na=e.warn||We,ra=Xe(e.modules,"transformCode"),ia=Xe(e.modules,"genData"),oa=e.directives||{},aa=e.isReservedTag||Cr;var i=t?jn(t):'_h("div")';return sa=n,{render:"with(this){return "+i+"}",staticRenderFns:r}}function jn(t){if(t.staticRoot&&!t.staticProcessed)return t.staticProcessed=!0,sa.push("with(this){return "+jn(t)+"}"),"_m("+(sa.length-1)+")";if(t["for"]&&!t.forProcessed)return Dn(t);if(t["if"]&&!t.ifProcessed)return On(t);if("template"!==t.tag||t.slotTarget){if("slot"===t.tag)return Rn(t);var e=void 0;if(t.component)e=In(t);else{var n=Mn(t),r=t.inlineTemplate?null:Fn(t,!t.ns&&!aa(t.tag));e="_h('"+t.tag+"'"+(n?","+n:"")+(r?","+r:"")+")"}for(var i=0;i<ra.length;i++)e=ra[i](t,e);return t.component&&t.keepAlive&&(e='_h("KeepAlive",{props:{child:'+e+"}})"),e}return Fn(t)||"void 0"}function On(t){var e=t["if"];return t.ifProcessed=!0,"("+e+")?"+jn(t)+":"+Nn(t)}function Nn(t){return t.elseBlock?jn(t.elseBlock):"void 0"}function Dn(t){var e=t["for"],n=t.alias,r=t.iterator1?","+t.iterator1:"",i=t.iterator2?","+t.iterator2:"";return t.forProcessed=!0,"("+e+")&&_l(("+e+"),"+("function("+n+r+i+"){")+("return "+jn(t))+"})"}function Mn(t){if(!t.plain){var e="{",n=Pn(t);n&&(e+=n+","),t.key&&(e+="key:"+t.key+","),t.ref&&(e+="ref:"+t.ref+","),t.refInFor&&(e+="refInFor:true,"),t.component&&(e+='tag:"'+t.tag+'",'),t.slotTarget&&(e+="slot:"+t.slotTarget+",");for(var r=0;r<ia.length;r++)e+=ia[r](t);if(t.attrsMap["v-show"]&&(e+="show:true,"),t.props&&(e+="props:{"+Hn(t.props)+"},"),t.attrs&&(e+="attrs:{"+Hn(t.attrs)+"},"),t.staticAttrs&&(e+="staticAttrs:{"+Hn(t.staticAttrs)+"},"),t.hooks&&(e+="hook:{"+qn(t.hooks)+"},"),t.events&&(e+=Tn(t.events)+","),t.inlineTemplate){var i=t.children[0];if((t.children.length>1||1!==i.type)&&na("Inline-template components must have exactly one child element."),1===i.type){var o=En(i,ua);e+="inlineTemplate:{render:function(){"+o.render+"},staticRenderFns:["+o.staticRenderFns.map(function(t){return"function(){"+t+"}"}).join(",")+"]}"}}return e.replace(/,$/,"")+"}"}}function Pn(t){var e=t.directives;if(e){var n="directives:[",r=!1,i=void 0,o=void 0,a=void 0,s=void 0;for(i=0,o=e.length;i<o;i++){a=e[i],s=!0;var u=oa[a.name]||ea[a.name];u&&(s=!!u(t,a,na)),s&&(r=!0,n+='{name:"'+a.name+'"'+(a.value?",value:("+a.value+"),expression:"+JSON.stringify(a.value):"")+(a.arg?',arg:"'+a.arg+'"':"")+(a.modifiers?",modifiers:"+JSON.stringify(a.modifiers):"")+"},")}return r?n.slice(0,-1)+"]":void 0}}function Fn(t,e){if(t.children.length){var n="["+t.children.map(Bn).join(",")+"]";return e?"function(){return "+n+"}":n}}function Bn(t){return 1===t.type?jn(t):Ln(t)}function Ln(t){return 2===t.type?t.expression:JSON.stringify(t.text)}function Rn(t){var e="$slots["+(t.slotName||'"default"')+"]",n=Fn(t);return n?"("+e+"||"+n+")":e}function In(t){var e=Fn(t,!0);return"_h("+t.component+","+Mn(t)+(e?","+e:"")+")"}function Hn(t){for(var e="",n=0;n<t.length;n++){var r=t[n];e+='"'+r.name+'":'+r.value+","}return e.slice(0,-1)}function qn(t){var e="";for(var n in t)e+='"'+n+'":function(n1,n2){'+t[n].join(";")+"},";return e.slice(0,-1)}function zn(t,e){var n=nn(t.trim(),e);xn(n,e);var r=En(n,e);return{ast:n,render:r.render,staticRenderFns:r.staticRenderFns}}function Vn(t){var e=[];return t&&Un(t,e),e}function Un(t,e){if(1===t.type){for(var n in t.attrsMap)if(Oo.test(n)){var r=t.attrsMap[n];r&&("v-for"===n?Wn(t,'v-for="'+r+'"',e):Gn(r,n+'="'+r+'"',e))}if(t.children)for(var i=0;i<t.children.length;i++)Un(t.children[i],e)}else 2===t.type&&Gn(t.expression,t.text,e)}function Wn(t,e,n){Gn(t["for"]||"",e,n),Xn(t.alias,"v-for alias",e,n),Xn(t.iterator1,"v-for iterator",e,n),Xn(t.iterator2,"v-for iterator",e,n)}function Xn(t,e,n,r){"string"!=typeof t||la.test(t)||r.push("- invalid "+e+' "'+t+'" in expression: '+n)}function Gn(t,e,n){try{new Function("return "+t)}catch(r){var i=t.replace(fa,"").match(ca);i?n.push("- avoid using JavaScript keyword as property name: "+('"'+i[0]+'" in expression '+e)):n.push("- invalid expression: "+e)}}function Zn(t,e){var n=e.warn||We,r=en(t,"class");if(r){var i=Ue(r,e.delimiters);i&&n('class="'+r+'": Interpolation inside attributes has been deprecated. Use v-bind or the colon shorthand instead.')}t.staticClass=JSON.stringify(r);var o=tn(t,"class",!1);o&&(t.classBinding=o)}function Jn(t){var e="";return t.staticClass&&(e+="staticClass:"+t.staticClass+","),t.classBinding&&(e+="class:"+t.classBinding+","),e}function Yn(t){var e=tn(t,"style",!1);e&&(t.styleBinding=e)}function Qn(t){return t.styleBinding?"style:("+t.styleBinding+"),":""}function Kn(t){var e=tn(t,"transition");'""'===e&&(e=!0),e&&(t.transition=e);var n=tn(t,"transition-mode");n&&(t.transitionMode=n)}function tr(t){return t.transition?"transition:"+t.transition+",":""}function er(t,e){return t.transitionMode?"_h('TransitionControl',{props:{mode:"+t.transitionMode+",child:"+e+"}})":e}function nr(t,e,n){ga=n;var r=e.value,i=e.modifiers;if("select"===t.tag)return ar(t,r);switch(t.attrsMap.type){case"checkbox":rr(t,r);break;case"radio":ir(t,r);break;default:return or(t,r,i)}}function rr(t,e){null!=t.attrsMap.checked&&ga("<"+t.tag+' v-model="'+e+"\" checked>:\ninline checked attributes will be ignored when using v-model. Declare initial values in the component's data option instead.");var n=tn(t,"value"),r=tn(t,"true-value")||"true",i=tn(t,"false-value")||"false";Ge(t,"checked","Array.isArray("+e+")"+("?("+e+").indexOf("+n+")>-1")+(":("+e+")===("+r+")")),Ke(t,"change","var $$a="+e+",$$el=$event.target,"+("$$c=$$el.checked?("+r+"):("+i+");")+"if(Array.isArray($$a)){"+("var $$v="+n+",")+"$$i=$$a.indexOf($$v);if($$c){$$i<0&&$$a.push($$v)}else{$$i>-1&&$$a.splice($$i,1)}"+("}else{"+e+"=$$c}"))}function ir(t,e){null!=t.attrsMap.checked&&ga("<"+t.tag+' v-model="'+e+"\" checked>:\ninline checked attributes will be ignored when using v-model. Declare initial values in the component's data option instead.");var n=tn(t,"value");Ge(t,"checked","("+e+")===("+n+")"),Ke(t,"change",e+"="+n)}function or(t,e,n){"input"===t.tag&&t.attrsMap.value&&ga("<"+t.tag+' v-model="'+e+'" value="'+t.attrsMap.value+"\">:\ninline value attributes will be ignored when using v-model. Declare initial values in the component's data option instead."),"textarea"===t.tag&&t.children.length&&ga('<textarea v-model="'+e+"\">:\ninline content inside <textarea> will be ignored when using v-model. Declare initial values in the component's data option instead.");var r=t.attrsMap.type,i=n||{},o=i.lazy,a=i.number,s=i.trim,u=o?"change":"input",c=!o&&"range"!==r,l="$event.target.value"+(s?".trim()":""),f=a||"number"===r?e+"=_n("+l+")":e+"="+l;if(c&&(f="if($event.target.composing)return;"+f),Ge(t,"value","_s("+e+")"),Ke(t,u,f),c)return!0}function ar(t,e){t.children.some(sr);var n=e+'=Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){return "_value" in o ? o._value : o.value})'+(null==t.attrsMap.multiple?"[0]":"");return Ke(t,"change",n),!0}function sr(t){if(1===t.type&&"option"===t.tag&&null!=t.attrsMap.selected){var e=t.parent&&1===t.parent.type&&t.parent.attrsMap["v-model"];return ga('<select v-model="'+e+"\">:\ninline selected attributes on <option> will be ignored when using v-model. Declare initial values in the component's data option instead."),!0}}function ur(t,e){e.value&&Ge(t,"textContent","_s("+e.value+")")}function cr(t,e){e.value&&Ge(t,"innerHTML","_s("+e.value+")")}function lr(t,e){return e=e?f(f({},ba),e):ba,zn(t,e)}function fr(t,e,n){var r=e&&e.warn||ui;try{new Function("return 1")}catch(i){i.toString().match(/unsafe-eval|CSP/)&&r("It seems you are using the standalone build of Vue.js in an environment with Content Security Policy that prohibits unsafe-eval. The template compiler cannot work in this environment. Consider relaxing the policy to allow unsafe-eval or pre-compiling your templates into render functions.")}var o=e&&e.delimiters?String(e.delimiters)+t:t;if(ya[o])return ya[o];var a={},s=lr(t,e);a.render=hr(s.render);var u=s.staticRenderFns.length;a.staticRenderFns=new Array(u);for(var c=0;c<u;c++)a.staticRenderFns[c]=hr(s.staticRenderFns[c]);return(a.render===v||a.staticRenderFns.some(function(t){return t===v}))&&r("failed to compile template:\n\n"+t+"\n\n"+Vn(s.ast).join("\n")+"\n\n",n),ya[o]=a}function hr(t){try{return new Function(t)}catch(e){return v}}function dr(t){if(t.outerHTML)return t.outerHTML;var e=document.createElement("div");return e.appendChild(t.cloneNode(!0)),e.innerHTML}var pr=n("slot,component,render,transition",!0),vr=Object.prototype.hasOwnProperty,gr=/-(\w)/g,mr=u(function(t){return t.replace(gr,function(t,e){return e?e.toUpperCase():""})}),yr=u(function(t){return t.charAt(0).toUpperCase()+t.slice(1)}),br=/([a-z\d])([A-Z])/g,xr=u(function(t){return t.replace(br,"$1-$2").toLowerCase()}),wr=Object.prototype.toString,_r="[object Object]",Cr=function(){return!1},kr={optionMergeStrategies:Object.create(null),silent:!1,devtools:!0,errorHandler:null,ignoredElements:null,keyCodes:Object.create(null),isReservedTag:Cr,isUnknownElement:Cr,getTagNamespace:v,mustUseProp:Cr,_assetTypes:["component","directive","transition","filter"],_lifecycleHooks:["beforeCreate","created","beforeMount","mounted","beforeUpdate","updated","beforeDestroy","destroyed","activated","deactivated"],_maxUpdateCount:100,_isServer:!1},Tr=/[^\w\.]/,Ar="__proto__"in{},Sr="undefined"!=typeof window&&"[object Object]"!==Object.prototype.toString.call(window),$r=Sr&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__,Er=Sr&&window.navigator.userAgent.toLowerCase(),jr=Er&&/(iphone|ipad|ipod|ios)/i.test(Er),Or=Er&&jr&&Er.match(/os ([\d_]+)/),Nr=Or&&Or[1].split("_"),Dr=Nr&&Number(Nr[0])>=9&&Number(Nr[1])>=3&&!window.indexedDB,Mr=function(){function t(){n=!1;var t=e.slice(0);e=[];for(var r=0;r<t.length;r++)t[r]()}var e=[],n=!1,r=void 0;if("undefined"==typeof MutationObserver||Dr){var i=Sr?window:"undefined"!=typeof o?o:{};r=i.setImmediate||setTimeout}else!function(){var e=1,n=new MutationObserver(t),i=document.createTextNode(String(e));n.observe(i,{characterData:!0}),r=function(){e=(e+1)%2,i.data=String(e)}}();return function(i,o){var a=o?function(){i.call(o)}:i;e.push(a),n||(n=!0,r(t,0))}}(),Pr=void 0;Pr="undefined"!=typeof Set&&/native code/.test(Set.toString())?Set:function(){function t(){this.set=Object.create(null)}return t.prototype.has=function(t){return void 0!==this.set[t]},t.prototype.add=function(t){this.set[t]=1},t.prototype.clear=function(){this.set=Object.create(null)},t}();var Fr=void 0,Br=void 0,Lr=void 0;!function(){var t=n("Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,require,__webpack_require__");Fr="undefined"!=typeof Proxy&&Proxy.toString().match(/native code/),Br={has:function e(n,r){var e=r in n,i=t(r);return e||i||ui('Trying to access non-existent property "'+r+'" while rendering. Make sure to declare reactive data properties in the data option.',n),!i}},Lr=function(t){Fr?t._renderProxy=new Proxy(t,Br):t._renderProxy=t}}();var Rr=0,Ir=function(){function t(){this.id=Rr++,this.subs=[]}return t.prototype.addSub=function(t){this.subs.push(t)},t.prototype.removeSub=function(t){r(this.subs,t)},t.prototype.depend=function(){t.target&&t.target.addDep(this)},t.prototype.notify=function(){for(var t=this.subs.slice(),e=0,n=t.length;e<n;e++)t[e].update()},t}();Ir.target=null;var Hr=[],qr=[],zr=[],Vr={},Ur={},Wr=!1,Xr=0,Gr=function(){function t(t,e,n){var r=arguments.length<=3||void 0===arguments[3]?{}:arguments[3];this.vm=t,t._watchers.push(this),this.deep=!!r.deep,this.user=!!r.user,this.lazy=!!r.lazy,this.sync=!!r.sync,this.expression=e.toString(),this.cb=n,this.id=++Xr,this.active=!0,this.dirty=this.lazy,this.deps=[],this.newDeps=[],this.depIds=new Pr,this.newDepIds=new Pr,"function"==typeof e?this.getter=e:(this.getter=b(e),this.getter||(this.getter=function(){},ui("Failed watching path: "+e+"Watcher only accepts simple dot-delimited paths. For full control, use a function instead.",t))),this.value=this.lazy?void 0:this.get()}return t.prototype.get=function(){x(this);var t=void 0;try{t=this.getter.call(this.vm,this.vm)}catch(e){if(this.user?ui("Error when evaluating watcher with getter: "+this.expression,this.vm):ui("Error during component render",this.vm),!kr.errorHandler)throw e;kr.errorHandler.call(null,e,this.vm),t=this.value}return this.deep&&S(t),w(),this.cleanupDeps(),t},t.prototype.addDep=function(t){var e=t.id;this.newDepIds.has(e)||(this.newDepIds.add(e),this.newDeps.push(t),this.depIds.has(e)||t.addSub(this))},t.prototype.cleanupDeps=function(){for(var t=this.deps.length;t--;){var e=this.deps[t];this.newDepIds.has(e.id)||e.removeSub(this)}var n=this.depIds;this.depIds=this.newDepIds,this.newDepIds=n,this.newDepIds.clear(),n=this.deps,this.deps=this.newDeps,this.newDeps=n,this.newDeps.length=0},t.prototype.update=function(){this.lazy?this.dirty=!0:this.sync?this.run():A(this)},t.prototype.run=function(){if(this.active){var t=this.get();if(t!==this.value||h(t)||this.deep){var e=this.value;if(this.value=t,this.user)try{this.cb.call(this.vm,t,e)}catch(n){if(ui('Error in watcher "'+this.expression+'"',this.vm),!kr.errorHandler)throw n;kr.errorHandler.call(null,n,this.vm)}else this.cb.call(this.vm,t,e)}}},t.prototype.evaluate=function(){this.value=this.get(),this.dirty=!1},t.prototype.depend=function(){for(var t=this.deps.length;t--;)this.deps[t].depend()},t.prototype.teardown=function(){if(this.active){this.vm._isBeingDestroyed||this.vm._vForRemoving||r(this.vm._watchers,this);for(var t=this.deps.length;t--;)this.deps[t].removeSub(this);this.active=!1}},t}(),Zr=new Pr,Jr=Array.prototype,Yr=Object.create(Jr);["push","pop","shift","unshift","splice","sort","reverse"].forEach(function(t){var e=Jr[t];y(Yr,t,function(){for(var n=arguments.length,r=new Array(n);n--;)r[n]=arguments[n];var i=e.apply(this,r),o=this.__ob__,a=void 0;switch(t){case"push":a=r;break;case"unshift":a=r;break;case"splice":a=r.slice(2)}return a&&o.observeArray(a),o.dep.notify(),i})});var Qr=Object.getOwnPropertyNames(Yr),Kr={shouldConvert:!0,isSettingProps:!1},ti=function(){function t(t){if(this.value=t,this.dep=new Ir,this.vmCount=0,y(t,"__ob__",this),Array.isArray(t)){var e=Ar?$:E;e(t,Yr,Qr),this.observeArray(t)}else this.walk(t)}return t.prototype.walk=function(t){var e=this.value;for(var n in t)O(e,n,t[n])},t.prototype.observeArray=function(t){for(var e=0,n=t.length;e<n;e++)j(t[e])},t}(),ei={enumerable:!0,configurable:!0,get:v,set:v},ni=function(t,e,n,r,i,o,a,s,u){this.tag=t,this.data=e,this.children=n,this.text=r,this.elm=i,this.ns=o,this.context=a,this.host=s,this.key=e&&e.key,this.componentOptions=u,this.child=void 0,this.parent=void 0,this.raw=!1;var c=e&&e.hook&&e.hook.construct;c&&c(this)},ri=function(){return new ni((void 0),(void 0),(void 0),"")},ii={init:tt,prepatch:et,insert:nt,destroy:rt},oi=Object.keys(ii),ai={activeInstance:null},si=0;gt(mt),q(mt),vt(mt),J(mt),ht(mt);var ui=void 0,ci=void 0;!function(){var t="undefined"!=typeof console;ui=function(e,n){t&&!kr.silent&&console.error("[Vue warn]: "+e+(n?ci(n):""))},ci=function(t){if(t.$root===t)return" (found in root instance)";var e=t._isVue?t.$options.name||t.$options._componentTag:t.name;return e?" (found in component: <"+xr(e)+">)":' (found in anonymous component. Use the "name" option for better debugging messages)'}}();var li=kr.optionMergeStrategies;li.el=li.propsData=function(t,e,n,r){return n||ui('option "'+r+'" can only be used during instance creation with the `new` keyword.'),fi(t,e)},li.name=function(t,e,n){return n&&ui('options "name" can only be used as a component definition option, not during instance creation.'),fi(t,e)},li.data=function(t,e,n){return n?t||e?function(){var r="function"==typeof e?e.call(n):e,i="function"==typeof t?t.call(n):void 0;return r?yt(r,i):i}:void 0:e?"function"!=typeof e?(ui('The "data" option should be a function that returns a per-instance value in component definitions.',n),t):t?function(){return yt(e.call(this),t.call(this))}:e:t},kr._lifecycleHooks.forEach(function(t){li[t]=bt}),kr._assetTypes.forEach(function(t){li[t+"s"]=xt}),li.watch=function(t,e){if(!e)return t;if(!t)return e;var n={};f(n,t);for(var r in e){var i=n[r],o=e[r];i&&!Array.isArray(i)&&(i=[i]),n[r]=i?i.concat(o):[o]}return n},li.props=li.methods=li.computed=function(t,e){if(!e)return t;if(!t)return e;var n=Object.create(null);return f(n,t),f(n,e),n};var fi=function(t,e){return void 0===e?t:e},hi=Object.freeze({defineReactive:O,_toString:t,toNumber:e,makeMap:n,isBuiltInTag:pr,remove:r,hasOwn:i,isPrimitive:s,cached:u,camelize:mr,capitalize:yr,hyphenate:xr,bind:c,toArray:l,extend:f,isObject:h,isPlainObject:d,toObject:p,noop:v,no:Cr,genStaticKeys:g,isReserved:m,def:y,parsePath:b,hasProto:Ar,inBrowser:Sr,devtools:$r,UA:Er,nextTick:Mr,get _Set(){return Pr},mergeOptions:kt,resolveAsset:Tt,get warn(){return ui},validateProp:At}),di={name:"keep-alive",_abstract:!0,props:{child:Object},created:function(){this.cache=Object.create(null)},render:function(){var t=this.child,e=Mt(this.child),n=e.componentOptions.Ctor.cid;if(this.cache[n]){var r=e.child=this.cache[n].child;e.elm=this.$el=r.$el}else this.cache[n]=e;return e.data.keepAlive=!0,t},destroyed:function(){for(var t in this.cache){var e=this.cache[t];Y(e.child,"deactivated"),e.child.$destroy()}}},pi={KeepAlive:di};Pt(mt),Object.defineProperty(mt.prototype,"$isServer",{get:function(){return kr._isServer}}),mt.version="2.0.0-alpha.8";var vi=n("value,selected,checked,muted"),gi=n("contenteditable,draggable,spellcheck"),mi=n("allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,translate,truespeed,typemustmatch,visible"),yi=(n("accept,accept-charset,accesskey,action,align,alt,async,autocomplete,autofocus,autoplay,autosave,bgcolor,border,buffered,challenge,charset,checked,cite,class,code,codebase,color,cols,colspan,content,http-equiv,name,contenteditable,contextmenu,controls,coords,data,datetime,default,defer,dir,dirname,disabled,download,draggable,dropzone,enctype,method,for,form,formaction,headers,<th>,height,hidden,high,href,hreflang,http-equiv,icon,id,ismap,itemprop,keytype,kind,label,lang,language,list,loop,low,manifest,max,maxlength,media,method,GET,POST,min,multiple,email,file,muted,name,novalidate,open,optimum,pattern,ping,placeholder,poster,preload,radiogroup,readonly,rel,required,reversed,rows,rowspan,sandbox,scope,scoped,seamless,selected,shape,size,type,text,password,sizes,span,spellcheck,src,srcdoc,srclang,srcset,start,step,style,summary,tabindex,target,title,type,usemap,value,width,wrap"),"http://www.w3.org/1999/xlink"),bi=function(t){return":"===t.charAt(5)&&"xlink"===t.slice(0,5)},xi=function(t){return bi(t)?t.slice(6,t.length):""},wi=function(t){return null==t||t===!1},_i={svg:"http://www.w3.org/2000/svg",math:"http://www.w3.org/1998/Math/MathML"},Ci=n("html,base,head,link,meta,style,title,address,article,footer,header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,div,dd,dl,dt,figcaption,figure,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,menuitem,summary,content,element,shadow,template"),ki=n("area,base,br,col,embed,frame,hr,img,input,isindex,keygen,link,meta,param,source,track,wbr",!0),Ti=n("colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr,source",!0),Ai=n("address,article,aside,base,blockquote,body,caption,col,colgroup,dd,details,dialog,div,dl,dt,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,head,header,hgroup,hr,html,legend,li,menuitem,meta,optgroup,option,param,rp,rt,source,style,summary,tbody,td,tfoot,th,thead,title,tr,track",!0),Si=n("svg,g,defs,symbol,use,image,text,circle,ellipse,line,path,polygon,polyline,rect",!0),$i=Object.create(null),Ei=Sr&&window.navigator.userAgent.toLowerCase(),ji=Ei&&/msie|trident/.test(Ei),Oi=Ei&&Ei.indexOf("msie 9.0")>0,Ni=Ei&&Ei.indexOf("android")>0,Di=Object.freeze({createElement:Vt,createElementNS:Ut,createTextNode:Wt,insertBefore:Xt,removeChild:Gt,appendChild:Zt,parentNode:Jt,nextSibling:Yt,tagName:Qt,setTextContent:Kt,childNodes:te,setAttribute:ee}),Mi={},Pi=new ni("",Mi,[]),Fi=["create","update","postpatch","remove","destroy"],Bi={create:function(t,e){se(t,e,"bind")},update:function(t,e){se(t,e,"update")},postpatch:function(t,e){se(t,e,"postupdate")},destroy:function(t){se(t,t,"unbind")}},Li={create:function(t,e){ue(e)},update:function(t,e){t.data.ref!==e.data.ref&&(ue(t,!0),ue(e))},destroy:function(t){ue(t,!0)}},Ri=[Li,Bi],Ii={create:function(t,e){var n=e.data.staticAttrs;if(n)for(var r in n)le(e.elm,r,n[r]);ce(t,e)},update:ce},Hi={create:fe,update:fe},qi={create:he,update:he},zi={create:de,update:de},Vi=["Webkit","Moz","ms"],Ui=void 0,Wi=u(function(t){if(Ui=Ui||document.createElement("div"),t=mr(t),"filter"!==t&&t in Ui.style)return t;for(var e=t.charAt(0).toUpperCase()+t.slice(1),n=0;n<Vi.length;n++){var r=Vi[n]+e;if(r in Ui.style)return r}}),Xi={create:pe,update:pe},Gi=Sr&&!Oi,Zi="transition",Ji="animation",Yi="transition",Qi="transitionend",Ki="animation",to="animationend";Gi&&(void 0===window.ontransitionend&&void 0!==window.onwebkittransitionend&&(Yi="WebkitTransition",Qi="webkitTransitionEnd"),void 0===window.onanimationend&&void 0!==window.onwebkitanimationend&&(Ki="WebkitAnimation",
-to="webkitAnimationEnd"));var eo=Sr&&window.requestAnimationFrame||setTimeout,no=u(function(t){return{enterClass:t+"-enter",leaveClass:t+"-leave",appearClass:t+"-enter",enterActiveClass:t+"-enter-active",leaveActiveClass:t+"-leave-active",appearActiveClass:t+"-enter-active"}}),ro=Gi?{create:function(t,e){je(e)||ye(e)},remove:function(t,e){je(t)?e():be(t,e)}}:{},io=[Ii,Hi,qi,zi,Xi,ro],oo=io.concat(Ri),ao=ae({nodeOps:Di,modules:oo}),so=/^input|select|textarea|vue-component-[0-9]+(-[0-9a-zA-Z_\-]*)?$/;Oi&&document.addEventListener("selectionchange",function(){var t=document.activeElement;t&&t.vmodel&&Fe(t,"input")});var uo={bind:function(t,e,n){so.test(n.tag)||ui("v-model is not supported on element type: <"+n.tag+">. If you are working with contenteditable, it's recommended to wrap a library dedicated for that purpose inside a custom component.",n.context),"select"===n.tag?Oe(t,e.value):(Ni||(t.addEventListener("compositionstart",Me),t.addEventListener("compositionend",Pe)),Oi&&(t.vmodel=!0))},postupdate:function(t,e,n){var r=e.value;if("select"===n.tag){Oe(t,r);var i=t.multiple?r.some(function(e){return Ne(e,t.options)}):Ne(r,t.options);i&&Fe(t,"change")}}},co={bind:function(t,e,n){var r=e.value,i=Be(n);r&&i&&i.appear&&!Oi&&ye(n),t.style.display=r?"":"none"},update:function(t,e,n){var r=e.value,i=Be(n);i&&!Oi?r?(ye(n),t.style.display=""):be(n,function(){t.style.display="none"}):t.style.display=r?"":"none"}},lo={model:uo,show:co},fo={name:"transition-control",_abstract:!0,props:{child:Object,mode:{validator:function(t){return!t||"out-in"===t||"in-out"===t||(ui('transition-mode must be either "out-in" or "in-out".'),!1)}}},render:function(){var t=this,e=this._vnode,n=this.child;if(e&&e.data&&(e.tag!==n.tag||e.key!==n.key)){if("out-in"===this.mode)return Le(e,{afterLeave:function(){t.$forceUpdate()}});"in-out"===this.mode&&!function(){var t=void 0,r=function(){t()};Le(n,{afterEnter:r,enterCancelled:r}),Le(e,{delayLeave:function(e){t=e}})}()}return n}},ho={TransitionControl:fo};mt.config.isUnknownElement=qt,mt.config.isReservedTag=Ci,mt.config.getTagNamespace=Ht,mt.config.mustUseProp=vi,f(mt.options.directives,lo),f(mt.options.components,ho),mt.prototype.__patch__=kr._isServer?v:ao,mt.prototype.$mount=function(t,e){return t=t&&!kr._isServer?zt(t):void 0,this._mount(t,e)},setTimeout(function(){kr.devtools&&($r?$r.emit("init",mt):Sr&&/Chrome\/\d+/.test(window.navigator.userAgent)&&console.log("Download the Vue Devtools for a better development experience:\nhttps://github.com/vuejs/vue-devtools"))},0);var po=document.createElement("div"),vo=/([^\s"'<>\/=]+)/,go=/=/,mo=[go],yo=[/"([^"]*)"+/.source,/'([^']*)'+/.source,/([^\s"'=<>`]+)/.source],bo="[a-zA-Z_][\\w\\-\\.]*",xo="((?:"+bo+"\\:)?"+bo+")",wo=new RegExp("^<"+xo),_o=/^\s*(\/?)>/,Co=new RegExp("^<\\/"+xo+"[^>]*>"),ko=/^<!DOCTYPE [^>]+>/i,To=!1;"x".replace(/x(.)?/g,function(t,e){To=""===e});var Ao=n("script,style",!0),So={},$o=/\{\{((?:.|\\n)+?)\}\}/g,Eo=/[-.*+?^${}()|[\]\/\\]/g,jo=u(function(t){var e=t[0].replace(Eo,"\\$&"),n=t[1].replace(Eo,"\\$&");return new RegExp(e+"((?:.|\\n)+?)"+n,"g")}),Oo=/^v-|^@|^:/,No=/(.*)\s+(?:in|of)\s+(.*)/,Do=/\(([^,]*),([^,]*)(?:,([^,]*))?\)/,Mo=/^:|^v-bind:/,Po=/^@|^v-on:/,Fo=/:(.*)$/,Bo=/\.[^\.]+/g,Lo=/[a-z\d][A-Z]/,Ro=u(Re),Io=void 0,Ho=void 0,qo=void 0,zo=void 0,Vo=void 0,Uo=void 0,Wo=void 0,Xo=/^xmlns:NS\d+/,Go=/^NS\d+:/,Zo=void 0,Jo=void 0,Yo=u(wn),Qo=/^[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*|\['.*?'\]|\[".*?"\]|\[\d+\]|\[[A-Za-z_$][\w$]*\])*$/,Ko={esc:27,tab:9,enter:13,space:32,up:38,left:37,right:39,down:40,"delete":[8,46]},ta={stop:"$event.stopPropagation();",prevent:"$event.preventDefault();",self:"if($event.target !== $event.currentTarget)return;"},ea={bind:$n,cloak:v},na=void 0,ra=void 0,ia=void 0,oa=void 0,aa=void 0,sa=void 0,ua=void 0,ca=new RegExp("\\b"+"do,if,for,let,new,try,var,case,else,with,await,break,catch,class,const,super,throw,while,yield,delete,export,import,return,switch,default,extends,finally,continue,debugger,function,arguments".split(",").join("\\b|\\b")+"\\b"),la=/[A-Za-z_$][\w$]*/,fa=/'(?:[^'\\]|\\.)*'|"(?:[^"\\]|\\.)*"|`(?:[^`\\]|\\.)*\$\{|\}(?:[^`\\]|\\.)*`|`(?:[^`\\]|\\.)*`/g,ha={staticKeys:["staticClass"],transformNode:Zn,genData:Jn},da={transformNode:Yn,genData:Qn},pa={transformNode:Kn,genData:tr,transformCode:er},va=[ha,da,pa],ga=void 0,ma={model:nr,text:ur,html:cr},ya=Object.create(null),ba={isIE:ji,expectHTML:!0,modules:va,staticKeys:g(va),directives:ma,isReservedTag:Ci,isUnaryTag:ki,mustUseProp:vi,getTagNamespace:Ht},xa=u(function(t){var e=zt(t);return e&&e.innerHTML}),wa=mt.prototype.$mount;return mt.prototype.$mount=function(t,e){t=t&&zt(t);var n=this.$options;if(!n.render){var r=n.template;if(r)if("string"==typeof r)"#"===r.charAt(0)&&(r=xa(r));else{if(!r.nodeType)return ui("invalid template option:"+r,this),this;r=r.innerHTML}else t&&(r=dr(t));if(r){var i=fr(r,{delimiters:n.delimiters,warn:ui},this),o=i.render,a=i.staticRenderFns;n.render=o,n.staticRenderFns=a}}return wa.call(this,t,e)},mt.compile=fr,mt})}).call(e,function(){return this}())},function(t,e){"use strict";t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children=[],t.webpackPolyfill=1),t}},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(40),o=r(i);e["default"]={init:function(){new Vue(o["default"])}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(1),i=function(t,e,n,r){this.paper=t,this.shape=e,this.handlers=[],this.viewPort=n,this.viewBox=r,this.isResizing=!1,this.currentPosition={},this.HANDLER_SIZE=8,this.SHAPE_MIN_SIZE=20,this.states={},this.noop=function(){},this.init()};i.prototype={init:function(){this.showHandlers()},computeHandlerSize:function(){return this.HANDLER_SIZE*Math.min(this.viewBox[2],this.viewBox[3])/this.viewPort.width},showHandlers:function(){var t=this.shape.getBBox(),e=t.x-this.computeHandlerSize()/2,n=t.y-this.computeHandlerSize()/2,r=this.paper.rect(e,n,this.computeHandlerSize(),this.computeHandlerSize()).attr({fill:"red"});r.addClass("drawingHandler"),this.shape.addClass("drawingHandler");var i={position:"t_r",handler:r};this.handlers.push(i),this.shapesGroup=this.paper.g(this.shape,r),this.attachEvents()},updateShapePositions:function(t,e,n){var r=t.handler.getBBox(),i=this.shape.data("origBbox"),o=(r.x+this.computeHandlerSize()/2,r.y+this.computeHandlerSize()/2,e>0?i.width-e:i.width+Math.abs(e)),a=n>0?i.height-n:i.height+Math.abs(n),s=this.shape.data("origTransform")+(this.shape.data("origTransform")?"T":"t")+[e,n];this.shape.attr({transform:s,width:o,height:a})},dragEvents:{onStart:function(t,e,n,r){this.startPosition={x:r.clientX,y:r.clientY},this.isResizing=!0,this.currentPosition={},t.handler.data("origTransform",t.handler.transform().local),this.shape.data("origBbox",this.shape.getBBox()),this.shape.data("origBounding",this.shape.node.getBoundingClientRect()),this.shape.data("origTransform",this.shape.transform().local)},onMove:function(t,e,n,r,i,o){var a,s,u=t.handler.transform().diffMatrix.invert();u.e=u.f=0,a=u.x(e,n),s=u.y(e,n),this.currentPosition.x=o.clientX,this.currentPosition.y=o.clientY,this.checkBondaries(e,n)&&(t.handler.transform("t"+[a,s]+t.handler.data("origTransform")),this.updateShapePositions(t,a,s))},onStop:function(){this.isResizing=!1,this.startPosition={},this.currentPosition={}}},checkBondaries:function(t,e){var n=!0,r=this.shape.data("origBounding");this.shape.node.getBoundingClientRect();return r.width-t<=this.SHAPE_MIN_SIZE&&(n=!1),r.height-e<=this.SHAPE_MIN_SIZE&&(n=!1),n},destroy:function(){this.handlers.map(function(t){t.handler.remove()}),delete this},getZoomFactor:function(){return{x:this.viewPort.width/this.viewBox[2],y:this.viewPort.height/this.viewBox[3]}},attachEvents:function(){var t=this;this.handlers.map(function(e){e.handler.drag(t.dragEvents.onMove.bind(t,e),t.dragEvents.onStart.bind(t,e),t.dragEvents.onStop.bind(t,e))}),r.eventEmitter.on("cutout:clear",function(){t.destroy()}),this.shapesGroup.drag(function(e,n){if(!t.isResizing){var r=this.transform().diffMatrix.invert();r.e=r.f=0;var i=r.x(e,n),o=r.y(e,n),a=this.data("origTransform")+(this.data("origTransform")?"T":"t")+[i,o];this.transform(a)}},function(){this.data("origTransform",this.transform().local)},this.noop)}};e["default"]={enable_resizer:function(t,e,n,r){new i(t,e,n,r)}}},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(3),o=r(i),a=n(34),s=r(a),u=n(1),c=n(5);r(c);o["default"].plugin(function(t,e,n,r){var i=e.prototype;i.toBack=function(){this.prependTo(this.paper)},i.toFront=function(){this.appendTo(this.paper)}}),Element.prototype.getTransformedXY=function(t,e){var n=this.transform().globalMatrix;return{x:n.x(t,e),y:n.y(t,e)}};var l=null,f=null,h=[],d={X:100,Y:100},p={x:1,y:1},v={width:850,height:850},g=[],m=!1,y=null,b=null,x=!1,w=null,_="#ff00ff",C="red",k="orange",T="#FF0000",A=8,S=!1,$=!0,E=!1,j=!0,O="RECT",N=O,D="FREE",M=[O,D],P=null,F=function(){var t=0,e="item_";return function(n){return n="string"==typeof n?n:e,t+=1,n+t}}(),B=function(t){if(m)return void l.path(t).attr({stroke:"red",opacity:.6});var e=o["default"].path.getBBox(t);w=l.rect(e.x,e.y,e.width,e.height),w.attr({fill:k,stroke:C,opacity:.6}),b=w,x=!1,E=!0,s["default"].enable_resizer(l,b,v,g)},L=function(t){if(m)return void l.path(t).attr({stroke:"orange",fill:"orange",opacity:.5});var e=o["default"].parsePathString(t);e.map(function(t){"Z"!==t[0]?G(l,t[1],t[2],h):(E=!0,R(l,H))})},R=function(t,e){var n="M";if(!(h.length<=1)){n+=h[0].x+","+h[0].y;for(var r=0;r<h.length;r++)if(0!=r){var i=h[r],o="L"+i.x+","+i.y;n+=" "+o}n+=E?" Z":"",b&&b.remove(),b=t.path(n),b.attr({stroke:C,"vector-effect":"non-scaling-stroke","stroke-width":3,fill:"white",opacity:.1}),h.map(function(t){V();t.handler&&t.handler.toFront()}),"function"==typeof e&&E&&e(),!e&&E&&I()}},I=function(){b.attr({fill:k,strokeWidth:1,opacity:.6})},H=function(){j=!1,I()},q=function(t,e,n){t.isFirst&&h.length>2&&(E=!0)},z=function(t,e,n){var r=h.indexOf(t);return r!==-1&&(h[r].x=e,h[r].y=n,!0)},V=function(){g.length||(g=[0,0,parseInt(f.width()),parseInt(f.height())]);var t=A*Math.min(g[2],g[3])/850;return t},U=function(t,e,n,r,i){S=!0;var o,a,s=this.transform().diffMatrix.invert();s.e=s.f=0,o=s.x(t,e),a=s.y(t,e);var u=this.data("origTransform")+(this.data("origTransform")?"T":"t")+[o,a];this.attr({transform:u});var c=this.getBBox(),l=z(this.data("point"),c.x+V()/2,c.y+V()/2);l&&R(this.paper)},W=function(t,e){t.handler.click(q.bind(this,t,e)),t.handler.hover(function(){t.handler.attr({fill:"yellow"})},function(){var e=t.isFirst?T:"";t.handler.attr({fill:e})}),t.handler.drag(U,function(){this.data("origTransform",this.transform().local)},function(){return!S||(S=!1,void($=!1))})},X=function(t,e){var n,r=V(),i=e.x-r/2,o=e.y-r/2;return n=t.rect(i,o,r,r),n.addClass("drawingHandler"),e.handler=n,e.handler.data("point",e),0===h.length&&(e.isFirst=!0),W(e,t),e.handler.attr({fill:0===h.length?T:"",opacity:.9,stroke:_}),e},G=function(t,e,n,r){var i={x:e,y:n,id:F()};return E?void R(t,H):$?(i=X(t,i),r.push(i),void R(t)):($=!0,!1)},Z=function(t){if(m)return!1;var e={},n={};t.mousedown(function(t){N===D||E||(e.x=t.offsetX,e.y=t.offsetY,x=!0)}),t.mousemove(function(r){if(N!==D&&x){var i,o;n.x=r.offsetX,n.y=r.offsetY,w&&w.remove();var a=Math.abs(n.x-e.x),s=Math.abs(e.y-n.y);n.y>e.y&&n.x>e.x&&(i=e.x,o=e.y),n.y<e.y&&n.x>e.x&&(i=n.x-a,o=n.y),n.y<e.y&&n.x<e.x&&(i=n.x,o=n.y),n.y>e.y&&n.x<e.x&&(i=n.x,o=n.y-s),i&&o&&(w=t.rect(i,o,a,s),w.attr({fill:k,stroke:C,opacity:.6}))}}),t.mouseup(function(){return!(N===D||E||!w)&&(b=w,s["default"].enable_resizer(t,w,v,g),x=!1,void(E=!0))})},J=function(t){m||t.click(function(e){return N===O||(!j||void G(t,e.offsetX,e.offsetY,h))})},Y=function(){u.eventEmitter.on("zoomChanged",function(t){p=t.zoomFactor,g=t.currentViewBox;var e=Q.getPath();Q.clear(),Q.setPath(e)})},Q={getPaper:function(){return l},setPath:function(t){var e=t.split(";");M.indexOf(e[1])===-1&&(e[1]="FREE"),this.setDrawingMode(e[1]);var n=e[0];if(n.length){var r=f.attr("width")/d.X,i=f.attr("height")/d.Y;(isNaN(r)||isNaN(i))&&new Error("Ratio should be a number.");var a=o["default"].matrix(r,0,0,i,0,0),s=o["default"].path.map(n,a).toString();s.search(/[z|Z]/gi)===-1&&(s+="Z"),e.length>=2&&(e[1]===O&&B(s),e[1]===D&&L(s))}},setDrawingMode:function(t){M.indexOf(t)!==-1&&(N=t),"function"==typeof P&&P(N),this.clear()},clear:function(){h.map(function(t){t.handler&&t.handler.remove()}),b&&b.remove(),u.eventEmitter.emit("cutout:clear"),h=[],y=null,b=null,S=!1,$=!0,E=!1,j=!0},getShapeBBox:function(){var t=this.getPath();return o["default"].path.getBBox(t)},getShape:function(){return this.getPath()},getPath:function(){var t="";if(b)if(N===O){var e=b.getBBox(),n=b.transform();if(n.global.length){var r=b.node.getAttribute("x"),i=b.node.getAttribute("y"),a=n.totalMatrix,s=l.rect(a.x(r,i),a.y(r,i),e.width,e.height);u=s.getBBox().path,s.remove()}else var u=b.getBBox().path;t=o["default"].path.toAbsolute(u).toString()}else t=b.attr("d");var c=d.X/f.attr("width"),h=d.Y/f.attr("height");if((isNaN(c)||isNaN(h))&&new Error("ratio should be a number."),!t.length)return t=N===O?";RECT":";FREE";var p=o["default"].matrix(c,0,0,h,0,0);t=o["default"].path.map(t,p).toString();var v=N===O?";RECT":";FREE";return t.search(/[z|Z]/gi)===-1&&(t+=" Z"),t+=v}};e["default"]={init:function(t){f=jQuery(t.wrapperId).find(".main-image").eq(0);var e=jQuery(t.wrapperId).find(".cut-canvas").eq(0),n=jQuery(t.wrapperId).find(".image-path").eq(0);if("function"==typeof t.onDrawingModeChange&&(P=t.onDrawingModeChange),!f.length)throw new Error("The main image Can't be found ...");if(!e.length){var e=jQuery('<svg version="1.1"></svg>').addClass("cut-canvas");jQuery(t.wrapperId).append(e),e.append(f)}if(e.css({marginLeft:"auto",marginRight:"auto",width:v.width,height:v.height}),"boolean"==typeof t.readOnly&&t.readOnly===!0&&(m=!0),l=new o["default"](e.get(0)),n.length){jQuery(e).append(n);var r=n.attr("d");Q.setPath(r),n.remove()}return Y(),J(l),Z(l),Q}}},function(t,e,n){e=t.exports=n(12)(),e.push([t.id,"Typeahead[data-v-1]{position:relative}.selected-tags[data-v-1]{border:1px solid red;width:200px!important}.selected-tags select[data-v-1]{display:inline-block}.Typeahead__input[data-v-1]{width:100%;font-size:14px;color:#2c3e50;line-height:1.42857143;box-shadow:inset 0 1px 4px rgba(0,0,0,.4);-webkit-transition:border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;font-weight:300;padding:12px 26px;border:none;border-radius:22px;letter-spacing:1px;box-sizing:border-box}.Typeahead__input[data-v-1]:focus{border-color:#4fc08d;outline:0;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px #4fc08d}.tag-item[data-v-1]{border:1px solid red}.fa-times[data-v-1]{cursor:pointer}ul[data-v-1]{padding:0;margin-top:8px;min-width:100%;background-color:#fff;list-style:none;border-radius:4px;box-shadow:0 0 10px rgba(0,0,0,.25);z-index:1000}li[data-v-1]{padding:10px 16px;border-bottom:1px solid #ccc;cursor:pointer}li[data-v-1]:first-child{border-radius:4px 4px 0 0}li[data-v-1]:last-child{border-radius:0 0 4px 4px;border-bottom:0}span[data-v-1]{display:block;color:#2c3e50}.active[data-v-1]{background-color:#3aa373}.active span[data-v-1]{color:#fff}.name[data-v-1]{font-weight:700;font-size:18px}.screen-name[data-v-1]{font-style:italic}",""])},function(t,e,n){(function(e){t.exports=e.$=n(4)}).call(e,function(){return this}())},function(t,e,n){(function(e){t.exports=e.Vue=n(31)}).call(e,function(){return this}())},function(t,e,n){(function(e){t.exports=e.jQuery=n(4)}).call(e,function(){return this}())},function(t,e,n){var r,i;r=n(7),i=r||{},i.__esModule&&(i=i["default"]),"function"==typeof i&&(i=i.options),t.exports=r||i},function(t,e,n){var r,i;r=n(8),i=r||{},i.__esModule&&(i=i["default"]),"function"==typeof i&&(i=i.options),t.exports=r||i},function(t,e,n){var r,i;r=n(9);var o=n(45);i=r||{},i.__esModule&&(i=i["default"]),"function"==typeof i&&(i=i.options),i.render=o.render,i.staticRenderFns=o.staticRenderFns,t.exports=r||i},function(module,exports){module.exports={render:function(){with(this)return _h("div",[_h("taglist",{ref:"taglist"})," "," ",_h("input",{directives:[{name:"show",value:!readOnly,expression:"!readOnly"},{name:"model",value:query,expression:"query"}],show:!0,props:{value:_s(query)},staticAttrs:{type:"text",placeholder:"...",autocomplete:"off"},on:{keyup:[function(t){8===t.keyCode&&checkQuery(t)},update],keydown:[function(t){40===t.keyCode&&down(t)},function(t){38===t.keyCode&&up(t)},function(t){13===t.keyCode&&hit(t)},function(t){27===t.keyCode&&reset(t)}],input:function(t){t.target.composing||(query=t.target.value)}}})," ",_h("a",{directives:[{name:"show",value:showAddButton,expression:"showAddButton"}],show:!0,on:{click:addTag}},[_m(0)," Créer ce tag"])," "," ",_h("ul",{directives:[{name:"show",value:hasItems||!readOnly,expression:"hasItems || !readOnly"}],show:!0},[items&&_l(items,function(t,e){return _h("li",{"class":activeClass(e),on:{mousedown:hit,mousemove:function(t){setActive(e)}}},[_h("span",{props:{textContent:_s(t.tag_label)}})])})])," ",_h("input",{directives:[{name:"model",value:selectedTags,expression:"selectedTags"}],props:{value:_s(selectedTags)},staticAttrs:{name:"tags",type:"hidden"},on:{input:function(t){t.target.composing||(selectedTags=t.target.value)}}})])},staticRenderFns:[function(){with(this)return _h("i",{staticClass:"fa fa-plus"})}]}},function(module,exports){module.exports={render:function(){with(this)return _h("div",{staticClass:"zoomview-wrapper"},[_m(0)," ",_h("svg",{ref:"root-svg"},[_h("image",{attrs:{"xlink:href":imageUrl,width:imageWidth,height:imageHeight},staticAttrs:{id:"small-image",x:"0",y:"0","xmlns:xlink":"http://www.w3.org/1999/xlink"}})," ",_h("rect",{directives:[{name:"show",value:showHandler,expression:"showHandler"}],ref:"handler",show:!0,staticAttrs:{id:"zoom-handler",x:"0",y:"0",style:"fill:black; opacity:0.4"}})])," ",_h("ul",{staticClass:"form-drawing-wrapper zoom-action-list list-inline"},[_h("li",{staticClass:"small showPointer",on:{click:incraseDrawingZoom}},[_m(1)])," ",_h("li",{staticClass:"small showPointer",on:{click:resetDrawingZoom}},[_m(2)])," ",_h("li",{staticClass:"small showPointer",on:{click:decreaseDrawingZoom}},[_m(3)])])])},staticRenderFns:[function(){with(this)return _h("p",{staticClass:"form-drawing pullright"},[_h("strong",["Zoom"])])},function(){with(this)return _h("i",{staticClass:"fa fa-search-plus"})},function(){with(this)return _h("i",{staticClass:"fa fa-square"})},function(){with(this)return _h("i",{staticClass:"fa fa-search-minus"})}]}},function(module,exports){module.exports={render:function(){with(this)return _h("div",[_h("ul",{directives:[{name:"show",value:!readOnly,expression:"!readOnly"}],staticClass:"tags-wrapper list-unstyled",show:!0},[tags&&_l(tags,function(t,e){return _h("li",{ref:t.id,refInFor:!0,staticClass:"tag-item"},[_m(0)," ",_h("strong",[_h("span",{props:{textContent:_s(t.tag_label)}})]),"\n\n\t\t\tPrécision: \t",_h("select",{on:{change:function(e){updateAccuracy(e,t)}}},[[1,2,3,4,5]&&_l([1,2,3,4,5],function(e,n){return _h("option",{props:{selected:t.accuracy==e,value:e}},[_s(e)])})]),"\n\n\t\t\tPertinence: ",_h("select",{on:{change:function(e){updatePertinence(e,t)}}},[[1,2,3,4,5]&&_l([1,2,3,4,5],function(e,n){return _h("option",{props:{selected:t.relevancy==e,value:e}},[_s(e)])})])," ",_h("a",{on:{click:function(e){removeTag(t)}}},[_m(1)])])})])," ",_h("ul",{directives:[{name:"show",value:readOnly,expression:"readOnly"}],staticClass:"list-inline",show:!0},[tags&&_l(tags,function(t,e){return _h("li",[_m(2)," ",_h("span",{staticClass:"label label-info"},[_s(t.tag_label)]),"\n\t\t\t | précision ",_h("span",{staticClass:"badge"},[_s(t.accuracy)]),"\n\t\t\t | pertinence ",_h("span",{staticClass:"badge"},[_s(t.relevancy)])])})])])},staticRenderFns:[function(){with(this)return _h("i",{staticClass:"fa fa-tag"})},function(){with(this)return _h("i",{staticClass:"fa fa-trash"})},function(){with(this)return _h("i",{staticClass:"fa fa-tag"})}]}},function(t,e,n){function r(t,e){for(var n=0;n<t.length;n++){var r=t[n],i=f[r.id];if(i){i.refs++;for(var o=0;o<i.parts.length;o++)i.parts[o](r.parts[o]);for(;o<r.parts.length;o++)i.parts.push(u(r.parts[o],e))}else{for(var a=[],o=0;o<r.parts.length;o++)a.push(u(r.parts[o],e));f[r.id]={id:r.id,refs:1,parts:a}}}}function i(t){for(var e=[],n={},r=0;r<t.length;r++){var i=t[r],o=i[0],a=i[1],s=i[2],u=i[3],c={css:a,media:s,sourceMap:u};n[o]?n[o].parts.push(c):e.push(n[o]={id:o,parts:[c]})}return e}function o(t,e){var n=p(),r=m[m.length-1];if("top"===t.insertAt)r?r.nextSibling?n.insertBefore(e,r.nextSibling):n.appendChild(e):n.insertBefore(e,n.firstChild),m.push(e);else{if("bottom"!==t.insertAt)throw new Error("Invalid value for parameter 'insertAt'. Must be 'top' or 'bottom'.");n.appendChild(e)}}function a(t){t.parentNode.removeChild(t);var e=m.indexOf(t);e>=0&&m.splice(e,1)}function s(t){var e=document.createElement("style");return e.type="text/css",o(t,e),e}function u(t,e){var n,r,i;if(e.singleton){var o=g++;n=v||(v=s(e)),r=c.bind(null,n,o,!1),i=c.bind(null,n,o,!0)}else n=s(e),r=l.bind(null,n),i=function(){a(n)};return r(t),function(e){if(e){if(e.css===t.css&&e.media===t.media&&e.sourceMap===t.sourceMap)return;r(t=e)}else i()}}function c(t,e,n,r){var i=n?"":r.css;if(t.styleSheet)t.styleSheet.cssText=y(e,i);else{var o=document.createTextNode(i),a=t.childNodes;a[e]&&t.removeChild(a[e]),a.length?t.insertBefore(o,a[e]):t.appendChild(o)}}function l(t,e){var n=e.css,r=e.media,i=e.sourceMap;if(r&&t.setAttribute("media",r),i&&(n+="\n/*# sourceURL="+i.sources[0]+" */",n+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(i))))+" */"),t.styleSheet)t.styleSheet.cssText=n;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(n))}}var f={},h=function(t){var e;return function(){return"undefined"==typeof e&&(e=t.apply(this,arguments)),e}},d=h(function(){return/msie [6-9]\b/.test(window.navigator.userAgent.toLowerCase())}),p=h(function(){return document.head||document.getElementsByTagName("head")[0]}),v=null,g=0,m=[];t.exports=function(t,e){e=e||{},"undefined"==typeof e.singleton&&(e.singleton=d()),"undefined"==typeof e.insertAt&&(e.insertAt="bottom");var n=i(t);return r(n,e),function(t){for(var o=[],a=0;a<n.length;a++){var s=n[a],u=f[s.id];u.refs--,o.push(u)}if(t){var c=i(t);r(c,e)}for(var a=0;a<o.length;a++){var u=o[a];if(0===u.refs){for(var l=0;l<u.parts.length;l++)u.parts[l]();delete f[u.id]}}}};var y=function(){var t=[];return function(e,n){return t[e]=n,t.filter(Boolean).join("\n")}}()},function(t,e,n){var r=n(36);"string"==typeof r&&(r=[[t.id,r,""]]);n(46)(r,{});r.locals&&(t.exports=r.locals)}]);
+!function(o,s){"object"===a(e)&&"undefined"!=typeof t?t.exports=s():(r=s,i="function"==typeof r?r.call(e,n,e,t):r,!(void 0!==i&&(t.exports=i)))}(void 0,function(){function t(t){return null==t?"":"object"===("undefined"==typeof t?"undefined":a(t))?JSON.stringify(t,null,2):String(t)}function e(t){var e=parseFloat(t,10);return e||0===e?e:t}function n(t,e){for(var n=Object.create(null),r=t.split(","),i=0;i<r.length;i++)n[r[i]]=!0;return e?function(t){return n[t.toLowerCase()]}:function(t){return n[t]}}function r(t,e){if(t.length){var n=t.indexOf(e);if(n>-1)return t.splice(n,1)}}function i(t,e){return vr.call(t,e)}function s(t){return"string"==typeof t||"number"==typeof t}function u(t){var e=Object.create(null);return function(n){var r=e[n];return r||(e[n]=t(n))}}function c(t,e){return function(n){var r=arguments.length;return r?r>1?t.apply(e,arguments):t.call(e,n):t.call(e)}}function l(t,e){e=e||0;for(var n=t.length-e,r=new Array(n);n--;)r[n]=t[n+e];return r}function f(t,e){for(var n in e)t[n]=e[n];return t}function h(t){return null!==t&&"object"===("undefined"==typeof t?"undefined":a(t))}function d(t){return wr.call(t)===_r}function p(t){for(var e=t[0]||{},n=1;n<t.length;n++)t[n]&&f(e,t[n]);return e}function v(){}function g(t){return t.reduce(function(t,e){return t.concat(e.staticKeys||[])},[]).join(",")}function m(t){var e=(t+"").charCodeAt(0);return 36===e||95===e}function y(t,e,n,r){Object.defineProperty(t,e,{value:n,enumerable:!!r,writable:!0,configurable:!0})}function b(t){if(!Tr.test(t)){var e=function(){var e=t.split(".");return{v:function(t){for(var n=0;n<e.length;n++){if(!t)return;t=t[e[n]]}return t}}}();return"object"===("undefined"==typeof e?"undefined":a(e))?e.v:void 0}}function x(t){Ir.target&&qr.push(Ir.target),Ir.target=t}function w(){Ir.target=qr.pop()}function _(){Hr.length=0,zr.length=0,Vr={},Ur={},Wr=!1}function C(){return T(Hr.sort(k)),T(zr),Hr.length?C():($r&&kr.devtools&&$r.emit("flush"),void _())}function k(t,e){return t.id-e.id}function T(t){for(var e=0;e<t.length;e++){var n=t[e],r=n.id;if(Vr[r]=null,n.run(),null!=Vr[r]&&(Ur[r]=(Ur[r]||0)+1,Ur[r]>kr._maxUpdateCount)){ui('You may have an infinite update loop for watcher with expression "'+n.expression+'"',n.vm);break}}t.length=0}function A(t){var e=t.id;if(null==Vr[e]){var n=t.user?zr:Hr;Vr[e]=!0,n.push(t),Wr||(Wr=!0,Mr(C))}}function S(t,e){var n=void 0,r=void 0;e||(e=Zr,e.clear());var i=Array.isArray(t),o=h(t);if((i||o)&&Object.isExtensible(t)){if(t.__ob__){var a=t.__ob__.dep.id;if(e.has(a))return;e.add(a)}if(i)for(n=t.length;n--;)S(t[n],e);else if(o)for(r=Object.keys(t),n=r.length;n--;)S(t[r[n]],e)}}function $(t,e){t.__proto__=e}function E(t,e,n){for(var r=0,i=n.length;r<i;r++){var o=n[r];y(t,o,e[o])}}function j(t){if(h(t)){var e=void 0;return i(t,"__ob__")&&t.__ob__ instanceof ti?e=t.__ob__:Kr.shouldConvert&&!kr._isServer&&(Array.isArray(t)||d(t))&&Object.isExtensible(t)&&!t._isVue&&(e=new ti(t)),e}}function O(t,e,n,r){var i=new Ir,o=Object.getOwnPropertyDescriptor(t,e);if(!o||o.configurable!==!1){var a=o&&o.get,s=o&&o.set,u=j(n);Object.defineProperty(t,e,{enumerable:!0,configurable:!0,get:function(){var e=a?a.call(t):n;if(Ir.target&&(i.depend(),u&&u.dep.depend(),Array.isArray(e)))for(var r,o=0,s=e.length;o<s;o++)r=e[o],r&&r.__ob__&&r.__ob__.dep.depend();return e},set:function(e){var o=a?a.call(t):n;e!==o&&(r&&r(),s?s.call(t,e):n=e,u=j(e),i.notify())}})}}function N(t,e,n){if(Array.isArray(t))return t.splice(e,1,n),n;if(i(t,e))return void(t[e]=n);var r=t.__ob__;return t._isVue||r&&r.vmCount?void ui("Avoid adding reactive properties to a Vue instance or its root $data at runtime - delcare it upfront in the data option."):r?(O(r.value,e,n),r.dep.notify(),n):void(t[e]=n)}function D(t,e){var n=t.__ob__;return t._isVue||n&&n.vmCount?void ui("Avoid deleting properties on a Vue instance or its root $data - just set it to null."):void(i(t,e)&&(delete t[e],n&&n.dep.notify()))}function M(t){t._watchers=[],P(t),F(t),B(t),R(t),I(t)}function P(t){var e=t.$options.props,n=t.$options.propsData;if(e){var r=t.$options._propKeys=Object.keys(e),i=!t.$parent;Kr.shouldConvert=i;for(var o=function(e){var i=r[e];O(t,i,At(t,i,n),function(){t.$parent&&!Kr.isSettingProps&&ui("Avoid mutating a prop directly since the value will be overwritten whenever the parent component re-renders. Instead, use a data or computed property based on the prop's "+('value. Prop being mutated: "'+i+'"'),t)})},a=0;a<r.length;a++)o(a);Kr.shouldConvert=!0}}function F(t){var e=t.$options.data;e=t._data="function"==typeof e?e.call(t):e||{},d(e)||(e={},ui("data functions should return an object.",t));for(var n=Object.keys(e),r=t.$options.props,o=n.length;o--;)r&&i(r,n[o])?ui('The data property "'+n[o]+'" is already declared as a prop. Use prop default value instead.',t):z(t,n[o]);j(e),e.__ob__&&e.__ob__.vmCount++}function B(t){var e=t.$options.computed;if(e)for(var n in e){var r=e[n];"function"==typeof r?(ei.get=L(r,t),ei.set=v):(ei.get=r.get?r.cache!==!1?L(r.get,t):c(r.get,t):v,ei.set=r.set?c(r.set,t):v),Object.defineProperty(t,n,ei)}}function L(t,e){var n=new Gr(e,t,v,{lazy:!0});return function(){return n.dirty&&n.evaluate(),Ir.target&&n.depend(),n.value}}function R(t){var e=t.$options.methods;if(e)for(var n in e)t[n]=c(e[n],t)}function I(t){var e=t.$options.watch;if(e)for(var n in e){var r=e[n];if(Array.isArray(r))for(var i=0;i<r.length;i++)q(t,n,r[i]);else q(t,n,r)}}function q(t,e,n){var r=void 0;d(n)&&(r=n,n=n.handler),"string"==typeof n&&(n=t[n]),t.$watch(e,n,r)}function H(t){var e={};e.get=function(){return this._data},e.set=function(t){ui("Avoid replacing instance root $data. Use nested data properties instead.",this)},Object.defineProperty(t.prototype,"$data",e),t.prototype.$watch=function(t,e,n){var r=this;n=n||{},n.user=!0;var i=new Gr(r,t,e,n);return n.immediate&&e.call(r,i.value),function(){i.teardown()}}}function z(t,e){m(e)||Object.defineProperty(t,e,{configurable:!0,enumerable:!0,get:function(){return t._data[e]},set:function(n){t._data[e]=n}})}function V(t,e){if("function"==typeof t&&(t=t()),s(t))return[U(t)];if(Array.isArray(t)){for(var n=[],r=0,i=t.length;r<i;r++){var o=t[r],a=n[n.length-1];Array.isArray(o)?n.push.apply(n,V(o)):s(o)?a&&a.text?a.text+=String(o):n.push(U(o)):o instanceof ni&&(o.text&&a&&a.text?a.text+=o.text:(e&&o.tag&&(o.ns=e),n.push(o)))}return n}}function U(t){return new ni((void 0),(void 0),(void 0),String(t))}function W(t,e,n,r){var i=void 0,o=void 0,a=void 0,s=void 0,u=void 0,c=void 0;for(i in t)if(o=t[i],a=e[i])if(Array.isArray(a)){a.length=o.length;for(var l=0;l<a.length;l++)a[l]=o[l];t[i]=a}else a.fn=o,t[i]=a;else c="!"===i.charAt(0),u=c?i.slice(1):i,Array.isArray(o)?n(u,o.invoker=X(o),c):(s=o,o=t[i]={},o.fn=s,n(u,o.invoker=G(o),c));for(i in e)t[i]||(u="!"===i.charAt(0)?i.slice(1):i,r(u,e[i].invoker))}function X(t){return function(e){for(var n=1===arguments.length,r=0;r<t.length;r++)n?t[r](e):t[r].apply(null,arguments)}}function G(t){return function(e){var n=1===arguments.length;n?t.fn(e):t.fn.apply(null,arguments)}}function Z(t){var e=t.$options;t.$parent=e.parent,t.$root=t.$parent?t.$parent.$root:t,t.$parent&&!e._abstract&&t.$parent.$children.push(t),t.$children=[],t.$refs={},t._watcher=null,t._inactive=!1,t._isMounted=!1,t._isDestroyed=!1,t._isBeingDestroyed=!1}function J(t){t.prototype._mount=function(t,e){var n=this;return n.$el=t,n.$options.render||(n.$options.render=ri,n.$options.template?ui("You are using the runtime-only build of Vue where the template option is not available. Either pre-compile the templates into render functions, or use the compiler-included build.",n):ui("Failed to mount component: template or render function not defined.",n)),Y(n,"beforeMount"),n._watcher=new Gr(n,function(){n._update(n._render(),e)},v),e=!1,n.$root===n&&(n._isMounted=!0,Y(n,"mounted")),n},t.prototype._update=function(t,e){var n=this;n._isMounted&&Y(n,"beforeUpdate");var r=n.$el;n._vnode?n.$el=n.__patch__(n._vnode,t):n.$el=n.__patch__(n.$el,t,e),n._vnode=t,r&&(r.__vue__=null),n.$el&&(n.$el.__vue__=n);var i=n.$options._parentVnode;i&&(i.elm=n.$el,n.$parent&&i===n.$parent._vnode&&(n.$parent.$el=n.$el)),n._isMounted&&Y(n,"updated")},t.prototype._updateFromParent=function(t,e,n,r){var i=this;if(i.$options._parentVnode=n,i.$options._renderChildren=r,t&&i.$options.props){Kr.shouldConvert=!1,Kr.isSettingProps=!0;for(var o=i.$options._propKeys||[],a=0;a<o.length;a++){var s=o[a];i[s]=At(i,s,t)}Kr.shouldConvert=!0,Kr.isSettingProps=!1}if(e){var u=i.$options._parentListeners;i.$options._parentListeners=e,i._updateListeners(e,u)}},t.prototype.$forceUpdate=function(){var t=this;if(t._watcher&&t._watcher.update(),t._watchers.length)for(var e=0;e<t._watchers.length;e++)t._watchers[e].update(!0)},t.prototype.$destroy=function(){var t=this;if(!t._isBeingDestroyed){Y(t,"beforeDestroy"),t._isBeingDestroyed=!0;var e=t.$parent;!e||e._isBeingDestroyed||t.$options._abstract||r(e.$children,t),t._watcher&&t._watcher.teardown();for(var n=t._watchers.length;n--;)t._watchers[n].teardown();t._data.__ob__&&t._data.__ob__.vmCount--,t._isDestroyed=!0,Y(t,"destroyed"),t.$off(),t.$el&&(t.$el.__vue__=null)}}}function Y(t,e){t.$emit("pre-hook:"+e);var n=t.$options[e];if(n)for(var r=0,i=n.length;r<i;r++)n[r].call(t);t.$emit("hook:"+e)}function Q(t,e,n,r,i,o,a){if(o&&"function"!=typeof o&&ui("A component's children should be a function that returns the children array. This allows the component to track the children dependencies and optimizes re-rendering."),t){if(h(t)&&(t=mt.extend(t)),"function"!=typeof t)return void ui("Invalid Component definition: "+t,n);if(!t.cid)if(t.resolved)t=t.resolved;else if(t=it(t,function(){n.$forceUpdate()}),!t)return;e=e||{};var s=ot(e,t);if(t.options.functional)return t.options.render.call(null,n.$createElement,s||{},V(o));st(e);var u=e.on;u&&delete e.on;var c=t.options.name||a,l=new ni("vue-component-"+t.cid+(c?"-"+c:""),e,(void 0),(void 0),(void 0),(void 0),r,i,{Ctor:t,propsData:s,listeners:u,parent:n,tag:a,children:o});return l}}function K(t){var e=t.componentOptions,n={_isComponent:!0,parent:e.parent,propsData:e.propsData,_componentTag:e.tag,_parentVnode:t,_parentListeners:e.listeners,_renderChildren:e.children},r=t.data.inlineTemplate;return r&&(n.render=r.render,n.staticRenderFns=r.staticRenderFns),new e.Ctor(n)}function tt(t,e){if(!t.child){var n=t.child=K(t);n.$mount(e?t.elm:void 0,e)}}function et(t,e){var n=e.componentOptions;e.child=t.child,e.child._updateFromParent(n.propsData,n.listeners,e,n.children)}function nt(t){t.child._isMounted||(t.child._isMounted=!0,Y(t.child,"mounted")),t.data.keepAlive&&(t.child._inactive=!1,Y(t.child,"activated"))}function rt(t){t.child._isDestroyed||(t.data.keepAlive?(t.child._inactive=!0,Y(t.child,"deactivated")):t.child.$destroy())}function it(t,e){if(t.requested)t.pendingCallbacks.push(e);else{var n=function(){t.requested=!0;var n=t.pendingCallbacks=[e],r=!0;return t(function(e){if(h(e)&&(e=mt.extend(e)),t.resolved=e,!r)for(var i=0,o=n.length;i<o;i++)n[i](e)},function(e){ui("Failed to resolve async component: "+t+(e?"\nReason: "+e:""))}),r=!1,{v:t.resolved}}();if("object"===("undefined"==typeof n?"undefined":a(n)))return n.v}}function ot(t,e){var n=e.options.props;if(n){var r={},i=t.attrs,o=t.props,a=t.staticAttrs;if(!i&&!o&&!a)return r;for(var s in n){var u=xr(s);at(r,i,s,u)||at(r,o,s,u)||at(r,a,s,u)}return r}}function at(t,e,n,r){if(e){if(i(e,n))return t[n]=e[n],delete e[n],!0;if(i(e,r))return t[n]=e[r],delete e[r],!0}return!1}function st(t){if(t.hook)for(var e=0;e<oi.length;e++){var n=oi[e],r=t.hook[n],i=ii[n];t.hook[n]=r?ut(i,r):i}else t.hook=ii}function ut(t,e){return function(n,r){t(n,r),e(n,r)}}function ct(t,e,n){return e&&(Array.isArray(e)||"object"!==("undefined"==typeof e?"undefined":a(e)))&&(n=e,e=void 0),lt.call(this,t,e,n)}function lt(t,e,n){var r=this._self,i=ai.activeInstance,o=r!==i?i:void 0;if(!i)return void ui("createElement cannot be called outside of component render functions.");if(!t)return ri();if("string"==typeof t){var a=kr.getTagNamespace(t),s=void 0;return kr.isReservedTag(t)?new ni(t,e,V(n,a),(void 0),(void 0),a,r,o):(s=Tt(r.$options,"components",t))?Q(s,e,i,r,o,n,t):(a||kr.ignoredElements&&kr.ignoredElements.indexOf(t)>-1||!kr.isUnknownElement(t)||ui("Unknown custom element: <"+t+'> - did you register the component correctly? For recursive components, make sure to provide the "name" option.'),new ni(t,e,V(n,a),(void 0),(void 0),a,r,o))}return Q(t,e,i,r,o,n)}function ft(t){t._vnode=null,t._staticTrees=null,t.$slots={},t.$createElement=c(ct,t),t.$options.el&&t.$mount(t.$options.el)}function ht(n){n.prototype.$nextTick=function(t){Mr(t,this)},n.prototype._render=function(){var t=this,e=ai.activeInstance;ai.activeInstance=t;var n=t.$options,r=n.render,i=n.staticRenderFns,o=n._renderChildren,a=n._parentVnode;i&&!this._staticTrees&&(this._staticTrees=[]),o&&dt(t,o);var s=r.call(t._renderProxy,t.$createElement);return s instanceof ni||(Array.isArray(s)&&ui("Multiple root nodes returned from render function. Render function should return a single root node.",t),s=ri()),s.parent=a,ai.activeInstance=e,s},n.prototype._h=ct,n.prototype._s=t,n.prototype._n=e,n.prototype._m=function(t){return this._staticTrees[t]||(this._staticTrees[t]=this.$options.staticRenderFns[t].call(this._renderProxy))};var r=function(t){return t};n.prototype._f=function(t){return Tt(this.$options,"filters",t,!0)||r},n.prototype._l=function(t,e){var n=void 0,r=void 0,i=void 0,o=void 0,a=void 0;if(Array.isArray(t))for(n=new Array(t.length),r=0,i=t.length;r<i;r++)n[r]=e(t[r],r);else if("number"==typeof t)for(n=new Array(t),r=0;r<t;r++)n[r]=e(r+1,r);else if(h(t))for(o=Object.keys(t),n=new Array(o.length),r=0,i=o.length;r<i;r++)a=o[r],n[r]=e(t[a],a,r);return n},n.prototype._b=function(t,e){if(e)if(h(e)){Array.isArray(e)&&(e=p(e));var n=t.data;for(var r in e){var i=kr.mustUseProp(r)?n.props||(n.props={}):n.attrs||(n.attrs={});i[r]=e[r]}}else ui("v-bind without argument expects an Object or Array value",this)},n.prototype._k=function(t){return kr.keyCodes[t]}}function dt(t,e){if(e){for(var n=V(e)||[],r={},i=[],o=void 0,a=void 0,s=0,u=n.length;s<u;s++)if(a=n[s],o=a.data&&a.data.slot){var c=r[o]||(r[o]=[]);"template"===a.tag?c.push.apply(c,a.children):c.push(a)}else i.push(a);!i.length||1===i.length&&" "===i[0].text||(r["default"]=i),t.$slots=r}}function pt(t){t._events=Object.create(null);var e=t.$options._parentListeners,n=c(t.$on,t),r=c(t.$off,t);t._updateListeners=function(t,e){W(t,e||{},n,r)},e&&t._updateListeners(e)}function vt(t){t.prototype.$on=function(t,e){var n=this;return(n._events[t]||(n._events[t]=[])).push(e),n},t.prototype.$once=function(t,e){function n(){r.$off(t,n),e.apply(r,arguments)}var r=this;return n.fn=e,r.$on(t,n),r},t.prototype.$off=function(t,e){var n=this;if(!arguments.length)return n._events=Object.create(null),n;var r=n._events[t];if(!r)return n;if(1===arguments.length)return n._events[t]=null,n;for(var i=void 0,o=r.length;o--;)if(i=r[o],i===e||i.fn===e){r.splice(o,1);break}return n},t.prototype.$emit=function(t){var e=this,n=e._events[t];if(n){n=n.length>1?l(n):n;for(var r=l(arguments,1),i=0,o=n.length;i<o;i++)n[i].apply(e,r)}return e}}function gt(t){function e(t,e){var r=t.$options=Object.create(n(t));r.parent=e.parent,r.propsData=e.propsData,r._parentVnode=e._parentVnode,r._parentListeners=e._parentListeners,r._renderChildren=e._renderChildren,r._componentTag=e._componentTag,e.render&&(r.render=e.render,r.staticRenderFns=e.staticRenderFns)}function n(t){var e=t.constructor,n=e.options;if(e["super"]){var r=e["super"].options,i=e.superOptions;r!==i&&(e.superOptions=r,n=e.options=kt(r,e.extendOptions),n.name&&(n.components[n.name]=e))}return n}t.prototype._init=function(t){var r=this;r._uid=si++,r._isVue=!0,t&&t._isComponent?e(r,t):r.$options=kt(n(r),t||{},r),Lr(r),r._self=r,Z(r),pt(r),Y(r,"beforeCreate"),M(r),Y(r,"created"),ft(r)}}function mt(t){this._init(t)}function yt(t,e){var n=void 0,r=void 0,o=void 0;for(n in e)r=t[n],o=e[n],i(t,n)?h(r)&&h(o)&&yt(r,o):N(t,n,o);return t}function bt(t,e){return e?t?t.concat(e):Array.isArray(e)?e:[e]:t}function xt(t,e){var n=Object.create(t||null);return e?f(n,e):n}function wt(t){if(t.components){var e=t.components,n=void 0;for(var r in e){var i=r.toLowerCase();pr(i)||kr.isReservedTag(i)?ui("Do not use built-in or reserved HTML elements as component id: "+r):(n=e[r],d(n)&&(e[r]=mt.extend(n)))}}}function _t(t){var e=t.props;if(e){var n={},r=void 0,i=void 0,o=void 0;if(Array.isArray(e))for(r=e.length;r--;)i=e[r],"string"==typeof i?(o=mr(i),n[o]={type:null}):ui("props must be strings when using array syntax.");else if(d(e))for(var a in e)i=e[a],o=mr(a),n[o]=d(i)?i:{type:i};t.props=n}}function Ct(t){var e=t.directives;if(e)for(var n in e){var r=e[n];"function"==typeof r&&(e[n]={bind:r,update:r})}}function kt(t,e,n){function r(r){var i=li[r]||fi;c[r]=i(t[r],e[r],n,r)}wt(e),_t(e),Ct(e);var o=e["extends"];if(o&&(t="function"==typeof o?kt(t,o.options,n):kt(t,o,n)),e.mixins)for(var a=0,s=e.mixins.length;a<s;a++){var u=e.mixins[a];u.prototype instanceof mt&&(u=u.options),t=kt(t,u,n)}var c={},l=void 0;for(l in t)r(l);for(l in e)i(t,l)||r(l);return c}function Tt(t,e,n,r){if("string"==typeof n){var i=t[e],o=i[n]||i[mr(n)]||i[yr(mr(n))];return r&&!o&&ui("Failed to resolve "+e.slice(0,-1)+": "+n,t),o}}function At(t,e,n){if(t.$options.props&&n){var r=t.$options.props[e],o=!i(n,e),a=n[e];return r.type===Boolean&&(o&&!i(r,"default")?a=!1:""!==a&&a!==xr(e)||(a=!0)),void 0===a&&(a=St(t,r,e),Kr.shouldConvert=!0,j(a),Kr.shouldConvert=!1),$t(r,e,a,t,o),a}}function St(t,e,n){if(i(e,"default")){var r=e["default"];return h(r)&&ui('Invalid default value for prop "'+n+'": Props with type Object/Array must use a factory function to return the default value.',t),"function"==typeof r&&e.type!==Function?r.call(t):r}}function $t(t,e,n,r,i){if(t.required&&i)return void ui('Missing required prop: "'+e+'"',r);if(null!=n||t.required){var o=t.type,a=!o,s=[];if(o){Array.isArray(o)||(o=[o]);for(var u=0;u<o.length&&!a;u++){var c=Et(n,o[u]);s.push(c.expectedType),a=c.valid}}if(!a)return void ui('Invalid prop: type check failed for prop "'+e+'". Expected '+s.map(yr).join(", ")+", got "+Object.prototype.toString.call(n).slice(8,-1)+".",r);var l=t.validator;l&&(l(n)||ui('Invalid prop: custom validator check failed for prop "'+e+'".',r))}}function Et(t,e){var n=void 0,r=void 0;return e===String?(r="string",n=("undefined"==typeof t?"undefined":a(t))===r):e===Number?(r="number",n=("undefined"==typeof t?"undefined":a(t))===r):e===Boolean?(r="boolean",n=("undefined"==typeof t?"undefined":a(t))===r):e===Function?(r="function",n=("undefined"==typeof t?"undefined":a(t))===r):e===Object?(r="Object",n=d(t)):e===Array?(r="Array",n=Array.isArray(t)):(r=e.name||e.toString(),n=t instanceof e),{valid:n,expectedType:r}}function jt(t){t.use=function(t){if(!t.installed){var e=l(arguments,1);return e.unshift(this),"function"==typeof t.install?t.install.apply(t,e):t.apply(null,e),t.installed=!0,this}}}function Ot(t){t.mixin=function(e){t.options=kt(t.options,e)}}function Nt(t){t.cid=0;var e=1;t.extend=function(t){t=t||{};var n=this,r=0===n.cid;if(r&&t._Ctor)return t._Ctor;var i=t.name||n.options.name;/^[a-zA-Z][\w-]*$/.test(i)||(ui('Invalid component name: "'+i+'". Component names can only contain alphanumeric characaters and the hyphen.'),i=null);var o=function(t){this._init(t)};return o.prototype=Object.create(n.prototype),o.prototype.constructor=o,o.cid=e++,o.options=kt(n.options,t),o["super"]=n,o.extend=n.extend,kr._assetTypes.forEach(function(t){o[t]=n[t]}),i&&(o.options.components[i]=o),o.superOptions=n.options,o.extendOptions=t,r&&(t._Ctor=o),o}}function Dt(t){kr._assetTypes.forEach(function(e){t[e]=function(n,r){return r?("component"===e&&kr.isReservedTag(n)&&ui("Do not use built-in or reserved HTML elements as component id: "+n),"component"===e&&d(r)&&(r.name=r.name||n,r=t.extend(r)),this.options[e+"s"][n]=r,r):this.options[e+"s"][n]}})}function Mt(t){var e=t&&t.componentOptions;return e&&e.Ctor.options._abstract?Mt(e.propsData.child):t}function Pt(t){var e={};e.get=function(){return kr},e.set=function(){ui("Do not replace the Vue.config object, set individual fields instead.")},Object.defineProperty(t,"config",e),t.util=hi,t.set=N,t["delete"]=D,t.nextTick=Mr,t.options=Object.create(null),kr._assetTypes.forEach(function(e){t.options[e+"s"]=Object.create(null)}),f(t.options.components,pi),jt(t),Ot(t),Nt(t),Dt(t)}function Ft(t){var e=t.data,n=void 0;return(n=t.child)&&(n=n._vnode.data)&&(e=Bt(n,e)),(n=t.parent)&&(n=n.data)&&(e=Bt(e,n)),Lt(e)}function Bt(t,e){return{staticClass:Rt(t.staticClass,e.staticClass),"class":t["class"]?[t["class"],e["class"]]:e["class"]}}function Lt(t){var e=t["class"],n=t.staticClass;return n||e?Rt(n,It(e)):""}function Rt(t,e){return t?e?t+" "+e:t:e||""}function It(t){var e="";if(!t)return e;if("string"==typeof t)return t;if(Array.isArray(t)){for(var n=void 0,r=0,i=t.length;r<i;r++)t[r]&&(n=It(t[r]))&&(e+=n+" ");return e.slice(0,-1)}if(h(t)){for(var o in t)t[o]&&(e+=o+" ");return e.slice(0,-1)}return e}function qt(t){return Si(t)?"svg":"math"===t?"math":void 0}function Ht(t){if(!Sr)return!0;if(t=t.toLowerCase(),null!=$i[t])return $i[t];var e=document.createElement(t);return t.indexOf("-")>-1?$i[t]=e.constructor===window.HTMLUnknownElement||e.constructor===window.HTMLElement:$i[t]=/HTMLUnknownElement/.test(e.toString())}function zt(t){if("string"==typeof t){var e=t;if(t=document.querySelector(t),!t)return ui("Cannot find element: "+e),document.createElement("div")}return t}function Vt(t){return document.createElement(t)}function Ut(t,e){return document.createElementNS(_i[t],e)}function Wt(t){return document.createTextNode(t)}function Xt(t,e,n){t.insertBefore(e,n)}function Gt(t,e){t.removeChild(e)}function Zt(t,e){t.appendChild(e)}function Jt(t){return t.parentNode}function Yt(t){return t.nextSibling}function Qt(t){return t.tagName}function Kt(t,e){t.textContent=e}function te(t){return t.childNodes}function ee(t,e,n){t.setAttribute(e,n)}function ne(t){return null==t}function re(t){return null!=t}function ie(t,e){return t.key===e.key&&t.tag===e.tag}function oe(t,e,n){var r=void 0,i=void 0,o={};for(r=e;r<=n;++r)i=t[r].key,re(i)&&(o[i]=r);return o}function ae(e){function n(t){return new ni(_.tagName(t).toLowerCase(),{},[],(void 0),t)}function r(t,e){function n(){0===--n.listeners&&i(t)}return n.listeners=e,n}function i(t){var e=_.parentNode(t);_.removeChild(e,t)}function o(t,e){var n=void 0,r=void 0,i=t.data;if(re(i)&&(re(n=i.hook)&&re(n=n.init)&&n(t),re(n=t.child)))return a(t,e),u(t),t.elm;var c=t.children,l=t.tag;if(re(l)){if(r=t.elm=t.ns?_.createElementNS(t.ns,l):_.createElement(l),u(t),Array.isArray(c))for(n=0;n<c.length;++n)_.appendChild(r,o(c[n],e));else s(t.text)&&_.appendChild(r,_.createTextNode(t.text));re(i)&&a(t,e)}else r=t.elm=_.createTextNode(t.text);return t.elm}function a(t,e){for(var n=0;n<x.create.length;++n)x.create[n](Pi,t);y=t.data.hook,re(y)&&(y.create&&y.create(Pi,t),y.insert&&e.push(t))}function u(t){var e=void 0;re(e=t.host)&&re(e=e.$options._scopeId)&&_.setAttribute(t.elm,e,""),re(e=t.context)&&re(e=e.$options._scopeId)&&_.setAttribute(t.elm,e,"")}function c(t,e,n,r,i,a){for(;r<=i;++r)_.insertBefore(t,o(n[r],a),e)}function l(t){var e=void 0,n=void 0,r=t.data;if(re(r))for(re(e=r.hook)&&re(e=e.destroy)&&e(t),e=0;e<x.destroy.length;++e)x.destroy[e](t);if(re(e=t.child)&&!r.keepAlive&&l(e._vnode),re(e=t.children))for(n=0;n<t.children.length;++n)l(t.children[n])}function f(t,e,n,r){for(;n<=r;++n){var i=e[n];re(i)&&(re(i.tag)?(l(i),h(i)):_.removeChild(t,i.elm))}}function h(t,e){if(e||re(t.data)){var n=x.remove.length+1;for(e?e.listeners+=n:e=r(t.elm,n),re(y=t.child)&&re(y=y._vnode)&&re(y.data)&&h(y,e),y=0;y<x.remove.length;++y)x.remove[y](t,e);re(y=t.data.hook)&&re(y=y.remove)?y(t,e):e()}else i(t.elm)}function d(t,e,n,r){for(var i=0,a=0,s=e.length-1,u=e[0],l=e[s],h=n.length-1,d=n[0],v=n[h],g=void 0,m=void 0,y=void 0,b=void 0;i<=s&&a<=h;)ne(u)?u=e[++i]:ne(l)?l=e[--s]:ie(u,d)?(p(u,d,r),u=e[++i],d=n[++a]):ie(l,v)?(p(l,v,r),l=e[--s],v=n[--h]):ie(u,v)?(p(u,v,r),_.insertBefore(t,u.elm,_.nextSibling(l.elm)),u=e[++i],v=n[--h]):ie(l,d)?(p(l,d,r),_.insertBefore(t,l.elm,u.elm),l=e[--s],d=n[++a]):(ne(g)&&(g=oe(e,i,s)),m=g[d.key],ne(m)?(_.insertBefore(t,o(d,r),u.elm),d=n[++a]):(y=e[m],y||ui("It seems there are duplicate keys that is causing an update error. Make sure each v-for item has a unique key."),y.tag!==d.tag?(_.insertBefore(t,o(d,r),u.elm),d=n[++a]):(p(y,d,r),e[m]=void 0,_.insertBefore(t,d.elm,u.elm),d=n[++a])));i>s?(b=ne(n[h+1])?null:n[h+1].elm,c(t,b,n,a,h,r)):a>h&&f(t,e,i,s)}function p(t,e,n){if(t!==e){var r=void 0,i=void 0,o=re(r=e.data);o&&(t.data=t.data||Mi,re(i=r.hook)&&re(r=i.prepatch)&&r(t,e));var a=e.elm=t.elm,s=t.children,u=e.children;if(o){for(r=0;r<x.update.length;++r)x.update[r](t,e);re(i)&&re(r=i.update)&&r(t,e)}if(ne(e.text)?re(s)&&re(u)?s!==u&&d(a,s,u,n):re(u)?(re(t.text)&&_.setTextContent(a,""),c(a,null,u,0,u.length-1,n)):re(s)?f(a,s,0,s.length-1):re(t.text)&&_.setTextContent(a,""):t.text!==e.text&&_.setTextContent(a,e.text),o){for(r=0;r<x.postpatch.length;++r)x.postpatch[r](t,e);re(i)&&re(r=i.postpatch)&&r(t,e)}}}function v(t){for(var e=0;e<t.length;++e)t[e].data.hook.insert(t[e])}function g(t,e,n){if(!m(t,e))return!1;e.elm=t;var r=e.tag,i=e.data,o=e.children;if(re(i)&&(re(y=i.hook)&&re(y=y.init)&&y(e,!0),re(y=e.child)))return a(e,n),!0;if(re(r)){if(re(o))for(var s=_.childNodes(t),u=0;u<o.length;u++){var c=g(s[u],o[u],n);if(!c)return!1}re(i)&&a(e,n)}return!0}function m(e,n){if(n.tag){if(0===n.tag.indexOf("vue-component"))return!0;var r=_.childNodes(e);return n.tag===_.tagName(e).toLowerCase()&&(n.children?n.children.length===r.length:0===r.length)}return t(n.text)===e.data}var y=void 0,b=void 0,x={},w=e.modules,_=e.nodeOps;for(y=0;y<Fi.length;++y)for(x[Fi[y]]=[],b=0;b<w.length;++b)void 0!==w[b][Fi[y]]&&x[Fi[y]].push(w[b][Fi[y]]);return function(t,e,r){var i=void 0,a=void 0,s=[];if(t){var u=re(t.nodeType);if(!u&&ie(t,e))p(t,e,s);else{if(u){if(t.hasAttribute("server-rendered")&&(t.removeAttribute("server-rendered"),r=!0),r){if(g(t,e,s))return v(s),t;ui("The client-side rendered virtual DOM tree is not matching server-rendered content. Bailing hydration and performing full client-side render.")}t=n(t)}i=t.elm,a=_.parentNode(i),o(e,s),null!==a?(_.insertBefore(a,e.elm,_.nextSibling(i)),f(a,[t],0,0)):re(t.tag)&&l(t)}}else o(e,s);return v(s),e.elm}}function se(t,e,n){var r=e.data.directives;if(r)for(var i=t.data.directives,o="update"===n,a=0;a<r.length;a++){var s=r[a],u=Tt(e.context.$options,"directives",s.name,!0),c=u&&u[n];if(c){if(o&&i){var l=s.oldValue=i[a].value;if(l===s.value)continue}c(e.elm,s,e,t)}}}function ue(t,e){var n=t.data.ref;if(n){var i=t.context,o=t.child||t.elm,a=i.$refs;e?Array.isArray(a[n])?r(a[n],o):a[n]===o&&(a[n]=void 0):t.data.refInFor?Array.isArray(a[n])?a[n].push(o):a[n]=[o]:a[n]=o}}function ce(t,e){if(t.data.attrs||e.data.attrs){var n=void 0,r=void 0,i=void 0,o=e.elm,a=t.data.attrs||{},s=e.data.attrs||{};for(n in s)r=s[n],i=a[n],i!==r&&le(o,n,r);for(n in a)null==s[n]&&(bi(n)?o.removeAttributeNS(yi,xi(n)):gi(n)||o.removeAttribute(n))}}function le(t,e,n){mi(e)?wi(n)?t.removeAttribute(e):t.setAttribute(e,e):gi(e)?t.setAttribute(e,wi(n)||"false"===n?"false":"true"):bi(e)?wi(n)?t.removeAttributeNS(yi,xi(e)):t.setAttributeNS(yi,e,n):wi(n)?t.removeAttribute(e):t.setAttribute(e,n)}function fe(t,e){var n=e.elm,r=e.data;if(r.staticClass||r["class"]){var i=Ft(e),o=n._transitionClasses;o&&(i=Rt(i,It(o))),i!==n._prevClass&&(n.setAttribute("class",i),n._prevClass=i)}}function he(t,e){if(t.data.on||e.data.on){var n=e.data.on||{},r=t.data.on||{},i=e.elm._v_add||(e.elm._v_add=function(t,n,r){e.elm.addEventListener(t,n,r)}),o=e.elm._v_remove||(e.elm._v_remove=function(t,n){e.elm.removeEventListener(t,n)});W(n,r,i,o)}}function de(t,e){if(t.data.props||e.data.props){var n=void 0,r=void 0,i=e.elm,o=t.data.props||{},a=e.data.props||{};for(n in o)null==a[n]&&(i[n]=void 0);for(n in a)r=a[n],"value"===n?(i._value=r,i.value!=r&&(i.value=r)):i[n]=r}}function pe(t,e){if(t.data.style||e.data.style){var n=void 0,r=void 0,i=e.elm,o=t.data.style||{},a=e.data.style||{};Array.isArray(a)&&(a=e.data.style=p(a));for(r in o)a[r]||(i.style[Wi(r)]="");for(r in a)n=a[r],n!==o[r]&&(i.style[Wi(r)]=n||"");e.data.style=f({},a)}}function ve(t,e){if(t.classList)e.indexOf(" ")>-1?e.split(/\s+/).forEach(function(e){return t.classList.add(e)}):t.classList.add(e);else{var n=" "+t.getAttribute("class")+" ";n.indexOf(" "+e+" ")<0&&t.setAttribute("class",(n+e).trim())}}function ge(t,e){if(t.classList)e.indexOf(" ")>-1?e.split(/\s+/).forEach(function(e){return t.classList.remove(e)}):t.classList.remove(e);else{for(var n=" "+t.getAttribute("class")+" ",r=" "+e+" ";n.indexOf(r)>=0;)n=n.replace(r," ");t.setAttribute("class",n.trim())}}function me(t){eo(function(){eo(t)})}function ye(t){var e=t.elm,n=t.context;e._leaveCb&&(e._leaveCb.cancelled=!0,e._leaveCb());var r=t.data.transition;if(r){var i=xe(r,t.context),o=i.css,a=i.appear,s=i.enterClass,u=i.enterActiveClass,c=i.appearClass,l=i.appearActiveClass,f=i.beforeEnter,h=i.onEnter,d=i.afterEnter,p=i.enterCancelled,v=i.beforeAppear,g=i.onAppear,m=i.afterAppear,y=i.appearCancelled,b=!t.context.$root._isMounted;if(!b||a||""===a){var x=b?c:s,w=b?l:u,_=b?v||f:f,C=b?g||h:h,k=b?m||d:d,T=b?y||p:p,A=o!==!1,S=C&&C.length>2,$=e._enterCb=Ee(function(){A&&ke(e,w),$.cancelled?(A&&ke(e,x),T&&T(e,n)):k&&k(e,n),e._enterCb=null});_&&_(e,n),A&&(Ce(e,x),Ce(e,w),me(function(){ke(e,x),$.cancelled||S||Te(e,$)})),C&&C(e,n,$),A||S||$()}}}function be(t,e){function n(){l&&l(r,i),v&&(Ce(r,u),Ce(r,c),me(function(){ke(r,u),m.cancelled||g||Te(r,m)})),f&&f(r,i,m),v||g||m()}var r=t.elm,i=t.context;r._enterCb&&(r._enterCb.cancelled=!0,r._enterCb());var o=t.data.transition;if(!o)return e();var a=xe(o,t.context),s=a.css,u=a.leaveClass,c=a.leaveActiveClass,l=a.beforeLeave,f=a.onLeave,h=a.afterLeave,d=a.leaveCancelled,p=a.delayLeave,v=s!==!1,g=f&&f.length>2,m=r._leaveCb=Ee(function(){v&&ke(r,c),m.cancelled?(v&&ke(r,u),d&&d(r,i)):(e(),h&&h(r,i)),r._leaveCb=null});p?p(n):n()}function xe(t,e){var n=void 0;if(t&&"string"==typeof t)return n=Tt(e.$options,"transitions",t),n?we(n.name||t,n):no(t);if("object"===("undefined"==typeof t?"undefined":a(t))){if(t.name&&(n=Tt(e.$options,"transitions",t.name)),n=n?f(we(t.name,n),t):we(t.name,t),t.hooks)for(var r in t.hooks)_e(n,r,t.hooks[r]);return n}return no("v")}function we(t,e){t=t||"v";var n={};return e.css!==!1&&f(n,no(t)),f(n,e),n}function _e(t,e,n){var r=t[e];r?t[e]=function(){r.apply(this,arguments),n()}:t[e]=n}function Ce(t,e){(t._transitionClasses||(t._transitionClasses=[])).push(e),ve(t,e)}function ke(t,e){r(t._transitionClasses,e),ge(t,e)}function Te(t,e){var n=Ae(t),r=n.type,i=n.timeout,o=n.propCount;if(!r)return e();var a=r===Zi?Qi:to,s=0,u=function(){t.removeEventListener(a,c),e()},c=function(){++s>=o&&u()};setTimeout(function(){s<o&&u()},i+1),t.addEventListener(a,c)}function Ae(t){var e=window.getComputedStyle(t),n=e[Yi+"Delay"].split(", "),r=e[Yi+"Duration"].split(", "),i=e[Ki+"Delay"].split(", "),o=e[Ki+"Duration"].split(", "),a=Se(n,r),s=Se(i,o),u=Math.max(a,s),c=u>0?a>s?Zi:Ji:null,l=c?c===Zi?r.length:o.length:0;return{type:c,timeout:u,propCount:l}}function Se(t,e){return Math.max.apply(null,e.map(function(e,n){return $e(e)+$e(t[n])}))}function $e(t){return 1e3*Number(t.slice(0,-1))}function Ee(t){var e=!1;return function(){e||(e=!0,t())}}function je(t){return!!(t.parent&&t.parent.data.transition||t.data.show)}function Oe(t,e){var n=t.multiple;n||(t.selectedIndex=-1);for(var r=0,i=t.options.length;r<i;r++){var o=t.options[r];if(n)o.selected=e.indexOf(De(o))>-1;else if(De(o)===e){t.selectedIndex=r;break}}}function Ne(t,e){for(var n=0,r=e.length;n<r;n++)if(De(e[n])===t)return!1;return!0}function De(t){return"_value"in t?t._value:t.value||t.text}function Me(t){t.target.composing=!0}function Pe(t){t.target.composing=!1,Fe(t.target,"input")}function Fe(t,e){var n=document.createEvent("HTMLEvents");n.initEvent(e,!0,!0),
+t.dispatchEvent(n)}function Be(t){var e=t.parent;return e&&null!=e.data.transition?e.data.transition:t.data.transition}function Le(t,e){if(t.data&&t.data.transition){var n=t.data.transition;"string"==typeof n?n=t.data.transition={name:n}:"object"!==("undefined"==typeof n?"undefined":a(n))&&(n=t.data.transition={name:"v"}),n.hooks=e}}function Re(t){return po.innerHTML=t,po.textContent}function Ie(t){var e=vo.source+"(?:\\s*("+qe(t)+")\\s*(?:"+yo.join("|")+"))?";return new RegExp("^\\s*"+e)}function qe(t){return mo.map(function(t){return"(?:"+t.source+")"}).join("|")}function He(t,e){function n(e){l+=e,t=t.substring(e)}function r(){var e=t.match(wo);if(e){var r={tagName:e[1],attrs:[],start:l};n(e[0].length);for(var i=void 0,o=void 0;!(i=t.match(_o))&&(o=t.match(s));)n(o[0].length),r.attrs.push(o);if(i)return r.unarySlash=i[1],n(i[0].length),r.end=l,r}}function i(t){var n=t.tagName,r=t.unarySlash;u&&("p"===h&&Ai(n)&&o("",h),Ti(n)&&h===n&&o("",n));for(var i=c(n)||"html"===n&&"head"===h||!!r,s=t.attrs.length,l=new Array(s),f=0;f<s;f++){var d=t.attrs[f];To&&d[0].indexOf('""')===-1&&(""===d[3]&&delete d[3],""===d[4]&&delete d[4],""===d[5]&&delete d[5]),l[f]={name:d[1],value:Re(d[3]||d[4]||d[5]||"")}}i||(a.push({tag:n,attrs:l}),h=n,r=""),e.start&&e.start(n,l,i,t.start,t.end)}function o(t,n,r,i){var o=void 0;if(null==r&&(r=l),null==i&&(i=l),n){var s=n.toLowerCase();for(o=a.length-1;o>=0&&a[o].tag.toLowerCase()!==s;o--);}else o=0;if(o>=0){for(var u=a.length-1;u>=o;u--)e.end&&e.end(a[u].tag,r,i);a.length=o,h=o&&a[o-1].tag}else"br"===n.toLowerCase()?e.start&&e.start(n,[],!0,r,i):"p"===n.toLowerCase()&&(e.start&&e.start(n,[],!1,r,i),e.end&&e.end(n,r,i))}for(var a=[],s=Ie(e),u=e.expectHTML,c=e.isUnaryTag||Cr,l=0,f=void 0,h=void 0;t;){if(f=t,h&&Ao(h))!function(){var n=h.toLowerCase(),r=So[n]||(So[n]=new RegExp("([\\s\\S]*?)(</"+n+"[^>]*>)","i")),i=0,a=t.replace(r,function(t,r,o){return i=o.length,"script"!==n&&"style"!==n&&"noscript"!==n&&(r=r.replace(/<!--([\s\S]*?)-->/g,"$1").replace(/<!\[CDATA\[([\s\S]*?)\]\]>/g,"$1")),e.chars&&e.chars(r),""});l+=t.length-a.length,t=a,o("</"+n+">",n,l-i,l)}();else{var d=t.indexOf("<");if(0===d){if(/^<!--/.test(t)){var p=t.indexOf("-->");if(p>=0){n(p+3);continue}}if(/^<!\[/.test(t)){var v=t.indexOf("]>");if(v>=0){n(v+2);continue}}var g=t.match(ko);if(g){e.doctype&&e.doctype(g[0]),n(g[0].length);continue}var m=t.match(Co);if(m){var y=l;n(m[0].length),o(m[0],m[1],y,l);continue}var b=r();if(b){i(b);continue}}var x=void 0;d>=0?(x=t.substring(0,d),n(d)):(x=t,t=""),e.chars&&e.chars(x)}if(t===f)throw new Error("Error parsing template:\n\n"+t)}o()}function ze(t){function e(){(h||(h=[])).push(t.slice(s,l).trim()),s=l+1}var n=!1,r=!1,i=0,o=0,a=0,s=0,u=void 0,c=void 0,l=void 0,f=void 0,h=void 0;for(l=0;l<t.length;l++)if(c=u,u=t.charCodeAt(l),n)39===u&&92!==c&&(n=!n);else if(r)34===u&&92!==c&&(r=!r);else if(124!==u||124===t.charCodeAt(l+1)||124===t.charCodeAt(l-1)||i||o||a)switch(u){case 34:r=!0;break;case 39:n=!0;break;case 40:a++;break;case 41:a--;break;case 91:o++;break;case 93:o--;break;case 123:i++;break;case 125:i--}else void 0===f?(s=l+1,f=t.slice(0,l).trim()):e();if(void 0===f?f=t.slice(0,l).trim():0!==s&&e(),h)for(l=0;l<h.length;l++)f=Ve(f,h[l]);return f}function Ve(t,e){var n=e.indexOf("(");if(n<0)return'_f("'+e+'")('+t+")";var r=e.slice(0,n),i=e.slice(n+1);return'_f("'+r+'")('+t+","+i}function Ue(t,e){var n=e?jo(e):$o;if(n.test(t)){for(var r=[],i=n.lastIndex=0,o=void 0,a=void 0;o=n.exec(t);){a=o.index,a>i&&r.push(JSON.stringify(t.slice(i,a)));var s=ze(o[1].trim());r.push("_s("+s+")"),i=a+o[0].length}return i<t.length&&r.push(JSON.stringify(t.slice(i))),r.join("+")}}function We(t){console.error("[Vue parser]: "+t)}function Xe(t,e){return t?t.map(function(t){return t[e]}).filter(function(t){return t}):[]}function Ge(t,e,n){(t.props||(t.props=[])).push({name:e,value:n})}function Ze(t,e,n){(t.attrs||(t.attrs=[])).push({name:e,value:n})}function Je(t,e,n){(t.staticAttrs||(t.staticAttrs=[])).push({name:e,value:n})}function Ye(t,e,n,r,i){(t.directives||(t.directives=[])).push({name:e,value:n,arg:r,modifiers:i})}function Qe(t,e,n){var r=t.hooks||(t.hooks={}),i=r[e];i?i.push(n):r[e]=[n]}function Ke(t,e,n,r){var i=t.events||(t.events={});r&&r.capture&&(delete r.capture,e="!"+e);var o={value:n,modifiers:r},a=i[e];Array.isArray(a)?a.push(o):a?i[e]=[a,o]:i[e]=o}function tn(t,e,n){var r=en(t,":"+e)||en(t,"v-bind:"+e);if(null!=r)return r;if(n!==!1){var i=en(t,e);if(null!=i)return JSON.stringify(i)}}function en(t,e){var n=void 0;if(null!=(n=t.attrsMap[e]))for(var r=t.attrsList,i=0,o=r.length;i<o;i++)if(r[i].name===e){r.splice(i,1);break}return n}function nn(t,e){Io=e.warn||We,qo=e.getTagNamespace||Cr,Ho=e.mustUseProp||Cr,zo=Xe(e.modules,"preTransformNode"),Vo=Xe(e.modules,"transformNode"),Uo=Xe(e.modules,"postTransformNode"),Wo=e.delimiters;var n=[],r=e.preserveWhitespace!==!1,i=void 0,o=void 0,a=!1,s=!1;return He(t,{expectHTML:e.expectHTML,isUnaryTag:e.isUnaryTag,start:function(r,u,c){Lo.test(r)&&(Io("Found camelCase tag in template: <"+r+">. "+("I've converted it to <"+xr(r)+"> for you.")),r=xr(r)),r=r.toLowerCase();var l=o&&o.ns||qo(r);e.isIE&&"svg"===l&&(u=bn(u));var f={type:1,tag:r,attrsList:u,attrsMap:gn(u),parent:o,children:[]};l&&(f.ns=l),yn(f)&&(f.forbidden=!0,Io("Templates should only be responsbile for mapping the state to the UI. Avoid placing tags with side-effects in your templates, such as "+("<"+r+">.")));for(var h=0;h<zo.length;h++)zo[h](f,e);if(a||(rn(f),f.pre&&(a=!0)),a)on(f);else{un(f),cn(f),fn(f),f.plain=!f.key&&!u.length,an(f),sn(f),hn(f),dn(f);for(var d=0;d<Vo.length;d++)Vo[d](f,e);pn(f)}i?n.length||s||(s=!0,Io("Component template should contain exactly one root element:\n\n"+t)):(i=f,"slot"!==r&&"template"!==r||Io("Cannot use <"+r+"> as component root element because it may contain multiple nodes:\n"+t),f.attrsMap.hasOwnProperty("v-for")&&Io("Cannot use v-for on stateful component root element because it renders multiple elements:\n"+t)),o&&!f.forbidden&&(f["else"]?ln(f,o):(o.children.push(f),f.parent=o)),c||(o=f,n.push(f));for(var p=0;p<Uo.length;p++)Uo[p](f,e)},end:function(){var t=n[n.length-1],e=t.children[t.children.length-1];e&&3===e.type&&" "===e.text&&t.children.pop(),n.length-=1,o=n[n.length-1],t.pre&&(a=!1)},chars:function(e){if(!o)return void(s||(s=!0,Io("Component template should contain exactly one root element:\n\n"+t)));if(e="pre"===o.tag||e.trim()?Ro(e):r&&o.children.length?" ":""){var n=void 0;!a&&" "!==e&&(n=Ue(e,Wo))?o.children.push({type:2,expression:n,text:e}):o.children.push({type:3,text:e})}}}),i}function rn(t){null!=en(t,"v-pre")&&(t.pre=!0)}function on(t){var e=t.attrsList.length;if(e)for(var n=t.staticAttrs=new Array(e),r=0;r<e;r++)n[r]={name:t.attrsList[r].name,value:JSON.stringify(t.attrsList[r].value)};else t.pre||(t.plain=!0)}function an(t){var e=tn(t,"key");e&&(t.key=e)}function sn(t){var e=tn(t,"ref");if(e){t.ref=e;for(var n=t;n;){if(void 0!==n["for"]){t.refInFor=!0;break}n=n.parent}}}function un(t){var e=void 0;if(e=en(t,"v-for")){var n=e.match(No);if(!n)return void Io("Invalid v-for expression: "+e);t["for"]=n[2].trim();var r=n[1].trim(),i=r.match(Do);i?(t.alias=i[1].trim(),t.iterator1=i[2].trim(),i[3]&&(t.iterator2=i[3].trim())):t.alias=r}}function cn(t){var e=en(t,"v-if");e&&(t["if"]=e),null!=en(t,"v-else")&&(t["else"]=!0)}function ln(t,e){var n=mn(e.children);n&&n["if"]?n.elseBlock=t:Io("v-else used on element <"+t.tag+"> without corresponding v-if.")}function fn(t){var e=en(t,"v-once");null!=e&&(t.once=!0)}function hn(t){if("slot"===t.tag)t.slotName=tn(t,"name");else{var e=tn(t,"slot");e&&(t.slotTarget=e)}}function dn(t){var e=void 0;(e=tn(t,"is"))&&(t.component=e),null!=en(t,"keep-alive")&&(t.keepAlive=!0),null!=en(t,"inline-template")&&(t.inlineTemplate=!0)}function pn(t){var e=t.attrsList,n=void 0,r=void 0,i=void 0,o=void 0,a=void 0,s=void 0;for(n=0,r=e.length;n<r;n++)if(i=e[n].name,o=e[n].value,Oo.test(i))if(s=vn(i),s&&(i=i.replace(Bo,"")),Mo.test(i))i=i.replace(Mo,""),Ho(i)?Ge(t,i,o):Ze(t,i,o);else if(Po.test(i))i=i.replace(Po,""),Ke(t,i,o,s);else{i=i.replace(Oo,"");var u=i.match(Fo);u&&(a=u[1])&&(i=i.slice(0,-(a.length+1))),Ye(t,i,o,a,s)}else{var c=Ue(o,Wo);c&&Io(i+'="'+o+'": Interpolation inside attributes has been deprecated. Use v-bind or the colon shorthand instead.'),Je(t,i,JSON.stringify(o))}}function vn(t){var e=t.match(Bo);if(e){var n=function(){var t={};return e.forEach(function(e){t[e.slice(1)]=!0}),{v:t}}();if("object"===("undefined"==typeof n?"undefined":a(n)))return n.v}}function gn(t){for(var e={},n=0,r=t.length;n<r;n++)e[t[n].name]&&Io("duplicate attribute: "+t[n].name),e[t[n].name]=t[n].value;return e}function mn(t){for(var e=t.length;e--;)if(t[e].tag)return t[e]}function yn(t){return"style"===t.tag||"script"===t.tag&&(!t.attrsMap.type||"text/javascript"===t.attrsMap.type)}function bn(t){for(var e=[],n=0;n<t.length;n++){var r=t[n];Xo.test(r.name)||(r.name=r.name.replace(Go,""),e.push(r))}return e}function xn(t,e){t&&(Zo=Yo(e.staticKeys||""),Jo=e.isReservedTag||function(){return!1},_n(t),Cn(t))}function wn(t){return n("type,tag,attrsList,attrsMap,plain,parent,children,staticAttrs"+(t?","+t:""))}function _n(t){if(t["static"]=kn(t),1===t.type)for(var e=0,n=t.children.length;e<n;e++){var r=t.children[e];_n(r),r["static"]||(t["static"]=!1)}}function Cn(t){if(1===t.type&&(t.once||t["static"]))return void(t.staticRoot=!0);if(t.children)for(var e=0,n=t.children.length;e<n;e++)Cn(t.children[e])}function kn(t){return 2!==t.type&&(3===t.type||!(!t.pre&&(t["if"]||t["for"]||pr(t.tag)||!Jo(t.tag)||!t.plain&&!Object.keys(t).every(Zo))))}function Tn(t){var e="on:{";for(var n in t)e+='"'+n+'":'+An(t[n])+",";return e.slice(0,-1)+"}"}function An(t){if(t){if(Array.isArray(t))return"["+t.map(An).join(",")+"]";if(t.modifiers){var e="function($event){";for(var n in t.modifiers)e+=ta[n]||Sn(n);var r=Qo.test(t.value)?t.value+"($event)":t.value;return e+r+"}"}return Qo.test(t.value)?t.value:"function($event){"+t.value+"}"}return"function(){}"}function Sn(t){var e=parseInt(t,10)||Ko[t]||"_k("+JSON.stringify(t)+")";return Array.isArray(e)?"if("+e.map(function(t){return"$event.keyCode!=="+t}).join("&&")+")return;":"if($event.keyCode!=="+e+")return;"}function $n(t,e){Qe(t,"construct","_b(n1,"+e.value+")")}function En(t,e){var n=sa,r=sa=[];ua=e,na=e.warn||We,ra=Xe(e.modules,"transformCode"),ia=Xe(e.modules,"genData"),oa=e.directives||{},aa=e.isReservedTag||Cr;var i=t?jn(t):'_h("div")';return sa=n,{render:"with(this){return "+i+"}",staticRenderFns:r}}function jn(t){if(t.staticRoot&&!t.staticProcessed)return t.staticProcessed=!0,sa.push("with(this){return "+jn(t)+"}"),"_m("+(sa.length-1)+")";if(t["for"]&&!t.forProcessed)return Dn(t);if(t["if"]&&!t.ifProcessed)return On(t);if("template"!==t.tag||t.slotTarget){if("slot"===t.tag)return Rn(t);var e=void 0;if(t.component)e=In(t);else{var n=Mn(t),r=t.inlineTemplate?null:Fn(t,!t.ns&&!aa(t.tag));e="_h('"+t.tag+"'"+(n?","+n:"")+(r?","+r:"")+")"}for(var i=0;i<ra.length;i++)e=ra[i](t,e);return t.component&&t.keepAlive&&(e='_h("KeepAlive",{props:{child:'+e+"}})"),e}return Fn(t)||"void 0"}function On(t){var e=t["if"];return t.ifProcessed=!0,"("+e+")?"+jn(t)+":"+Nn(t)}function Nn(t){return t.elseBlock?jn(t.elseBlock):"void 0"}function Dn(t){var e=t["for"],n=t.alias,r=t.iterator1?","+t.iterator1:"",i=t.iterator2?","+t.iterator2:"";return t.forProcessed=!0,"("+e+")&&_l(("+e+"),"+("function("+n+r+i+"){")+("return "+jn(t))+"})"}function Mn(t){if(!t.plain){var e="{",n=Pn(t);n&&(e+=n+","),t.key&&(e+="key:"+t.key+","),t.ref&&(e+="ref:"+t.ref+","),t.refInFor&&(e+="refInFor:true,"),t.component&&(e+='tag:"'+t.tag+'",'),t.slotTarget&&(e+="slot:"+t.slotTarget+",");for(var r=0;r<ia.length;r++)e+=ia[r](t);if(t.attrsMap["v-show"]&&(e+="show:true,"),t.props&&(e+="props:{"+qn(t.props)+"},"),t.attrs&&(e+="attrs:{"+qn(t.attrs)+"},"),t.staticAttrs&&(e+="staticAttrs:{"+qn(t.staticAttrs)+"},"),t.hooks&&(e+="hook:{"+Hn(t.hooks)+"},"),t.events&&(e+=Tn(t.events)+","),t.inlineTemplate){var i=t.children[0];if((t.children.length>1||1!==i.type)&&na("Inline-template components must have exactly one child element."),1===i.type){var o=En(i,ua);e+="inlineTemplate:{render:function(){"+o.render+"},staticRenderFns:["+o.staticRenderFns.map(function(t){return"function(){"+t+"}"}).join(",")+"]}"}}return e.replace(/,$/,"")+"}"}}function Pn(t){var e=t.directives;if(e){var n="directives:[",r=!1,i=void 0,o=void 0,a=void 0,s=void 0;for(i=0,o=e.length;i<o;i++){a=e[i],s=!0;var u=oa[a.name]||ea[a.name];u&&(s=!!u(t,a,na)),s&&(r=!0,n+='{name:"'+a.name+'"'+(a.value?",value:("+a.value+"),expression:"+JSON.stringify(a.value):"")+(a.arg?',arg:"'+a.arg+'"':"")+(a.modifiers?",modifiers:"+JSON.stringify(a.modifiers):"")+"},")}return r?n.slice(0,-1)+"]":void 0}}function Fn(t,e){if(t.children.length){var n="["+t.children.map(Bn).join(",")+"]";return e?"function(){return "+n+"}":n}}function Bn(t){return 1===t.type?jn(t):Ln(t)}function Ln(t){return 2===t.type?t.expression:JSON.stringify(t.text)}function Rn(t){var e="$slots["+(t.slotName||'"default"')+"]",n=Fn(t);return n?"("+e+"||"+n+")":e}function In(t){var e=Fn(t,!0);return"_h("+t.component+","+Mn(t)+(e?","+e:"")+")"}function qn(t){for(var e="",n=0;n<t.length;n++){var r=t[n];e+='"'+r.name+'":'+r.value+","}return e.slice(0,-1)}function Hn(t){var e="";for(var n in t)e+='"'+n+'":function(n1,n2){'+t[n].join(";")+"},";return e.slice(0,-1)}function zn(t,e){var n=nn(t.trim(),e);xn(n,e);var r=En(n,e);return{ast:n,render:r.render,staticRenderFns:r.staticRenderFns}}function Vn(t){var e=[];return t&&Un(t,e),e}function Un(t,e){if(1===t.type){for(var n in t.attrsMap)if(Oo.test(n)){var r=t.attrsMap[n];r&&("v-for"===n?Wn(t,'v-for="'+r+'"',e):Gn(r,n+'="'+r+'"',e))}if(t.children)for(var i=0;i<t.children.length;i++)Un(t.children[i],e)}else 2===t.type&&Gn(t.expression,t.text,e)}function Wn(t,e,n){Gn(t["for"]||"",e,n),Xn(t.alias,"v-for alias",e,n),Xn(t.iterator1,"v-for iterator",e,n),Xn(t.iterator2,"v-for iterator",e,n)}function Xn(t,e,n,r){"string"!=typeof t||la.test(t)||r.push("- invalid "+e+' "'+t+'" in expression: '+n)}function Gn(t,e,n){try{new Function("return "+t)}catch(r){var i=t.replace(fa,"").match(ca);i?n.push("- avoid using JavaScript keyword as property name: "+('"'+i[0]+'" in expression '+e)):n.push("- invalid expression: "+e)}}function Zn(t,e){var n=e.warn||We,r=en(t,"class");if(r){var i=Ue(r,e.delimiters);i&&n('class="'+r+'": Interpolation inside attributes has been deprecated. Use v-bind or the colon shorthand instead.')}t.staticClass=JSON.stringify(r);var o=tn(t,"class",!1);o&&(t.classBinding=o)}function Jn(t){var e="";return t.staticClass&&(e+="staticClass:"+t.staticClass+","),t.classBinding&&(e+="class:"+t.classBinding+","),e}function Yn(t){var e=tn(t,"style",!1);e&&(t.styleBinding=e)}function Qn(t){return t.styleBinding?"style:("+t.styleBinding+"),":""}function Kn(t){var e=tn(t,"transition");'""'===e&&(e=!0),e&&(t.transition=e);var n=tn(t,"transition-mode");n&&(t.transitionMode=n)}function tr(t){return t.transition?"transition:"+t.transition+",":""}function er(t,e){return t.transitionMode?"_h('TransitionControl',{props:{mode:"+t.transitionMode+",child:"+e+"}})":e}function nr(t,e,n){ga=n;var r=e.value,i=e.modifiers;if("select"===t.tag)return ar(t,r);switch(t.attrsMap.type){case"checkbox":rr(t,r);break;case"radio":ir(t,r);break;default:return or(t,r,i)}}function rr(t,e){null!=t.attrsMap.checked&&ga("<"+t.tag+' v-model="'+e+"\" checked>:\ninline checked attributes will be ignored when using v-model. Declare initial values in the component's data option instead.");var n=tn(t,"value"),r=tn(t,"true-value")||"true",i=tn(t,"false-value")||"false";Ge(t,"checked","Array.isArray("+e+")"+("?("+e+").indexOf("+n+")>-1")+(":("+e+")===("+r+")")),Ke(t,"change","var $$a="+e+",$$el=$event.target,"+("$$c=$$el.checked?("+r+"):("+i+");")+"if(Array.isArray($$a)){"+("var $$v="+n+",")+"$$i=$$a.indexOf($$v);if($$c){$$i<0&&$$a.push($$v)}else{$$i>-1&&$$a.splice($$i,1)}"+("}else{"+e+"=$$c}"))}function ir(t,e){null!=t.attrsMap.checked&&ga("<"+t.tag+' v-model="'+e+"\" checked>:\ninline checked attributes will be ignored when using v-model. Declare initial values in the component's data option instead.");var n=tn(t,"value");Ge(t,"checked","("+e+")===("+n+")"),Ke(t,"change",e+"="+n)}function or(t,e,n){"input"===t.tag&&t.attrsMap.value&&ga("<"+t.tag+' v-model="'+e+'" value="'+t.attrsMap.value+"\">:\ninline value attributes will be ignored when using v-model. Declare initial values in the component's data option instead."),"textarea"===t.tag&&t.children.length&&ga('<textarea v-model="'+e+"\">:\ninline content inside <textarea> will be ignored when using v-model. Declare initial values in the component's data option instead.");var r=t.attrsMap.type,i=n||{},o=i.lazy,a=i.number,s=i.trim,u=o?"change":"input",c=!o&&"range"!==r,l="$event.target.value"+(s?".trim()":""),f=a||"number"===r?e+"=_n("+l+")":e+"="+l;if(c&&(f="if($event.target.composing)return;"+f),Ge(t,"value","_s("+e+")"),Ke(t,u,f),c)return!0}function ar(t,e){t.children.some(sr);var n=e+'=Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){return "_value" in o ? o._value : o.value})'+(null==t.attrsMap.multiple?"[0]":"");return Ke(t,"change",n),!0}function sr(t){if(1===t.type&&"option"===t.tag&&null!=t.attrsMap.selected){var e=t.parent&&1===t.parent.type&&t.parent.attrsMap["v-model"];return ga('<select v-model="'+e+"\">:\ninline selected attributes on <option> will be ignored when using v-model. Declare initial values in the component's data option instead."),!0}}function ur(t,e){e.value&&Ge(t,"textContent","_s("+e.value+")")}function cr(t,e){e.value&&Ge(t,"innerHTML","_s("+e.value+")")}function lr(t,e){return e=e?f(f({},ba),e):ba,zn(t,e)}function fr(t,e,n){var r=e&&e.warn||ui;try{new Function("return 1")}catch(i){i.toString().match(/unsafe-eval|CSP/)&&r("It seems you are using the standalone build of Vue.js in an environment with Content Security Policy that prohibits unsafe-eval. The template compiler cannot work in this environment. Consider relaxing the policy to allow unsafe-eval or pre-compiling your templates into render functions.")}var o=e&&e.delimiters?String(e.delimiters)+t:t;if(ya[o])return ya[o];var a={},s=lr(t,e);a.render=hr(s.render);var u=s.staticRenderFns.length;a.staticRenderFns=new Array(u);for(var c=0;c<u;c++)a.staticRenderFns[c]=hr(s.staticRenderFns[c]);return(a.render===v||a.staticRenderFns.some(function(t){return t===v}))&&r("failed to compile template:\n\n"+t+"\n\n"+Vn(s.ast).join("\n")+"\n\n",n),ya[o]=a}function hr(t){try{return new Function(t)}catch(e){return v}}function dr(t){if(t.outerHTML)return t.outerHTML;var e=document.createElement("div");return e.appendChild(t.cloneNode(!0)),e.innerHTML}var pr=n("slot,component,render,transition",!0),vr=Object.prototype.hasOwnProperty,gr=/-(\w)/g,mr=u(function(t){return t.replace(gr,function(t,e){return e?e.toUpperCase():""})}),yr=u(function(t){return t.charAt(0).toUpperCase()+t.slice(1)}),br=/([a-z\d])([A-Z])/g,xr=u(function(t){return t.replace(br,"$1-$2").toLowerCase()}),wr=Object.prototype.toString,_r="[object Object]",Cr=function(){return!1},kr={optionMergeStrategies:Object.create(null),silent:!1,devtools:!0,errorHandler:null,ignoredElements:null,keyCodes:Object.create(null),isReservedTag:Cr,isUnknownElement:Cr,getTagNamespace:v,mustUseProp:Cr,_assetTypes:["component","directive","transition","filter"],_lifecycleHooks:["beforeCreate","created","beforeMount","mounted","beforeUpdate","updated","beforeDestroy","destroyed","activated","deactivated"],_maxUpdateCount:100,_isServer:!1},Tr=/[^\w\.]/,Ar="__proto__"in{},Sr="undefined"!=typeof window&&"[object Object]"!==Object.prototype.toString.call(window),$r=Sr&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__,Er=Sr&&window.navigator.userAgent.toLowerCase(),jr=Er&&/(iphone|ipad|ipod|ios)/i.test(Er),Or=Er&&jr&&Er.match(/os ([\d_]+)/),Nr=Or&&Or[1].split("_"),Dr=Nr&&Number(Nr[0])>=9&&Number(Nr[1])>=3&&!window.indexedDB,Mr=function(){function t(){n=!1;var t=e.slice(0);e=[];for(var r=0;r<t.length;r++)t[r]()}var e=[],n=!1,r=void 0;if("undefined"==typeof MutationObserver||Dr){var i=Sr?window:"undefined"!=typeof o?o:{};r=i.setImmediate||setTimeout}else!function(){var e=1,n=new MutationObserver(t),i=document.createTextNode(String(e));n.observe(i,{characterData:!0}),r=function(){e=(e+1)%2,i.data=String(e)}}();return function(i,o){var a=o?function(){i.call(o)}:i;e.push(a),n||(n=!0,r(t,0))}}(),Pr=void 0;Pr="undefined"!=typeof Set&&/native code/.test(Set.toString())?Set:function(){function t(){this.set=Object.create(null)}return t.prototype.has=function(t){return void 0!==this.set[t]},t.prototype.add=function(t){this.set[t]=1},t.prototype.clear=function(){this.set=Object.create(null)},t}();var Fr=void 0,Br=void 0,Lr=void 0;!function(){var t=n("Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,require,__webpack_require__");Fr="undefined"!=typeof Proxy&&Proxy.toString().match(/native code/),Br={has:function e(n,r){var e=r in n,i=t(r);return e||i||ui('Trying to access non-existent property "'+r+'" while rendering. Make sure to declare reactive data properties in the data option.',n),!i}},Lr=function(t){Fr?t._renderProxy=new Proxy(t,Br):t._renderProxy=t}}();var Rr=0,Ir=function(){function t(){this.id=Rr++,this.subs=[]}return t.prototype.addSub=function(t){this.subs.push(t)},t.prototype.removeSub=function(t){r(this.subs,t)},t.prototype.depend=function(){t.target&&t.target.addDep(this)},t.prototype.notify=function(){for(var t=this.subs.slice(),e=0,n=t.length;e<n;e++)t[e].update()},t}();Ir.target=null;var qr=[],Hr=[],zr=[],Vr={},Ur={},Wr=!1,Xr=0,Gr=function(){function t(t,e,n){var r=arguments.length<=3||void 0===arguments[3]?{}:arguments[3];this.vm=t,t._watchers.push(this),this.deep=!!r.deep,this.user=!!r.user,this.lazy=!!r.lazy,this.sync=!!r.sync,this.expression=e.toString(),this.cb=n,this.id=++Xr,this.active=!0,this.dirty=this.lazy,this.deps=[],this.newDeps=[],this.depIds=new Pr,this.newDepIds=new Pr,"function"==typeof e?this.getter=e:(this.getter=b(e),this.getter||(this.getter=function(){},ui("Failed watching path: "+e+"Watcher only accepts simple dot-delimited paths. For full control, use a function instead.",t))),this.value=this.lazy?void 0:this.get()}return t.prototype.get=function(){x(this);var t=void 0;try{t=this.getter.call(this.vm,this.vm)}catch(e){if(this.user?ui("Error when evaluating watcher with getter: "+this.expression,this.vm):ui("Error during component render",this.vm),!kr.errorHandler)throw e;kr.errorHandler.call(null,e,this.vm),t=this.value}return this.deep&&S(t),w(),this.cleanupDeps(),t},t.prototype.addDep=function(t){var e=t.id;this.newDepIds.has(e)||(this.newDepIds.add(e),this.newDeps.push(t),this.depIds.has(e)||t.addSub(this))},t.prototype.cleanupDeps=function(){for(var t=this.deps.length;t--;){var e=this.deps[t];this.newDepIds.has(e.id)||e.removeSub(this)}var n=this.depIds;this.depIds=this.newDepIds,this.newDepIds=n,this.newDepIds.clear(),n=this.deps,this.deps=this.newDeps,this.newDeps=n,this.newDeps.length=0},t.prototype.update=function(){this.lazy?this.dirty=!0:this.sync?this.run():A(this)},t.prototype.run=function(){if(this.active){var t=this.get();if(t!==this.value||h(t)||this.deep){var e=this.value;if(this.value=t,this.user)try{this.cb.call(this.vm,t,e)}catch(n){if(ui('Error in watcher "'+this.expression+'"',this.vm),!kr.errorHandler)throw n;kr.errorHandler.call(null,n,this.vm)}else this.cb.call(this.vm,t,e)}}},t.prototype.evaluate=function(){this.value=this.get(),this.dirty=!1},t.prototype.depend=function(){for(var t=this.deps.length;t--;)this.deps[t].depend()},t.prototype.teardown=function(){if(this.active){this.vm._isBeingDestroyed||this.vm._vForRemoving||r(this.vm._watchers,this);for(var t=this.deps.length;t--;)this.deps[t].removeSub(this);this.active=!1}},t}(),Zr=new Pr,Jr=Array.prototype,Yr=Object.create(Jr);["push","pop","shift","unshift","splice","sort","reverse"].forEach(function(t){var e=Jr[t];y(Yr,t,function(){for(var n=arguments.length,r=new Array(n);n--;)r[n]=arguments[n];var i=e.apply(this,r),o=this.__ob__,a=void 0;switch(t){case"push":a=r;break;case"unshift":a=r;break;case"splice":a=r.slice(2)}return a&&o.observeArray(a),o.dep.notify(),i})});var Qr=Object.getOwnPropertyNames(Yr),Kr={shouldConvert:!0,isSettingProps:!1},ti=function(){function t(t){if(this.value=t,this.dep=new Ir,this.vmCount=0,y(t,"__ob__",this),Array.isArray(t)){var e=Ar?$:E;e(t,Yr,Qr),this.observeArray(t)}else this.walk(t)}return t.prototype.walk=function(t){var e=this.value;for(var n in t)O(e,n,t[n])},t.prototype.observeArray=function(t){for(var e=0,n=t.length;e<n;e++)j(t[e])},t}(),ei={enumerable:!0,configurable:!0,get:v,set:v},ni=function(t,e,n,r,i,o,a,s,u){this.tag=t,this.data=e,this.children=n,this.text=r,this.elm=i,this.ns=o,this.context=a,this.host=s,this.key=e&&e.key,this.componentOptions=u,this.child=void 0,this.parent=void 0,this.raw=!1;var c=e&&e.hook&&e.hook.construct;c&&c(this)},ri=function(){return new ni((void 0),(void 0),(void 0),"")},ii={init:tt,prepatch:et,insert:nt,destroy:rt},oi=Object.keys(ii),ai={activeInstance:null},si=0;gt(mt),H(mt),vt(mt),J(mt),ht(mt);var ui=void 0,ci=void 0;!function(){var t="undefined"!=typeof console;ui=function(e,n){t&&!kr.silent&&console.error("[Vue warn]: "+e+(n?ci(n):""))},ci=function(t){if(t.$root===t)return" (found in root instance)";var e=t._isVue?t.$options.name||t.$options._componentTag:t.name;return e?" (found in component: <"+xr(e)+">)":' (found in anonymous component. Use the "name" option for better debugging messages)'}}();var li=kr.optionMergeStrategies;li.el=li.propsData=function(t,e,n,r){return n||ui('option "'+r+'" can only be used during instance creation with the `new` keyword.'),fi(t,e)},li.name=function(t,e,n){return n&&ui('options "name" can only be used as a component definition option, not during instance creation.'),fi(t,e)},li.data=function(t,e,n){return n?t||e?function(){var r="function"==typeof e?e.call(n):e,i="function"==typeof t?t.call(n):void 0;return r?yt(r,i):i}:void 0:e?"function"!=typeof e?(ui('The "data" option should be a function that returns a per-instance value in component definitions.',n),t):t?function(){return yt(e.call(this),t.call(this))}:e:t},kr._lifecycleHooks.forEach(function(t){li[t]=bt}),kr._assetTypes.forEach(function(t){li[t+"s"]=xt}),li.watch=function(t,e){if(!e)return t;if(!t)return e;var n={};f(n,t);for(var r in e){var i=n[r],o=e[r];i&&!Array.isArray(i)&&(i=[i]),n[r]=i?i.concat(o):[o]}return n},li.props=li.methods=li.computed=function(t,e){if(!e)return t;if(!t)return e;var n=Object.create(null);return f(n,t),f(n,e),n};var fi=function(t,e){return void 0===e?t:e},hi=Object.freeze({defineReactive:O,_toString:t,toNumber:e,makeMap:n,isBuiltInTag:pr,remove:r,hasOwn:i,isPrimitive:s,cached:u,camelize:mr,capitalize:yr,hyphenate:xr,bind:c,toArray:l,extend:f,isObject:h,isPlainObject:d,toObject:p,noop:v,no:Cr,genStaticKeys:g,isReserved:m,def:y,parsePath:b,hasProto:Ar,inBrowser:Sr,devtools:$r,UA:Er,nextTick:Mr,get _Set(){return Pr},mergeOptions:kt,resolveAsset:Tt,get warn(){return ui},validateProp:At}),di={name:"keep-alive",_abstract:!0,props:{child:Object},created:function(){this.cache=Object.create(null)},render:function(){var t=this.child,e=Mt(this.child),n=e.componentOptions.Ctor.cid;if(this.cache[n]){var r=e.child=this.cache[n].child;e.elm=this.$el=r.$el}else this.cache[n]=e;return e.data.keepAlive=!0,t},destroyed:function(){for(var t in this.cache){var e=this.cache[t];Y(e.child,"deactivated"),e.child.$destroy()}}},pi={KeepAlive:di};Pt(mt),Object.defineProperty(mt.prototype,"$isServer",{get:function(){return kr._isServer}}),mt.version="2.0.0-alpha.8";var vi=n("value,selected,checked,muted"),gi=n("contenteditable,draggable,spellcheck"),mi=n("allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,translate,truespeed,typemustmatch,visible"),yi=(n("accept,accept-charset,accesskey,action,align,alt,async,autocomplete,autofocus,autoplay,autosave,bgcolor,border,buffered,challenge,charset,checked,cite,class,code,codebase,color,cols,colspan,content,http-equiv,name,contenteditable,contextmenu,controls,coords,data,datetime,default,defer,dir,dirname,disabled,download,draggable,dropzone,enctype,method,for,form,formaction,headers,<th>,height,hidden,high,href,hreflang,http-equiv,icon,id,ismap,itemprop,keytype,kind,label,lang,language,list,loop,low,manifest,max,maxlength,media,method,GET,POST,min,multiple,email,file,muted,name,novalidate,open,optimum,pattern,ping,placeholder,poster,preload,radiogroup,readonly,rel,required,reversed,rows,rowspan,sandbox,scope,scoped,seamless,selected,shape,size,type,text,password,sizes,span,spellcheck,src,srcdoc,srclang,srcset,start,step,style,summary,tabindex,target,title,type,usemap,value,width,wrap"),"http://www.w3.org/1999/xlink"),bi=function(t){return":"===t.charAt(5)&&"xlink"===t.slice(0,5)},xi=function(t){return bi(t)?t.slice(6,t.length):""},wi=function(t){return null==t||t===!1},_i={svg:"http://www.w3.org/2000/svg",math:"http://www.w3.org/1998/Math/MathML"},Ci=n("html,base,head,link,meta,style,title,address,article,footer,header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,div,dd,dl,dt,figcaption,figure,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,menuitem,summary,content,element,shadow,template"),ki=n("area,base,br,col,embed,frame,hr,img,input,isindex,keygen,link,meta,param,source,track,wbr",!0),Ti=n("colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr,source",!0),Ai=n("address,article,aside,base,blockquote,body,caption,col,colgroup,dd,details,dialog,div,dl,dt,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,head,header,hgroup,hr,html,legend,li,menuitem,meta,optgroup,option,param,rp,rt,source,style,summary,tbody,td,tfoot,th,thead,title,tr,track",!0),Si=n("svg,g,defs,symbol,use,image,text,circle,ellipse,line,path,polygon,polyline,rect",!0),$i=Object.create(null),Ei=Sr&&window.navigator.userAgent.toLowerCase(),ji=Ei&&/msie|trident/.test(Ei),Oi=Ei&&Ei.indexOf("msie 9.0")>0,Ni=Ei&&Ei.indexOf("android")>0,Di=Object.freeze({createElement:Vt,createElementNS:Ut,createTextNode:Wt,insertBefore:Xt,removeChild:Gt,appendChild:Zt,parentNode:Jt,nextSibling:Yt,tagName:Qt,setTextContent:Kt,childNodes:te,setAttribute:ee}),Mi={},Pi=new ni("",Mi,[]),Fi=["create","update","postpatch","remove","destroy"],Bi={create:function(t,e){se(t,e,"bind")},update:function(t,e){se(t,e,"update")},postpatch:function(t,e){se(t,e,"postupdate")},destroy:function(t){se(t,t,"unbind")}},Li={create:function(t,e){ue(e)},update:function(t,e){t.data.ref!==e.data.ref&&(ue(t,!0),ue(e))},destroy:function(t){ue(t,!0)}},Ri=[Li,Bi],Ii={create:function(t,e){var n=e.data.staticAttrs;if(n)for(var r in n)le(e.elm,r,n[r]);ce(t,e)},update:ce},qi={create:fe,update:fe},Hi={create:he,update:he},zi={create:de,update:de},Vi=["Webkit","Moz","ms"],Ui=void 0,Wi=u(function(t){if(Ui=Ui||document.createElement("div"),t=mr(t),"filter"!==t&&t in Ui.style)return t;for(var e=t.charAt(0).toUpperCase()+t.slice(1),n=0;n<Vi.length;n++){var r=Vi[n]+e;if(r in Ui.style)return r}}),Xi={create:pe,update:pe},Gi=Sr&&!Oi,Zi="transition",Ji="animation",Yi="transition",Qi="transitionend",Ki="animation",to="animationend";Gi&&(void 0===window.ontransitionend&&void 0!==window.onwebkittransitionend&&(Yi="WebkitTransition",Qi="webkitTransitionEnd"),void 0===window.onanimationend&&void 0!==window.onwebkitanimationend&&(Ki="WebkitAnimation",
+to="webkitAnimationEnd"));var eo=Sr&&window.requestAnimationFrame||setTimeout,no=u(function(t){return{enterClass:t+"-enter",leaveClass:t+"-leave",appearClass:t+"-enter",enterActiveClass:t+"-enter-active",leaveActiveClass:t+"-leave-active",appearActiveClass:t+"-enter-active"}}),ro=Gi?{create:function(t,e){je(e)||ye(e)},remove:function(t,e){je(t)?e():be(t,e)}}:{},io=[Ii,qi,Hi,zi,Xi,ro],oo=io.concat(Ri),ao=ae({nodeOps:Di,modules:oo}),so=/^input|select|textarea|vue-component-[0-9]+(-[0-9a-zA-Z_\-]*)?$/;Oi&&document.addEventListener("selectionchange",function(){var t=document.activeElement;t&&t.vmodel&&Fe(t,"input")});var uo={bind:function(t,e,n){so.test(n.tag)||ui("v-model is not supported on element type: <"+n.tag+">. If you are working with contenteditable, it's recommended to wrap a library dedicated for that purpose inside a custom component.",n.context),"select"===n.tag?Oe(t,e.value):(Ni||(t.addEventListener("compositionstart",Me),t.addEventListener("compositionend",Pe)),Oi&&(t.vmodel=!0))},postupdate:function(t,e,n){var r=e.value;if("select"===n.tag){Oe(t,r);var i=t.multiple?r.some(function(e){return Ne(e,t.options)}):Ne(r,t.options);i&&Fe(t,"change")}}},co={bind:function(t,e,n){var r=e.value,i=Be(n);r&&i&&i.appear&&!Oi&&ye(n),t.style.display=r?"":"none"},update:function(t,e,n){var r=e.value,i=Be(n);i&&!Oi?r?(ye(n),t.style.display=""):be(n,function(){t.style.display="none"}):t.style.display=r?"":"none"}},lo={model:uo,show:co},fo={name:"transition-control",_abstract:!0,props:{child:Object,mode:{validator:function(t){return!t||"out-in"===t||"in-out"===t||(ui('transition-mode must be either "out-in" or "in-out".'),!1)}}},render:function(){var t=this,e=this._vnode,n=this.child;if(e&&e.data&&(e.tag!==n.tag||e.key!==n.key)){if("out-in"===this.mode)return Le(e,{afterLeave:function(){t.$forceUpdate()}});"in-out"===this.mode&&!function(){var t=void 0,r=function(){t()};Le(n,{afterEnter:r,enterCancelled:r}),Le(e,{delayLeave:function(e){t=e}})}()}return n}},ho={TransitionControl:fo};mt.config.isUnknownElement=Ht,mt.config.isReservedTag=Ci,mt.config.getTagNamespace=qt,mt.config.mustUseProp=vi,f(mt.options.directives,lo),f(mt.options.components,ho),mt.prototype.__patch__=kr._isServer?v:ao,mt.prototype.$mount=function(t,e){return t=t&&!kr._isServer?zt(t):void 0,this._mount(t,e)},setTimeout(function(){kr.devtools&&($r?$r.emit("init",mt):Sr&&/Chrome\/\d+/.test(window.navigator.userAgent)&&console.log("Download the Vue Devtools for a better development experience:\nhttps://github.com/vuejs/vue-devtools"))},0);var po=document.createElement("div"),vo=/([^\s"'<>\/=]+)/,go=/=/,mo=[go],yo=[/"([^"]*)"+/.source,/'([^']*)'+/.source,/([^\s"'=<>`]+)/.source],bo="[a-zA-Z_][\\w\\-\\.]*",xo="((?:"+bo+"\\:)?"+bo+")",wo=new RegExp("^<"+xo),_o=/^\s*(\/?)>/,Co=new RegExp("^<\\/"+xo+"[^>]*>"),ko=/^<!DOCTYPE [^>]+>/i,To=!1;"x".replace(/x(.)?/g,function(t,e){To=""===e});var Ao=n("script,style",!0),So={},$o=/\{\{((?:.|\\n)+?)\}\}/g,Eo=/[-.*+?^${}()|[\]\/\\]/g,jo=u(function(t){var e=t[0].replace(Eo,"\\$&"),n=t[1].replace(Eo,"\\$&");return new RegExp(e+"((?:.|\\n)+?)"+n,"g")}),Oo=/^v-|^@|^:/,No=/(.*)\s+(?:in|of)\s+(.*)/,Do=/\(([^,]*),([^,]*)(?:,([^,]*))?\)/,Mo=/^:|^v-bind:/,Po=/^@|^v-on:/,Fo=/:(.*)$/,Bo=/\.[^\.]+/g,Lo=/[a-z\d][A-Z]/,Ro=u(Re),Io=void 0,qo=void 0,Ho=void 0,zo=void 0,Vo=void 0,Uo=void 0,Wo=void 0,Xo=/^xmlns:NS\d+/,Go=/^NS\d+:/,Zo=void 0,Jo=void 0,Yo=u(wn),Qo=/^[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*|\['.*?'\]|\[".*?"\]|\[\d+\]|\[[A-Za-z_$][\w$]*\])*$/,Ko={esc:27,tab:9,enter:13,space:32,up:38,left:37,right:39,down:40,"delete":[8,46]},ta={stop:"$event.stopPropagation();",prevent:"$event.preventDefault();",self:"if($event.target !== $event.currentTarget)return;"},ea={bind:$n,cloak:v},na=void 0,ra=void 0,ia=void 0,oa=void 0,aa=void 0,sa=void 0,ua=void 0,ca=new RegExp("\\b"+"do,if,for,let,new,try,var,case,else,with,await,break,catch,class,const,super,throw,while,yield,delete,export,import,return,switch,default,extends,finally,continue,debugger,function,arguments".split(",").join("\\b|\\b")+"\\b"),la=/[A-Za-z_$][\w$]*/,fa=/'(?:[^'\\]|\\.)*'|"(?:[^"\\]|\\.)*"|`(?:[^`\\]|\\.)*\$\{|\}(?:[^`\\]|\\.)*`|`(?:[^`\\]|\\.)*`/g,ha={staticKeys:["staticClass"],transformNode:Zn,genData:Jn},da={transformNode:Yn,genData:Qn},pa={transformNode:Kn,genData:tr,transformCode:er},va=[ha,da,pa],ga=void 0,ma={model:nr,text:ur,html:cr},ya=Object.create(null),ba={isIE:ji,expectHTML:!0,modules:va,staticKeys:g(va),directives:ma,isReservedTag:Ci,isUnaryTag:ki,mustUseProp:vi,getTagNamespace:qt},xa=u(function(t){var e=zt(t);return e&&e.innerHTML}),wa=mt.prototype.$mount;return mt.prototype.$mount=function(t,e){t=t&&zt(t);var n=this.$options;if(!n.render){var r=n.template;if(r)if("string"==typeof r)"#"===r.charAt(0)&&(r=xa(r));else{if(!r.nodeType)return ui("invalid template option:"+r,this),this;r=r.innerHTML}else t&&(r=dr(t));if(r){var i=fr(r,{delimiters:n.delimiters,warn:ui},this),o=i.render,a=i.staticRenderFns;n.render=o,n.staticRenderFns=a}}return wa.call(this,t,e)},mt.compile=fr,mt})}).call(e,function(){return this}())},function(t,e){"use strict";t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children=[],t.webpackPolyfill=1),t}},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(40),o=r(i);e["default"]={init:function(){new Vue(o["default"])}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(1),i=function(t,e,n,r){this.paper=t,this.shape=e,this.handlers=[],this.viewPort=n,this.viewBox=r,this.isResizing=!1,this.currentPosition={},this.HANDLER_SIZE=8,this.SHAPE_MIN_SIZE=20,this.states={},this.noop=function(){},this.init()};i.prototype={init:function(){this.showHandlers()},computeHandlerSize:function(){return this.HANDLER_SIZE*Math.min(this.viewBox[2],this.viewBox[3])/this.viewPort.width},showHandlers:function(){var t=this.shape.getBBox(),e=t.x-this.computeHandlerSize()/2,n=t.y-this.computeHandlerSize()/2,r=this.paper.rect(e,n,this.computeHandlerSize(),this.computeHandlerSize()).attr({fill:"red"});r.addClass("drawingHandler"),this.shape.addClass("drawingHandler");var i={position:"t_r",handler:r};this.handlers.push(i),this.shapesGroup=this.paper.g(this.shape,r),this.attachEvents()},updateShapePositions:function(t,e,n){var r=t.handler.getBBox(),i=this.shape.data("origBbox"),o=(r.x+this.computeHandlerSize()/2,r.y+this.computeHandlerSize()/2,e>0?i.width-e:i.width+Math.abs(e)),a=n>0?i.height-n:i.height+Math.abs(n),s=this.shape.data("origTransform")+(this.shape.data("origTransform")?"T":"t")+[e,n];this.shape.attr({transform:s,width:o,height:a})},dragEvents:{onStart:function(t,e,n,r){this.startPosition={x:r.clientX,y:r.clientY},this.isResizing=!0,this.currentPosition={},t.handler.data("origTransform",t.handler.transform().local),this.shape.data("origBbox",this.shape.getBBox()),this.shape.data("origBounding",this.shape.node.getBoundingClientRect()),this.shape.data("origTransform",this.shape.transform().local)},onMove:function(t,e,n,r,i,o){var a,s,u=t.handler.transform().diffMatrix.invert();u.e=u.f=0,a=u.x(e,n),s=u.y(e,n),this.currentPosition.x=o.clientX,this.currentPosition.y=o.clientY,this.checkBondaries(e,n)&&(t.handler.transform("t"+[a,s]+t.handler.data("origTransform")),this.updateShapePositions(t,a,s))},onStop:function(){this.isResizing=!1,this.startPosition={},this.currentPosition={}}},checkBondaries:function(t,e){var n=!0,r=this.shape.data("origBounding");this.shape.node.getBoundingClientRect();return r.width-t<=this.SHAPE_MIN_SIZE&&(n=!1),r.height-e<=this.SHAPE_MIN_SIZE&&(n=!1),n},destroy:function(){this.handlers.map(function(t){t.handler.remove()}),delete this},getZoomFactor:function(){return{x:this.viewPort.width/this.viewBox[2],y:this.viewPort.height/this.viewBox[3]}},attachEvents:function(){var t=this;this.handlers.map(function(e){e.handler.drag(t.dragEvents.onMove.bind(t,e),t.dragEvents.onStart.bind(t,e),t.dragEvents.onStop.bind(t,e))}),r.eventEmitter.on("cutout:clear",function(){t.destroy()}),this.shapesGroup.drag(function(e,n){if(!t.isResizing){var r=this.transform().diffMatrix.invert();r.e=r.f=0;var i=r.x(e,n),o=r.y(e,n),a=this.data("origTransform")+(this.data("origTransform")?"T":"t")+[i,o];this.transform(a)}},function(){this.data("origTransform",this.transform().local)},this.noop)}};e["default"]={enable_resizer:function(t,e,n,r){new i(t,e,n,r)}}},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(3),o=r(i),a=n(34),s=r(a),u=n(1),c=n(5);r(c);o["default"].plugin(function(t,e,n,r){var i=e.prototype;i.toBack=function(){this.prependTo(this.paper)},i.toFront=function(){this.appendTo(this.paper)}}),Element.prototype.getTransformedXY=function(t,e){var n=this.transform().globalMatrix;return{x:n.x(t,e),y:n.y(t,e)}};var l=null,f=null,h=[],d={X:100,Y:100},p={x:1,y:1},v={width:850,height:850},g=[],m=!1,y=null,b=null,x=!1,w=null,_="#ff00ff",C="red",k="orange",T="#FF0000",A=8,S=!1,$=!0,E=!1,j=!0,O="RECT",N=O,D="FREE",M=[O,D],P=null,F=function(){var t=0,e="item_";return function(n){return n="string"==typeof n?n:e,t+=1,n+t}}(),B=function(t){if(m)return void l.path(t).attr({stroke:"red",opacity:.6});var e=o["default"].path.getBBox(t);w=l.rect(e.x,e.y,e.width,e.height),w.attr({fill:k,stroke:C,opacity:.6}),b=w,x=!1,E=!0,s["default"].enable_resizer(l,b,v,g)},L=function(t){if(m)return void l.path(t).attr({stroke:"orange",fill:"orange",opacity:.5});var e=o["default"].parsePathString(t);e.map(function(t){"Z"!==t[0]?G(l,t[1],t[2],h):(E=!0,R(l,q))})},R=function(t,e){var n="M";if(!(h.length<=1)){n+=h[0].x+","+h[0].y;for(var r=0;r<h.length;r++)if(0!=r){var i=h[r],o="L"+i.x+","+i.y;n+=" "+o}n+=E?" Z":"",b&&b.remove(),b=t.path(n),b.attr({stroke:C,"vector-effect":"non-scaling-stroke","stroke-width":3,fill:"white",opacity:.1}),h.map(function(t){V();t.handler&&t.handler.toFront()}),"function"==typeof e&&E&&e(),!e&&E&&I()}},I=function(){b.attr({fill:k,strokeWidth:1,opacity:.6})},q=function(){j=!1,I()},H=function(t,e,n){t.isFirst&&h.length>2&&(E=!0)},z=function(t,e,n){var r=h.indexOf(t);return r!==-1&&(h[r].x=e,h[r].y=n,!0)},V=function(){g.length||(g=[0,0,parseInt(f.width()),parseInt(f.height())]);var t=A*Math.min(g[2],g[3])/850;return t},U=function(t,e,n,r,i){S=!0;var o,a,s=this.transform().diffMatrix.invert();s.e=s.f=0,o=s.x(t,e),a=s.y(t,e);var u=this.data("origTransform")+(this.data("origTransform")?"T":"t")+[o,a];this.attr({transform:u});var c=this.getBBox(),l=z(this.data("point"),c.x+V()/2,c.y+V()/2);l&&R(this.paper)},W=function(t,e){t.handler.click(H.bind(this,t,e)),t.handler.hover(function(){t.handler.attr({fill:"yellow"})},function(){var e=t.isFirst?T:"";t.handler.attr({fill:e})}),t.handler.drag(U,function(){this.data("origTransform",this.transform().local)},function(){return!S||(S=!1,void($=!1))})},X=function(t,e){var n,r=V(),i=e.x-r/2,o=e.y-r/2;return n=t.rect(i,o,r,r),n.addClass("drawingHandler"),e.handler=n,e.handler.data("point",e),0===h.length&&(e.isFirst=!0),W(e,t),e.handler.attr({fill:0===h.length?T:"",opacity:.9,stroke:_}),e},G=function(t,e,n,r){var i={x:e,y:n,id:F()};return E?void R(t,q):$?(i=X(t,i),r.push(i),void R(t)):($=!0,!1)},Z=function(t){if(m)return!1;var e={},n={};t.mousedown(function(t){N===D||E||(e.x=t.offsetX,e.y=t.offsetY,x=!0)}),t.mousemove(function(r){if(N!==D&&x){var i,o;n.x=r.offsetX,n.y=r.offsetY,w&&w.remove();var a=Math.abs(n.x-e.x),s=Math.abs(e.y-n.y);n.y>e.y&&n.x>e.x&&(i=e.x,o=e.y),n.y<e.y&&n.x>e.x&&(i=n.x-a,o=n.y),n.y<e.y&&n.x<e.x&&(i=n.x,o=n.y),n.y>e.y&&n.x<e.x&&(i=n.x,o=n.y-s),i&&o&&(w=t.rect(i,o,a,s),w.attr({fill:k,stroke:C,opacity:.6}))}}),t.mouseup(function(){return!(N===D||E||!w)&&(b=w,s["default"].enable_resizer(t,w,v,g),x=!1,void(E=!0))})},J=function(t){m||t.click(function(e){return N===O||(!j||void G(t,e.offsetX,e.offsetY,h))})},Y=function(){u.eventEmitter.on("zoomChanged",function(t){p=t.zoomFactor,g=t.currentViewBox;var e=Q.getPath();Q.clear(),Q.setPath(e)})},Q={getPaper:function(){return l},setPath:function(t){var e=t.split(";");M.indexOf(e[1])===-1&&(e[1]="FREE"),this.setDrawingMode(e[1]);var n=e[0];if(n.length){var r=f.attr("width")/d.X,i=f.attr("height")/d.Y;(isNaN(r)||isNaN(i))&&new Error("Ratio should be a number.");var a=o["default"].matrix(r,0,0,i,0,0),s=o["default"].path.map(n,a).toString();s.search(/[z|Z]/gi)===-1&&(s+="Z"),e.length>=2&&(e[1]===O&&B(s),e[1]===D&&L(s))}},setDrawingMode:function(t){M.indexOf(t)!==-1&&(N=t),"function"==typeof P&&P(N),this.clear()},clear:function(){h.map(function(t){t.handler&&t.handler.remove()}),b&&b.remove(),u.eventEmitter.emit("cutout:clear"),h=[],y=null,b=null,S=!1,$=!0,E=!1,j=!0},getShapeBBox:function(){var t=this.getPath();return o["default"].path.getBBox(t)},getShape:function(){return this.getPath()},getPath:function(){var t="";if(b)if(N===O){var e=b.getBBox(),n=b.transform();if(n.global.length){var r=b.node.getAttribute("x"),i=b.node.getAttribute("y"),a=n.totalMatrix,s=l.rect(a.x(r,i),a.y(r,i),e.width,e.height);u=s.getBBox().path,s.remove()}else var u=b.getBBox().path;t=o["default"].path.toAbsolute(u).toString()}else t=b.attr("d");var c=d.X/f.attr("width"),h=d.Y/f.attr("height");if((isNaN(c)||isNaN(h))&&new Error("ratio should be a number."),!t.length)return t=N===O?";RECT":";FREE";var p=o["default"].matrix(c,0,0,h,0,0);t=o["default"].path.map(t,p).toString();var v=N===O?";RECT":";FREE";return t.search(/[z|Z]/gi)===-1&&(t+=" Z"),t+=v}};e["default"]={init:function(t){f=jQuery(t.wrapperId).find(".main-image").eq(0);var e=jQuery(t.wrapperId).find(".cut-canvas").eq(0),n=jQuery(t.wrapperId).find(".image-path").eq(0);if("function"==typeof t.onDrawingModeChange&&(P=t.onDrawingModeChange),!f.length)throw new Error("The main image Can't be found ...");if(!e.length){var e=jQuery('<svg version="1.1"></svg>').addClass("cut-canvas");jQuery(t.wrapperId).append(e),e.append(f)}if(e.css({marginLeft:"auto",marginRight:"auto",width:v.width,height:v.height}),"boolean"==typeof t.readOnly&&t.readOnly===!0&&(m=!0),l=new o["default"](e.get(0)),n.length){jQuery(e).append(n);var r=n.attr("d");Q.setPath(r),n.remove()}return Y(),J(l),Z(l),Q}}},function(t,e,n){e=t.exports=n(12)(),e.push([t.id,"Typeahead[data-v-3]{position:relative}.selected-tags[data-v-3]{border:1px solid red;width:200px!important}.selected-tags select[data-v-3]{display:inline-block}.Typeahead__input[data-v-3]{width:100%;font-size:14px;color:#2c3e50;line-height:1.42857143;box-shadow:inset 0 1px 4px rgba(0,0,0,.4);-webkit-transition:border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;font-weight:300;padding:12px 26px;border:none;border-radius:22px;letter-spacing:1px;box-sizing:border-box}.Typeahead__input[data-v-3]:focus{border-color:#4fc08d;outline:0;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px #4fc08d}.tag-item[data-v-3]{border:1px solid red}.fa-times[data-v-3]{cursor:pointer}ul[data-v-3]{padding:0;margin-top:8px;min-width:100%;background-color:#fff;list-style:none;border-radius:4px;box-shadow:0 0 10px rgba(0,0,0,.25);z-index:1000}li[data-v-3]{padding:10px 16px;border-bottom:1px solid #ccc;cursor:pointer}li[data-v-3]:first-child{border-radius:4px 4px 0 0}li[data-v-3]:last-child{border-radius:0 0 4px 4px;border-bottom:0}span[data-v-3]{display:block;color:#2c3e50}.active[data-v-3]{background-color:#3aa373}.active span[data-v-3]{color:#fff}.name[data-v-3]{font-weight:700;font-size:18px}.screen-name[data-v-3]{font-style:italic}",""])},function(t,e,n){(function(e){t.exports=e.$=n(4)}).call(e,function(){return this}())},function(t,e,n){(function(e){t.exports=e.Vue=n(31)}).call(e,function(){return this}())},function(t,e,n){(function(e){t.exports=e.jQuery=n(4)}).call(e,function(){return this}())},function(t,e,n){var r,i;r=n(7),i=r||{},i.__esModule&&(i=i["default"]),"function"==typeof i&&(i=i.options),t.exports=r||i},function(t,e,n){var r,i;r=n(8),i=r||{},i.__esModule&&(i=i["default"]),"function"==typeof i&&(i=i.options),t.exports=r||i},function(t,e,n){var r,i;r=n(9);var o=n(45);i=r||{},i.__esModule&&(i=i["default"]),"function"==typeof i&&(i=i.options),i.render=o.render,i.staticRenderFns=o.staticRenderFns,t.exports=r||i},function(module,exports){module.exports={render:function(){with(this)return _h("div",{staticClass:"zoomview-wrapper"},[_m(0)," ",_h("svg",{ref:"root-svg"},[_h("image",{attrs:{"xlink:href":imageUrl,width:imageWidth,height:imageHeight},staticAttrs:{id:"small-image",x:"0",y:"0","xmlns:xlink":"http://www.w3.org/1999/xlink"}})," ",_h("rect",{directives:[{name:"show",value:showHandler,expression:"showHandler"}],ref:"handler",show:!0,staticAttrs:{id:"zoom-handler",x:"0",y:"0",style:"fill:black; opacity:0.4"}})])," ",_h("ul",{staticClass:"form-drawing-wrapper zoom-action-list list-inline"},[_h("li",{staticClass:"small showPointer",on:{click:incraseDrawingZoom}},[_m(1)])," ",_h("li",{staticClass:"small showPointer",on:{click:resetDrawingZoom}},[_m(2)])," ",_h("li",{staticClass:"small showPointer",on:{click:decreaseDrawingZoom}},[_m(3)])])])},staticRenderFns:[function(){with(this)return _h("p",{staticClass:"form-drawing pullright"},[_h("strong",["Zoom"])])},function(){with(this)return _h("i",{staticClass:"fa fa-search-plus"})},function(){with(this)return _h("i",{staticClass:"fa fa-square"})},function(){with(this)return _h("i",{staticClass:"fa fa-search-minus"})}]}},function(module,exports){module.exports={render:function(){with(this)return _h("div",[_h("taglist",{ref:"taglist"})," "," ",_h("input",{directives:[{name:"show",value:!readOnly,expression:"!readOnly"},{name:"model",value:query,expression:"query"}],show:!0,props:{value:_s(query)},staticAttrs:{type:"text",placeholder:"...",autocomplete:"off"},on:{keyup:[function(t){8===t.keyCode&&checkQuery(t)},update],keydown:[function(t){40===t.keyCode&&down(t)},function(t){38===t.keyCode&&up(t)},function(t){13===t.keyCode&&hit(t)},function(t){27===t.keyCode&&reset(t)}],input:function(t){t.target.composing||(query=t.target.value)}}})," ",_h("a",{directives:[{name:"show",value:showAddButton,expression:"showAddButton"}],show:!0,on:{click:addTag}},[_m(0)," Créer ce tag"])," "," ",_h("ul",{directives:[{name:"show",value:hasItems||!readOnly,expression:"hasItems || !readOnly"}],show:!0},[items&&_l(items,function(t,e){return _h("li",{"class":activeClass(e),on:{mousedown:hit,mousemove:function(t){setActive(e)}}},[_h("span",{props:{textContent:_s(t.tag_label)}})])})])," ",_h("input",{directives:[{name:"model",value:selectedTags,expression:"selectedTags"}],props:{value:_s(selectedTags)},staticAttrs:{name:"tags",type:"hidden"},on:{input:function(t){t.target.composing||(selectedTags=t.target.value)}}})])},staticRenderFns:[function(){with(this)return _h("i",{staticClass:"fa fa-plus"})}]}},function(module,exports){module.exports={render:function(){with(this)return _h("div",[_h("ul",{directives:[{name:"show",value:!readOnly,expression:"!readOnly"}],staticClass:"tags-wrapper list-unstyled",show:!0},[tags&&_l(tags,function(t,e){return _h("li",{ref:t.id,refInFor:!0,staticClass:"tag-item"},[_m(0)," ",_h("strong",[_h("span",{props:{textContent:_s(t.tag_label)}})]),"\n\n\t\t\tPrécision: \t",_h("select",{on:{change:function(e){updateAccuracy(e,t)}}},[[1,2,3,4,5]&&_l([1,2,3,4,5],function(e,n){return _h("option",{props:{selected:t.accuracy==e,value:e}},[_s(e)])})]),"\n\n\t\t\tPertinence: ",_h("select",{on:{change:function(e){updatePertinence(e,t)}}},[[1,2,3,4,5]&&_l([1,2,3,4,5],function(e,n){return _h("option",{props:{selected:t.relevancy==e,value:e}},[_s(e)])})])," ",_h("a",{on:{click:function(e){removeTag(t)}}},[_m(1)])])})])," ",_h("ul",{directives:[{name:"show",value:readOnly,expression:"readOnly"}],staticClass:"list-inline",show:!0},[tags&&_l(tags,function(t,e){return _h("li",[_m(2)," ",_h("span",{staticClass:"label label-info"},[_s(t.tag_label)]),"\n\t\t\t | précision ",_h("span",{staticClass:"badge"},[_s(t.accuracy)]),"\n\t\t\t | pertinence ",_h("span",{staticClass:"badge"},[_s(t.relevancy)])])})])])},staticRenderFns:[function(){with(this)return _h("i",{staticClass:"fa fa-tag"})},function(){with(this)return _h("i",{staticClass:"fa fa-trash"})},function(){with(this)return _h("i",{staticClass:"fa fa-tag"})}]}},function(t,e,n){function r(t,e){for(var n=0;n<t.length;n++){var r=t[n],i=f[r.id];if(i){i.refs++;for(var o=0;o<i.parts.length;o++)i.parts[o](r.parts[o]);for(;o<r.parts.length;o++)i.parts.push(u(r.parts[o],e))}else{for(var a=[],o=0;o<r.parts.length;o++)a.push(u(r.parts[o],e));f[r.id]={id:r.id,refs:1,parts:a}}}}function i(t){for(var e=[],n={},r=0;r<t.length;r++){var i=t[r],o=i[0],a=i[1],s=i[2],u=i[3],c={css:a,media:s,sourceMap:u};n[o]?n[o].parts.push(c):e.push(n[o]={id:o,parts:[c]})}return e}function o(t,e){var n=p(),r=m[m.length-1];if("top"===t.insertAt)r?r.nextSibling?n.insertBefore(e,r.nextSibling):n.appendChild(e):n.insertBefore(e,n.firstChild),m.push(e);else{if("bottom"!==t.insertAt)throw new Error("Invalid value for parameter 'insertAt'. Must be 'top' or 'bottom'.");n.appendChild(e)}}function a(t){t.parentNode.removeChild(t);var e=m.indexOf(t);e>=0&&m.splice(e,1)}function s(t){var e=document.createElement("style");return e.type="text/css",o(t,e),e}function u(t,e){var n,r,i;if(e.singleton){var o=g++;n=v||(v=s(e)),r=c.bind(null,n,o,!1),i=c.bind(null,n,o,!0)}else n=s(e),r=l.bind(null,n),i=function(){a(n)};return r(t),function(e){if(e){if(e.css===t.css&&e.media===t.media&&e.sourceMap===t.sourceMap)return;r(t=e)}else i()}}function c(t,e,n,r){var i=n?"":r.css;if(t.styleSheet)t.styleSheet.cssText=y(e,i);else{var o=document.createTextNode(i),a=t.childNodes;a[e]&&t.removeChild(a[e]),a.length?t.insertBefore(o,a[e]):t.appendChild(o)}}function l(t,e){var n=e.css,r=e.media,i=e.sourceMap;if(r&&t.setAttribute("media",r),i&&(n+="\n/*# sourceURL="+i.sources[0]+" */",n+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(i))))+" */"),t.styleSheet)t.styleSheet.cssText=n;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(n))}}var f={},h=function(t){var e;return function(){return"undefined"==typeof e&&(e=t.apply(this,arguments)),e}},d=h(function(){return/msie [6-9]\b/.test(window.navigator.userAgent.toLowerCase())}),p=h(function(){return document.head||document.getElementsByTagName("head")[0]}),v=null,g=0,m=[];t.exports=function(t,e){e=e||{},"undefined"==typeof e.singleton&&(e.singleton=d()),"undefined"==typeof e.insertAt&&(e.insertAt="bottom");var n=i(t);return r(n,e),function(t){for(var o=[],a=0;a<n.length;a++){var s=n[a],u=f[s.id];u.refs--,o.push(u)}if(t){var c=i(t);r(c,e)}for(var a=0;a<o.length;a++){var u=o[a];if(0===u.refs){for(var l=0;l<u.parts.length;l++)u.parts[l]();delete f[u.id]}}}};var y=function(){var t=[];return function(e,n){return t[e]=n,t.filter(Boolean).join("\n")}}()},function(t,e,n){var r=n(36);"string"==typeof r&&(r=[[t.id,r,""]]);n(46)(r,{});r.locals&&(t.exports=r.locals)}]);
//# sourceMappingURL=build.js.map
\ No newline at end of file
--- a/src_js/iconolab-bundle/dist/build.js.map Mon Aug 22 12:46:43 2016 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-{"version":3,"sources":["webpack:///build.js","webpack:///webpack/bootstrap a880aadc8beb018d0b8b","webpack:///./src/main.js","webpack:///./src/components/utils/index.js","webpack:///./src/components/typeahead/Typeahead.vue","webpack:///./~/snapsvg/dist/snap.svg.js","webpack:///./~/jquery/dist/jquery.js","webpack:///./src/components/cutout/snapsvg-zoom.js","webpack:///./src/components/zoomview/Zoomview.vue","webpack:///Cutout.vue","webpack:///MergeTool.vue","webpack:///Taglist.vue","webpack:///Typeahead.vue","webpack:///Zoomview.vue","webpack:///./~/css-loader/lib/css-base.js","webpack:///./~/d/index.js","webpack:///./~/es5-ext/object/assign/index.js","webpack:///./~/es5-ext/object/assign/is-implemented.js","webpack:///./~/es5-ext/object/assign/shim.js","webpack:///./~/es5-ext/object/is-callable.js","webpack:///./~/es5-ext/object/keys/index.js","webpack:///./~/es5-ext/object/keys/is-implemented.js","webpack:///./~/es5-ext/object/keys/shim.js","webpack:///./~/es5-ext/object/normalize-options.js","webpack:///./~/es5-ext/object/valid-callable.js","webpack:///./~/es5-ext/object/valid-value.js","webpack:///./~/es5-ext/string/#/contains/index.js","webpack:///./~/es5-ext/string/#/contains/is-implemented.js","webpack:///./~/es5-ext/string/#/contains/shim.js","webpack:///./~/event-emitter/index.js","webpack:///./~/vue-resource/dist/vue-resource.common.js","webpack:///./~/vue-typeahead/dist/vue-typeahead.js","webpack:///./~/vue-typeahead/~/vue/dist/vue.common.js","webpack:///./~/vue/dist/vue.js","webpack:///(webpack)/buildin/module.js","webpack:///./src/components/cutout/index.js","webpack:///./src/components/cutout/shape-resizer.js","webpack:///./src/components/cutout/svgboard.js","webpack:///./src/components/typeahead/style.css","webpack:///./~/jquery/dist/jquery.js?fcf6","webpack:///./~/vue/dist/vue.js?1361","webpack:///./~/jquery/dist/jquery.js?5451","webpack:///./src/components/cutout/Cutout.vue","webpack:///./src/components/mergetool/MergeTool.vue","webpack:///./src/components/taglist/Taglist.vue","webpack:///./src/components/typeahead/template.html","webpack:///./src/components/zoomview/template.html","webpack:///./src/components/taglist/template.html","webpack:///./~/vue-style-loader/addStyles.js","webpack:///./src/components/typeahead/style.css?63d8"],"names":["modules","__webpack_require__","moduleId","installedModules","exports","module","id","loaded","call","m","c","p","_interopRequireDefault","obj","__esModule","default","_vueResource","_Typeahead","_Typeahead2","_cutout","_cutout2","_Zoomview","_Zoomview2","_MergeTool","_MergeTool2","iconolab","Cutout","VueComponents","Typeahead","MergeTool","Zoomview","window","Object","defineProperty","value","eventEmitter","generateId","undefined","_eventEmitter","_eventEmitter2","cpt","defautPrefix","prefix","__vue_exports__","__vue_options__","__vue_template__","options","render","staticRenderFns","_scopeId","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_LOCAL_MODULE_0__","__WEBPACK_AMD_DEFINE_RESULT__","_typeof","Symbol","iterator","constructor","glob","current_event","stop","version","has","separator","comaseparator","wildcard","numsort","a","b","events","n","firstDefined","i","ii","this","length","lastDefined","eve","name","scope","String","l","oldstop","args","Array","prototype","slice","arguments","listeners","z","indexed","queue","out","ce","push","zIndex","sort","apply","_events","item","items","k","j","jj","nes","names","split","e","es","concat","f","on","exist","hasOwnProperty","event","attrs","nt","subname","RegExp","test","nts","off","unbind","key","splice","cur","funcs","once","f2","toString","factory","mina","animations","requestAnimFrame","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","callback","setTimeout","isArray","idgen","idprefix","Date","ID","timer","now","sta","val","s","ds","dur","B","speed","spd","duration","stopit","update","pause","pdif","get","resume","res","start","end","easing","set","frame","len","A","anim","linear","status","time","getById","easeout","Math","pow","easein","easeinout","q","Q","sqrt","x","X","abs","y","Y","t","backin","backout","elastic","sin","PI","bounce","Snap","root","w","h","nodeType","wrap","is","Element","doc","querySelector","Paper","$","el","attr","createTextNode","text","createComment","substring","getAttributeNS","xlink","xmlns","getAttribute","nodeValue","Str","setAttributeNS","setAttribute","removeAttribute","createElementNS","o","type","toLowerCase","isFinite","objectToString","clone","repush","array","cacher","postprocessor","newf","arg","join","cache","count","shift","angle","x1","y1","x2","y2","x3","y3","math","atan2","rad","deg","svgTransform2string","tstr","replace","all","params","tan","charAt","transform2matrix","bbox","tdata","parseTransformString","Matrix","bb","tlen","command","absolute","inver","invert","translate","rotate","width","height","scale","add","getSomeDefs","node","ownerSVGElement","parentNode","select","pdefs","defs","make","getSomeSVG","unit2px","getW","E","mgr","getBBox","getH","nam","svg","class","fill","appendChild","removeChild","add2group","list","forEach","children","childNodes","snap","hub","paper","tagName","nodeName","anims","_","transform","g","mask","pattern","symbol","method","Fragment","frag","parent","desc","proto","ownerDocument","getElementsByTagName","body","dom","contentDocument","jsonFiller","win","document","toFloat","parseFloat","toInt","parseInt","mmax","max","mmin","min","round","colourRegExp","commaSpaces","hsrg","hs","rg","pathCommand","tCommand","pathValues","url","format","tokenRegex","objNotationRegex","replacer","quote","quotedName","isFunc","str","cos","asin","num","acos","atan","len2","closestPoint","path","distance2","dx","dy","best","bestLength","scan","scanDistance","pathNode","pathLength","getTotalLength","precision","pathSegList","numberOfItems","bestDistance","Infinity","scanLength","getPointAtLength","before","after","beforeLength","afterLength","beforeDistance","afterDistance","distance","snapTo","values","tolerance","rem","getRGB","colour","indexOf","r","hex","error","rgbtoString","_toHex","red","green","blue","opacity","rgb","match","hsb2rgb","hsl2rgb","hsb","hsl","toFixed","color","style","defaultView","getComputedStyle","getPropertyValue","hsbtoString","hsltoString","prepareRGB","string","clr","packageRGB","rgb2hsl","rgb2hsb","v","R","G","C","H","S","V","L","M","parsePathString","pathString","pth","arr","paramCounts","u","data","TString","rgTransform","_unit2px","contains","compareDocumentPosition","adown","documentElement","bup","query","selectAll","nodelist","querySelectorAll","setInterval","attributes","json","att","parse","createDocumentFragment","full","div","createElement","innerHTML","firstChild","fragment","ch","toJSON","lastIndexOf","css","letter","cssAttr","alignment-baseline","baseline-shift","clip","clip-path","clip-rule","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cursor","direction","display","dominant-baseline","enable-background","fill-opacity","fill-rule","filter","flood-color","flood-opacity","font","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","glyph-orientation-horizontal","glyph-orientation-vertical","image-rendering","kerning","letter-spacing","lighting-color","marker","marker-end","marker-mid","marker-start","overflow","pointer-events","shape-rendering","stop-color","stop-opacity","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","text-anchor","text-decoration","text-rendering","unicode-bidi","visibility","word-spacing","writing-mode","toUpperCase","ajax","postData","req","XMLHttpRequest","pd","encodeURIComponent","open","setRequestHeader","onreadystatechange","readyState","send","load","responseText","getOffset","elem","box","getBoundingClientRect","docElem","clientTop","clientLeft","top","pageYOffset","scrollTop","left","pageXOffset","scrollLeft","getElementByPoint","target","canvas","elementFromPoint","opera","so","sr","createSVGRect","hits","getIntersectionList","plugin","extractTransform","doReturn","matrix","fixids","urltest","it","uses","URL","linktest","els","ids","oldid","old","fs","from","to","chld","elproto","isWithoutTransform","removed","localMatrix","original","href","getElementById","pathfinder","deflt","bboxwt","realPath","map","propString","papa","global","getCTM","local","ms","localString","toTransformString","globalMatrix","totalMatrix","diffMatrix","total","gradientTransform","patternTransform","append","appendTo","prepend","first","insertBefore","prependTo","nextSibling","insertAfter","remove","asPX","use","xlink:href","cloneNode","toDefs","toPattern","patternUnits","viewBox","refX","refY","cx","cy","markerWidth","markerHeight","orient","Animation","animation","inAnim","_attrs","_callback","curStatus","animate","setter","eq","fkeys","tkeys","keys","equal","eldata","removeData","outerSVG","innerSVG","toDataURL","btoa","contents","unescape","d","matrixproto","norm","normalize","mag","me","fromCharCode","offset","determinant","row","scalex","shear","scaley","isSimple","isSuperSimple","noRotation","shorter","fillStroke","grad","gradient","setFontSize","fontSize","textExtract","chi","getFontSize","reURLValue","clipIt","gradrg","tokens","stops","toAbsolute","txt","className","baseVal","vb","rx","ry","tp","textPath","tuner","chunk","tuned","getter","textContent","rgNotSpace","addClass","pos","clazz","finalValue","classes","curClasses","removeClass","hasClass","toggleClass","flag","getNumber","getUnit","unit","operators","+","-","/","*","reUnit","reAddon","plus","evnt","atr","aUnit","op","isNaN","bplus","rect","circle","preload","onerror","src","img","cssText","onload","image","preserveAspectRatio","offsetWidth","offsetHeight","ellipse","group","vbx","vby","vbw","vbh","ptrn","vx","vy","vw","vh","line","polyline","points","polygon","Gstops","GaddStop","GgetBBox","seed","step","unshift","gradientLinear","gradientRadial","gradientUnits","addStop","fx","fy","clear","next","paths","ps","sleep","r1","r2","r0","rectPath","p2s","pathClone","pathArray","getPointAtSegmentLength","p1x","p1y","c1x","c1y","c2x","c2y","p2x","p2y","bezlen","findDotsAtSegment","getTotLen","getLengthFactory","istotal","subpath","O","onlystart","path2curve","point","sp","subpaths","t1","t13","t12","t2","t3","mx","my","nx","ny","ax","ay","alpha","bezierBBox","curveDim","isPointInsideBBox","isBBoxIntersect","bbox1","bbox2","base3","p1","p2","p3","p4","x4","y4","z2","Tvalues","Cvalues","sum","ct","xbase","ybase","comb","ll","intersect","denominator","px","py","px2","py2","interHelper","bez1","bez2","justCount","l1","l2","n1","n2","dots1","dots2","xy","di","di1","dj","dj1","ci","cj","pathIntersection","path1","path2","interPathHelper","pathIntersectionNumber","x1m","y1m","x2m","y2m","pi","pj","intr","kk","segment1","segment2","isPointInsidePath","pathBBox","dim","xmin","ymin","xmax","ymax","ellipsePath","pathToRelative","lowerCase","rel","pa","pathToAbsolute","pa0","crz","dots","pop","catmullRom2bezier","l2c","q2c","_13","_23","a2c","large_arc_flag","sweep_flag","recursive","_120","f1","rx2","ry2","df","f2old","x2old","y2old","c1","s1","c2","s2","hx","hy","m1","m2","m3","m4","newres","x0","y0","b2ac","sqrtb2ac","tvalues","bounds","mt","jlen","curve","bx","by","qx","qy","attrs2","processPath","pcom","T","fixArc","pp","pcoms1","pcoms2","fixM","a1","a2","pfirst","seg","seg2","seglen","seg2len","mapPath","pathi","crp","iLen","getSubpathsAtLength","getPath","getSubpath","closest","inside","found","intersection","intersectionNumber","isPointInside","toRelative","toCubic","Set","bindings","setproto","thisArg","each","begin","handler","cb","callbacker","bind","aname","unbound","index","insertion","tail","todel","arglen","exclude","getEmpty","equaliseTransform","tt1","tt2","maxlength","path2array","getViewBox","getColour","Function","isNumeric","arrayEqual","arr1","arr2","Number","bUnit","supportsTouch","touchMap","mousedown","mousemove","mouseup","getScroll","preventTouch","originalEvent","preventDefault","stopTouch","stopPropagation","addEvent","fn","element","realName","scrollY","scrollX","targetTouches","olde","clientX","clientY","addEventListener","removeEventListener","drag","dragMove","dragi","touch","touches","identifier","_drag","move_scope","dragUp","unmousemove","unmouseup","end_scope","start_scope","eventName","hover","f_in","f_out","scope_in","scope_out","mouseover","mouseout","unhover","unmouseover","unmouseout","draggable","onmove","onstart","onend","init","origTransform","undrag","unmousedown","pproto","rgurl","filstr","filterUnits","blur","def","shadow","grayscale","amount","sepia","saturate","hueRotate","amount2","brightness","contrast","firstLetter","getAlign","way","align","Error","noGlobal","DOMEval","code","script","head","isArrayLike","jQuery","isWindow","winnow","elements","qualifier","not","isFunction","grep","risSimple","sibling","dir","createOptions","object","rnotwhite","Identity","Thrower","ex","adoptValue","resolve","reject","promise","done","fail","then","completed","ready","Data","expando","uid","dataAttr","rmultiDash","rbrace","JSON","dataUser","adjustCSS","prop","valueParts","tween","adjusted","maxIterations","currentValue","initial","cssNumber","initialInUnit","rcssNum","exec","getDefaultDisplay","temp","defaultDisplayMap","showHide","show","dataPriv","isHiddenWithinTree","getAll","context","tag","ret","merge","setGlobalEval","elems","refElements","buildFragment","scripts","selection","ignored","tmp","nodes","rhtml","rtagName","wrapMap","_default","htmlPrefilter","lastChild","inArray","rscriptType","returnTrue","returnFalse","safeActiveElement","activeElement","err","_on","types","selector","one","origFn","guid","manipulationTarget","content","disableScript","restoreScript","rscriptTypeMasked","cloneCopyEvent","dest","pdataOld","pdataCur","udataOld","udataCur","hasData","access","handle","extend","fixInput","rcheckableType","checked","defaultValue","domManip","collection","hasScripts","iNoClone","support","checkClone","rchecked","self","html","_evalUrl","rcleanScript","_remove","keepData","cleanData","curCSS","computed","minWidth","maxWidth","getStyles","pixelMarginRight","rnumnonpx","rmargin","addGetHookIf","conditionFn","hookFn","vendorPropName","emptyStyle","capName","cssPrefixes","setPositiveNumber","subtract","matches","augmentWidthOrHeight","extra","isBorderBox","styles","cssExpand","getWidthOrHeight","valueIsBorderBox","getClientRects","boxSizingReliable","Tween","raf","timerId","tick","createFxNow","fxNow","genFx","includeWidth","which","createTween","tweeners","defaultPrefilter","props","opts","toggle","hooks","oldfire","propTween","restoreDisplay","isBox","orig","hidden","dataShow","_queueHooks","unqueued","empty","fire","always","rfxtypes","isEmptyObject","overflowX","overflowY","propFilter","specialEasing","camelCase","cssHooks","expand","properties","result","stopped","prefilters","deferred","Deferred","currentTime","remaining","startTime","percent","tweens","run","notifyWith","resolveWith","originalProperties","originalOptions","gotoEnd","rejectWith","proxy","progress","complete","getClass","buildParams","traditional","rbracket","addToPrefiltersOrTransports","structure","dataTypeExpression","func","dataType","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspect","selected","inspected","prefilterOrFactory","dataTypeOrTransport","seekingTransport","transports","ajaxExtend","deep","flatOptions","ajaxSettings","ajaxHandleResponses","responses","finalDataType","firstDataType","mimeType","getResponseHeader","converters","ajaxConvert","response","isSuccess","conv2","current","conv","prev","responseFields","dataFilter","state","getWindow","getProto","getPrototypeOf","_slice","class2type","hasOwn","fnToString","ObjectFunctionString","rtrim","rmsPrefix","rdashAlpha","fcamelCase","jquery","toArray","pushStack","prevObject","last","copy","copyIsArray","isPlainObject","random","isReady","msg","noop","Ctor","globalEval","trim","makeArray","results","second","callbackInverse","callbackExpect","Sizzle","nid","groups","newSelector","newContext","preferredDoc","setDocument","documentIsHTML","rquickExpr","getElementsByClassName","qsa","compilerCache","rbuggyQSA","rcssescape","fcssescape","tokenize","toSelector","rsibling","testContext","qsaError","createCache","Expr","cacheLength","markFunction","assert","addHandle","attrHandle","siblingCheck","diff","sourceIndex","createInputPseudo","createButtonPseudo","createDisabledPseudo","disabled","isDisabled","disabledAncestor","createPositionalPseudo","argument","matchIndexes","setFilters","addCombinator","matcher","combinator","base","skip","checkNonElements","doneName","xml","oldCache","uniqueCache","outerCache","newCache","dirruns","uniqueID","elementMatcher","matchers","multipleContexts","contexts","condense","unmatched","newUnmatched","mapped","setMatcher","preFilter","postFilter","postFinder","postSelector","preMap","postMap","preexisting","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","relative","implicitRelative","matchContext","matchAnyContext","outermostContext","matcherFromGroupMatchers","elementMatchers","setMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","find","dirrunsUnique","uniqueSort","getText","isXML","compile","sortInput","hasDuplicate","rbuggyMatches","classCache","tokenCache","sortOrder","push_native","booleans","whitespace","pseudos","rwhitespace","rcomma","rcombinators","rattributeQuotes","rpseudo","ridentifier","matchExpr","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rinputs","rheader","rnative","runescape","funescape","escaped","escapedWhitespace","high","asCodePoint","charCodeAt","unloadHandler","hasCompare","subWindow","attachEvent","getElementsByName","attrId","getAttributeNode","input","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compare","sortDetached","aup","ap","bp","expr","specified","escape","sel","duplicates","detectDuplicates","sortStable","selectors","createPseudo",">"," ","~","excess","unquoted","nodeNameSelector","operator","check","what","simple","forward","ofType","nodeIndex","useCache","pseudo","idx","matched","innerText","lang","elemLang","hash","location","focus","hasFocus","tabIndex","enabled","selectedIndex","header","button","even","odd","lt","gt","radio","checkbox","file","password","submit","reset","filters","parseOnly","soFar","preFilters","cached","token","compiled","unique","isXMLDoc","escapeSelector","_dir","until","truncate","_siblings","rneedsContext","rsingleTag","rootjQuery","parseHTML","rparentsprev","guaranteedUnique","targets","prevAll","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","siblings","reverse","Callbacks","firing","memory","_fired","_locked","firingIndex","stopOnFalse","disable","lock","locked","fireWith","fired","tuples","_state","_promise","catch","pipe","fns","newDefer","tuple","returned","notify","onFulfilled","onRejected","onProgress","depth","special","that","mightThrow","maxDepth","TypeError","process","exceptionHook","stackTrace","getStackHook","stateString","when","singleValue","resolveContexts","resolveValues","master","updateFunc","rerrorNames","stack","console","warn","message","readyList","readyWait","holdReady","hold","wait","doScroll","chainable","emptyGet","raw","bulk","acceptData","owner","configurable","_data","_removeData","dequeue","startLength","clearQueue","defer","pnum","source","swap","hide","option","thead","col","tr","td","optgroup","tbody","tfoot","colgroup","caption","th","noCloneChecked","rkeyEvent","rmouseEvent","rtypenamespace","handleObjIn","eventHandle","handleObj","handlers","namespaces","origType","elemData","triggered","dispatch","delegateType","bindType","namespace","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","nativeEvent","handlerQueue","fix","delegateTarget","preDispatch","isPropagationStopped","currentTarget","isImmediatePropagationStopped","rnamespace","postDispatch","_handlers","addProp","hook","Event","enumerable","writable","noBubble","trigger","click","beforeunload","returnValue","isDefaultPrevented","defaultPrevented","relatedTarget","timeStamp","isSimulated","stopImmediatePropagation","altKey","bubbles","cancelable","changedTouches","ctrlKey","detail","eventPhase","metaKey","pageX","pageY","shiftKey","view","char","charCode","keyCode","buttons","offsetX","offsetY","pointerId","pointerType","screenX","screenY","toElement","mouseenter","mouseleave","pointerenter","pointerleave","related","rxhtmlTag","rnoInnerhtml","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","detach","replaceWith","replaceChild","replaceAll","insert","opener","computeStyleTests","container","divStyle","pixelPositionVal","reliableMarginLeftVal","marginLeft","boxSizingReliableVal","marginRight","pixelMarginRightVal","backgroundClip","clearCloneStyle","pixelPosition","reliableMarginLeft","rdisplayswap","cssShow","position","cssNormalTransform","letterSpacing","fontWeight","animationIterationCount","columnCount","fillOpacity","flexGrow","flexShrink","lineHeight","order","orphans","widows","zoom","cssProps","float","origName","margin","padding","border","suffix","expanded","parts","propHooks","eased","swing","rrun","tweener","prefilter","opt","speeds","fadeTo","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","interval","cancelAnimationFrame","clearInterval","slow","fast","delay","timeout","clearTimeout","checkOn","optSelected","radioValue","boolHook","removeAttr","nType","attrHooks","attrNames","lowercaseName","rfocusable","rclickable","removeProp","propFix","tabindex","for","rclass","curValue","stateVal","classNames","rreturn","rspaces","valHooks","optionSet","rfocusMorph","onlyHandlers","bubbleType","ontype","eventPath","isTrigger","parentWindow","simulate","triggerHandler","fnOver","fnOut","focusin","attaches","nonce","rquery","parseXML","DOMParser","parseFromString","rCRLF","rsubmitterTypes","rsubmittable","param","valueOrFunction","serialize","serializeArray","r20","rhash","rts","rheaders","rlocalProtocol","rnoContent","rprotocol","allTypes","originAnchor","active","lastModified","etag","isLocal","protocol","processData","async","contentType","accepts","* text","text html","text json","text xml","ajaxSetup","settings","ajaxPrefilter","ajaxTransport","nativeStatusText","headers","success","modified","statusText","timeoutTimer","transport","responseHeadersString","ifModified","cacheURL","callbackContext","statusCode","_statusCode","fireGlobals","globalEventContext","completeDeferred","responseHeaders","urlAnchor","uncached","requestHeaders","requestHeadersNames","strAbort","getAllResponseHeaders","overrideMimeType","abort","finalText","crossDomain","host","hasContent","beforeSend","getJSON","getScript","throws","wrapAll","firstElementChild","wrapInner","unwrap","visible","xhr","xhrSuccessStatus","0","1223","xhrSupported","cors","errorCallback","username","xhrFields","onabort","responseType","binary","text script","_callback2","charset","scriptCharset","evt","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","createHTMLDocument","implementation","keepScripts","parsed","animated","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","calculatePosition","curElem","using","offsetParent","parentOffset","scrollTo","Height","Width","","defaultExtra","funcName","delegate","undelegate","parseJSON","_jQuery","_$","noConflict","_classCallCheck","instance","Constructor","_createClass","defineProperties","descriptor","protoProps","staticProps","_utils","ZoomHandler","zoomFactor","MIN_SIZE","imageWidth","imageHeight","viewport","disableDrag","imgMinSize","lastPosition","updateViewBox","center","currentCenterX","currentViewBox","currentCenterY","scaleFactor","viewBoxW","viewBoxH","emit","updateFunction","updatedViewBox","getZoomFactor","currentScale","imageSize","minSize","canDrag","newX","newY","topX","topY","enable_zoom","_svgboard","_svgboard2","MODE_RECT","MODE_FREE","ZOOM_IN","ZOOM_OUT","components","typeahead","zoomview","mode","isRect","normalizePath","readOnly","formView","useClipPath","transformMatrix","fragmentPath","canZoom","displayMask","mounted","initialDrawingMode","drawingComponent","wrapperId","actionWrapper","onDrawingModeChange","setDrawingMode","$refs","setZoomTarget","getPaper","showEditor","createTestHandler","methods","computeCentreredViewBox","zoomSvg","xRatio","yRatio","zTarget","getShapeBBox","computeZoomedViewBox","viewBoxArray","shapeBBox","imgRatio","mainSvgWrapper","smallSvgWrapper","$options","defaultViewBox","updateComponent","cancel","currentPath","setPath","highLightZone","displayEditedPath","resetZoom","showForm","smallImage","targetKeyMap","title","targetFieldTypeMap","originalValues","pickProposition","sourceId","targetKey","targetField","targetType","sourceValue","pathType","fragmentField","preserveOriginalValue","pickTag","refTag","tags","setTags","hightlightSource","save","alert","removeTag","$remove","normalizeSelectedTags","tagAlreadyExists","userTag","tag_link","tag_label","tagNode","tagArrays","addTag","tagItem","tag_input","accuracy","relevancy","$parent","$data","selectedTags","stringify","updateAccuracy","updatePertinence","_vueTypeahead","_vueTypeahead2","_Taglist","_Taglist2","autoCompletePath","wikipediaPath","parentsMethods","dfd","envelope","mixins","taglist","limit","minChars","showAddButton","datasource","queryParamName","checkQuery","fetch","fetchWikiPedia","request","action","search","prepareWikipediaResponse","labelsList","urlsList","link","decodeURI","prepareResponseData","responseData","hasItems","onHit","_snapsvgZoom","_snapsvgZoom2","_snapsvg","_snapsvg2","handlerSize","currentViewport","handleEvents","showHandler","zoomtarget","mainImage","mainImageId","zoomHandler","incraseDrawingZoom","zoomIn","resetDrawingZoom","decreaseDrawingZoom","zoomOut","handleZoomChanged","startX","startY","transformedValue","notifyMove","moveHandlerToCenter","moveX","moveY","currentImageSize","zoomInfos","mediaQuery","alreadyImportedModules","assign","normalizeOpts","isCallable","dscr","gs","foo","bar","trzy","create","searchString","_once2","descriptors","callable","listener","__ee__","_once","__eeOnceListener__","candidate","Promise$2","executor","PENDING","Promise$1","PromiseObj","Util","Vue","util","debug","config","silent","nextTick","ctx","isString","isBoolean","isObject","isFormData","FormData","fulfilled","rejected","$vm","_merge","defaults","_assign","urlParams","Url","variables","tmpl","vars","template","expression","literal","substr","variable","getValues","encodeReserved","modifier","isDefined","encodeValue","isKeyOperator","part","encodeURI","transforms","vm","plain","xdrClient","xdr","XDomainRequest","respondWith","getUrl","ontimeout","onprogress","getBody","crossOrigin","SUPPORTS_CORS","client","emulateHTTP","requestUrl","ORIGIN_URL","emulateJSON","jsonpClient","Http","common","custom","xhrClient","parseHeaders","upload","credentials","withCredentials","Client","reqHandlers","resHandlers","sendRequest","interceptors","Request","ok","Resource","actions","resource","$http","installed","http","Promise","$url","$resource","$promise","_this","RESOLVED","REJECTED","iterable","resolver","race","p$1","called","reason","onResolved","ie","documentMode","port","hostname","pathname","classCallCheck","Response","_ref","blob","Blob","CUSTOM_HEADERS","X-Requested-With","COMMON_HEADERS","Accept","JSON_CONTENT_TYPE","Content-Type","put","post","patch","delete","_defineProperty","vue","main","loading","isEmpty","isDirty","queryParam","setActive","activeClass","hit","up","down","_isVue","ob","__ob__","convert","dep","vms","_proxy","_digest","del","_unproxy","isLiteral","exp","literalValueRE","isReserved","_toString","toNumber","toBoolean","stripQuotes","camelize","camelizeRE","toUpper","hyphenate","hyphenateRE","classify","classifyRE","OBJECT_STRING","_debounce","timestamp","later","cancellable","cancelled","looseEqual","Cache","size","_keymap","pushFilter","lastFilterIndex","filterTokenRE","processFilterArg","reservedArgRE","dynamic","stripped","parseDirective","cache$1","inSingle","inDouble","curly","square","paren","escapeRegex","regexEscapeRE","compileRegex","delimiters","close","unsafeOpen","unsafeDelimiters","unsafeClose","tagRE","htmlRE","parseText","oneTime","lastIndex","tokensToExp","formatToken","single","$eval","inlineFilters","filterRE","appendWithTransition","applyTransition","beforeWithTransition","removeWithTransition","transition","__v_trans","transitionEndEvent","_isCompiled","inDoc","getAttr","_attr","getBindAttr","hasBindAttr","hasAttribute","useCapture","classname","setClass","cls","isIE9","namespaceURI","classList","tar","extractContent","asFragment","child","rawContent","isTemplate","isFragment","hasChildNodes","trimNode","isTrimmable","createAnchor","persist","anchor","__v_anchor","findRef","hasAttributes","refRE","mapNodeRange","removeNodeRange","onRemoved","getOuterHTML","outerHTML","checkComponentAttr","hasAttrs","commonTagRE","reservedTagRE","getIsBinding","resolveAsset","mergeData","toVal","fromVal","mergeAssets","parentVal","childVal","guardArrayAssets","guardComponents","guardProps","assets","asset","mergeOptions","mergeField","strat","strats","defaultStrat","mixin","mixinOptions","warnMissing","camelizedId","Dep","uid$1","subs","withoutConversion","shouldConvert","Observer","augment","hasProto","protoAugment","copyAugment","arrayMethods","arrayKeys","observeArray","walk","__proto__","observe","isExtensible","addVm","defineReactive","property","getOwnPropertyDescriptor","childOb","depend","newVal","initMixin","_init","$el","$root","$children","$els","_watchers","_directives","_uid","_eventsCount","_isFragment","_fragment","_fragmentStart","_fragmentEnd","_isDestroyed","_isReady","_isAttached","_isBeingDestroyed","_vForRemoving","_unlinkFn","_context","_scope","_frag","_updateRef","_callHook","_initState","_initEvents","$mount","getPathCharType","formatSubPath","trimmed","maybeUnescapeQuote","nextChar","IN_SINGLE_QUOTE","IN_DOUBLE_QUOTE","newChar","APPEND","typeMap","BEFORE_PATH","subPathDepth","PUSH","INC_SUB_PATH_DEPTH","PUSH_SUB_PATH","IN_SUB_PATH","pathStateMachine","ERROR","AFTER_PATH","parsePath","pathCache","parseExpression","$set","saved","newlineRE","rewrite","allowedKeywordsRE","restoreRE","restore","compileGetter","improperKeywordsRE","saveRE","wsRE","identRE","makeGetterFn","compileSetter","needSet","expressionCache","isSimplePath","pathTestRE","literalValueRE$1","resetBatcherState","userQueue","circular","waiting","flushBatcherQueue","_again","runBatcherQueue","devtools","watcher","pushWatcher","user","Watcher","expOrFn","isFn","uid$2","dirty","lazy","deps","newDeps","depIds","_Set","newDepIds","prevError","twoWay","queued","shallow","traverse","seen","seenObjects","isA","isO","depId","isRealTemplate","stringToFragment","templateString","cacheKey","templateCache","tagMatch","tagRE$1","entityMatch","entityRE","commentMatch","commentRE","efault","nodeToFragment","clonedNode","cloned","hasBrokenTemplate","tempClone","hasTextareaCloneBug","parseTemplate","shouldClone","idSelectorCache","linker","parentFrag","childFrags","inserted","unlink","singleBefore","singleRemove","multiBefore","multiRemove","__v_frag","withTransition","callHook","attach","shouldCallRemove","beforeRemove","destroy","FragmentFactory","cid","cacheId","linkerCache","findPrevFrag","previousSibling","forId","findVmFromFrag","__vue__","range","floor","getTrackByKey","trackByKey","getValue","multi","_value","indexOf$1","keyFilter","codes","keyCodes","stopFilter","preventFilter","selfFilter","propCache","camel","upper","testEl","prefixed","prefixes","kebab","camelPrefixes","normalize$1","_key","callActivateHooks","compileProps","propOptions","identRE$1","propBindingModes","ONE_WAY","TWO_WAY","ONE_TIME","optimizedLiteral","parentPath","makePropsLinkFn","_props","inlineProps","propsData","initProp","$get","_bindDir","propDef","Boolean","processPropValue","rawValue","getPropDefaultValue","coerceProp","coerced","assertProp","updateProp","required","valid","expectedTypes","assertedType","assertType","expectedType","validator","coerce","pushJob","job","queue$1","flush","Transition","enterClass","leaveClass","pendingCssEvent","pendingCssCb","pendingJsCb","justEntered","entered","typeCache","isHidden","partial","nodeLinkFn","_asComponent","compileNode","childLinkFn","terminal","isScript","compileNodeList","dirs","linkAndCapture","makeUnlinkFn","originalDirCount","directiveComparator","_bind","priority","DEFAULT_PRIORITY","contextDirs","destroying","teardownDirs","_teardown","compileAndLinkProps","propsLinkFn","propDirs","compileRoot","contextOptions","contextLinkFn","replacerLinkFn","containerAttrs","_containerAttrs","replacerAttrs","_replacerAttrs","compileDirectives","selfDirs","compileTextNode","compileElement","linkFn","checkTerminalDirectives","checkElementDirectives","checkComponent","_skip","removeText","wholeText","processTextToken","makeTextNodeLinkFn","setTokenType","directives","fragClone","nodeList","linkFns","makeChildLinkFn","childrenLinkFn","makeTerminalNodeLinkFn","component","ref","internalDirectives","modifiers","componentLinkFn","previousElementSibling","dirName","rawName","termDef","modifierRE","dirAttrRE","DEFAULT_TERMINAL_PRIORITY","parseModifiers","pushDir","interpTokens","hasOneTimeToken","hasOneTime","interp","dirDef","transitionRE","bindRE","onRE","makeNodeLinkFn","transclude","extractAttrs","_content","transcludeTemplate","mergeAttrs","specialCharRE","resolveSlots","_slotContents","extractFragment","stateMixin","makeComputedGetter","evaluate","newData","_setData","_initProps","_initMeta","_initMethods","_initData","_initComputed","_propsUnlinkFn","dataFn","oldData","removeVm","userDef","metas","_meta","eventsMixin","registerComponentEvents","eventRE","_fromParent","$on","registerCallbacks","register","onAttached","callAttach","onDetached","callDetach","watch","_initDOMHooks","$emit","noop$1","Directive","_bound","_listeners","_host","lifecycleMixin","refs","_compile","_initElement","rootLinker","contentLinkFn","ctor","_linkerCachable","rootUnlinkFn","contentUnlinkFn","_destroy","deferCleanup","_cleanup","destroyReady","pendingRemoval","cleanupIfPossible","$destroy","$off","miscMixin","_applyFilters","oldValue","write","read","_resolveComponent","resolved","requested","pendingCallbacks","cbs","dataAPI","clean","asStatement","$arguments","$delete","$watch","sync","immediate","filterRE$1","$interpolate","$log","log","domAPI","op1","op2","targetIsDetached","shouldCallHook","beforeWithCb","removeWithCb","$nextTick","$appendTo","$prependTo","$before","$after","inDocument","realCb","eventsAPI","modifyListenerCount","hookRE","$once","isSource","shouldPropagate","hasParentCbs","some","$broadcast","$dispatch","lifecycleAPI","$compile","limitBy","filterBy","delimiter","convertArray","$value","$key","orderBy","baseCompare","sortKeyIndex","sortKey","sortKeys","_comparator","firstArg","installGlobalAPI","createClass","elementDirectives","transitions","partials","compiler","parsers","directive","extendOptions","Super","isFirstExtend","_Ctor","Sub","_assetTypes","install","definition","inBrowser","__VUE_DEVTOOLS_GLOBAL_HOOK__","UA","navigator","userAgent","isIE","isAndroid","isIos","iosVersionMatch","iosVersion","hasMutationObserverBug","indexedDB","transitionProp","animationProp","animationEndEvent","isWebkitTrans","ontransitionend","onwebkittransitionend","isWebkitAnim","onanimationend","onwebkitanimationend","nextTickHandler","pending","copies","callbacks","timerFunc","MutationObserver","setImmediate","counter","observer","textNode","characterData","entry","newer","older","returnEntry","freeze","warnExpressionErrors","_delimitersChanged","_propBindingModes","_maxUpdateCount","optionMergeStrategies","instanceData","defaultData","created","attached","detached","beforeCompile","beforeDestroy","destroyed","activate","addSub","sub","removeSub","addDep","arrayProto","getOwnPropertyNames","debounce","IN_PATH","BEFORE_IDENT","IN_IDENT","ws","ident","[","eof",".","number","'","\"","]","else","allowedKeywords","improperKeywords","beforeGet","preProcess","postProcess","afterGet","forContext","$forContext","alias","_withLock","$index","text$1","legend","placeholder","_watcher","ON","MODEL","BIND","TRANSITION","EL","COMPONENT","PARTIAL","IF","FOR","SLOT","uid$3","vFor","inMatch","itMatch","isOption","updateRef","updateModel","primitive","convertedFromObject","fromObject","trackBy","oldFrags","frags","getCachedFrag","reused","fresh","removalIndex","totalRemoved","deleteCachedFrag","targetPrev","prevEl","currentPrev","insertionIndex","staggerCb","staggerAnchor","move","parentScope","cacheFrag","model","__v_model","forceUpdate","staggerAmount","getStagger","trans","stagger","_preProcess","_postProcess","vIf","invalid","nextElementSibling","elseEl","elseFrag","elseFactory","text$2","isRange","composing","focused","rawListener","hasjQuery","afterBind","multiple","initValue","getBooleanValue","_trueValue","_falseValue","checkFilters","hasRead","hasWrite","_unbind","esc","tab","enter","space","right","on$1","acceptStatement","iframeBind","contentWindow","capture","prevent","importantRE","handleObject","reduce","handleSingle","isImportant","setProperty","xlinkNS","xlinkRE","disallowedInterpAttrRE","attrWithPropsRE","enumeratedAttrRE","modelProps","true-value","false-value","bind$1","attrValue","modelProp","cloak","if","vClass","cleanup","prevKeys","keepAlive","inlineTemplate","pendingComponentCb","Component","pendingRemovals","pendingRemovalCb","setComponent","invalidatePending","resolveComponent","mountComponent","unbuild","childVM","ComponentName","activateHooks","getCached","newComponent","build","waitingFor","extraOptions","_isRouterView","_inactive","transitionMode","bindingModes","childKey","parentKey","parentWatcher","childWatcher","TYPE_TRANSITION","TYPE_ANIMATION","transDurationProp","animDurationProp","waitForTransitionStart","cancelPending","callHookWithCb","enterCancelled","enterNextTick","enterDone","getCssTransitionType","setupCssCb","leave","leaveCancelled","leaveDone","leaveNextTick","hasPending","inlineStyles","computedStyles","transDuration","animDuration","onEnd","transition$1","oldId","_setupParams","_checkStatement","_update","oldVal","mappedKey","_setupParamWatcher","unwatch","paramWatchers","_paramUnwatchFns","$event","unwatchFns","slot","fallback","elseBlock","digitsRE","indent","capitalize","uppercase","lowercase","currency","_currency","decimals","stringified","_int","_float","sign","pluralize","__WEBPACK_AMD_DEFINE_FACTORY__","makeMap","expectsLowerCase","isPrimitive","_from","toObject","genStaticKeys","staticKeys","bailRE","_ret","segments","pushTarget","_target","targetStack","popTarget","resetSchedulerState","flushSchedulerQueue","runSchedulerQueue","queueSorter","queueWatcher","observerState","_isServer","customSetter","vmCount","initState","initProps","initData","initComputed","initMethods","initWatch","_propKeys","isRoot","_loop","validateProp","isSettingProps","computedSharedDefinition","_key2","_key3","createWatcher","dataDef","normalizeChildren","ns","createTextVNode","VNode","updateListeners","oldOn","invoker","arrInvoker","fnInvoker","ev","initLifecycle","_abstract","_isMounted","_mount","hydrating","emptyVNode","_render","vnode","_vnode","__patch__","_parentVnode","elm","_updateFromParent","parentVnode","renderChildren","_renderChildren","propKeys","oldListeners","_parentListeners","_updateListeners","$forceUpdate","createComponent","resolveAsyncComponent","extractProps","functional","$createElement","mergeHooks","createComponentInstanceForVnode","vnodeComponentOptions","componentOptions","_isComponent","_componentTag","prepatch","oldVnode","staticAttrs","checkProp","hooksToMerge","fromParent","ours","mergeHook$1","__","_createElement","_self","renderState","activeInstance","getTagNamespace","isReservedTag","ignoredElements","isUnknownElement","initRender","_staticTrees","$slots","renderMixin","_vm$$options","_renderProxy","_h","_s","_n","_m","identity","_f","_l","_b","mustUseProp","_k","slots","defaultSlot","initEvents","initInternalComponent","resolveConstructorOptions","superOptions","cachedSuperOptions","initProxy","mergeHook","normalizeComponents","lower","isBuiltInTag","normalizeProps","normalizeDirectives","extendsFrom","absent","initUse","initMixin$1","initExtend","initAssetRegisters","getRealChild","compOptions","initGlobalAPI","configDef","builtInComponents","genClassForVnode","mergeClassData","genClassFromData","staticClass","dynamicClass","stringifyClass","isSVG","unknownElementCache","HTMLUnknownElement","HTMLElement","createElement$1","namespaceMap","newNode","referenceNode","setTextContent","isUndef","isDef","sameVnode","vnode1","vnode2","createKeyToOldIdx","beginIdx","endIdx","createPatchFunction","backend","emptyNodeAt","nodeOps","createRmCb","childElm","removeElement","createElm","insertedVnodeQueue","invokeCreateHooks","setScope","_i","emptyNode","addVnodes","parentElm","vnodes","startIdx","invokeDestroyHook","removeVnodes","removeAndInvokeRemoveHook","rm","updateChildren","oldCh","newCh","oldStartIdx","newStartIdx","oldEndIdx","oldStartVnode","oldEndVnode","newEndIdx","newStartVnode","newEndVnode","oldKeyToIdx","idxInOld","elmToMove","patchVnode","emptyData","postpatch","invokeInsertHook","_i2","hydrate","assertNodeMatch","_i3","hooks$1","isRealElement","applyDirectives","oldDirs","isUpdate","registerRef","isRemoval","refInFor","updateAttrs","oldAttrs","setAttr","isXlink","removeAttributeNS","getXlinkProp","isEnumeratedAttr","isBooleanAttr","isFalsyAttrValue","updateClass","transitionClass","_transitionClasses","_prevClass","updateDOMListeners","_v_add","_v_remove","updateProps","oldProps","updateStyle","oldStyle","nextFrame","_leaveCb","_resolveTransition","resolveTransition","appear","enterActiveClass","appearClass","appearActiveClass","beforeEnter","onEnter","afterEnter","beforeAppear","onAppear","afterAppear","appearCancelled","isAppear","startClass","beforeEnterHook","enterHook","afterEnterHook","enterCancelledHook","expectsCSS","userWantsControl","_enterCb","removeTransitionClass","addTransitionClass","whenTransitionEnds","performLeave","beforeLeave","leaveActiveClass","onLeave","_resolveTransition2","afterLeave","delayLeave","ensureTransitionClasses","autoCssTransition","mergeHook$2","oldHook","_getTransitionInfo","getTransitionInfo","propCount","ended","transitioneDelays","transitionDurations","animationDelays","animationDurations","transitionTimeout","getTimeout","animationTimeout","ANIMATION","delays","durations","toMs","shouldSkipTransition","setSelected","isMultiple","hasNoMatchingOption","onCompositionStart","onCompositionEnd","createEvent","initEvent","dispatchEvent","getTransition","addHook","decodeHTML","decoder","attrForHandler","singleAttrIdentifier","joinSingleAttrAssigns","singleAttrValues","singleAttrAssigns","advance","parseStartTag","startTagOpen","startTagClose","attribute","unarySlash","handleStartTag","expectHTML","lastTag","isNonPhrasingTag","parseEndTag","canBeLeftOpenTag","unary","isUnaryTag","IS_REGEX_CAPTURING_BROKEN","needle","no","isSpecialTag","stackedTag","reStackedTag","reCache","endTagLength","rest","endTag","chars","textEnd","commentEnd","conditionalEnd","doctypeMatch","doctype","endTagMatch","curIndex","startTagMatch","parseFilters","wrapFilter","buildRegex","defaultTagRE","baseWarn","pluckModuleFunction","addAttr","addStaticAttr","addDirective","addHook$1","addHandler","newHandler","getBindingAttr","getStatic","dynamicValue","getAndRemoveAttr","staticValue","attrsMap","attrsList","warn$1","platformGetTagNamespace","platformMustUseProp","preTransforms","postTransforms","preserveWhitespace","currentParent","inPre","warned","camelRE","guardIESVGBug","makeAttrsMap","isForbiddenTag","forbidden","processPre","pre","processRawAttrs","processFor","processIf","processOnce","processKey","processRef","processSlot","processComponent","processAttrs","processElse","lastNode","decodeHTMLCached","forAliasRE","iteratorMatch","forIteratorRE","iterator1","iterator2","findPrevElement","slotName","slotTarget","binding","dirRE","argMatch","argRE","ieNSBug","ieNSPrefix","optimize","isStaticKey","genStaticKeysCached","isPlatformReservedTag","markStatic","markStaticRoots","genStaticKeys$1","isStatic","staticRoot","every","genHandlers","genHandler","modifierCode","genKeyFilter","handlerCode","simplePathRE","generate","ast","prevStaticRenderFns","currentStaticRenderFns","currentOptions","warn$2","transforms$1","dataGenFns","platformDirectives$1","isPlatformReservedTag$1","genElement","staticProcessed","forProcessed","genFor","ifProcessed","genIf","genSlot","genComponent","genData","genChildren","genElse","genDirectives","genProps","genHooks","inlineRenderFns","hasRuntime","needRuntime","gen","baseDirectives","asThunk","genNode","genText","compile$1","detectErrors","errors","checkNode","checkFor","checkExpression","checkIdentifier","keywordMatch","stripStringRE","prohibitedKeywordRE","transformNode","classBinding","genData$1","transformNode$1","styleBinding","genData$2","transformNode$2","genData$3","transformCode","model$1","_warn","warn$3","genSelect","genCheckboxModel","genRadioModel","genDefaultModel","valueBinding","trueValueBinding","falseValueBinding","needCompositionGuard","valueExpression","checkOptionWarning","parentModel","baseOptions","compileToFunctions","makeFunction","errorHandler","_lifecycleHooks","hasProxy","proxyHandlers","allowedGlobals","Proxy","isAllowedGlobal","cleanupDeps","constructHook","construct","formatComponentName","hasConsole","KeepAlive","rawChild","realChild","UA$1","baseModules","klass","hasTransition","platformModules","modelableTagRE","vmodel","postupdate","needReset","_ref2","platformDirectives","TransitionControl","oldChild","newChild","delayedLeave","platformComponents","singleAttrAssign","ncname","qnameCapture","klass$1","style$1","modules$1","directives$1","idToTemplate","mount","_compileToFunctions","webpackPolyfill","deprecate","_Cutout","_Cutout2","ShapeResizer","shape","vp","viewPort","isResizing","currentPosition","HANDLER_SIZE","SHAPE_MIN_SIZE","states","showHandlers","computeHandlerSize","handleX","handleY","handlerInfos","shapesGroup","attachEvents","updateShapePositions","handlerData","handlerBBox","newWidth","newHeight","transformValue","dragEvents","onStart","startPosition","onMove","tdx","tdy","snapInvMatrix","checkBondaries","onStop","origBounding","enable_resizer","cViewbox","_shapeResizer","_shapeResizer2","toBack","toFront","getTransformedXY","pointData","viewBoxBounds","startPoint","drawing_path","canDraw","rectZone","PATH_COLOR","STROKE_COLOR","FILL_COLOR","FIRST_NODE_COLOR","HANDLE_SIZE","isDragged","enablePoint","pathIsClosed","ENABLE_NEW_NODE","RECT_MODE","drawingMode","FREE_MODE","availableModes","onChangeCallback","getId","handleRectPath","bbBox","handleFreePath","pathInfos","pathData","createPoint","updatePath","onClosePath","updateCallback","pointInfos","lPath","vector-effect","computeHandleSize","applyClosedStyle","strokeWidth","onClickOnHandler","isFirst","updatePointPosition","newPoint","currentHandleSize","onMoveHandler","posX","posY","boxSize","wasUpdated","bindHandlerEvent","fillColor","createPointHandler","handleSize","attachRectEvents","attachPointEvents","attachZoomEvents","previousPath","API","getShape","bBox","shapeX","shapeY","fakeShape","shapePath","normalizeMatrix","cutCanvas","autocomplete","keyup","keydown","imageUrl","xmlns:xlink","change","addStylesToDom","domStyle","stylesInDom","addStyle","listToStyles","newStyles","media","sourceMap","insertStyleElement","styleElement","getHeadElement","lastStyleElementInsertedAtTop","styleElementsInsertedAtTop","insertAt","removeStyleElement","createStyleElement","singleton","styleIndex","singletonCounter","singletonElement","applyToSingletonTag","applyToTag","newObj","styleSheet","replaceText","cssNode","sources","memoize","memo","isOldIE","newList","mayRemove","textStore","replacement","locals"],"mappings":"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","file":"build.js","sourcesContent":["/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"/dist/\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\t__webpack_require__(38);\n\t\n\t__webpack_require__(39);\n\t\n\t__webpack_require__(37);\n\t\n\tvar _vueResource = __webpack_require__(28);\n\t\n\tvar _vueResource2 = _interopRequireDefault(_vueResource);\n\t\n\tvar _Typeahead = __webpack_require__(2);\n\t\n\tvar _Typeahead2 = _interopRequireDefault(_Typeahead);\n\t\n\tvar _cutout = __webpack_require__(33);\n\t\n\tvar _cutout2 = _interopRequireDefault(_cutout);\n\t\n\tvar _Zoomview = __webpack_require__(6);\n\t\n\tvar _Zoomview2 = _interopRequireDefault(_Zoomview);\n\t\n\tvar _MergeTool = __webpack_require__(41);\n\t\n\tvar _MergeTool2 = _interopRequireDefault(_MergeTool);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar iconolab = {\n\t\tCutout: _cutout2.default,\n\t\tVueComponents: {\n\t\t\tTypeahead: _Typeahead2.default,\n\t\t\tMergeTool: _MergeTool2.default,\n\t\t\tZoomview: _Zoomview2.default\n\t\t}\n\t};\n\t\n\tif (!window.iconolab) {\n\t\twindow.iconolab = iconolab;\n\t}\n\n/***/ },\n/* 1 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.eventEmitter = exports.generateId = undefined;\n\t\n\tvar _eventEmitter = __webpack_require__(27);\n\t\n\tvar _eventEmitter2 = _interopRequireDefault(_eventEmitter);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar eventEmitter = (0, _eventEmitter2.default)({});\n\t\n\tvar generateId = function () {\n\t\tvar cpt = 0;\n\t\tvar defautPrefix = \"item_\";\n\t\treturn function (prefix) {\n\t\t\tprefix = typeof prefix === \"string\" ? prefix : defautPrefix;\n\t\t\tcpt = cpt + 1;\n\t\t\treturn prefix + cpt;\n\t\t};\n\t}();\n\t\n\texports.generateId = generateId;\n\texports.eventEmitter = eventEmitter;\n\n/***/ },\n/* 2 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __vue_exports__, __vue_options__\n\t\n\t/* styles */\n\t__webpack_require__(47)\n\t\n\t/* script */\n\t__vue_exports__ = __webpack_require__(10)\n\t\n\t/* template */\n\tvar __vue_template__ = __webpack_require__(43)\n\t__vue_options__ = __vue_exports__ || {}\n\tif (__vue_options__.__esModule) __vue_options__ = __vue_options__.default\n\tif (typeof __vue_options__ === \"function\") __vue_options__ = __vue_options__.options\n\t__vue_options__.render = __vue_template__.render\n\t__vue_options__.staticRenderFns = __vue_template__.staticRenderFns\n\t__vue_options__._scopeId = \"data-v-1\"\n\t\n\tmodule.exports = __vue_exports__ || __vue_options__\n\n\n/***/ },\n/* 3 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_LOCAL_MODULE_0__;var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\"use strict\";var _typeof=typeof Symbol===\"function\"&&typeof Symbol.iterator===\"symbol\"?function(obj){return typeof obj;}:function(obj){return obj&&typeof Symbol===\"function\"&&obj.constructor===Symbol?\"symbol\":typeof obj;};/*** IMPORTS FROM imports-loader ***/(function(){var fix=module.exports=0;// Snap.svg 0.4.0\n\t// \n\t// Copyright (c) 2013 – 2015 Adobe Systems Incorporated. All rights reserved.\n\t// \n\t// Licensed under the Apache License, Version 2.0 (the \"License\");\n\t// you may not use this file except in compliance with the License.\n\t// You may obtain a copy of the License at\n\t// \n\t// http://www.apache.org/licenses/LICENSE-2.0\n\t// \n\t// Unless required by applicable law or agreed to in writing, software\n\t// distributed under the License is distributed on an \"AS IS\" BASIS,\n\t// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\t// See the License for the specific language governing permissions and\n\t// limitations under the License.\n\t// \n\t// build: 2015-04-07\n\t// Copyright (c) 2013 Adobe Systems Incorporated. All rights reserved.\n\t// \n\t// Licensed under the Apache License, Version 2.0 (the \"License\");\n\t// you may not use this file except in compliance with the License.\n\t// You may obtain a copy of the License at\n\t// \n\t// http://www.apache.org/licenses/LICENSE-2.0\n\t// \n\t// Unless required by applicable law or agreed to in writing, software\n\t// distributed under the License is distributed on an \"AS IS\" BASIS,\n\t// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\t// See the License for the specific language governing permissions and\n\t// limitations under the License.\n\t// ┌────────────────────────────────────────────────────────────┐ \\\\\n\t// │ Eve 0.4.2 - JavaScript Events Library │ \\\\\n\t// ├────────────────────────────────────────────────────────────┤ \\\\\n\t// │ Author Dmitry Baranovskiy (http://dmitry.baranovskiy.com/) │ \\\\\n\t// └────────────────────────────────────────────────────────────┘ \\\\\n\t(function(glob){var version=\"0.4.2\",has=\"hasOwnProperty\",separator=/[\\.\\/]/,comaseparator=/\\s*,\\s*/,wildcard=\"*\",fun=function fun(){},numsort=function numsort(a,b){return a-b;},current_event,stop,events={n:{}},firstDefined=function firstDefined(){for(var i=0,ii=this.length;i<ii;i++){if(typeof this[i]!=\"undefined\"){return this[i];}}},lastDefined=function lastDefined(){var i=this.length;while(--i){if(typeof this[i]!=\"undefined\"){return this[i];}}},/*\\\n\t * eve\n\t [ method ]\n\t\n\t * Fires event with given `name`, given scope and other parameters.\n\t\n\t > Arguments\n\t\n\t - name (string) name of the *event*, dot (`.`) or slash (`/`) separated\n\t - scope (object) context for the event handlers\n\t - varargs (...) the rest of arguments will be sent to event handlers\n\t\n\t = (object) array of returned values from the listeners. Array has two methods `.firstDefined()` and `.lastDefined()` to get first or last not `undefined` value.\n\t \\*/eve=function eve(name,scope){name=String(name);var e=events,oldstop=stop,args=Array.prototype.slice.call(arguments,2),listeners=eve.listeners(name),z=0,f=false,l,indexed=[],queue={},out=[],ce=current_event,errors=[];out.firstDefined=firstDefined;out.lastDefined=lastDefined;current_event=name;stop=0;for(var i=0,ii=listeners.length;i<ii;i++){if(\"zIndex\"in listeners[i]){indexed.push(listeners[i].zIndex);if(listeners[i].zIndex<0){queue[listeners[i].zIndex]=listeners[i];}}}indexed.sort(numsort);while(indexed[z]<0){l=queue[indexed[z++]];out.push(l.apply(scope,args));if(stop){stop=oldstop;return out;}}for(i=0;i<ii;i++){l=listeners[i];if(\"zIndex\"in l){if(l.zIndex==indexed[z]){out.push(l.apply(scope,args));if(stop){break;}do{z++;l=queue[indexed[z]];l&&out.push(l.apply(scope,args));if(stop){break;}}while(l);}else{queue[l.zIndex]=l;}}else{out.push(l.apply(scope,args));if(stop){break;}}}stop=oldstop;current_event=ce;return out;};// Undocumented. Debug only.\n\teve._events=events;/*\\\n\t * eve.listeners\n\t [ method ]\n\t\n\t * Internal method which gives you array of all event handlers that will be triggered by the given `name`.\n\t\n\t > Arguments\n\t\n\t - name (string) name of the event, dot (`.`) or slash (`/`) separated\n\t\n\t = (array) array of event handlers\n\t \\*/eve.listeners=function(name){var names=name.split(separator),e=events,item,items,k,i,ii,j,jj,nes,es=[e],out=[];for(i=0,ii=names.length;i<ii;i++){nes=[];for(j=0,jj=es.length;j<jj;j++){e=es[j].n;items=[e[names[i]],e[wildcard]];k=2;while(k--){item=items[k];if(item){nes.push(item);out=out.concat(item.f||[]);}}}es=nes;}return out;};/*\\\n\t * eve.on\n\t [ method ]\n\t **\n\t * Binds given event handler with a given name. You can use wildcards “`*`” for the names:\n\t | eve.on(\"*.under.*\", f);\n\t | eve(\"mouse.under.floor\"); // triggers f\n\t * Use @eve to trigger the listener.\n\t **\n\t > Arguments\n\t **\n\t - name (string) name of the event, dot (`.`) or slash (`/`) separated, with optional wildcards\n\t - f (function) event handler function\n\t **\n\t = (function) returned function accepts a single numeric parameter that represents z-index of the handler. It is an optional feature and only used when you need to ensure that some subset of handlers will be invoked in a given order, despite of the order of assignment. \n\t > Example:\n\t | eve.on(\"mouse\", eatIt)(2);\n\t | eve.on(\"mouse\", scream);\n\t | eve.on(\"mouse\", catchIt)(1);\n\t * This will ensure that `catchIt` function will be called before `eatIt`.\n\t *\n\t * If you want to put your handler before non-indexed handlers, specify a negative value.\n\t * Note: I assume most of the time you don’t need to worry about z-index, but it’s nice to have this feature “just in case”.\n\t \\*/eve.on=function(name,f){name=String(name);if(typeof f!=\"function\"){return function(){};}var names=name.split(comaseparator);for(var i=0,ii=names.length;i<ii;i++){(function(name){var names=name.split(separator),e=events,exist;for(var i=0,ii=names.length;i<ii;i++){e=e.n;e=e.hasOwnProperty(names[i])&&e[names[i]]||(e[names[i]]={n:{}});}e.f=e.f||[];for(i=0,ii=e.f.length;i<ii;i++){if(e.f[i]==f){exist=true;break;}}!exist&&e.f.push(f);})(names[i]);}return function(zIndex){if(+zIndex==+zIndex){f.zIndex=+zIndex;}};};/*\\\n\t * eve.f\n\t [ method ]\n\t **\n\t * Returns function that will fire given event with optional arguments.\n\t * Arguments that will be passed to the result function will be also\n\t * concated to the list of final arguments.\n\t | el.onclick = eve.f(\"click\", 1, 2);\n\t | eve.on(\"click\", function (a, b, c) {\n\t | console.log(a, b, c); // 1, 2, [event object]\n\t | });\n\t > Arguments\n\t - event (string) event name\n\t - varargs (…) and any other arguments\n\t = (function) possible event handler function\n\t \\*/eve.f=function(event){var attrs=[].slice.call(arguments,1);return function(){eve.apply(null,[event,null].concat(attrs).concat([].slice.call(arguments,0)));};};/*\\\n\t * eve.stop\n\t [ method ]\n\t **\n\t * Is used inside an event handler to stop the event, preventing any subsequent listeners from firing.\n\t \\*/eve.stop=function(){stop=1;};/*\\\n\t * eve.nt\n\t [ method ]\n\t **\n\t * Could be used inside event handler to figure out actual name of the event.\n\t **\n\t > Arguments\n\t **\n\t - subname (string) #optional subname of the event\n\t **\n\t = (string) name of the event, if `subname` is not specified\n\t * or\n\t = (boolean) `true`, if current event’s name contains `subname`\n\t \\*/eve.nt=function(subname){if(subname){return new RegExp(\"(?:\\\\.|\\\\/|^)\"+subname+\"(?:\\\\.|\\\\/|$)\").test(current_event);}return current_event;};/*\\\n\t * eve.nts\n\t [ method ]\n\t **\n\t * Could be used inside event handler to figure out actual name of the event.\n\t **\n\t **\n\t = (array) names of the event\n\t \\*/eve.nts=function(){return current_event.split(separator);};/*\\\n\t * eve.off\n\t [ method ]\n\t **\n\t * Removes given function from the list of event listeners assigned to given name.\n\t * If no arguments specified all the events will be cleared.\n\t **\n\t > Arguments\n\t **\n\t - name (string) name of the event, dot (`.`) or slash (`/`) separated, with optional wildcards\n\t - f (function) event handler function\n\t \\*//*\\\n\t * eve.unbind\n\t [ method ]\n\t **\n\t * See @eve.off\n\t \\*/eve.off=eve.unbind=function(name,f){if(!name){eve._events=events={n:{}};return;}var names=name.split(comaseparator);if(names.length>1){for(var i=0,ii=names.length;i<ii;i++){eve.off(names[i],f);}return;}names=name.split(separator);var e,key,splice,i,ii,j,jj,cur=[events];for(i=0,ii=names.length;i<ii;i++){for(j=0;j<cur.length;j+=splice.length-2){splice=[j,1];e=cur[j].n;if(names[i]!=wildcard){if(e[names[i]]){splice.push(e[names[i]]);}}else{for(key in e){if(e[has](key)){splice.push(e[key]);}}}cur.splice.apply(cur,splice);}}for(i=0,ii=cur.length;i<ii;i++){e=cur[i];while(e.n){if(f){if(e.f){for(j=0,jj=e.f.length;j<jj;j++){if(e.f[j]==f){e.f.splice(j,1);break;}}!e.f.length&&delete e.f;}for(key in e.n){if(e.n[has](key)&&e.n[key].f){var funcs=e.n[key].f;for(j=0,jj=funcs.length;j<jj;j++){if(funcs[j]==f){funcs.splice(j,1);break;}}!funcs.length&&delete e.n[key].f;}}}else{delete e.f;for(key in e.n){if(e.n[has](key)&&e.n[key].f){delete e.n[key].f;}}}e=e.n;}}};/*\\\n\t * eve.once\n\t [ method ]\n\t **\n\t * Binds given event handler with a given name to only run once then unbind itself.\n\t | eve.once(\"login\", f);\n\t | eve(\"login\"); // triggers f\n\t | eve(\"login\"); // no listeners\n\t * Use @eve to trigger the listener.\n\t **\n\t > Arguments\n\t **\n\t - name (string) name of the event, dot (`.`) or slash (`/`) separated, with optional wildcards\n\t - f (function) event handler function\n\t **\n\t = (function) same return function as @eve.on\n\t \\*/eve.once=function(name,f){var f2=function f2(){eve.unbind(name,f2);return f.apply(this,arguments);};return eve.on(name,f2);};/*\\\n\t * eve.version\n\t [ property (string) ]\n\t **\n\t * Current version of the library.\n\t \\*/eve.version=version;eve.toString=function(){return\"You are running Eve \"+version;};typeof module!=\"undefined\"&&module.exports?module.exports=eve: true?!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_LOCAL_MODULE_0__ = (function(){return eve;}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__))):glob.eve=eve;})(this);(function(glob,factory){// AMD support\n\tif(true){// Define as an anonymous module\n\t!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__WEBPACK_LOCAL_MODULE_0__], __WEBPACK_AMD_DEFINE_RESULT__ = function(eve){return factory(glob,eve);}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));}else if(typeof exports!='undefined'){// Next for Node.js or CommonJS\n\tvar eve=require('eve');module.exports=factory(glob,eve);}else{// Browser globals (glob is window)\n\t// Snap adds itself to window\n\tfactory(glob,glob.eve);}})(window||this,function(window,eve){// Copyright (c) 2013 Adobe Systems Incorporated. All rights reserved.\n\t// \n\t// Licensed under the Apache License, Version 2.0 (the \"License\");\n\t// you may not use this file except in compliance with the License.\n\t// You may obtain a copy of the License at\n\t// \n\t// http://www.apache.org/licenses/LICENSE-2.0\n\t// \n\t// Unless required by applicable law or agreed to in writing, software\n\t// distributed under the License is distributed on an \"AS IS\" BASIS,\n\t// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\t// See the License for the specific language governing permissions and\n\t// limitations under the License.\n\tvar mina=function(eve){var animations={},requestAnimFrame=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(callback){setTimeout(callback,16);},isArray=Array.isArray||function(a){return a instanceof Array||Object.prototype.toString.call(a)==\"[object Array]\";},idgen=0,idprefix=\"M\"+(+new Date()).toString(36),ID=function ID(){return idprefix+(idgen++).toString(36);},diff=function diff(a,b,A,B){if(isArray(a)){res=[];for(var i=0,ii=a.length;i<ii;i++){res[i]=diff(a[i],b,A[i],B);}return res;}var dif=(A-a)/(B-b);return function(bb){return a+dif*(bb-b);};},timer=Date.now||function(){return+new Date();},sta=function sta(val){var a=this;if(val==null){return a.s;}var ds=a.s-val;a.b+=a.dur*ds;a.B+=a.dur*ds;a.s=val;},speed=function speed(val){var a=this;if(val==null){return a.spd;}a.spd=val;},duration=function duration(val){var a=this;if(val==null){return a.dur;}a.s=a.s*val/a.dur;a.dur=val;},stopit=function stopit(){var a=this;delete animations[a.id];a.update();eve(\"mina.stop.\"+a.id,a);},pause=function pause(){var a=this;if(a.pdif){return;}delete animations[a.id];a.update();a.pdif=a.get()-a.b;},resume=function resume(){var a=this;if(!a.pdif){return;}a.b=a.get()-a.pdif;delete a.pdif;animations[a.id]=a;},update=function update(){var a=this,res;if(isArray(a.start)){res=[];for(var j=0,jj=a.start.length;j<jj;j++){res[j]=+a.start[j]+(a.end[j]-a.start[j])*a.easing(a.s);}}else{res=+a.start+(a.end-a.start)*a.easing(a.s);}a.set(res);},frame=function frame(){var len=0;for(var i in animations){if(animations.hasOwnProperty(i)){var a=animations[i],b=a.get(),res;len++;a.s=(b-a.b)/(a.dur/a.spd);if(a.s>=1){delete animations[i];a.s=1;len--;(function(a){setTimeout(function(){eve(\"mina.finish.\"+a.id,a);});})(a);}a.update();}}len&&requestAnimFrame(frame);},/*\\\n\t * mina\n\t [ method ]\n\t **\n\t * Generic animation of numbers\n\t **\n\t - a (number) start _slave_ number\n\t - A (number) end _slave_ number\n\t - b (number) start _master_ number (start time in general case)\n\t - B (number) end _master_ number (end time in gereal case)\n\t - get (function) getter of _master_ number (see @mina.time)\n\t - set (function) setter of _slave_ number\n\t - easing (function) #optional easing function, default is @mina.linear\n\t = (object) animation descriptor\n\t o {\n\t o id (string) animation id,\n\t o start (number) start _slave_ number,\n\t o end (number) end _slave_ number,\n\t o b (number) start _master_ number,\n\t o s (number) animation status (0..1),\n\t o dur (number) animation duration,\n\t o spd (number) animation speed,\n\t o get (function) getter of _master_ number (see @mina.time),\n\t o set (function) setter of _slave_ number,\n\t o easing (function) easing function, default is @mina.linear,\n\t o status (function) status getter/setter,\n\t o speed (function) speed getter/setter,\n\t o duration (function) duration getter/setter,\n\t o stop (function) animation stopper\n\t o pause (function) pauses the animation\n\t o resume (function) resumes the animation\n\t o update (function) calles setter with the right value of the animation\n\t o }\n\t \\*/mina=function mina(a,A,b,B,get,set,easing){var anim={id:ID(),start:a,end:A,b:b,s:0,dur:B-b,spd:1,get:get,set:set,easing:easing||mina.linear,status:sta,speed:speed,duration:duration,stop:stopit,pause:pause,resume:resume,update:update};animations[anim.id]=anim;var len=0,i;for(i in animations){if(animations.hasOwnProperty(i)){len++;if(len==2){break;}}}len==1&&requestAnimFrame(frame);return anim;};/*\\\n\t * mina.time\n\t [ method ]\n\t **\n\t * Returns the current time. Equivalent to:\n\t | function () {\n\t | return (new Date).getTime();\n\t | }\n\t \\*/mina.time=timer;/*\\\n\t * mina.getById\n\t [ method ]\n\t **\n\t * Returns an animation by its id\n\t - id (string) animation's id\n\t = (object) See @mina\n\t \\*/mina.getById=function(id){return animations[id]||null;};/*\\\n\t * mina.linear\n\t [ method ]\n\t **\n\t * Default linear easing\n\t - n (number) input 0..1\n\t = (number) output 0..1\n\t \\*/mina.linear=function(n){return n;};/*\\\n\t * mina.easeout\n\t [ method ]\n\t **\n\t * Easeout easing\n\t - n (number) input 0..1\n\t = (number) output 0..1\n\t \\*/mina.easeout=function(n){return Math.pow(n,1.7);};/*\\\n\t * mina.easein\n\t [ method ]\n\t **\n\t * Easein easing\n\t - n (number) input 0..1\n\t = (number) output 0..1\n\t \\*/mina.easein=function(n){return Math.pow(n,.48);};/*\\\n\t * mina.easeinout\n\t [ method ]\n\t **\n\t * Easeinout easing\n\t - n (number) input 0..1\n\t = (number) output 0..1\n\t \\*/mina.easeinout=function(n){if(n==1){return 1;}if(n==0){return 0;}var q=.48-n/1.04,Q=Math.sqrt(.1734+q*q),x=Q-q,X=Math.pow(Math.abs(x),1/3)*(x<0?-1:1),y=-Q-q,Y=Math.pow(Math.abs(y),1/3)*(y<0?-1:1),t=X+Y+.5;return(1-t)*3*t*t+t*t*t;};/*\\\n\t * mina.backin\n\t [ method ]\n\t **\n\t * Backin easing\n\t - n (number) input 0..1\n\t = (number) output 0..1\n\t \\*/mina.backin=function(n){if(n==1){return 1;}var s=1.70158;return n*n*((s+1)*n-s);};/*\\\n\t * mina.backout\n\t [ method ]\n\t **\n\t * Backout easing\n\t - n (number) input 0..1\n\t = (number) output 0..1\n\t \\*/mina.backout=function(n){if(n==0){return 0;}n=n-1;var s=1.70158;return n*n*((s+1)*n+s)+1;};/*\\\n\t * mina.elastic\n\t [ method ]\n\t **\n\t * Elastic easing\n\t - n (number) input 0..1\n\t = (number) output 0..1\n\t \\*/mina.elastic=function(n){if(n==!!n){return n;}return Math.pow(2,-10*n)*Math.sin((n-.075)*(2*Math.PI)/.3)+1;};/*\\\n\t * mina.bounce\n\t [ method ]\n\t **\n\t * Bounce easing\n\t - n (number) input 0..1\n\t = (number) output 0..1\n\t \\*/mina.bounce=function(n){var s=7.5625,p=2.75,l;if(n<1/p){l=s*n*n;}else{if(n<2/p){n-=1.5/p;l=s*n*n+.75;}else{if(n<2.5/p){n-=2.25/p;l=s*n*n+.9375;}else{n-=2.625/p;l=s*n*n+.984375;}}}return l;};window.mina=mina;return mina;}(typeof eve==\"undefined\"?function(){}:eve);// Copyright (c) 2013 - 2015 Adobe Systems Incorporated. All rights reserved.\n\t// \n\t// Licensed under the Apache License, Version 2.0 (the \"License\");\n\t// you may not use this file except in compliance with the License.\n\t// You may obtain a copy of the License at\n\t// \n\t// http://www.apache.org/licenses/LICENSE-2.0\n\t// \n\t// Unless required by applicable law or agreed to in writing, software\n\t// distributed under the License is distributed on an \"AS IS\" BASIS,\n\t// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\t// See the License for the specific language governing permissions and\n\t// limitations under the License.\n\tvar Snap=function(root){Snap.version=\"0.4.0\";/*\\\n\t * Snap\n\t [ method ]\n\t **\n\t * Creates a drawing surface or wraps existing SVG element.\n\t **\n\t - width (number|string) width of surface\n\t - height (number|string) height of surface\n\t * or\n\t - DOM (SVGElement) element to be wrapped into Snap structure\n\t * or\n\t - array (array) array of elements (will return set of elements)\n\t * or\n\t - query (string) CSS query selector\n\t = (object) @Element\n\t\\*/function Snap(w,h){if(w){if(w.nodeType){return wrap(w);}if(is(w,\"array\")&&Snap.set){return Snap.set.apply(Snap,w);}if(w instanceof Element){return w;}if(h==null){w=glob.doc.querySelector(String(w));return wrap(w);}}w=w==null?\"100%\":w;h=h==null?\"100%\":h;return new Paper(w,h);}Snap.toString=function(){return\"Snap v\"+this.version;};Snap._={};var glob={win:root.window,doc:root.window.document};Snap._.glob=glob;var has=\"hasOwnProperty\",Str=String,toFloat=parseFloat,toInt=parseInt,math=Math,mmax=math.max,mmin=math.min,abs=math.abs,pow=math.pow,PI=math.PI,round=math.round,E=\"\",S=\" \",objectToString=Object.prototype.toString,ISURL=/^url\\(['\"]?([^\\)]+?)['\"]?\\)$/i,colourRegExp=/^\\s*((#[a-f\\d]{6})|(#[a-f\\d]{3})|rgba?\\(\\s*([\\d\\.]+%?\\s*,\\s*[\\d\\.]+%?\\s*,\\s*[\\d\\.]+%?(?:\\s*,\\s*[\\d\\.]+%?)?)\\s*\\)|hsba?\\(\\s*([\\d\\.]+(?:deg|\\xb0|%)?\\s*,\\s*[\\d\\.]+%?\\s*,\\s*[\\d\\.]+(?:%?\\s*,\\s*[\\d\\.]+)?%?)\\s*\\)|hsla?\\(\\s*([\\d\\.]+(?:deg|\\xb0|%)?\\s*,\\s*[\\d\\.]+%?\\s*,\\s*[\\d\\.]+(?:%?\\s*,\\s*[\\d\\.]+)?%?)\\s*\\))\\s*$/i,bezierrg=/^(?:cubic-)?bezier\\(([^,]+),([^,]+),([^,]+),([^\\)]+)\\)/,reURLValue=/^url\\(#?([^)]+)\\)$/,separator=Snap._.separator=/[,\\s]+/,whitespace=/[\\s]/g,commaSpaces=/[\\s]*,[\\s]*/,hsrg={hs:1,rg:1},pathCommand=/([a-z])[\\s,]*((-?\\d*\\.?\\d*(?:e[\\-+]?\\d+)?[\\s]*,?[\\s]*)+)/ig,tCommand=/([rstm])[\\s,]*((-?\\d*\\.?\\d*(?:e[\\-+]?\\d+)?[\\s]*,?[\\s]*)+)/ig,pathValues=/(-?\\d*\\.?\\d*(?:e[\\-+]?\\\\d+)?)[\\s]*,?[\\s]*/ig,idgen=0,idprefix=\"S\"+(+new Date()).toString(36),ID=function ID(el){return(el&&el.type?el.type:E)+idprefix+(idgen++).toString(36);},xlink=\"http://www.w3.org/1999/xlink\",xmlns=\"http://www.w3.org/2000/svg\",hub={},URL=Snap.url=function(url){return\"url('#\"+url+\"')\";};function $(el,attr){if(attr){if(el==\"#text\"){el=glob.doc.createTextNode(attr.text||attr[\"#text\"]||\"\");}if(el==\"#comment\"){el=glob.doc.createComment(attr.text||attr[\"#text\"]||\"\");}if(typeof el==\"string\"){el=$(el);}if(typeof attr==\"string\"){if(el.nodeType==1){if(attr.substring(0,6)==\"xlink:\"){return el.getAttributeNS(xlink,attr.substring(6));}if(attr.substring(0,4)==\"xml:\"){return el.getAttributeNS(xmlns,attr.substring(4));}return el.getAttribute(attr);}else if(attr==\"text\"){return el.nodeValue;}else{return null;}}if(el.nodeType==1){for(var key in attr){if(attr[has](key)){var val=Str(attr[key]);if(val){if(key.substring(0,6)==\"xlink:\"){el.setAttributeNS(xlink,key.substring(6),val);}else if(key.substring(0,4)==\"xml:\"){el.setAttributeNS(xmlns,key.substring(4),val);}else{el.setAttribute(key,val);}}else{el.removeAttribute(key);}}}}else if(\"text\"in attr){el.nodeValue=attr.text;}}else{el=glob.doc.createElementNS(xmlns,el);}return el;}Snap._.$=$;Snap._.id=ID;function getAttrs(el){var attrs=el.attributes,name,out={};for(var i=0;i<attrs.length;i++){if(attrs[i].namespaceURI==xlink){name=\"xlink:\";}else{name=\"\";}name+=attrs[i].name;out[name]=attrs[i].textContent;}return out;}function is(o,type){type=Str.prototype.toLowerCase.call(type);if(type==\"finite\"){return isFinite(o);}if(type==\"array\"&&(o instanceof Array||Array.isArray&&Array.isArray(o))){return true;}return type==\"null\"&&o===null||type==(typeof o===\"undefined\"?\"undefined\":_typeof(o))&&o!==null||type==\"object\"&&o===Object(o)||objectToString.call(o).slice(8,-1).toLowerCase()==type;}/*\\\n\t * Snap.format\n\t [ method ]\n\t **\n\t * Replaces construction of type `{<name>}` to the corresponding argument\n\t **\n\t - token (string) string to format\n\t - json (object) object which properties are used as a replacement\n\t = (string) formatted string\n\t > Usage\n\t | // this draws a rectangular shape equivalent to \"M10,20h40v50h-40z\"\n\t | paper.path(Snap.format(\"M{x},{y}h{dim.width}v{dim.height}h{dim['negative width']}z\", {\n\t | x: 10,\n\t | y: 20,\n\t | dim: {\n\t | width: 40,\n\t | height: 50,\n\t | \"negative width\": -40\n\t | }\n\t | }));\n\t\\*/Snap.format=function(){var tokenRegex=/\\{([^\\}]+)\\}/g,objNotationRegex=/(?:(?:^|\\.)(.+?)(?=\\[|\\.|$|\\()|\\[('|\")(.+?)\\2\\])(\\(\\))?/g,// matches .xxxxx or [\"xxxxx\"] to run over object properties\n\treplacer=function replacer(all,key,obj){var res=obj;key.replace(objNotationRegex,function(all,name,quote,quotedName,isFunc){name=name||quotedName;if(res){if(name in res){res=res[name];}typeof res==\"function\"&&isFunc&&(res=res());}});res=(res==null||res==obj?all:res)+\"\";return res;};return function(str,obj){return Str(str).replace(tokenRegex,function(all,key){return replacer(all,key,obj);});};}();function clone(obj){if(typeof obj==\"function\"||Object(obj)!==obj){return obj;}var res=new obj.constructor();for(var key in obj){if(obj[has](key)){res[key]=clone(obj[key]);}}return res;}Snap._.clone=clone;function repush(array,item){for(var i=0,ii=array.length;i<ii;i++){if(array[i]===item){return array.push(array.splice(i,1)[0]);}}}function cacher(f,scope,postprocessor){function newf(){var arg=Array.prototype.slice.call(arguments,0),args=arg.join(\"␀\"),cache=newf.cache=newf.cache||{},count=newf.count=newf.count||[];if(cache[has](args)){repush(count,args);return postprocessor?postprocessor(cache[args]):cache[args];}count.length>=1e3&&delete cache[count.shift()];count.push(args);cache[args]=f.apply(scope,arg);return postprocessor?postprocessor(cache[args]):cache[args];}return newf;}Snap._.cacher=cacher;function angle(x1,y1,x2,y2,x3,y3){if(x3==null){var x=x1-x2,y=y1-y2;if(!x&&!y){return 0;}return(180+math.atan2(-y,-x)*180/PI+360)%360;}else{return angle(x1,y1,x3,y3)-angle(x2,y2,x3,y3);}}function rad(deg){return deg%360*PI/180;}function deg(rad){return rad*180/PI%360;}function x_y(){return this.x+S+this.y;}function x_y_w_h(){return this.x+S+this.y+S+this.width+\" \\xd7 \"+this.height;}/*\\\n\t * Snap.rad\n\t [ method ]\n\t **\n\t * Transform angle to radians\n\t - deg (number) angle in degrees\n\t = (number) angle in radians\n\t\\*/Snap.rad=rad;/*\\\n\t * Snap.deg\n\t [ method ]\n\t **\n\t * Transform angle to degrees\n\t - rad (number) angle in radians\n\t = (number) angle in degrees\n\t\\*/Snap.deg=deg;/*\\\n\t * Snap.sin\n\t [ method ]\n\t **\n\t * Equivalent to `Math.sin()` only works with degrees, not radians.\n\t - angle (number) angle in degrees\n\t = (number) sin\n\t\\*/Snap.sin=function(angle){return math.sin(Snap.rad(angle));};/*\\\n\t * Snap.tan\n\t [ method ]\n\t **\n\t * Equivalent to `Math.tan()` only works with degrees, not radians.\n\t - angle (number) angle in degrees\n\t = (number) tan\n\t\\*/Snap.tan=function(angle){return math.tan(Snap.rad(angle));};/*\\\n\t * Snap.cos\n\t [ method ]\n\t **\n\t * Equivalent to `Math.cos()` only works with degrees, not radians.\n\t - angle (number) angle in degrees\n\t = (number) cos\n\t\\*/Snap.cos=function(angle){return math.cos(Snap.rad(angle));};/*\\\n\t * Snap.asin\n\t [ method ]\n\t **\n\t * Equivalent to `Math.asin()` only works with degrees, not radians.\n\t - num (number) value\n\t = (number) asin in degrees\n\t\\*/Snap.asin=function(num){return Snap.deg(math.asin(num));};/*\\\n\t * Snap.acos\n\t [ method ]\n\t **\n\t * Equivalent to `Math.acos()` only works with degrees, not radians.\n\t - num (number) value\n\t = (number) acos in degrees\n\t\\*/Snap.acos=function(num){return Snap.deg(math.acos(num));};/*\\\n\t * Snap.atan\n\t [ method ]\n\t **\n\t * Equivalent to `Math.atan()` only works with degrees, not radians.\n\t - num (number) value\n\t = (number) atan in degrees\n\t\\*/Snap.atan=function(num){return Snap.deg(math.atan(num));};/*\\\n\t * Snap.atan2\n\t [ method ]\n\t **\n\t * Equivalent to `Math.atan2()` only works with degrees, not radians.\n\t - num (number) value\n\t = (number) atan2 in degrees\n\t\\*/Snap.atan2=function(num){return Snap.deg(math.atan2(num));};/*\\\n\t * Snap.angle\n\t [ method ]\n\t **\n\t * Returns an angle between two or three points\n\t > Parameters\n\t - x1 (number) x coord of first point\n\t - y1 (number) y coord of first point\n\t - x2 (number) x coord of second point\n\t - y2 (number) y coord of second point\n\t - x3 (number) #optional x coord of third point\n\t - y3 (number) #optional y coord of third point\n\t = (number) angle in degrees\n\t\\*/Snap.angle=angle;/*\\\n\t * Snap.len\n\t [ method ]\n\t **\n\t * Returns distance between two points\n\t > Parameters\n\t - x1 (number) x coord of first point\n\t - y1 (number) y coord of first point\n\t - x2 (number) x coord of second point\n\t - y2 (number) y coord of second point\n\t = (number) distance\n\t\\*/Snap.len=function(x1,y1,x2,y2){return Math.sqrt(Snap.len2(x1,y1,x2,y2));};/*\\\n\t * Snap.len2\n\t [ method ]\n\t **\n\t * Returns squared distance between two points\n\t > Parameters\n\t - x1 (number) x coord of first point\n\t - y1 (number) y coord of first point\n\t - x2 (number) x coord of second point\n\t - y2 (number) y coord of second point\n\t = (number) distance\n\t\\*/Snap.len2=function(x1,y1,x2,y2){return(x1-x2)*(x1-x2)+(y1-y2)*(y1-y2);};/*\\\n\t * Snap.closestPoint\n\t [ method ]\n\t **\n\t * Returns closest point to a given one on a given path.\n\t > Parameters\n\t - path (Element) path element\n\t - x (number) x coord of a point\n\t - y (number) y coord of a point\n\t = (object) in format\n\t {\n\t x (number) x coord of the point on the path\n\t y (number) y coord of the point on the path\n\t length (number) length of the path to the point\n\t distance (number) distance from the given point to the path\n\t }\n\t\\*/// Copied from http://bl.ocks.org/mbostock/8027637\n\tSnap.closestPoint=function(path,x,y){function distance2(p){var dx=p.x-x,dy=p.y-y;return dx*dx+dy*dy;}var pathNode=path.node,pathLength=pathNode.getTotalLength(),precision=pathLength/pathNode.pathSegList.numberOfItems*.125,best,bestLength,bestDistance=Infinity;// linear scan for coarse approximation\n\tfor(var scan,scanLength=0,scanDistance;scanLength<=pathLength;scanLength+=precision){if((scanDistance=distance2(scan=pathNode.getPointAtLength(scanLength)))<bestDistance){best=scan,bestLength=scanLength,bestDistance=scanDistance;}}// binary search for precise estimate\n\tprecision*=.5;while(precision>.5){var before,after,beforeLength,afterLength,beforeDistance,afterDistance;if((beforeLength=bestLength-precision)>=0&&(beforeDistance=distance2(before=pathNode.getPointAtLength(beforeLength)))<bestDistance){best=before,bestLength=beforeLength,bestDistance=beforeDistance;}else if((afterLength=bestLength+precision)<=pathLength&&(afterDistance=distance2(after=pathNode.getPointAtLength(afterLength)))<bestDistance){best=after,bestLength=afterLength,bestDistance=afterDistance;}else{precision*=.5;}}best={x:best.x,y:best.y,length:bestLength,distance:Math.sqrt(bestDistance)};return best;};/*\\\n\t * Snap.is\n\t [ method ]\n\t **\n\t * Handy replacement for the `typeof` operator\n\t - o (…) any object or primitive\n\t - type (string) name of the type, e.g., `string`, `function`, `number`, etc.\n\t = (boolean) `true` if given value is of given type\n\t\\*/Snap.is=is;/*\\\n\t * Snap.snapTo\n\t [ method ]\n\t **\n\t * Snaps given value to given grid\n\t - values (array|number) given array of values or step of the grid\n\t - value (number) value to adjust\n\t - tolerance (number) #optional maximum distance to the target value that would trigger the snap. Default is `10`.\n\t = (number) adjusted value\n\t\\*/Snap.snapTo=function(values,value,tolerance){tolerance=is(tolerance,\"finite\")?tolerance:10;if(is(values,\"array\")){var i=values.length;while(i--){if(abs(values[i]-value)<=tolerance){return values[i];}}}else{values=+values;var rem=value%values;if(rem<tolerance){return value-rem;}if(rem>values-tolerance){return value-rem+values;}}return value;};// Colour\n\t/*\\\n\t * Snap.getRGB\n\t [ method ]\n\t **\n\t * Parses color string as RGB object\n\t - color (string) color string in one of the following formats:\n\t # <ul>\n\t # <li>Color name (<code>red</code>, <code>green</code>, <code>cornflowerblue</code>, etc)</li>\n\t # <li>#••• — shortened HTML color: (<code>#000</code>, <code>#fc0</code>, etc.)</li>\n\t # <li>#•••••• — full length HTML color: (<code>#000000</code>, <code>#bd2300</code>)</li>\n\t # <li>rgb(•••, •••, •••) — red, green and blue channels values: (<code>rgb(200, 100, 0)</code>)</li>\n\t # <li>rgba(•••, •••, •••, •••) — also with opacity</li>\n\t # <li>rgb(•••%, •••%, •••%) — same as above, but in %: (<code>rgb(100%, 175%, 0%)</code>)</li>\n\t # <li>rgba(•••%, •••%, •••%, •••%) — also with opacity</li>\n\t # <li>hsb(•••, •••, •••) — hue, saturation and brightness values: (<code>hsb(0.5, 0.25, 1)</code>)</li>\n\t # <li>hsba(•••, •••, •••, •••) — also with opacity</li>\n\t # <li>hsb(•••%, •••%, •••%) — same as above, but in %</li>\n\t # <li>hsba(•••%, •••%, •••%, •••%) — also with opacity</li>\n\t # <li>hsl(•••, •••, •••) — hue, saturation and luminosity values: (<code>hsb(0.5, 0.25, 0.5)</code>)</li>\n\t # <li>hsla(•••, •••, •••, •••) — also with opacity</li>\n\t # <li>hsl(•••%, •••%, •••%) — same as above, but in %</li>\n\t # <li>hsla(•••%, •••%, •••%, •••%) — also with opacity</li>\n\t # </ul>\n\t * Note that `%` can be used any time: `rgb(20%, 255, 50%)`.\n\t = (object) RGB object in the following format:\n\t o {\n\t o r (number) red,\n\t o g (number) green,\n\t o b (number) blue,\n\t o hex (string) color in HTML/CSS format: #••••••,\n\t o error (boolean) true if string can't be parsed\n\t o }\n\t\\*/Snap.getRGB=cacher(function(colour){if(!colour||!!((colour=Str(colour)).indexOf(\"-\")+1)){return{r:-1,g:-1,b:-1,hex:\"none\",error:1,toString:rgbtoString};}if(colour==\"none\"){return{r:-1,g:-1,b:-1,hex:\"none\",toString:rgbtoString};}!(hsrg[has](colour.toLowerCase().substring(0,2))||colour.charAt()==\"#\")&&(colour=_toHex(colour));if(!colour){return{r:-1,g:-1,b:-1,hex:\"none\",error:1,toString:rgbtoString};}var res,red,green,blue,opacity,t,values,rgb=colour.match(colourRegExp);if(rgb){if(rgb[2]){blue=toInt(rgb[2].substring(5),16);green=toInt(rgb[2].substring(3,5),16);red=toInt(rgb[2].substring(1,3),16);}if(rgb[3]){blue=toInt((t=rgb[3].charAt(3))+t,16);green=toInt((t=rgb[3].charAt(2))+t,16);red=toInt((t=rgb[3].charAt(1))+t,16);}if(rgb[4]){values=rgb[4].split(commaSpaces);red=toFloat(values[0]);values[0].slice(-1)==\"%\"&&(red*=2.55);green=toFloat(values[1]);values[1].slice(-1)==\"%\"&&(green*=2.55);blue=toFloat(values[2]);values[2].slice(-1)==\"%\"&&(blue*=2.55);rgb[1].toLowerCase().slice(0,4)==\"rgba\"&&(opacity=toFloat(values[3]));values[3]&&values[3].slice(-1)==\"%\"&&(opacity/=100);}if(rgb[5]){values=rgb[5].split(commaSpaces);red=toFloat(values[0]);values[0].slice(-1)==\"%\"&&(red/=100);green=toFloat(values[1]);values[1].slice(-1)==\"%\"&&(green/=100);blue=toFloat(values[2]);values[2].slice(-1)==\"%\"&&(blue/=100);(values[0].slice(-3)==\"deg\"||values[0].slice(-1)==\"\\xb0\")&&(red/=360);rgb[1].toLowerCase().slice(0,4)==\"hsba\"&&(opacity=toFloat(values[3]));values[3]&&values[3].slice(-1)==\"%\"&&(opacity/=100);return Snap.hsb2rgb(red,green,blue,opacity);}if(rgb[6]){values=rgb[6].split(commaSpaces);red=toFloat(values[0]);values[0].slice(-1)==\"%\"&&(red/=100);green=toFloat(values[1]);values[1].slice(-1)==\"%\"&&(green/=100);blue=toFloat(values[2]);values[2].slice(-1)==\"%\"&&(blue/=100);(values[0].slice(-3)==\"deg\"||values[0].slice(-1)==\"\\xb0\")&&(red/=360);rgb[1].toLowerCase().slice(0,4)==\"hsla\"&&(opacity=toFloat(values[3]));values[3]&&values[3].slice(-1)==\"%\"&&(opacity/=100);return Snap.hsl2rgb(red,green,blue,opacity);}red=mmin(math.round(red),255);green=mmin(math.round(green),255);blue=mmin(math.round(blue),255);opacity=mmin(mmax(opacity,0),1);rgb={r:red,g:green,b:blue,toString:rgbtoString};rgb.hex=\"#\"+(16777216|blue|green<<8|red<<16).toString(16).slice(1);rgb.opacity=is(opacity,\"finite\")?opacity:1;return rgb;}return{r:-1,g:-1,b:-1,hex:\"none\",error:1,toString:rgbtoString};},Snap);/*\\\n\t * Snap.hsb\n\t [ method ]\n\t **\n\t * Converts HSB values to a hex representation of the color\n\t - h (number) hue\n\t - s (number) saturation\n\t - b (number) value or brightness\n\t = (string) hex representation of the color\n\t\\*/Snap.hsb=cacher(function(h,s,b){return Snap.hsb2rgb(h,s,b).hex;});/*\\\n\t * Snap.hsl\n\t [ method ]\n\t **\n\t * Converts HSL values to a hex representation of the color\n\t - h (number) hue\n\t - s (number) saturation\n\t - l (number) luminosity\n\t = (string) hex representation of the color\n\t\\*/Snap.hsl=cacher(function(h,s,l){return Snap.hsl2rgb(h,s,l).hex;});/*\\\n\t * Snap.rgb\n\t [ method ]\n\t **\n\t * Converts RGB values to a hex representation of the color\n\t - r (number) red\n\t - g (number) green\n\t - b (number) blue\n\t = (string) hex representation of the color\n\t\\*/Snap.rgb=cacher(function(r,g,b,o){if(is(o,\"finite\")){var round=math.round;return\"rgba(\"+[round(r),round(g),round(b),+o.toFixed(2)]+\")\";}return\"#\"+(16777216|b|g<<8|r<<16).toString(16).slice(1);});var _toHex=function toHex(color){var i=glob.doc.getElementsByTagName(\"head\")[0]||glob.doc.getElementsByTagName(\"svg\")[0],red=\"rgb(255, 0, 0)\";_toHex=cacher(function(color){if(color.toLowerCase()==\"red\"){return red;}i.style.color=red;i.style.color=color;var out=glob.doc.defaultView.getComputedStyle(i,E).getPropertyValue(\"color\");return out==red?null:out;});return _toHex(color);},hsbtoString=function hsbtoString(){return\"hsb(\"+[this.h,this.s,this.b]+\")\";},hsltoString=function hsltoString(){return\"hsl(\"+[this.h,this.s,this.l]+\")\";},rgbtoString=function rgbtoString(){return this.opacity==1||this.opacity==null?this.hex:\"rgba(\"+[this.r,this.g,this.b,this.opacity]+\")\";},prepareRGB=function prepareRGB(r,g,b){if(g==null&&is(r,\"object\")&&\"r\"in r&&\"g\"in r&&\"b\"in r){b=r.b;g=r.g;r=r.r;}if(g==null&&is(r,string)){var clr=Snap.getRGB(r);r=clr.r;g=clr.g;b=clr.b;}if(r>1||g>1||b>1){r/=255;g/=255;b/=255;}return[r,g,b];},packageRGB=function packageRGB(r,g,b,o){r=math.round(r*255);g=math.round(g*255);b=math.round(b*255);var rgb={r:r,g:g,b:b,opacity:is(o,\"finite\")?o:1,hex:Snap.rgb(r,g,b),toString:rgbtoString};is(o,\"finite\")&&(rgb.opacity=o);return rgb;};/*\\\n\t * Snap.color\n\t [ method ]\n\t **\n\t * Parses the color string and returns an object featuring the color's component values\n\t - clr (string) color string in one of the supported formats (see @Snap.getRGB)\n\t = (object) Combined RGB/HSB object in the following format:\n\t o {\n\t o r (number) red,\n\t o g (number) green,\n\t o b (number) blue,\n\t o hex (string) color in HTML/CSS format: #••••••,\n\t o error (boolean) `true` if string can't be parsed,\n\t o h (number) hue,\n\t o s (number) saturation,\n\t o v (number) value (brightness),\n\t o l (number) lightness\n\t o }\n\t\\*/Snap.color=function(clr){var rgb;if(is(clr,\"object\")&&\"h\"in clr&&\"s\"in clr&&\"b\"in clr){rgb=Snap.hsb2rgb(clr);clr.r=rgb.r;clr.g=rgb.g;clr.b=rgb.b;clr.opacity=1;clr.hex=rgb.hex;}else if(is(clr,\"object\")&&\"h\"in clr&&\"s\"in clr&&\"l\"in clr){rgb=Snap.hsl2rgb(clr);clr.r=rgb.r;clr.g=rgb.g;clr.b=rgb.b;clr.opacity=1;clr.hex=rgb.hex;}else{if(is(clr,\"string\")){clr=Snap.getRGB(clr);}if(is(clr,\"object\")&&\"r\"in clr&&\"g\"in clr&&\"b\"in clr&&!(\"error\"in clr)){rgb=Snap.rgb2hsl(clr);clr.h=rgb.h;clr.s=rgb.s;clr.l=rgb.l;rgb=Snap.rgb2hsb(clr);clr.v=rgb.b;}else{clr={hex:\"none\"};clr.r=clr.g=clr.b=clr.h=clr.s=clr.v=clr.l=-1;clr.error=1;}}clr.toString=rgbtoString;return clr;};/*\\\n\t * Snap.hsb2rgb\n\t [ method ]\n\t **\n\t * Converts HSB values to an RGB object\n\t - h (number) hue\n\t - s (number) saturation\n\t - v (number) value or brightness\n\t = (object) RGB object in the following format:\n\t o {\n\t o r (number) red,\n\t o g (number) green,\n\t o b (number) blue,\n\t o hex (string) color in HTML/CSS format: #••••••\n\t o }\n\t\\*/Snap.hsb2rgb=function(h,s,v,o){if(is(h,\"object\")&&\"h\"in h&&\"s\"in h&&\"b\"in h){v=h.b;s=h.s;o=h.o;h=h.h;}h*=360;var R,G,B,X,C;h=h%360/60;C=v*s;X=C*(1-abs(h%2-1));R=G=B=v-C;h=~~h;R+=[C,X,0,0,X,C][h];G+=[X,C,C,X,0,0][h];B+=[0,0,X,C,C,X][h];return packageRGB(R,G,B,o);};/*\\\n\t * Snap.hsl2rgb\n\t [ method ]\n\t **\n\t * Converts HSL values to an RGB object\n\t - h (number) hue\n\t - s (number) saturation\n\t - l (number) luminosity\n\t = (object) RGB object in the following format:\n\t o {\n\t o r (number) red,\n\t o g (number) green,\n\t o b (number) blue,\n\t o hex (string) color in HTML/CSS format: #••••••\n\t o }\n\t\\*/Snap.hsl2rgb=function(h,s,l,o){if(is(h,\"object\")&&\"h\"in h&&\"s\"in h&&\"l\"in h){l=h.l;s=h.s;h=h.h;}if(h>1||s>1||l>1){h/=360;s/=100;l/=100;}h*=360;var R,G,B,X,C;h=h%360/60;C=2*s*(l<.5?l:1-l);X=C*(1-abs(h%2-1));R=G=B=l-C/2;h=~~h;R+=[C,X,0,0,X,C][h];G+=[X,C,C,X,0,0][h];B+=[0,0,X,C,C,X][h];return packageRGB(R,G,B,o);};/*\\\n\t * Snap.rgb2hsb\n\t [ method ]\n\t **\n\t * Converts RGB values to an HSB object\n\t - r (number) red\n\t - g (number) green\n\t - b (number) blue\n\t = (object) HSB object in the following format:\n\t o {\n\t o h (number) hue,\n\t o s (number) saturation,\n\t o b (number) brightness\n\t o }\n\t\\*/Snap.rgb2hsb=function(r,g,b){b=prepareRGB(r,g,b);r=b[0];g=b[1];b=b[2];var H,S,V,C;V=mmax(r,g,b);C=V-mmin(r,g,b);H=C==0?null:V==r?(g-b)/C:V==g?(b-r)/C+2:(r-g)/C+4;H=(H+360)%6*60/360;S=C==0?0:C/V;return{h:H,s:S,b:V,toString:hsbtoString};};/*\\\n\t * Snap.rgb2hsl\n\t [ method ]\n\t **\n\t * Converts RGB values to an HSL object\n\t - r (number) red\n\t - g (number) green\n\t - b (number) blue\n\t = (object) HSL object in the following format:\n\t o {\n\t o h (number) hue,\n\t o s (number) saturation,\n\t o l (number) luminosity\n\t o }\n\t\\*/Snap.rgb2hsl=function(r,g,b){b=prepareRGB(r,g,b);r=b[0];g=b[1];b=b[2];var H,S,L,M,m,C;M=mmax(r,g,b);m=mmin(r,g,b);C=M-m;H=C==0?null:M==r?(g-b)/C:M==g?(b-r)/C+2:(r-g)/C+4;H=(H+360)%6*60/360;L=(M+m)/2;S=C==0?0:L<.5?C/(2*L):C/(2-2*L);return{h:H,s:S,l:L,toString:hsltoString};};// Transformations\n\t/*\\\n\t * Snap.parsePathString\n\t [ method ]\n\t **\n\t * Utility method\n\t **\n\t * Parses given path string into an array of arrays of path segments\n\t - pathString (string|array) path string or array of segments (in the last case it is returned straight away)\n\t = (array) array of segments\n\t\\*/Snap.parsePathString=function(pathString){if(!pathString){return null;}var pth=Snap.path(pathString);if(pth.arr){return Snap.path.clone(pth.arr);}var paramCounts={a:7,c:6,o:2,h:1,l:2,m:2,r:4,q:4,s:4,t:2,v:1,u:3,z:0},data=[];if(is(pathString,\"array\")&&is(pathString[0],\"array\")){// rough assumption\n\tdata=Snap.path.clone(pathString);}if(!data.length){Str(pathString).replace(pathCommand,function(a,b,c){var params=[],name=b.toLowerCase();c.replace(pathValues,function(a,b){b&¶ms.push(+b);});if(name==\"m\"&¶ms.length>2){data.push([b].concat(params.splice(0,2)));name=\"l\";b=b==\"m\"?\"l\":\"L\";}if(name==\"o\"&¶ms.length==1){data.push([b,params[0]]);}if(name==\"r\"){data.push([b].concat(params));}else while(params.length>=paramCounts[name]){data.push([b].concat(params.splice(0,paramCounts[name])));if(!paramCounts[name]){break;}}});}data.toString=Snap.path.toString;pth.arr=Snap.path.clone(data);return data;};/*\\\n\t * Snap.parseTransformString\n\t [ method ]\n\t **\n\t * Utility method\n\t **\n\t * Parses given transform string into an array of transformations\n\t - TString (string|array) transform string or array of transformations (in the last case it is returned straight away)\n\t = (array) array of transformations\n\t\\*/var parseTransformString=Snap.parseTransformString=function(TString){if(!TString){return null;}var paramCounts={r:3,s:4,t:2,m:6},data=[];if(is(TString,\"array\")&&is(TString[0],\"array\")){// rough assumption\n\tdata=Snap.path.clone(TString);}if(!data.length){Str(TString).replace(tCommand,function(a,b,c){var params=[],name=b.toLowerCase();c.replace(pathValues,function(a,b){b&¶ms.push(+b);});data.push([b].concat(params));});}data.toString=Snap.path.toString;return data;};function svgTransform2string(tstr){var res=[];tstr=tstr.replace(/(?:^|\\s)(\\w+)\\(([^)]+)\\)/g,function(all,name,params){params=params.split(/\\s*,\\s*|\\s+/);if(name==\"rotate\"&¶ms.length==1){params.push(0,0);}if(name==\"scale\"){if(params.length>2){params=params.slice(0,2);}else if(params.length==2){params.push(0,0);}if(params.length==1){params.push(params[0],0,0);}}if(name==\"skewX\"){res.push([\"m\",1,0,math.tan(rad(params[0])),1,0,0]);}else if(name==\"skewY\"){res.push([\"m\",1,math.tan(rad(params[0])),0,1,0,0]);}else{res.push([name.charAt(0)].concat(params));}return all;});return res;}Snap._.svgTransform2string=svgTransform2string;Snap._.rgTransform=/^[a-z][\\s]*-?\\.?\\d/i;function transform2matrix(tstr,bbox){var tdata=parseTransformString(tstr),m=new Snap.Matrix();if(tdata){for(var i=0,ii=tdata.length;i<ii;i++){var t=tdata[i],tlen=t.length,command=Str(t[0]).toLowerCase(),absolute=t[0]!=command,inver=absolute?m.invert():0,x1,y1,x2,y2,bb;if(command==\"t\"&&tlen==2){m.translate(t[1],0);}else if(command==\"t\"&&tlen==3){if(absolute){x1=inver.x(0,0);y1=inver.y(0,0);x2=inver.x(t[1],t[2]);y2=inver.y(t[1],t[2]);m.translate(x2-x1,y2-y1);}else{m.translate(t[1],t[2]);}}else if(command==\"r\"){if(tlen==2){bb=bb||bbox;m.rotate(t[1],bb.x+bb.width/2,bb.y+bb.height/2);}else if(tlen==4){if(absolute){x2=inver.x(t[2],t[3]);y2=inver.y(t[2],t[3]);m.rotate(t[1],x2,y2);}else{m.rotate(t[1],t[2],t[3]);}}}else if(command==\"s\"){if(tlen==2||tlen==3){bb=bb||bbox;m.scale(t[1],t[tlen-1],bb.x+bb.width/2,bb.y+bb.height/2);}else if(tlen==4){if(absolute){x2=inver.x(t[2],t[3]);y2=inver.y(t[2],t[3]);m.scale(t[1],t[1],x2,y2);}else{m.scale(t[1],t[1],t[2],t[3]);}}else if(tlen==5){if(absolute){x2=inver.x(t[3],t[4]);y2=inver.y(t[3],t[4]);m.scale(t[1],t[2],x2,y2);}else{m.scale(t[1],t[2],t[3],t[4]);}}}else if(command==\"m\"&&tlen==7){m.add(t[1],t[2],t[3],t[4],t[5],t[6]);}}}return m;}Snap._.transform2matrix=transform2matrix;Snap._unit2px=unit2px;var contains=glob.doc.contains||glob.doc.compareDocumentPosition?function(a,b){var adown=a.nodeType==9?a.documentElement:a,bup=b&&b.parentNode;return a==bup||!!(bup&&bup.nodeType==1&&(adown.contains?adown.contains(bup):a.compareDocumentPosition&&a.compareDocumentPosition(bup)&16));}:function(a,b){if(b){while(b){b=b.parentNode;if(b==a){return true;}}}return false;};function getSomeDefs(el){var p=el.node.ownerSVGElement&&wrap(el.node.ownerSVGElement)||el.node.parentNode&&wrap(el.node.parentNode)||Snap.select(\"svg\")||Snap(0,0),pdefs=p.select(\"defs\"),defs=pdefs==null?false:pdefs.node;if(!defs){defs=make(\"defs\",p.node).node;}return defs;}function getSomeSVG(el){return el.node.ownerSVGElement&&wrap(el.node.ownerSVGElement)||Snap.select(\"svg\");}Snap._.getSomeDefs=getSomeDefs;Snap._.getSomeSVG=getSomeSVG;function unit2px(el,name,value){var svg=getSomeSVG(el).node,out={},mgr=svg.querySelector(\".svg---mgr\");if(!mgr){mgr=$(\"rect\");$(mgr,{x:-9e9,y:-9e9,width:10,height:10,\"class\":\"svg---mgr\",fill:\"none\"});svg.appendChild(mgr);}function getW(val){if(val==null){return E;}if(val==+val){return val;}$(mgr,{width:val});try{return mgr.getBBox().width;}catch(e){return 0;}}function getH(val){if(val==null){return E;}if(val==+val){return val;}$(mgr,{height:val});try{return mgr.getBBox().height;}catch(e){return 0;}}function set(nam,f){if(name==null){out[nam]=f(el.attr(nam)||0);}else if(nam==name){out=f(value==null?el.attr(nam)||0:value);}}switch(el.type){case\"rect\":set(\"rx\",getW);set(\"ry\",getH);case\"image\":set(\"width\",getW);set(\"height\",getH);case\"text\":set(\"x\",getW);set(\"y\",getH);break;case\"circle\":set(\"cx\",getW);set(\"cy\",getH);set(\"r\",getW);break;case\"ellipse\":set(\"cx\",getW);set(\"cy\",getH);set(\"rx\",getW);set(\"ry\",getH);break;case\"line\":set(\"x1\",getW);set(\"x2\",getW);set(\"y1\",getH);set(\"y2\",getH);break;case\"marker\":set(\"refX\",getW);set(\"markerWidth\",getW);set(\"refY\",getH);set(\"markerHeight\",getH);break;case\"radialGradient\":set(\"fx\",getW);set(\"fy\",getH);break;case\"tspan\":set(\"dx\",getW);set(\"dy\",getH);break;default:set(name,getW);}svg.removeChild(mgr);return out;}/*\\\n\t * Snap.select\n\t [ method ]\n\t **\n\t * Wraps a DOM element specified by CSS selector as @Element\n\t - query (string) CSS selector of the element\n\t = (Element) the current element\n\t\\*/Snap.select=function(query){query=Str(query).replace(/([^\\\\]):/g,\"$1\\\\:\");return wrap(glob.doc.querySelector(query));};/*\\\n\t * Snap.selectAll\n\t [ method ]\n\t **\n\t * Wraps DOM elements specified by CSS selector as set or array of @Element\n\t - query (string) CSS selector of the element\n\t = (Element) the current element\n\t\\*/Snap.selectAll=function(query){var nodelist=glob.doc.querySelectorAll(query),set=(Snap.set||Array)();for(var i=0;i<nodelist.length;i++){set.push(wrap(nodelist[i]));}return set;};function add2group(list){if(!is(list,\"array\")){list=Array.prototype.slice.call(arguments,0);}var i=0,j=0,node=this.node;while(this[i]){delete this[i++];}for(i=0;i<list.length;i++){if(list[i].type==\"set\"){list[i].forEach(function(el){node.appendChild(el.node);});}else{node.appendChild(list[i].node);}}var children=node.childNodes;for(i=0;i<children.length;i++){this[j++]=wrap(children[i]);}return this;}// Hub garbage collector every 10s\n\tsetInterval(function(){for(var key in hub){if(hub[has](key)){var el=hub[key],node=el.node;if(el.type!=\"svg\"&&!node.ownerSVGElement||el.type==\"svg\"&&(!node.parentNode||\"ownerSVGElement\"in node.parentNode&&!node.ownerSVGElement)){delete hub[key];}}}},1e4);function Element(el){if(el.snap in hub){return hub[el.snap];}var svg;try{svg=el.ownerSVGElement;}catch(e){}/*\\\n\t * Element.node\n\t [ property (object) ]\n\t **\n\t * Gives you a reference to the DOM object, so you can assign event handlers or just mess around.\n\t > Usage\n\t | // draw a circle at coordinate 10,10 with radius of 10\n\t | var c = paper.circle(10, 10, 10);\n\t | c.node.onclick = function () {\n\t | c.attr(\"fill\", \"red\");\n\t | };\n\t \\*/this.node=el;if(svg){this.paper=new Paper(svg);}/*\\\n\t * Element.type\n\t [ property (string) ]\n\t **\n\t * SVG tag name of the given element.\n\t \\*/this.type=el.tagName||el.nodeName;var id=this.id=ID(this);this.anims={};this._={transform:[]};el.snap=id;hub[id]=this;if(this.type==\"g\"){this.add=add2group;}if(this.type in{g:1,mask:1,pattern:1,symbol:1}){for(var method in Paper.prototype){if(Paper.prototype[has](method)){this[method]=Paper.prototype[method];}}}}/*\\\n\t * Element.attr\n\t [ method ]\n\t **\n\t * Gets or sets given attributes of the element.\n\t **\n\t - params (object) contains key-value pairs of attributes you want to set\n\t * or\n\t - param (string) name of the attribute\n\t = (Element) the current element\n\t * or\n\t = (string) value of attribute\n\t > Usage\n\t | el.attr({\n\t | fill: \"#fc0\",\n\t | stroke: \"#000\",\n\t | strokeWidth: 2, // CamelCase...\n\t | \"fill-opacity\": 0.5, // or dash-separated names\n\t | width: \"*=2\" // prefixed values\n\t | });\n\t | console.log(el.attr(\"fill\")); // #fc0\n\t * Prefixed values in format `\"+=10\"` supported. All four operations\n\t * (`+`, `-`, `*` and `/`) could be used. Optionally you can use units for `+`\n\t * and `-`: `\"+=2em\"`.\n\t \\*/Element.prototype.attr=function(params,value){var el=this,node=el.node;if(!params){if(node.nodeType!=1){return{text:node.nodeValue};}var attr=node.attributes,out={};for(var i=0,ii=attr.length;i<ii;i++){out[attr[i].nodeName]=attr[i].nodeValue;}return out;}if(is(params,\"string\")){if(arguments.length>1){var json={};json[params]=value;params=json;}else{return eve(\"snap.util.getattr.\"+params,el).firstDefined();}}for(var att in params){if(params[has](att)){eve(\"snap.util.attr.\"+att,el,params[att]);}}return el;};/*\\\n\t * Snap.parse\n\t [ method ]\n\t **\n\t * Parses SVG fragment and converts it into a @Fragment\n\t **\n\t - svg (string) SVG string\n\t = (Fragment) the @Fragment\n\t\\*/Snap.parse=function(svg){var f=glob.doc.createDocumentFragment(),full=true,div=glob.doc.createElement(\"div\");svg=Str(svg);if(!svg.match(/^\\s*<\\s*svg(?:\\s|>)/)){svg=\"<svg>\"+svg+\"</svg>\";full=false;}div.innerHTML=svg;svg=div.getElementsByTagName(\"svg\")[0];if(svg){if(full){f=svg;}else{while(svg.firstChild){f.appendChild(svg.firstChild);}}}return new Fragment(f);};function Fragment(frag){this.node=frag;}/*\\\n\t * Snap.fragment\n\t [ method ]\n\t **\n\t * Creates a DOM fragment from a given list of elements or strings\n\t **\n\t - varargs (…) SVG string\n\t = (Fragment) the @Fragment\n\t\\*/Snap.fragment=function(){var args=Array.prototype.slice.call(arguments,0),f=glob.doc.createDocumentFragment();for(var i=0,ii=args.length;i<ii;i++){var item=args[i];if(item.node&&item.node.nodeType){f.appendChild(item.node);}if(item.nodeType){f.appendChild(item);}if(typeof item==\"string\"){f.appendChild(Snap.parse(item).node);}}return new Fragment(f);};function make(name,parent){var res=$(name);parent.appendChild(res);var el=wrap(res);return el;}function Paper(w,h){var res,desc,defs,proto=Paper.prototype;if(w&&w.tagName==\"svg\"){if(w.snap in hub){return hub[w.snap];}var doc=w.ownerDocument;res=new Element(w);desc=w.getElementsByTagName(\"desc\")[0];defs=w.getElementsByTagName(\"defs\")[0];if(!desc){desc=$(\"desc\");desc.appendChild(doc.createTextNode(\"Created with Snap\"));res.node.appendChild(desc);}if(!defs){defs=$(\"defs\");res.node.appendChild(defs);}res.defs=defs;for(var key in proto){if(proto[has](key)){res[key]=proto[key];}}res.paper=res.root=res;}else{res=make(\"svg\",glob.doc.body);$(res.node,{height:h,version:1.1,width:w,xmlns:xmlns});}return res;}function wrap(dom){if(!dom){return dom;}if(dom instanceof Element||dom instanceof Fragment){return dom;}if(dom.tagName&&dom.tagName.toLowerCase()==\"svg\"){return new Paper(dom);}if(dom.tagName&&dom.tagName.toLowerCase()==\"object\"&&dom.type==\"image/svg+xml\"){return new Paper(dom.contentDocument.getElementsByTagName(\"svg\")[0]);}return new Element(dom);}Snap._.make=make;Snap._.wrap=wrap;/*\\\n\t * Paper.el\n\t [ method ]\n\t **\n\t * Creates an element on paper with a given name and no attributes\n\t **\n\t - name (string) tag name\n\t - attr (object) attributes\n\t = (Element) the current element\n\t > Usage\n\t | var c = paper.circle(10, 10, 10); // is the same as...\n\t | var c = paper.el(\"circle\").attr({\n\t | cx: 10,\n\t | cy: 10,\n\t | r: 10\n\t | });\n\t | // and the same as\n\t | var c = paper.el(\"circle\", {\n\t | cx: 10,\n\t | cy: 10,\n\t | r: 10\n\t | });\n\t\\*/Paper.prototype.el=function(name,attr){var el=make(name,this.node);attr&&el.attr(attr);return el;};/*\\\n\t * Element.children\n\t [ method ]\n\t **\n\t * Returns array of all the children of the element.\n\t = (array) array of Elements\n\t\\*/Element.prototype.children=function(){var out=[],ch=this.node.childNodes;for(var i=0,ii=ch.length;i<ii;i++){out[i]=Snap(ch[i]);}return out;};function jsonFiller(root,o){for(var i=0,ii=root.length;i<ii;i++){var item={type:root[i].type,attr:root[i].attr()},children=root[i].children();o.push(item);if(children.length){jsonFiller(children,item.childNodes=[]);}}}/*\\\n\t * Element.toJSON\n\t [ method ]\n\t **\n\t * Returns object representation of the given element and all its children.\n\t = (object) in format\n\t o {\n\t o type (string) this.type,\n\t o attr (object) attributes map,\n\t o childNodes (array) optional array of children in the same format\n\t o }\n\t\\*/Element.prototype.toJSON=function(){var out=[];jsonFiller([this],out);return out[0];};// default\n\teve.on(\"snap.util.getattr\",function(){var att=eve.nt();att=att.substring(att.lastIndexOf(\".\")+1);var css=att.replace(/[A-Z]/g,function(letter){return\"-\"+letter.toLowerCase();});if(cssAttr[has](css)){return this.node.ownerDocument.defaultView.getComputedStyle(this.node,null).getPropertyValue(css);}else{return $(this.node,att);}});var cssAttr={\"alignment-baseline\":0,\"baseline-shift\":0,\"clip\":0,\"clip-path\":0,\"clip-rule\":0,\"color\":0,\"color-interpolation\":0,\"color-interpolation-filters\":0,\"color-profile\":0,\"color-rendering\":0,\"cursor\":0,\"direction\":0,\"display\":0,\"dominant-baseline\":0,\"enable-background\":0,\"fill\":0,\"fill-opacity\":0,\"fill-rule\":0,\"filter\":0,\"flood-color\":0,\"flood-opacity\":0,\"font\":0,\"font-family\":0,\"font-size\":0,\"font-size-adjust\":0,\"font-stretch\":0,\"font-style\":0,\"font-variant\":0,\"font-weight\":0,\"glyph-orientation-horizontal\":0,\"glyph-orientation-vertical\":0,\"image-rendering\":0,\"kerning\":0,\"letter-spacing\":0,\"lighting-color\":0,\"marker\":0,\"marker-end\":0,\"marker-mid\":0,\"marker-start\":0,\"mask\":0,\"opacity\":0,\"overflow\":0,\"pointer-events\":0,\"shape-rendering\":0,\"stop-color\":0,\"stop-opacity\":0,\"stroke\":0,\"stroke-dasharray\":0,\"stroke-dashoffset\":0,\"stroke-linecap\":0,\"stroke-linejoin\":0,\"stroke-miterlimit\":0,\"stroke-opacity\":0,\"stroke-width\":0,\"text-anchor\":0,\"text-decoration\":0,\"text-rendering\":0,\"unicode-bidi\":0,\"visibility\":0,\"word-spacing\":0,\"writing-mode\":0};eve.on(\"snap.util.attr\",function(value){var att=eve.nt(),attr={};att=att.substring(att.lastIndexOf(\".\")+1);attr[att]=value;var style=att.replace(/-(\\w)/gi,function(all,letter){return letter.toUpperCase();}),css=att.replace(/[A-Z]/g,function(letter){return\"-\"+letter.toLowerCase();});if(cssAttr[has](css)){this.node.style[style]=value==null?E:value;}else{$(this.node,attr);}});(function(proto){})(Paper.prototype);// simple ajax\n\t/*\\\n\t * Snap.ajax\n\t [ method ]\n\t **\n\t * Simple implementation of Ajax\n\t **\n\t - url (string) URL\n\t - postData (object|string) data for post request\n\t - callback (function) callback\n\t - scope (object) #optional scope of callback\n\t * or\n\t - url (string) URL\n\t - callback (function) callback\n\t - scope (object) #optional scope of callback\n\t = (XMLHttpRequest) the XMLHttpRequest object, just in case\n\t\\*/Snap.ajax=function(url,postData,callback,scope){var req=new XMLHttpRequest(),id=ID();if(req){if(is(postData,\"function\")){scope=callback;callback=postData;postData=null;}else if(is(postData,\"object\")){var pd=[];for(var key in postData){if(postData.hasOwnProperty(key)){pd.push(encodeURIComponent(key)+\"=\"+encodeURIComponent(postData[key]));}}postData=pd.join(\"&\");}req.open(postData?\"POST\":\"GET\",url,true);if(postData){req.setRequestHeader(\"X-Requested-With\",\"XMLHttpRequest\");req.setRequestHeader(\"Content-type\",\"application/x-www-form-urlencoded\");}if(callback){eve.once(\"snap.ajax.\"+id+\".0\",callback);eve.once(\"snap.ajax.\"+id+\".200\",callback);eve.once(\"snap.ajax.\"+id+\".304\",callback);}req.onreadystatechange=function(){if(req.readyState!=4)return;eve(\"snap.ajax.\"+id+\".\"+req.status,scope,req);};if(req.readyState==4){return req;}req.send(postData);return req;}};/*\\\n\t * Snap.load\n\t [ method ]\n\t **\n\t * Loads external SVG file as a @Fragment (see @Snap.ajax for more advanced AJAX)\n\t **\n\t - url (string) URL\n\t - callback (function) callback\n\t - scope (object) #optional scope of callback\n\t\\*/Snap.load=function(url,callback,scope){Snap.ajax(url,function(req){var f=Snap.parse(req.responseText);scope?callback.call(scope,f):callback(f);});};var getOffset=function getOffset(elem){var box=elem.getBoundingClientRect(),doc=elem.ownerDocument,body=doc.body,docElem=doc.documentElement,clientTop=docElem.clientTop||body.clientTop||0,clientLeft=docElem.clientLeft||body.clientLeft||0,top=box.top+(g.win.pageYOffset||docElem.scrollTop||body.scrollTop)-clientTop,left=box.left+(g.win.pageXOffset||docElem.scrollLeft||body.scrollLeft)-clientLeft;return{y:top,x:left};};/*\\\n\t * Snap.getElementByPoint\n\t [ method ]\n\t **\n\t * Returns you topmost element under given point.\n\t **\n\t = (object) Snap element object\n\t - x (number) x coordinate from the top left corner of the window\n\t - y (number) y coordinate from the top left corner of the window\n\t > Usage\n\t | Snap.getElementByPoint(mouseX, mouseY).attr({stroke: \"#f00\"});\n\t\\*/Snap.getElementByPoint=function(x,y){var paper=this,svg=paper.canvas,target=glob.doc.elementFromPoint(x,y);if(glob.win.opera&&target.tagName==\"svg\"){var so=getOffset(target),sr=target.createSVGRect();sr.x=x-so.x;sr.y=y-so.y;sr.width=sr.height=1;var hits=target.getIntersectionList(sr,null);if(hits.length){target=hits[hits.length-1];}}if(!target){return null;}return wrap(target);};/*\\\n\t * Snap.plugin\n\t [ method ]\n\t **\n\t * Let you write plugins. You pass in a function with five arguments, like this:\n\t | Snap.plugin(function (Snap, Element, Paper, global, Fragment) {\n\t | Snap.newmethod = function () {};\n\t | Element.prototype.newmethod = function () {};\n\t | Paper.prototype.newmethod = function () {};\n\t | });\n\t * Inside the function you have access to all main objects (and their\n\t * prototypes). This allow you to extend anything you want.\n\t **\n\t - f (function) your plugin body\n\t\\*/Snap.plugin=function(f){f(Snap,Element,Paper,glob,Fragment);};glob.win.Snap=Snap;return Snap;}(window||this);// Copyright (c) 2013 Adobe Systems Incorporated. All rights reserved.\n\t//\n\t// Licensed under the Apache License, Version 2.0 (the \"License\");\n\t// you may not use this file except in compliance with the License.\n\t// You may obtain a copy of the License at\n\t//\n\t// http://www.apache.org/licenses/LICENSE-2.0\n\t//\n\t// Unless required by applicable law or agreed to in writing, software\n\t// distributed under the License is distributed on an \"AS IS\" BASIS,\n\t// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\t// See the License for the specific language governing permissions and\n\t// limitations under the License.\n\tSnap.plugin(function(Snap,Element,Paper,glob,Fragment){var elproto=Element.prototype,is=Snap.is,Str=String,unit2px=Snap._unit2px,$=Snap._.$,make=Snap._.make,getSomeDefs=Snap._.getSomeDefs,has=\"hasOwnProperty\",wrap=Snap._.wrap;/*\\\n\t * Element.getBBox\n\t [ method ]\n\t **\n\t * Returns the bounding box descriptor for the given element\n\t **\n\t = (object) bounding box descriptor:\n\t o {\n\t o cx: (number) x of the center,\n\t o cy: (number) x of the center,\n\t o h: (number) height,\n\t o height: (number) height,\n\t o path: (string) path command for the box,\n\t o r0: (number) radius of a circle that fully encloses the box,\n\t o r1: (number) radius of the smallest circle that can be enclosed,\n\t o r2: (number) radius of the largest circle that can be enclosed,\n\t o vb: (string) box as a viewbox command,\n\t o w: (number) width,\n\t o width: (number) width,\n\t o x2: (number) x of the right side,\n\t o x: (number) x of the left side,\n\t o y2: (number) y of the bottom edge,\n\t o y: (number) y of the top edge\n\t o }\n\t \\*/elproto.getBBox=function(isWithoutTransform){if(!Snap.Matrix||!Snap.path){return this.node.getBBox();}var el=this,m=new Snap.Matrix();if(el.removed){return Snap._.box();}while(el.type==\"use\"){if(!isWithoutTransform){m=m.add(el.transform().localMatrix.translate(el.attr(\"x\")||0,el.attr(\"y\")||0));}if(el.original){el=el.original;}else{var href=el.attr(\"xlink:href\");el=el.original=el.node.ownerDocument.getElementById(href.substring(href.indexOf(\"#\")+1));}}var _=el._,pathfinder=Snap.path.get[el.type]||Snap.path.get.deflt;try{if(isWithoutTransform){_.bboxwt=pathfinder?Snap.path.getBBox(el.realPath=pathfinder(el)):Snap._.box(el.node.getBBox());return Snap._.box(_.bboxwt);}else{el.realPath=pathfinder(el);el.matrix=el.transform().localMatrix;_.bbox=Snap.path.getBBox(Snap.path.map(el.realPath,m.add(el.matrix)));return Snap._.box(_.bbox);}}catch(e){// Firefox doesn’t give you bbox of hidden element\n\treturn Snap._.box();}};var propString=function propString(){return this.string;};function extractTransform(el,tstr){if(tstr==null){var doReturn=true;if(el.type==\"linearGradient\"||el.type==\"radialGradient\"){tstr=el.node.getAttribute(\"gradientTransform\");}else if(el.type==\"pattern\"){tstr=el.node.getAttribute(\"patternTransform\");}else{tstr=el.node.getAttribute(\"transform\");}if(!tstr){return new Snap.Matrix();}tstr=Snap._.svgTransform2string(tstr);}else{if(!Snap._.rgTransform.test(tstr)){tstr=Snap._.svgTransform2string(tstr);}else{tstr=Str(tstr).replace(/\\.{3}|\\u2026/g,el._.transform||E);}if(is(tstr,\"array\")){tstr=Snap.path?Snap.path.toString.call(tstr):Str(tstr);}el._.transform=tstr;}var m=Snap._.transform2matrix(tstr,el.getBBox(1));if(doReturn){return m;}else{el.matrix=m;}}/*\\\n\t * Element.transform\n\t [ method ]\n\t **\n\t * Gets or sets transformation of the element\n\t **\n\t - tstr (string) transform string in Snap or SVG format\n\t = (Element) the current element\n\t * or\n\t = (object) transformation descriptor:\n\t o {\n\t o string (string) transform string,\n\t o globalMatrix (Matrix) matrix of all transformations applied to element or its parents,\n\t o localMatrix (Matrix) matrix of transformations applied only to the element,\n\t o diffMatrix (Matrix) matrix of difference between global and local transformations,\n\t o global (string) global transformation as string,\n\t o local (string) local transformation as string,\n\t o toString (function) returns `string` property\n\t o }\n\t \\*/elproto.transform=function(tstr){var _=this._;if(tstr==null){var papa=this,global=new Snap.Matrix(this.node.getCTM()),local=extractTransform(this),ms=[local],m=new Snap.Matrix(),i,localString=local.toTransformString(),string=Str(local)==Str(this.matrix)?Str(_.transform):localString;while(papa.type!=\"svg\"&&(papa=papa.parent())){ms.push(extractTransform(papa));}i=ms.length;while(i--){m.add(ms[i]);}return{string:string,globalMatrix:global,totalMatrix:m,localMatrix:local,diffMatrix:global.clone().add(local.invert()),global:global.toTransformString(),total:m.toTransformString(),local:localString,toString:propString};}if(tstr instanceof Snap.Matrix){this.matrix=tstr;this._.transform=tstr.toTransformString();}else{extractTransform(this,tstr);}if(this.node){if(this.type==\"linearGradient\"||this.type==\"radialGradient\"){$(this.node,{gradientTransform:this.matrix});}else if(this.type==\"pattern\"){$(this.node,{patternTransform:this.matrix});}else{$(this.node,{transform:this.matrix});}}return this;};/*\\\n\t * Element.parent\n\t [ method ]\n\t **\n\t * Returns the element's parent\n\t **\n\t = (Element) the parent element\n\t \\*/elproto.parent=function(){return wrap(this.node.parentNode);};/*\\\n\t * Element.append\n\t [ method ]\n\t **\n\t * Appends the given element to current one\n\t **\n\t - el (Element|Set) element to append\n\t = (Element) the parent element\n\t \\*//*\\\n\t * Element.add\n\t [ method ]\n\t **\n\t * See @Element.append\n\t \\*/elproto.append=elproto.add=function(el){if(el){if(el.type==\"set\"){var it=this;el.forEach(function(el){it.add(el);});return this;}el=wrap(el);this.node.appendChild(el.node);el.paper=this.paper;}return this;};/*\\\n\t * Element.appendTo\n\t [ method ]\n\t **\n\t * Appends the current element to the given one\n\t **\n\t - el (Element) parent element to append to\n\t = (Element) the child element\n\t \\*/elproto.appendTo=function(el){if(el){el=wrap(el);el.append(this);}return this;};/*\\\n\t * Element.prepend\n\t [ method ]\n\t **\n\t * Prepends the given element to the current one\n\t **\n\t - el (Element) element to prepend\n\t = (Element) the parent element\n\t \\*/elproto.prepend=function(el){if(el){if(el.type==\"set\"){var it=this,first;el.forEach(function(el){if(first){first.after(el);}else{it.prepend(el);}first=el;});return this;}el=wrap(el);var parent=el.parent();this.node.insertBefore(el.node,this.node.firstChild);this.add&&this.add();el.paper=this.paper;this.parent()&&this.parent().add();parent&&parent.add();}return this;};/*\\\n\t * Element.prependTo\n\t [ method ]\n\t **\n\t * Prepends the current element to the given one\n\t **\n\t - el (Element) parent element to prepend to\n\t = (Element) the child element\n\t \\*/elproto.prependTo=function(el){el=wrap(el);el.prepend(this);return this;};/*\\\n\t * Element.before\n\t [ method ]\n\t **\n\t * Inserts given element before the current one\n\t **\n\t - el (Element) element to insert\n\t = (Element) the parent element\n\t \\*/elproto.before=function(el){if(el.type==\"set\"){var it=this;el.forEach(function(el){var parent=el.parent();it.node.parentNode.insertBefore(el.node,it.node);parent&&parent.add();});this.parent().add();return this;}el=wrap(el);var parent=el.parent();this.node.parentNode.insertBefore(el.node,this.node);this.parent()&&this.parent().add();parent&&parent.add();el.paper=this.paper;return this;};/*\\\n\t * Element.after\n\t [ method ]\n\t **\n\t * Inserts given element after the current one\n\t **\n\t - el (Element) element to insert\n\t = (Element) the parent element\n\t \\*/elproto.after=function(el){el=wrap(el);var parent=el.parent();if(this.node.nextSibling){this.node.parentNode.insertBefore(el.node,this.node.nextSibling);}else{this.node.parentNode.appendChild(el.node);}this.parent()&&this.parent().add();parent&&parent.add();el.paper=this.paper;return this;};/*\\\n\t * Element.insertBefore\n\t [ method ]\n\t **\n\t * Inserts the element after the given one\n\t **\n\t - el (Element) element next to whom insert to\n\t = (Element) the parent element\n\t \\*/elproto.insertBefore=function(el){el=wrap(el);var parent=this.parent();el.node.parentNode.insertBefore(this.node,el.node);this.paper=el.paper;parent&&parent.add();el.parent()&&el.parent().add();return this;};/*\\\n\t * Element.insertAfter\n\t [ method ]\n\t **\n\t * Inserts the element after the given one\n\t **\n\t - el (Element) element next to whom insert to\n\t = (Element) the parent element\n\t \\*/elproto.insertAfter=function(el){el=wrap(el);var parent=this.parent();el.node.parentNode.insertBefore(this.node,el.node.nextSibling);this.paper=el.paper;parent&&parent.add();el.parent()&&el.parent().add();return this;};/*\\\n\t * Element.remove\n\t [ method ]\n\t **\n\t * Removes element from the DOM\n\t = (Element) the detached element\n\t \\*/elproto.remove=function(){var parent=this.parent();this.node.parentNode&&this.node.parentNode.removeChild(this.node);delete this.paper;this.removed=true;parent&&parent.add();return this;};/*\\\n\t * Element.select\n\t [ method ]\n\t **\n\t * Gathers the nested @Element matching the given set of CSS selectors\n\t **\n\t - query (string) CSS selector\n\t = (Element) result of query selection\n\t \\*/elproto.select=function(query){query=Str(query).replace(/([^\\\\]):/g,\"$1\\\\:\");return wrap(this.node.querySelector(query));};/*\\\n\t * Element.selectAll\n\t [ method ]\n\t **\n\t * Gathers nested @Element objects matching the given set of CSS selectors\n\t **\n\t - query (string) CSS selector\n\t = (Set|array) result of query selection\n\t \\*/elproto.selectAll=function(query){var nodelist=this.node.querySelectorAll(query),set=(Snap.set||Array)();for(var i=0;i<nodelist.length;i++){set.push(wrap(nodelist[i]));}return set;};/*\\\n\t * Element.asPX\n\t [ method ]\n\t **\n\t * Returns given attribute of the element as a `px` value (not %, em, etc.)\n\t **\n\t - attr (string) attribute name\n\t - value (string) #optional attribute value\n\t = (Element) result of query selection\n\t \\*/elproto.asPX=function(attr,value){if(value==null){value=this.attr(attr);}return+unit2px(this,attr,value);};// SIERRA Element.use(): I suggest adding a note about how to access the original element the returned <use> instantiates. It's a part of SVG with which ordinary web developers may be least familiar.\n\t/*\\\n\t * Element.use\n\t [ method ]\n\t **\n\t * Creates a `<use>` element linked to the current element\n\t **\n\t = (Element) the `<use>` element\n\t \\*/elproto.use=function(){var use,id=this.node.id;if(!id){id=this.id;$(this.node,{id:id});}if(this.type==\"linearGradient\"||this.type==\"radialGradient\"||this.type==\"pattern\"){use=make(this.type,this.node.parentNode);}else{use=make(\"use\",this.node.parentNode);}$(use.node,{\"xlink:href\":\"#\"+id});use.original=this;return use;};function fixids(el){var els=el.selectAll(\"*\"),it,url=/^\\s*url\\((\"|'|)(.*)\\1\\)\\s*$/,ids=[],uses={};function urltest(it,name){var val=$(it.node,name);val=val&&val.match(url);val=val&&val[2];if(val&&val.charAt()==\"#\"){val=val.substring(1);}else{return;}if(val){uses[val]=(uses[val]||[]).concat(function(id){var attr={};attr[name]=URL(id);$(it.node,attr);});}}function linktest(it){var val=$(it.node,\"xlink:href\");if(val&&val.charAt()==\"#\"){val=val.substring(1);}else{return;}if(val){uses[val]=(uses[val]||[]).concat(function(id){it.attr(\"xlink:href\",\"#\"+id);});}}for(var i=0,ii=els.length;i<ii;i++){it=els[i];urltest(it,\"fill\");urltest(it,\"stroke\");urltest(it,\"filter\");urltest(it,\"mask\");urltest(it,\"clip-path\");linktest(it);var oldid=$(it.node,\"id\");if(oldid){$(it.node,{id:it.id});ids.push({old:oldid,id:it.id});}}for(i=0,ii=ids.length;i<ii;i++){var fs=uses[ids[i].old];if(fs){for(var j=0,jj=fs.length;j<jj;j++){fs[j](ids[i].id);}}}}/*\\\n\t * Element.clone\n\t [ method ]\n\t **\n\t * Creates a clone of the element and inserts it after the element\n\t **\n\t = (Element) the clone\n\t \\*/elproto.clone=function(){var clone=wrap(this.node.cloneNode(true));if($(clone.node,\"id\")){$(clone.node,{id:clone.id});}fixids(clone);clone.insertAfter(this);return clone;};/*\\\n\t * Element.toDefs\n\t [ method ]\n\t **\n\t * Moves element to the shared `<defs>` area\n\t **\n\t = (Element) the element\n\t \\*/elproto.toDefs=function(){var defs=getSomeDefs(this);defs.appendChild(this.node);return this;};/*\\\n\t * Element.toPattern\n\t [ method ]\n\t **\n\t * Creates a `<pattern>` element from the current element\n\t **\n\t * To create a pattern you have to specify the pattern rect:\n\t - x (string|number)\n\t - y (string|number)\n\t - width (string|number)\n\t - height (string|number)\n\t = (Element) the `<pattern>` element\n\t * You can use pattern later on as an argument for `fill` attribute:\n\t | var p = paper.path(\"M10-5-10,15M15,0,0,15M0-5-20,15\").attr({\n\t | fill: \"none\",\n\t | stroke: \"#bada55\",\n\t | strokeWidth: 5\n\t | }).pattern(0, 0, 10, 10),\n\t | c = paper.circle(200, 200, 100);\n\t | c.attr({\n\t | fill: p\n\t | });\n\t \\*/elproto.pattern=elproto.toPattern=function(x,y,width,height){var p=make(\"pattern\",getSomeDefs(this));if(x==null){x=this.getBBox();}if(is(x,\"object\")&&\"x\"in x){y=x.y;width=x.width;height=x.height;x=x.x;}$(p.node,{x:x,y:y,width:width,height:height,patternUnits:\"userSpaceOnUse\",id:p.id,viewBox:[x,y,width,height].join(\" \")});p.node.appendChild(this.node);return p;};// SIERRA Element.marker(): clarify what a reference point is. E.g., helps you offset the object from its edge such as when centering it over a path.\n\t// SIERRA Element.marker(): I suggest the method should accept default reference point values. Perhaps centered with (refX = width/2) and (refY = height/2)? Also, couldn't it assume the element's current _width_ and _height_? And please specify what _x_ and _y_ mean: offsets? If so, from where? Couldn't they also be assigned default values?\n\t/*\\\n\t * Element.marker\n\t [ method ]\n\t **\n\t * Creates a `<marker>` element from the current element\n\t **\n\t * To create a marker you have to specify the bounding rect and reference point:\n\t - x (number)\n\t - y (number)\n\t - width (number)\n\t - height (number)\n\t - refX (number)\n\t - refY (number)\n\t = (Element) the `<marker>` element\n\t * You can specify the marker later as an argument for `marker-start`, `marker-end`, `marker-mid`, and `marker` attributes. The `marker` attribute places the marker at every point along the path, and `marker-mid` places them at every point except the start and end.\n\t \\*/// TODO add usage for markers\n\telproto.marker=function(x,y,width,height,refX,refY){var p=make(\"marker\",getSomeDefs(this));if(x==null){x=this.getBBox();}if(is(x,\"object\")&&\"x\"in x){y=x.y;width=x.width;height=x.height;refX=x.refX||x.cx;refY=x.refY||x.cy;x=x.x;}$(p.node,{viewBox:[x,y,width,height].join(\" \"),markerWidth:width,markerHeight:height,orient:\"auto\",refX:refX||0,refY:refY||0,id:p.id});p.node.appendChild(this.node);return p;};// animation\n\tfunction slice(from,to,f){return function(arr){var res=arr.slice(from,to);if(res.length==1){res=res[0];}return f?f(res):res;};}var Animation=function Animation(attr,ms,easing,callback){if(typeof easing==\"function\"&&!easing.length){callback=easing;easing=mina.linear;}this.attr=attr;this.dur=ms;easing&&(this.easing=easing);callback&&(this.callback=callback);};Snap._.Animation=Animation;/*\\\n\t * Snap.animation\n\t [ method ]\n\t **\n\t * Creates an animation object\n\t **\n\t - attr (object) attributes of final destination\n\t - duration (number) duration of the animation, in milliseconds\n\t - easing (function) #optional one of easing functions of @mina or custom one\n\t - callback (function) #optional callback function that fires when animation ends\n\t = (object) animation object\n\t \\*/Snap.animation=function(attr,ms,easing,callback){return new Animation(attr,ms,easing,callback);};/*\\\n\t * Element.inAnim\n\t [ method ]\n\t **\n\t * Returns a set of animations that may be able to manipulate the current element\n\t **\n\t = (object) in format:\n\t o {\n\t o anim (object) animation object,\n\t o mina (object) @mina object,\n\t o curStatus (number) 0..1 — status of the animation: 0 — just started, 1 — just finished,\n\t o status (function) gets or sets the status of the animation,\n\t o stop (function) stops the animation\n\t o }\n\t \\*/elproto.inAnim=function(){var el=this,res=[];for(var id in el.anims){if(el.anims[has](id)){(function(a){res.push({anim:new Animation(a._attrs,a.dur,a.easing,a._callback),mina:a,curStatus:a.status(),status:function status(val){return a.status(val);},stop:function stop(){a.stop();}});})(el.anims[id]);}}return res;};/*\\\n\t * Snap.animate\n\t [ method ]\n\t **\n\t * Runs generic animation of one number into another with a caring function\n\t **\n\t - from (number|array) number or array of numbers\n\t - to (number|array) number or array of numbers\n\t - setter (function) caring function that accepts one number argument\n\t - duration (number) duration, in milliseconds\n\t - easing (function) #optional easing function from @mina or custom\n\t - callback (function) #optional callback function to execute when animation ends\n\t = (object) animation object in @mina format\n\t o {\n\t o id (string) animation id, consider it read-only,\n\t o duration (function) gets or sets the duration of the animation,\n\t o easing (function) easing,\n\t o speed (function) gets or sets the speed of the animation,\n\t o status (function) gets or sets the status of the animation,\n\t o stop (function) stops the animation\n\t o }\n\t | var rect = Snap().rect(0, 0, 10, 10);\n\t | Snap.animate(0, 10, function (val) {\n\t | rect.attr({\n\t | x: val\n\t | });\n\t | }, 1000);\n\t | // in given context is equivalent to\n\t | rect.animate({x: 10}, 1000);\n\t \\*/Snap.animate=function(from,to,setter,ms,easing,callback){if(typeof easing==\"function\"&&!easing.length){callback=easing;easing=mina.linear;}var now=mina.time(),anim=mina(from,to,now,now+ms,mina.time,setter,easing);callback&&eve.once(\"mina.finish.\"+anim.id,callback);return anim;};/*\\\n\t * Element.stop\n\t [ method ]\n\t **\n\t * Stops all the animations for the current element\n\t **\n\t = (Element) the current element\n\t \\*/elproto.stop=function(){var anims=this.inAnim();for(var i=0,ii=anims.length;i<ii;i++){anims[i].stop();}return this;};/*\\\n\t * Element.animate\n\t [ method ]\n\t **\n\t * Animates the given attributes of the element\n\t **\n\t - attrs (object) key-value pairs of destination attributes\n\t - duration (number) duration of the animation in milliseconds\n\t - easing (function) #optional easing function from @mina or custom\n\t - callback (function) #optional callback function that executes when the animation ends\n\t = (Element) the current element\n\t \\*/elproto.animate=function(attrs,ms,easing,callback){if(typeof easing==\"function\"&&!easing.length){callback=easing;easing=mina.linear;}if(attrs instanceof Animation){callback=attrs.callback;easing=attrs.easing;ms=easing.dur;attrs=attrs.attr;}var fkeys=[],tkeys=[],keys={},from,to,f,eq,el=this;for(var key in attrs){if(attrs[has](key)){if(el.equal){eq=el.equal(key,Str(attrs[key]));from=eq.from;to=eq.to;f=eq.f;}else{from=+el.attr(key);to=+attrs[key];}var len=is(from,\"array\")?from.length:1;keys[key]=slice(fkeys.length,fkeys.length+len,f);fkeys=fkeys.concat(from);tkeys=tkeys.concat(to);}}var now=mina.time(),anim=mina(fkeys,tkeys,now,now+ms,mina.time,function(val){var attr={};for(var key in keys){if(keys[has](key)){attr[key]=keys[key](val);}}el.attr(attr);},easing);el.anims[anim.id]=anim;anim._attrs=attrs;anim._callback=callback;eve(\"snap.animcreated.\"+el.id,anim);eve.once(\"mina.finish.\"+anim.id,function(){delete el.anims[anim.id];callback&&callback.call(el);});eve.once(\"mina.stop.\"+anim.id,function(){delete el.anims[anim.id];});return el;};var eldata={};/*\\\n\t * Element.data\n\t [ method ]\n\t **\n\t * Adds or retrieves given value associated with given key. (Don’t confuse\n\t * with `data-` attributes)\n\t *\n\t * See also @Element.removeData\n\t - key (string) key to store data\n\t - value (any) #optional value to store\n\t = (object) @Element\n\t * or, if value is not specified:\n\t = (any) value\n\t > Usage\n\t | for (var i = 0, i < 5, i++) {\n\t | paper.circle(10 + 15 * i, 10, 10)\n\t | .attr({fill: \"#000\"})\n\t | .data(\"i\", i)\n\t | .click(function () {\n\t | alert(this.data(\"i\"));\n\t | });\n\t | }\n\t \\*/elproto.data=function(key,value){var data=eldata[this.id]=eldata[this.id]||{};if(arguments.length==0){eve(\"snap.data.get.\"+this.id,this,data,null);return data;}if(arguments.length==1){if(Snap.is(key,\"object\")){for(var i in key){if(key[has](i)){this.data(i,key[i]);}}return this;}eve(\"snap.data.get.\"+this.id,this,data[key],key);return data[key];}data[key]=value;eve(\"snap.data.set.\"+this.id,this,value,key);return this;};/*\\\n\t * Element.removeData\n\t [ method ]\n\t **\n\t * Removes value associated with an element by given key.\n\t * If key is not provided, removes all the data of the element.\n\t - key (string) #optional key\n\t = (object) @Element\n\t \\*/elproto.removeData=function(key){if(key==null){eldata[this.id]={};}else{eldata[this.id]&&delete eldata[this.id][key];}return this;};/*\\\n\t * Element.outerSVG\n\t [ method ]\n\t **\n\t * Returns SVG code for the element, equivalent to HTML's `outerHTML`.\n\t *\n\t * See also @Element.innerSVG\n\t = (string) SVG code for the element\n\t \\*//*\\\n\t * Element.toString\n\t [ method ]\n\t **\n\t * See @Element.outerSVG\n\t \\*/elproto.outerSVG=elproto.toString=toString(1);/*\\\n\t * Element.innerSVG\n\t [ method ]\n\t **\n\t * Returns SVG code for the element's contents, equivalent to HTML's `innerHTML`\n\t = (string) SVG code for the element\n\t \\*/elproto.innerSVG=toString();function toString(type){return function(){var res=type?\"<\"+this.type:\"\",attr=this.node.attributes,chld=this.node.childNodes;if(type){for(var i=0,ii=attr.length;i<ii;i++){res+=\" \"+attr[i].name+'=\"'+attr[i].value.replace(/\"/g,'\\\\\"')+'\"';}}if(chld.length){type&&(res+=\">\");for(i=0,ii=chld.length;i<ii;i++){if(chld[i].nodeType==3){res+=chld[i].nodeValue;}else if(chld[i].nodeType==1){res+=wrap(chld[i]).toString();}}type&&(res+=\"</\"+this.type+\">\");}else{type&&(res+=\"/>\");}return res;};}elproto.toDataURL=function(){if(window&&window.btoa){var bb=this.getBBox(),svg=Snap.format('<svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"{width}\" height=\"{height}\" viewBox=\"{x} {y} {width} {height}\">{contents}</svg>',{x:+bb.x.toFixed(3),y:+bb.y.toFixed(3),width:+bb.width.toFixed(3),height:+bb.height.toFixed(3),contents:this.outerSVG()});return\"data:image/svg+xml;base64,\"+btoa(unescape(encodeURIComponent(svg)));}};/*\\\n\t * Fragment.select\n\t [ method ]\n\t **\n\t * See @Element.select\n\t \\*/Fragment.prototype.select=elproto.select;/*\\\n\t * Fragment.selectAll\n\t [ method ]\n\t **\n\t * See @Element.selectAll\n\t \\*/Fragment.prototype.selectAll=elproto.selectAll;});// Copyright (c) 2013 Adobe Systems Incorporated. All rights reserved.\n\t// \n\t// Licensed under the Apache License, Version 2.0 (the \"License\");\n\t// you may not use this file except in compliance with the License.\n\t// You may obtain a copy of the License at\n\t// \n\t// http://www.apache.org/licenses/LICENSE-2.0\n\t// \n\t// Unless required by applicable law or agreed to in writing, software\n\t// distributed under the License is distributed on an \"AS IS\" BASIS,\n\t// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\t// See the License for the specific language governing permissions and\n\t// limitations under the License.\n\tSnap.plugin(function(Snap,Element,Paper,glob,Fragment){var objectToString=Object.prototype.toString,Str=String,math=Math,E=\"\";function Matrix(a,b,c,d,e,f){if(b==null&&objectToString.call(a)==\"[object SVGMatrix]\"){this.a=a.a;this.b=a.b;this.c=a.c;this.d=a.d;this.e=a.e;this.f=a.f;return;}if(a!=null){this.a=+a;this.b=+b;this.c=+c;this.d=+d;this.e=+e;this.f=+f;}else{this.a=1;this.b=0;this.c=0;this.d=1;this.e=0;this.f=0;}}(function(matrixproto){/*\\\n\t * Matrix.add\n\t [ method ]\n\t **\n\t * Adds the given matrix to existing one\n\t - a (number)\n\t - b (number)\n\t - c (number)\n\t - d (number)\n\t - e (number)\n\t - f (number)\n\t * or\n\t - matrix (object) @Matrix\n\t \\*/matrixproto.add=function(a,b,c,d,e,f){var out=[[],[],[]],m=[[this.a,this.c,this.e],[this.b,this.d,this.f],[0,0,1]],matrix=[[a,c,e],[b,d,f],[0,0,1]],x,y,z,res;if(a&&a instanceof Matrix){matrix=[[a.a,a.c,a.e],[a.b,a.d,a.f],[0,0,1]];}for(x=0;x<3;x++){for(y=0;y<3;y++){res=0;for(z=0;z<3;z++){res+=m[x][z]*matrix[z][y];}out[x][y]=res;}}this.a=out[0][0];this.b=out[1][0];this.c=out[0][1];this.d=out[1][1];this.e=out[0][2];this.f=out[1][2];return this;};/*\\\n\t * Matrix.invert\n\t [ method ]\n\t **\n\t * Returns an inverted version of the matrix\n\t = (object) @Matrix\n\t \\*/matrixproto.invert=function(){var me=this,x=me.a*me.d-me.b*me.c;return new Matrix(me.d/x,-me.b/x,-me.c/x,me.a/x,(me.c*me.f-me.d*me.e)/x,(me.b*me.e-me.a*me.f)/x);};/*\\\n\t * Matrix.clone\n\t [ method ]\n\t **\n\t * Returns a copy of the matrix\n\t = (object) @Matrix\n\t \\*/matrixproto.clone=function(){return new Matrix(this.a,this.b,this.c,this.d,this.e,this.f);};/*\\\n\t * Matrix.translate\n\t [ method ]\n\t **\n\t * Translate the matrix\n\t - x (number) horizontal offset distance\n\t - y (number) vertical offset distance\n\t \\*/matrixproto.translate=function(x,y){return this.add(1,0,0,1,x,y);};/*\\\n\t * Matrix.scale\n\t [ method ]\n\t **\n\t * Scales the matrix\n\t - x (number) amount to be scaled, with `1` resulting in no change\n\t - y (number) #optional amount to scale along the vertical axis. (Otherwise `x` applies to both axes.)\n\t - cx (number) #optional horizontal origin point from which to scale\n\t - cy (number) #optional vertical origin point from which to scale\n\t * Default cx, cy is the middle point of the element.\n\t \\*/matrixproto.scale=function(x,y,cx,cy){y==null&&(y=x);(cx||cy)&&this.add(1,0,0,1,cx,cy);this.add(x,0,0,y,0,0);(cx||cy)&&this.add(1,0,0,1,-cx,-cy);return this;};/*\\\n\t * Matrix.rotate\n\t [ method ]\n\t **\n\t * Rotates the matrix\n\t - a (number) angle of rotation, in degrees\n\t - x (number) horizontal origin point from which to rotate\n\t - y (number) vertical origin point from which to rotate\n\t \\*/matrixproto.rotate=function(a,x,y){a=Snap.rad(a);x=x||0;y=y||0;var cos=+math.cos(a).toFixed(9),sin=+math.sin(a).toFixed(9);this.add(cos,sin,-sin,cos,x,y);return this.add(1,0,0,1,-x,-y);};/*\\\n\t * Matrix.x\n\t [ method ]\n\t **\n\t * Returns x coordinate for given point after transformation described by the matrix. See also @Matrix.y\n\t - x (number)\n\t - y (number)\n\t = (number) x\n\t \\*/matrixproto.x=function(x,y){return x*this.a+y*this.c+this.e;};/*\\\n\t * Matrix.y\n\t [ method ]\n\t **\n\t * Returns y coordinate for given point after transformation described by the matrix. See also @Matrix.x\n\t - x (number)\n\t - y (number)\n\t = (number) y\n\t \\*/matrixproto.y=function(x,y){return x*this.b+y*this.d+this.f;};matrixproto.get=function(i){return+this[Str.fromCharCode(97+i)].toFixed(4);};matrixproto.toString=function(){return\"matrix(\"+[this.get(0),this.get(1),this.get(2),this.get(3),this.get(4),this.get(5)].join()+\")\";};matrixproto.offset=function(){return[this.e.toFixed(4),this.f.toFixed(4)];};function norm(a){return a[0]*a[0]+a[1]*a[1];}function normalize(a){var mag=math.sqrt(norm(a));a[0]&&(a[0]/=mag);a[1]&&(a[1]/=mag);}/*\\\n\t * Matrix.determinant\n\t [ method ]\n\t **\n\t * Finds determinant of the given matrix.\n\t = (number) determinant\n\t \\*/matrixproto.determinant=function(){return this.a*this.d-this.b*this.c;};/*\\\n\t * Matrix.split\n\t [ method ]\n\t **\n\t * Splits matrix into primitive transformations\n\t = (object) in format:\n\t o dx (number) translation by x\n\t o dy (number) translation by y\n\t o scalex (number) scale by x\n\t o scaley (number) scale by y\n\t o shear (number) shear\n\t o rotate (number) rotation in deg\n\t o isSimple (boolean) could it be represented via simple transformations\n\t \\*/matrixproto.split=function(){var out={};// translation\n\tout.dx=this.e;out.dy=this.f;// scale and shear\n\tvar row=[[this.a,this.c],[this.b,this.d]];out.scalex=math.sqrt(norm(row[0]));normalize(row[0]);out.shear=row[0][0]*row[1][0]+row[0][1]*row[1][1];row[1]=[row[1][0]-row[0][0]*out.shear,row[1][1]-row[0][1]*out.shear];out.scaley=math.sqrt(norm(row[1]));normalize(row[1]);out.shear/=out.scaley;if(this.determinant()<0){out.scalex=-out.scalex;}// rotation\n\tvar sin=-row[0][1],cos=row[1][1];if(cos<0){out.rotate=Snap.deg(math.acos(cos));if(sin<0){out.rotate=360-out.rotate;}}else{out.rotate=Snap.deg(math.asin(sin));}out.isSimple=!+out.shear.toFixed(9)&&(out.scalex.toFixed(9)==out.scaley.toFixed(9)||!out.rotate);out.isSuperSimple=!+out.shear.toFixed(9)&&out.scalex.toFixed(9)==out.scaley.toFixed(9)&&!out.rotate;out.noRotation=!+out.shear.toFixed(9)&&!out.rotate;return out;};/*\\\n\t * Matrix.toTransformString\n\t [ method ]\n\t **\n\t * Returns transform string that represents given matrix\n\t = (string) transform string\n\t \\*/matrixproto.toTransformString=function(shorter){var s=shorter||this.split();if(!+s.shear.toFixed(9)){s.scalex=+s.scalex.toFixed(4);s.scaley=+s.scaley.toFixed(4);s.rotate=+s.rotate.toFixed(4);return(s.dx||s.dy?\"t\"+[+s.dx.toFixed(4),+s.dy.toFixed(4)]:E)+(s.scalex!=1||s.scaley!=1?\"s\"+[s.scalex,s.scaley,0,0]:E)+(s.rotate?\"r\"+[+s.rotate.toFixed(4),0,0]:E);}else{return\"m\"+[this.get(0),this.get(1),this.get(2),this.get(3),this.get(4),this.get(5)];}};})(Matrix.prototype);/*\\\n\t * Snap.Matrix\n\t [ method ]\n\t **\n\t * Matrix constructor, extend on your own risk.\n\t * To create matrices use @Snap.matrix.\n\t \\*/Snap.Matrix=Matrix;/*\\\n\t * Snap.matrix\n\t [ method ]\n\t **\n\t * Utility method\n\t **\n\t * Returns a matrix based on the given parameters\n\t - a (number)\n\t - b (number)\n\t - c (number)\n\t - d (number)\n\t - e (number)\n\t - f (number)\n\t * or\n\t - svgMatrix (SVGMatrix)\n\t = (object) @Matrix\n\t \\*/Snap.matrix=function(a,b,c,d,e,f){return new Matrix(a,b,c,d,e,f);};});// Copyright (c) 2013 Adobe Systems Incorporated. All rights reserved.\n\t// \n\t// Licensed under the Apache License, Version 2.0 (the \"License\");\n\t// you may not use this file except in compliance with the License.\n\t// You may obtain a copy of the License at\n\t// \n\t// http://www.apache.org/licenses/LICENSE-2.0\n\t// \n\t// Unless required by applicable law or agreed to in writing, software\n\t// distributed under the License is distributed on an \"AS IS\" BASIS,\n\t// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\t// See the License for the specific language governing permissions and\n\t// limitations under the License.\n\tSnap.plugin(function(Snap,Element,Paper,glob,Fragment){var has=\"hasOwnProperty\",make=Snap._.make,wrap=Snap._.wrap,is=Snap.is,getSomeDefs=Snap._.getSomeDefs,reURLValue=/^url\\(#?([^)]+)\\)$/,$=Snap._.$,URL=Snap.url,Str=String,separator=Snap._.separator,E=\"\";// Attributes event handlers\n\teve.on(\"snap.util.attr.mask\",function(value){if(value instanceof Element||value instanceof Fragment){eve.stop();if(value instanceof Fragment&&value.node.childNodes.length==1){value=value.node.firstChild;getSomeDefs(this).appendChild(value);value=wrap(value);}if(value.type==\"mask\"){var mask=value;}else{mask=make(\"mask\",getSomeDefs(this));mask.node.appendChild(value.node);}!mask.node.id&&$(mask.node,{id:mask.id});$(this.node,{mask:URL(mask.id)});}});(function(clipIt){eve.on(\"snap.util.attr.clip\",clipIt);eve.on(\"snap.util.attr.clip-path\",clipIt);eve.on(\"snap.util.attr.clipPath\",clipIt);})(function(value){if(value instanceof Element||value instanceof Fragment){eve.stop();if(value.type==\"clipPath\"){var clip=value;}else{clip=make(\"clipPath\",getSomeDefs(this));clip.node.appendChild(value.node);!clip.node.id&&$(clip.node,{id:clip.id});}$(this.node,{\"clip-path\":URL(clip.node.id||clip.id)});}});function fillStroke(name){return function(value){eve.stop();if(value instanceof Fragment&&value.node.childNodes.length==1&&(value.node.firstChild.tagName==\"radialGradient\"||value.node.firstChild.tagName==\"linearGradient\"||value.node.firstChild.tagName==\"pattern\")){value=value.node.firstChild;getSomeDefs(this).appendChild(value);value=wrap(value);}if(value instanceof Element){if(value.type==\"radialGradient\"||value.type==\"linearGradient\"||value.type==\"pattern\"){if(!value.node.id){$(value.node,{id:value.id});}var fill=URL(value.node.id);}else{fill=value.attr(name);}}else{fill=Snap.color(value);if(fill.error){var grad=Snap(getSomeDefs(this).ownerSVGElement).gradient(value);if(grad){if(!grad.node.id){$(grad.node,{id:grad.id});}fill=URL(grad.node.id);}else{fill=value;}}else{fill=Str(fill);}}var attrs={};attrs[name]=fill;$(this.node,attrs);this.node.style[name]=E;};}eve.on(\"snap.util.attr.fill\",fillStroke(\"fill\"));eve.on(\"snap.util.attr.stroke\",fillStroke(\"stroke\"));var gradrg=/^([lr])(?:\\(([^)]*)\\))?(.*)$/i;eve.on(\"snap.util.grad.parse\",function parseGrad(string){string=Str(string);var tokens=string.match(gradrg);if(!tokens){return null;}var type=tokens[1],params=tokens[2],stops=tokens[3];params=params.split(/\\s*,\\s*/).map(function(el){return+el==el?+el:el;});if(params.length==1&¶ms[0]==0){params=[];}stops=stops.split(\"-\");stops=stops.map(function(el){el=el.split(\":\");var out={color:el[0]};if(el[1]){out.offset=parseFloat(el[1]);}return out;});return{type:type,params:params,stops:stops};});eve.on(\"snap.util.attr.d\",function(value){eve.stop();if(is(value,\"array\")&&is(value[0],\"array\")){value=Snap.path.toString.call(value);}value=Str(value);if(value.match(/[ruo]/i)){value=Snap.path.toAbsolute(value);}$(this.node,{d:value});})(-1);eve.on(\"snap.util.attr.#text\",function(value){eve.stop();value=Str(value);var txt=glob.doc.createTextNode(value);while(this.node.firstChild){this.node.removeChild(this.node.firstChild);}this.node.appendChild(txt);})(-1);eve.on(\"snap.util.attr.path\",function(value){eve.stop();this.attr({d:value});})(-1);eve.on(\"snap.util.attr.class\",function(value){eve.stop();this.node.className.baseVal=value;})(-1);eve.on(\"snap.util.attr.viewBox\",function(value){var vb;if(is(value,\"object\")&&\"x\"in value){vb=[value.x,value.y,value.width,value.height].join(\" \");}else if(is(value,\"array\")){vb=value.join(\" \");}else{vb=value;}$(this.node,{viewBox:vb});eve.stop();})(-1);eve.on(\"snap.util.attr.transform\",function(value){this.transform(value);eve.stop();})(-1);eve.on(\"snap.util.attr.r\",function(value){if(this.type==\"rect\"){eve.stop();$(this.node,{rx:value,ry:value});}})(-1);eve.on(\"snap.util.attr.textpath\",function(value){eve.stop();if(this.type==\"text\"){var id,tp,node;if(!value&&this.textPath){tp=this.textPath;while(tp.node.firstChild){this.node.appendChild(tp.node.firstChild);}tp.remove();delete this.textPath;return;}if(is(value,\"string\")){var defs=getSomeDefs(this),path=wrap(defs.parentNode).path(value);defs.appendChild(path.node);id=path.id;path.attr({id:id});}else{value=wrap(value);if(value instanceof Element){id=value.attr(\"id\");if(!id){id=value.id;value.attr({id:id});}}}if(id){tp=this.textPath;node=this.node;if(tp){tp.attr({\"xlink:href\":\"#\"+id});}else{tp=$(\"textPath\",{\"xlink:href\":\"#\"+id});while(node.firstChild){tp.appendChild(node.firstChild);}node.appendChild(tp);this.textPath=wrap(tp);}}}})(-1);eve.on(\"snap.util.attr.text\",function(value){if(this.type==\"text\"){var i=0,node=this.node,tuner=function tuner(chunk){var out=$(\"tspan\");if(is(chunk,\"array\")){for(var i=0;i<chunk.length;i++){out.appendChild(tuner(chunk[i]));}}else{out.appendChild(glob.doc.createTextNode(chunk));}out.normalize&&out.normalize();return out;};while(node.firstChild){node.removeChild(node.firstChild);}var tuned=tuner(value);while(tuned.firstChild){node.appendChild(tuned.firstChild);}}eve.stop();})(-1);function setFontSize(value){eve.stop();if(value==+value){value+=\"px\";}this.node.style.fontSize=value;}eve.on(\"snap.util.attr.fontSize\",setFontSize)(-1);eve.on(\"snap.util.attr.font-size\",setFontSize)(-1);eve.on(\"snap.util.getattr.transform\",function(){eve.stop();return this.transform();})(-1);eve.on(\"snap.util.getattr.textpath\",function(){eve.stop();return this.textPath;})(-1);// Markers\n\t(function(){function getter(end){return function(){eve.stop();var style=glob.doc.defaultView.getComputedStyle(this.node,null).getPropertyValue(\"marker-\"+end);if(style==\"none\"){return style;}else{return Snap(glob.doc.getElementById(style.match(reURLValue)[1]));}};}function setter(end){return function(value){eve.stop();var name=\"marker\"+end.charAt(0).toUpperCase()+end.substring(1);if(value==\"\"||!value){this.node.style[name]=\"none\";return;}if(value.type==\"marker\"){var id=value.node.id;if(!id){$(value.node,{id:value.id});}this.node.style[name]=URL(id);return;}};}eve.on(\"snap.util.getattr.marker-end\",getter(\"end\"))(-1);eve.on(\"snap.util.getattr.markerEnd\",getter(\"end\"))(-1);eve.on(\"snap.util.getattr.marker-start\",getter(\"start\"))(-1);eve.on(\"snap.util.getattr.markerStart\",getter(\"start\"))(-1);eve.on(\"snap.util.getattr.marker-mid\",getter(\"mid\"))(-1);eve.on(\"snap.util.getattr.markerMid\",getter(\"mid\"))(-1);eve.on(\"snap.util.attr.marker-end\",setter(\"end\"))(-1);eve.on(\"snap.util.attr.markerEnd\",setter(\"end\"))(-1);eve.on(\"snap.util.attr.marker-start\",setter(\"start\"))(-1);eve.on(\"snap.util.attr.markerStart\",setter(\"start\"))(-1);eve.on(\"snap.util.attr.marker-mid\",setter(\"mid\"))(-1);eve.on(\"snap.util.attr.markerMid\",setter(\"mid\"))(-1);})();eve.on(\"snap.util.getattr.r\",function(){if(this.type==\"rect\"&&$(this.node,\"rx\")==$(this.node,\"ry\")){eve.stop();return $(this.node,\"rx\");}})(-1);function textExtract(node){var out=[];var children=node.childNodes;for(var i=0,ii=children.length;i<ii;i++){var chi=children[i];if(chi.nodeType==3){out.push(chi.nodeValue);}if(chi.tagName==\"tspan\"){if(chi.childNodes.length==1&&chi.firstChild.nodeType==3){out.push(chi.firstChild.nodeValue);}else{out.push(textExtract(chi));}}}return out;}eve.on(\"snap.util.getattr.text\",function(){if(this.type==\"text\"||this.type==\"tspan\"){eve.stop();var out=textExtract(this.node);return out.length==1?out[0]:out;}})(-1);eve.on(\"snap.util.getattr.#text\",function(){return this.node.textContent;})(-1);eve.on(\"snap.util.getattr.viewBox\",function(){eve.stop();var vb=$(this.node,\"viewBox\");if(vb){vb=vb.split(separator);return Snap._.box(+vb[0],+vb[1],+vb[2],+vb[3]);}else{return;}})(-1);eve.on(\"snap.util.getattr.points\",function(){var p=$(this.node,\"points\");eve.stop();if(p){return p.split(separator);}else{return;}})(-1);eve.on(\"snap.util.getattr.path\",function(){var p=$(this.node,\"d\");eve.stop();return p;})(-1);eve.on(\"snap.util.getattr.class\",function(){return this.node.className.baseVal;})(-1);function getFontSize(){eve.stop();return this.node.style.fontSize;}eve.on(\"snap.util.getattr.fontSize\",getFontSize)(-1);eve.on(\"snap.util.getattr.font-size\",getFontSize)(-1);});// Copyright (c) 2014 Adobe Systems Incorporated. All rights reserved.\n\t//\n\t// Licensed under the Apache License, Version 2.0 (the \"License\");\n\t// you may not use this file except in compliance with the License.\n\t// You may obtain a copy of the License at\n\t//\n\t// http://www.apache.org/licenses/LICENSE-2.0\n\t//\n\t// Unless required by applicable law or agreed to in writing, software\n\t// distributed under the License is distributed on an \"AS IS\" BASIS,\n\t// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\t// See the License for the specific language governing permissions and\n\t// limitations under the License.\n\tSnap.plugin(function(Snap,Element,Paper,glob,Fragment){var rgNotSpace=/\\S+/g,rgBadSpace=/[\\t\\r\\n\\f]/g,rgTrim=/(^\\s+|\\s+$)/g,Str=String,elproto=Element.prototype;/*\\\n\t * Element.addClass\n\t [ method ]\n\t **\n\t * Adds given class name or list of class names to the element.\n\t - value (string) class name or space separated list of class names\n\t **\n\t = (Element) original element.\n\t \\*/elproto.addClass=function(value){var classes=Str(value||\"\").match(rgNotSpace)||[],elem=this.node,className=elem.className.baseVal,curClasses=className.match(rgNotSpace)||[],j,pos,clazz,finalValue;if(classes.length){j=0;while(clazz=classes[j++]){pos=curClasses.indexOf(clazz);if(!~pos){curClasses.push(clazz);}}finalValue=curClasses.join(\" \");if(className!=finalValue){elem.className.baseVal=finalValue;}}return this;};/*\\\n\t * Element.removeClass\n\t [ method ]\n\t **\n\t * Removes given class name or list of class names from the element.\n\t - value (string) class name or space separated list of class names\n\t **\n\t = (Element) original element.\n\t \\*/elproto.removeClass=function(value){var classes=Str(value||\"\").match(rgNotSpace)||[],elem=this.node,className=elem.className.baseVal,curClasses=className.match(rgNotSpace)||[],j,pos,clazz,finalValue;if(curClasses.length){j=0;while(clazz=classes[j++]){pos=curClasses.indexOf(clazz);if(~pos){curClasses.splice(pos,1);}}finalValue=curClasses.join(\" \");if(className!=finalValue){elem.className.baseVal=finalValue;}}return this;};/*\\\n\t * Element.hasClass\n\t [ method ]\n\t **\n\t * Checks if the element has a given class name in the list of class names applied to it.\n\t - value (string) class name\n\t **\n\t = (boolean) `true` if the element has given class\n\t \\*/elproto.hasClass=function(value){var elem=this.node,className=elem.className.baseVal,curClasses=className.match(rgNotSpace)||[];return!!~curClasses.indexOf(value);};/*\\\n\t * Element.toggleClass\n\t [ method ]\n\t **\n\t * Add or remove one or more classes from the element, depending on either\n\t * the class’s presence or the value of the `flag` argument.\n\t - value (string) class name or space separated list of class names\n\t - flag (boolean) value to determine whether the class should be added or removed\n\t **\n\t = (Element) original element.\n\t \\*/elproto.toggleClass=function(value,flag){if(flag!=null){if(flag){return this.addClass(value);}else{return this.removeClass(value);}}var classes=(value||\"\").match(rgNotSpace)||[],elem=this.node,className=elem.className.baseVal,curClasses=className.match(rgNotSpace)||[],j,pos,clazz,finalValue;j=0;while(clazz=classes[j++]){pos=curClasses.indexOf(clazz);if(~pos){curClasses.splice(pos,1);}else{curClasses.push(clazz);}}finalValue=curClasses.join(\" \");if(className!=finalValue){elem.className.baseVal=finalValue;}return this;};});// Copyright (c) 2013 Adobe Systems Incorporated. All rights reserved.\n\t// \n\t// Licensed under the Apache License, Version 2.0 (the \"License\");\n\t// you may not use this file except in compliance with the License.\n\t// You may obtain a copy of the License at\n\t// \n\t// http://www.apache.org/licenses/LICENSE-2.0\n\t// \n\t// Unless required by applicable law or agreed to in writing, software\n\t// distributed under the License is distributed on an \"AS IS\" BASIS,\n\t// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\t// See the License for the specific language governing permissions and\n\t// limitations under the License.\n\tSnap.plugin(function(Snap,Element,Paper,glob,Fragment){var operators={\"+\":function _(x,y){return x+y;},\"-\":function _(x,y){return x-y;},\"/\":function _(x,y){return x/y;},\"*\":function _(x,y){return x*y;}},Str=String,reUnit=/[a-z]+$/i,reAddon=/^\\s*([+\\-\\/*])\\s*=\\s*([\\d.eE+\\-]+)\\s*([^\\d\\s]+)?\\s*$/;function getNumber(val){return val;}function getUnit(unit){return function(val){return+val.toFixed(3)+unit;};}eve.on(\"snap.util.attr\",function(val){var plus=Str(val).match(reAddon);if(plus){var evnt=eve.nt(),name=evnt.substring(evnt.lastIndexOf(\".\")+1),a=this.attr(name),atr={};eve.stop();var unit=plus[3]||\"\",aUnit=a.match(reUnit),op=operators[plus[1]];if(aUnit&&aUnit==unit){val=op(parseFloat(a),+plus[2]);}else{a=this.asPX(name);val=op(this.asPX(name),this.asPX(name,plus[2]+unit));}if(isNaN(a)||isNaN(val)){return;}atr[name]=val;this.attr(atr);}})(-10);eve.on(\"snap.util.equal\",function(name,b){var A,B,a=Str(this.attr(name)||\"\"),el=this,bplus=Str(b).match(reAddon);if(bplus){eve.stop();var unit=bplus[3]||\"\",aUnit=a.match(reUnit),op=operators[bplus[1]];if(aUnit&&aUnit==unit){return{from:parseFloat(a),to:op(parseFloat(a),+bplus[2]),f:getUnit(aUnit)};}else{a=this.asPX(name);return{from:a,to:op(a,this.asPX(name,bplus[2]+unit)),f:getNumber};}}})(-10);});// Copyright (c) 2013 Adobe Systems Incorporated. All rights reserved.\n\t// \n\t// Licensed under the Apache License, Version 2.0 (the \"License\");\n\t// you may not use this file except in compliance with the License.\n\t// You may obtain a copy of the License at\n\t// \n\t// http://www.apache.org/licenses/LICENSE-2.0\n\t// \n\t// Unless required by applicable law or agreed to in writing, software\n\t// distributed under the License is distributed on an \"AS IS\" BASIS,\n\t// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\t// See the License for the specific language governing permissions and\n\t// limitations under the License.\n\tSnap.plugin(function(Snap,Element,Paper,glob,Fragment){var proto=Paper.prototype,is=Snap.is;/*\\\n\t * Paper.rect\n\t [ method ]\n\t *\n\t * Draws a rectangle\n\t **\n\t - x (number) x coordinate of the top left corner\n\t - y (number) y coordinate of the top left corner\n\t - width (number) width\n\t - height (number) height\n\t - rx (number) #optional horizontal radius for rounded corners, default is 0\n\t - ry (number) #optional vertical radius for rounded corners, default is rx or 0\n\t = (object) the `rect` element\n\t **\n\t > Usage\n\t | // regular rectangle\n\t | var c = paper.rect(10, 10, 50, 50);\n\t | // rectangle with rounded corners\n\t | var c = paper.rect(40, 40, 50, 50, 10);\n\t \\*/proto.rect=function(x,y,w,h,rx,ry){var attr;if(ry==null){ry=rx;}if(is(x,\"object\")&&x==\"[object Object]\"){attr=x;}else if(x!=null){attr={x:x,y:y,width:w,height:h};if(rx!=null){attr.rx=rx;attr.ry=ry;}}return this.el(\"rect\",attr);};/*\\\n\t * Paper.circle\n\t [ method ]\n\t **\n\t * Draws a circle\n\t **\n\t - x (number) x coordinate of the centre\n\t - y (number) y coordinate of the centre\n\t - r (number) radius\n\t = (object) the `circle` element\n\t **\n\t > Usage\n\t | var c = paper.circle(50, 50, 40);\n\t \\*/proto.circle=function(cx,cy,r){var attr;if(is(cx,\"object\")&&cx==\"[object Object]\"){attr=cx;}else if(cx!=null){attr={cx:cx,cy:cy,r:r};}return this.el(\"circle\",attr);};var preload=function(){function onerror(){this.parentNode.removeChild(this);}return function(src,f){var img=glob.doc.createElement(\"img\"),body=glob.doc.body;img.style.cssText=\"position:absolute;left:-9999em;top:-9999em\";img.onload=function(){f.call(img);img.onload=img.onerror=null;body.removeChild(img);};img.onerror=onerror;body.appendChild(img);img.src=src;};}();/*\\\n\t * Paper.image\n\t [ method ]\n\t **\n\t * Places an image on the surface\n\t **\n\t - src (string) URI of the source image\n\t - x (number) x offset position\n\t - y (number) y offset position\n\t - width (number) width of the image\n\t - height (number) height of the image\n\t = (object) the `image` element\n\t * or\n\t = (object) Snap element object with type `image`\n\t **\n\t > Usage\n\t | var c = paper.image(\"apple.png\", 10, 10, 80, 80);\n\t \\*/proto.image=function(src,x,y,width,height){var el=this.el(\"image\");if(is(src,\"object\")&&\"src\"in src){el.attr(src);}else if(src!=null){var set={\"xlink:href\":src,preserveAspectRatio:\"none\"};if(x!=null&&y!=null){set.x=x;set.y=y;}if(width!=null&&height!=null){set.width=width;set.height=height;}else{preload(src,function(){Snap._.$(el.node,{width:this.offsetWidth,height:this.offsetHeight});});}Snap._.$(el.node,set);}return el;};/*\\\n\t * Paper.ellipse\n\t [ method ]\n\t **\n\t * Draws an ellipse\n\t **\n\t - x (number) x coordinate of the centre\n\t - y (number) y coordinate of the centre\n\t - rx (number) horizontal radius\n\t - ry (number) vertical radius\n\t = (object) the `ellipse` element\n\t **\n\t > Usage\n\t | var c = paper.ellipse(50, 50, 40, 20);\n\t \\*/proto.ellipse=function(cx,cy,rx,ry){var attr;if(is(cx,\"object\")&&cx==\"[object Object]\"){attr=cx;}else if(cx!=null){attr={cx:cx,cy:cy,rx:rx,ry:ry};}return this.el(\"ellipse\",attr);};// SIERRA Paper.path(): Unclear from the link what a Catmull-Rom curveto is, and why it would make life any easier.\n\t/*\\\n\t * Paper.path\n\t [ method ]\n\t **\n\t * Creates a `<path>` element using the given string as the path's definition\n\t - pathString (string) #optional path string in SVG format\n\t * Path string consists of one-letter commands, followed by comma seprarated arguments in numerical form. Example:\n\t | \"M10,20L30,40\"\n\t * This example features two commands: `M`, with arguments `(10, 20)` and `L` with arguments `(30, 40)`. Uppercase letter commands express coordinates in absolute terms, while lowercase commands express them in relative terms from the most recently declared coordinates.\n\t *\n\t # <p>Here is short list of commands available, for more details see <a href=\"http://www.w3.org/TR/SVG/paths.html#PathData\" title=\"Details of a path's data attribute's format are described in the SVG specification.\">SVG path string format</a> or <a href=\"https://developer.mozilla.org/en/SVG/Tutorial/Paths\">article about path strings at MDN</a>.</p>\n\t # <table><thead><tr><th>Command</th><th>Name</th><th>Parameters</th></tr></thead><tbody>\n\t # <tr><td>M</td><td>moveto</td><td>(x y)+</td></tr>\n\t # <tr><td>Z</td><td>closepath</td><td>(none)</td></tr>\n\t # <tr><td>L</td><td>lineto</td><td>(x y)+</td></tr>\n\t # <tr><td>H</td><td>horizontal lineto</td><td>x+</td></tr>\n\t # <tr><td>V</td><td>vertical lineto</td><td>y+</td></tr>\n\t # <tr><td>C</td><td>curveto</td><td>(x1 y1 x2 y2 x y)+</td></tr>\n\t # <tr><td>S</td><td>smooth curveto</td><td>(x2 y2 x y)+</td></tr>\n\t # <tr><td>Q</td><td>quadratic Bézier curveto</td><td>(x1 y1 x y)+</td></tr>\n\t # <tr><td>T</td><td>smooth quadratic Bézier curveto</td><td>(x y)+</td></tr>\n\t # <tr><td>A</td><td>elliptical arc</td><td>(rx ry x-axis-rotation large-arc-flag sweep-flag x y)+</td></tr>\n\t # <tr><td>R</td><td><a href=\"http://en.wikipedia.org/wiki/Catmull–Rom_spline#Catmull.E2.80.93Rom_spline\">Catmull-Rom curveto</a>*</td><td>x1 y1 (x y)+</td></tr></tbody></table>\n\t * * _Catmull-Rom curveto_ is a not standard SVG command and added to make life easier.\n\t * Note: there is a special case when a path consists of only three commands: `M10,10R…z`. In this case the path connects back to its starting point.\n\t > Usage\n\t | var c = paper.path(\"M10 10L90 90\");\n\t | // draw a diagonal line:\n\t | // move to 10,10, line to 90,90\n\t \\*/proto.path=function(d){var attr;if(is(d,\"object\")&&!is(d,\"array\")){attr=d;}else if(d){attr={d:d};}return this.el(\"path\",attr);};/*\\\n\t * Paper.g\n\t [ method ]\n\t **\n\t * Creates a group element\n\t **\n\t - varargs (…) #optional elements to nest within the group\n\t = (object) the `g` element\n\t **\n\t > Usage\n\t | var c1 = paper.circle(),\n\t | c2 = paper.rect(),\n\t | g = paper.g(c2, c1); // note that the order of elements is different\n\t * or\n\t | var c1 = paper.circle(),\n\t | c2 = paper.rect(),\n\t | g = paper.g();\n\t | g.add(c2, c1);\n\t \\*//*\\\n\t * Paper.group\n\t [ method ]\n\t **\n\t * See @Paper.g\n\t \\*/proto.group=proto.g=function(first){var attr,el=this.el(\"g\");if(arguments.length==1&&first&&!first.type){el.attr(first);}else if(arguments.length){el.add(Array.prototype.slice.call(arguments,0));}return el;};/*\\\n\t * Paper.svg\n\t [ method ]\n\t **\n\t * Creates a nested SVG element.\n\t - x (number) @optional X of the element\n\t - y (number) @optional Y of the element\n\t - width (number) @optional width of the element\n\t - height (number) @optional height of the element\n\t - vbx (number) @optional viewbox X\n\t - vby (number) @optional viewbox Y\n\t - vbw (number) @optional viewbox width\n\t - vbh (number) @optional viewbox height\n\t **\n\t = (object) the `svg` element\n\t **\n\t \\*/proto.svg=function(x,y,width,height,vbx,vby,vbw,vbh){var attrs={};if(is(x,\"object\")&&y==null){attrs=x;}else{if(x!=null){attrs.x=x;}if(y!=null){attrs.y=y;}if(width!=null){attrs.width=width;}if(height!=null){attrs.height=height;}if(vbx!=null&&vby!=null&&vbw!=null&&vbh!=null){attrs.viewBox=[vbx,vby,vbw,vbh];}}return this.el(\"svg\",attrs);};/*\\\n\t * Paper.mask\n\t [ method ]\n\t **\n\t * Equivalent in behaviour to @Paper.g, except it’s a mask.\n\t **\n\t = (object) the `mask` element\n\t **\n\t \\*/proto.mask=function(first){var attr,el=this.el(\"mask\");if(arguments.length==1&&first&&!first.type){el.attr(first);}else if(arguments.length){el.add(Array.prototype.slice.call(arguments,0));}return el;};/*\\\n\t * Paper.ptrn\n\t [ method ]\n\t **\n\t * Equivalent in behaviour to @Paper.g, except it’s a pattern.\n\t - x (number) @optional X of the element\n\t - y (number) @optional Y of the element\n\t - width (number) @optional width of the element\n\t - height (number) @optional height of the element\n\t - vbx (number) @optional viewbox X\n\t - vby (number) @optional viewbox Y\n\t - vbw (number) @optional viewbox width\n\t - vbh (number) @optional viewbox height\n\t **\n\t = (object) the `pattern` element\n\t **\n\t \\*/proto.ptrn=function(x,y,width,height,vx,vy,vw,vh){if(is(x,\"object\")){var attr=x;}else{attr={patternUnits:\"userSpaceOnUse\"};if(x){attr.x=x;}if(y){attr.y=y;}if(width!=null){attr.width=width;}if(height!=null){attr.height=height;}if(vx!=null&&vy!=null&&vw!=null&&vh!=null){attr.viewBox=[vx,vy,vw,vh];}else{attr.viewBox=[x||0,y||0,width||0,height||0];}}return this.el(\"pattern\",attr);};/*\\\n\t * Paper.use\n\t [ method ]\n\t **\n\t * Creates a <use> element.\n\t - id (string) @optional id of element to link\n\t * or\n\t - id (Element) @optional element to link\n\t **\n\t = (object) the `use` element\n\t **\n\t \\*/proto.use=function(id){if(id!=null){if(id instanceof Element){if(!id.attr(\"id\")){id.attr({id:Snap._.id(id)});}id=id.attr(\"id\");}if(String(id).charAt()==\"#\"){id=id.substring(1);}return this.el(\"use\",{\"xlink:href\":\"#\"+id});}else{return Element.prototype.use.call(this);}};/*\\\n\t * Paper.symbol\n\t [ method ]\n\t **\n\t * Creates a <symbol> element.\n\t - vbx (number) @optional viewbox X\n\t - vby (number) @optional viewbox Y\n\t - vbw (number) @optional viewbox width\n\t - vbh (number) @optional viewbox height\n\t = (object) the `symbol` element\n\t **\n\t \\*/proto.symbol=function(vx,vy,vw,vh){var attr={};if(vx!=null&&vy!=null&&vw!=null&&vh!=null){attr.viewBox=[vx,vy,vw,vh];}return this.el(\"symbol\",attr);};/*\\\n\t * Paper.text\n\t [ method ]\n\t **\n\t * Draws a text string\n\t **\n\t - x (number) x coordinate position\n\t - y (number) y coordinate position\n\t - text (string|array) The text string to draw or array of strings to nest within separate `<tspan>` elements\n\t = (object) the `text` element\n\t **\n\t > Usage\n\t | var t1 = paper.text(50, 50, \"Snap\");\n\t | var t2 = paper.text(50, 50, [\"S\",\"n\",\"a\",\"p\"]);\n\t | // Text path usage\n\t | t1.attr({textpath: \"M10,10L100,100\"});\n\t | // or\n\t | var pth = paper.path(\"M10,10L100,100\");\n\t | t1.attr({textpath: pth});\n\t \\*/proto.text=function(x,y,text){var attr={};if(is(x,\"object\")){attr=x;}else if(x!=null){attr={x:x,y:y,text:text||\"\"};}return this.el(\"text\",attr);};/*\\\n\t * Paper.line\n\t [ method ]\n\t **\n\t * Draws a line\n\t **\n\t - x1 (number) x coordinate position of the start\n\t - y1 (number) y coordinate position of the start\n\t - x2 (number) x coordinate position of the end\n\t - y2 (number) y coordinate position of the end\n\t = (object) the `line` element\n\t **\n\t > Usage\n\t | var t1 = paper.line(50, 50, 100, 100);\n\t \\*/proto.line=function(x1,y1,x2,y2){var attr={};if(is(x1,\"object\")){attr=x1;}else if(x1!=null){attr={x1:x1,x2:x2,y1:y1,y2:y2};}return this.el(\"line\",attr);};/*\\\n\t * Paper.polyline\n\t [ method ]\n\t **\n\t * Draws a polyline\n\t **\n\t - points (array) array of points\n\t * or\n\t - varargs (…) points\n\t = (object) the `polyline` element\n\t **\n\t > Usage\n\t | var p1 = paper.polyline([10, 10, 100, 100]);\n\t | var p2 = paper.polyline(10, 10, 100, 100);\n\t \\*/proto.polyline=function(points){if(arguments.length>1){points=Array.prototype.slice.call(arguments,0);}var attr={};if(is(points,\"object\")&&!is(points,\"array\")){attr=points;}else if(points!=null){attr={points:points};}return this.el(\"polyline\",attr);};/*\\\n\t * Paper.polygon\n\t [ method ]\n\t **\n\t * Draws a polygon. See @Paper.polyline\n\t \\*/proto.polygon=function(points){if(arguments.length>1){points=Array.prototype.slice.call(arguments,0);}var attr={};if(is(points,\"object\")&&!is(points,\"array\")){attr=points;}else if(points!=null){attr={points:points};}return this.el(\"polygon\",attr);};// gradients\n\t(function(){var $=Snap._.$;// gradients' helpers\n\tfunction Gstops(){return this.selectAll(\"stop\");}function GaddStop(color,offset){var stop=$(\"stop\"),attr={offset:+offset+\"%\"};color=Snap.color(color);attr[\"stop-color\"]=color.hex;if(color.opacity<1){attr[\"stop-opacity\"]=color.opacity;}$(stop,attr);this.node.appendChild(stop);return this;}function GgetBBox(){if(this.type==\"linearGradient\"){var x1=$(this.node,\"x1\")||0,x2=$(this.node,\"x2\")||1,y1=$(this.node,\"y1\")||0,y2=$(this.node,\"y2\")||0;return Snap._.box(x1,y1,math.abs(x2-x1),math.abs(y2-y1));}else{var cx=this.node.cx||.5,cy=this.node.cy||.5,r=this.node.r||0;return Snap._.box(cx-r,cy-r,r*2,r*2);}}function gradient(defs,str){var grad=eve(\"snap.util.grad.parse\",null,str).firstDefined(),el;if(!grad){return null;}grad.params.unshift(defs);if(grad.type.toLowerCase()==\"l\"){el=gradientLinear.apply(0,grad.params);}else{el=gradientRadial.apply(0,grad.params);}if(grad.type!=grad.type.toLowerCase()){$(el.node,{gradientUnits:\"userSpaceOnUse\"});}var stops=grad.stops,len=stops.length,start=0,j=0;function seed(i,end){var step=(end-start)/(i-j);for(var k=j;k<i;k++){stops[k].offset=+(+start+step*(k-j)).toFixed(2);}j=i;start=end;}len--;for(var i=0;i<len;i++){if(\"offset\"in stops[i]){seed(i,stops[i].offset);}}stops[len].offset=stops[len].offset||100;seed(len,stops[len].offset);for(i=0;i<=len;i++){var stop=stops[i];el.addStop(stop.color,stop.offset);}return el;}function gradientLinear(defs,x1,y1,x2,y2){var el=Snap._.make(\"linearGradient\",defs);el.stops=Gstops;el.addStop=GaddStop;el.getBBox=GgetBBox;if(x1!=null){$(el.node,{x1:x1,y1:y1,x2:x2,y2:y2});}return el;}function gradientRadial(defs,cx,cy,r,fx,fy){var el=Snap._.make(\"radialGradient\",defs);el.stops=Gstops;el.addStop=GaddStop;el.getBBox=GgetBBox;if(cx!=null){$(el.node,{cx:cx,cy:cy,r:r});}if(fx!=null&&fy!=null){$(el.node,{fx:fx,fy:fy});}return el;}/*\\\n\t * Paper.gradient\n\t [ method ]\n\t **\n\t * Creates a gradient element\n\t **\n\t - gradient (string) gradient descriptor\n\t > Gradient Descriptor\n\t * The gradient descriptor is an expression formatted as\n\t * follows: `<type>(<coords>)<colors>`. The `<type>` can be\n\t * either linear or radial. The uppercase `L` or `R` letters\n\t * indicate absolute coordinates offset from the SVG surface.\n\t * Lowercase `l` or `r` letters indicate coordinates\n\t * calculated relative to the element to which the gradient is\n\t * applied. Coordinates specify a linear gradient vector as\n\t * `x1`, `y1`, `x2`, `y2`, or a radial gradient as `cx`, `cy`,\n\t * `r` and optional `fx`, `fy` specifying a focal point away\n\t * from the center of the circle. Specify `<colors>` as a list\n\t * of dash-separated CSS color values. Each color may be\n\t * followed by a custom offset value, separated with a colon\n\t * character.\n\t > Examples\n\t * Linear gradient, relative from top-left corner to bottom-right\n\t * corner, from black through red to white:\n\t | var g = paper.gradient(\"l(0, 0, 1, 1)#000-#f00-#fff\");\n\t * Linear gradient, absolute from (0, 0) to (100, 100), from black\n\t * through red at 25% to white:\n\t | var g = paper.gradient(\"L(0, 0, 100, 100)#000-#f00:25-#fff\");\n\t * Radial gradient, relative from the center of the element with radius\n\t * half the width, from black to white:\n\t | var g = paper.gradient(\"r(0.5, 0.5, 0.5)#000-#fff\");\n\t * To apply the gradient:\n\t | paper.circle(50, 50, 40).attr({\n\t | fill: g\n\t | });\n\t = (object) the `gradient` element\n\t \\*/proto.gradient=function(str){return gradient(this.defs,str);};proto.gradientLinear=function(x1,y1,x2,y2){return gradientLinear(this.defs,x1,y1,x2,y2);};proto.gradientRadial=function(cx,cy,r,fx,fy){return gradientRadial(this.defs,cx,cy,r,fx,fy);};/*\\\n\t * Paper.toString\n\t [ method ]\n\t **\n\t * Returns SVG code for the @Paper\n\t = (string) SVG code for the @Paper\n\t \\*/proto.toString=function(){var doc=this.node.ownerDocument,f=doc.createDocumentFragment(),d=doc.createElement(\"div\"),svg=this.node.cloneNode(true),res;f.appendChild(d);d.appendChild(svg);Snap._.$(svg,{xmlns:\"http://www.w3.org/2000/svg\"});res=d.innerHTML;f.removeChild(f.firstChild);return res;};/*\\\n\t * Paper.toDataURL\n\t [ method ]\n\t **\n\t * Returns SVG code for the @Paper as Data URI string.\n\t = (string) Data URI string\n\t \\*/proto.toDataURL=function(){if(window&&window.btoa){return\"data:image/svg+xml;base64,\"+btoa(unescape(encodeURIComponent(this)));}};/*\\\n\t * Paper.clear\n\t [ method ]\n\t **\n\t * Removes all child nodes of the paper, except <defs>.\n\t \\*/proto.clear=function(){var node=this.node.firstChild,next;while(node){next=node.nextSibling;if(node.tagName!=\"defs\"){node.parentNode.removeChild(node);}else{proto.clear.call({node:node});}node=next;}};})();});// Copyright (c) 2013 Adobe Systems Incorporated. All rights reserved.\n\t// \n\t// Licensed under the Apache License, Version 2.0 (the \"License\");\n\t// you may not use this file except in compliance with the License.\n\t// You may obtain a copy of the License at\n\t// \n\t// http://www.apache.org/licenses/LICENSE-2.0\n\t// \n\t// Unless required by applicable law or agreed to in writing, software\n\t// distributed under the License is distributed on an \"AS IS\" BASIS,\n\t// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\t// See the License for the specific language governing permissions and\n\t// limitations under the License.\n\tSnap.plugin(function(Snap,Element,Paper,glob){var elproto=Element.prototype,is=Snap.is,clone=Snap._.clone,has=\"hasOwnProperty\",p2s=/,?([a-z]),?/gi,toFloat=parseFloat,math=Math,PI=math.PI,mmin=math.min,mmax=math.max,pow=math.pow,abs=math.abs;function paths(ps){var p=paths.ps=paths.ps||{};if(p[ps]){p[ps].sleep=100;}else{p[ps]={sleep:100};}setTimeout(function(){for(var key in p){if(p[has](key)&&key!=ps){p[key].sleep--;!p[key].sleep&&delete p[key];}}});return p[ps];}function box(x,y,width,height){if(x==null){x=y=width=height=0;}if(y==null){y=x.y;width=x.width;height=x.height;x=x.x;}return{x:x,y:y,width:width,w:width,height:height,h:height,x2:x+width,y2:y+height,cx:x+width/2,cy:y+height/2,r1:math.min(width,height)/2,r2:math.max(width,height)/2,r0:math.sqrt(width*width+height*height)/2,path:rectPath(x,y,width,height),vb:[x,y,width,height].join(\" \")};}function toString(){return this.join(\",\").replace(p2s,\"$1\");}function pathClone(pathArray){var res=clone(pathArray);res.toString=toString;return res;}function getPointAtSegmentLength(p1x,p1y,c1x,c1y,c2x,c2y,p2x,p2y,length){if(length==null){return bezlen(p1x,p1y,c1x,c1y,c2x,c2y,p2x,p2y);}else{return findDotsAtSegment(p1x,p1y,c1x,c1y,c2x,c2y,p2x,p2y,getTotLen(p1x,p1y,c1x,c1y,c2x,c2y,p2x,p2y,length));}}function getLengthFactory(istotal,subpath){function O(val){return+(+val).toFixed(3);}return Snap._.cacher(function(path,length,onlystart){if(path instanceof Element){path=path.attr(\"d\");}path=path2curve(path);var x,y,p,l,sp=\"\",subpaths={},point,len=0;for(var i=0,ii=path.length;i<ii;i++){p=path[i];if(p[0]==\"M\"){x=+p[1];y=+p[2];}else{l=getPointAtSegmentLength(x,y,p[1],p[2],p[3],p[4],p[5],p[6]);if(len+l>length){if(subpath&&!subpaths.start){point=getPointAtSegmentLength(x,y,p[1],p[2],p[3],p[4],p[5],p[6],length-len);sp+=[\"C\"+O(point.start.x),O(point.start.y),O(point.m.x),O(point.m.y),O(point.x),O(point.y)];if(onlystart){return sp;}subpaths.start=sp;sp=[\"M\"+O(point.x),O(point.y)+\"C\"+O(point.n.x),O(point.n.y),O(point.end.x),O(point.end.y),O(p[5]),O(p[6])].join();len+=l;x=+p[5];y=+p[6];continue;}if(!istotal&&!subpath){point=getPointAtSegmentLength(x,y,p[1],p[2],p[3],p[4],p[5],p[6],length-len);return point;}}len+=l;x=+p[5];y=+p[6];}sp+=p.shift()+p;}subpaths.end=sp;point=istotal?len:subpath?subpaths:findDotsAtSegment(x,y,p[0],p[1],p[2],p[3],p[4],p[5],1);return point;},null,Snap._.clone);}var getTotalLength=getLengthFactory(1),getPointAtLength=getLengthFactory(),getSubpathsAtLength=getLengthFactory(0,1);function findDotsAtSegment(p1x,p1y,c1x,c1y,c2x,c2y,p2x,p2y,t){var t1=1-t,t13=pow(t1,3),t12=pow(t1,2),t2=t*t,t3=t2*t,x=t13*p1x+t12*3*t*c1x+t1*3*t*t*c2x+t3*p2x,y=t13*p1y+t12*3*t*c1y+t1*3*t*t*c2y+t3*p2y,mx=p1x+2*t*(c1x-p1x)+t2*(c2x-2*c1x+p1x),my=p1y+2*t*(c1y-p1y)+t2*(c2y-2*c1y+p1y),nx=c1x+2*t*(c2x-c1x)+t2*(p2x-2*c2x+c1x),ny=c1y+2*t*(c2y-c1y)+t2*(p2y-2*c2y+c1y),ax=t1*p1x+t*c1x,ay=t1*p1y+t*c1y,cx=t1*c2x+t*p2x,cy=t1*c2y+t*p2y,alpha=90-math.atan2(mx-nx,my-ny)*180/PI;// (mx > nx || my < ny) && (alpha += 180);\n\treturn{x:x,y:y,m:{x:mx,y:my},n:{x:nx,y:ny},start:{x:ax,y:ay},end:{x:cx,y:cy},alpha:alpha};}function bezierBBox(p1x,p1y,c1x,c1y,c2x,c2y,p2x,p2y){if(!Snap.is(p1x,\"array\")){p1x=[p1x,p1y,c1x,c1y,c2x,c2y,p2x,p2y];}var bbox=curveDim.apply(null,p1x);return box(bbox.min.x,bbox.min.y,bbox.max.x-bbox.min.x,bbox.max.y-bbox.min.y);}function isPointInsideBBox(bbox,x,y){return x>=bbox.x&&x<=bbox.x+bbox.width&&y>=bbox.y&&y<=bbox.y+bbox.height;}function isBBoxIntersect(bbox1,bbox2){bbox1=box(bbox1);bbox2=box(bbox2);return isPointInsideBBox(bbox2,bbox1.x,bbox1.y)||isPointInsideBBox(bbox2,bbox1.x2,bbox1.y)||isPointInsideBBox(bbox2,bbox1.x,bbox1.y2)||isPointInsideBBox(bbox2,bbox1.x2,bbox1.y2)||isPointInsideBBox(bbox1,bbox2.x,bbox2.y)||isPointInsideBBox(bbox1,bbox2.x2,bbox2.y)||isPointInsideBBox(bbox1,bbox2.x,bbox2.y2)||isPointInsideBBox(bbox1,bbox2.x2,bbox2.y2)||(bbox1.x<bbox2.x2&&bbox1.x>bbox2.x||bbox2.x<bbox1.x2&&bbox2.x>bbox1.x)&&(bbox1.y<bbox2.y2&&bbox1.y>bbox2.y||bbox2.y<bbox1.y2&&bbox2.y>bbox1.y);}function base3(t,p1,p2,p3,p4){var t1=-3*p1+9*p2-9*p3+3*p4,t2=t*t1+6*p1-12*p2+6*p3;return t*t2-3*p1+3*p2;}function bezlen(x1,y1,x2,y2,x3,y3,x4,y4,z){if(z==null){z=1;}z=z>1?1:z<0?0:z;var z2=z/2,n=12,Tvalues=[-.1252,.1252,-.3678,.3678,-.5873,.5873,-.7699,.7699,-.9041,.9041,-.9816,.9816],Cvalues=[0.2491,0.2491,0.2335,0.2335,0.2032,0.2032,0.1601,0.1601,0.1069,0.1069,0.0472,0.0472],sum=0;for(var i=0;i<n;i++){var ct=z2*Tvalues[i]+z2,xbase=base3(ct,x1,x2,x3,x4),ybase=base3(ct,y1,y2,y3,y4),comb=xbase*xbase+ybase*ybase;sum+=Cvalues[i]*math.sqrt(comb);}return z2*sum;}function getTotLen(x1,y1,x2,y2,x3,y3,x4,y4,ll){if(ll<0||bezlen(x1,y1,x2,y2,x3,y3,x4,y4)<ll){return;}var t=1,step=t/2,t2=t-step,l,e=.01;l=bezlen(x1,y1,x2,y2,x3,y3,x4,y4,t2);while(abs(l-ll)>e){step/=2;t2+=(l<ll?1:-1)*step;l=bezlen(x1,y1,x2,y2,x3,y3,x4,y4,t2);}return t2;}function intersect(x1,y1,x2,y2,x3,y3,x4,y4){if(mmax(x1,x2)<mmin(x3,x4)||mmin(x1,x2)>mmax(x3,x4)||mmax(y1,y2)<mmin(y3,y4)||mmin(y1,y2)>mmax(y3,y4)){return;}var nx=(x1*y2-y1*x2)*(x3-x4)-(x1-x2)*(x3*y4-y3*x4),ny=(x1*y2-y1*x2)*(y3-y4)-(y1-y2)*(x3*y4-y3*x4),denominator=(x1-x2)*(y3-y4)-(y1-y2)*(x3-x4);if(!denominator){return;}var px=nx/denominator,py=ny/denominator,px2=+px.toFixed(2),py2=+py.toFixed(2);if(px2<+mmin(x1,x2).toFixed(2)||px2>+mmax(x1,x2).toFixed(2)||px2<+mmin(x3,x4).toFixed(2)||px2>+mmax(x3,x4).toFixed(2)||py2<+mmin(y1,y2).toFixed(2)||py2>+mmax(y1,y2).toFixed(2)||py2<+mmin(y3,y4).toFixed(2)||py2>+mmax(y3,y4).toFixed(2)){return;}return{x:px,y:py};}function inter(bez1,bez2){return interHelper(bez1,bez2);}function interCount(bez1,bez2){return interHelper(bez1,bez2,1);}function interHelper(bez1,bez2,justCount){var bbox1=bezierBBox(bez1),bbox2=bezierBBox(bez2);if(!isBBoxIntersect(bbox1,bbox2)){return justCount?0:[];}var l1=bezlen.apply(0,bez1),l2=bezlen.apply(0,bez2),n1=~~(l1/8),n2=~~(l2/8),dots1=[],dots2=[],xy={},res=justCount?0:[];for(var i=0;i<n1+1;i++){var p=findDotsAtSegment.apply(0,bez1.concat(i/n1));dots1.push({x:p.x,y:p.y,t:i/n1});}for(i=0;i<n2+1;i++){p=findDotsAtSegment.apply(0,bez2.concat(i/n2));dots2.push({x:p.x,y:p.y,t:i/n2});}for(i=0;i<n1;i++){for(var j=0;j<n2;j++){var di=dots1[i],di1=dots1[i+1],dj=dots2[j],dj1=dots2[j+1],ci=abs(di1.x-di.x)<.001?\"y\":\"x\",cj=abs(dj1.x-dj.x)<.001?\"y\":\"x\",is=intersect(di.x,di.y,di1.x,di1.y,dj.x,dj.y,dj1.x,dj1.y);if(is){if(xy[is.x.toFixed(4)]==is.y.toFixed(4)){continue;}xy[is.x.toFixed(4)]=is.y.toFixed(4);var t1=di.t+abs((is[ci]-di[ci])/(di1[ci]-di[ci]))*(di1.t-di.t),t2=dj.t+abs((is[cj]-dj[cj])/(dj1[cj]-dj[cj]))*(dj1.t-dj.t);if(t1>=0&&t1<=1&&t2>=0&&t2<=1){if(justCount){res++;}else{res.push({x:is.x,y:is.y,t1:t1,t2:t2});}}}}}return res;}function pathIntersection(path1,path2){return interPathHelper(path1,path2);}function pathIntersectionNumber(path1,path2){return interPathHelper(path1,path2,1);}function interPathHelper(path1,path2,justCount){path1=path2curve(path1);path2=path2curve(path2);var x1,y1,x2,y2,x1m,y1m,x2m,y2m,bez1,bez2,res=justCount?0:[];for(var i=0,ii=path1.length;i<ii;i++){var pi=path1[i];if(pi[0]==\"M\"){x1=x1m=pi[1];y1=y1m=pi[2];}else{if(pi[0]==\"C\"){bez1=[x1,y1].concat(pi.slice(1));x1=bez1[6];y1=bez1[7];}else{bez1=[x1,y1,x1,y1,x1m,y1m,x1m,y1m];x1=x1m;y1=y1m;}for(var j=0,jj=path2.length;j<jj;j++){var pj=path2[j];if(pj[0]==\"M\"){x2=x2m=pj[1];y2=y2m=pj[2];}else{if(pj[0]==\"C\"){bez2=[x2,y2].concat(pj.slice(1));x2=bez2[6];y2=bez2[7];}else{bez2=[x2,y2,x2,y2,x2m,y2m,x2m,y2m];x2=x2m;y2=y2m;}var intr=interHelper(bez1,bez2,justCount);if(justCount){res+=intr;}else{for(var k=0,kk=intr.length;k<kk;k++){intr[k].segment1=i;intr[k].segment2=j;intr[k].bez1=bez1;intr[k].bez2=bez2;}res=res.concat(intr);}}}}}return res;}function isPointInsidePath(path,x,y){var bbox=pathBBox(path);return isPointInsideBBox(bbox,x,y)&&interPathHelper(path,[[\"M\",x,y],[\"H\",bbox.x2+10]],1)%2==1;}function pathBBox(path){var pth=paths(path);if(pth.bbox){return clone(pth.bbox);}if(!path){return box();}path=path2curve(path);var x=0,y=0,X=[],Y=[],p;for(var i=0,ii=path.length;i<ii;i++){p=path[i];if(p[0]==\"M\"){x=p[1];y=p[2];X.push(x);Y.push(y);}else{var dim=curveDim(x,y,p[1],p[2],p[3],p[4],p[5],p[6]);X=X.concat(dim.min.x,dim.max.x);Y=Y.concat(dim.min.y,dim.max.y);x=p[5];y=p[6];}}var xmin=mmin.apply(0,X),ymin=mmin.apply(0,Y),xmax=mmax.apply(0,X),ymax=mmax.apply(0,Y),bb=box(xmin,ymin,xmax-xmin,ymax-ymin);pth.bbox=clone(bb);return bb;}function rectPath(x,y,w,h,r){if(r){return[[\"M\",+x+ +r,y],[\"l\",w-r*2,0],[\"a\",r,r,0,0,1,r,r],[\"l\",0,h-r*2],[\"a\",r,r,0,0,1,-r,r],[\"l\",r*2-w,0],[\"a\",r,r,0,0,1,-r,-r],[\"l\",0,r*2-h],[\"a\",r,r,0,0,1,r,-r],[\"z\"]];}var res=[[\"M\",x,y],[\"l\",w,0],[\"l\",0,h],[\"l\",-w,0],[\"z\"]];res.toString=toString;return res;}function ellipsePath(x,y,rx,ry,a){if(a==null&&ry==null){ry=rx;}x=+x;y=+y;rx=+rx;ry=+ry;if(a!=null){var rad=Math.PI/180,x1=x+rx*Math.cos(-ry*rad),x2=x+rx*Math.cos(-a*rad),y1=y+rx*Math.sin(-ry*rad),y2=y+rx*Math.sin(-a*rad),res=[[\"M\",x1,y1],[\"A\",rx,rx,0,+(a-ry>180),0,x2,y2]];}else{res=[[\"M\",x,y],[\"m\",0,-ry],[\"a\",rx,ry,0,1,1,0,2*ry],[\"a\",rx,ry,0,1,1,0,-2*ry],[\"z\"]];}res.toString=toString;return res;}var unit2px=Snap._unit2px,getPath={path:function path(el){return el.attr(\"path\");},circle:function circle(el){var attr=unit2px(el);return ellipsePath(attr.cx,attr.cy,attr.r);},ellipse:function ellipse(el){var attr=unit2px(el);return ellipsePath(attr.cx||0,attr.cy||0,attr.rx,attr.ry);},rect:function rect(el){var attr=unit2px(el);return rectPath(attr.x||0,attr.y||0,attr.width,attr.height,attr.rx,attr.ry);},image:function image(el){var attr=unit2px(el);return rectPath(attr.x||0,attr.y||0,attr.width,attr.height);},line:function line(el){return\"M\"+[el.attr(\"x1\")||0,el.attr(\"y1\")||0,el.attr(\"x2\"),el.attr(\"y2\")];},polyline:function polyline(el){return\"M\"+el.attr(\"points\");},polygon:function polygon(el){return\"M\"+el.attr(\"points\")+\"z\";},deflt:function deflt(el){var bbox=el.node.getBBox();return rectPath(bbox.x,bbox.y,bbox.width,bbox.height);}};function pathToRelative(pathArray){var pth=paths(pathArray),lowerCase=String.prototype.toLowerCase;if(pth.rel){return pathClone(pth.rel);}if(!Snap.is(pathArray,\"array\")||!Snap.is(pathArray&&pathArray[0],\"array\")){pathArray=Snap.parsePathString(pathArray);}var res=[],x=0,y=0,mx=0,my=0,start=0;if(pathArray[0][0]==\"M\"){x=pathArray[0][1];y=pathArray[0][2];mx=x;my=y;start++;res.push([\"M\",x,y]);}for(var i=start,ii=pathArray.length;i<ii;i++){var r=res[i]=[],pa=pathArray[i];if(pa[0]!=lowerCase.call(pa[0])){r[0]=lowerCase.call(pa[0]);switch(r[0]){case\"a\":r[1]=pa[1];r[2]=pa[2];r[3]=pa[3];r[4]=pa[4];r[5]=pa[5];r[6]=+(pa[6]-x).toFixed(3);r[7]=+(pa[7]-y).toFixed(3);break;case\"v\":r[1]=+(pa[1]-y).toFixed(3);break;case\"m\":mx=pa[1];my=pa[2];default:for(var j=1,jj=pa.length;j<jj;j++){r[j]=+(pa[j]-(j%2?x:y)).toFixed(3);}}}else{r=res[i]=[];if(pa[0]==\"m\"){mx=pa[1]+x;my=pa[2]+y;}for(var k=0,kk=pa.length;k<kk;k++){res[i][k]=pa[k];}}var len=res[i].length;switch(res[i][0]){case\"z\":x=mx;y=my;break;case\"h\":x+=+res[i][len-1];break;case\"v\":y+=+res[i][len-1];break;default:x+=+res[i][len-2];y+=+res[i][len-1];}}res.toString=toString;pth.rel=pathClone(res);return res;}function pathToAbsolute(pathArray){var pth=paths(pathArray);if(pth.abs){return pathClone(pth.abs);}if(!is(pathArray,\"array\")||!is(pathArray&&pathArray[0],\"array\")){// rough assumption\n\tpathArray=Snap.parsePathString(pathArray);}if(!pathArray||!pathArray.length){return[[\"M\",0,0]];}var res=[],x=0,y=0,mx=0,my=0,start=0,pa0;if(pathArray[0][0]==\"M\"){x=+pathArray[0][1];y=+pathArray[0][2];mx=x;my=y;start++;res[0]=[\"M\",x,y];}var crz=pathArray.length==3&&pathArray[0][0]==\"M\"&&pathArray[1][0].toUpperCase()==\"R\"&&pathArray[2][0].toUpperCase()==\"Z\";for(var r,pa,i=start,ii=pathArray.length;i<ii;i++){res.push(r=[]);pa=pathArray[i];pa0=pa[0];if(pa0!=pa0.toUpperCase()){r[0]=pa0.toUpperCase();switch(r[0]){case\"A\":r[1]=pa[1];r[2]=pa[2];r[3]=pa[3];r[4]=pa[4];r[5]=pa[5];r[6]=+pa[6]+x;r[7]=+pa[7]+y;break;case\"V\":r[1]=+pa[1]+y;break;case\"H\":r[1]=+pa[1]+x;break;case\"R\":var dots=[x,y].concat(pa.slice(1));for(var j=2,jj=dots.length;j<jj;j++){dots[j]=+dots[j]+x;dots[++j]=+dots[j]+y;}res.pop();res=res.concat(catmullRom2bezier(dots,crz));break;case\"O\":res.pop();dots=ellipsePath(x,y,pa[1],pa[2]);dots.push(dots[0]);res=res.concat(dots);break;case\"U\":res.pop();res=res.concat(ellipsePath(x,y,pa[1],pa[2],pa[3]));r=[\"U\"].concat(res[res.length-1].slice(-2));break;case\"M\":mx=+pa[1]+x;my=+pa[2]+y;default:for(j=1,jj=pa.length;j<jj;j++){r[j]=+pa[j]+(j%2?x:y);}}}else if(pa0==\"R\"){dots=[x,y].concat(pa.slice(1));res.pop();res=res.concat(catmullRom2bezier(dots,crz));r=[\"R\"].concat(pa.slice(-2));}else if(pa0==\"O\"){res.pop();dots=ellipsePath(x,y,pa[1],pa[2]);dots.push(dots[0]);res=res.concat(dots);}else if(pa0==\"U\"){res.pop();res=res.concat(ellipsePath(x,y,pa[1],pa[2],pa[3]));r=[\"U\"].concat(res[res.length-1].slice(-2));}else{for(var k=0,kk=pa.length;k<kk;k++){r[k]=pa[k];}}pa0=pa0.toUpperCase();if(pa0!=\"O\"){switch(r[0]){case\"Z\":x=+mx;y=+my;break;case\"H\":x=r[1];break;case\"V\":y=r[1];break;case\"M\":mx=r[r.length-2];my=r[r.length-1];default:x=r[r.length-2];y=r[r.length-1];}}}res.toString=toString;pth.abs=pathClone(res);return res;}function l2c(x1,y1,x2,y2){return[x1,y1,x2,y2,x2,y2];}function q2c(x1,y1,ax,ay,x2,y2){var _13=1/3,_23=2/3;return[_13*x1+_23*ax,_13*y1+_23*ay,_13*x2+_23*ax,_13*y2+_23*ay,x2,y2];}function a2c(x1,y1,rx,ry,angle,large_arc_flag,sweep_flag,x2,y2,recursive){// for more information of where this math came from visit:\n\t// http://www.w3.org/TR/SVG11/implnote.html#ArcImplementationNotes\n\tvar _120=PI*120/180,rad=PI/180*(+angle||0),res=[],xy,rotate=Snap._.cacher(function(x,y,rad){var X=x*math.cos(rad)-y*math.sin(rad),Y=x*math.sin(rad)+y*math.cos(rad);return{x:X,y:Y};});if(!recursive){xy=rotate(x1,y1,-rad);x1=xy.x;y1=xy.y;xy=rotate(x2,y2,-rad);x2=xy.x;y2=xy.y;var cos=math.cos(PI/180*angle),sin=math.sin(PI/180*angle),x=(x1-x2)/2,y=(y1-y2)/2;var h=x*x/(rx*rx)+y*y/(ry*ry);if(h>1){h=math.sqrt(h);rx=h*rx;ry=h*ry;}var rx2=rx*rx,ry2=ry*ry,k=(large_arc_flag==sweep_flag?-1:1)*math.sqrt(abs((rx2*ry2-rx2*y*y-ry2*x*x)/(rx2*y*y+ry2*x*x))),cx=k*rx*y/ry+(x1+x2)/2,cy=k*-ry*x/rx+(y1+y2)/2,f1=math.asin(((y1-cy)/ry).toFixed(9)),f2=math.asin(((y2-cy)/ry).toFixed(9));f1=x1<cx?PI-f1:f1;f2=x2<cx?PI-f2:f2;f1<0&&(f1=PI*2+f1);f2<0&&(f2=PI*2+f2);if(sweep_flag&&f1>f2){f1=f1-PI*2;}if(!sweep_flag&&f2>f1){f2=f2-PI*2;}}else{f1=recursive[0];f2=recursive[1];cx=recursive[2];cy=recursive[3];}var df=f2-f1;if(abs(df)>_120){var f2old=f2,x2old=x2,y2old=y2;f2=f1+_120*(sweep_flag&&f2>f1?1:-1);x2=cx+rx*math.cos(f2);y2=cy+ry*math.sin(f2);res=a2c(x2,y2,rx,ry,angle,0,sweep_flag,x2old,y2old,[f2,f2old,cx,cy]);}df=f2-f1;var c1=math.cos(f1),s1=math.sin(f1),c2=math.cos(f2),s2=math.sin(f2),t=math.tan(df/4),hx=4/3*rx*t,hy=4/3*ry*t,m1=[x1,y1],m2=[x1+hx*s1,y1-hy*c1],m3=[x2+hx*s2,y2-hy*c2],m4=[x2,y2];m2[0]=2*m1[0]-m2[0];m2[1]=2*m1[1]-m2[1];if(recursive){return[m2,m3,m4].concat(res);}else{res=[m2,m3,m4].concat(res).join().split(\",\");var newres=[];for(var i=0,ii=res.length;i<ii;i++){newres[i]=i%2?rotate(res[i-1],res[i],rad).y:rotate(res[i],res[i+1],rad).x;}return newres;}}function findDotAtSegment(p1x,p1y,c1x,c1y,c2x,c2y,p2x,p2y,t){var t1=1-t;return{x:pow(t1,3)*p1x+pow(t1,2)*3*t*c1x+t1*3*t*t*c2x+pow(t,3)*p2x,y:pow(t1,3)*p1y+pow(t1,2)*3*t*c1y+t1*3*t*t*c2y+pow(t,3)*p2y};}// Returns bounding box of cubic bezier curve.\n\t// Source: http://blog.hackers-cafe.net/2009/06/how-to-calculate-bezier-curves-bounding.html\n\t// Original version: NISHIO Hirokazu\n\t// Modifications: https://github.com/timo22345\n\tfunction curveDim(x0,y0,x1,y1,x2,y2,x3,y3){var tvalues=[],bounds=[[],[]],a,b,c,t,t1,t2,b2ac,sqrtb2ac;for(var i=0;i<2;++i){if(i==0){b=6*x0-12*x1+6*x2;a=-3*x0+9*x1-9*x2+3*x3;c=3*x1-3*x0;}else{b=6*y0-12*y1+6*y2;a=-3*y0+9*y1-9*y2+3*y3;c=3*y1-3*y0;}if(abs(a)<1e-12){if(abs(b)<1e-12){continue;}t=-c/b;if(0<t&&t<1){tvalues.push(t);}continue;}b2ac=b*b-4*c*a;sqrtb2ac=math.sqrt(b2ac);if(b2ac<0){continue;}t1=(-b+sqrtb2ac)/(2*a);if(0<t1&&t1<1){tvalues.push(t1);}t2=(-b-sqrtb2ac)/(2*a);if(0<t2&&t2<1){tvalues.push(t2);}}var x,y,j=tvalues.length,jlen=j,mt;while(j--){t=tvalues[j];mt=1-t;bounds[0][j]=mt*mt*mt*x0+3*mt*mt*t*x1+3*mt*t*t*x2+t*t*t*x3;bounds[1][j]=mt*mt*mt*y0+3*mt*mt*t*y1+3*mt*t*t*y2+t*t*t*y3;}bounds[0][jlen]=x0;bounds[1][jlen]=y0;bounds[0][jlen+1]=x3;bounds[1][jlen+1]=y3;bounds[0].length=bounds[1].length=jlen+2;return{min:{x:mmin.apply(0,bounds[0]),y:mmin.apply(0,bounds[1])},max:{x:mmax.apply(0,bounds[0]),y:mmax.apply(0,bounds[1])}};}function path2curve(path,path2){var pth=!path2&&paths(path);if(!path2&&pth.curve){return pathClone(pth.curve);}var p=pathToAbsolute(path),p2=path2&&pathToAbsolute(path2),attrs={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},attrs2={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},processPath=function processPath(path,d,pcom){var nx,ny;if(!path){return[\"C\",d.x,d.y,d.x,d.y,d.x,d.y];}!(path[0]in{T:1,Q:1})&&(d.qx=d.qy=null);switch(path[0]){case\"M\":d.X=path[1];d.Y=path[2];break;case\"A\":path=[\"C\"].concat(a2c.apply(0,[d.x,d.y].concat(path.slice(1))));break;case\"S\":if(pcom==\"C\"||pcom==\"S\"){// In \"S\" case we have to take into account, if the previous command is C/S.\n\tnx=d.x*2-d.bx;// And reflect the previous\n\tny=d.y*2-d.by;// command's control point relative to the current point.\n\t}else{// or some else or nothing\n\tnx=d.x;ny=d.y;}path=[\"C\",nx,ny].concat(path.slice(1));break;case\"T\":if(pcom==\"Q\"||pcom==\"T\"){// In \"T\" case we have to take into account, if the previous command is Q/T.\n\td.qx=d.x*2-d.qx;// And make a reflection similar\n\td.qy=d.y*2-d.qy;// to case \"S\".\n\t}else{// or something else or nothing\n\td.qx=d.x;d.qy=d.y;}path=[\"C\"].concat(q2c(d.x,d.y,d.qx,d.qy,path[1],path[2]));break;case\"Q\":d.qx=path[1];d.qy=path[2];path=[\"C\"].concat(q2c(d.x,d.y,path[1],path[2],path[3],path[4]));break;case\"L\":path=[\"C\"].concat(l2c(d.x,d.y,path[1],path[2]));break;case\"H\":path=[\"C\"].concat(l2c(d.x,d.y,path[1],d.y));break;case\"V\":path=[\"C\"].concat(l2c(d.x,d.y,d.x,path[1]));break;case\"Z\":path=[\"C\"].concat(l2c(d.x,d.y,d.X,d.Y));break;}return path;},fixArc=function fixArc(pp,i){if(pp[i].length>7){pp[i].shift();var pi=pp[i];while(pi.length){pcoms1[i]=\"A\";// if created multiple C:s, their original seg is saved\n\tp2&&(pcoms2[i]=\"A\");// the same as above\n\tpp.splice(i++,0,[\"C\"].concat(pi.splice(0,6)));}pp.splice(i,1);ii=mmax(p.length,p2&&p2.length||0);}},fixM=function fixM(path1,path2,a1,a2,i){if(path1&&path2&&path1[i][0]==\"M\"&&path2[i][0]!=\"M\"){path2.splice(i,0,[\"M\",a2.x,a2.y]);a1.bx=0;a1.by=0;a1.x=path1[i][1];a1.y=path1[i][2];ii=mmax(p.length,p2&&p2.length||0);}},pcoms1=[],// path commands of original path p\n\tpcoms2=[],// path commands of original path p2\n\tpfirst=\"\",// temporary holder for original path command\n\tpcom=\"\";// holder for previous path command of original path\n\tfor(var i=0,ii=mmax(p.length,p2&&p2.length||0);i<ii;i++){p[i]&&(pfirst=p[i][0]);// save current path command\n\tif(pfirst!=\"C\")// C is not saved yet, because it may be result of conversion\n\t{pcoms1[i]=pfirst;// Save current path command\n\ti&&(pcom=pcoms1[i-1]);// Get previous path command pcom\n\t}p[i]=processPath(p[i],attrs,pcom);// Previous path command is inputted to processPath\n\tif(pcoms1[i]!=\"A\"&&pfirst==\"C\")pcoms1[i]=\"C\";// A is the only command\n\t// which may produce multiple C:s\n\t// so we have to make sure that C is also C in original path\n\tfixArc(p,i);// fixArc adds also the right amount of A:s to pcoms1\n\tif(p2){// the same procedures is done to p2\n\tp2[i]&&(pfirst=p2[i][0]);if(pfirst!=\"C\"){pcoms2[i]=pfirst;i&&(pcom=pcoms2[i-1]);}p2[i]=processPath(p2[i],attrs2,pcom);if(pcoms2[i]!=\"A\"&&pfirst==\"C\"){pcoms2[i]=\"C\";}fixArc(p2,i);}fixM(p,p2,attrs,attrs2,i);fixM(p2,p,attrs2,attrs,i);var seg=p[i],seg2=p2&&p2[i],seglen=seg.length,seg2len=p2&&seg2.length;attrs.x=seg[seglen-2];attrs.y=seg[seglen-1];attrs.bx=toFloat(seg[seglen-4])||attrs.x;attrs.by=toFloat(seg[seglen-3])||attrs.y;attrs2.bx=p2&&(toFloat(seg2[seg2len-4])||attrs2.x);attrs2.by=p2&&(toFloat(seg2[seg2len-3])||attrs2.y);attrs2.x=p2&&seg2[seg2len-2];attrs2.y=p2&&seg2[seg2len-1];}if(!p2){pth.curve=pathClone(p);}return p2?[p,p2]:p;}function mapPath(path,matrix){if(!matrix){return path;}var x,y,i,j,ii,jj,pathi;path=path2curve(path);for(i=0,ii=path.length;i<ii;i++){pathi=path[i];for(j=1,jj=pathi.length;j<jj;j+=2){x=matrix.x(pathi[j],pathi[j+1]);y=matrix.y(pathi[j],pathi[j+1]);pathi[j]=x;pathi[j+1]=y;}}return path;}// http://schepers.cc/getting-to-the-point\n\tfunction catmullRom2bezier(crp,z){var d=[];for(var i=0,iLen=crp.length;iLen-2*!z>i;i+=2){var p=[{x:+crp[i-2],y:+crp[i-1]},{x:+crp[i],y:+crp[i+1]},{x:+crp[i+2],y:+crp[i+3]},{x:+crp[i+4],y:+crp[i+5]}];if(z){if(!i){p[0]={x:+crp[iLen-2],y:+crp[iLen-1]};}else if(iLen-4==i){p[3]={x:+crp[0],y:+crp[1]};}else if(iLen-2==i){p[2]={x:+crp[0],y:+crp[1]};p[3]={x:+crp[2],y:+crp[3]};}}else{if(iLen-4==i){p[3]=p[2];}else if(!i){p[0]={x:+crp[i],y:+crp[i+1]};}}d.push([\"C\",(-p[0].x+6*p[1].x+p[2].x)/6,(-p[0].y+6*p[1].y+p[2].y)/6,(p[1].x+6*p[2].x-p[3].x)/6,(p[1].y+6*p[2].y-p[3].y)/6,p[2].x,p[2].y]);}return d;}// export\n\tSnap.path=paths;/*\\\n\t * Snap.path.getTotalLength\n\t [ method ]\n\t **\n\t * Returns the length of the given path in pixels\n\t **\n\t - path (string) SVG path string\n\t **\n\t = (number) length\n\t \\*/Snap.path.getTotalLength=getTotalLength;/*\\\n\t * Snap.path.getPointAtLength\n\t [ method ]\n\t **\n\t * Returns the coordinates of the point located at the given length along the given path\n\t **\n\t - path (string) SVG path string\n\t - length (number) length, in pixels, from the start of the path, excluding non-rendering jumps\n\t **\n\t = (object) representation of the point:\n\t o {\n\t o x: (number) x coordinate,\n\t o y: (number) y coordinate,\n\t o alpha: (number) angle of derivative\n\t o }\n\t \\*/Snap.path.getPointAtLength=getPointAtLength;/*\\\n\t * Snap.path.getSubpath\n\t [ method ]\n\t **\n\t * Returns the subpath of a given path between given start and end lengths\n\t **\n\t - path (string) SVG path string\n\t - from (number) length, in pixels, from the start of the path to the start of the segment\n\t - to (number) length, in pixels, from the start of the path to the end of the segment\n\t **\n\t = (string) path string definition for the segment\n\t \\*/Snap.path.getSubpath=function(path,from,to){if(this.getTotalLength(path)-to<1e-6){return getSubpathsAtLength(path,from).end;}var a=getSubpathsAtLength(path,to,1);return from?getSubpathsAtLength(a,from).end:a;};/*\\\n\t * Element.getTotalLength\n\t [ method ]\n\t **\n\t * Returns the length of the path in pixels (only works for `path` elements)\n\t = (number) length\n\t \\*/elproto.getTotalLength=function(){if(this.node.getTotalLength){return this.node.getTotalLength();}};// SIERRA Element.getPointAtLength()/Element.getTotalLength(): If a <path> is broken into different segments, is the jump distance to the new coordinates set by the _M_ or _m_ commands calculated as part of the path's total length?\n\t/*\\\n\t * Element.getPointAtLength\n\t [ method ]\n\t **\n\t * Returns coordinates of the point located at the given length on the given path (only works for `path` elements)\n\t **\n\t - length (number) length, in pixels, from the start of the path, excluding non-rendering jumps\n\t **\n\t = (object) representation of the point:\n\t o {\n\t o x: (number) x coordinate,\n\t o y: (number) y coordinate,\n\t o alpha: (number) angle of derivative\n\t o }\n\t \\*/elproto.getPointAtLength=function(length){return getPointAtLength(this.attr(\"d\"),length);};// SIERRA Element.getSubpath(): Similar to the problem for Element.getPointAtLength(). Unclear how this would work for a segmented path. Overall, the concept of _subpath_ and what I'm calling a _segment_ (series of non-_M_ or _Z_ commands) is unclear.\n\t/*\\\n\t * Element.getSubpath\n\t [ method ]\n\t **\n\t * Returns subpath of a given element from given start and end lengths (only works for `path` elements)\n\t **\n\t - from (number) length, in pixels, from the start of the path to the start of the segment\n\t - to (number) length, in pixels, from the start of the path to the end of the segment\n\t **\n\t = (string) path string definition for the segment\n\t \\*/elproto.getSubpath=function(from,to){return Snap.path.getSubpath(this.attr(\"d\"),from,to);};Snap._.box=box;/*\\\n\t * Snap.path.findDotsAtSegment\n\t [ method ]\n\t **\n\t * Utility method\n\t **\n\t * Finds dot coordinates on the given cubic beziér curve at the given t\n\t - p1x (number) x of the first point of the curve\n\t - p1y (number) y of the first point of the curve\n\t - c1x (number) x of the first anchor of the curve\n\t - c1y (number) y of the first anchor of the curve\n\t - c2x (number) x of the second anchor of the curve\n\t - c2y (number) y of the second anchor of the curve\n\t - p2x (number) x of the second point of the curve\n\t - p2y (number) y of the second point of the curve\n\t - t (number) position on the curve (0..1)\n\t = (object) point information in format:\n\t o {\n\t o x: (number) x coordinate of the point,\n\t o y: (number) y coordinate of the point,\n\t o m: {\n\t o x: (number) x coordinate of the left anchor,\n\t o y: (number) y coordinate of the left anchor\n\t o },\n\t o n: {\n\t o x: (number) x coordinate of the right anchor,\n\t o y: (number) y coordinate of the right anchor\n\t o },\n\t o start: {\n\t o x: (number) x coordinate of the start of the curve,\n\t o y: (number) y coordinate of the start of the curve\n\t o },\n\t o end: {\n\t o x: (number) x coordinate of the end of the curve,\n\t o y: (number) y coordinate of the end of the curve\n\t o },\n\t o alpha: (number) angle of the curve derivative at the point\n\t o }\n\t \\*/Snap.path.findDotsAtSegment=findDotsAtSegment;/*\\\n\t * Snap.path.bezierBBox\n\t [ method ]\n\t **\n\t * Utility method\n\t **\n\t * Returns the bounding box of a given cubic beziér curve\n\t - p1x (number) x of the first point of the curve\n\t - p1y (number) y of the first point of the curve\n\t - c1x (number) x of the first anchor of the curve\n\t - c1y (number) y of the first anchor of the curve\n\t - c2x (number) x of the second anchor of the curve\n\t - c2y (number) y of the second anchor of the curve\n\t - p2x (number) x of the second point of the curve\n\t - p2y (number) y of the second point of the curve\n\t * or\n\t - bez (array) array of six points for beziér curve\n\t = (object) bounding box\n\t o {\n\t o x: (number) x coordinate of the left top point of the box,\n\t o y: (number) y coordinate of the left top point of the box,\n\t o x2: (number) x coordinate of the right bottom point of the box,\n\t o y2: (number) y coordinate of the right bottom point of the box,\n\t o width: (number) width of the box,\n\t o height: (number) height of the box\n\t o }\n\t \\*/Snap.path.bezierBBox=bezierBBox;/*\\\n\t * Snap.path.isPointInsideBBox\n\t [ method ]\n\t **\n\t * Utility method\n\t **\n\t * Returns `true` if given point is inside bounding box\n\t - bbox (string) bounding box\n\t - x (string) x coordinate of the point\n\t - y (string) y coordinate of the point\n\t = (boolean) `true` if point is inside\n\t \\*/Snap.path.isPointInsideBBox=isPointInsideBBox;Snap.closest=function(x,y,X,Y){var r=100,b=box(x-r/2,y-r/2,r,r),inside=[],getter=X[0].hasOwnProperty(\"x\")?function(i){return{x:X[i].x,y:X[i].y};}:function(i){return{x:X[i],y:Y[i]};},found=0;while(r<=1e6&&!found){for(var i=0,ii=X.length;i<ii;i++){var xy=getter(i);if(isPointInsideBBox(b,xy.x,xy.y)){found++;inside.push(xy);break;}}if(!found){r*=2;b=box(x-r/2,y-r/2,r,r);}}if(r==1e6){return;}var len=Infinity,res;for(i=0,ii=inside.length;i<ii;i++){var l=Snap.len(x,y,inside[i].x,inside[i].y);if(len>l){len=l;inside[i].len=l;res=inside[i];}}return res;};/*\\\n\t * Snap.path.isBBoxIntersect\n\t [ method ]\n\t **\n\t * Utility method\n\t **\n\t * Returns `true` if two bounding boxes intersect\n\t - bbox1 (string) first bounding box\n\t - bbox2 (string) second bounding box\n\t = (boolean) `true` if bounding boxes intersect\n\t \\*/Snap.path.isBBoxIntersect=isBBoxIntersect;/*\\\n\t * Snap.path.intersection\n\t [ method ]\n\t **\n\t * Utility method\n\t **\n\t * Finds intersections of two paths\n\t - path1 (string) path string\n\t - path2 (string) path string\n\t = (array) dots of intersection\n\t o [\n\t o {\n\t o x: (number) x coordinate of the point,\n\t o y: (number) y coordinate of the point,\n\t o t1: (number) t value for segment of path1,\n\t o t2: (number) t value for segment of path2,\n\t o segment1: (number) order number for segment of path1,\n\t o segment2: (number) order number for segment of path2,\n\t o bez1: (array) eight coordinates representing beziér curve for the segment of path1,\n\t o bez2: (array) eight coordinates representing beziér curve for the segment of path2\n\t o }\n\t o ]\n\t \\*/Snap.path.intersection=pathIntersection;Snap.path.intersectionNumber=pathIntersectionNumber;/*\\\n\t * Snap.path.isPointInside\n\t [ method ]\n\t **\n\t * Utility method\n\t **\n\t * Returns `true` if given point is inside a given closed path.\n\t *\n\t * Note: fill mode doesn’t affect the result of this method.\n\t - path (string) path string\n\t - x (number) x of the point\n\t - y (number) y of the point\n\t = (boolean) `true` if point is inside the path\n\t \\*/Snap.path.isPointInside=isPointInsidePath;/*\\\n\t * Snap.path.getBBox\n\t [ method ]\n\t **\n\t * Utility method\n\t **\n\t * Returns the bounding box of a given path\n\t - path (string) path string\n\t = (object) bounding box\n\t o {\n\t o x: (number) x coordinate of the left top point of the box,\n\t o y: (number) y coordinate of the left top point of the box,\n\t o x2: (number) x coordinate of the right bottom point of the box,\n\t o y2: (number) y coordinate of the right bottom point of the box,\n\t o width: (number) width of the box,\n\t o height: (number) height of the box\n\t o }\n\t \\*/Snap.path.getBBox=pathBBox;Snap.path.get=getPath;/*\\\n\t * Snap.path.toRelative\n\t [ method ]\n\t **\n\t * Utility method\n\t **\n\t * Converts path coordinates into relative values\n\t - path (string) path string\n\t = (array) path string\n\t \\*/Snap.path.toRelative=pathToRelative;/*\\\n\t * Snap.path.toAbsolute\n\t [ method ]\n\t **\n\t * Utility method\n\t **\n\t * Converts path coordinates into absolute values\n\t - path (string) path string\n\t = (array) path string\n\t \\*/Snap.path.toAbsolute=pathToAbsolute;/*\\\n\t * Snap.path.toCubic\n\t [ method ]\n\t **\n\t * Utility method\n\t **\n\t * Converts path to a new path where all segments are cubic beziér curves\n\t - pathString (string|array) path string or array of segments\n\t = (array) array of segments\n\t \\*/Snap.path.toCubic=path2curve;/*\\\n\t * Snap.path.map\n\t [ method ]\n\t **\n\t * Transform the path string with the given matrix\n\t - path (string) path string\n\t - matrix (object) see @Matrix\n\t = (string) transformed path string\n\t \\*/Snap.path.map=mapPath;Snap.path.toString=toString;Snap.path.clone=pathClone;});// Copyright (c) 2013 Adobe Systems Incorporated. All rights reserved.\n\t// \n\t// Licensed under the Apache License, Version 2.0 (the \"License\");\n\t// you may not use this file except in compliance with the License.\n\t// You may obtain a copy of the License at\n\t// \n\t// http://www.apache.org/licenses/LICENSE-2.0\n\t// \n\t// Unless required by applicable law or agreed to in writing, software\n\t// distributed under the License is distributed on an \"AS IS\" BASIS,\n\t// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\t// See the License for the specific language governing permissions and\n\t// limitations under the License.\n\tSnap.plugin(function(Snap,Element,Paper,glob){var mmax=Math.max,mmin=Math.min;// Set\n\tvar Set=function Set(items){this.items=[];this.bindings={};this.length=0;this.type=\"set\";if(items){for(var i=0,ii=items.length;i<ii;i++){if(items[i]){this[this.items.length]=this.items[this.items.length]=items[i];this.length++;}}}},setproto=Set.prototype;/*\\\n\t * Set.push\n\t [ method ]\n\t **\n\t * Adds each argument to the current set\n\t = (object) original element\n\t \\*/setproto.push=function(){var item,len;for(var i=0,ii=arguments.length;i<ii;i++){item=arguments[i];if(item){len=this.items.length;this[len]=this.items[len]=item;this.length++;}}return this;};/*\\\n\t * Set.pop\n\t [ method ]\n\t **\n\t * Removes last element and returns it\n\t = (object) element\n\t \\*/setproto.pop=function(){this.length&&delete this[this.length--];return this.items.pop();};/*\\\n\t * Set.forEach\n\t [ method ]\n\t **\n\t * Executes given function for each element in the set\n\t *\n\t * If the function returns `false`, the loop stops running.\n\t **\n\t - callback (function) function to run\n\t - thisArg (object) context object for the callback\n\t = (object) Set object\n\t \\*/setproto.forEach=function(callback,thisArg){for(var i=0,ii=this.items.length;i<ii;i++){if(callback.call(thisArg,this.items[i],i)===false){return this;}}return this;};/*\\\n\t * Set.animate\n\t [ method ]\n\t **\n\t * Animates each element in set in sync.\n\t *\n\t **\n\t - attrs (object) key-value pairs of destination attributes\n\t - duration (number) duration of the animation in milliseconds\n\t - easing (function) #optional easing function from @mina or custom\n\t - callback (function) #optional callback function that executes when the animation ends\n\t * or\n\t - animation (array) array of animation parameter for each element in set in format `[attrs, duration, easing, callback]`\n\t > Usage\n\t | // animate all elements in set to radius 10\n\t | set.animate({r: 10}, 500, mina.easein);\n\t | // or\n\t | // animate first element to radius 10, but second to radius 20 and in different time\n\t | set.animate([{r: 10}, 500, mina.easein], [{r: 20}, 1500, mina.easein]);\n\t = (Element) the current element\n\t \\*/setproto.animate=function(attrs,ms,easing,callback){if(typeof easing==\"function\"&&!easing.length){callback=easing;easing=mina.linear;}if(attrs instanceof Snap._.Animation){callback=attrs.callback;easing=attrs.easing;ms=easing.dur;attrs=attrs.attr;}var args=arguments;if(Snap.is(attrs,\"array\")&&Snap.is(args[args.length-1],\"array\")){var each=true;}var begin,handler=function handler(){if(begin){this.b=begin;}else{begin=this.b;}},cb=0,set=this,callbacker=callback&&function(){if(++cb==set.length){callback.call(this);}};return this.forEach(function(el,i){eve.once(\"snap.animcreated.\"+el.id,handler);if(each){args[i]&&el.animate.apply(el,args[i]);}else{el.animate(attrs,ms,easing,callbacker);}});};setproto.remove=function(){while(this.length){this.pop().remove();}return this;};/*\\\n\t * Set.bind\n\t [ method ]\n\t **\n\t * Specifies how to handle a specific attribute when applied\n\t * to a set.\n\t *\n\t **\n\t - attr (string) attribute name\n\t - callback (function) function to run\n\t * or\n\t - attr (string) attribute name\n\t - element (Element) specific element in the set to apply the attribute to\n\t * or\n\t - attr (string) attribute name\n\t - element (Element) specific element in the set to apply the attribute to\n\t - eattr (string) attribute on the element to bind the attribute to\n\t = (object) Set object\n\t \\*/setproto.bind=function(attr,a,b){var data={};if(typeof a==\"function\"){this.bindings[attr]=a;}else{var aname=b||attr;this.bindings[attr]=function(v){data[aname]=v;a.attr(data);};}return this;};setproto.attr=function(value){var unbound={};for(var k in value){if(this.bindings[k]){this.bindings[k](value[k]);}else{unbound[k]=value[k];}}for(var i=0,ii=this.items.length;i<ii;i++){this.items[i].attr(unbound);}return this;};/*\\\n\t * Set.clear\n\t [ method ]\n\t **\n\t * Removes all elements from the set\n\t \\*/setproto.clear=function(){while(this.length){this.pop();}};/*\\\n\t * Set.splice\n\t [ method ]\n\t **\n\t * Removes range of elements from the set\n\t **\n\t - index (number) position of the deletion\n\t - count (number) number of element to remove\n\t - insertion… (object) #optional elements to insert\n\t = (object) set elements that were deleted\n\t \\*/setproto.splice=function(index,count,insertion){index=index<0?mmax(this.length+index,0):index;count=mmax(0,mmin(this.length-index,count));var tail=[],todel=[],args=[],i;for(i=2;i<arguments.length;i++){args.push(arguments[i]);}for(i=0;i<count;i++){todel.push(this[index+i]);}for(;i<this.length-index;i++){tail.push(this[index+i]);}var arglen=args.length;for(i=0;i<arglen+tail.length;i++){this.items[index+i]=this[index+i]=i<arglen?args[i]:tail[i-arglen];}i=this.items.length=this.length-=count-arglen;while(this[i]){delete this[i++];}return new Set(todel);};/*\\\n\t * Set.exclude\n\t [ method ]\n\t **\n\t * Removes given element from the set\n\t **\n\t - element (object) element to remove\n\t = (boolean) `true` if object was found and removed from the set\n\t \\*/setproto.exclude=function(el){for(var i=0,ii=this.length;i<ii;i++){if(this[i]==el){this.splice(i,1);return true;}}return false;};setproto.insertAfter=function(el){var i=this.items.length;while(i--){this.items[i].insertAfter(el);}return this;};setproto.getBBox=function(){var x=[],y=[],x2=[],y2=[];for(var i=this.items.length;i--;){if(!this.items[i].removed){var box=this.items[i].getBBox();x.push(box.x);y.push(box.y);x2.push(box.x+box.width);y2.push(box.y+box.height);}}x=mmin.apply(0,x);y=mmin.apply(0,y);x2=mmax.apply(0,x2);y2=mmax.apply(0,y2);return{x:x,y:y,x2:x2,y2:y2,width:x2-x,height:y2-y,cx:x+(x2-x)/2,cy:y+(y2-y)/2};};setproto.clone=function(s){s=new Set();for(var i=0,ii=this.items.length;i<ii;i++){s.push(this.items[i].clone());}return s;};setproto.toString=function(){return\"Snap‘s set\";};setproto.type=\"set\";// export\n\tSnap.Set=Set;Snap.set=function(){var set=new Set();if(arguments.length){set.push.apply(set,Array.prototype.slice.call(arguments,0));}return set;};});// Copyright (c) 2013 Adobe Systems Incorporated. All rights reserved.\n\t// \n\t// Licensed under the Apache License, Version 2.0 (the \"License\");\n\t// you may not use this file except in compliance with the License.\n\t// You may obtain a copy of the License at\n\t// \n\t// http://www.apache.org/licenses/LICENSE-2.0\n\t// \n\t// Unless required by applicable law or agreed to in writing, software\n\t// distributed under the License is distributed on an \"AS IS\" BASIS,\n\t// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\t// See the License for the specific language governing permissions and\n\t// limitations under the License.\n\tSnap.plugin(function(Snap,Element,Paper,glob){var names={},reUnit=/[a-z]+$/i,Str=String;names.stroke=names.fill=\"colour\";function getEmpty(item){var l=item[0];switch(l.toLowerCase()){case\"t\":return[l,0,0];case\"m\":return[l,1,0,0,1,0,0];case\"r\":if(item.length==4){return[l,0,item[2],item[3]];}else{return[l,0];}case\"s\":if(item.length==5){return[l,1,1,item[3],item[4]];}else if(item.length==3){return[l,1,1];}else{return[l,1];}}}function equaliseTransform(t1,t2,getBBox){t2=Str(t2).replace(/\\.{3}|\\u2026/g,t1);t1=Snap.parseTransformString(t1)||[];t2=Snap.parseTransformString(t2)||[];var maxlength=Math.max(t1.length,t2.length),from=[],to=[],i=0,j,jj,tt1,tt2;for(;i<maxlength;i++){tt1=t1[i]||getEmpty(t2[i]);tt2=t2[i]||getEmpty(tt1);if(tt1[0]!=tt2[0]||tt1[0].toLowerCase()==\"r\"&&(tt1[2]!=tt2[2]||tt1[3]!=tt2[3])||tt1[0].toLowerCase()==\"s\"&&(tt1[3]!=tt2[3]||tt1[4]!=tt2[4])){t1=Snap._.transform2matrix(t1,getBBox());t2=Snap._.transform2matrix(t2,getBBox());from=[[\"m\",t1.a,t1.b,t1.c,t1.d,t1.e,t1.f]];to=[[\"m\",t2.a,t2.b,t2.c,t2.d,t2.e,t2.f]];break;}from[i]=[];to[i]=[];for(j=0,jj=Math.max(tt1.length,tt2.length);j<jj;j++){j in tt1&&(from[i][j]=tt1[j]);j in tt2&&(to[i][j]=tt2[j]);}}return{from:path2array(from),to:path2array(to),f:getPath(from)};}function getNumber(val){return val;}function getUnit(unit){return function(val){return+val.toFixed(3)+unit;};}function getViewBox(val){return val.join(\" \");}function getColour(clr){return Snap.rgb(clr[0],clr[1],clr[2]);}function getPath(path){var k=0,i,ii,j,jj,out,a,b=[];for(i=0,ii=path.length;i<ii;i++){out=\"[\";a=['\"'+path[i][0]+'\"'];for(j=1,jj=path[i].length;j<jj;j++){a[j]=\"val[\"+k++ +\"]\";}out+=a+\"]\";b[i]=out;}return Function(\"val\",\"return Snap.path.toString.call([\"+b+\"])\");}function path2array(path){var out=[];for(var i=0,ii=path.length;i<ii;i++){for(var j=1,jj=path[i].length;j<jj;j++){out.push(path[i][j]);}}return out;}function isNumeric(obj){return isFinite(parseFloat(obj));}function arrayEqual(arr1,arr2){if(!Snap.is(arr1,\"array\")||!Snap.is(arr2,\"array\")){return false;}return arr1.toString()==arr2.toString();}Element.prototype.equal=function(name,b){return eve(\"snap.util.equal\",this,name,b).firstDefined();};eve.on(\"snap.util.equal\",function(name,b){var A,B,a=Str(this.attr(name)||\"\"),el=this;if(isNumeric(a)&&isNumeric(b)){return{from:parseFloat(a),to:parseFloat(b),f:getNumber};}if(names[name]==\"colour\"){A=Snap.color(a);B=Snap.color(b);return{from:[A.r,A.g,A.b,A.opacity],to:[B.r,B.g,B.b,B.opacity],f:getColour};}if(name==\"viewBox\"){A=this.attr(name).vb.split(\" \").map(Number);B=b.split(\" \").map(Number);return{from:A,to:B,f:getViewBox};}if(name==\"transform\"||name==\"gradientTransform\"||name==\"patternTransform\"){if(b instanceof Snap.Matrix){b=b.toTransformString();}if(!Snap._.rgTransform.test(b)){b=Snap._.svgTransform2string(b);}return equaliseTransform(a,b,function(){return el.getBBox(1);});}if(name==\"d\"||name==\"path\"){A=Snap.path.toCubic(a,b);return{from:path2array(A[0]),to:path2array(A[1]),f:getPath(A[0])};}if(name==\"points\"){A=Str(a).split(Snap._.separator);B=Str(b).split(Snap._.separator);return{from:A,to:B,f:function f(val){return val;}};}var aUnit=a.match(reUnit),bUnit=Str(b).match(reUnit);if(aUnit&&arrayEqual(aUnit,bUnit)){return{from:parseFloat(a),to:parseFloat(b),f:getUnit(aUnit)};}else{return{from:this.asPX(name),to:this.asPX(name,b),f:getNumber};}});});// Copyright (c) 2013 Adobe Systems Incorporated. All rights reserved.\n\t// \n\t// Licensed under the Apache License, Version 2.0 (the \"License\");\n\t// you may not use this file except in compliance with the License.\n\t// You may obtain a copy of the License at\n\t// \n\t// http://www.apache.org/licenses/LICENSE-2.0\n\t// \n\t// Unless required by applicable law or agreed to in writing, software\n\t// distributed under the License is distributed on an \"AS IS\" BASIS,\n\t// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\t// See the License for the specific language governing permissions and\n\t// limitations under the License.\n\tSnap.plugin(function(Snap,Element,Paper,glob){var elproto=Element.prototype,has=\"hasOwnProperty\",supportsTouch=\"createTouch\"in glob.doc,events=[\"click\",\"dblclick\",\"mousedown\",\"mousemove\",\"mouseout\",\"mouseover\",\"mouseup\",\"touchstart\",\"touchmove\",\"touchend\",\"touchcancel\"],touchMap={mousedown:\"touchstart\",mousemove:\"touchmove\",mouseup:\"touchend\"},getScroll=function getScroll(xy,el){var name=xy==\"y\"?\"scrollTop\":\"scrollLeft\",doc=el&&el.node?el.node.ownerDocument:glob.doc;return doc[name in doc.documentElement?\"documentElement\":\"body\"][name];},preventDefault=function preventDefault(){this.returnValue=false;},preventTouch=function preventTouch(){return this.originalEvent.preventDefault();},stopPropagation=function stopPropagation(){this.cancelBubble=true;},stopTouch=function stopTouch(){return this.originalEvent.stopPropagation();},addEvent=function addEvent(obj,type,fn,element){var realName=supportsTouch&&touchMap[type]?touchMap[type]:type,f=function f(e){var scrollY=getScroll(\"y\",element),scrollX=getScroll(\"x\",element);if(supportsTouch&&touchMap[has](type)){for(var i=0,ii=e.targetTouches&&e.targetTouches.length;i<ii;i++){if(e.targetTouches[i].target==obj||obj.contains(e.targetTouches[i].target)){var olde=e;e=e.targetTouches[i];e.originalEvent=olde;e.preventDefault=preventTouch;e.stopPropagation=stopTouch;break;}}}var x=e.clientX+scrollX,y=e.clientY+scrollY;return fn.call(element,e,x,y);};if(type!==realName){obj.addEventListener(type,f,false);}obj.addEventListener(realName,f,false);return function(){if(type!==realName){obj.removeEventListener(type,f,false);}obj.removeEventListener(realName,f,false);return true;};},drag=[],dragMove=function dragMove(e){var x=e.clientX,y=e.clientY,scrollY=getScroll(\"y\"),scrollX=getScroll(\"x\"),dragi,j=drag.length;while(j--){dragi=drag[j];if(supportsTouch){var i=e.touches&&e.touches.length,touch;while(i--){touch=e.touches[i];if(touch.identifier==dragi.el._drag.id||dragi.el.node.contains(touch.target)){x=touch.clientX;y=touch.clientY;(e.originalEvent?e.originalEvent:e).preventDefault();break;}}}else{e.preventDefault();}var node=dragi.el.node,o,next=node.nextSibling,parent=node.parentNode,display=node.style.display;// glob.win.opera && parent.removeChild(node);\n\t// node.style.display = \"none\";\n\t// o = dragi.el.paper.getElementByPoint(x, y);\n\t// node.style.display = display;\n\t// glob.win.opera && (next ? parent.insertBefore(node, next) : parent.appendChild(node));\n\t// o && eve(\"snap.drag.over.\" + dragi.el.id, dragi.el, o);\n\tx+=scrollX;y+=scrollY;eve(\"snap.drag.move.\"+dragi.el.id,dragi.move_scope||dragi.el,x-dragi.el._drag.x,y-dragi.el._drag.y,x,y,e);}},dragUp=function dragUp(e){Snap.unmousemove(dragMove).unmouseup(dragUp);var i=drag.length,dragi;while(i--){dragi=drag[i];dragi.el._drag={};eve(\"snap.drag.end.\"+dragi.el.id,dragi.end_scope||dragi.start_scope||dragi.move_scope||dragi.el,e);eve.off(\"snap.drag.*.\"+dragi.el.id);}drag=[];};/*\\\n\t * Element.click\n\t [ method ]\n\t **\n\t * Adds a click event handler to the element\n\t - handler (function) handler for the event\n\t = (object) @Element\n\t \\*//*\\\n\t * Element.unclick\n\t [ method ]\n\t **\n\t * Removes a click event handler from the element\n\t - handler (function) handler for the event\n\t = (object) @Element\n\t \\*//*\\\n\t * Element.dblclick\n\t [ method ]\n\t **\n\t * Adds a double click event handler to the element\n\t - handler (function) handler for the event\n\t = (object) @Element\n\t \\*//*\\\n\t * Element.undblclick\n\t [ method ]\n\t **\n\t * Removes a double click event handler from the element\n\t - handler (function) handler for the event\n\t = (object) @Element\n\t \\*//*\\\n\t * Element.mousedown\n\t [ method ]\n\t **\n\t * Adds a mousedown event handler to the element\n\t - handler (function) handler for the event\n\t = (object) @Element\n\t \\*//*\\\n\t * Element.unmousedown\n\t [ method ]\n\t **\n\t * Removes a mousedown event handler from the element\n\t - handler (function) handler for the event\n\t = (object) @Element\n\t \\*//*\\\n\t * Element.mousemove\n\t [ method ]\n\t **\n\t * Adds a mousemove event handler to the element\n\t - handler (function) handler for the event\n\t = (object) @Element\n\t \\*//*\\\n\t * Element.unmousemove\n\t [ method ]\n\t **\n\t * Removes a mousemove event handler from the element\n\t - handler (function) handler for the event\n\t = (object) @Element\n\t \\*//*\\\n\t * Element.mouseout\n\t [ method ]\n\t **\n\t * Adds a mouseout event handler to the element\n\t - handler (function) handler for the event\n\t = (object) @Element\n\t \\*//*\\\n\t * Element.unmouseout\n\t [ method ]\n\t **\n\t * Removes a mouseout event handler from the element\n\t - handler (function) handler for the event\n\t = (object) @Element\n\t \\*//*\\\n\t * Element.mouseover\n\t [ method ]\n\t **\n\t * Adds a mouseover event handler to the element\n\t - handler (function) handler for the event\n\t = (object) @Element\n\t \\*//*\\\n\t * Element.unmouseover\n\t [ method ]\n\t **\n\t * Removes a mouseover event handler from the element\n\t - handler (function) handler for the event\n\t = (object) @Element\n\t \\*//*\\\n\t * Element.mouseup\n\t [ method ]\n\t **\n\t * Adds a mouseup event handler to the element\n\t - handler (function) handler for the event\n\t = (object) @Element\n\t \\*//*\\\n\t * Element.unmouseup\n\t [ method ]\n\t **\n\t * Removes a mouseup event handler from the element\n\t - handler (function) handler for the event\n\t = (object) @Element\n\t \\*//*\\\n\t * Element.touchstart\n\t [ method ]\n\t **\n\t * Adds a touchstart event handler to the element\n\t - handler (function) handler for the event\n\t = (object) @Element\n\t \\*//*\\\n\t * Element.untouchstart\n\t [ method ]\n\t **\n\t * Removes a touchstart event handler from the element\n\t - handler (function) handler for the event\n\t = (object) @Element\n\t \\*//*\\\n\t * Element.touchmove\n\t [ method ]\n\t **\n\t * Adds a touchmove event handler to the element\n\t - handler (function) handler for the event\n\t = (object) @Element\n\t \\*//*\\\n\t * Element.untouchmove\n\t [ method ]\n\t **\n\t * Removes a touchmove event handler from the element\n\t - handler (function) handler for the event\n\t = (object) @Element\n\t \\*//*\\\n\t * Element.touchend\n\t [ method ]\n\t **\n\t * Adds a touchend event handler to the element\n\t - handler (function) handler for the event\n\t = (object) @Element\n\t \\*//*\\\n\t * Element.untouchend\n\t [ method ]\n\t **\n\t * Removes a touchend event handler from the element\n\t - handler (function) handler for the event\n\t = (object) @Element\n\t \\*//*\\\n\t * Element.touchcancel\n\t [ method ]\n\t **\n\t * Adds a touchcancel event handler to the element\n\t - handler (function) handler for the event\n\t = (object) @Element\n\t \\*//*\\\n\t * Element.untouchcancel\n\t [ method ]\n\t **\n\t * Removes a touchcancel event handler from the element\n\t - handler (function) handler for the event\n\t = (object) @Element\n\t \\*/for(var i=events.length;i--;){(function(eventName){Snap[eventName]=elproto[eventName]=function(fn,scope){if(Snap.is(fn,\"function\")){this.events=this.events||[];this.events.push({name:eventName,f:fn,unbind:addEvent(this.node||document,eventName,fn,scope||this)});}else{for(var i=0,ii=this.events.length;i<ii;i++){if(this.events[i].name==eventName){try{this.events[i].f.call(this);}catch(e){}}}}return this;};Snap[\"un\"+eventName]=elproto[\"un\"+eventName]=function(fn){var events=this.events||[],l=events.length;while(l--){if(events[l].name==eventName&&(events[l].f==fn||!fn)){events[l].unbind();events.splice(l,1);!events.length&&delete this.events;return this;}}return this;};})(events[i]);}/*\\\n\t * Element.hover\n\t [ method ]\n\t **\n\t * Adds hover event handlers to the element\n\t - f_in (function) handler for hover in\n\t - f_out (function) handler for hover out\n\t - icontext (object) #optional context for hover in handler\n\t - ocontext (object) #optional context for hover out handler\n\t = (object) @Element\n\t \\*/elproto.hover=function(f_in,f_out,scope_in,scope_out){return this.mouseover(f_in,scope_in).mouseout(f_out,scope_out||scope_in);};/*\\\n\t * Element.unhover\n\t [ method ]\n\t **\n\t * Removes hover event handlers from the element\n\t - f_in (function) handler for hover in\n\t - f_out (function) handler for hover out\n\t = (object) @Element\n\t \\*/elproto.unhover=function(f_in,f_out){return this.unmouseover(f_in).unmouseout(f_out);};var draggable=[];// SIERRA unclear what _context_ refers to for starting, ending, moving the drag gesture.\n\t// SIERRA Element.drag(): _x position of the mouse_: Where are the x/y values offset from?\n\t// SIERRA Element.drag(): much of this member's doc appears to be duplicated for some reason.\n\t// SIERRA Unclear about this sentence: _Additionally following drag events will be triggered: drag.start.<id> on start, drag.end.<id> on end and drag.move.<id> on every move._ Is there a global _drag_ object to which you can assign handlers keyed by an element's ID?\n\t/*\\\n\t * Element.drag\n\t [ method ]\n\t **\n\t * Adds event handlers for an element's drag gesture\n\t **\n\t - onmove (function) handler for moving\n\t - onstart (function) handler for drag start\n\t - onend (function) handler for drag end\n\t - mcontext (object) #optional context for moving handler\n\t - scontext (object) #optional context for drag start handler\n\t - econtext (object) #optional context for drag end handler\n\t * Additionaly following `drag` events are triggered: `drag.start.<id>` on start, \n\t * `drag.end.<id>` on end and `drag.move.<id>` on every move. When element is dragged over another element \n\t * `drag.over.<id>` fires as well.\n\t *\n\t * Start event and start handler are called in specified context or in context of the element with following parameters:\n\t o x (number) x position of the mouse\n\t o y (number) y position of the mouse\n\t o event (object) DOM event object\n\t * Move event and move handler are called in specified context or in context of the element with following parameters:\n\t o dx (number) shift by x from the start point\n\t o dy (number) shift by y from the start point\n\t o x (number) x position of the mouse\n\t o y (number) y position of the mouse\n\t o event (object) DOM event object\n\t * End event and end handler are called in specified context or in context of the element with following parameters:\n\t o event (object) DOM event object\n\t = (object) @Element\n\t \\*/elproto.drag=function(onmove,onstart,onend,move_scope,start_scope,end_scope){var el=this;if(!arguments.length){var origTransform;return el.drag(function(dx,dy){this.attr({transform:origTransform+(origTransform?\"T\":\"t\")+[dx,dy]});},function(){origTransform=this.transform().local;});}function start(e,x,y){(e.originalEvent||e).preventDefault();el._drag.x=x;el._drag.y=y;el._drag.id=e.identifier;!drag.length&&Snap.mousemove(dragMove).mouseup(dragUp);drag.push({el:el,move_scope:move_scope,start_scope:start_scope,end_scope:end_scope});onstart&&eve.on(\"snap.drag.start.\"+el.id,onstart);onmove&&eve.on(\"snap.drag.move.\"+el.id,onmove);onend&&eve.on(\"snap.drag.end.\"+el.id,onend);eve(\"snap.drag.start.\"+el.id,start_scope||move_scope||el,x,y,e);}function init(e,x,y){eve(\"snap.draginit.\"+el.id,el,e,x,y);}eve.on(\"snap.draginit.\"+el.id,start);el._drag={};draggable.push({el:el,start:start,init:init});el.mousedown(init);return el;};/*\n\t * Element.onDragOver\n\t [ method ]\n\t **\n\t * Shortcut to assign event handler for `drag.over.<id>` event, where `id` is the element's `id` (see @Element.id)\n\t - f (function) handler for event, first argument would be the element you are dragging over\n\t \\*/// elproto.onDragOver = function (f) {\n\t// f ? eve.on(\"snap.drag.over.\" + this.id, f) : eve.unbind(\"snap.drag.over.\" + this.id);\n\t// };\n\t/*\\\n\t * Element.undrag\n\t [ method ]\n\t **\n\t * Removes all drag event handlers from the given element\n\t \\*/elproto.undrag=function(){var i=draggable.length;while(i--){if(draggable[i].el==this){this.unmousedown(draggable[i].init);draggable.splice(i,1);eve.unbind(\"snap.drag.*.\"+this.id);eve.unbind(\"snap.draginit.\"+this.id);}}!draggable.length&&Snap.unmousemove(dragMove).unmouseup(dragUp);return this;};});// Copyright (c) 2013 Adobe Systems Incorporated. All rights reserved.\n\t// \n\t// Licensed under the Apache License, Version 2.0 (the \"License\");\n\t// you may not use this file except in compliance with the License.\n\t// You may obtain a copy of the License at\n\t// \n\t// http://www.apache.org/licenses/LICENSE-2.0\n\t// \n\t// Unless required by applicable law or agreed to in writing, software\n\t// distributed under the License is distributed on an \"AS IS\" BASIS,\n\t// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\t// See the License for the specific language governing permissions and\n\t// limitations under the License.\n\tSnap.plugin(function(Snap,Element,Paper,glob){var elproto=Element.prototype,pproto=Paper.prototype,rgurl=/^\\s*url\\((.+)\\)/,Str=String,$=Snap._.$;Snap.filter={};/*\\\n\t * Paper.filter\n\t [ method ]\n\t **\n\t * Creates a `<filter>` element\n\t **\n\t - filstr (string) SVG fragment of filter provided as a string\n\t = (object) @Element\n\t * Note: It is recommended to use filters embedded into the page inside an empty SVG element.\n\t > Usage\n\t | var f = paper.filter('<feGaussianBlur stdDeviation=\"2\"/>'),\n\t | c = paper.circle(10, 10, 10).attr({\n\t | filter: f\n\t | });\n\t \\*/pproto.filter=function(filstr){var paper=this;if(paper.type!=\"svg\"){paper=paper.paper;}var f=Snap.parse(Str(filstr)),id=Snap._.id(),width=paper.node.offsetWidth,height=paper.node.offsetHeight,filter=$(\"filter\");$(filter,{id:id,filterUnits:\"userSpaceOnUse\"});filter.appendChild(f.node);paper.defs.appendChild(filter);return new Element(filter);};eve.on(\"snap.util.getattr.filter\",function(){eve.stop();var p=$(this.node,\"filter\");if(p){var match=Str(p).match(rgurl);return match&&Snap.select(match[1]);}});eve.on(\"snap.util.attr.filter\",function(value){if(value instanceof Element&&value.type==\"filter\"){eve.stop();var id=value.node.id;if(!id){$(value.node,{id:value.id});id=value.id;}$(this.node,{filter:Snap.url(id)});}if(!value||value==\"none\"){eve.stop();this.node.removeAttribute(\"filter\");}});/*\\\n\t * Snap.filter.blur\n\t [ method ]\n\t **\n\t * Returns an SVG markup string for the blur filter\n\t **\n\t - x (number) amount of horizontal blur, in pixels\n\t - y (number) #optional amount of vertical blur, in pixels\n\t = (string) filter representation\n\t > Usage\n\t | var f = paper.filter(Snap.filter.blur(5, 10)),\n\t | c = paper.circle(10, 10, 10).attr({\n\t | filter: f\n\t | });\n\t \\*/Snap.filter.blur=function(x,y){if(x==null){x=2;}var def=y==null?x:[x,y];return Snap.format('\\<feGaussianBlur stdDeviation=\"{def}\"/>',{def:def});};Snap.filter.blur.toString=function(){return this();};/*\\\n\t * Snap.filter.shadow\n\t [ method ]\n\t **\n\t * Returns an SVG markup string for the shadow filter\n\t **\n\t - dx (number) #optional horizontal shift of the shadow, in pixels\n\t - dy (number) #optional vertical shift of the shadow, in pixels\n\t - blur (number) #optional amount of blur\n\t - color (string) #optional color of the shadow\n\t - opacity (number) #optional `0..1` opacity of the shadow\n\t * or\n\t - dx (number) #optional horizontal shift of the shadow, in pixels\n\t - dy (number) #optional vertical shift of the shadow, in pixels\n\t - color (string) #optional color of the shadow\n\t - opacity (number) #optional `0..1` opacity of the shadow\n\t * which makes blur default to `4`. Or\n\t - dx (number) #optional horizontal shift of the shadow, in pixels\n\t - dy (number) #optional vertical shift of the shadow, in pixels\n\t - opacity (number) #optional `0..1` opacity of the shadow\n\t = (string) filter representation\n\t > Usage\n\t | var f = paper.filter(Snap.filter.shadow(0, 2, 3)),\n\t | c = paper.circle(10, 10, 10).attr({\n\t | filter: f\n\t | });\n\t \\*/Snap.filter.shadow=function(dx,dy,blur,color,opacity){if(typeof blur==\"string\"){color=blur;opacity=color;blur=4;}if(typeof color!=\"string\"){opacity=color;color=\"#000\";}color=color||\"#000\";if(blur==null){blur=4;}if(opacity==null){opacity=1;}if(dx==null){dx=0;dy=2;}if(dy==null){dy=dx;}color=Snap.color(color);return Snap.format('<feGaussianBlur in=\"SourceAlpha\" stdDeviation=\"{blur}\"/><feOffset dx=\"{dx}\" dy=\"{dy}\" result=\"offsetblur\"/><feFlood flood-color=\"{color}\"/><feComposite in2=\"offsetblur\" operator=\"in\"/><feComponentTransfer><feFuncA type=\"linear\" slope=\"{opacity}\"/></feComponentTransfer><feMerge><feMergeNode/><feMergeNode in=\"SourceGraphic\"/></feMerge>',{color:color,dx:dx,dy:dy,blur:blur,opacity:opacity});};Snap.filter.shadow.toString=function(){return this();};/*\\\n\t * Snap.filter.grayscale\n\t [ method ]\n\t **\n\t * Returns an SVG markup string for the grayscale filter\n\t **\n\t - amount (number) amount of filter (`0..1`)\n\t = (string) filter representation\n\t \\*/Snap.filter.grayscale=function(amount){if(amount==null){amount=1;}return Snap.format('<feColorMatrix type=\"matrix\" values=\"{a} {b} {c} 0 0 {d} {e} {f} 0 0 {g} {b} {h} 0 0 0 0 0 1 0\"/>',{a:0.2126+0.7874*(1-amount),b:0.7152-0.7152*(1-amount),c:0.0722-0.0722*(1-amount),d:0.2126-0.2126*(1-amount),e:0.7152+0.2848*(1-amount),f:0.0722-0.0722*(1-amount),g:0.2126-0.2126*(1-amount),h:0.0722+0.9278*(1-amount)});};Snap.filter.grayscale.toString=function(){return this();};/*\\\n\t * Snap.filter.sepia\n\t [ method ]\n\t **\n\t * Returns an SVG markup string for the sepia filter\n\t **\n\t - amount (number) amount of filter (`0..1`)\n\t = (string) filter representation\n\t \\*/Snap.filter.sepia=function(amount){if(amount==null){amount=1;}return Snap.format('<feColorMatrix type=\"matrix\" values=\"{a} {b} {c} 0 0 {d} {e} {f} 0 0 {g} {h} {i} 0 0 0 0 0 1 0\"/>',{a:0.393+0.607*(1-amount),b:0.769-0.769*(1-amount),c:0.189-0.189*(1-amount),d:0.349-0.349*(1-amount),e:0.686+0.314*(1-amount),f:0.168-0.168*(1-amount),g:0.272-0.272*(1-amount),h:0.534-0.534*(1-amount),i:0.131+0.869*(1-amount)});};Snap.filter.sepia.toString=function(){return this();};/*\\\n\t * Snap.filter.saturate\n\t [ method ]\n\t **\n\t * Returns an SVG markup string for the saturate filter\n\t **\n\t - amount (number) amount of filter (`0..1`)\n\t = (string) filter representation\n\t \\*/Snap.filter.saturate=function(amount){if(amount==null){amount=1;}return Snap.format('<feColorMatrix type=\"saturate\" values=\"{amount}\"/>',{amount:1-amount});};Snap.filter.saturate.toString=function(){return this();};/*\\\n\t * Snap.filter.hueRotate\n\t [ method ]\n\t **\n\t * Returns an SVG markup string for the hue-rotate filter\n\t **\n\t - angle (number) angle of rotation\n\t = (string) filter representation\n\t \\*/Snap.filter.hueRotate=function(angle){angle=angle||0;return Snap.format('<feColorMatrix type=\"hueRotate\" values=\"{angle}\"/>',{angle:angle});};Snap.filter.hueRotate.toString=function(){return this();};/*\\\n\t * Snap.filter.invert\n\t [ method ]\n\t **\n\t * Returns an SVG markup string for the invert filter\n\t **\n\t - amount (number) amount of filter (`0..1`)\n\t = (string) filter representation\n\t \\*/Snap.filter.invert=function(amount){if(amount==null){amount=1;}// <feColorMatrix type=\"matrix\" values=\"-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0\" color-interpolation-filters=\"sRGB\"/>\n\treturn Snap.format('<feComponentTransfer><feFuncR type=\"table\" tableValues=\"{amount} {amount2}\"/><feFuncG type=\"table\" tableValues=\"{amount} {amount2}\"/><feFuncB type=\"table\" tableValues=\"{amount} {amount2}\"/></feComponentTransfer>',{amount:amount,amount2:1-amount});};Snap.filter.invert.toString=function(){return this();};/*\\\n\t * Snap.filter.brightness\n\t [ method ]\n\t **\n\t * Returns an SVG markup string for the brightness filter\n\t **\n\t - amount (number) amount of filter (`0..1`)\n\t = (string) filter representation\n\t \\*/Snap.filter.brightness=function(amount){if(amount==null){amount=1;}return Snap.format('<feComponentTransfer><feFuncR type=\"linear\" slope=\"{amount}\"/><feFuncG type=\"linear\" slope=\"{amount}\"/><feFuncB type=\"linear\" slope=\"{amount}\"/></feComponentTransfer>',{amount:amount});};Snap.filter.brightness.toString=function(){return this();};/*\\\n\t * Snap.filter.contrast\n\t [ method ]\n\t **\n\t * Returns an SVG markup string for the contrast filter\n\t **\n\t - amount (number) amount of filter (`0..1`)\n\t = (string) filter representation\n\t \\*/Snap.filter.contrast=function(amount){if(amount==null){amount=1;}return Snap.format('<feComponentTransfer><feFuncR type=\"linear\" slope=\"{amount}\" intercept=\"{amount2}\"/><feFuncG type=\"linear\" slope=\"{amount}\" intercept=\"{amount2}\"/><feFuncB type=\"linear\" slope=\"{amount}\" intercept=\"{amount2}\"/></feComponentTransfer>',{amount:amount,amount2:.5-amount/2});};Snap.filter.contrast.toString=function(){return this();};});// Copyright (c) 2014 Adobe Systems Incorporated. All rights reserved.\n\t//\n\t// Licensed under the Apache License, Version 2.0 (the \"License\");\n\t// you may not use this file except in compliance with the License.\n\t// You may obtain a copy of the License at\n\t//\n\t// http://www.apache.org/licenses/LICENSE-2.0\n\t//\n\t// Unless required by applicable law or agreed to in writing, software\n\t// distributed under the License is distributed on an \"AS IS\" BASIS,\n\t// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\t// See the License for the specific language governing permissions and\n\t// limitations under the License.\n\tSnap.plugin(function(Snap,Element,Paper,glob,Fragment){var box=Snap._.box,is=Snap.is,firstLetter=/^[^a-z]*([tbmlrc])/i,toString=function toString(){return\"T\"+this.dx+\",\"+this.dy;};/*\\\n\t * Element.getAlign\n\t [ method ]\n\t **\n\t * Returns shift needed to align the element relatively to given element.\n\t * If no elements specified, parent `<svg>` container will be used.\n\t - el (object) @optional alignment element\n\t - way (string) one of six values: `\"top\"`, `\"middle\"`, `\"bottom\"`, `\"left\"`, `\"center\"`, `\"right\"`\n\t = (object|string) Object in format `{dx: , dy: }` also has a string representation as a transformation string\n\t > Usage\n\t | el.transform(el.getAlign(el2, \"top\"));\n\t * or\n\t | var dy = el.getAlign(el2, \"top\").dy;\n\t \\*/Element.prototype.getAlign=function(el,way){if(way==null&&is(el,\"string\")){way=el;el=null;}el=el||this.paper;var bx=el.getBBox?el.getBBox():box(el),bb=this.getBBox(),out={};way=way&&way.match(firstLetter);way=way?way[1].toLowerCase():\"c\";switch(way){case\"t\":out.dx=0;out.dy=bx.y-bb.y;break;case\"b\":out.dx=0;out.dy=bx.y2-bb.y2;break;case\"m\":out.dx=0;out.dy=bx.cy-bb.cy;break;case\"l\":out.dx=bx.x-bb.x;out.dy=0;break;case\"r\":out.dx=bx.x2-bb.x2;out.dy=0;break;default:out.dx=bx.cx-bb.cx;out.dy=0;break;}out.toString=toString;return out;};/*\\\n\t * Element.align\n\t [ method ]\n\t **\n\t * Aligns the element relatively to given one via transformation.\n\t * If no elements specified, parent `<svg>` container will be used.\n\t - el (object) @optional alignment element\n\t - way (string) one of six values: `\"top\"`, `\"middle\"`, `\"bottom\"`, `\"left\"`, `\"center\"`, `\"right\"`\n\t = (object) this element\n\t > Usage\n\t | el.align(el2, \"top\");\n\t * or\n\t | el.align(\"middle\");\n\t \\*/Element.prototype.align=function(el,way){return this.transform(\"...\"+this.getAlign(el,way));};});return Snap;});}).call(window);\n\n/***/ },\n/* 4 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/* WEBPACK VAR INJECTION */(function(module) {\"use strict\";var _typeof=typeof Symbol===\"function\"&&typeof Symbol.iterator===\"symbol\"?function(obj){return typeof obj;}:function(obj){return obj&&typeof Symbol===\"function\"&&obj.constructor===Symbol?\"symbol\":typeof obj;};/*!\n\t * jQuery JavaScript Library v3.0.0\n\t * https://jquery.com/\n\t *\n\t * Includes Sizzle.js\n\t * https://sizzlejs.com/\n\t *\n\t * Copyright jQuery Foundation and other contributors\n\t * Released under the MIT license\n\t * https://jquery.org/license\n\t *\n\t * Date: 2016-06-09T18:02Z\n\t */(function(global,factory){\"use strict\";if(( false?\"undefined\":_typeof(module))===\"object\"&&_typeof(module.exports)===\"object\"){// For CommonJS and CommonJS-like environments where a proper `window`\n\t// is present, execute the factory and get jQuery.\n\t// For environments that do not have a `window` with a `document`\n\t// (such as Node.js), expose a factory as module.exports.\n\t// This accentuates the need for the creation of a real `window`.\n\t// e.g. var jQuery = require(\"jquery\")(window);\n\t// See ticket #14549 for more info.\n\tmodule.exports=global.document?factory(global,true):function(w){if(!w.document){throw new Error(\"jQuery requires a window with a document\");}return factory(w);};}else{factory(global);}// Pass this if window is not defined yet\n\t})(typeof window!==\"undefined\"?window:undefined,function(window,noGlobal){// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n\t// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n\t// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n\t// enough that all such attempts are guarded in a try block.\n\t\"use strict\";var arr=[];var document=window.document;var getProto=Object.getPrototypeOf;var _slice=arr.slice;var concat=arr.concat;var push=arr.push;var indexOf=arr.indexOf;var class2type={};var toString=class2type.toString;var hasOwn=class2type.hasOwnProperty;var fnToString=hasOwn.toString;var ObjectFunctionString=fnToString.call(Object);var support={};function DOMEval(code,doc){doc=doc||document;var script=doc.createElement(\"script\");script.text=code;doc.head.appendChild(script).parentNode.removeChild(script);}var version=\"3.0.0\",// Define a local copy of jQuery\n\tjQuery=function jQuery(selector,context){// The jQuery object is actually just the init constructor 'enhanced'\n\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\treturn new jQuery.fn.init(selector,context);},// Support: Android <=4.0 only\n\t// Make sure we trim BOM and NBSP\n\trtrim=/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g,// Matches dashed string for camelizing\n\trmsPrefix=/^-ms-/,rdashAlpha=/-([a-z])/g,// Used by jQuery.camelCase as callback to replace()\n\tfcamelCase=function fcamelCase(all,letter){return letter.toUpperCase();};jQuery.fn=jQuery.prototype={// The current version of jQuery being used\n\tjquery:version,constructor:jQuery,// The default length of a jQuery object is 0\n\tlength:0,toArray:function toArray(){return _slice.call(this);},// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget:function get(num){return num!=null?// Return just the one element from the set\n\tnum<0?this[num+this.length]:this[num]:// Return all the elements in a clean array\n\t_slice.call(this);},// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack:function pushStack(elems){// Build a new jQuery matched element set\n\tvar ret=jQuery.merge(this.constructor(),elems);// Add the old object onto the stack (as a reference)\n\tret.prevObject=this;// Return the newly-formed element set\n\treturn ret;},// Execute a callback for every element in the matched set.\n\teach:function each(callback){return jQuery.each(this,callback);},map:function map(callback){return this.pushStack(jQuery.map(this,function(elem,i){return callback.call(elem,i,elem);}));},slice:function slice(){return this.pushStack(_slice.apply(this,arguments));},first:function first(){return this.eq(0);},last:function last(){return this.eq(-1);},eq:function eq(i){var len=this.length,j=+i+(i<0?len:0);return this.pushStack(j>=0&&j<len?[this[j]]:[]);},end:function end(){return this.prevObject||this.constructor();},// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush:push,sort:arr.sort,splice:arr.splice};jQuery.extend=jQuery.fn.extend=function(){var options,name,src,copy,copyIsArray,clone,target=arguments[0]||{},i=1,length=arguments.length,deep=false;// Handle a deep copy situation\n\tif(typeof target===\"boolean\"){deep=target;// Skip the boolean and the target\n\ttarget=arguments[i]||{};i++;}// Handle case when target is a string or something (possible in deep copy)\n\tif((typeof target===\"undefined\"?\"undefined\":_typeof(target))!==\"object\"&&!jQuery.isFunction(target)){target={};}// Extend jQuery itself if only one argument is passed\n\tif(i===length){target=this;i--;}for(;i<length;i++){// Only deal with non-null/undefined values\n\tif((options=arguments[i])!=null){// Extend the base object\n\tfor(name in options){src=target[name];copy=options[name];// Prevent never-ending loop\n\tif(target===copy){continue;}// Recurse if we're merging plain objects or arrays\n\tif(deep&©&&(jQuery.isPlainObject(copy)||(copyIsArray=jQuery.isArray(copy)))){if(copyIsArray){copyIsArray=false;clone=src&&jQuery.isArray(src)?src:[];}else{clone=src&&jQuery.isPlainObject(src)?src:{};}// Never move original objects, clone them\n\ttarget[name]=jQuery.extend(deep,clone,copy);// Don't bring in undefined values\n\t}else if(copy!==undefined){target[name]=copy;}}}}// Return the modified object\n\treturn target;};jQuery.extend({// Unique for each copy of jQuery on the page\n\texpando:\"jQuery\"+(version+Math.random()).replace(/\\D/g,\"\"),// Assume jQuery is ready without the ready module\n\tisReady:true,error:function error(msg){throw new Error(msg);},noop:function noop(){},isFunction:function isFunction(obj){return jQuery.type(obj)===\"function\";},isArray:Array.isArray,isWindow:function isWindow(obj){return obj!=null&&obj===obj.window;},isNumeric:function isNumeric(obj){// As of jQuery 3.0, isNumeric is limited to\n\t// strings and numbers (primitives or objects)\n\t// that can be coerced to finite numbers (gh-2662)\n\tvar type=jQuery.type(obj);return(type===\"number\"||type===\"string\")&&// parseFloat NaNs numeric-cast false positives (\"\")\n\t// ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n\t// subtraction forces infinities to NaN\n\t!isNaN(obj-parseFloat(obj));},isPlainObject:function isPlainObject(obj){var proto,Ctor;// Detect obvious negatives\n\t// Use toString instead of jQuery.type to catch host objects\n\tif(!obj||toString.call(obj)!==\"[object Object]\"){return false;}proto=getProto(obj);// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\tif(!proto){return true;}// Objects with prototype are plain iff they were constructed by a global Object function\n\tCtor=hasOwn.call(proto,\"constructor\")&&proto.constructor;return typeof Ctor===\"function\"&&fnToString.call(Ctor)===ObjectFunctionString;},isEmptyObject:function isEmptyObject(obj){var name;for(name in obj){return false;}return true;},type:function type(obj){if(obj==null){return obj+\"\";}// Support: Android <=2.3 only (functionish RegExp)\n\treturn(typeof obj===\"undefined\"?\"undefined\":_typeof(obj))===\"object\"||typeof obj===\"function\"?class2type[toString.call(obj)]||\"object\":typeof obj===\"undefined\"?\"undefined\":_typeof(obj);},// Evaluates a script in a global context\n\tglobalEval:function globalEval(code){DOMEval(code);},// Convert dashed to camelCase; used by the css and data modules\n\t// Support: IE <=9 - 11, Edge 12 - 13\n\t// Microsoft forgot to hump their vendor prefix (#9572)\n\tcamelCase:function camelCase(string){return string.replace(rmsPrefix,\"ms-\").replace(rdashAlpha,fcamelCase);},nodeName:function nodeName(elem,name){return elem.nodeName&&elem.nodeName.toLowerCase()===name.toLowerCase();},each:function each(obj,callback){var length,i=0;if(isArrayLike(obj)){length=obj.length;for(;i<length;i++){if(callback.call(obj[i],i,obj[i])===false){break;}}}else{for(i in obj){if(callback.call(obj[i],i,obj[i])===false){break;}}}return obj;},// Support: Android <=4.0 only\n\ttrim:function trim(text){return text==null?\"\":(text+\"\").replace(rtrim,\"\");},// results is for internal usage only\n\tmakeArray:function makeArray(arr,results){var ret=results||[];if(arr!=null){if(isArrayLike(Object(arr))){jQuery.merge(ret,typeof arr===\"string\"?[arr]:arr);}else{push.call(ret,arr);}}return ret;},inArray:function inArray(elem,arr,i){return arr==null?-1:indexOf.call(arr,elem,i);},// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tmerge:function merge(first,second){var len=+second.length,j=0,i=first.length;for(;j<len;j++){first[i++]=second[j];}first.length=i;return first;},grep:function grep(elems,callback,invert){var callbackInverse,matches=[],i=0,length=elems.length,callbackExpect=!invert;// Go through the array, only saving the items\n\t// that pass the validator function\n\tfor(;i<length;i++){callbackInverse=!callback(elems[i],i);if(callbackInverse!==callbackExpect){matches.push(elems[i]);}}return matches;},// arg is for internal usage only\n\tmap:function map(elems,callback,arg){var length,value,i=0,ret=[];// Go through the array, translating each of the items to their new values\n\tif(isArrayLike(elems)){length=elems.length;for(;i<length;i++){value=callback(elems[i],i,arg);if(value!=null){ret.push(value);}}// Go through every key on the object,\n\t}else{for(i in elems){value=callback(elems[i],i,arg);if(value!=null){ret.push(value);}}}// Flatten any nested arrays\n\treturn concat.apply([],ret);},// A global GUID counter for objects\n\tguid:1,// Bind a function to a context, optionally partially applying any\n\t// arguments.\n\tproxy:function proxy(fn,context){var tmp,args,proxy;if(typeof context===\"string\"){tmp=fn[context];context=fn;fn=tmp;}// Quick check to determine if target is callable, in the spec\n\t// this throws a TypeError, but we will just return undefined.\n\tif(!jQuery.isFunction(fn)){return undefined;}// Simulated bind\n\targs=_slice.call(arguments,2);proxy=function proxy(){return fn.apply(context||this,args.concat(_slice.call(arguments)));};// Set the guid of unique handler to the same of original handler, so it can be removed\n\tproxy.guid=fn.guid=fn.guid||jQuery.guid++;return proxy;},now:Date.now,// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport:support});// JSHint would error on this code due to the Symbol not being defined in ES5.\n\t// Defining this global in .jshintrc would create a danger of using the global\n\t// unguarded in another place, it seems safer to just disable JSHint for these\n\t// three lines.\n\t/* jshint ignore: start */if(typeof Symbol===\"function\"){jQuery.fn[Symbol.iterator]=arr[Symbol.iterator];}/* jshint ignore: end */// Populate the class2type map\n\tjQuery.each(\"Boolean Number String Function Array Date RegExp Object Error Symbol\".split(\" \"),function(i,name){class2type[\"[object \"+name+\"]\"]=name.toLowerCase();});function isArrayLike(obj){// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length=!!obj&&\"length\"in obj&&obj.length,type=jQuery.type(obj);if(type===\"function\"||jQuery.isWindow(obj)){return false;}return type===\"array\"||length===0||typeof length===\"number\"&&length>0&&length-1 in obj;}var Sizzle=/*!\n\t * Sizzle CSS Selector Engine v2.3.0\n\t * https://sizzlejs.com/\n\t *\n\t * Copyright jQuery Foundation and other contributors\n\t * Released under the MIT license\n\t * http://jquery.org/license\n\t *\n\t * Date: 2016-01-04\n\t */function(window){var i,support,Expr,getText,isXML,tokenize,compile,select,outermostContext,sortInput,hasDuplicate,// Local document vars\n\tsetDocument,document,docElem,documentIsHTML,rbuggyQSA,rbuggyMatches,matches,contains,// Instance-specific data\n\texpando=\"sizzle\"+1*new Date(),preferredDoc=window.document,dirruns=0,done=0,classCache=createCache(),tokenCache=createCache(),compilerCache=createCache(),sortOrder=function sortOrder(a,b){if(a===b){hasDuplicate=true;}return 0;},// Instance methods\n\thasOwn={}.hasOwnProperty,arr=[],pop=arr.pop,push_native=arr.push,push=arr.push,slice=arr.slice,// Use a stripped-down indexOf as it's faster than native\n\t// https://jsperf.com/thor-indexof-vs-for/5\n\tindexOf=function indexOf(list,elem){var i=0,len=list.length;for(;i<len;i++){if(list[i]===elem){return i;}}return-1;},booleans=\"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\",// Regular expressions\n\t// http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace=\"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",// http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier\n\tidentifier=\"(?:\\\\\\\\.|[\\\\w-]|[^\\0-\\\\xa0])+\",// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes=\"\\\\[\"+whitespace+\"*(\"+identifier+\")(?:\"+whitespace+// Operator (capture 2)\n\t\"*([*^$|!~]?=)\"+whitespace+// \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\n\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\"+identifier+\"))|)\"+whitespace+\"*\\\\]\",pseudos=\":(\"+identifier+\")(?:\\\\((\"+// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\"+// 2. simple (capture 6)\n\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\"+attributes+\")*)|\"+// 3. anything else (capture 2)\n\t\".*\"+\")\\\\)|)\",// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace=new RegExp(whitespace+\"+\",\"g\"),rtrim=new RegExp(\"^\"+whitespace+\"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\"+whitespace+\"+$\",\"g\"),rcomma=new RegExp(\"^\"+whitespace+\"*,\"+whitespace+\"*\"),rcombinators=new RegExp(\"^\"+whitespace+\"*([>+~]|\"+whitespace+\")\"+whitespace+\"*\"),rattributeQuotes=new RegExp(\"=\"+whitespace+\"*([^\\\\]'\\\"]*?)\"+whitespace+\"*\\\\]\",\"g\"),rpseudo=new RegExp(pseudos),ridentifier=new RegExp(\"^\"+identifier+\"$\"),matchExpr={\"ID\":new RegExp(\"^#(\"+identifier+\")\"),\"CLASS\":new RegExp(\"^\\\\.(\"+identifier+\")\"),\"TAG\":new RegExp(\"^(\"+identifier+\"|[*])\"),\"ATTR\":new RegExp(\"^\"+attributes),\"PSEUDO\":new RegExp(\"^\"+pseudos),\"CHILD\":new RegExp(\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\"+whitespace+\"*(even|odd|(([+-]|)(\\\\d*)n|)\"+whitespace+\"*(?:([+-]|)\"+whitespace+\"*(\\\\d+)|))\"+whitespace+\"*\\\\)|)\",\"i\"),\"bool\":new RegExp(\"^(?:\"+booleans+\")$\",\"i\"),// For use in libraries implementing .is()\n\t// We use this for POS matching in `select`\n\t\"needsContext\":new RegExp(\"^\"+whitespace+\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\"+whitespace+\"*((?:-\\\\d)?\\\\d*)\"+whitespace+\"*\\\\)|)(?=[^-]|$)\",\"i\")},rinputs=/^(?:input|select|textarea|button)$/i,rheader=/^h\\d$/i,rnative=/^[^{]+\\{\\s*\\[native \\w/,// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr=/^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,rsibling=/[+~]/,// CSS escapes\n\t// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape=new RegExp(\"\\\\\\\\([\\\\da-f]{1,6}\"+whitespace+\"?|(\"+whitespace+\")|.)\",\"ig\"),funescape=function funescape(_,escaped,escapedWhitespace){var high=\"0x\"+escaped-0x10000;// NaN means non-codepoint\n\t// Support: Firefox<24\n\t// Workaround erroneous numeric interpretation of +\"0x\"\n\treturn high!==high||escapedWhitespace?escaped:high<0?// BMP codepoint\n\tString.fromCharCode(high+0x10000):// Supplemental Plane codepoint (surrogate pair)\n\tString.fromCharCode(high>>10|0xD800,high&0x3FF|0xDC00);},// CSS string/identifier serialization\n\t// https://drafts.csswg.org/cssom/#common-serializing-idioms\n\trcssescape=/([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\x80-\\uFFFF\\w-]/g,fcssescape=function fcssescape(ch,asCodePoint){if(asCodePoint){// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\tif(ch===\"\\0\"){return\"�\";}// Control characters and (dependent upon position) numbers get escaped as code points\n\treturn ch.slice(0,-1)+\"\\\\\"+ch.charCodeAt(ch.length-1).toString(16)+\" \";}// Other potentially-special ASCII characters get backslash-escaped\n\treturn\"\\\\\"+ch;},// Used for iframes\n\t// See setDocument()\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE\n\tunloadHandler=function unloadHandler(){setDocument();},disabledAncestor=addCombinator(function(elem){return elem.disabled===true;},{dir:\"parentNode\",next:\"legend\"});// Optimize for push.apply( _, NodeList )\n\ttry{push.apply(arr=slice.call(preferredDoc.childNodes),preferredDoc.childNodes);// Support: Android<4.0\n\t// Detect silently failing push.apply\n\tarr[preferredDoc.childNodes.length].nodeType;}catch(e){push={apply:arr.length?// Leverage slice if possible\n\tfunction(target,els){push_native.apply(target,slice.call(els));}:// Support: IE<9\n\t// Otherwise append directly\n\tfunction(target,els){var j=target.length,i=0;// Can't trust NodeList.length\n\twhile(target[j++]=els[i++]){}target.length=j-1;}};}function Sizzle(selector,context,results,seed){var m,i,elem,nid,match,groups,newSelector,newContext=context&&context.ownerDocument,// nodeType defaults to 9, since context defaults to document\n\tnodeType=context?context.nodeType:9;results=results||[];// Return early from calls with invalid selector or context\n\tif(typeof selector!==\"string\"||!selector||nodeType!==1&&nodeType!==9&&nodeType!==11){return results;}// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif(!seed){if((context?context.ownerDocument||context:preferredDoc)!==document){setDocument(context);}context=context||document;if(documentIsHTML){// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t// (excepting DocumentFragment context, where the methods don't exist)\n\tif(nodeType!==11&&(match=rquickExpr.exec(selector))){// ID selector\n\tif(m=match[1]){// Document context\n\tif(nodeType===9){if(elem=context.getElementById(m)){// Support: IE, Opera, Webkit\n\t// TODO: identify versions\n\t// getElementById can match elements by name instead of ID\n\tif(elem.id===m){results.push(elem);return results;}}else{return results;}// Element context\n\t}else{// Support: IE, Opera, Webkit\n\t// TODO: identify versions\n\t// getElementById can match elements by name instead of ID\n\tif(newContext&&(elem=newContext.getElementById(m))&&contains(context,elem)&&elem.id===m){results.push(elem);return results;}}// Type selector\n\t}else if(match[2]){push.apply(results,context.getElementsByTagName(selector));return results;// Class selector\n\t}else if((m=match[3])&&support.getElementsByClassName&&context.getElementsByClassName){push.apply(results,context.getElementsByClassName(m));return results;}}// Take advantage of querySelectorAll\n\tif(support.qsa&&!compilerCache[selector+\" \"]&&(!rbuggyQSA||!rbuggyQSA.test(selector))){if(nodeType!==1){newContext=context;newSelector=selector;// qSA looks outside Element context, which is not what we want\n\t// Thanks to Andrew Dupont for this workaround technique\n\t// Support: IE <=8\n\t// Exclude object elements\n\t}else if(context.nodeName.toLowerCase()!==\"object\"){// Capture the context ID, setting it first if necessary\n\tif(nid=context.getAttribute(\"id\")){nid=nid.replace(rcssescape,fcssescape);}else{context.setAttribute(\"id\",nid=expando);}// Prefix every selector in the list\n\tgroups=tokenize(selector);i=groups.length;while(i--){groups[i]=\"#\"+nid+\" \"+toSelector(groups[i]);}newSelector=groups.join(\",\");// Expand context for sibling selectors\n\tnewContext=rsibling.test(selector)&&testContext(context.parentNode)||context;}if(newSelector){try{push.apply(results,newContext.querySelectorAll(newSelector));return results;}catch(qsaError){}finally{if(nid===expando){context.removeAttribute(\"id\");}}}}}}// All others\n\treturn select(selector.replace(rtrim,\"$1\"),context,results,seed);}/**\n\t * Create key-value caches of limited size\n\t * @returns {function(string, object)} Returns the Object data after storing it on itself with\n\t *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n\t *\tdeleting the oldest entry\n\t */function createCache(){var keys=[];function cache(key,value){// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\tif(keys.push(key+\" \")>Expr.cacheLength){// Only keep the most recent entries\n\tdelete cache[keys.shift()];}return cache[key+\" \"]=value;}return cache;}/**\n\t * Mark a function for special use by Sizzle\n\t * @param {Function} fn The function to mark\n\t */function markFunction(fn){fn[expando]=true;return fn;}/**\n\t * Support testing using an element\n\t * @param {Function} fn Passed the created element and returns a boolean result\n\t */function assert(fn){var el=document.createElement(\"fieldset\");try{return!!fn(el);}catch(e){return false;}finally{// Remove from its parent by default\n\tif(el.parentNode){el.parentNode.removeChild(el);}// release memory in IE\n\tel=null;}}/**\n\t * Adds the same handler for all of the specified attrs\n\t * @param {String} attrs Pipe-separated list of attributes\n\t * @param {Function} handler The method that will be applied\n\t */function addHandle(attrs,handler){var arr=attrs.split(\"|\"),i=arr.length;while(i--){Expr.attrHandle[arr[i]]=handler;}}/**\n\t * Checks document order of two siblings\n\t * @param {Element} a\n\t * @param {Element} b\n\t * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n\t */function siblingCheck(a,b){var cur=b&&a,diff=cur&&a.nodeType===1&&b.nodeType===1&&a.sourceIndex-b.sourceIndex;// Use IE sourceIndex if available on both nodes\n\tif(diff){return diff;}// Check if b follows a\n\tif(cur){while(cur=cur.nextSibling){if(cur===b){return-1;}}}return a?1:-1;}/**\n\t * Returns a function to use in pseudos for input types\n\t * @param {String} type\n\t */function createInputPseudo(type){return function(elem){var name=elem.nodeName.toLowerCase();return name===\"input\"&&elem.type===type;};}/**\n\t * Returns a function to use in pseudos for buttons\n\t * @param {String} type\n\t */function createButtonPseudo(type){return function(elem){var name=elem.nodeName.toLowerCase();return(name===\"input\"||name===\"button\")&&elem.type===type;};}/**\n\t * Returns a function to use in pseudos for :enabled/:disabled\n\t * @param {Boolean} disabled true for :disabled; false for :enabled\n\t */function createDisabledPseudo(disabled){// Known :disabled false positives:\n\t// IE: *[disabled]:not(button, input, select, textarea, optgroup, option, menuitem, fieldset)\n\t// not IE: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function(elem){// Check form elements and option elements for explicit disabling\n\treturn\"label\"in elem&&elem.disabled===disabled||\"form\"in elem&&elem.disabled===disabled||// Check non-disabled form elements for fieldset[disabled] ancestors\n\t\"form\"in elem&&elem.disabled===false&&(// Support: IE6-11+\n\t// Ancestry is covered for us\n\telem.isDisabled===disabled||// Otherwise, assume any non-<option> under fieldset[disabled] is disabled\n\t/* jshint -W018 */elem.isDisabled!==!disabled&&(\"label\"in elem||!disabledAncestor(elem))!==disabled);};}/**\n\t * Returns a function to use in pseudos for positionals\n\t * @param {Function} fn\n\t */function createPositionalPseudo(fn){return markFunction(function(argument){argument=+argument;return markFunction(function(seed,matches){var j,matchIndexes=fn([],seed.length,argument),i=matchIndexes.length;// Match elements found at the specified indexes\n\twhile(i--){if(seed[j=matchIndexes[i]]){seed[j]=!(matches[j]=seed[j]);}}});});}/**\n\t * Checks a node for validity as a Sizzle context\n\t * @param {Element|Object=} context\n\t * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n\t */function testContext(context){return context&&typeof context.getElementsByTagName!==\"undefined\"&&context;}// Expose support vars for convenience\n\tsupport=Sizzle.support={};/**\n\t * Detects XML nodes\n\t * @param {Element|Object} elem An element or a document\n\t * @returns {Boolean} True iff elem is a non-HTML XML node\n\t */isXML=Sizzle.isXML=function(elem){// documentElement is verified for cases where it doesn't yet exist\n\t// (such as loading iframes in IE - #4833)\n\tvar documentElement=elem&&(elem.ownerDocument||elem).documentElement;return documentElement?documentElement.nodeName!==\"HTML\":false;};/**\n\t * Sets document-related variables once based on the current document\n\t * @param {Element|Object} [doc] An element or document object to use to set the document\n\t * @returns {Object} Returns the current document\n\t */setDocument=Sizzle.setDocument=function(node){var hasCompare,subWindow,doc=node?node.ownerDocument||node:preferredDoc;// Return early if doc is invalid or already selected\n\tif(doc===document||doc.nodeType!==9||!doc.documentElement){return document;}// Update global variables\n\tdocument=doc;docElem=document.documentElement;documentIsHTML=!isXML(document);// Support: IE 9-11, Edge\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\n\tif(preferredDoc!==document&&(subWindow=document.defaultView)&&subWindow.top!==subWindow){// Support: IE 11, Edge\n\tif(subWindow.addEventListener){subWindow.addEventListener(\"unload\",unloadHandler,false);// Support: IE 9 - 10 only\n\t}else if(subWindow.attachEvent){subWindow.attachEvent(\"onunload\",unloadHandler);}}/* Attributes\n\t\t---------------------------------------------------------------------- */// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties\n\t// (excepting IE8 booleans)\n\tsupport.attributes=assert(function(el){el.className=\"i\";return!el.getAttribute(\"className\");});/* getElement(s)By*\n\t\t---------------------------------------------------------------------- */// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName=assert(function(el){el.appendChild(document.createComment(\"\"));return!el.getElementsByTagName(\"*\").length;});// Support: IE<9\n\tsupport.getElementsByClassName=rnative.test(document.getElementsByClassName);// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programmatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById=assert(function(el){docElem.appendChild(el).id=expando;return!document.getElementsByName||!document.getElementsByName(expando).length;});// ID find and filter\n\tif(support.getById){Expr.find[\"ID\"]=function(id,context){if(typeof context.getElementById!==\"undefined\"&&documentIsHTML){var m=context.getElementById(id);return m?[m]:[];}};Expr.filter[\"ID\"]=function(id){var attrId=id.replace(runescape,funescape);return function(elem){return elem.getAttribute(\"id\")===attrId;};};}else{// Support: IE6/7\n\t// getElementById is not reliable as a find shortcut\n\tdelete Expr.find[\"ID\"];Expr.filter[\"ID\"]=function(id){var attrId=id.replace(runescape,funescape);return function(elem){var node=typeof elem.getAttributeNode!==\"undefined\"&&elem.getAttributeNode(\"id\");return node&&node.value===attrId;};};}// Tag\n\tExpr.find[\"TAG\"]=support.getElementsByTagName?function(tag,context){if(typeof context.getElementsByTagName!==\"undefined\"){return context.getElementsByTagName(tag);// DocumentFragment nodes don't have gEBTN\n\t}else if(support.qsa){return context.querySelectorAll(tag);}}:function(tag,context){var elem,tmp=[],i=0,// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n\tresults=context.getElementsByTagName(tag);// Filter out possible comments\n\tif(tag===\"*\"){while(elem=results[i++]){if(elem.nodeType===1){tmp.push(elem);}}return tmp;}return results;};// Class\n\tExpr.find[\"CLASS\"]=support.getElementsByClassName&&function(className,context){if(typeof context.getElementsByClassName!==\"undefined\"&&documentIsHTML){return context.getElementsByClassName(className);}};/* QSA/matchesSelector\n\t\t---------------------------------------------------------------------- */// QSA and matchesSelector support\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches=[];// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See https://bugs.jquery.com/ticket/13378\n\trbuggyQSA=[];if(support.qsa=rnative.test(document.querySelectorAll)){// Build QSA regex\n\t// Regex strategy adopted from Diego Perini\n\tassert(function(el){// Select is set to empty string on purpose\n\t// This is to test IE's treatment of not explicitly\n\t// setting a boolean content attribute,\n\t// since its presence should be enough\n\t// https://bugs.jquery.com/ticket/12359\n\tdocElem.appendChild(el).innerHTML=\"<a id='\"+expando+\"'></a>\"+\"<select id='\"+expando+\"-\\r\\\\' msallowcapture=''>\"+\"<option selected=''></option></select>\";// Support: IE8, Opera 11-12.16\n\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\tif(el.querySelectorAll(\"[msallowcapture^='']\").length){rbuggyQSA.push(\"[*^$]=\"+whitespace+\"*(?:''|\\\"\\\")\");}// Support: IE8\n\t// Boolean attributes and \"value\" are not treated correctly\n\tif(!el.querySelectorAll(\"[selected]\").length){rbuggyQSA.push(\"\\\\[\"+whitespace+\"*(?:value|\"+booleans+\")\");}// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n\tif(!el.querySelectorAll(\"[id~=\"+expando+\"-]\").length){rbuggyQSA.push(\"~=\");}// Webkit/Opera - :checked should return selected option elements\n\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t// IE8 throws error here and will not see later tests\n\tif(!el.querySelectorAll(\":checked\").length){rbuggyQSA.push(\":checked\");}// Support: Safari 8+, iOS 8+\n\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t// In-page `selector#id sibling-combinator selector` fails\n\tif(!el.querySelectorAll(\"a#\"+expando+\"+*\").length){rbuggyQSA.push(\".#.+[+~]\");}});assert(function(el){el.innerHTML=\"<a href='' disabled='disabled'></a>\"+\"<select disabled='disabled'><option/></select>\";// Support: Windows 8 Native Apps\n\t// The type and name attributes are restricted during .innerHTML assignment\n\tvar input=document.createElement(\"input\");input.setAttribute(\"type\",\"hidden\");el.appendChild(input).setAttribute(\"name\",\"D\");// Support: IE8\n\t// Enforce case-sensitivity of name attribute\n\tif(el.querySelectorAll(\"[name=d]\").length){rbuggyQSA.push(\"name\"+whitespace+\"*[*^$|!~]?=\");}// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t// IE8 throws error here and will not see later tests\n\tif(el.querySelectorAll(\":enabled\").length!==2){rbuggyQSA.push(\":enabled\",\":disabled\");}// Support: IE9-11+\n\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\tdocElem.appendChild(el).disabled=true;if(el.querySelectorAll(\":disabled\").length!==2){rbuggyQSA.push(\":enabled\",\":disabled\");}// Opera 10-11 does not throw on post-comma invalid pseudos\n\tel.querySelectorAll(\"*,:x\");rbuggyQSA.push(\",.*:\");});}if(support.matchesSelector=rnative.test(matches=docElem.matches||docElem.webkitMatchesSelector||docElem.mozMatchesSelector||docElem.oMatchesSelector||docElem.msMatchesSelector)){assert(function(el){// Check to see if it's possible to do matchesSelector\n\t// on a disconnected node (IE 9)\n\tsupport.disconnectedMatch=matches.call(el,\"*\");// This should fail with an exception\n\t// Gecko does not error, returns false instead\n\tmatches.call(el,\"[s!='']:x\");rbuggyMatches.push(\"!=\",pseudos);});}rbuggyQSA=rbuggyQSA.length&&new RegExp(rbuggyQSA.join(\"|\"));rbuggyMatches=rbuggyMatches.length&&new RegExp(rbuggyMatches.join(\"|\"));/* Contains\n\t\t---------------------------------------------------------------------- */hasCompare=rnative.test(docElem.compareDocumentPosition);// Element contains another\n\t// Purposefully self-exclusive\n\t// As in, an element does not contain itself\n\tcontains=hasCompare||rnative.test(docElem.contains)?function(a,b){var adown=a.nodeType===9?a.documentElement:a,bup=b&&b.parentNode;return a===bup||!!(bup&&bup.nodeType===1&&(adown.contains?adown.contains(bup):a.compareDocumentPosition&&a.compareDocumentPosition(bup)&16));}:function(a,b){if(b){while(b=b.parentNode){if(b===a){return true;}}}return false;};/* Sorting\n\t\t---------------------------------------------------------------------- */// Document order sorting\n\tsortOrder=hasCompare?function(a,b){// Flag for duplicate removal\n\tif(a===b){hasDuplicate=true;return 0;}// Sort on method existence if only one input has compareDocumentPosition\n\tvar compare=!a.compareDocumentPosition-!b.compareDocumentPosition;if(compare){return compare;}// Calculate position if both inputs belong to the same document\n\tcompare=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):// Otherwise we know they are disconnected\n\t1;// Disconnected nodes\n\tif(compare&1||!support.sortDetached&&b.compareDocumentPosition(a)===compare){// Choose the first element that is related to our preferred document\n\tif(a===document||a.ownerDocument===preferredDoc&&contains(preferredDoc,a)){return-1;}if(b===document||b.ownerDocument===preferredDoc&&contains(preferredDoc,b)){return 1;}// Maintain original order\n\treturn sortInput?indexOf(sortInput,a)-indexOf(sortInput,b):0;}return compare&4?-1:1;}:function(a,b){// Exit early if the nodes are identical\n\tif(a===b){hasDuplicate=true;return 0;}var cur,i=0,aup=a.parentNode,bup=b.parentNode,ap=[a],bp=[b];// Parentless nodes are either documents or disconnected\n\tif(!aup||!bup){return a===document?-1:b===document?1:aup?-1:bup?1:sortInput?indexOf(sortInput,a)-indexOf(sortInput,b):0;// If the nodes are siblings, we can do a quick check\n\t}else if(aup===bup){return siblingCheck(a,b);}// Otherwise we need full lists of their ancestors for comparison\n\tcur=a;while(cur=cur.parentNode){ap.unshift(cur);}cur=b;while(cur=cur.parentNode){bp.unshift(cur);}// Walk down the tree looking for a discrepancy\n\twhile(ap[i]===bp[i]){i++;}return i?// Do a sibling check if the nodes have a common ancestor\n\tsiblingCheck(ap[i],bp[i]):// Otherwise nodes in our document sort first\n\tap[i]===preferredDoc?-1:bp[i]===preferredDoc?1:0;};return document;};Sizzle.matches=function(expr,elements){return Sizzle(expr,null,null,elements);};Sizzle.matchesSelector=function(elem,expr){// Set document vars if needed\n\tif((elem.ownerDocument||elem)!==document){setDocument(elem);}// Make sure that attribute selectors are quoted\n\texpr=expr.replace(rattributeQuotes,\"='$1']\");if(support.matchesSelector&&documentIsHTML&&!compilerCache[expr+\" \"]&&(!rbuggyMatches||!rbuggyMatches.test(expr))&&(!rbuggyQSA||!rbuggyQSA.test(expr))){try{var ret=matches.call(elem,expr);// IE 9's matchesSelector returns false on disconnected nodes\n\tif(ret||support.disconnectedMatch||// As well, disconnected nodes are said to be in a document\n\t// fragment in IE 9\n\telem.document&&elem.document.nodeType!==11){return ret;}}catch(e){}}return Sizzle(expr,document,null,[elem]).length>0;};Sizzle.contains=function(context,elem){// Set document vars if needed\n\tif((context.ownerDocument||context)!==document){setDocument(context);}return contains(context,elem);};Sizzle.attr=function(elem,name){// Set document vars if needed\n\tif((elem.ownerDocument||elem)!==document){setDocument(elem);}var fn=Expr.attrHandle[name.toLowerCase()],// Don't get fooled by Object.prototype properties (jQuery #13807)\n\tval=fn&&hasOwn.call(Expr.attrHandle,name.toLowerCase())?fn(elem,name,!documentIsHTML):undefined;return val!==undefined?val:support.attributes||!documentIsHTML?elem.getAttribute(name):(val=elem.getAttributeNode(name))&&val.specified?val.value:null;};Sizzle.escape=function(sel){return(sel+\"\").replace(rcssescape,fcssescape);};Sizzle.error=function(msg){throw new Error(\"Syntax error, unrecognized expression: \"+msg);};/**\n\t * Document sorting and removing duplicates\n\t * @param {ArrayLike} results\n\t */Sizzle.uniqueSort=function(results){var elem,duplicates=[],j=0,i=0;// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate=!support.detectDuplicates;sortInput=!support.sortStable&&results.slice(0);results.sort(sortOrder);if(hasDuplicate){while(elem=results[i++]){if(elem===results[i]){j=duplicates.push(i);}}while(j--){results.splice(duplicates[j],1);}}// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput=null;return results;};/**\n\t * Utility function for retrieving the text value of an array of DOM nodes\n\t * @param {Array|Element} elem\n\t */getText=Sizzle.getText=function(elem){var node,ret=\"\",i=0,nodeType=elem.nodeType;if(!nodeType){// If no nodeType, this is expected to be an array\n\twhile(node=elem[i++]){// Do not traverse comment nodes\n\tret+=getText(node);}}else if(nodeType===1||nodeType===9||nodeType===11){// Use textContent for elements\n\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\tif(typeof elem.textContent===\"string\"){return elem.textContent;}else{// Traverse its children\n\tfor(elem=elem.firstChild;elem;elem=elem.nextSibling){ret+=getText(elem);}}}else if(nodeType===3||nodeType===4){return elem.nodeValue;}// Do not include comment or processing instruction nodes\n\treturn ret;};Expr=Sizzle.selectors={// Can be adjusted by the user\n\tcacheLength:50,createPseudo:markFunction,match:matchExpr,attrHandle:{},find:{},relative:{\">\":{dir:\"parentNode\",first:true},\" \":{dir:\"parentNode\"},\"+\":{dir:\"previousSibling\",first:true},\"~\":{dir:\"previousSibling\"}},preFilter:{\"ATTR\":function ATTR(match){match[1]=match[1].replace(runescape,funescape);// Move the given value to match[3] whether quoted or unquoted\n\tmatch[3]=(match[3]||match[4]||match[5]||\"\").replace(runescape,funescape);if(match[2]===\"~=\"){match[3]=\" \"+match[3]+\" \";}return match.slice(0,4);},\"CHILD\":function CHILD(match){/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t\t1 type (only|nth|...)\n\t\t\t\t\t2 what (child|of-type)\n\t\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t\t5 sign of xn-component\n\t\t\t\t\t6 x of xn-component\n\t\t\t\t\t7 sign of y-component\n\t\t\t\t\t8 y of y-component\n\t\t\t\t*/match[1]=match[1].toLowerCase();if(match[1].slice(0,3)===\"nth\"){// nth-* requires argument\n\tif(!match[3]){Sizzle.error(match[0]);}// numeric x and y parameters for Expr.filter.CHILD\n\t// remember that false/true cast respectively to 0/1\n\tmatch[4]=+(match[4]?match[5]+(match[6]||1):2*(match[3]===\"even\"||match[3]===\"odd\"));match[5]=+(match[7]+match[8]||match[3]===\"odd\");// other types prohibit arguments\n\t}else if(match[3]){Sizzle.error(match[0]);}return match;},\"PSEUDO\":function PSEUDO(match){var excess,unquoted=!match[6]&&match[2];if(matchExpr[\"CHILD\"].test(match[0])){return null;}// Accept quoted arguments as-is\n\tif(match[3]){match[2]=match[4]||match[5]||\"\";// Strip excess characters from unquoted arguments\n\t}else if(unquoted&&rpseudo.test(unquoted)&&(// Get excess from tokenize (recursively)\n\texcess=tokenize(unquoted,true))&&(// advance to the next closing parenthesis\n\texcess=unquoted.indexOf(\")\",unquoted.length-excess)-unquoted.length)){// excess is a negative index\n\tmatch[0]=match[0].slice(0,excess);match[2]=unquoted.slice(0,excess);}// Return only captures needed by the pseudo filter method (type and argument)\n\treturn match.slice(0,3);}},filter:{\"TAG\":function TAG(nodeNameSelector){var nodeName=nodeNameSelector.replace(runescape,funescape).toLowerCase();return nodeNameSelector===\"*\"?function(){return true;}:function(elem){return elem.nodeName&&elem.nodeName.toLowerCase()===nodeName;};},\"CLASS\":function CLASS(className){var pattern=classCache[className+\" \"];return pattern||(pattern=new RegExp(\"(^|\"+whitespace+\")\"+className+\"(\"+whitespace+\"|$)\"))&&classCache(className,function(elem){return pattern.test(typeof elem.className===\"string\"&&elem.className||typeof elem.getAttribute!==\"undefined\"&&elem.getAttribute(\"class\")||\"\");});},\"ATTR\":function ATTR(name,operator,check){return function(elem){var result=Sizzle.attr(elem,name);if(result==null){return operator===\"!=\";}if(!operator){return true;}result+=\"\";return operator===\"=\"?result===check:operator===\"!=\"?result!==check:operator===\"^=\"?check&&result.indexOf(check)===0:operator===\"*=\"?check&&result.indexOf(check)>-1:operator===\"$=\"?check&&result.slice(-check.length)===check:operator===\"~=\"?(\" \"+result.replace(rwhitespace,\" \")+\" \").indexOf(check)>-1:operator===\"|=\"?result===check||result.slice(0,check.length+1)===check+\"-\":false;};},\"CHILD\":function CHILD(type,what,argument,first,last){var simple=type.slice(0,3)!==\"nth\",forward=type.slice(-4)!==\"last\",ofType=what===\"of-type\";return first===1&&last===0?// Shortcut for :nth-*(n)\n\tfunction(elem){return!!elem.parentNode;}:function(elem,context,xml){var cache,uniqueCache,outerCache,node,nodeIndex,start,dir=simple!==forward?\"nextSibling\":\"previousSibling\",parent=elem.parentNode,name=ofType&&elem.nodeName.toLowerCase(),useCache=!xml&&!ofType,diff=false;if(parent){// :(first|last|only)-(child|of-type)\n\tif(simple){while(dir){node=elem;while(node=node[dir]){if(ofType?node.nodeName.toLowerCase()===name:node.nodeType===1){return false;}}// Reverse direction for :only-* (if we haven't yet done so)\n\tstart=dir=type===\"only\"&&!start&&\"nextSibling\";}return true;}start=[forward?parent.firstChild:parent.lastChild];// non-xml :nth-child(...) stores cache data on `parent`\n\tif(forward&&useCache){// Seek `elem` from a previously-cached index\n\t// ...in a gzip-friendly way\n\tnode=parent;outerCache=node[expando]||(node[expando]={});// Support: IE <9 only\n\t// Defend against cloned attroperties (jQuery gh-1709)\n\tuniqueCache=outerCache[node.uniqueID]||(outerCache[node.uniqueID]={});cache=uniqueCache[type]||[];nodeIndex=cache[0]===dirruns&&cache[1];diff=nodeIndex&&cache[2];node=nodeIndex&&parent.childNodes[nodeIndex];while(node=++nodeIndex&&node&&node[dir]||(// Fallback to seeking `elem` from the start\n\tdiff=nodeIndex=0)||start.pop()){// When found, cache indexes on `parent` and break\n\tif(node.nodeType===1&&++diff&&node===elem){uniqueCache[type]=[dirruns,nodeIndex,diff];break;}}}else{// Use previously-cached element index if available\n\tif(useCache){// ...in a gzip-friendly way\n\tnode=elem;outerCache=node[expando]||(node[expando]={});// Support: IE <9 only\n\t// Defend against cloned attroperties (jQuery gh-1709)\n\tuniqueCache=outerCache[node.uniqueID]||(outerCache[node.uniqueID]={});cache=uniqueCache[type]||[];nodeIndex=cache[0]===dirruns&&cache[1];diff=nodeIndex;}// xml :nth-child(...)\n\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\tif(diff===false){// Use the same loop as above to seek `elem` from the start\n\twhile(node=++nodeIndex&&node&&node[dir]||(diff=nodeIndex=0)||start.pop()){if((ofType?node.nodeName.toLowerCase()===name:node.nodeType===1)&&++diff){// Cache the index of each encountered element\n\tif(useCache){outerCache=node[expando]||(node[expando]={});// Support: IE <9 only\n\t// Defend against cloned attroperties (jQuery gh-1709)\n\tuniqueCache=outerCache[node.uniqueID]||(outerCache[node.uniqueID]={});uniqueCache[type]=[dirruns,diff];}if(node===elem){break;}}}}}// Incorporate the offset, then check against cycle size\n\tdiff-=last;return diff===first||diff%first===0&&diff/first>=0;}};},\"PSEUDO\":function PSEUDO(pseudo,argument){// pseudo-class names are case-insensitive\n\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t// Remember that setFilters inherits from pseudos\n\tvar args,fn=Expr.pseudos[pseudo]||Expr.setFilters[pseudo.toLowerCase()]||Sizzle.error(\"unsupported pseudo: \"+pseudo);// The user may use createPseudo to indicate that\n\t// arguments are needed to create the filter function\n\t// just as Sizzle does\n\tif(fn[expando]){return fn(argument);}// But maintain support for old signatures\n\tif(fn.length>1){args=[pseudo,pseudo,\"\",argument];return Expr.setFilters.hasOwnProperty(pseudo.toLowerCase())?markFunction(function(seed,matches){var idx,matched=fn(seed,argument),i=matched.length;while(i--){idx=indexOf(seed,matched[i]);seed[idx]=!(matches[idx]=matched[i]);}}):function(elem){return fn(elem,0,args);};}return fn;}},pseudos:{// Potentially complex pseudos\n\t\"not\":markFunction(function(selector){// Trim the selector passed to compile\n\t// to avoid treating leading and trailing\n\t// spaces as combinators\n\tvar input=[],results=[],matcher=compile(selector.replace(rtrim,\"$1\"));return matcher[expando]?markFunction(function(seed,matches,context,xml){var elem,unmatched=matcher(seed,null,xml,[]),i=seed.length;// Match elements unmatched by `matcher`\n\twhile(i--){if(elem=unmatched[i]){seed[i]=!(matches[i]=elem);}}}):function(elem,context,xml){input[0]=elem;matcher(input,null,xml,results);// Don't keep the element (issue #299)\n\tinput[0]=null;return!results.pop();};}),\"has\":markFunction(function(selector){return function(elem){return Sizzle(selector,elem).length>0;};}),\"contains\":markFunction(function(text){text=text.replace(runescape,funescape);return function(elem){return(elem.textContent||elem.innerText||getText(elem)).indexOf(text)>-1;};}),// \"Whether an element is represented by a :lang() selector\n\t// is based solely on the element's language value\n\t// being equal to the identifier C,\n\t// or beginning with the identifier C immediately followed by \"-\".\n\t// The matching of C against the element's language value is performed case-insensitively.\n\t// The identifier C does not have to be a valid language name.\"\n\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\"lang\":markFunction(function(lang){// lang value must be a valid identifier\n\tif(!ridentifier.test(lang||\"\")){Sizzle.error(\"unsupported lang: \"+lang);}lang=lang.replace(runescape,funescape).toLowerCase();return function(elem){var elemLang;do{if(elemLang=documentIsHTML?elem.lang:elem.getAttribute(\"xml:lang\")||elem.getAttribute(\"lang\")){elemLang=elemLang.toLowerCase();return elemLang===lang||elemLang.indexOf(lang+\"-\")===0;}}while((elem=elem.parentNode)&&elem.nodeType===1);return false;};}),// Miscellaneous\n\t\"target\":function target(elem){var hash=window.location&&window.location.hash;return hash&&hash.slice(1)===elem.id;},\"root\":function root(elem){return elem===docElem;},\"focus\":function focus(elem){return elem===document.activeElement&&(!document.hasFocus||document.hasFocus())&&!!(elem.type||elem.href||~elem.tabIndex);},// Boolean properties\n\t\"enabled\":createDisabledPseudo(false),\"disabled\":createDisabledPseudo(true),\"checked\":function checked(elem){// In CSS3, :checked should return both checked and selected elements\n\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\tvar nodeName=elem.nodeName.toLowerCase();return nodeName===\"input\"&&!!elem.checked||nodeName===\"option\"&&!!elem.selected;},\"selected\":function selected(elem){// Accessing this property makes selected-by-default\n\t// options in Safari work properly\n\tif(elem.parentNode){elem.parentNode.selectedIndex;}return elem.selected===true;},// Contents\n\t\"empty\":function empty(elem){// http://www.w3.org/TR/selectors/#empty-pseudo\n\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t// but not by others (comment: 8; processing instruction: 7; etc.)\n\t// nodeType < 6 works because attributes (2) do not appear as children\n\tfor(elem=elem.firstChild;elem;elem=elem.nextSibling){if(elem.nodeType<6){return false;}}return true;},\"parent\":function parent(elem){return!Expr.pseudos[\"empty\"](elem);},// Element/input types\n\t\"header\":function header(elem){return rheader.test(elem.nodeName);},\"input\":function input(elem){return rinputs.test(elem.nodeName);},\"button\":function button(elem){var name=elem.nodeName.toLowerCase();return name===\"input\"&&elem.type===\"button\"||name===\"button\";},\"text\":function text(elem){var attr;return elem.nodeName.toLowerCase()===\"input\"&&elem.type===\"text\"&&(// Support: IE<8\n\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n\t(attr=elem.getAttribute(\"type\"))==null||attr.toLowerCase()===\"text\");},// Position-in-collection\n\t\"first\":createPositionalPseudo(function(){return[0];}),\"last\":createPositionalPseudo(function(matchIndexes,length){return[length-1];}),\"eq\":createPositionalPseudo(function(matchIndexes,length,argument){return[argument<0?argument+length:argument];}),\"even\":createPositionalPseudo(function(matchIndexes,length){var i=0;for(;i<length;i+=2){matchIndexes.push(i);}return matchIndexes;}),\"odd\":createPositionalPseudo(function(matchIndexes,length){var i=1;for(;i<length;i+=2){matchIndexes.push(i);}return matchIndexes;}),\"lt\":createPositionalPseudo(function(matchIndexes,length,argument){var i=argument<0?argument+length:argument;for(;--i>=0;){matchIndexes.push(i);}return matchIndexes;}),\"gt\":createPositionalPseudo(function(matchIndexes,length,argument){var i=argument<0?argument+length:argument;for(;++i<length;){matchIndexes.push(i);}return matchIndexes;})}};Expr.pseudos[\"nth\"]=Expr.pseudos[\"eq\"];// Add button/input type pseudos\n\tfor(i in{radio:true,checkbox:true,file:true,password:true,image:true}){Expr.pseudos[i]=createInputPseudo(i);}for(i in{submit:true,reset:true}){Expr.pseudos[i]=createButtonPseudo(i);}// Easy API for creating new setFilters\n\tfunction setFilters(){}setFilters.prototype=Expr.filters=Expr.pseudos;Expr.setFilters=new setFilters();tokenize=Sizzle.tokenize=function(selector,parseOnly){var matched,match,tokens,type,soFar,groups,preFilters,cached=tokenCache[selector+\" \"];if(cached){return parseOnly?0:cached.slice(0);}soFar=selector;groups=[];preFilters=Expr.preFilter;while(soFar){// Comma and first run\n\tif(!matched||(match=rcomma.exec(soFar))){if(match){// Don't consume trailing commas as valid\n\tsoFar=soFar.slice(match[0].length)||soFar;}groups.push(tokens=[]);}matched=false;// Combinators\n\tif(match=rcombinators.exec(soFar)){matched=match.shift();tokens.push({value:matched,// Cast descendant combinators to space\n\ttype:match[0].replace(rtrim,\" \")});soFar=soFar.slice(matched.length);}// Filters\n\tfor(type in Expr.filter){if((match=matchExpr[type].exec(soFar))&&(!preFilters[type]||(match=preFilters[type](match)))){matched=match.shift();tokens.push({value:matched,type:type,matches:match});soFar=soFar.slice(matched.length);}}if(!matched){break;}}// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly?soFar.length:soFar?Sizzle.error(selector):// Cache the tokens\n\ttokenCache(selector,groups).slice(0);};function toSelector(tokens){var i=0,len=tokens.length,selector=\"\";for(;i<len;i++){selector+=tokens[i].value;}return selector;}function addCombinator(matcher,combinator,base){var dir=combinator.dir,skip=combinator.next,key=skip||dir,checkNonElements=base&&key===\"parentNode\",doneName=done++;return combinator.first?// Check against closest ancestor/preceding element\n\tfunction(elem,context,xml){while(elem=elem[dir]){if(elem.nodeType===1||checkNonElements){return matcher(elem,context,xml);}}}:// Check against all ancestor/preceding elements\n\tfunction(elem,context,xml){var oldCache,uniqueCache,outerCache,newCache=[dirruns,doneName];// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\tif(xml){while(elem=elem[dir]){if(elem.nodeType===1||checkNonElements){if(matcher(elem,context,xml)){return true;}}}}else{while(elem=elem[dir]){if(elem.nodeType===1||checkNonElements){outerCache=elem[expando]||(elem[expando]={});// Support: IE <9 only\n\t// Defend against cloned attroperties (jQuery gh-1709)\n\tuniqueCache=outerCache[elem.uniqueID]||(outerCache[elem.uniqueID]={});if(skip&&skip===elem.nodeName.toLowerCase()){elem=elem[dir]||elem;}else if((oldCache=uniqueCache[key])&&oldCache[0]===dirruns&&oldCache[1]===doneName){// Assign to newCache so results back-propagate to previous elements\n\treturn newCache[2]=oldCache[2];}else{// Reuse newcache so results back-propagate to previous elements\n\tuniqueCache[key]=newCache;// A match means we're done; a fail means we have to keep checking\n\tif(newCache[2]=matcher(elem,context,xml)){return true;}}}}}};}function elementMatcher(matchers){return matchers.length>1?function(elem,context,xml){var i=matchers.length;while(i--){if(!matchers[i](elem,context,xml)){return false;}}return true;}:matchers[0];}function multipleContexts(selector,contexts,results){var i=0,len=contexts.length;for(;i<len;i++){Sizzle(selector,contexts[i],results);}return results;}function condense(unmatched,map,filter,context,xml){var elem,newUnmatched=[],i=0,len=unmatched.length,mapped=map!=null;for(;i<len;i++){if(elem=unmatched[i]){if(!filter||filter(elem,context,xml)){newUnmatched.push(elem);if(mapped){map.push(i);}}}}return newUnmatched;}function setMatcher(preFilter,selector,matcher,postFilter,postFinder,postSelector){if(postFilter&&!postFilter[expando]){postFilter=setMatcher(postFilter);}if(postFinder&&!postFinder[expando]){postFinder=setMatcher(postFinder,postSelector);}return markFunction(function(seed,results,context,xml){var temp,i,elem,preMap=[],postMap=[],preexisting=results.length,// Get initial elements from seed or context\n\telems=seed||multipleContexts(selector||\"*\",context.nodeType?[context]:context,[]),// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\tmatcherIn=preFilter&&(seed||!selector)?condense(elems,preMap,preFilter,context,xml):elems,matcherOut=matcher?// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\tpostFinder||(seed?preFilter:preexisting||postFilter)?// ...intermediate processing is necessary\n\t[]:// ...otherwise use results directly\n\tresults:matcherIn;// Find primary matches\n\tif(matcher){matcher(matcherIn,matcherOut,context,xml);}// Apply postFilter\n\tif(postFilter){temp=condense(matcherOut,postMap);postFilter(temp,[],context,xml);// Un-match failing elements by moving them back to matcherIn\n\ti=temp.length;while(i--){if(elem=temp[i]){matcherOut[postMap[i]]=!(matcherIn[postMap[i]]=elem);}}}if(seed){if(postFinder||preFilter){if(postFinder){// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\ttemp=[];i=matcherOut.length;while(i--){if(elem=matcherOut[i]){// Restore matcherIn since elem is not yet a final match\n\ttemp.push(matcherIn[i]=elem);}}postFinder(null,matcherOut=[],temp,xml);}// Move matched elements from seed to results to keep them synchronized\n\ti=matcherOut.length;while(i--){if((elem=matcherOut[i])&&(temp=postFinder?indexOf(seed,elem):preMap[i])>-1){seed[temp]=!(results[temp]=elem);}}}// Add elements to results, through postFinder if defined\n\t}else{matcherOut=condense(matcherOut===results?matcherOut.splice(preexisting,matcherOut.length):matcherOut);if(postFinder){postFinder(null,results,matcherOut,xml);}else{push.apply(results,matcherOut);}}});}function matcherFromTokens(tokens){var checkContext,matcher,j,len=tokens.length,leadingRelative=Expr.relative[tokens[0].type],implicitRelative=leadingRelative||Expr.relative[\" \"],i=leadingRelative?1:0,// The foundational matcher ensures that elements are reachable from top-level context(s)\n\tmatchContext=addCombinator(function(elem){return elem===checkContext;},implicitRelative,true),matchAnyContext=addCombinator(function(elem){return indexOf(checkContext,elem)>-1;},implicitRelative,true),matchers=[function(elem,context,xml){var ret=!leadingRelative&&(xml||context!==outermostContext)||((checkContext=context).nodeType?matchContext(elem,context,xml):matchAnyContext(elem,context,xml));// Avoid hanging onto element (issue #299)\n\tcheckContext=null;return ret;}];for(;i<len;i++){if(matcher=Expr.relative[tokens[i].type]){matchers=[addCombinator(elementMatcher(matchers),matcher)];}else{matcher=Expr.filter[tokens[i].type].apply(null,tokens[i].matches);// Return special upon seeing a positional matcher\n\tif(matcher[expando]){// Find the next relative operator (if any) for proper handling\n\tj=++i;for(;j<len;j++){if(Expr.relative[tokens[j].type]){break;}}return setMatcher(i>1&&elementMatcher(matchers),i>1&&toSelector(// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\ttokens.slice(0,i-1).concat({value:tokens[i-2].type===\" \"?\"*\":\"\"})).replace(rtrim,\"$1\"),matcher,i<j&&matcherFromTokens(tokens.slice(i,j)),j<len&&matcherFromTokens(tokens=tokens.slice(j)),j<len&&toSelector(tokens));}matchers.push(matcher);}}return elementMatcher(matchers);}function matcherFromGroupMatchers(elementMatchers,setMatchers){var bySet=setMatchers.length>0,byElement=elementMatchers.length>0,superMatcher=function superMatcher(seed,context,xml,results,outermost){var elem,j,matcher,matchedCount=0,i=\"0\",unmatched=seed&&[],setMatched=[],contextBackup=outermostContext,// We must always have either seed elements or outermost context\n\telems=seed||byElement&&Expr.find[\"TAG\"](\"*\",outermost),// Use integer dirruns iff this is the outermost matcher\n\tdirrunsUnique=dirruns+=contextBackup==null?1:Math.random()||0.1,len=elems.length;if(outermost){outermostContext=context===document||context||outermost;}// Add elements passing elementMatchers directly to results\n\t// Support: IE<9, Safari\n\t// Tolerate NodeList properties (IE: \"length\"; Safari: <number>) matching elements by id\n\tfor(;i!==len&&(elem=elems[i])!=null;i++){if(byElement&&elem){j=0;if(!context&&elem.ownerDocument!==document){setDocument(elem);xml=!documentIsHTML;}while(matcher=elementMatchers[j++]){if(matcher(elem,context||document,xml)){results.push(elem);break;}}if(outermost){dirruns=dirrunsUnique;}}// Track unmatched elements for set filters\n\tif(bySet){// They will have gone through all possible matchers\n\tif(elem=!matcher&&elem){matchedCount--;}// Lengthen the array for every element, matched or not\n\tif(seed){unmatched.push(elem);}}}// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t// makes the latter nonnegative.\n\tmatchedCount+=i;// Apply set filters to unmatched elements\n\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t// no element matchers and no seed.\n\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t// numerically zero.\n\tif(bySet&&i!==matchedCount){j=0;while(matcher=setMatchers[j++]){matcher(unmatched,setMatched,context,xml);}if(seed){// Reintegrate element matches to eliminate the need for sorting\n\tif(matchedCount>0){while(i--){if(!(unmatched[i]||setMatched[i])){setMatched[i]=pop.call(results);}}}// Discard index placeholder values to get only actual matches\n\tsetMatched=condense(setMatched);}// Add matches to results\n\tpush.apply(results,setMatched);// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\tif(outermost&&!seed&&setMatched.length>0&&matchedCount+setMatchers.length>1){Sizzle.uniqueSort(results);}}// Override manipulation of globals by nested matchers\n\tif(outermost){dirruns=dirrunsUnique;outermostContext=contextBackup;}return unmatched;};return bySet?markFunction(superMatcher):superMatcher;}compile=Sizzle.compile=function(selector,match/* Internal Use Only */){var i,setMatchers=[],elementMatchers=[],cached=compilerCache[selector+\" \"];if(!cached){// Generate a function of recursive functions that can be used to check each element\n\tif(!match){match=tokenize(selector);}i=match.length;while(i--){cached=matcherFromTokens(match[i]);if(cached[expando]){setMatchers.push(cached);}else{elementMatchers.push(cached);}}// Cache the compiled function\n\tcached=compilerCache(selector,matcherFromGroupMatchers(elementMatchers,setMatchers));// Save selector and tokenization\n\tcached.selector=selector;}return cached;};/**\n\t * A low-level selection function that works with Sizzle's compiled\n\t * selector functions\n\t * @param {String|Function} selector A selector or a pre-compiled\n\t * selector function built with Sizzle.compile\n\t * @param {Element} context\n\t * @param {Array} [results]\n\t * @param {Array} [seed] A set of elements to match against\n\t */select=Sizzle.select=function(selector,context,results,seed){var i,tokens,token,type,find,compiled=typeof selector===\"function\"&&selector,match=!seed&&tokenize(selector=compiled.selector||selector);results=results||[];// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif(match.length===1){// Reduce context if the leading compound selector is an ID\n\ttokens=match[0]=match[0].slice(0);if(tokens.length>2&&(token=tokens[0]).type===\"ID\"&&support.getById&&context.nodeType===9&&documentIsHTML&&Expr.relative[tokens[1].type]){context=(Expr.find[\"ID\"](token.matches[0].replace(runescape,funescape),context)||[])[0];if(!context){return results;// Precompiled matchers will still verify ancestry, so step up a level\n\t}else if(compiled){context=context.parentNode;}selector=selector.slice(tokens.shift().value.length);}// Fetch a seed set for right-to-left matching\n\ti=matchExpr[\"needsContext\"].test(selector)?0:tokens.length;while(i--){token=tokens[i];// Abort if we hit a combinator\n\tif(Expr.relative[type=token.type]){break;}if(find=Expr.find[type]){// Search, expanding context for leading sibling combinators\n\tif(seed=find(token.matches[0].replace(runescape,funescape),rsibling.test(tokens[0].type)&&testContext(context.parentNode)||context)){// If seed is empty or no tokens remain, we can return early\n\ttokens.splice(i,1);selector=seed.length&&toSelector(tokens);if(!selector){push.apply(results,seed);return results;}break;}}}}// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t(compiled||compile(selector,match))(seed,context,!documentIsHTML,results,!context||rsibling.test(selector)&&testContext(context.parentNode)||context);return results;};// One-time assignments\n\t// Sort stability\n\tsupport.sortStable=expando.split(\"\").sort(sortOrder).join(\"\")===expando;// Support: Chrome 14-35+\n\t// Always assume duplicates if they aren't passed to the comparison function\n\tsupport.detectDuplicates=!!hasDuplicate;// Initialize against the default document\n\tsetDocument();// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n\t// Detached nodes confoundingly follow *each other*\n\tsupport.sortDetached=assert(function(el){// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition(document.createElement(\"fieldset\"))&1;});// Support: IE<8\n\t// Prevent attribute/property \"interpolation\"\n\t// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\n\tif(!assert(function(el){el.innerHTML=\"<a href='#'></a>\";return el.firstChild.getAttribute(\"href\")===\"#\";})){addHandle(\"type|href|height|width\",function(elem,name,isXML){if(!isXML){return elem.getAttribute(name,name.toLowerCase()===\"type\"?1:2);}});}// Support: IE<9\n\t// Use defaultValue in place of getAttribute(\"value\")\n\tif(!support.attributes||!assert(function(el){el.innerHTML=\"<input/>\";el.firstChild.setAttribute(\"value\",\"\");return el.firstChild.getAttribute(\"value\")===\"\";})){addHandle(\"value\",function(elem,name,isXML){if(!isXML&&elem.nodeName.toLowerCase()===\"input\"){return elem.defaultValue;}});}// Support: IE<9\n\t// Use getAttributeNode to fetch booleans when getAttribute lies\n\tif(!assert(function(el){return el.getAttribute(\"disabled\")==null;})){addHandle(booleans,function(elem,name,isXML){var val;if(!isXML){return elem[name]===true?name.toLowerCase():(val=elem.getAttributeNode(name))&&val.specified?val.value:null;}});}return Sizzle;}(window);jQuery.find=Sizzle;jQuery.expr=Sizzle.selectors;// Deprecated\n\tjQuery.expr[\":\"]=jQuery.expr.pseudos;jQuery.uniqueSort=jQuery.unique=Sizzle.uniqueSort;jQuery.text=Sizzle.getText;jQuery.isXMLDoc=Sizzle.isXML;jQuery.contains=Sizzle.contains;jQuery.escapeSelector=Sizzle.escape;var dir=function dir(elem,_dir,until){var matched=[],truncate=until!==undefined;while((elem=elem[_dir])&&elem.nodeType!==9){if(elem.nodeType===1){if(truncate&&jQuery(elem).is(until)){break;}matched.push(elem);}}return matched;};var _siblings=function _siblings(n,elem){var matched=[];for(;n;n=n.nextSibling){if(n.nodeType===1&&n!==elem){matched.push(n);}}return matched;};var rneedsContext=jQuery.expr.match.needsContext;var rsingleTag=/^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i;var risSimple=/^.[^:#\\[\\.,]*$/;// Implement the identical functionality for filter and not\n\tfunction winnow(elements,qualifier,not){if(jQuery.isFunction(qualifier)){return jQuery.grep(elements,function(elem,i){/* jshint -W018 */return!!qualifier.call(elem,i,elem)!==not;});}if(qualifier.nodeType){return jQuery.grep(elements,function(elem){return elem===qualifier!==not;});}if(typeof qualifier===\"string\"){if(risSimple.test(qualifier)){return jQuery.filter(qualifier,elements,not);}qualifier=jQuery.filter(qualifier,elements);}return jQuery.grep(elements,function(elem){return indexOf.call(qualifier,elem)>-1!==not&&elem.nodeType===1;});}jQuery.filter=function(expr,elems,not){var elem=elems[0];if(not){expr=\":not(\"+expr+\")\";}return elems.length===1&&elem.nodeType===1?jQuery.find.matchesSelector(elem,expr)?[elem]:[]:jQuery.find.matches(expr,jQuery.grep(elems,function(elem){return elem.nodeType===1;}));};jQuery.fn.extend({find:function find(selector){var i,ret,len=this.length,self=this;if(typeof selector!==\"string\"){return this.pushStack(jQuery(selector).filter(function(){for(i=0;i<len;i++){if(jQuery.contains(self[i],this)){return true;}}}));}ret=this.pushStack([]);for(i=0;i<len;i++){jQuery.find(selector,self[i],ret);}return len>1?jQuery.uniqueSort(ret):ret;},filter:function filter(selector){return this.pushStack(winnow(this,selector||[],false));},not:function not(selector){return this.pushStack(winnow(this,selector||[],true));},is:function is(selector){return!!winnow(this,// If this is a positional/relative selector, check membership in the returned set\n\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\ttypeof selector===\"string\"&&rneedsContext.test(selector)?jQuery(selector):selector||[],false).length;}});// Initialize a jQuery object\n\t// A central reference to the root jQuery(document)\n\tvar rootjQuery,// A simple way to check for HTML strings\n\t// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)\n\t// Strict HTML recognition (#11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr=/^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,init=jQuery.fn.init=function(selector,context,root){var match,elem;// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\tif(!selector){return this;}// Method init() accepts an alternate rootjQuery\n\t// so migrate can support jQuery.sub (gh-2101)\n\troot=root||rootjQuery;// Handle HTML strings\n\tif(typeof selector===\"string\"){if(selector[0]===\"<\"&&selector[selector.length-1]===\">\"&&selector.length>=3){// Assume that strings that start and end with <> are HTML and skip the regex check\n\tmatch=[null,selector,null];}else{match=rquickExpr.exec(selector);}// Match html or make sure no context is specified for #id\n\tif(match&&(match[1]||!context)){// HANDLE: $(html) -> $(array)\n\tif(match[1]){context=context instanceof jQuery?context[0]:context;// Option to run scripts is true for back-compat\n\t// Intentionally let the error be thrown if parseHTML is not present\n\tjQuery.merge(this,jQuery.parseHTML(match[1],context&&context.nodeType?context.ownerDocument||context:document,true));// HANDLE: $(html, props)\n\tif(rsingleTag.test(match[1])&&jQuery.isPlainObject(context)){for(match in context){// Properties of context are called as methods if possible\n\tif(jQuery.isFunction(this[match])){this[match](context[match]);// ...and otherwise set as attributes\n\t}else{this.attr(match,context[match]);}}}return this;// HANDLE: $(#id)\n\t}else{elem=document.getElementById(match[2]);if(elem){// Inject the element directly into the jQuery object\n\tthis[0]=elem;this.length=1;}return this;}// HANDLE: $(expr, $(...))\n\t}else if(!context||context.jquery){return(context||root).find(selector);// HANDLE: $(expr, context)\n\t// (which is just equivalent to: $(context).find(expr)\n\t}else{return this.constructor(context).find(selector);}// HANDLE: $(DOMElement)\n\t}else if(selector.nodeType){this[0]=selector;this.length=1;return this;// HANDLE: $(function)\n\t// Shortcut for document ready\n\t}else if(jQuery.isFunction(selector)){return root.ready!==undefined?root.ready(selector):// Execute immediately if ready is not present\n\tselector(jQuery);}return jQuery.makeArray(selector,this);};// Give the init function the jQuery prototype for later instantiation\n\tinit.prototype=jQuery.fn;// Initialize central reference\n\trootjQuery=jQuery(document);var rparentsprev=/^(?:parents|prev(?:Until|All))/,// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique={children:true,contents:true,next:true,prev:true};jQuery.fn.extend({has:function has(target){var targets=jQuery(target,this),l=targets.length;return this.filter(function(){var i=0;for(;i<l;i++){if(jQuery.contains(this,targets[i])){return true;}}});},closest:function closest(selectors,context){var cur,i=0,l=this.length,matched=[],targets=typeof selectors!==\"string\"&&jQuery(selectors);// Positional selectors never match, since there's no _selection_ context\n\tif(!rneedsContext.test(selectors)){for(;i<l;i++){for(cur=this[i];cur&&cur!==context;cur=cur.parentNode){// Always skip document fragments\n\tif(cur.nodeType<11&&(targets?targets.index(cur)>-1:// Don't pass non-elements to Sizzle\n\tcur.nodeType===1&&jQuery.find.matchesSelector(cur,selectors))){matched.push(cur);break;}}}}return this.pushStack(matched.length>1?jQuery.uniqueSort(matched):matched);},// Determine the position of an element within the set\n\tindex:function index(elem){// No argument, return index in parent\n\tif(!elem){return this[0]&&this[0].parentNode?this.first().prevAll().length:-1;}// Index in selector\n\tif(typeof elem===\"string\"){return indexOf.call(jQuery(elem),this[0]);}// Locate the position of the desired element\n\treturn indexOf.call(this,// If it receives a jQuery object, the first element is used\n\telem.jquery?elem[0]:elem);},add:function add(selector,context){return this.pushStack(jQuery.uniqueSort(jQuery.merge(this.get(),jQuery(selector,context))));},addBack:function addBack(selector){return this.add(selector==null?this.prevObject:this.prevObject.filter(selector));}});function sibling(cur,dir){while((cur=cur[dir])&&cur.nodeType!==1){}return cur;}jQuery.each({parent:function parent(elem){var parent=elem.parentNode;return parent&&parent.nodeType!==11?parent:null;},parents:function parents(elem){return dir(elem,\"parentNode\");},parentsUntil:function parentsUntil(elem,i,until){return dir(elem,\"parentNode\",until);},next:function next(elem){return sibling(elem,\"nextSibling\");},prev:function prev(elem){return sibling(elem,\"previousSibling\");},nextAll:function nextAll(elem){return dir(elem,\"nextSibling\");},prevAll:function prevAll(elem){return dir(elem,\"previousSibling\");},nextUntil:function nextUntil(elem,i,until){return dir(elem,\"nextSibling\",until);},prevUntil:function prevUntil(elem,i,until){return dir(elem,\"previousSibling\",until);},siblings:function siblings(elem){return _siblings((elem.parentNode||{}).firstChild,elem);},children:function children(elem){return _siblings(elem.firstChild);},contents:function contents(elem){return elem.contentDocument||jQuery.merge([],elem.childNodes);}},function(name,fn){jQuery.fn[name]=function(until,selector){var matched=jQuery.map(this,fn,until);if(name.slice(-5)!==\"Until\"){selector=until;}if(selector&&typeof selector===\"string\"){matched=jQuery.filter(selector,matched);}if(this.length>1){// Remove duplicates\n\tif(!guaranteedUnique[name]){jQuery.uniqueSort(matched);}// Reverse order for parents* and prev-derivatives\n\tif(rparentsprev.test(name)){matched.reverse();}}return this.pushStack(matched);};});var rnotwhite=/\\S+/g;// Convert String-formatted options into Object-formatted ones\n\tfunction createOptions(options){var object={};jQuery.each(options.match(rnotwhite)||[],function(_,flag){object[flag]=true;});return object;}/*\n\t * Create a callback list using the following parameters:\n\t *\n\t *\toptions: an optional list of space-separated options that will change how\n\t *\t\t\tthe callback list behaves or a more traditional option object\n\t *\n\t * By default a callback list will act like an event callback list and can be\n\t * \"fired\" multiple times.\n\t *\n\t * Possible options:\n\t *\n\t *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n\t *\n\t *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n\t *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n\t *\t\t\t\t\tvalues (like a Deferred)\n\t *\n\t *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n\t *\n\t *\tstopOnFalse:\tinterrupt callings when a callback returns false\n\t *\n\t */jQuery.Callbacks=function(options){// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions=typeof options===\"string\"?createOptions(options):jQuery.extend({},options);var// Flag to know if list is currently firing\n\tfiring,// Last fire value for non-forgettable lists\n\tmemory,// Flag to know if list was already fired\n\t_fired,// Flag to prevent firing\n\t_locked,// Actual callback list\n\tlist=[],// Queue of execution data for repeatable lists\n\tqueue=[],// Index of currently firing callback (modified by add/remove as needed)\n\tfiringIndex=-1,// Fire callbacks\n\tfire=function fire(){// Enforce single-firing\n\t_locked=options.once;// Execute callbacks for all pending executions,\n\t// respecting firingIndex overrides and runtime changes\n\t_fired=firing=true;for(;queue.length;firingIndex=-1){memory=queue.shift();while(++firingIndex<list.length){// Run callback and check for early termination\n\tif(list[firingIndex].apply(memory[0],memory[1])===false&&options.stopOnFalse){// Jump to end and forget the data so .add doesn't re-fire\n\tfiringIndex=list.length;memory=false;}}}// Forget the data if we're done with it\n\tif(!options.memory){memory=false;}firing=false;// Clean up if we're done firing for good\n\tif(_locked){// Keep an empty list if we have data for future add calls\n\tif(memory){list=[];// Otherwise, this object is spent\n\t}else{list=\"\";}}},// Actual Callbacks object\n\tself={// Add a callback or a collection of callbacks to the list\n\tadd:function add(){if(list){// If we have memory from a past run, we should fire after adding\n\tif(memory&&!firing){firingIndex=list.length-1;queue.push(memory);}(function add(args){jQuery.each(args,function(_,arg){if(jQuery.isFunction(arg)){if(!options.unique||!self.has(arg)){list.push(arg);}}else if(arg&&arg.length&&jQuery.type(arg)!==\"string\"){// Inspect recursively\n\tadd(arg);}});})(arguments);if(memory&&!firing){fire();}}return this;},// Remove a callback from the list\n\tremove:function remove(){jQuery.each(arguments,function(_,arg){var index;while((index=jQuery.inArray(arg,list,index))>-1){list.splice(index,1);// Handle firing indexes\n\tif(index<=firingIndex){firingIndex--;}}});return this;},// Check if a given callback is in the list.\n\t// If no argument is given, return whether or not list has callbacks attached.\n\thas:function has(fn){return fn?jQuery.inArray(fn,list)>-1:list.length>0;},// Remove all callbacks from the list\n\tempty:function empty(){if(list){list=[];}return this;},// Disable .fire and .add\n\t// Abort any current/pending executions\n\t// Clear all callbacks and values\n\tdisable:function disable(){_locked=queue=[];list=memory=\"\";return this;},disabled:function disabled(){return!list;},// Disable .fire\n\t// Also disable .add unless we have memory (since it would have no effect)\n\t// Abort any pending executions\n\tlock:function lock(){_locked=queue=[];if(!memory&&!firing){list=memory=\"\";}return this;},locked:function locked(){return!!_locked;},// Call all callbacks with the given context and arguments\n\tfireWith:function fireWith(context,args){if(!_locked){args=args||[];args=[context,args.slice?args.slice():args];queue.push(args);if(!firing){fire();}}return this;},// Call all the callbacks with the given arguments\n\tfire:function fire(){self.fireWith(this,arguments);return this;},// To know if the callbacks have already been called at least once\n\tfired:function fired(){return!!_fired;}};return self;};function Identity(v){return v;}function Thrower(ex){throw ex;}function adoptValue(value,resolve,reject){var method;try{// Check for promise aspect first to privilege synchronous behavior\n\tif(value&&jQuery.isFunction(method=value.promise)){method.call(value).done(resolve).fail(reject);// Other thenables\n\t}else if(value&&jQuery.isFunction(method=value.then)){method.call(value,resolve,reject);// Other non-thenables\n\t}else{// Support: Android 4.0 only\n\t// Strict mode functions invoked without .call/.apply get global-object context\n\tresolve.call(undefined,value);}// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t}catch(/*jshint -W002 */value){// Support: Android 4.0 only\n\t// Strict mode functions invoked without .call/.apply get global-object context\n\treject.call(undefined,value);}}jQuery.extend({Deferred:function Deferred(func){var tuples=[// action, add listener, callbacks,\n\t// ... .then handlers, argument index, [final state]\n\t[\"notify\",\"progress\",jQuery.Callbacks(\"memory\"),jQuery.Callbacks(\"memory\"),2],[\"resolve\",\"done\",jQuery.Callbacks(\"once memory\"),jQuery.Callbacks(\"once memory\"),0,\"resolved\"],[\"reject\",\"fail\",jQuery.Callbacks(\"once memory\"),jQuery.Callbacks(\"once memory\"),1,\"rejected\"]],_state=\"pending\",_promise={state:function state(){return _state;},always:function always(){deferred.done(arguments).fail(arguments);return this;},\"catch\":function _catch(fn){return _promise.then(null,fn);},// Keep pipe for back-compat\n\tpipe:function pipe()/* fnDone, fnFail, fnProgress */{var fns=arguments;return jQuery.Deferred(function(newDefer){jQuery.each(tuples,function(i,tuple){// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\tvar fn=jQuery.isFunction(fns[tuple[4]])&&fns[tuple[4]];// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\tdeferred[tuple[1]](function(){var returned=fn&&fn.apply(this,arguments);if(returned&&jQuery.isFunction(returned.promise)){returned.promise().progress(newDefer.notify).done(newDefer.resolve).fail(newDefer.reject);}else{newDefer[tuple[0]+\"With\"](this,fn?[returned]:arguments);}});});fns=null;}).promise();},then:function then(onFulfilled,onRejected,onProgress){var maxDepth=0;function resolve(depth,deferred,handler,special){return function(){var that=this,args=arguments,mightThrow=function mightThrow(){var returned,then;// Support: Promises/A+ section 2.3.3.3.3\n\t// https://promisesaplus.com/#point-59\n\t// Ignore double-resolution attempts\n\tif(depth<maxDepth){return;}returned=handler.apply(that,args);// Support: Promises/A+ section 2.3.1\n\t// https://promisesaplus.com/#point-48\n\tif(returned===deferred.promise()){throw new TypeError(\"Thenable self-resolution\");}// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t// https://promisesaplus.com/#point-54\n\t// https://promisesaplus.com/#point-75\n\t// Retrieve `then` only once\n\tthen=returned&&(// Support: Promises/A+ section 2.3.4\n\t// https://promisesaplus.com/#point-64\n\t// Only check objects and functions for thenability\n\t(typeof returned===\"undefined\"?\"undefined\":_typeof(returned))===\"object\"||typeof returned===\"function\")&&returned.then;// Handle a returned thenable\n\tif(jQuery.isFunction(then)){// Special processors (notify) just wait for resolution\n\tif(special){then.call(returned,resolve(maxDepth,deferred,Identity,special),resolve(maxDepth,deferred,Thrower,special));// Normal processors (resolve) also hook into progress\n\t}else{// ...and disregard older resolution values\n\tmaxDepth++;then.call(returned,resolve(maxDepth,deferred,Identity,special),resolve(maxDepth,deferred,Thrower,special),resolve(maxDepth,deferred,Identity,deferred.notifyWith));}// Handle all other returned values\n\t}else{// Only substitute handlers pass on context\n\t// and multiple values (non-spec behavior)\n\tif(handler!==Identity){that=undefined;args=[returned];}// Process the value(s)\n\t// Default process is resolve\n\t(special||deferred.resolveWith)(that,args);}},// Only normal processors (resolve) catch and reject exceptions\n\tprocess=special?mightThrow:function(){try{mightThrow();}catch(e){if(jQuery.Deferred.exceptionHook){jQuery.Deferred.exceptionHook(e,process.stackTrace);}// Support: Promises/A+ section 2.3.3.3.4.1\n\t// https://promisesaplus.com/#point-61\n\t// Ignore post-resolution exceptions\n\tif(depth+1>=maxDepth){// Only substitute handlers pass on context\n\t// and multiple values (non-spec behavior)\n\tif(handler!==Thrower){that=undefined;args=[e];}deferred.rejectWith(that,args);}}};// Support: Promises/A+ section 2.3.3.3.1\n\t// https://promisesaplus.com/#point-57\n\t// Re-resolve promises immediately to dodge false rejection from\n\t// subsequent errors\n\tif(depth){process();}else{// Call an optional hook to record the stack, in case of exception\n\t// since it's otherwise lost when execution goes async\n\tif(jQuery.Deferred.getStackHook){process.stackTrace=jQuery.Deferred.getStackHook();}window.setTimeout(process);}};}return jQuery.Deferred(function(newDefer){// progress_handlers.add( ... )\n\ttuples[0][3].add(resolve(0,newDefer,jQuery.isFunction(onProgress)?onProgress:Identity,newDefer.notifyWith));// fulfilled_handlers.add( ... )\n\ttuples[1][3].add(resolve(0,newDefer,jQuery.isFunction(onFulfilled)?onFulfilled:Identity));// rejected_handlers.add( ... )\n\ttuples[2][3].add(resolve(0,newDefer,jQuery.isFunction(onRejected)?onRejected:Thrower));}).promise();},// Get a promise for this deferred\n\t// If obj is provided, the promise aspect is added to the object\n\tpromise:function promise(obj){return obj!=null?jQuery.extend(obj,_promise):_promise;}},deferred={};// Add list-specific methods\n\tjQuery.each(tuples,function(i,tuple){var list=tuple[2],stateString=tuple[5];// promise.progress = list.add\n\t// promise.done = list.add\n\t// promise.fail = list.add\n\t_promise[tuple[1]]=list.add;// Handle state\n\tif(stateString){list.add(function(){// state = \"resolved\" (i.e., fulfilled)\n\t// state = \"rejected\"\n\t_state=stateString;},// rejected_callbacks.disable\n\t// fulfilled_callbacks.disable\n\ttuples[3-i][2].disable,// progress_callbacks.lock\n\ttuples[0][2].lock);}// progress_handlers.fire\n\t// fulfilled_handlers.fire\n\t// rejected_handlers.fire\n\tlist.add(tuple[3].fire);// deferred.notify = function() { deferred.notifyWith(...) }\n\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t// deferred.reject = function() { deferred.rejectWith(...) }\n\tdeferred[tuple[0]]=function(){deferred[tuple[0]+\"With\"](this===deferred?undefined:this,arguments);return this;};// deferred.notifyWith = list.fireWith\n\t// deferred.resolveWith = list.fireWith\n\t// deferred.rejectWith = list.fireWith\n\tdeferred[tuple[0]+\"With\"]=list.fireWith;});// Make the deferred a promise\n\t_promise.promise(deferred);// Call given func if any\n\tif(func){func.call(deferred,deferred);}// All done!\n\treturn deferred;},// Deferred helper\n\twhen:function when(singleValue){var// count of uncompleted subordinates\n\tremaining=arguments.length,// count of unprocessed arguments\n\ti=remaining,// subordinate fulfillment data\n\tresolveContexts=Array(i),resolveValues=_slice.call(arguments),// the master Deferred\n\tmaster=jQuery.Deferred(),// subordinate callback factory\n\tupdateFunc=function updateFunc(i){return function(value){resolveContexts[i]=this;resolveValues[i]=arguments.length>1?_slice.call(arguments):value;if(! --remaining){master.resolveWith(resolveContexts,resolveValues);}};};// Single- and empty arguments are adopted like Promise.resolve\n\tif(remaining<=1){adoptValue(singleValue,master.done(updateFunc(i)).resolve,master.reject);// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\tif(master.state()===\"pending\"||jQuery.isFunction(resolveValues[i]&&resolveValues[i].then)){return master.then();}}// Multiple arguments are aggregated like Promise.all array elements\n\twhile(i--){adoptValue(resolveValues[i],updateFunc(i),master.reject);}return master.promise();}});// These usually indicate a programmer mistake during development,\n\t// warn about them ASAP rather than swallowing them by default.\n\tvar rerrorNames=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;jQuery.Deferred.exceptionHook=function(error,stack){// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif(window.console&&window.console.warn&&error&&rerrorNames.test(error.name)){window.console.warn(\"jQuery.Deferred exception: \"+error.message,error.stack,stack);}};// The deferred used on DOM ready\n\tvar readyList=jQuery.Deferred();jQuery.fn.ready=function(fn){readyList.then(fn);return this;};jQuery.extend({// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady:false,// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait:1,// Hold (or release) the ready event\n\tholdReady:function holdReady(hold){if(hold){jQuery.readyWait++;}else{jQuery.ready(true);}},// Handle when the DOM is ready\n\tready:function ready(wait){// Abort if there are pending holds or we're already ready\n\tif(wait===true?--jQuery.readyWait:jQuery.isReady){return;}// Remember that the DOM is ready\n\tjQuery.isReady=true;// If a normal DOM Ready event fired, decrement, and wait if need be\n\tif(wait!==true&&--jQuery.readyWait>0){return;}// If there are functions bound, to execute\n\treadyList.resolveWith(document,[jQuery]);}});jQuery.ready.then=readyList.then;// The ready event handler and self cleanup method\n\tfunction completed(){document.removeEventListener(\"DOMContentLoaded\",completed);window.removeEventListener(\"load\",completed);jQuery.ready();}// Catch cases where $(document).ready() is called\n\t// after the browser event has already occurred.\n\t// Support: IE <=9 - 10 only\n\t// Older IE sometimes signals \"interactive\" too soon\n\tif(document.readyState===\"complete\"||document.readyState!==\"loading\"&&!document.documentElement.doScroll){// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout(jQuery.ready);}else{// Use the handy event callback\n\tdocument.addEventListener(\"DOMContentLoaded\",completed);// A fallback to window.onload, that will always work\n\twindow.addEventListener(\"load\",completed);}// Multifunctional method to get and set values of a collection\n\t// The value/s can optionally be executed if it's a function\n\tvar access=function access(elems,fn,key,value,chainable,emptyGet,raw){var i=0,len=elems.length,bulk=key==null;// Sets many values\n\tif(jQuery.type(key)===\"object\"){chainable=true;for(i in key){access(elems,fn,i,key[i],true,emptyGet,raw);}// Sets one value\n\t}else if(value!==undefined){chainable=true;if(!jQuery.isFunction(value)){raw=true;}if(bulk){// Bulk operations run against the entire set\n\tif(raw){fn.call(elems,value);fn=null;// ...except when executing function values\n\t}else{bulk=fn;fn=function fn(elem,key,value){return bulk.call(jQuery(elem),value);};}}if(fn){for(;i<len;i++){fn(elems[i],key,raw?value:value.call(elems[i],i,fn(elems[i],key)));}}}return chainable?elems:// Gets\n\tbulk?fn.call(elems):len?fn(elems[0],key):emptyGet;};var acceptData=function acceptData(owner){// Accepts only:\n\t// - Node\n\t// - Node.ELEMENT_NODE\n\t// - Node.DOCUMENT_NODE\n\t// - Object\n\t// - Any\n\t/* jshint -W018 */return owner.nodeType===1||owner.nodeType===9||!+owner.nodeType;};function Data(){this.expando=jQuery.expando+Data.uid++;}Data.uid=1;Data.prototype={cache:function cache(owner){// Check if the owner object already has a cache\n\tvar value=owner[this.expando];// If not, create one\n\tif(!value){value={};// We can accept data for non-element nodes in modern browsers,\n\t// but we should not, see #8335.\n\t// Always return an empty object.\n\tif(acceptData(owner)){// If it is a node unlikely to be stringify-ed or looped over\n\t// use plain assignment\n\tif(owner.nodeType){owner[this.expando]=value;// Otherwise secure it in a non-enumerable property\n\t// configurable must be true to allow the property to be\n\t// deleted when data is removed\n\t}else{Object.defineProperty(owner,this.expando,{value:value,configurable:true});}}}return value;},set:function set(owner,data,value){var prop,cache=this.cache(owner);// Handle: [ owner, key, value ] args\n\t// Always use camelCase key (gh-2257)\n\tif(typeof data===\"string\"){cache[jQuery.camelCase(data)]=value;// Handle: [ owner, { properties } ] args\n\t}else{// Copy the properties one-by-one to the cache object\n\tfor(prop in data){cache[jQuery.camelCase(prop)]=data[prop];}}return cache;},get:function get(owner,key){return key===undefined?this.cache(owner):// Always use camelCase key (gh-2257)\n\towner[this.expando]&&owner[this.expando][jQuery.camelCase(key)];},access:function access(owner,key,value){// In cases where either:\n\t//\n\t// 1. No key was specified\n\t// 2. A string key was specified, but no value provided\n\t//\n\t// Take the \"read\" path and allow the get method to determine\n\t// which value to return, respectively either:\n\t//\n\t// 1. The entire cache object\n\t// 2. The data stored at the key\n\t//\n\tif(key===undefined||key&&typeof key===\"string\"&&value===undefined){return this.get(owner,key);}// When the key is not a string, or both a key and value\n\t// are specified, set or extend (existing objects) with either:\n\t//\n\t// 1. An object of properties\n\t// 2. A key and value\n\t//\n\tthis.set(owner,key,value);// Since the \"set\" path can have two possible entry points\n\t// return the expected data based on which path was taken[*]\n\treturn value!==undefined?value:key;},remove:function remove(owner,key){var i,cache=owner[this.expando];if(cache===undefined){return;}if(key!==undefined){// Support array or space separated string of keys\n\tif(jQuery.isArray(key)){// If key is an array of keys...\n\t// We always set camelCase keys, so remove that.\n\tkey=key.map(jQuery.camelCase);}else{key=jQuery.camelCase(key);// If a key with the spaces exists, use it.\n\t// Otherwise, create an array by matching non-whitespace\n\tkey=key in cache?[key]:key.match(rnotwhite)||[];}i=key.length;while(i--){delete cache[key[i]];}}// Remove the expando if there's no more data\n\tif(key===undefined||jQuery.isEmptyObject(cache)){// Support: Chrome <=35 - 45\n\t// Webkit & Blink performance suffers when deleting properties\n\t// from DOM nodes, so set to undefined instead\n\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\tif(owner.nodeType){owner[this.expando]=undefined;}else{delete owner[this.expando];}}},hasData:function hasData(owner){var cache=owner[this.expando];return cache!==undefined&&!jQuery.isEmptyObject(cache);}};var dataPriv=new Data();var dataUser=new Data();//\tImplementation Summary\n\t//\n\t//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n\t//\t2. Improve the module's maintainability by reducing the storage\n\t//\t\tpaths to a single mechanism.\n\t//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n\t//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n\t//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n\t//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\tvar rbrace=/^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,rmultiDash=/[A-Z]/g;function dataAttr(elem,key,data){var name;// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif(data===undefined&&elem.nodeType===1){name=\"data-\"+key.replace(rmultiDash,\"-$&\").toLowerCase();data=elem.getAttribute(name);if(typeof data===\"string\"){try{data=data===\"true\"?true:data===\"false\"?false:data===\"null\"?null:// Only convert to a number if it doesn't change the string\n\t+data+\"\"===data?+data:rbrace.test(data)?JSON.parse(data):data;}catch(e){}// Make sure we set the data so it isn't changed later\n\tdataUser.set(elem,key,data);}else{data=undefined;}}return data;}jQuery.extend({hasData:function hasData(elem){return dataUser.hasData(elem)||dataPriv.hasData(elem);},data:function data(elem,name,_data){return dataUser.access(elem,name,_data);},removeData:function removeData(elem,name){dataUser.remove(elem,name);},// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data:function _data(elem,name,data){return dataPriv.access(elem,name,data);},_removeData:function _removeData(elem,name){dataPriv.remove(elem,name);}});jQuery.fn.extend({data:function data(key,value){var i,name,data,elem=this[0],attrs=elem&&elem.attributes;// Gets all values\n\tif(key===undefined){if(this.length){data=dataUser.get(elem);if(elem.nodeType===1&&!dataPriv.get(elem,\"hasDataAttrs\")){i=attrs.length;while(i--){// Support: IE 11 only\n\t// The attrs elements can be null (#14894)\n\tif(attrs[i]){name=attrs[i].name;if(name.indexOf(\"data-\")===0){name=jQuery.camelCase(name.slice(5));dataAttr(elem,name,data[name]);}}}dataPriv.set(elem,\"hasDataAttrs\",true);}}return data;}// Sets multiple values\n\tif((typeof key===\"undefined\"?\"undefined\":_typeof(key))===\"object\"){return this.each(function(){dataUser.set(this,key);});}return access(this,function(value){var data;// The calling jQuery object (element matches) is not empty\n\t// (and therefore has an element appears at this[ 0 ]) and the\n\t// `value` parameter was not undefined. An empty jQuery object\n\t// will result in `undefined` for elem = this[ 0 ] which will\n\t// throw an exception if an attempt to read a data cache is made.\n\tif(elem&&value===undefined){// Attempt to get data from the cache\n\t// The key will always be camelCased in Data\n\tdata=dataUser.get(elem,key);if(data!==undefined){return data;}// Attempt to \"discover\" the data in\n\t// HTML5 custom data-* attrs\n\tdata=dataAttr(elem,key);if(data!==undefined){return data;}// We tried really hard, but the data doesn't exist.\n\treturn;}// Set the data...\n\tthis.each(function(){// We always store the camelCased key\n\tdataUser.set(this,key,value);});},null,value,arguments.length>1,null,true);},removeData:function removeData(key){return this.each(function(){dataUser.remove(this,key);});}});jQuery.extend({queue:function queue(elem,type,data){var queue;if(elem){type=(type||\"fx\")+\"queue\";queue=dataPriv.get(elem,type);// Speed up dequeue by getting out quickly if this is just a lookup\n\tif(data){if(!queue||jQuery.isArray(data)){queue=dataPriv.access(elem,type,jQuery.makeArray(data));}else{queue.push(data);}}return queue||[];}},dequeue:function dequeue(elem,type){type=type||\"fx\";var queue=jQuery.queue(elem,type),startLength=queue.length,fn=queue.shift(),hooks=jQuery._queueHooks(elem,type),next=function next(){jQuery.dequeue(elem,type);};// If the fx queue is dequeued, always remove the progress sentinel\n\tif(fn===\"inprogress\"){fn=queue.shift();startLength--;}if(fn){// Add a progress sentinel to prevent the fx queue from being\n\t// automatically dequeued\n\tif(type===\"fx\"){queue.unshift(\"inprogress\");}// Clear up the last queue stop function\n\tdelete hooks.stop;fn.call(elem,next,hooks);}if(!startLength&&hooks){hooks.empty.fire();}},// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks:function _queueHooks(elem,type){var key=type+\"queueHooks\";return dataPriv.get(elem,key)||dataPriv.access(elem,key,{empty:jQuery.Callbacks(\"once memory\").add(function(){dataPriv.remove(elem,[type+\"queue\",key]);})});}});jQuery.fn.extend({queue:function queue(type,data){var setter=2;if(typeof type!==\"string\"){data=type;type=\"fx\";setter--;}if(arguments.length<setter){return jQuery.queue(this[0],type);}return data===undefined?this:this.each(function(){var queue=jQuery.queue(this,type,data);// Ensure a hooks for this queue\n\tjQuery._queueHooks(this,type);if(type===\"fx\"&&queue[0]!==\"inprogress\"){jQuery.dequeue(this,type);}});},dequeue:function dequeue(type){return this.each(function(){jQuery.dequeue(this,type);});},clearQueue:function clearQueue(type){return this.queue(type||\"fx\",[]);},// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise:function promise(type,obj){var tmp,count=1,defer=jQuery.Deferred(),elements=this,i=this.length,resolve=function resolve(){if(! --count){defer.resolveWith(elements,[elements]);}};if(typeof type!==\"string\"){obj=type;type=undefined;}type=type||\"fx\";while(i--){tmp=dataPriv.get(elements[i],type+\"queueHooks\");if(tmp&&tmp.empty){count++;tmp.empty.add(resolve);}}resolve();return defer.promise(obj);}});var pnum=/[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/.source;var rcssNum=new RegExp(\"^(?:([+-])=|)(\"+pnum+\")([a-z%]*)$\",\"i\");var cssExpand=[\"Top\",\"Right\",\"Bottom\",\"Left\"];var isHiddenWithinTree=function isHiddenWithinTree(elem,el){// isHiddenWithinTree might be called from jQuery#filter function;\n\t// in that case, element will be second argument\n\telem=el||elem;// Inline style trumps all\n\treturn elem.style.display===\"none\"||elem.style.display===\"\"&&// Otherwise, check computed style\n\t// Support: Firefox <=43 - 45\n\t// Disconnected elements can have computed display: none, so first confirm that elem is\n\t// in the document.\n\tjQuery.contains(elem.ownerDocument,elem)&&jQuery.css(elem,\"display\")===\"none\";};var swap=function swap(elem,options,callback,args){var ret,name,old={};// Remember the old values, and insert the new ones\n\tfor(name in options){old[name]=elem.style[name];elem.style[name]=options[name];}ret=callback.apply(elem,args||[]);// Revert the old values\n\tfor(name in options){elem.style[name]=old[name];}return ret;};function adjustCSS(elem,prop,valueParts,tween){var adjusted,scale=1,maxIterations=20,currentValue=tween?function(){return tween.cur();}:function(){return jQuery.css(elem,prop,\"\");},initial=currentValue(),unit=valueParts&&valueParts[3]||(jQuery.cssNumber[prop]?\"\":\"px\"),// Starting value computation is required for potential unit mismatches\n\tinitialInUnit=(jQuery.cssNumber[prop]||unit!==\"px\"&&+initial)&&rcssNum.exec(jQuery.css(elem,prop));if(initialInUnit&&initialInUnit[3]!==unit){// Trust units reported by jQuery.css\n\tunit=unit||initialInUnit[3];// Make sure we update the tween properties later on\n\tvalueParts=valueParts||[];// Iteratively approximate from a nonzero starting point\n\tinitialInUnit=+initial||1;do{// If previous iteration zeroed out, double until we get *something*.\n\t// Use string for doubling so we don't accidentally see scale as unchanged below\n\tscale=scale||\".5\";// Adjust and apply\n\tinitialInUnit=initialInUnit/scale;jQuery.style(elem,prop,initialInUnit+unit);// Update scale, tolerating zero or NaN from tween.cur()\n\t// Break the loop if scale is unchanged or perfect, or if we've just had enough.\n\t}while(scale!==(scale=currentValue()/initial)&&scale!==1&&--maxIterations);}if(valueParts){initialInUnit=+initialInUnit||+initial||0;// Apply relative offset (+=/-=) if specified\n\tadjusted=valueParts[1]?initialInUnit+(valueParts[1]+1)*valueParts[2]:+valueParts[2];if(tween){tween.unit=unit;tween.start=initialInUnit;tween.end=adjusted;}}return adjusted;}var defaultDisplayMap={};function getDefaultDisplay(elem){var temp,doc=elem.ownerDocument,nodeName=elem.nodeName,display=defaultDisplayMap[nodeName];if(display){return display;}temp=doc.body.appendChild(doc.createElement(nodeName)),display=jQuery.css(temp,\"display\");temp.parentNode.removeChild(temp);if(display===\"none\"){display=\"block\";}defaultDisplayMap[nodeName]=display;return display;}function showHide(elements,show){var display,elem,values=[],index=0,length=elements.length;// Determine new display value for elements that need to change\n\tfor(;index<length;index++){elem=elements[index];if(!elem.style){continue;}display=elem.style.display;if(show){// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t// check is required in this first loop unless we have a nonempty display value (either\n\t// inline or about-to-be-restored)\n\tif(display===\"none\"){values[index]=dataPriv.get(elem,\"display\")||null;if(!values[index]){elem.style.display=\"\";}}if(elem.style.display===\"\"&&isHiddenWithinTree(elem)){values[index]=getDefaultDisplay(elem);}}else{if(display!==\"none\"){values[index]=\"none\";// Remember what we're overwriting\n\tdataPriv.set(elem,\"display\",display);}}}// Set the display of the elements in a second loop to avoid constant reflow\n\tfor(index=0;index<length;index++){if(values[index]!=null){elements[index].style.display=values[index];}}return elements;}jQuery.fn.extend({show:function show(){return showHide(this,true);},hide:function hide(){return showHide(this);},toggle:function toggle(state){if(typeof state===\"boolean\"){return state?this.show():this.hide();}return this.each(function(){if(isHiddenWithinTree(this)){jQuery(this).show();}else{jQuery(this).hide();}});}});var rcheckableType=/^(?:checkbox|radio)$/i;var rtagName=/<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]+)/i;var rscriptType=/^$|\\/(?:java|ecma)script/i;// We have to close these tags to support XHTML (#13200)\n\tvar wrapMap={// Support: IE <=9 only\n\toption:[1,\"<select multiple='multiple'>\",\"</select>\"],// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting <tbody> or other required elements.\n\tthead:[1,\"<table>\",\"</table>\"],col:[2,\"<table><colgroup>\",\"</colgroup></table>\"],tr:[2,\"<table><tbody>\",\"</tbody></table>\"],td:[3,\"<table><tbody><tr>\",\"</tr></tbody></table>\"],_default:[0,\"\",\"\"]};// Support: IE <=9 only\n\twrapMap.optgroup=wrapMap.option;wrapMap.tbody=wrapMap.tfoot=wrapMap.colgroup=wrapMap.caption=wrapMap.thead;wrapMap.th=wrapMap.td;function getAll(context,tag){// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (#15151)\n\tvar ret=typeof context.getElementsByTagName!==\"undefined\"?context.getElementsByTagName(tag||\"*\"):typeof context.querySelectorAll!==\"undefined\"?context.querySelectorAll(tag||\"*\"):[];return tag===undefined||tag&&jQuery.nodeName(context,tag)?jQuery.merge([context],ret):ret;}// Mark scripts as having already been evaluated\n\tfunction setGlobalEval(elems,refElements){var i=0,l=elems.length;for(;i<l;i++){dataPriv.set(elems[i],\"globalEval\",!refElements||dataPriv.get(refElements[i],\"globalEval\"));}}var rhtml=/<|&#?\\w+;/;function buildFragment(elems,context,scripts,selection,ignored){var elem,tmp,tag,wrap,contains,j,fragment=context.createDocumentFragment(),nodes=[],i=0,l=elems.length;for(;i<l;i++){elem=elems[i];if(elem||elem===0){// Add nodes directly\n\tif(jQuery.type(elem)===\"object\"){// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tjQuery.merge(nodes,elem.nodeType?[elem]:elem);// Convert non-html into a text node\n\t}else if(!rhtml.test(elem)){nodes.push(context.createTextNode(elem));// Convert html into DOM nodes\n\t}else{tmp=tmp||fragment.appendChild(context.createElement(\"div\"));// Deserialize a standard representation\n\ttag=(rtagName.exec(elem)||[\"\",\"\"])[1].toLowerCase();wrap=wrapMap[tag]||wrapMap._default;tmp.innerHTML=wrap[1]+jQuery.htmlPrefilter(elem)+wrap[2];// Descend through wrappers to the right content\n\tj=wrap[0];while(j--){tmp=tmp.lastChild;}// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tjQuery.merge(nodes,tmp.childNodes);// Remember the top-level container\n\ttmp=fragment.firstChild;// Ensure the created nodes are orphaned (#12392)\n\ttmp.textContent=\"\";}}}// Remove wrapper from fragment\n\tfragment.textContent=\"\";i=0;while(elem=nodes[i++]){// Skip elements already in the context collection (trac-4087)\n\tif(selection&&jQuery.inArray(elem,selection)>-1){if(ignored){ignored.push(elem);}continue;}contains=jQuery.contains(elem.ownerDocument,elem);// Append to fragment\n\ttmp=getAll(fragment.appendChild(elem),\"script\");// Preserve script evaluation history\n\tif(contains){setGlobalEval(tmp);}// Capture executables\n\tif(scripts){j=0;while(elem=tmp[j++]){if(rscriptType.test(elem.type||\"\")){scripts.push(elem);}}}}return fragment;}(function(){var fragment=document.createDocumentFragment(),div=fragment.appendChild(document.createElement(\"div\")),input=document.createElement(\"input\");// Support: Android 4.0 - 4.3 only\n\t// Check state lost if the name is set (#11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (#14901)\n\tinput.setAttribute(\"type\",\"radio\");input.setAttribute(\"checked\",\"checked\");input.setAttribute(\"name\",\"t\");div.appendChild(input);// Support: Android <=4.1 only\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone=div.cloneNode(true).cloneNode(true).lastChild.checked;// Support: IE <=11 only\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML=\"<textarea>x</textarea>\";support.noCloneChecked=!!div.cloneNode(true).lastChild.defaultValue;})();var documentElement=document.documentElement;var rkeyEvent=/^key/,rmouseEvent=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,rtypenamespace=/^([^.]*)(?:\\.(.+)|)/;function returnTrue(){return true;}function returnFalse(){return false;}// Support: IE <=9 only\n\t// See #13393 for more info\n\tfunction safeActiveElement(){try{return document.activeElement;}catch(err){}}function _on(elem,types,selector,data,fn,one){var origFn,type;// Types can be a map of types/handlers\n\tif((typeof types===\"undefined\"?\"undefined\":_typeof(types))===\"object\"){// ( types-Object, selector, data )\n\tif(typeof selector!==\"string\"){// ( types-Object, data )\n\tdata=data||selector;selector=undefined;}for(type in types){_on(elem,type,selector,data,types[type],one);}return elem;}if(data==null&&fn==null){// ( types, fn )\n\tfn=selector;data=selector=undefined;}else if(fn==null){if(typeof selector===\"string\"){// ( types, selector, fn )\n\tfn=data;data=undefined;}else{// ( types, data, fn )\n\tfn=data;data=selector;selector=undefined;}}if(fn===false){fn=returnFalse;}else if(!fn){return elem;}if(one===1){origFn=fn;fn=function fn(event){// Can use an empty set, since event contains the info\n\tjQuery().off(event);return origFn.apply(this,arguments);};// Use same guid so caller can remove using origFn\n\tfn.guid=origFn.guid||(origFn.guid=jQuery.guid++);}return elem.each(function(){jQuery.event.add(this,types,fn,data,selector);});}/*\n\t * Helper functions for managing events -- not part of the public interface.\n\t * Props to Dean Edwards' addEvent library for many of the ideas.\n\t */jQuery.event={global:{},add:function add(elem,types,handler,data,selector){var handleObjIn,eventHandle,tmp,events,t,handleObj,special,handlers,type,namespaces,origType,elemData=dataPriv.get(elem);// Don't attach events to noData or text/comment nodes (but allow plain objects)\n\tif(!elemData){return;}// Caller can pass in an object of custom data in lieu of the handler\n\tif(handler.handler){handleObjIn=handler;handler=handleObjIn.handler;selector=handleObjIn.selector;}// Ensure that invalid selectors throw exceptions at attach time\n\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\tif(selector){jQuery.find.matchesSelector(documentElement,selector);}// Make sure that the handler has a unique ID, used to find/remove it later\n\tif(!handler.guid){handler.guid=jQuery.guid++;}// Init the element's event structure and main handler, if this is the first\n\tif(!(events=elemData.events)){events=elemData.events={};}if(!(eventHandle=elemData.handle)){eventHandle=elemData.handle=function(e){// Discard the second event of a jQuery.event.trigger() and\n\t// when an event is called after a page has unloaded\n\treturn typeof jQuery!==\"undefined\"&&jQuery.event.triggered!==e.type?jQuery.event.dispatch.apply(elem,arguments):undefined;};}// Handle multiple events separated by a space\n\ttypes=(types||\"\").match(rnotwhite)||[\"\"];t=types.length;while(t--){tmp=rtypenamespace.exec(types[t])||[];type=origType=tmp[1];namespaces=(tmp[2]||\"\").split(\".\").sort();// There *must* be a type, no attaching namespace-only handlers\n\tif(!type){continue;}// If event changes its type, use the special event handlers for the changed type\n\tspecial=jQuery.event.special[type]||{};// If selector defined, determine special event api type, otherwise given type\n\ttype=(selector?special.delegateType:special.bindType)||type;// Update special based on newly reset type\n\tspecial=jQuery.event.special[type]||{};// handleObj is passed to all event handlers\n\thandleObj=jQuery.extend({type:type,origType:origType,data:data,handler:handler,guid:handler.guid,selector:selector,needsContext:selector&&jQuery.expr.match.needsContext.test(selector),namespace:namespaces.join(\".\")},handleObjIn);// Init the event handler queue if we're the first\n\tif(!(handlers=events[type])){handlers=events[type]=[];handlers.delegateCount=0;// Only use addEventListener if the special events handler returns false\n\tif(!special.setup||special.setup.call(elem,data,namespaces,eventHandle)===false){if(elem.addEventListener){elem.addEventListener(type,eventHandle);}}}if(special.add){special.add.call(elem,handleObj);if(!handleObj.handler.guid){handleObj.handler.guid=handler.guid;}}// Add to the element's handler list, delegates in front\n\tif(selector){handlers.splice(handlers.delegateCount++,0,handleObj);}else{handlers.push(handleObj);}// Keep track of which events have ever been used, for event optimization\n\tjQuery.event.global[type]=true;}},// Detach an event or set of events from an element\n\tremove:function remove(elem,types,handler,selector,mappedTypes){var j,origCount,tmp,events,t,handleObj,special,handlers,type,namespaces,origType,elemData=dataPriv.hasData(elem)&&dataPriv.get(elem);if(!elemData||!(events=elemData.events)){return;}// Once for each type.namespace in types; type may be omitted\n\ttypes=(types||\"\").match(rnotwhite)||[\"\"];t=types.length;while(t--){tmp=rtypenamespace.exec(types[t])||[];type=origType=tmp[1];namespaces=(tmp[2]||\"\").split(\".\").sort();// Unbind all events (on this namespace, if provided) for the element\n\tif(!type){for(type in events){jQuery.event.remove(elem,type+types[t],handler,selector,true);}continue;}special=jQuery.event.special[type]||{};type=(selector?special.delegateType:special.bindType)||type;handlers=events[type]||[];tmp=tmp[2]&&new RegExp(\"(^|\\\\.)\"+namespaces.join(\"\\\\.(?:.*\\\\.|)\")+\"(\\\\.|$)\");// Remove matching events\n\torigCount=j=handlers.length;while(j--){handleObj=handlers[j];if((mappedTypes||origType===handleObj.origType)&&(!handler||handler.guid===handleObj.guid)&&(!tmp||tmp.test(handleObj.namespace))&&(!selector||selector===handleObj.selector||selector===\"**\"&&handleObj.selector)){handlers.splice(j,1);if(handleObj.selector){handlers.delegateCount--;}if(special.remove){special.remove.call(elem,handleObj);}}}// Remove generic event handler if we removed something and no more handlers exist\n\t// (avoids potential for endless recursion during removal of special event handlers)\n\tif(origCount&&!handlers.length){if(!special.teardown||special.teardown.call(elem,namespaces,elemData.handle)===false){jQuery.removeEvent(elem,type,elemData.handle);}delete events[type];}}// Remove data and the expando if it's no longer used\n\tif(jQuery.isEmptyObject(events)){dataPriv.remove(elem,\"handle events\");}},dispatch:function dispatch(nativeEvent){// Make a writable jQuery.Event from the native event object\n\tvar event=jQuery.event.fix(nativeEvent);var i,j,ret,matched,handleObj,handlerQueue,args=new Array(arguments.length),handlers=(dataPriv.get(this,\"events\")||{})[event.type]||[],special=jQuery.event.special[event.type]||{};// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\targs[0]=event;for(i=1;i<arguments.length;i++){args[i]=arguments[i];}event.delegateTarget=this;// Call the preDispatch hook for the mapped type, and let it bail if desired\n\tif(special.preDispatch&&special.preDispatch.call(this,event)===false){return;}// Determine handlers\n\thandlerQueue=jQuery.event.handlers.call(this,event,handlers);// Run delegates first; they may want to stop propagation beneath us\n\ti=0;while((matched=handlerQueue[i++])&&!event.isPropagationStopped()){event.currentTarget=matched.elem;j=0;while((handleObj=matched.handlers[j++])&&!event.isImmediatePropagationStopped()){// Triggered event must either 1) have no namespace, or 2) have namespace(s)\n\t// a subset or equal to those in the bound event (both can have no namespace).\n\tif(!event.rnamespace||event.rnamespace.test(handleObj.namespace)){event.handleObj=handleObj;event.data=handleObj.data;ret=((jQuery.event.special[handleObj.origType]||{}).handle||handleObj.handler).apply(matched.elem,args);if(ret!==undefined){if((event.result=ret)===false){event.preventDefault();event.stopPropagation();}}}}}// Call the postDispatch hook for the mapped type\n\tif(special.postDispatch){special.postDispatch.call(this,event);}return event.result;},handlers:function handlers(event,_handlers){var i,matches,sel,handleObj,handlerQueue=[],delegateCount=_handlers.delegateCount,cur=event.target;// Support: IE <=9\n\t// Find delegate handlers\n\t// Black-hole SVG <use> instance trees (#13180)\n\t//\n\t// Support: Firefox <=42\n\t// Avoid non-left-click in FF but don't block IE radio events (#3861, gh-2343)\n\tif(delegateCount&&cur.nodeType&&(event.type!==\"click\"||isNaN(event.button)||event.button<1)){for(;cur!==this;cur=cur.parentNode||this){// Don't check non-elements (#13208)\n\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n\tif(cur.nodeType===1&&(cur.disabled!==true||event.type!==\"click\")){matches=[];for(i=0;i<delegateCount;i++){handleObj=_handlers[i];// Don't conflict with Object.prototype properties (#13203)\n\tsel=handleObj.selector+\" \";if(matches[sel]===undefined){matches[sel]=handleObj.needsContext?jQuery(sel,this).index(cur)>-1:jQuery.find(sel,this,null,[cur]).length;}if(matches[sel]){matches.push(handleObj);}}if(matches.length){handlerQueue.push({elem:cur,handlers:matches});}}}}// Add the remaining (directly-bound) handlers\n\tif(delegateCount<_handlers.length){handlerQueue.push({elem:this,handlers:_handlers.slice(delegateCount)});}return handlerQueue;},addProp:function addProp(name,hook){Object.defineProperty(jQuery.Event.prototype,name,{enumerable:true,configurable:true,get:jQuery.isFunction(hook)?function(){if(this.originalEvent){return hook(this.originalEvent);}}:function(){if(this.originalEvent){return this.originalEvent[name];}},set:function set(value){Object.defineProperty(this,name,{enumerable:true,configurable:true,writable:true,value:value});}});},fix:function fix(originalEvent){return originalEvent[jQuery.expando]?originalEvent:new jQuery.Event(originalEvent);},special:{load:{// Prevent triggered image.load events from bubbling to window.load\n\tnoBubble:true},focus:{// Fire native event if possible so blur/focus sequence is correct\n\ttrigger:function trigger(){if(this!==safeActiveElement()&&this.focus){this.focus();return false;}},delegateType:\"focusin\"},blur:{trigger:function trigger(){if(this===safeActiveElement()&&this.blur){this.blur();return false;}},delegateType:\"focusout\"},click:{// For checkbox, fire native event so checked state will be right\n\ttrigger:function trigger(){if(this.type===\"checkbox\"&&this.click&&jQuery.nodeName(this,\"input\")){this.click();return false;}},// For cross-browser consistency, don't fire native .click() on links\n\t_default:function _default(event){return jQuery.nodeName(event.target,\"a\");}},beforeunload:{postDispatch:function postDispatch(event){// Support: Firefox 20+\n\t// Firefox doesn't alert if the returnValue field is not set.\n\tif(event.result!==undefined&&event.originalEvent){event.originalEvent.returnValue=event.result;}}}}};jQuery.removeEvent=function(elem,type,handle){// This \"if\" is needed for plain objects\n\tif(elem.removeEventListener){elem.removeEventListener(type,handle);}};jQuery.Event=function(src,props){// Allow instantiation without the 'new' keyword\n\tif(!(this instanceof jQuery.Event)){return new jQuery.Event(src,props);}// Event object\n\tif(src&&src.type){this.originalEvent=src;this.type=src.type;// Events bubbling up the document may have been marked as prevented\n\t// by a handler lower down the tree; reflect the correct value.\n\tthis.isDefaultPrevented=src.defaultPrevented||src.defaultPrevented===undefined&&// Support: Android <=2.3 only\n\tsrc.returnValue===false?returnTrue:returnFalse;// Create target properties\n\t// Support: Safari <=6 - 7 only\n\t// Target should not be a text node (#504, #13143)\n\tthis.target=src.target&&src.target.nodeType===3?src.target.parentNode:src.target;this.currentTarget=src.currentTarget;this.relatedTarget=src.relatedTarget;// Event type\n\t}else{this.type=src;}// Put explicitly provided properties onto the event object\n\tif(props){jQuery.extend(this,props);}// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp=src&&src.timeStamp||jQuery.now();// Mark it as fixed\n\tthis[jQuery.expando]=true;};// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n\t// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\n\tjQuery.Event.prototype={constructor:jQuery.Event,isDefaultPrevented:returnFalse,isPropagationStopped:returnFalse,isImmediatePropagationStopped:returnFalse,isSimulated:false,preventDefault:function preventDefault(){var e=this.originalEvent;this.isDefaultPrevented=returnTrue;if(e&&!this.isSimulated){e.preventDefault();}},stopPropagation:function stopPropagation(){var e=this.originalEvent;this.isPropagationStopped=returnTrue;if(e&&!this.isSimulated){e.stopPropagation();}},stopImmediatePropagation:function stopImmediatePropagation(){var e=this.originalEvent;this.isImmediatePropagationStopped=returnTrue;if(e&&!this.isSimulated){e.stopImmediatePropagation();}this.stopPropagation();}};// Includes all common event props including KeyEvent and MouseEvent specific props\n\tjQuery.each({altKey:true,bubbles:true,cancelable:true,changedTouches:true,ctrlKey:true,detail:true,eventPhase:true,metaKey:true,pageX:true,pageY:true,shiftKey:true,view:true,\"char\":true,charCode:true,key:true,keyCode:true,button:true,buttons:true,clientX:true,clientY:true,offsetX:true,offsetY:true,pointerId:true,pointerType:true,screenX:true,screenY:true,targetTouches:true,toElement:true,touches:true,which:function which(event){var button=event.button;// Add which for key events\n\tif(event.which==null&&rkeyEvent.test(event.type)){return event.charCode!=null?event.charCode:event.keyCode;}// Add which for click: 1 === left; 2 === middle; 3 === right\n\tif(!event.which&&button!==undefined&&rmouseEvent.test(event.type)){return button&1?1:button&2?3:button&4?2:0;}return event.which;}},jQuery.event.addProp);// Create mouseenter/leave events using mouseover/out and event-time checks\n\t// so that event delegation works in jQuery.\n\t// Do the same for pointerenter/pointerleave and pointerover/pointerout\n\t//\n\t// Support: Safari 7 only\n\t// Safari sends mouseenter too often; see:\n\t// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n\t// for the description of the bug (it existed in older Chrome versions as well).\n\tjQuery.each({mouseenter:\"mouseover\",mouseleave:\"mouseout\",pointerenter:\"pointerover\",pointerleave:\"pointerout\"},function(orig,fix){jQuery.event.special[orig]={delegateType:fix,bindType:fix,handle:function handle(event){var ret,target=this,related=event.relatedTarget,handleObj=event.handleObj;// For mouseenter/leave call the handler if related is outside the target.\n\t// NB: No relatedTarget if the mouse left/entered the browser window\n\tif(!related||related!==target&&!jQuery.contains(target,related)){event.type=handleObj.origType;ret=handleObj.handler.apply(this,arguments);event.type=fix;}return ret;}};});jQuery.fn.extend({on:function on(types,selector,data,fn){return _on(this,types,selector,data,fn);},one:function one(types,selector,data,fn){return _on(this,types,selector,data,fn,1);},off:function off(types,selector,fn){var handleObj,type;if(types&&types.preventDefault&&types.handleObj){// ( event ) dispatched jQuery.Event\n\thandleObj=types.handleObj;jQuery(types.delegateTarget).off(handleObj.namespace?handleObj.origType+\".\"+handleObj.namespace:handleObj.origType,handleObj.selector,handleObj.handler);return this;}if((typeof types===\"undefined\"?\"undefined\":_typeof(types))===\"object\"){// ( types-object [, selector] )\n\tfor(type in types){this.off(type,selector,types[type]);}return this;}if(selector===false||typeof selector===\"function\"){// ( types [, fn] )\n\tfn=selector;selector=undefined;}if(fn===false){fn=returnFalse;}return this.each(function(){jQuery.event.remove(this,types,fn,selector);});}});var rxhtmlTag=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)[^>]*)\\/>/gi,// Support: IE <=10 - 11, Edge 12 - 13\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml=/<script|<style|<link/i,// checked=\"checked\" or checked\n\trchecked=/checked\\s*(?:[^=]|=\\s*.checked.)/i,rscriptTypeMasked=/^true\\/(.*)/,rcleanScript=/^\\s*<!(?:\\[CDATA\\[|--)|(?:\\]\\]|--)>\\s*$/g;function manipulationTarget(elem,content){if(jQuery.nodeName(elem,\"table\")&&jQuery.nodeName(content.nodeType!==11?content:content.firstChild,\"tr\")){return elem.getElementsByTagName(\"tbody\")[0]||elem;}return elem;}// Replace/restore the type attribute of script elements for safe DOM manipulation\n\tfunction disableScript(elem){elem.type=(elem.getAttribute(\"type\")!==null)+\"/\"+elem.type;return elem;}function restoreScript(elem){var match=rscriptTypeMasked.exec(elem.type);if(match){elem.type=match[1];}else{elem.removeAttribute(\"type\");}return elem;}function cloneCopyEvent(src,dest){var i,l,type,pdataOld,pdataCur,udataOld,udataCur,events;if(dest.nodeType!==1){return;}// 1. Copy private data: events, handlers, etc.\n\tif(dataPriv.hasData(src)){pdataOld=dataPriv.access(src);pdataCur=dataPriv.set(dest,pdataOld);events=pdataOld.events;if(events){delete pdataCur.handle;pdataCur.events={};for(type in events){for(i=0,l=events[type].length;i<l;i++){jQuery.event.add(dest,type,events[type][i]);}}}}// 2. Copy user data\n\tif(dataUser.hasData(src)){udataOld=dataUser.access(src);udataCur=jQuery.extend({},udataOld);dataUser.set(dest,udataCur);}}// Fix IE bugs, see support tests\n\tfunction fixInput(src,dest){var nodeName=dest.nodeName.toLowerCase();// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif(nodeName===\"input\"&&rcheckableType.test(src.type)){dest.checked=src.checked;// Fails to return the selected option to the default selected state when cloning options\n\t}else if(nodeName===\"input\"||nodeName===\"textarea\"){dest.defaultValue=src.defaultValue;}}function domManip(collection,args,callback,ignored){// Flatten any nested arrays\n\targs=concat.apply([],args);var fragment,first,scripts,hasScripts,node,doc,i=0,l=collection.length,iNoClone=l-1,value=args[0],isFunction=jQuery.isFunction(value);// We can't cloneNode fragments that contain checked, in WebKit\n\tif(isFunction||l>1&&typeof value===\"string\"&&!support.checkClone&&rchecked.test(value)){return collection.each(function(index){var self=collection.eq(index);if(isFunction){args[0]=value.call(this,index,self.html());}domManip(self,args,callback,ignored);});}if(l){fragment=buildFragment(args,collection[0].ownerDocument,false,collection,ignored);first=fragment.firstChild;if(fragment.childNodes.length===1){fragment=first;}// Require either new content or an interest in ignored elements to invoke the callback\n\tif(first||ignored){scripts=jQuery.map(getAll(fragment,\"script\"),disableScript);hasScripts=scripts.length;// Use the original fragment for the last item\n\t// instead of the first because it can end up\n\t// being emptied incorrectly in certain situations (#8070).\n\tfor(;i<l;i++){node=fragment;if(i!==iNoClone){node=jQuery.clone(node,true,true);// Keep references to cloned scripts for later restoration\n\tif(hasScripts){// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tjQuery.merge(scripts,getAll(node,\"script\"));}}callback.call(collection[i],node,i);}if(hasScripts){doc=scripts[scripts.length-1].ownerDocument;// Reenable scripts\n\tjQuery.map(scripts,restoreScript);// Evaluate executable scripts on first document insertion\n\tfor(i=0;i<hasScripts;i++){node=scripts[i];if(rscriptType.test(node.type||\"\")&&!dataPriv.access(node,\"globalEval\")&&jQuery.contains(doc,node)){if(node.src){// Optional AJAX dependency, but won't run scripts if not present\n\tif(jQuery._evalUrl){jQuery._evalUrl(node.src);}}else{DOMEval(node.textContent.replace(rcleanScript,\"\"),doc);}}}}}}return collection;}function _remove(elem,selector,keepData){var node,nodes=selector?jQuery.filter(selector,elem):elem,i=0;for(;(node=nodes[i])!=null;i++){if(!keepData&&node.nodeType===1){jQuery.cleanData(getAll(node));}if(node.parentNode){if(keepData&&jQuery.contains(node.ownerDocument,node)){setGlobalEval(getAll(node,\"script\"));}node.parentNode.removeChild(node);}}return elem;}jQuery.extend({htmlPrefilter:function htmlPrefilter(html){return html.replace(rxhtmlTag,\"<$1></$2>\");},clone:function clone(elem,dataAndEvents,deepDataAndEvents){var i,l,srcElements,destElements,clone=elem.cloneNode(true),inPage=jQuery.contains(elem.ownerDocument,elem);// Fix IE cloning issues\n\tif(!support.noCloneChecked&&(elem.nodeType===1||elem.nodeType===11)&&!jQuery.isXMLDoc(elem)){// We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2\n\tdestElements=getAll(clone);srcElements=getAll(elem);for(i=0,l=srcElements.length;i<l;i++){fixInput(srcElements[i],destElements[i]);}}// Copy the events from the original to the clone\n\tif(dataAndEvents){if(deepDataAndEvents){srcElements=srcElements||getAll(elem);destElements=destElements||getAll(clone);for(i=0,l=srcElements.length;i<l;i++){cloneCopyEvent(srcElements[i],destElements[i]);}}else{cloneCopyEvent(elem,clone);}}// Preserve script evaluation history\n\tdestElements=getAll(clone,\"script\");if(destElements.length>0){setGlobalEval(destElements,!inPage&&getAll(elem,\"script\"));}// Return the cloned set\n\treturn clone;},cleanData:function cleanData(elems){var data,elem,type,special=jQuery.event.special,i=0;for(;(elem=elems[i])!==undefined;i++){if(acceptData(elem)){if(data=elem[dataPriv.expando]){if(data.events){for(type in data.events){if(special[type]){jQuery.event.remove(elem,type);// This is a shortcut to avoid jQuery.event.remove's overhead\n\t}else{jQuery.removeEvent(elem,type,data.handle);}}}// Support: Chrome <=35 - 45+\n\t// Assign undefined instead of using delete, see Data#remove\n\telem[dataPriv.expando]=undefined;}if(elem[dataUser.expando]){// Support: Chrome <=35 - 45+\n\t// Assign undefined instead of using delete, see Data#remove\n\telem[dataUser.expando]=undefined;}}}}});jQuery.fn.extend({detach:function detach(selector){return _remove(this,selector,true);},remove:function remove(selector){return _remove(this,selector);},text:function text(value){return access(this,function(value){return value===undefined?jQuery.text(this):this.empty().each(function(){if(this.nodeType===1||this.nodeType===11||this.nodeType===9){this.textContent=value;}});},null,value,arguments.length);},append:function append(){return domManip(this,arguments,function(elem){if(this.nodeType===1||this.nodeType===11||this.nodeType===9){var target=manipulationTarget(this,elem);target.appendChild(elem);}});},prepend:function prepend(){return domManip(this,arguments,function(elem){if(this.nodeType===1||this.nodeType===11||this.nodeType===9){var target=manipulationTarget(this,elem);target.insertBefore(elem,target.firstChild);}});},before:function before(){return domManip(this,arguments,function(elem){if(this.parentNode){this.parentNode.insertBefore(elem,this);}});},after:function after(){return domManip(this,arguments,function(elem){if(this.parentNode){this.parentNode.insertBefore(elem,this.nextSibling);}});},empty:function empty(){var elem,i=0;for(;(elem=this[i])!=null;i++){if(elem.nodeType===1){// Prevent memory leaks\n\tjQuery.cleanData(getAll(elem,false));// Remove any remaining nodes\n\telem.textContent=\"\";}}return this;},clone:function clone(dataAndEvents,deepDataAndEvents){dataAndEvents=dataAndEvents==null?false:dataAndEvents;deepDataAndEvents=deepDataAndEvents==null?dataAndEvents:deepDataAndEvents;return this.map(function(){return jQuery.clone(this,dataAndEvents,deepDataAndEvents);});},html:function html(value){return access(this,function(value){var elem=this[0]||{},i=0,l=this.length;if(value===undefined&&elem.nodeType===1){return elem.innerHTML;}// See if we can take a shortcut and just use innerHTML\n\tif(typeof value===\"string\"&&!rnoInnerhtml.test(value)&&!wrapMap[(rtagName.exec(value)||[\"\",\"\"])[1].toLowerCase()]){value=jQuery.htmlPrefilter(value);try{for(;i<l;i++){elem=this[i]||{};// Remove element nodes and prevent memory leaks\n\tif(elem.nodeType===1){jQuery.cleanData(getAll(elem,false));elem.innerHTML=value;}}elem=0;// If using innerHTML throws an exception, use the fallback method\n\t}catch(e){}}if(elem){this.empty().append(value);}},null,value,arguments.length);},replaceWith:function replaceWith(){var ignored=[];// Make the changes, replacing each non-ignored context element with the new content\n\treturn domManip(this,arguments,function(elem){var parent=this.parentNode;if(jQuery.inArray(this,ignored)<0){jQuery.cleanData(getAll(this));if(parent){parent.replaceChild(elem,this);}}// Force callback invocation\n\t},ignored);}});jQuery.each({appendTo:\"append\",prependTo:\"prepend\",insertBefore:\"before\",insertAfter:\"after\",replaceAll:\"replaceWith\"},function(name,original){jQuery.fn[name]=function(selector){var elems,ret=[],insert=jQuery(selector),last=insert.length-1,i=0;for(;i<=last;i++){elems=i===last?this:this.clone(true);jQuery(insert[i])[original](elems);// Support: Android <=4.0 only, PhantomJS 1 only\n\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\tpush.apply(ret,elems.get());}return this.pushStack(ret);};});var rmargin=/^margin/;var rnumnonpx=new RegExp(\"^(\"+pnum+\")(?!px)[a-z%]+$\",\"i\");var getStyles=function getStyles(elem){// Support: IE <=11 only, Firefox <=30 (#15098, #14150)\n\t// IE throws on elements created in popups\n\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\tvar view=elem.ownerDocument.defaultView;if(!view||!view.opener){view=window;}return view.getComputedStyle(elem);};(function(){// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computeStyleTests(){// This is a singleton, we need to execute it only once\n\tif(!div){return;}div.style.cssText=\"box-sizing:border-box;\"+\"position:relative;display:block;\"+\"margin:auto;border:1px;padding:1px;\"+\"top:1%;width:50%\";div.innerHTML=\"\";documentElement.appendChild(container);var divStyle=window.getComputedStyle(div);pixelPositionVal=divStyle.top!==\"1%\";// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\treliableMarginLeftVal=divStyle.marginLeft===\"2px\";boxSizingReliableVal=divStyle.width===\"4px\";// Support: Android 4.0 - 4.3 only\n\t// Some styles come back with percentage values, even though they shouldn't\n\tdiv.style.marginRight=\"50%\";pixelMarginRightVal=divStyle.marginRight===\"4px\";documentElement.removeChild(container);// Nullify the div so it wouldn't be stored in the memory and\n\t// it will also be a sign that checks already performed\n\tdiv=null;}var pixelPositionVal,boxSizingReliableVal,pixelMarginRightVal,reliableMarginLeftVal,container=document.createElement(\"div\"),div=document.createElement(\"div\");// Finish early in limited (non-browser) environments\n\tif(!div.style){return;}// Support: IE <=9 - 11 only\n\t// Style of cloned element affects source element cloned (#8908)\n\tdiv.style.backgroundClip=\"content-box\";div.cloneNode(true).style.backgroundClip=\"\";support.clearCloneStyle=div.style.backgroundClip===\"content-box\";container.style.cssText=\"border:0;width:8px;height:0;top:0;left:-9999px;\"+\"padding:0;margin-top:1px;position:absolute\";container.appendChild(div);jQuery.extend(support,{pixelPosition:function pixelPosition(){computeStyleTests();return pixelPositionVal;},boxSizingReliable:function boxSizingReliable(){computeStyleTests();return boxSizingReliableVal;},pixelMarginRight:function pixelMarginRight(){computeStyleTests();return pixelMarginRightVal;},reliableMarginLeft:function reliableMarginLeft(){computeStyleTests();return reliableMarginLeftVal;}});})();function curCSS(elem,name,computed){var width,minWidth,maxWidth,ret,style=elem.style;computed=computed||getStyles(elem);// Support: IE <=9 only\n\t// getPropertyValue is only needed for .css('filter') (#12537)\n\tif(computed){ret=computed.getPropertyValue(name)||computed[name];if(ret===\"\"&&!jQuery.contains(elem.ownerDocument,elem)){ret=jQuery.style(elem,name);}// A tribute to the \"awesome hack by Dean Edwards\"\n\t// Android Browser returns percentage for some values,\n\t// but width seems to be reliably pixels.\n\t// This is against the CSSOM draft spec:\n\t// https://drafts.csswg.org/cssom/#resolved-values\n\tif(!support.pixelMarginRight()&&rnumnonpx.test(ret)&&rmargin.test(name)){// Remember the original values\n\twidth=style.width;minWidth=style.minWidth;maxWidth=style.maxWidth;// Put in the new values to get a computed value out\n\tstyle.minWidth=style.maxWidth=style.width=ret;ret=computed.width;// Revert the changed values\n\tstyle.width=width;style.minWidth=minWidth;style.maxWidth=maxWidth;}}return ret!==undefined?// Support: IE <=9 - 11 only\n\t// IE returns zIndex value as an integer.\n\tret+\"\":ret;}function addGetHookIf(conditionFn,hookFn){// Define the hook, we'll check on the first run if it's really needed.\n\treturn{get:function get(){if(conditionFn()){// Hook not needed (or it's not possible to use it due\n\t// to missing dependency), remove it.\n\tdelete this.get;return;}// Hook needed; redefine it so that the support test is not executed again.\n\treturn(this.get=hookFn).apply(this,arguments);}};}var// Swappable if display is none or starts with table\n\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap=/^(none|table(?!-c[ea]).+)/,cssShow={position:\"absolute\",visibility:\"hidden\",display:\"block\"},cssNormalTransform={letterSpacing:\"0\",fontWeight:\"400\"},cssPrefixes=[\"Webkit\",\"Moz\",\"ms\"],emptyStyle=document.createElement(\"div\").style;// Return a css property mapped to a potentially vendor prefixed property\n\tfunction vendorPropName(name){// Shortcut for names that are not vendor prefixed\n\tif(name in emptyStyle){return name;}// Check for vendor prefixed names\n\tvar capName=name[0].toUpperCase()+name.slice(1),i=cssPrefixes.length;while(i--){name=cssPrefixes[i]+capName;if(name in emptyStyle){return name;}}}function setPositiveNumber(elem,value,subtract){// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches=rcssNum.exec(value);return matches?// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\tMath.max(0,matches[2]-(subtract||0))+(matches[3]||\"px\"):value;}function augmentWidthOrHeight(elem,name,extra,isBorderBox,styles){var i=extra===(isBorderBox?\"border\":\"content\")?// If we already have the right measurement, avoid augmentation\n\t4:// Otherwise initialize for horizontal or vertical properties\n\tname===\"width\"?1:0,val=0;for(;i<4;i+=2){// Both box models exclude margin, so add it if we want it\n\tif(extra===\"margin\"){val+=jQuery.css(elem,extra+cssExpand[i],true,styles);}if(isBorderBox){// border-box includes padding, so remove it if we want content\n\tif(extra===\"content\"){val-=jQuery.css(elem,\"padding\"+cssExpand[i],true,styles);}// At this point, extra isn't border nor margin, so remove border\n\tif(extra!==\"margin\"){val-=jQuery.css(elem,\"border\"+cssExpand[i]+\"Width\",true,styles);}}else{// At this point, extra isn't content, so add padding\n\tval+=jQuery.css(elem,\"padding\"+cssExpand[i],true,styles);// At this point, extra isn't content nor padding, so add border\n\tif(extra!==\"padding\"){val+=jQuery.css(elem,\"border\"+cssExpand[i]+\"Width\",true,styles);}}}return val;}function getWidthOrHeight(elem,name,extra){// Start with offset property, which is equivalent to the border-box value\n\tvar val,valueIsBorderBox=true,styles=getStyles(elem),isBorderBox=jQuery.css(elem,\"boxSizing\",false,styles)===\"border-box\";// Support: IE <=11 only\n\t// Running getBoundingClientRect on a disconnected node\n\t// in IE throws an error.\n\tif(elem.getClientRects().length){val=elem.getBoundingClientRect()[name];}// Some non-html elements return undefined for offsetWidth, so check for null/undefined\n\t// svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285\n\t// MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668\n\tif(val<=0||val==null){// Fall back to computed then uncomputed css if necessary\n\tval=curCSS(elem,name,styles);if(val<0||val==null){val=elem.style[name];}// Computed unit is not pixels. Stop here and return.\n\tif(rnumnonpx.test(val)){return val;}// Check for style in case a browser which returns unreliable values\n\t// for getComputedStyle silently falls back to the reliable elem.style\n\tvalueIsBorderBox=isBorderBox&&(support.boxSizingReliable()||val===elem.style[name]);// Normalize \"\", auto, and prepare for extra\n\tval=parseFloat(val)||0;}// Use the active box-sizing model to add/subtract irrelevant styles\n\treturn val+augmentWidthOrHeight(elem,name,extra||(isBorderBox?\"border\":\"content\"),valueIsBorderBox,styles)+\"px\";}jQuery.extend({// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks:{opacity:{get:function get(elem,computed){if(computed){// We should always get a number back from opacity\n\tvar ret=curCSS(elem,\"opacity\");return ret===\"\"?\"1\":ret;}}}},// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber:{\"animationIterationCount\":true,\"columnCount\":true,\"fillOpacity\":true,\"flexGrow\":true,\"flexShrink\":true,\"fontWeight\":true,\"lineHeight\":true,\"opacity\":true,\"order\":true,\"orphans\":true,\"widows\":true,\"zIndex\":true,\"zoom\":true},// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps:{\"float\":\"cssFloat\"},// Get and set the style property on a DOM Node\n\tstyle:function style(elem,name,value,extra){// Don't set styles on text and comment nodes\n\tif(!elem||elem.nodeType===3||elem.nodeType===8||!elem.style){return;}// Make sure that we're working with the right name\n\tvar ret,type,hooks,origName=jQuery.camelCase(name),style=elem.style;name=jQuery.cssProps[origName]||(jQuery.cssProps[origName]=vendorPropName(origName)||origName);// Gets hook for the prefixed version, then unprefixed version\n\thooks=jQuery.cssHooks[name]||jQuery.cssHooks[origName];// Check if we're setting a value\n\tif(value!==undefined){type=typeof value===\"undefined\"?\"undefined\":_typeof(value);// Convert \"+=\" or \"-=\" to relative numbers (#7345)\n\tif(type===\"string\"&&(ret=rcssNum.exec(value))&&ret[1]){value=adjustCSS(elem,name,ret);// Fixes bug #9237\n\ttype=\"number\";}// Make sure that null and NaN values aren't set (#7116)\n\tif(value==null||value!==value){return;}// If a number was passed in, add the unit (except for certain CSS properties)\n\tif(type===\"number\"){value+=ret&&ret[3]||(jQuery.cssNumber[origName]?\"\":\"px\");}// background-* props affect original clone's values\n\tif(!support.clearCloneStyle&&value===\"\"&&name.indexOf(\"background\")===0){style[name]=\"inherit\";}// If a hook was provided, use that value, otherwise just set the specified value\n\tif(!hooks||!(\"set\"in hooks)||(value=hooks.set(elem,value,extra))!==undefined){style[name]=value;}}else{// If a hook was provided get the non-computed value from there\n\tif(hooks&&\"get\"in hooks&&(ret=hooks.get(elem,false,extra))!==undefined){return ret;}// Otherwise just get the value from the style object\n\treturn style[name];}},css:function css(elem,name,extra,styles){var val,num,hooks,origName=jQuery.camelCase(name);// Make sure that we're working with the right name\n\tname=jQuery.cssProps[origName]||(jQuery.cssProps[origName]=vendorPropName(origName)||origName);// Try prefixed name followed by the unprefixed name\n\thooks=jQuery.cssHooks[name]||jQuery.cssHooks[origName];// If a hook was provided get the computed value from there\n\tif(hooks&&\"get\"in hooks){val=hooks.get(elem,true,extra);}// Otherwise, if a way to get the computed value exists, use that\n\tif(val===undefined){val=curCSS(elem,name,styles);}// Convert \"normal\" to computed value\n\tif(val===\"normal\"&&name in cssNormalTransform){val=cssNormalTransform[name];}// Make numeric if forced or a qualifier was provided and val looks numeric\n\tif(extra===\"\"||extra){num=parseFloat(val);return extra===true||isFinite(num)?num||0:val;}return val;}});jQuery.each([\"height\",\"width\"],function(i,name){jQuery.cssHooks[name]={get:function get(elem,computed,extra){if(computed){// Certain elements can have dimension info if we invisibly show them\n\t// but it must have a current display style that would benefit\n\treturn rdisplayswap.test(jQuery.css(elem,\"display\"))&&(// Support: Safari 8+\n\t// Table columns in Safari have non-zero offsetWidth & zero\n\t// getBoundingClientRect().width unless display is changed.\n\t// Support: IE <=11 only\n\t// Running getBoundingClientRect on a disconnected node\n\t// in IE throws an error.\n\t!elem.getClientRects().length||!elem.getBoundingClientRect().width)?swap(elem,cssShow,function(){return getWidthOrHeight(elem,name,extra);}):getWidthOrHeight(elem,name,extra);}},set:function set(elem,value,extra){var matches,styles=extra&&getStyles(elem),subtract=extra&&augmentWidthOrHeight(elem,name,extra,jQuery.css(elem,\"boxSizing\",false,styles)===\"border-box\",styles);// Convert to pixels if value adjustment is needed\n\tif(subtract&&(matches=rcssNum.exec(value))&&(matches[3]||\"px\")!==\"px\"){elem.style[name]=value;value=jQuery.css(elem,name);}return setPositiveNumber(elem,value,subtract);}};});jQuery.cssHooks.marginLeft=addGetHookIf(support.reliableMarginLeft,function(elem,computed){if(computed){return(parseFloat(curCSS(elem,\"marginLeft\"))||elem.getBoundingClientRect().left-swap(elem,{marginLeft:0},function(){return elem.getBoundingClientRect().left;}))+\"px\";}});// These hooks are used by animate to expand properties\n\tjQuery.each({margin:\"\",padding:\"\",border:\"Width\"},function(prefix,suffix){jQuery.cssHooks[prefix+suffix]={expand:function expand(value){var i=0,expanded={},// Assumes a single number if not a string\n\tparts=typeof value===\"string\"?value.split(\" \"):[value];for(;i<4;i++){expanded[prefix+cssExpand[i]+suffix]=parts[i]||parts[i-2]||parts[0];}return expanded;}};if(!rmargin.test(prefix)){jQuery.cssHooks[prefix+suffix].set=setPositiveNumber;}});jQuery.fn.extend({css:function css(name,value){return access(this,function(elem,name,value){var styles,len,map={},i=0;if(jQuery.isArray(name)){styles=getStyles(elem);len=name.length;for(;i<len;i++){map[name[i]]=jQuery.css(elem,name[i],false,styles);}return map;}return value!==undefined?jQuery.style(elem,name,value):jQuery.css(elem,name);},name,value,arguments.length>1);}});function Tween(elem,options,prop,end,easing){return new Tween.prototype.init(elem,options,prop,end,easing);}jQuery.Tween=Tween;Tween.prototype={constructor:Tween,init:function init(elem,options,prop,end,easing,unit){this.elem=elem;this.prop=prop;this.easing=easing||jQuery.easing._default;this.options=options;this.start=this.now=this.cur();this.end=end;this.unit=unit||(jQuery.cssNumber[prop]?\"\":\"px\");},cur:function cur(){var hooks=Tween.propHooks[this.prop];return hooks&&hooks.get?hooks.get(this):Tween.propHooks._default.get(this);},run:function run(percent){var eased,hooks=Tween.propHooks[this.prop];if(this.options.duration){this.pos=eased=jQuery.easing[this.easing](percent,this.options.duration*percent,0,1,this.options.duration);}else{this.pos=eased=percent;}this.now=(this.end-this.start)*eased+this.start;if(this.options.step){this.options.step.call(this.elem,this.now,this);}if(hooks&&hooks.set){hooks.set(this);}else{Tween.propHooks._default.set(this);}return this;}};Tween.prototype.init.prototype=Tween.prototype;Tween.propHooks={_default:{get:function get(tween){var result;// Use a property on the element directly when it is not a DOM element,\n\t// or when there is no matching style property that exists.\n\tif(tween.elem.nodeType!==1||tween.elem[tween.prop]!=null&&tween.elem.style[tween.prop]==null){return tween.elem[tween.prop];}// Passing an empty string as a 3rd parameter to .css will automatically\n\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t// Simple values such as \"10px\" are parsed to Float;\n\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\tresult=jQuery.css(tween.elem,tween.prop,\"\");// Empty strings, null, undefined and \"auto\" are converted to 0.\n\treturn!result||result===\"auto\"?0:result;},set:function set(tween){// Use step hook for back compat.\n\t// Use cssHook if its there.\n\t// Use .style if available and use plain properties where available.\n\tif(jQuery.fx.step[tween.prop]){jQuery.fx.step[tween.prop](tween);}else if(tween.elem.nodeType===1&&(tween.elem.style[jQuery.cssProps[tween.prop]]!=null||jQuery.cssHooks[tween.prop])){jQuery.style(tween.elem,tween.prop,tween.now+tween.unit);}else{tween.elem[tween.prop]=tween.now;}}}};// Support: IE <=9 only\n\t// Panic based approach to setting things on disconnected nodes\n\tTween.propHooks.scrollTop=Tween.propHooks.scrollLeft={set:function set(tween){if(tween.elem.nodeType&&tween.elem.parentNode){tween.elem[tween.prop]=tween.now;}}};jQuery.easing={linear:function linear(p){return p;},swing:function swing(p){return 0.5-Math.cos(p*Math.PI)/2;},_default:\"swing\"};jQuery.fx=Tween.prototype.init;// Back compat <1.8 extension point\n\tjQuery.fx.step={};var fxNow,timerId,rfxtypes=/^(?:toggle|show|hide)$/,rrun=/queueHooks$/;function raf(){if(timerId){window.requestAnimationFrame(raf);jQuery.fx.tick();}}// Animations created synchronously will run synchronously\n\tfunction createFxNow(){window.setTimeout(function(){fxNow=undefined;});return fxNow=jQuery.now();}// Generate parameters to create a standard animation\n\tfunction genFx(type,includeWidth){var which,i=0,attrs={height:type};// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth=includeWidth?1:0;for(;i<4;i+=2-includeWidth){which=cssExpand[i];attrs[\"margin\"+which]=attrs[\"padding\"+which]=type;}if(includeWidth){attrs.opacity=attrs.width=type;}return attrs;}function createTween(value,prop,animation){var tween,collection=(Animation.tweeners[prop]||[]).concat(Animation.tweeners[\"*\"]),index=0,length=collection.length;for(;index<length;index++){if(tween=collection[index].call(animation,prop,value)){// We're done with this property\n\treturn tween;}}}function defaultPrefilter(elem,props,opts){/* jshint validthis: true */var prop,value,toggle,hooks,oldfire,propTween,restoreDisplay,display,isBox=\"width\"in props||\"height\"in props,anim=this,orig={},style=elem.style,hidden=elem.nodeType&&isHiddenWithinTree(elem),dataShow=dataPriv.get(elem,\"fxshow\");// Queue-skipping animations hijack the fx hooks\n\tif(!opts.queue){hooks=jQuery._queueHooks(elem,\"fx\");if(hooks.unqueued==null){hooks.unqueued=0;oldfire=hooks.empty.fire;hooks.empty.fire=function(){if(!hooks.unqueued){oldfire();}};}hooks.unqueued++;anim.always(function(){// Ensure the complete handler is called before this completes\n\tanim.always(function(){hooks.unqueued--;if(!jQuery.queue(elem,\"fx\").length){hooks.empty.fire();}});});}// Detect show/hide animations\n\tfor(prop in props){value=props[prop];if(rfxtypes.test(value)){delete props[prop];toggle=toggle||value===\"toggle\";if(value===(hidden?\"hide\":\"show\")){// Pretend to be hidden if this is a \"show\" and\n\t// there is still data from a stopped show/hide\n\tif(value===\"show\"&&dataShow&&dataShow[prop]!==undefined){hidden=true;// Ignore all other no-op show/hide data\n\t}else{continue;}}orig[prop]=dataShow&&dataShow[prop]||jQuery.style(elem,prop);}}// Bail out if this is a no-op like .hide().hide()\n\tpropTween=!jQuery.isEmptyObject(props);if(!propTween&&jQuery.isEmptyObject(orig)){return;}// Restrict \"overflow\" and \"display\" styles during box animations\n\tif(isBox&&elem.nodeType===1){// Support: IE <=9 - 11, Edge 12 - 13\n\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t// from identically-valued overflowX and overflowY\n\topts.overflow=[style.overflow,style.overflowX,style.overflowY];// Identify a display type, preferring old show/hide data over the CSS cascade\n\trestoreDisplay=dataShow&&dataShow.display;if(restoreDisplay==null){restoreDisplay=dataPriv.get(elem,\"display\");}display=jQuery.css(elem,\"display\");if(display===\"none\"){if(restoreDisplay){display=restoreDisplay;}else{// Get nonempty value(s) by temporarily forcing visibility\n\tshowHide([elem],true);restoreDisplay=elem.style.display||restoreDisplay;display=jQuery.css(elem,\"display\");showHide([elem]);}}// Animate inline elements as inline-block\n\tif(display===\"inline\"||display===\"inline-block\"&&restoreDisplay!=null){if(jQuery.css(elem,\"float\")===\"none\"){// Restore the original display value at the end of pure show/hide animations\n\tif(!propTween){anim.done(function(){style.display=restoreDisplay;});if(restoreDisplay==null){display=style.display;restoreDisplay=display===\"none\"?\"\":display;}}style.display=\"inline-block\";}}}if(opts.overflow){style.overflow=\"hidden\";anim.always(function(){style.overflow=opts.overflow[0];style.overflowX=opts.overflow[1];style.overflowY=opts.overflow[2];});}// Implement show/hide animations\n\tpropTween=false;for(prop in orig){// General show/hide setup for this element animation\n\tif(!propTween){if(dataShow){if(\"hidden\"in dataShow){hidden=dataShow.hidden;}}else{dataShow=dataPriv.access(elem,\"fxshow\",{display:restoreDisplay});}// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\tif(toggle){dataShow.hidden=!hidden;}// Show elements before animating them\n\tif(hidden){showHide([elem],true);}/* jshint -W083 */anim.done(function(){// The final step of a \"hide\" animation is actually hiding the element\n\tif(!hidden){showHide([elem]);}dataPriv.remove(elem,\"fxshow\");for(prop in orig){jQuery.style(elem,prop,orig[prop]);}});}// Per-property setup\n\tpropTween=createTween(hidden?dataShow[prop]:0,prop,anim);if(!(prop in dataShow)){dataShow[prop]=propTween.start;if(hidden){propTween.end=propTween.start;propTween.start=0;}}}}function propFilter(props,specialEasing){var index,name,easing,value,hooks;// camelCase, specialEasing and expand cssHook pass\n\tfor(index in props){name=jQuery.camelCase(index);easing=specialEasing[name];value=props[index];if(jQuery.isArray(value)){easing=value[1];value=props[index]=value[0];}if(index!==name){props[name]=value;delete props[index];}hooks=jQuery.cssHooks[name];if(hooks&&\"expand\"in hooks){value=hooks.expand(value);delete props[name];// Not quite $.extend, this won't overwrite existing keys.\n\t// Reusing 'index' because we have the correct \"name\"\n\tfor(index in value){if(!(index in props)){props[index]=value[index];specialEasing[index]=easing;}}}else{specialEasing[name]=easing;}}}function Animation(elem,properties,options){var result,stopped,index=0,length=Animation.prefilters.length,deferred=jQuery.Deferred().always(function(){// Don't match elem in the :animated selector\n\tdelete tick.elem;}),tick=function tick(){if(stopped){return false;}var currentTime=fxNow||createFxNow(),remaining=Math.max(0,animation.startTime+animation.duration-currentTime),// Support: Android 2.3 only\n\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)\n\ttemp=remaining/animation.duration||0,percent=1-temp,index=0,length=animation.tweens.length;for(;index<length;index++){animation.tweens[index].run(percent);}deferred.notifyWith(elem,[animation,percent,remaining]);if(percent<1&&length){return remaining;}else{deferred.resolveWith(elem,[animation]);return false;}},animation=deferred.promise({elem:elem,props:jQuery.extend({},properties),opts:jQuery.extend(true,{specialEasing:{},easing:jQuery.easing._default},options),originalProperties:properties,originalOptions:options,startTime:fxNow||createFxNow(),duration:options.duration,tweens:[],createTween:function createTween(prop,end){var tween=jQuery.Tween(elem,animation.opts,prop,end,animation.opts.specialEasing[prop]||animation.opts.easing);animation.tweens.push(tween);return tween;},stop:function stop(gotoEnd){var index=0,// If we are going to the end, we want to run all the tweens\n\t// otherwise we skip this part\n\tlength=gotoEnd?animation.tweens.length:0;if(stopped){return this;}stopped=true;for(;index<length;index++){animation.tweens[index].run(1);}// Resolve when we played the last frame; otherwise, reject\n\tif(gotoEnd){deferred.notifyWith(elem,[animation,1,0]);deferred.resolveWith(elem,[animation,gotoEnd]);}else{deferred.rejectWith(elem,[animation,gotoEnd]);}return this;}}),props=animation.props;propFilter(props,animation.opts.specialEasing);for(;index<length;index++){result=Animation.prefilters[index].call(animation,elem,props,animation.opts);if(result){if(jQuery.isFunction(result.stop)){jQuery._queueHooks(animation.elem,animation.opts.queue).stop=jQuery.proxy(result.stop,result);}return result;}}jQuery.map(props,createTween,animation);if(jQuery.isFunction(animation.opts.start)){animation.opts.start.call(elem,animation);}jQuery.fx.timer(jQuery.extend(tick,{elem:elem,anim:animation,queue:animation.opts.queue}));// attach callbacks from options\n\treturn animation.progress(animation.opts.progress).done(animation.opts.done,animation.opts.complete).fail(animation.opts.fail).always(animation.opts.always);}jQuery.Animation=jQuery.extend(Animation,{tweeners:{\"*\":[function(prop,value){var tween=this.createTween(prop,value);adjustCSS(tween.elem,prop,rcssNum.exec(value),tween);return tween;}]},tweener:function tweener(props,callback){if(jQuery.isFunction(props)){callback=props;props=[\"*\"];}else{props=props.match(rnotwhite);}var prop,index=0,length=props.length;for(;index<length;index++){prop=props[index];Animation.tweeners[prop]=Animation.tweeners[prop]||[];Animation.tweeners[prop].unshift(callback);}},prefilters:[defaultPrefilter],prefilter:function prefilter(callback,prepend){if(prepend){Animation.prefilters.unshift(callback);}else{Animation.prefilters.push(callback);}}});jQuery.speed=function(speed,easing,fn){var opt=speed&&(typeof speed===\"undefined\"?\"undefined\":_typeof(speed))===\"object\"?jQuery.extend({},speed):{complete:fn||!fn&&easing||jQuery.isFunction(speed)&&speed,duration:speed,easing:fn&&easing||easing&&!jQuery.isFunction(easing)&&easing};// Go to the end state if fx are off or if document is hidden\n\tif(jQuery.fx.off||document.hidden){opt.duration=0;}else{opt.duration=typeof opt.duration===\"number\"?opt.duration:opt.duration in jQuery.fx.speeds?jQuery.fx.speeds[opt.duration]:jQuery.fx.speeds._default;}// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif(opt.queue==null||opt.queue===true){opt.queue=\"fx\";}// Queueing\n\topt.old=opt.complete;opt.complete=function(){if(jQuery.isFunction(opt.old)){opt.old.call(this);}if(opt.queue){jQuery.dequeue(this,opt.queue);}};return opt;};jQuery.fn.extend({fadeTo:function fadeTo(speed,to,easing,callback){// Show any hidden elements after setting opacity to 0\n\treturn this.filter(isHiddenWithinTree).css(\"opacity\",0).show()// Animate to the value specified\n\t.end().animate({opacity:to},speed,easing,callback);},animate:function animate(prop,speed,easing,callback){var empty=jQuery.isEmptyObject(prop),optall=jQuery.speed(speed,easing,callback),doAnimation=function doAnimation(){// Operate on a copy of prop so per-property easing won't be lost\n\tvar anim=Animation(this,jQuery.extend({},prop),optall);// Empty animations, or finishing resolves immediately\n\tif(empty||dataPriv.get(this,\"finish\")){anim.stop(true);}};doAnimation.finish=doAnimation;return empty||optall.queue===false?this.each(doAnimation):this.queue(optall.queue,doAnimation);},stop:function stop(type,clearQueue,gotoEnd){var stopQueue=function stopQueue(hooks){var stop=hooks.stop;delete hooks.stop;stop(gotoEnd);};if(typeof type!==\"string\"){gotoEnd=clearQueue;clearQueue=type;type=undefined;}if(clearQueue&&type!==false){this.queue(type||\"fx\",[]);}return this.each(function(){var dequeue=true,index=type!=null&&type+\"queueHooks\",timers=jQuery.timers,data=dataPriv.get(this);if(index){if(data[index]&&data[index].stop){stopQueue(data[index]);}}else{for(index in data){if(data[index]&&data[index].stop&&rrun.test(index)){stopQueue(data[index]);}}}for(index=timers.length;index--;){if(timers[index].elem===this&&(type==null||timers[index].queue===type)){timers[index].anim.stop(gotoEnd);dequeue=false;timers.splice(index,1);}}// Start the next in the queue if the last step wasn't forced.\n\t// Timers currently will call their complete callbacks, which\n\t// will dequeue but only if they were gotoEnd.\n\tif(dequeue||!gotoEnd){jQuery.dequeue(this,type);}});},finish:function finish(type){if(type!==false){type=type||\"fx\";}return this.each(function(){var index,data=dataPriv.get(this),queue=data[type+\"queue\"],hooks=data[type+\"queueHooks\"],timers=jQuery.timers,length=queue?queue.length:0;// Enable finishing flag on private data\n\tdata.finish=true;// Empty the queue first\n\tjQuery.queue(this,type,[]);if(hooks&&hooks.stop){hooks.stop.call(this,true);}// Look for any active animations, and finish them\n\tfor(index=timers.length;index--;){if(timers[index].elem===this&&timers[index].queue===type){timers[index].anim.stop(true);timers.splice(index,1);}}// Look for any animations in the old queue and finish them\n\tfor(index=0;index<length;index++){if(queue[index]&&queue[index].finish){queue[index].finish.call(this);}}// Turn off finishing flag\n\tdelete data.finish;});}});jQuery.each([\"toggle\",\"show\",\"hide\"],function(i,name){var cssFn=jQuery.fn[name];jQuery.fn[name]=function(speed,easing,callback){return speed==null||typeof speed===\"boolean\"?cssFn.apply(this,arguments):this.animate(genFx(name,true),speed,easing,callback);};});// Generate shortcuts for custom animations\n\tjQuery.each({slideDown:genFx(\"show\"),slideUp:genFx(\"hide\"),slideToggle:genFx(\"toggle\"),fadeIn:{opacity:\"show\"},fadeOut:{opacity:\"hide\"},fadeToggle:{opacity:\"toggle\"}},function(name,props){jQuery.fn[name]=function(speed,easing,callback){return this.animate(props,speed,easing,callback);};});jQuery.timers=[];jQuery.fx.tick=function(){var timer,i=0,timers=jQuery.timers;fxNow=jQuery.now();for(;i<timers.length;i++){timer=timers[i];// Checks the timer has not already been removed\n\tif(!timer()&&timers[i]===timer){timers.splice(i--,1);}}if(!timers.length){jQuery.fx.stop();}fxNow=undefined;};jQuery.fx.timer=function(timer){jQuery.timers.push(timer);if(timer()){jQuery.fx.start();}else{jQuery.timers.pop();}};jQuery.fx.interval=13;jQuery.fx.start=function(){if(!timerId){timerId=window.requestAnimationFrame?window.requestAnimationFrame(raf):window.setInterval(jQuery.fx.tick,jQuery.fx.interval);}};jQuery.fx.stop=function(){if(window.cancelAnimationFrame){window.cancelAnimationFrame(timerId);}else{window.clearInterval(timerId);}timerId=null;};jQuery.fx.speeds={slow:600,fast:200,// Default speed\n\t_default:400};// Based off of the plugin by Clint Helfers, with permission.\n\t// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/\n\tjQuery.fn.delay=function(time,type){time=jQuery.fx?jQuery.fx.speeds[time]||time:time;type=type||\"fx\";return this.queue(type,function(next,hooks){var timeout=window.setTimeout(next,time);hooks.stop=function(){window.clearTimeout(timeout);};});};(function(){var input=document.createElement(\"input\"),select=document.createElement(\"select\"),opt=select.appendChild(document.createElement(\"option\"));input.type=\"checkbox\";// Support: Android <=4.3 only\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn=input.value!==\"\";// Support: IE <=11 only\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected=opt.selected;// Support: IE <=11 only\n\t// An input loses its value after becoming a radio\n\tinput=document.createElement(\"input\");input.value=\"t\";input.type=\"radio\";support.radioValue=input.value===\"t\";})();var boolHook,attrHandle=jQuery.expr.attrHandle;jQuery.fn.extend({attr:function attr(name,value){return access(this,jQuery.attr,name,value,arguments.length>1);},removeAttr:function removeAttr(name){return this.each(function(){jQuery.removeAttr(this,name);});}});jQuery.extend({attr:function attr(elem,name,value){var ret,hooks,nType=elem.nodeType;// Don't get/set attributes on text, comment and attribute nodes\n\tif(nType===3||nType===8||nType===2){return;}// Fallback to prop when attributes are not supported\n\tif(typeof elem.getAttribute===\"undefined\"){return jQuery.prop(elem,name,value);}// Attribute hooks are determined by the lowercase version\n\t// Grab necessary hook if one is defined\n\tif(nType!==1||!jQuery.isXMLDoc(elem)){hooks=jQuery.attrHooks[name.toLowerCase()]||(jQuery.expr.match.bool.test(name)?boolHook:undefined);}if(value!==undefined){if(value===null){jQuery.removeAttr(elem,name);return;}if(hooks&&\"set\"in hooks&&(ret=hooks.set(elem,value,name))!==undefined){return ret;}elem.setAttribute(name,value+\"\");return value;}if(hooks&&\"get\"in hooks&&(ret=hooks.get(elem,name))!==null){return ret;}ret=jQuery.find.attr(elem,name);// Non-existent attributes return null, we normalize to undefined\n\treturn ret==null?undefined:ret;},attrHooks:{type:{set:function set(elem,value){if(!support.radioValue&&value===\"radio\"&&jQuery.nodeName(elem,\"input\")){var val=elem.value;elem.setAttribute(\"type\",value);if(val){elem.value=val;}return value;}}}},removeAttr:function removeAttr(elem,value){var name,i=0,attrNames=value&&value.match(rnotwhite);if(attrNames&&elem.nodeType===1){while(name=attrNames[i++]){elem.removeAttribute(name);}}}});// Hooks for boolean attributes\n\tboolHook={set:function set(elem,value,name){if(value===false){// Remove boolean attributes when set to false\n\tjQuery.removeAttr(elem,name);}else{elem.setAttribute(name,name);}return name;}};jQuery.each(jQuery.expr.match.bool.source.match(/\\w+/g),function(i,name){var getter=attrHandle[name]||jQuery.find.attr;attrHandle[name]=function(elem,name,isXML){var ret,handle,lowercaseName=name.toLowerCase();if(!isXML){// Avoid an infinite loop by temporarily removing this function from the getter\n\thandle=attrHandle[lowercaseName];attrHandle[lowercaseName]=ret;ret=getter(elem,name,isXML)!=null?lowercaseName:null;attrHandle[lowercaseName]=handle;}return ret;};});var rfocusable=/^(?:input|select|textarea|button)$/i,rclickable=/^(?:a|area)$/i;jQuery.fn.extend({prop:function prop(name,value){return access(this,jQuery.prop,name,value,arguments.length>1);},removeProp:function removeProp(name){return this.each(function(){delete this[jQuery.propFix[name]||name];});}});jQuery.extend({prop:function prop(elem,name,value){var ret,hooks,nType=elem.nodeType;// Don't get/set properties on text, comment and attribute nodes\n\tif(nType===3||nType===8||nType===2){return;}if(nType!==1||!jQuery.isXMLDoc(elem)){// Fix name and attach hooks\n\tname=jQuery.propFix[name]||name;hooks=jQuery.propHooks[name];}if(value!==undefined){if(hooks&&\"set\"in hooks&&(ret=hooks.set(elem,value,name))!==undefined){return ret;}return elem[name]=value;}if(hooks&&\"get\"in hooks&&(ret=hooks.get(elem,name))!==null){return ret;}return elem[name];},propHooks:{tabIndex:{get:function get(elem){// Support: IE <=9 - 11 only\n\t// elem.tabIndex doesn't always return the\n\t// correct value when it hasn't been explicitly set\n\t// https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t// Use proper attribute retrieval(#12072)\n\tvar tabindex=jQuery.find.attr(elem,\"tabindex\");return tabindex?parseInt(tabindex,10):rfocusable.test(elem.nodeName)||rclickable.test(elem.nodeName)&&elem.href?0:-1;}}},propFix:{\"for\":\"htmlFor\",\"class\":\"className\"}});// Support: IE <=11 only\n\t// Accessing the selectedIndex property\n\t// forces the browser to respect setting selected\n\t// on the option\n\t// The getter ensures a default option is selected\n\t// when in an optgroup\n\tif(!support.optSelected){jQuery.propHooks.selected={get:function get(elem){var parent=elem.parentNode;if(parent&&parent.parentNode){parent.parentNode.selectedIndex;}return null;},set:function set(elem){var parent=elem.parentNode;if(parent){parent.selectedIndex;if(parent.parentNode){parent.parentNode.selectedIndex;}}}};}jQuery.each([\"tabIndex\",\"readOnly\",\"maxLength\",\"cellSpacing\",\"cellPadding\",\"rowSpan\",\"colSpan\",\"useMap\",\"frameBorder\",\"contentEditable\"],function(){jQuery.propFix[this.toLowerCase()]=this;});var rclass=/[\\t\\r\\n\\f]/g;function getClass(elem){return elem.getAttribute&&elem.getAttribute(\"class\")||\"\";}jQuery.fn.extend({addClass:function addClass(value){var classes,elem,cur,curValue,clazz,j,finalValue,i=0;if(jQuery.isFunction(value)){return this.each(function(j){jQuery(this).addClass(value.call(this,j,getClass(this)));});}if(typeof value===\"string\"&&value){classes=value.match(rnotwhite)||[];while(elem=this[i++]){curValue=getClass(elem);cur=elem.nodeType===1&&(\" \"+curValue+\" \").replace(rclass,\" \");if(cur){j=0;while(clazz=classes[j++]){if(cur.indexOf(\" \"+clazz+\" \")<0){cur+=clazz+\" \";}}// Only assign if different to avoid unneeded rendering.\n\tfinalValue=jQuery.trim(cur);if(curValue!==finalValue){elem.setAttribute(\"class\",finalValue);}}}}return this;},removeClass:function removeClass(value){var classes,elem,cur,curValue,clazz,j,finalValue,i=0;if(jQuery.isFunction(value)){return this.each(function(j){jQuery(this).removeClass(value.call(this,j,getClass(this)));});}if(!arguments.length){return this.attr(\"class\",\"\");}if(typeof value===\"string\"&&value){classes=value.match(rnotwhite)||[];while(elem=this[i++]){curValue=getClass(elem);// This expression is here for better compressibility (see addClass)\n\tcur=elem.nodeType===1&&(\" \"+curValue+\" \").replace(rclass,\" \");if(cur){j=0;while(clazz=classes[j++]){// Remove *all* instances\n\twhile(cur.indexOf(\" \"+clazz+\" \")>-1){cur=cur.replace(\" \"+clazz+\" \",\" \");}}// Only assign if different to avoid unneeded rendering.\n\tfinalValue=jQuery.trim(cur);if(curValue!==finalValue){elem.setAttribute(\"class\",finalValue);}}}}return this;},toggleClass:function toggleClass(value,stateVal){var type=typeof value===\"undefined\"?\"undefined\":_typeof(value);if(typeof stateVal===\"boolean\"&&type===\"string\"){return stateVal?this.addClass(value):this.removeClass(value);}if(jQuery.isFunction(value)){return this.each(function(i){jQuery(this).toggleClass(value.call(this,i,getClass(this),stateVal),stateVal);});}return this.each(function(){var className,i,self,classNames;if(type===\"string\"){// Toggle individual class names\n\ti=0;self=jQuery(this);classNames=value.match(rnotwhite)||[];while(className=classNames[i++]){// Check each className given, space separated list\n\tif(self.hasClass(className)){self.removeClass(className);}else{self.addClass(className);}}// Toggle whole class name\n\t}else if(value===undefined||type===\"boolean\"){className=getClass(this);if(className){// Store className if set\n\tdataPriv.set(this,\"__className__\",className);}// If the element has a class name or if we're passed `false`,\n\t// then remove the whole classname (if there was one, the above saved it).\n\t// Otherwise bring back whatever was previously saved (if anything),\n\t// falling back to the empty string if nothing was stored.\n\tif(this.setAttribute){this.setAttribute(\"class\",className||value===false?\"\":dataPriv.get(this,\"__className__\")||\"\");}}});},hasClass:function hasClass(selector){var className,elem,i=0;className=\" \"+selector+\" \";while(elem=this[i++]){if(elem.nodeType===1&&(\" \"+getClass(elem)+\" \").replace(rclass,\" \").indexOf(className)>-1){return true;}}return false;}});var rreturn=/\\r/g,rspaces=/[\\x20\\t\\r\\n\\f]+/g;jQuery.fn.extend({val:function val(value){var hooks,ret,isFunction,elem=this[0];if(!arguments.length){if(elem){hooks=jQuery.valHooks[elem.type]||jQuery.valHooks[elem.nodeName.toLowerCase()];if(hooks&&\"get\"in hooks&&(ret=hooks.get(elem,\"value\"))!==undefined){return ret;}ret=elem.value;return typeof ret===\"string\"?// Handle most common string cases\n\tret.replace(rreturn,\"\"):// Handle cases where value is null/undef or number\n\tret==null?\"\":ret;}return;}isFunction=jQuery.isFunction(value);return this.each(function(i){var val;if(this.nodeType!==1){return;}if(isFunction){val=value.call(this,i,jQuery(this).val());}else{val=value;}// Treat null/undefined as \"\"; convert numbers to string\n\tif(val==null){val=\"\";}else if(typeof val===\"number\"){val+=\"\";}else if(jQuery.isArray(val)){val=jQuery.map(val,function(value){return value==null?\"\":value+\"\";});}hooks=jQuery.valHooks[this.type]||jQuery.valHooks[this.nodeName.toLowerCase()];// If set returns undefined, fall back to normal setting\n\tif(!hooks||!(\"set\"in hooks)||hooks.set(this,val,\"value\")===undefined){this.value=val;}});}});jQuery.extend({valHooks:{option:{get:function get(elem){var val=jQuery.find.attr(elem,\"value\");return val!=null?val:// Support: IE <=10 - 11 only\n\t// option.text throws exceptions (#14686, #14858)\n\t// Strip and collapse whitespace\n\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\tjQuery.trim(jQuery.text(elem)).replace(rspaces,\" \");}},select:{get:function get(elem){var value,option,options=elem.options,index=elem.selectedIndex,one=elem.type===\"select-one\",values=one?null:[],max=one?index+1:options.length,i=index<0?max:one?index:0;// Loop through all the selected options\n\tfor(;i<max;i++){option=options[i];// Support: IE <=9 only\n\t// IE8-9 doesn't update selected after form reset (#2551)\n\tif((option.selected||i===index)&&// Don't return options that are disabled or in a disabled optgroup\n\t!option.disabled&&(!option.parentNode.disabled||!jQuery.nodeName(option.parentNode,\"optgroup\"))){// Get the specific value for the option\n\tvalue=jQuery(option).val();// We don't need an array for one selects\n\tif(one){return value;}// Multi-Selects return an array\n\tvalues.push(value);}}return values;},set:function set(elem,value){var optionSet,option,options=elem.options,values=jQuery.makeArray(value),i=options.length;while(i--){option=options[i];if(option.selected=jQuery.inArray(jQuery.valHooks.option.get(option),values)>-1){optionSet=true;}}// Force browsers to behave consistently when non-matching value is set\n\tif(!optionSet){elem.selectedIndex=-1;}return values;}}}});// Radios and checkboxes getter/setter\n\tjQuery.each([\"radio\",\"checkbox\"],function(){jQuery.valHooks[this]={set:function set(elem,value){if(jQuery.isArray(value)){return elem.checked=jQuery.inArray(jQuery(elem).val(),value)>-1;}}};if(!support.checkOn){jQuery.valHooks[this].get=function(elem){return elem.getAttribute(\"value\")===null?\"on\":elem.value;};}});// Return jQuery for attributes-only inclusion\n\tvar rfocusMorph=/^(?:focusinfocus|focusoutblur)$/;jQuery.extend(jQuery.event,{trigger:function trigger(event,data,elem,onlyHandlers){var i,cur,tmp,bubbleType,ontype,handle,special,eventPath=[elem||document],type=hasOwn.call(event,\"type\")?event.type:event,namespaces=hasOwn.call(event,\"namespace\")?event.namespace.split(\".\"):[];cur=tmp=elem=elem||document;// Don't do events on text and comment nodes\n\tif(elem.nodeType===3||elem.nodeType===8){return;}// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\tif(rfocusMorph.test(type+jQuery.event.triggered)){return;}if(type.indexOf(\".\")>-1){// Namespaced trigger; create a regexp to match event type in handle()\n\tnamespaces=type.split(\".\");type=namespaces.shift();namespaces.sort();}ontype=type.indexOf(\":\")<0&&\"on\"+type;// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\tevent=event[jQuery.expando]?event:new jQuery.Event(type,(typeof event===\"undefined\"?\"undefined\":_typeof(event))===\"object\"&&event);// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\tevent.isTrigger=onlyHandlers?2:3;event.namespace=namespaces.join(\".\");event.rnamespace=event.namespace?new RegExp(\"(^|\\\\.)\"+namespaces.join(\"\\\\.(?:.*\\\\.|)\")+\"(\\\\.|$)\"):null;// Clean up the event in case it is being reused\n\tevent.result=undefined;if(!event.target){event.target=elem;}// Clone any incoming data and prepend the event, creating the handler arg list\n\tdata=data==null?[event]:jQuery.makeArray(data,[event]);// Allow special events to draw outside the lines\n\tspecial=jQuery.event.special[type]||{};if(!onlyHandlers&&special.trigger&&special.trigger.apply(elem,data)===false){return;}// Determine event propagation path in advance, per W3C events spec (#9951)\n\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\tif(!onlyHandlers&&!special.noBubble&&!jQuery.isWindow(elem)){bubbleType=special.delegateType||type;if(!rfocusMorph.test(bubbleType+type)){cur=cur.parentNode;}for(;cur;cur=cur.parentNode){eventPath.push(cur);tmp=cur;}// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\tif(tmp===(elem.ownerDocument||document)){eventPath.push(tmp.defaultView||tmp.parentWindow||window);}}// Fire handlers on the event path\n\ti=0;while((cur=eventPath[i++])&&!event.isPropagationStopped()){event.type=i>1?bubbleType:special.bindType||type;// jQuery handler\n\thandle=(dataPriv.get(cur,\"events\")||{})[event.type]&&dataPriv.get(cur,\"handle\");if(handle){handle.apply(cur,data);}// Native handler\n\thandle=ontype&&cur[ontype];if(handle&&handle.apply&&acceptData(cur)){event.result=handle.apply(cur,data);if(event.result===false){event.preventDefault();}}}event.type=type;// If nobody prevented the default action, do it now\n\tif(!onlyHandlers&&!event.isDefaultPrevented()){if((!special._default||special._default.apply(eventPath.pop(),data)===false)&&acceptData(elem)){// Call a native DOM method on the target with the same name as the event.\n\t// Don't do default actions on window, that's where global variables be (#6170)\n\tif(ontype&&jQuery.isFunction(elem[type])&&!jQuery.isWindow(elem)){// Don't re-trigger an onFOO event when we call its FOO() method\n\ttmp=elem[ontype];if(tmp){elem[ontype]=null;}// Prevent re-triggering of the same event, since we already bubbled it above\n\tjQuery.event.triggered=type;elem[type]();jQuery.event.triggered=undefined;if(tmp){elem[ontype]=tmp;}}}}return event.result;},// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate:function simulate(type,elem,event){var e=jQuery.extend(new jQuery.Event(),event,{type:type,isSimulated:true});jQuery.event.trigger(e,null,elem);}});jQuery.fn.extend({trigger:function trigger(type,data){return this.each(function(){jQuery.event.trigger(type,data,this);});},triggerHandler:function triggerHandler(type,data){var elem=this[0];if(elem){return jQuery.event.trigger(type,data,elem,true);}}});jQuery.each((\"blur focus focusin focusout resize scroll click dblclick \"+\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \"+\"change select submit keydown keypress keyup contextmenu\").split(\" \"),function(i,name){// Handle event binding\n\tjQuery.fn[name]=function(data,fn){return arguments.length>0?this.on(name,null,data,fn):this.trigger(name);};});jQuery.fn.extend({hover:function hover(fnOver,fnOut){return this.mouseenter(fnOver).mouseleave(fnOut||fnOver);}});support.focusin=\"onfocusin\"in window;// Support: Firefox <=44\n\t// Firefox doesn't have focus(in | out) events\n\t// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n\t//\n\t// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n\t// focus(in | out) events fire after focus & blur events,\n\t// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n\t// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\n\tif(!support.focusin){jQuery.each({focus:\"focusin\",blur:\"focusout\"},function(orig,fix){// Attach a single capturing handler on the document while someone wants focusin/focusout\n\tvar handler=function handler(event){jQuery.event.simulate(fix,event.target,jQuery.event.fix(event));};jQuery.event.special[fix]={setup:function setup(){var doc=this.ownerDocument||this,attaches=dataPriv.access(doc,fix);if(!attaches){doc.addEventListener(orig,handler,true);}dataPriv.access(doc,fix,(attaches||0)+1);},teardown:function teardown(){var doc=this.ownerDocument||this,attaches=dataPriv.access(doc,fix)-1;if(!attaches){doc.removeEventListener(orig,handler,true);dataPriv.remove(doc,fix);}else{dataPriv.access(doc,fix,attaches);}}};});}var location=window.location;var nonce=jQuery.now();var rquery=/\\?/;// Cross-browser xml parsing\n\tjQuery.parseXML=function(data){var xml;if(!data||typeof data!==\"string\"){return null;}// Support: IE 9 - 11 only\n\t// IE throws on parseFromString with invalid input.\n\ttry{xml=new window.DOMParser().parseFromString(data,\"text/xml\");}catch(e){xml=undefined;}if(!xml||xml.getElementsByTagName(\"parsererror\").length){jQuery.error(\"Invalid XML: \"+data);}return xml;};var rbracket=/\\[\\]$/,rCRLF=/\\r?\\n/g,rsubmitterTypes=/^(?:submit|button|image|reset|file)$/i,rsubmittable=/^(?:input|select|textarea|keygen)/i;function buildParams(prefix,obj,traditional,add){var name;if(jQuery.isArray(obj)){// Serialize array item.\n\tjQuery.each(obj,function(i,v){if(traditional||rbracket.test(prefix)){// Treat each array item as a scalar.\n\tadd(prefix,v);}else{// Item is non-scalar (array or object), encode its numeric index.\n\tbuildParams(prefix+\"[\"+((typeof v===\"undefined\"?\"undefined\":_typeof(v))===\"object\"&&v!=null?i:\"\")+\"]\",v,traditional,add);}});}else if(!traditional&&jQuery.type(obj)===\"object\"){// Serialize object item.\n\tfor(name in obj){buildParams(prefix+\"[\"+name+\"]\",obj[name],traditional,add);}}else{// Serialize scalar item.\n\tadd(prefix,obj);}}// Serialize an array of form elements or a set of\n\t// key/values into a query string\n\tjQuery.param=function(a,traditional){var prefix,s=[],add=function add(key,valueOrFunction){// If value is a function, invoke it and use its return value\n\tvar value=jQuery.isFunction(valueOrFunction)?valueOrFunction():valueOrFunction;s[s.length]=encodeURIComponent(key)+\"=\"+encodeURIComponent(value==null?\"\":value);};// If an array was passed in, assume that it is an array of form elements.\n\tif(jQuery.isArray(a)||a.jquery&&!jQuery.isPlainObject(a)){// Serialize the form elements\n\tjQuery.each(a,function(){add(this.name,this.value);});}else{// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t// did it), otherwise encode params recursively.\n\tfor(prefix in a){buildParams(prefix,a[prefix],traditional,add);}}// Return the resulting serialization\n\treturn s.join(\"&\");};jQuery.fn.extend({serialize:function serialize(){return jQuery.param(this.serializeArray());},serializeArray:function serializeArray(){return this.map(function(){// Can add propHook for \"elements\" to filter or add form elements\n\tvar elements=jQuery.prop(this,\"elements\");return elements?jQuery.makeArray(elements):this;}).filter(function(){var type=this.type;// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\treturn this.name&&!jQuery(this).is(\":disabled\")&&rsubmittable.test(this.nodeName)&&!rsubmitterTypes.test(type)&&(this.checked||!rcheckableType.test(type));}).map(function(i,elem){var val=jQuery(this).val();return val==null?null:jQuery.isArray(val)?jQuery.map(val,function(val){return{name:elem.name,value:val.replace(rCRLF,\"\\r\\n\")};}):{name:elem.name,value:val.replace(rCRLF,\"\\r\\n\")};}).get();}});var r20=/%20/g,rhash=/#.*$/,rts=/([?&])_=[^&]*/,rheaders=/^(.*?):[ \\t]*([^\\r\\n]*)$/mg,// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,rnoContent=/^(?:GET|HEAD)$/,rprotocol=/^\\/\\//,/* Prefilters\n\t\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t\t * 2) These are called:\n\t\t * - BEFORE asking for a transport\n\t\t * - AFTER param serialization (s.data is a string if s.processData is true)\n\t\t * 3) key is the dataType\n\t\t * 4) the catchall symbol \"*\" can be used\n\t\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t\t */prefilters={},/* Transports bindings\n\t\t * 1) key is the dataType\n\t\t * 2) the catchall symbol \"*\" can be used\n\t\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t\t */transports={},// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n\tallTypes=\"*/\".concat(\"*\"),// Anchor tag for parsing the document origin\n\toriginAnchor=document.createElement(\"a\");originAnchor.href=location.href;// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\n\tfunction addToPrefiltersOrTransports(structure){// dataTypeExpression is optional and defaults to \"*\"\n\treturn function(dataTypeExpression,func){if(typeof dataTypeExpression!==\"string\"){func=dataTypeExpression;dataTypeExpression=\"*\";}var dataType,i=0,dataTypes=dataTypeExpression.toLowerCase().match(rnotwhite)||[];if(jQuery.isFunction(func)){// For each dataType in the dataTypeExpression\n\twhile(dataType=dataTypes[i++]){// Prepend if requested\n\tif(dataType[0]===\"+\"){dataType=dataType.slice(1)||\"*\";(structure[dataType]=structure[dataType]||[]).unshift(func);// Otherwise append\n\t}else{(structure[dataType]=structure[dataType]||[]).push(func);}}}};}// Base inspection function for prefilters and transports\n\tfunction inspectPrefiltersOrTransports(structure,options,originalOptions,jqXHR){var inspected={},seekingTransport=structure===transports;function inspect(dataType){var selected;inspected[dataType]=true;jQuery.each(structure[dataType]||[],function(_,prefilterOrFactory){var dataTypeOrTransport=prefilterOrFactory(options,originalOptions,jqXHR);if(typeof dataTypeOrTransport===\"string\"&&!seekingTransport&&!inspected[dataTypeOrTransport]){options.dataTypes.unshift(dataTypeOrTransport);inspect(dataTypeOrTransport);return false;}else if(seekingTransport){return!(selected=dataTypeOrTransport);}});return selected;}return inspect(options.dataTypes[0])||!inspected[\"*\"]&&inspect(\"*\");}// A special extend for ajax options\n\t// that takes \"flat\" options (not to be deep extended)\n\t// Fixes #9887\n\tfunction ajaxExtend(target,src){var key,deep,flatOptions=jQuery.ajaxSettings.flatOptions||{};for(key in src){if(src[key]!==undefined){(flatOptions[key]?target:deep||(deep={}))[key]=src[key];}}if(deep){jQuery.extend(true,target,deep);}return target;}/* Handles responses to an ajax request:\n\t * - finds the right dataType (mediates between content-type and expected dataType)\n\t * - returns the corresponding response\n\t */function ajaxHandleResponses(s,jqXHR,responses){var ct,type,finalDataType,firstDataType,contents=s.contents,dataTypes=s.dataTypes;// Remove auto dataType and get content-type in the process\n\twhile(dataTypes[0]===\"*\"){dataTypes.shift();if(ct===undefined){ct=s.mimeType||jqXHR.getResponseHeader(\"Content-Type\");}}// Check if we're dealing with a known content-type\n\tif(ct){for(type in contents){if(contents[type]&&contents[type].test(ct)){dataTypes.unshift(type);break;}}}// Check to see if we have a response for the expected dataType\n\tif(dataTypes[0]in responses){finalDataType=dataTypes[0];}else{// Try convertible dataTypes\n\tfor(type in responses){if(!dataTypes[0]||s.converters[type+\" \"+dataTypes[0]]){finalDataType=type;break;}if(!firstDataType){firstDataType=type;}}// Or just use first one\n\tfinalDataType=finalDataType||firstDataType;}// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif(finalDataType){if(finalDataType!==dataTypes[0]){dataTypes.unshift(finalDataType);}return responses[finalDataType];}}/* Chain conversions given the request and the original response\n\t * Also sets the responseXXX fields on the jqXHR instance\n\t */function ajaxConvert(s,response,jqXHR,isSuccess){var conv2,current,conv,tmp,prev,converters={},// Work with a copy of dataTypes in case we need to modify it for conversion\n\tdataTypes=s.dataTypes.slice();// Create converters map with lowercased keys\n\tif(dataTypes[1]){for(conv in s.converters){converters[conv.toLowerCase()]=s.converters[conv];}}current=dataTypes.shift();// Convert to each sequential dataType\n\twhile(current){if(s.responseFields[current]){jqXHR[s.responseFields[current]]=response;}// Apply the dataFilter if provided\n\tif(!prev&&isSuccess&&s.dataFilter){response=s.dataFilter(response,s.dataType);}prev=current;current=dataTypes.shift();if(current){// There's only work to do if current dataType is non-auto\n\tif(current===\"*\"){current=prev;// Convert response if prev dataType is non-auto and differs from current\n\t}else if(prev!==\"*\"&&prev!==current){// Seek a direct converter\n\tconv=converters[prev+\" \"+current]||converters[\"* \"+current];// If none found, seek a pair\n\tif(!conv){for(conv2 in converters){// If conv2 outputs current\n\ttmp=conv2.split(\" \");if(tmp[1]===current){// If prev can be converted to accepted input\n\tconv=converters[prev+\" \"+tmp[0]]||converters[\"* \"+tmp[0]];if(conv){// Condense equivalence converters\n\tif(conv===true){conv=converters[conv2];// Otherwise, insert the intermediate dataType\n\t}else if(converters[conv2]!==true){current=tmp[0];dataTypes.unshift(tmp[1]);}break;}}}}// Apply converter (if not an equivalence)\n\tif(conv!==true){// Unless errors are allowed to bubble, catch and return them\n\tif(conv&&s.throws){response=conv(response);}else{try{response=conv(response);}catch(e){return{state:\"parsererror\",error:conv?e:\"No conversion from \"+prev+\" to \"+current};}}}}}}return{state:\"success\",data:response};}jQuery.extend({// Counter for holding the number of active queries\n\tactive:0,// Last-Modified header cache for next request\n\tlastModified:{},etag:{},ajaxSettings:{url:location.href,type:\"GET\",isLocal:rlocalProtocol.test(location.protocol),global:true,processData:true,async:true,contentType:\"application/x-www-form-urlencoded; charset=UTF-8\",/*\n\t\t\ttimeout: 0,\n\t\t\tdata: null,\n\t\t\tdataType: null,\n\t\t\tusername: null,\n\t\t\tpassword: null,\n\t\t\tcache: null,\n\t\t\tthrows: false,\n\t\t\ttraditional: false,\n\t\t\theaders: {},\n\t\t\t*/accepts:{\"*\":allTypes,text:\"text/plain\",html:\"text/html\",xml:\"application/xml, text/xml\",json:\"application/json, text/javascript\"},contents:{xml:/\\bxml\\b/,html:/\\bhtml/,json:/\\bjson\\b/},responseFields:{xml:\"responseXML\",text:\"responseText\",json:\"responseJSON\"},// Data converters\n\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\tconverters:{// Convert anything to text\n\t\"* text\":String,// Text to html (true = no transformation)\n\t\"text html\":true,// Evaluate text as a json expression\n\t\"text json\":JSON.parse,// Parse text as xml\n\t\"text xml\":jQuery.parseXML},// For options that shouldn't be deep extended:\n\t// you can add your own custom options here if\n\t// and when you create one that shouldn't be\n\t// deep extended (see ajaxExtend)\n\tflatOptions:{url:true,context:true}},// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup:function ajaxSetup(target,settings){return settings?// Building a settings object\n\tajaxExtend(ajaxExtend(target,jQuery.ajaxSettings),settings):// Extending ajaxSettings\n\tajaxExtend(jQuery.ajaxSettings,target);},ajaxPrefilter:addToPrefiltersOrTransports(prefilters),ajaxTransport:addToPrefiltersOrTransports(transports),// Main method\n\tajax:function ajax(url,options){// If url is an object, simulate pre-1.5 signature\n\tif((typeof url===\"undefined\"?\"undefined\":_typeof(url))===\"object\"){options=url;url=undefined;}// Force options to be an object\n\toptions=options||{};var transport,// URL without anti-cache param\n\tcacheURL,// Response headers\n\tresponseHeadersString,responseHeaders,// timeout handle\n\ttimeoutTimer,// Url cleanup var\n\turlAnchor,// Request state (becomes false upon send and true upon completion)\n\tcompleted,// To know if global events are to be dispatched\n\tfireGlobals,// Loop variable\n\ti,// uncached part of the url\n\tuncached,// Create the final options object\n\ts=jQuery.ajaxSetup({},options),// Callbacks context\n\tcallbackContext=s.context||s,// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\tglobalEventContext=s.context&&(callbackContext.nodeType||callbackContext.jquery)?jQuery(callbackContext):jQuery.event,// Deferreds\n\tdeferred=jQuery.Deferred(),completeDeferred=jQuery.Callbacks(\"once memory\"),// Status-dependent callbacks\n\t_statusCode=s.statusCode||{},// Headers (they are sent all at once)\n\trequestHeaders={},requestHeadersNames={},// Default abort message\n\tstrAbort=\"canceled\",// Fake xhr\n\tjqXHR={readyState:0,// Builds headers hashtable if needed\n\tgetResponseHeader:function getResponseHeader(key){var match;if(completed){if(!responseHeaders){responseHeaders={};while(match=rheaders.exec(responseHeadersString)){responseHeaders[match[1].toLowerCase()]=match[2];}}match=responseHeaders[key.toLowerCase()];}return match==null?null:match;},// Raw string\n\tgetAllResponseHeaders:function getAllResponseHeaders(){return completed?responseHeadersString:null;},// Caches the header\n\tsetRequestHeader:function setRequestHeader(name,value){if(completed==null){name=requestHeadersNames[name.toLowerCase()]=requestHeadersNames[name.toLowerCase()]||name;requestHeaders[name]=value;}return this;},// Overrides response content-type header\n\toverrideMimeType:function overrideMimeType(type){if(completed==null){s.mimeType=type;}return this;},// Status-dependent callbacks\n\tstatusCode:function statusCode(map){var code;if(map){if(completed){// Execute the appropriate callbacks\n\tjqXHR.always(map[jqXHR.status]);}else{// Lazy-add the new callbacks in a way that preserves old ones\n\tfor(code in map){_statusCode[code]=[_statusCode[code],map[code]];}}}return this;},// Cancel the request\n\tabort:function abort(statusText){var finalText=statusText||strAbort;if(transport){transport.abort(finalText);}done(0,finalText);return this;}};// Attach deferreds\n\tdeferred.promise(jqXHR);// Add protocol if not provided (prefilters might expect it)\n\t// Handle falsy url in the settings object (#10093: consistency with old signature)\n\t// We also use the url parameter if available\n\ts.url=((url||s.url||location.href)+\"\").replace(rprotocol,location.protocol+\"//\");// Alias method option to type as per ticket #12004\n\ts.type=options.method||options.type||s.method||s.type;// Extract dataTypes list\n\ts.dataTypes=(s.dataType||\"*\").toLowerCase().match(rnotwhite)||[\"\"];// A cross-domain request is in order when the origin doesn't match the current origin.\n\tif(s.crossDomain==null){urlAnchor=document.createElement(\"a\");// Support: IE <=8 - 11, Edge 12 - 13\n\t// IE throws exception on accessing the href property if url is malformed,\n\t// e.g. http://example.com:80x/\n\ttry{urlAnchor.href=s.url;// Support: IE <=8 - 11 only\n\t// Anchor's host property isn't correctly set when s.url is relative\n\turlAnchor.href=urlAnchor.href;s.crossDomain=originAnchor.protocol+\"//\"+originAnchor.host!==urlAnchor.protocol+\"//\"+urlAnchor.host;}catch(e){// If there is an error parsing the URL, assume it is crossDomain,\n\t// it can be rejected by the transport if it is invalid\n\ts.crossDomain=true;}}// Convert data if not already a string\n\tif(s.data&&s.processData&&typeof s.data!==\"string\"){s.data=jQuery.param(s.data,s.traditional);}// Apply prefilters\n\tinspectPrefiltersOrTransports(prefilters,s,options,jqXHR);// If request was aborted inside a prefilter, stop there\n\tif(completed){return jqXHR;}// We can fire global events as of now if asked to\n\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)\n\tfireGlobals=jQuery.event&&s.global;// Watch for a new set of requests\n\tif(fireGlobals&&jQuery.active++===0){jQuery.event.trigger(\"ajaxStart\");}// Uppercase the type\n\ts.type=s.type.toUpperCase();// Determine if request has content\n\ts.hasContent=!rnoContent.test(s.type);// Save the URL in case we're toying with the If-Modified-Since\n\t// and/or If-None-Match header later on\n\t// Remove hash to simplify url manipulation\n\tcacheURL=s.url.replace(rhash,\"\");// More options handling for requests with no content\n\tif(!s.hasContent){// Remember the hash so we can put it back\n\tuncached=s.url.slice(cacheURL.length);// If data is available, append data to url\n\tif(s.data){cacheURL+=(rquery.test(cacheURL)?\"&\":\"?\")+s.data;// #9682: remove data so that it's not used in an eventual retry\n\tdelete s.data;}// Add anti-cache in uncached url if needed\n\tif(s.cache===false){cacheURL=cacheURL.replace(rts,\"\");uncached=(rquery.test(cacheURL)?\"&\":\"?\")+\"_=\"+nonce++ +uncached;}// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\ts.url=cacheURL+uncached;// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t}else if(s.data&&s.processData&&(s.contentType||\"\").indexOf(\"application/x-www-form-urlencoded\")===0){s.data=s.data.replace(r20,\"+\");}// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\tif(s.ifModified){if(jQuery.lastModified[cacheURL]){jqXHR.setRequestHeader(\"If-Modified-Since\",jQuery.lastModified[cacheURL]);}if(jQuery.etag[cacheURL]){jqXHR.setRequestHeader(\"If-None-Match\",jQuery.etag[cacheURL]);}}// Set the correct header, if data is being sent\n\tif(s.data&&s.hasContent&&s.contentType!==false||options.contentType){jqXHR.setRequestHeader(\"Content-Type\",s.contentType);}// Set the Accepts header for the server, depending on the dataType\n\tjqXHR.setRequestHeader(\"Accept\",s.dataTypes[0]&&s.accepts[s.dataTypes[0]]?s.accepts[s.dataTypes[0]]+(s.dataTypes[0]!==\"*\"?\", \"+allTypes+\"; q=0.01\":\"\"):s.accepts[\"*\"]);// Check for headers option\n\tfor(i in s.headers){jqXHR.setRequestHeader(i,s.headers[i]);}// Allow custom headers/mimetypes and early abort\n\tif(s.beforeSend&&(s.beforeSend.call(callbackContext,jqXHR,s)===false||completed)){// Abort if not done already and return\n\treturn jqXHR.abort();}// Aborting is no longer a cancellation\n\tstrAbort=\"abort\";// Install callbacks on deferreds\n\tcompleteDeferred.add(s.complete);jqXHR.done(s.success);jqXHR.fail(s.error);// Get transport\n\ttransport=inspectPrefiltersOrTransports(transports,s,options,jqXHR);// If no transport, we auto-abort\n\tif(!transport){done(-1,\"No Transport\");}else{jqXHR.readyState=1;// Send global event\n\tif(fireGlobals){globalEventContext.trigger(\"ajaxSend\",[jqXHR,s]);}// If request was aborted inside ajaxSend, stop there\n\tif(completed){return jqXHR;}// Timeout\n\tif(s.async&&s.timeout>0){timeoutTimer=window.setTimeout(function(){jqXHR.abort(\"timeout\");},s.timeout);}try{completed=false;transport.send(requestHeaders,done);}catch(e){// Rethrow post-completion exceptions\n\tif(completed){throw e;}// Propagate others as results\n\tdone(-1,e);}}// Callback for when everything is done\n\tfunction done(status,nativeStatusText,responses,headers){var isSuccess,success,error,response,modified,statusText=nativeStatusText;// Ignore repeat invocations\n\tif(completed){return;}completed=true;// Clear timeout if it exists\n\tif(timeoutTimer){window.clearTimeout(timeoutTimer);}// Dereference transport for early garbage collection\n\t// (no matter how long the jqXHR object will be used)\n\ttransport=undefined;// Cache response headers\n\tresponseHeadersString=headers||\"\";// Set readyState\n\tjqXHR.readyState=status>0?4:0;// Determine if successful\n\tisSuccess=status>=200&&status<300||status===304;// Get response data\n\tif(responses){response=ajaxHandleResponses(s,jqXHR,responses);}// Convert no matter what (that way responseXXX fields are always set)\n\tresponse=ajaxConvert(s,response,jqXHR,isSuccess);// If successful, handle type chaining\n\tif(isSuccess){// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\tif(s.ifModified){modified=jqXHR.getResponseHeader(\"Last-Modified\");if(modified){jQuery.lastModified[cacheURL]=modified;}modified=jqXHR.getResponseHeader(\"etag\");if(modified){jQuery.etag[cacheURL]=modified;}}// if no content\n\tif(status===204||s.type===\"HEAD\"){statusText=\"nocontent\";// if not modified\n\t}else if(status===304){statusText=\"notmodified\";// If we have data, let's convert it\n\t}else{statusText=response.state;success=response.data;error=response.error;isSuccess=!error;}}else{// Extract error from statusText and normalize for non-aborts\n\terror=statusText;if(status||!statusText){statusText=\"error\";if(status<0){status=0;}}}// Set data for the fake xhr object\n\tjqXHR.status=status;jqXHR.statusText=(nativeStatusText||statusText)+\"\";// Success/Error\n\tif(isSuccess){deferred.resolveWith(callbackContext,[success,statusText,jqXHR]);}else{deferred.rejectWith(callbackContext,[jqXHR,statusText,error]);}// Status-dependent callbacks\n\tjqXHR.statusCode(_statusCode);_statusCode=undefined;if(fireGlobals){globalEventContext.trigger(isSuccess?\"ajaxSuccess\":\"ajaxError\",[jqXHR,s,isSuccess?success:error]);}// Complete\n\tcompleteDeferred.fireWith(callbackContext,[jqXHR,statusText]);if(fireGlobals){globalEventContext.trigger(\"ajaxComplete\",[jqXHR,s]);// Handle the global AJAX counter\n\tif(! --jQuery.active){jQuery.event.trigger(\"ajaxStop\");}}}return jqXHR;},getJSON:function getJSON(url,data,callback){return jQuery.get(url,data,callback,\"json\");},getScript:function getScript(url,callback){return jQuery.get(url,undefined,callback,\"script\");}});jQuery.each([\"get\",\"post\"],function(i,method){jQuery[method]=function(url,data,callback,type){// Shift arguments if data argument was omitted\n\tif(jQuery.isFunction(data)){type=type||callback;callback=data;data=undefined;}// The url can be an options object (which then must have .url)\n\treturn jQuery.ajax(jQuery.extend({url:url,type:method,dataType:type,data:data,success:callback},jQuery.isPlainObject(url)&&url));};});jQuery._evalUrl=function(url){return jQuery.ajax({url:url,// Make this explicit, since user can override this through ajaxSetup (#11264)\n\ttype:\"GET\",dataType:\"script\",cache:true,async:false,global:false,\"throws\":true});};jQuery.fn.extend({wrapAll:function wrapAll(html){var wrap;if(this[0]){if(jQuery.isFunction(html)){html=html.call(this[0]);}// The elements to wrap the target around\n\twrap=jQuery(html,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){wrap.insertBefore(this[0]);}wrap.map(function(){var elem=this;while(elem.firstElementChild){elem=elem.firstElementChild;}return elem;}).append(this);}return this;},wrapInner:function wrapInner(html){if(jQuery.isFunction(html)){return this.each(function(i){jQuery(this).wrapInner(html.call(this,i));});}return this.each(function(){var self=jQuery(this),contents=self.contents();if(contents.length){contents.wrapAll(html);}else{self.append(html);}});},wrap:function wrap(html){var isFunction=jQuery.isFunction(html);return this.each(function(i){jQuery(this).wrapAll(isFunction?html.call(this,i):html);});},unwrap:function unwrap(selector){this.parent(selector).not(\"body\").each(function(){jQuery(this).replaceWith(this.childNodes);});return this;}});jQuery.expr.pseudos.hidden=function(elem){return!jQuery.expr.pseudos.visible(elem);};jQuery.expr.pseudos.visible=function(elem){return!!(elem.offsetWidth||elem.offsetHeight||elem.getClientRects().length);};jQuery.ajaxSettings.xhr=function(){try{return new window.XMLHttpRequest();}catch(e){}};var xhrSuccessStatus={// File protocol always yields status code 0, assume 200\n\t0:200,// Support: IE <=9 only\n\t// #1450: sometimes IE returns 1223 when it should be 204\n\t1223:204},xhrSupported=jQuery.ajaxSettings.xhr();support.cors=!!xhrSupported&&\"withCredentials\"in xhrSupported;support.ajax=xhrSupported=!!xhrSupported;jQuery.ajaxTransport(function(options){var _callback,errorCallback;// Cross domain only allowed if supported through XMLHttpRequest\n\tif(support.cors||xhrSupported&&!options.crossDomain){return{send:function send(headers,complete){var i,xhr=options.xhr();xhr.open(options.type,options.url,options.async,options.username,options.password);// Apply custom fields if provided\n\tif(options.xhrFields){for(i in options.xhrFields){xhr[i]=options.xhrFields[i];}}// Override mime type if needed\n\tif(options.mimeType&&xhr.overrideMimeType){xhr.overrideMimeType(options.mimeType);}// X-Requested-With header\n\t// For cross-domain requests, seeing as conditions for a preflight are\n\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t// For same-domain requests, won't change header if already provided.\n\tif(!options.crossDomain&&!headers[\"X-Requested-With\"]){headers[\"X-Requested-With\"]=\"XMLHttpRequest\";}// Set headers\n\tfor(i in headers){xhr.setRequestHeader(i,headers[i]);}// Callback\n\t_callback=function callback(type){return function(){if(_callback){_callback=errorCallback=xhr.onload=xhr.onerror=xhr.onabort=xhr.onreadystatechange=null;if(type===\"abort\"){xhr.abort();}else if(type===\"error\"){// Support: IE <=9 only\n\t// On a manual native abort, IE9 throws\n\t// errors on any property access that is not readyState\n\tif(typeof xhr.status!==\"number\"){complete(0,\"error\");}else{complete(// File: protocol always yields status 0; see #8605, #14207\n\txhr.status,xhr.statusText);}}else{complete(xhrSuccessStatus[xhr.status]||xhr.status,xhr.statusText,// Support: IE <=9 only\n\t// IE9 has no XHR2 but throws on binary (trac-11426)\n\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t(xhr.responseType||\"text\")!==\"text\"||typeof xhr.responseText!==\"string\"?{binary:xhr.response}:{text:xhr.responseText},xhr.getAllResponseHeaders());}}};};// Listen to events\n\txhr.onload=_callback();errorCallback=xhr.onerror=_callback(\"error\");// Support: IE 9 only\n\t// Use onreadystatechange to replace onabort\n\t// to handle uncaught aborts\n\tif(xhr.onabort!==undefined){xhr.onabort=errorCallback;}else{xhr.onreadystatechange=function(){// Check readyState before timeout as it changes\n\tif(xhr.readyState===4){// Allow onerror to be called first,\n\t// but that will not handle a native abort\n\t// Also, save errorCallback to a variable\n\t// as xhr.onerror cannot be accessed\n\twindow.setTimeout(function(){if(_callback){errorCallback();}});}};}// Create the abort callback\n\t_callback=_callback(\"abort\");try{// Do send the request (this may raise an exception)\n\txhr.send(options.hasContent&&options.data||null);}catch(e){// #14683: Only rethrow if this hasn't been notified as an error yet\n\tif(_callback){throw e;}}},abort:function abort(){if(_callback){_callback();}}};}});// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\n\tjQuery.ajaxPrefilter(function(s){if(s.crossDomain){s.contents.script=false;}});// Install script dataType\n\tjQuery.ajaxSetup({accepts:{script:\"text/javascript, application/javascript, \"+\"application/ecmascript, application/x-ecmascript\"},contents:{script:/\\b(?:java|ecma)script\\b/},converters:{\"text script\":function textScript(text){jQuery.globalEval(text);return text;}}});// Handle cache's special case and crossDomain\n\tjQuery.ajaxPrefilter(\"script\",function(s){if(s.cache===undefined){s.cache=false;}if(s.crossDomain){s.type=\"GET\";}});// Bind script tag hack transport\n\tjQuery.ajaxTransport(\"script\",function(s){// This transport only deals with cross domain requests\n\tif(s.crossDomain){var script,_callback2;return{send:function send(_,complete){script=jQuery(\"<script>\").prop({charset:s.scriptCharset,src:s.url}).on(\"load error\",_callback2=function callback(evt){script.remove();_callback2=null;if(evt){complete(evt.type===\"error\"?404:200,evt.type);}});// Use native DOM manipulation to avoid our domManip AJAX trickery\n\tdocument.head.appendChild(script[0]);},abort:function abort(){if(_callback2){_callback2();}}};}});var oldCallbacks=[],rjsonp=/(=)\\?(?=&|$)|\\?\\?/;// Default jsonp settings\n\tjQuery.ajaxSetup({jsonp:\"callback\",jsonpCallback:function jsonpCallback(){var callback=oldCallbacks.pop()||jQuery.expando+\"_\"+nonce++;this[callback]=true;return callback;}});// Detect, normalize options and install callbacks for jsonp requests\n\tjQuery.ajaxPrefilter(\"json jsonp\",function(s,originalSettings,jqXHR){var callbackName,overwritten,responseContainer,jsonProp=s.jsonp!==false&&(rjsonp.test(s.url)?\"url\":typeof s.data===\"string\"&&(s.contentType||\"\").indexOf(\"application/x-www-form-urlencoded\")===0&&rjsonp.test(s.data)&&\"data\");// Handle iff the expected data type is \"jsonp\" or we have a parameter to set\n\tif(jsonProp||s.dataTypes[0]===\"jsonp\"){// Get callback name, remembering preexisting value associated with it\n\tcallbackName=s.jsonpCallback=jQuery.isFunction(s.jsonpCallback)?s.jsonpCallback():s.jsonpCallback;// Insert callback into url or form data\n\tif(jsonProp){s[jsonProp]=s[jsonProp].replace(rjsonp,\"$1\"+callbackName);}else if(s.jsonp!==false){s.url+=(rquery.test(s.url)?\"&\":\"?\")+s.jsonp+\"=\"+callbackName;}// Use data converter to retrieve json after script execution\n\ts.converters[\"script json\"]=function(){if(!responseContainer){jQuery.error(callbackName+\" was not called\");}return responseContainer[0];};// Force json dataType\n\ts.dataTypes[0]=\"json\";// Install callback\n\toverwritten=window[callbackName];window[callbackName]=function(){responseContainer=arguments;};// Clean-up function (fires after converters)\n\tjqXHR.always(function(){// If previous value didn't exist - remove it\n\tif(overwritten===undefined){jQuery(window).removeProp(callbackName);// Otherwise restore preexisting value\n\t}else{window[callbackName]=overwritten;}// Save back as free\n\tif(s[callbackName]){// Make sure that re-using the options doesn't screw things around\n\ts.jsonpCallback=originalSettings.jsonpCallback;// Save the callback name for future use\n\toldCallbacks.push(callbackName);}// Call if it was a function and we have a response\n\tif(responseContainer&&jQuery.isFunction(overwritten)){overwritten(responseContainer[0]);}responseContainer=overwritten=undefined;});// Delegate to script\n\treturn\"script\";}});// Support: Safari 8 only\n\t// In Safari 8 documents created via document.implementation.createHTMLDocument\n\t// collapse sibling forms: the second one becomes a child of the first one.\n\t// Because of that, this security measure has to be disabled in Safari 8.\n\t// https://bugs.webkit.org/show_bug.cgi?id=137337\n\tsupport.createHTMLDocument=function(){var body=document.implementation.createHTMLDocument(\"\").body;body.innerHTML=\"<form></form><form></form>\";return body.childNodes.length===2;}();// Argument \"data\" should be string of html\n\t// context (optional): If specified, the fragment will be created in this context,\n\t// defaults to document\n\t// keepScripts (optional): If true, will include scripts passed in the html string\n\tjQuery.parseHTML=function(data,context,keepScripts){if(typeof data!==\"string\"){return[];}if(typeof context===\"boolean\"){keepScripts=context;context=false;}var base,parsed,scripts;if(!context){// Stop scripts or inline event handlers from being executed immediately\n\t// by using document.implementation\n\tif(support.createHTMLDocument){context=document.implementation.createHTMLDocument(\"\");// Set the base href for the created document\n\t// so any parsed elements with URLs\n\t// are based on the document's URL (gh-2965)\n\tbase=context.createElement(\"base\");base.href=document.location.href;context.head.appendChild(base);}else{context=document;}}parsed=rsingleTag.exec(data);scripts=!keepScripts&&[];// Single tag\n\tif(parsed){return[context.createElement(parsed[1])];}parsed=buildFragment([data],context,scripts);if(scripts&&scripts.length){jQuery(scripts).remove();}return jQuery.merge([],parsed.childNodes);};/**\n\t * Load a url into a page\n\t */jQuery.fn.load=function(url,params,callback){var selector,type,response,self=this,off=url.indexOf(\" \");if(off>-1){selector=jQuery.trim(url.slice(off));url=url.slice(0,off);}// If it's a function\n\tif(jQuery.isFunction(params)){// We assume that it's the callback\n\tcallback=params;params=undefined;// Otherwise, build a param string\n\t}else if(params&&(typeof params===\"undefined\"?\"undefined\":_typeof(params))===\"object\"){type=\"POST\";}// If we have elements to modify, make the request\n\tif(self.length>0){jQuery.ajax({url:url,// If \"type\" variable is undefined, then \"GET\" method will be used.\n\t// Make value of this field explicit since\n\t// user can override it through ajaxSetup method\n\ttype:type||\"GET\",dataType:\"html\",data:params}).done(function(responseText){// Save response for use in complete callback\n\tresponse=arguments;self.html(selector?// If a selector was specified, locate the right elements in a dummy div\n\t// Exclude scripts to avoid IE 'Permission Denied' errors\n\tjQuery(\"<div>\").append(jQuery.parseHTML(responseText)).find(selector):// Otherwise use the full result\n\tresponseText);// If the request succeeds, this function gets \"data\", \"status\", \"jqXHR\"\n\t// but they are ignored because response was set above.\n\t// If it fails, this function gets \"jqXHR\", \"status\", \"error\"\n\t}).always(callback&&function(jqXHR,status){self.each(function(){callback.apply(this,response||[jqXHR.responseText,status,jqXHR]);});});}return this;};// Attach a bunch of functions for handling common AJAX events\n\tjQuery.each([\"ajaxStart\",\"ajaxStop\",\"ajaxComplete\",\"ajaxError\",\"ajaxSuccess\",\"ajaxSend\"],function(i,type){jQuery.fn[type]=function(fn){return this.on(type,fn);};});jQuery.expr.pseudos.animated=function(elem){return jQuery.grep(jQuery.timers,function(fn){return elem===fn.elem;}).length;};/**\n\t * Gets a window from an element\n\t */function getWindow(elem){return jQuery.isWindow(elem)?elem:elem.nodeType===9&&elem.defaultView;}jQuery.offset={setOffset:function setOffset(elem,options,i){var curPosition,curLeft,curCSSTop,curTop,curOffset,curCSSLeft,calculatePosition,position=jQuery.css(elem,\"position\"),curElem=jQuery(elem),props={};// Set position first, in-case top/left are set even on static elem\n\tif(position===\"static\"){elem.style.position=\"relative\";}curOffset=curElem.offset();curCSSTop=jQuery.css(elem,\"top\");curCSSLeft=jQuery.css(elem,\"left\");calculatePosition=(position===\"absolute\"||position===\"fixed\")&&(curCSSTop+curCSSLeft).indexOf(\"auto\")>-1;// Need to be able to calculate position if either\n\t// top or left is auto and position is either absolute or fixed\n\tif(calculatePosition){curPosition=curElem.position();curTop=curPosition.top;curLeft=curPosition.left;}else{curTop=parseFloat(curCSSTop)||0;curLeft=parseFloat(curCSSLeft)||0;}if(jQuery.isFunction(options)){// Use jQuery.extend here to allow modification of coordinates argument (gh-1848)\n\toptions=options.call(elem,i,jQuery.extend({},curOffset));}if(options.top!=null){props.top=options.top-curOffset.top+curTop;}if(options.left!=null){props.left=options.left-curOffset.left+curLeft;}if(\"using\"in options){options.using.call(elem,props);}else{curElem.css(props);}}};jQuery.fn.extend({offset:function offset(options){// Preserve chaining for setter\n\tif(arguments.length){return options===undefined?this:this.each(function(i){jQuery.offset.setOffset(this,options,i);});}var docElem,win,rect,doc,elem=this[0];if(!elem){return;}// Support: IE <=11 only\n\t// Running getBoundingClientRect on a\n\t// disconnected node in IE throws an error\n\tif(!elem.getClientRects().length){return{top:0,left:0};}rect=elem.getBoundingClientRect();// Make sure element is not hidden (display: none)\n\tif(rect.width||rect.height){doc=elem.ownerDocument;win=getWindow(doc);docElem=doc.documentElement;return{top:rect.top+win.pageYOffset-docElem.clientTop,left:rect.left+win.pageXOffset-docElem.clientLeft};}// Return zeros for disconnected and hidden elements (gh-2310)\n\treturn rect;},position:function position(){if(!this[0]){return;}var offsetParent,offset,elem=this[0],parentOffset={top:0,left:0};// Fixed elements are offset from window (parentOffset = {top:0, left: 0},\n\t// because it is its only offset parent\n\tif(jQuery.css(elem,\"position\")===\"fixed\"){// Assume getBoundingClientRect is there when computed position is fixed\n\toffset=elem.getBoundingClientRect();}else{// Get *real* offsetParent\n\toffsetParent=this.offsetParent();// Get correct offsets\n\toffset=this.offset();if(!jQuery.nodeName(offsetParent[0],\"html\")){parentOffset=offsetParent.offset();}// Add offsetParent borders\n\tparentOffset={top:parentOffset.top+jQuery.css(offsetParent[0],\"borderTopWidth\",true),left:parentOffset.left+jQuery.css(offsetParent[0],\"borderLeftWidth\",true)};}// Subtract parent offsets and element margins\n\treturn{top:offset.top-parentOffset.top-jQuery.css(elem,\"marginTop\",true),left:offset.left-parentOffset.left-jQuery.css(elem,\"marginLeft\",true)};},// This method will return documentElement in the following cases:\n\t// 1) For the element inside the iframe without offsetParent, this method will return\n\t// documentElement of the parent window\n\t// 2) For the hidden or detached element\n\t// 3) For body or html element, i.e. in case of the html node - it will return itself\n\t//\n\t// but those exceptions were never presented as a real life use-cases\n\t// and might be considered as more preferable results.\n\t//\n\t// This logic, however, is not guaranteed and can change at any point in the future\n\toffsetParent:function offsetParent(){return this.map(function(){var offsetParent=this.offsetParent;while(offsetParent&&jQuery.css(offsetParent,\"position\")===\"static\"){offsetParent=offsetParent.offsetParent;}return offsetParent||documentElement;});}});// Create scrollLeft and scrollTop methods\n\tjQuery.each({scrollLeft:\"pageXOffset\",scrollTop:\"pageYOffset\"},function(method,prop){var top=\"pageYOffset\"===prop;jQuery.fn[method]=function(val){return access(this,function(elem,method,val){var win=getWindow(elem);if(val===undefined){return win?win[prop]:elem[method];}if(win){win.scrollTo(!top?val:win.pageXOffset,top?val:win.pageYOffset);}else{elem[method]=val;}},method,val,arguments.length);};});// Support: Safari <=7 - 9.1, Chrome <=37 - 49\n\t// Add the top/left cssHooks using jQuery.fn.position\n\t// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084\n\t// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347\n\t// getComputedStyle returns percent when specified for top/left/bottom/right;\n\t// rather than make the css module depend on the offset module, just check for it here\n\tjQuery.each([\"top\",\"left\"],function(i,prop){jQuery.cssHooks[prop]=addGetHookIf(support.pixelPosition,function(elem,computed){if(computed){computed=curCSS(elem,prop);// If curCSS returns percentage, fallback to offset\n\treturn rnumnonpx.test(computed)?jQuery(elem).position()[prop]+\"px\":computed;}});});// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods\n\tjQuery.each({Height:\"height\",Width:\"width\"},function(name,type){jQuery.each({padding:\"inner\"+name,content:type,\"\":\"outer\"+name},function(defaultExtra,funcName){// Margin is only for outerHeight, outerWidth\n\tjQuery.fn[funcName]=function(margin,value){var chainable=arguments.length&&(defaultExtra||typeof margin!==\"boolean\"),extra=defaultExtra||(margin===true||value===true?\"margin\":\"border\");return access(this,function(elem,type,value){var doc;if(jQuery.isWindow(elem)){// $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)\n\treturn funcName.indexOf(\"outer\")===0?elem[\"inner\"+name]:elem.document.documentElement[\"client\"+name];}// Get document width or height\n\tif(elem.nodeType===9){doc=elem.documentElement;// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],\n\t// whichever is greatest\n\treturn Math.max(elem.body[\"scroll\"+name],doc[\"scroll\"+name],elem.body[\"offset\"+name],doc[\"offset\"+name],doc[\"client\"+name]);}return value===undefined?// Get width or height on the element, requesting but not forcing parseFloat\n\tjQuery.css(elem,type,extra):// Set width or height on the element\n\tjQuery.style(elem,type,value,extra);},type,chainable?margin:undefined,chainable);};});});jQuery.fn.extend({bind:function bind(types,data,fn){return this.on(types,null,data,fn);},unbind:function unbind(types,fn){return this.off(types,null,fn);},delegate:function delegate(selector,types,data,fn){return this.on(types,selector,data,fn);},undelegate:function undelegate(selector,types,fn){// ( namespace ) or ( selector, types [, fn] )\n\treturn arguments.length===1?this.off(selector,\"**\"):this.off(types,selector||\"**\",fn);}});jQuery.parseJSON=JSON.parse;// Register as a named AMD module, since jQuery can be concatenated with other\n\t// files that may use define, but not via a proper concatenation script that\n\t// understands anonymous AMD modules. A named AMD is safest and most robust\n\t// way to register. Lowercase jquery is used because AMD module names are\n\t// derived from file names, and jQuery is normally delivered in a lowercase\n\t// file name. Do this after creating the global so that if an AMD module wants\n\t// to call noConflict to hide this version of jQuery, it will work.\n\t// Note that for maximum portability, libraries that are not jQuery should\n\t// declare themselves as anonymous modules, and avoid setting a global if an\n\t// AMD loader is present. jQuery is a special case. For more information, see\n\t// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon\n\tif(true){!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function(){return jQuery;}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));}var// Map over jQuery in case of overwrite\n\t_jQuery=window.jQuery,// Map over the $ in case of overwrite\n\t_$=window.$;jQuery.noConflict=function(deep){if(window.$===jQuery){window.$=_$;}if(deep&&window.jQuery===jQuery){window.jQuery=_jQuery;}return jQuery;};// Expose jQuery and $ identifiers, even in AMD\n\t// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)\n\t// and CommonJS for browser emulators (#13566)\n\tif(!noGlobal){window.jQuery=window.$=jQuery;}return jQuery;});\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(32)(module)))\n\n/***/ },\n/* 5 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); /* enable zoom */\n\t\n\t\n\tvar _utils = __webpack_require__(1);\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tvar ZoomHandler = function () {\n\t\tfunction ZoomHandler(params) {\n\t\t\t_classCallCheck(this, ZoomHandler);\n\t\n\t\t\tthis.zoomFactor = 0.1 || params.zoomFactor;\n\t\t\tthis.paper = params.paper;\n\t\t\tthis.MIN_SIZE = 40;\n\t\t\tthis.imageWidth = parseInt(this.paper.select(\".main-image\").attr(\"width\"));\n\t\t\tthis.imageHeight = parseInt(this.paper.select(\".main-image\").attr(\"height\"));\n\t\n\t\t\tthis.viewport = {\n\t\t\t\twidth: parseInt(this.paper.attr(\"width\")),\n\t\t\t\theight: parseInt(this.paper.attr(\"height\"))\n\t\t\t};\n\t\n\t\t\tthis.scale = 1;\n\t\t\tthis.paper.attr({ stroke: 2, \"fill\": \"blue\" });\n\t\t\tthis.disableDrag = false;\n\t\t\tthis.imgMinSize = Math.min(this.imageWidth, this.imageHeight);\n\t\t\tthis.lastPosition = [];\n\t\t\tthis.updateViewBox([0, 0, this.imageWidth, this.imageHeight]);\n\t\t}\n\t\n\t\t_createClass(ZoomHandler, [{\n\t\t\tkey: \"testShowCenter\",\n\t\t\tvalue: function testShowCenter(cx, cy) {\n\t\n\t\t\t\tif (this.center) {\n\t\t\t\t\tthis.center.remove();\n\t\t\t\t}\n\t\t\t\tthis.center = this.paper.rect(cx - 3, cy - 3, 20, 20);\n\t\t\t\tthis.center.attr({ \"fill\": \"red\" });\n\t\t\t}\n\t\t}, {\n\t\t\tkey: \"drawTestRectangle\",\n\t\t\tvalue: function drawTestRectangle(cx, cy, w, h) {\n\t\t\t\tvar x = cx - w / 2;\n\t\t\t\tvar y = cy - h / 2;\n\t\t\t\tthis.paper.rect(x, y, w, h);\n\t\t\t}\n\t\t}, {\n\t\t\tkey: \"zoomIn\",\n\t\t\tvalue: function zoomIn() {\n\t\n\t\t\t\t/* current center */\n\t\t\t\tif (this.scale === 9) {\n\t\t\t\t\tthis.scale--;return;\n\t\t\t\t}\n\t\t\t\tvar currentCenterX = this.currentViewBox[0] + this.currentViewBox[2] / 2;\n\t\t\t\tvar currentCenterY = this.currentViewBox[1] + this.currentViewBox[3] / 2;\n\t\t\t\tvar scaleFactor = this.zoomFactor * this.scale;\n\t\t\t\tvar viewBoxW = this.imgMinSize - this.imgMinSize * scaleFactor;\n\t\t\t\tvar viewBoxH = viewBoxW;\n\t\n\t\t\t\tthis.currentViewBox[0] = currentCenterX - viewBoxW / 2;\n\t\t\t\tthis.currentViewBox[1] = currentCenterY - viewBoxH / 2;\n\t\n\t\t\t\tthis.currentViewBox[2] = viewBoxW;\n\t\t\t\tthis.currentViewBox[3] = viewBoxH;\n\t\t\t\tthis.scale++;\n\t\t\t\tthis.updateViewBox();\n\t\t\t}\n\t\t}, {\n\t\t\tkey: \"updateViewBox\",\n\t\t\tvalue: function updateViewBox(currentViewBox, notify) {\n\t\t\t\tnotify = typeof notify === \"boolean\" ? notify : true;\n\t\n\t\t\t\tif (currentViewBox && currentViewBox.length != 4) {\n\t\t\t\t\tthrow new Error(\"Provided currentViewBox is not valid!\");\n\t\t\t\t}\n\t\t\t\tif (currentViewBox) {\n\t\t\t\t\tthis.currentViewBox = currentViewBox;\n\t\t\t\t}\n\t\n\t\t\t\tthis.paper.attr({ \"viewBox\": this.currentViewBox });\n\t\n\t\t\t\tif (!notify) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\n\t\t\t\tvar self = this;\n\t\t\t\t_utils.eventEmitter.emit(\"zoomChanged\", {\n\t\t\t\t\tupdateFunction: function updateFunction(updatedViewBox) {\n\t\t\t\t\t\tself.updateViewBox(updatedViewBox, false);\n\t\t\t\t\t},\n\t\t\t\t\t\"zoomFactor\": this.getZoomFactor(),\n\t\t\t\t\t\"viewport\": this.viewport,\n\t\t\t\t\t\"currentScale\": this.scale,\n\t\t\t\t\t\"imageSize\": { width: this.imageWidth, height: this.imageHeight },\n\t\t\t\t\t\"minSize\": Math.min(this.imageWidth, this.imageHeight),\n\t\t\t\t\t\"currentViewBox\": this.currentViewBox.slice()\n\t\t\t\t});\n\t\t\t}\n\t\t}, {\n\t\t\tkey: \"getZoomFactor\",\n\t\t\tvalue: function getZoomFactor() {\n\t\t\t\treturn {\n\t\t\t\t\tx: this.viewport.width / this.currentViewBox[2],\n\t\t\t\t\ty: this.viewport.height / this.currentViewBox[3]\n\t\t\t\t};\n\t\t\t}\n\t\t}, {\n\t\t\tkey: \"onStart\",\n\t\t\tvalue: function onStart(x, y, e) {\n\t\n\t\t\t\tthis.lastPosition[0] = this.currentViewBox[0];\n\t\t\t\tthis.lastPosition[1] = this.currentViewBox[1];\n\t\n\t\t\t\tif (e.target.className.baseVal === \"drawingHandler\") {\n\t\t\t\t\tthis.disableDrag = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}, {\n\t\t\tkey: \"canDrag\",\n\t\t\tvalue: function canDrag() {\n\t\t\t\treturn !this.disableDrag;\n\t\t\t}\n\t\t}, {\n\t\t\tkey: \"onStop\",\n\t\t\tvalue: function onStop() {\n\t\t\t\tthis.disableDrag = false;\n\t\t\t}\n\t\t}, {\n\t\t\tkey: \"onDrag\",\n\t\t\tvalue: function onDrag(dx, dy, x, y, event) {\n\t\n\t\t\t\tif (!this.canDrag()) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\n\t\t\t\tvar newX = this.lastPosition[0] - dx;\n\t\t\t\tvar newY = this.lastPosition[1] - dy;\n\t\n\t\t\t\t/* maxX bound */\n\t\t\t\tif (newX + this.currentViewBox[2] >= this.viewport.width) {\n\t\t\t\t\tnewX = this.viewport.width - this.currentViewBox[2];\n\t\t\t\t}\n\t\n\t\t\t\t/* maxY bound */\n\t\t\t\tif (newY + this.currentViewBox[3] >= this.viewport.height) {\n\t\t\t\t\tnewY = this.viewport.height - this.currentViewBox[3];\n\t\t\t\t}\n\t\n\t\t\t\tif (newX <= 0) {\n\t\t\t\t\tnewX = 0;\n\t\t\t\t}\n\t\n\t\t\t\tif (newY <= 0) {\n\t\t\t\t\tnewY = 0;\n\t\t\t\t}\n\t\n\t\t\t\tthis.currentViewBox[0] = newX;\n\t\t\t\tthis.currentViewBox[1] = newY;\n\t\n\t\t\t\tthis.updateViewBox();\n\t\t\t}\n\t\t}, {\n\t\t\tkey: \"reset\",\n\t\t\tvalue: function reset() {\n\t\t\t\tthis.scale = 1;\n\t\t\t\tthis.currentViewBox = [0, 0, this.imageWidth, this.imageHeight];\n\t\t\t\tthis.updateViewBox();\n\t\t\t}\n\t\t}, {\n\t\t\tkey: \"zoomOut\",\n\t\t\tvalue: function zoomOut() {\n\t\t\t\tif (this.scale == 1) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\n\t\t\t\tvar currentCenterX = this.currentViewBox[0] + this.currentViewBox[2] / 2;\n\t\t\t\tvar currentCenterY = this.currentViewBox[1] + this.currentViewBox[3] / 2;\n\t\t\t\tvar scaleFactor = this.zoomFactor * (this.scale - 1);\n\t\n\t\t\t\tvar viewBoxW = this.imgMinSize - this.imgMinSize * scaleFactor;\n\t\t\t\tvar viewBoxH = viewBoxW;\n\t\n\t\t\t\tvar topX = currentCenterX - viewBoxW / 2;\n\t\t\t\tvar topY = currentCenterY - viewBoxH / 2;\n\t\n\t\t\t\tthis.currentViewBox[0] = topX; //deal with X and Y\n\t\t\t\tthis.currentViewBox[1] = topY;\n\t\t\t\tthis.currentViewBox[2] = viewBoxW;\n\t\t\t\tthis.currentViewBox[3] = viewBoxH;\n\t\t\t\tthis.updateViewBox();\n\t\t\t\tthis.scale--;\n\t\t\t}\n\t\t}]);\n\t\n\t\treturn ZoomHandler;\n\t}();\n\t\n\texports.default = {\n\t\n\t\tenable_zoom: function enable_zoom(params) {\n\t\t\treturn new ZoomHandler(params);\n\t\t}\n\t};\n\n/***/ },\n/* 6 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __vue_exports__, __vue_options__\n\t\n\t/* script */\n\t__vue_exports__ = __webpack_require__(11)\n\t\n\t/* template */\n\tvar __vue_template__ = __webpack_require__(44)\n\t__vue_options__ = __vue_exports__ || {}\n\tif (__vue_options__.__esModule) __vue_options__ = __vue_options__.default\n\tif (typeof __vue_options__ === \"function\") __vue_options__ = __vue_options__.options\n\t__vue_options__.render = __vue_template__.render\n\t__vue_options__.staticRenderFns = __vue_template__.staticRenderFns\n\t\n\tmodule.exports = __vue_exports__ || __vue_options__\n\n\n/***/ },\n/* 7 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\t\n\tvar _svgboard = __webpack_require__(35);\n\t\n\tvar _svgboard2 = _interopRequireDefault(_svgboard);\n\t\n\tvar _Typeahead = __webpack_require__(2);\n\t\n\tvar _Typeahead2 = _interopRequireDefault(_Typeahead);\n\t\n\tvar _Zoomview = __webpack_require__(6);\n\t\n\tvar _Zoomview2 = _interopRequireDefault(_Zoomview);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\texports.default = {\n\t\n\t\tel: '#drawing-zone',\n\t\tMODE_RECT: 'RECT',\n\t\tMODE_FREE: 'FREE',\n\t\tZOOM_IN: 'in',\n\t\tZOOM_OUT: 'out',\n\t\n\t\tcomponents: { typeahead: _Typeahead2.default, zoomview: _Zoomview2.default },\n\t\tdata: {\n\t\t\tmode: \"\",\n\t\t\tisRect: true,\n\t\t\tnormalizePath: \"\",\n\t\t\treadOnly: false,\n\t\t\tformView: true,\n\t\t\tuseClipPath: false,\n\t\t\ttransformMatrix: \"\",\n\t\t\tfragmentPath: \"\",\n\t\t\tcanZoom: true,\n\t\t\tdisplayMask: false\n\t\t},\n\t\n\t\tmounted: function mounted() {\n\t\t\tvar self = this;\n\t\t\tthis.initialDrawingMode = null;\n\t\t\tthis.drawingComponent = _svgboard2.default.init({\n\t\t\t\twrapperId: '#iconolab-image-wrapper',\n\t\t\t\tactionWrapper: '#action-wrapper',\n\t\t\t\treadOnly: false,\n\t\t\t\tonDrawingModeChange: function onDrawingModeChange(mode) {\n\t\t\t\t\tself.setDrawingMode(mode, false);\n\t\t\t\t}\n\t\t\t});\n\t\t\tthis.$refs.zoomview.setZoomTarget(this.drawingComponent.getPaper());\n\t\t\tthis.showEditor();\n\t\t\tthis.drawingComponent.createTestHandler(10, 20, 50);\n\t\t},\n\t\n\t\n\t\tmethods: {\n\t\n\t\t\tcomputeCentreredViewBox: function computeCentreredViewBox() {\n\t\t\t\tvar zoomSvg = this.$refs.zoomSvg;\n\t\t\t\tvar viewBox = [];\n\t\t\t\tvar imageWidth = zoomSvg.getAttribute(\"width\");\n\t\t\t\tvar imageHeight = zoomSvg.getAttribute(\"height\");\n\t\n\t\t\t\t/* normalize */\n\t\t\t\tvar xRatio = imageWidth / 100;\n\t\t\t\tvar yRatio = imageHeight / 100;\n\t\n\t\t\t\tvar zTarget = this.drawingComponent.getShapeBBox();\n\t\t\t\tviewBox = [(zTarget.x - 1) * xRatio, (zTarget.y - 1) * yRatio, (zTarget.w + 2) * xRatio, (zTarget.h + 2) * yRatio];\n\t\t\t\treturn viewBox.join(\" \");\n\t\t\t},\n\t\n\t\t\tcomputeZoomedViewBox: function computeZoomedViewBox() {\n\t\t\t\tvar viewBoxArray = [];\n\t\t\t\tvar zoomSvg = this.$refs.zoomSvg;\n\t\t\t\tvar shapeBBox = this.drawingComponent.getShapeBBox();\n\t\t\t\tvar imageWidth = zoomSvg.getAttribute(\"width\");\n\t\t\t\tvar imageHeight = zoomSvg.getAttribute(\"height\");\n\t\t\t\tvar xRatio = imageWidth / 100;\n\t\t\t\tvar yRatio = imageHeight / 100;\n\t\t\t\t/* denormalize coordonate, max is imageX * 100x = imageHeigth*/\n\t\t\t\tshapeBBox.x = shapeBBox.x * xRatio;\n\t\t\t\tshapeBBox.y = shapeBBox.y * yRatio;\n\t\n\t\t\t\tshapeBBox.w = shapeBBox.w * xRatio;\n\t\t\t\tshapeBBox.h = shapeBBox.h * yRatio;\n\t\n\t\t\t\tvar imgRatio = imageWidth / imageHeight;\n\t\t\t\tif (shapeBBox.w > shapeBBox.h) {\n\t\t\t\t\tshapeBBox.y = Math.max(0, shapeBBox.y - (shapeBBox.w * imgRatio - shapeBBox.h) / 2);\n\t\t\t\t\tshapeBBox.h = shapeBBox.w * imgRatio;\n\t\t\t\t} else {\n\t\t\t\t\tshapeBBox.x = Math.max(0, shapeBBox.x - (shapeBBox.h / imgRatio - shapeBBox.w) / 2);\n\t\t\t\t\tshapeBBox.w = shapeBBox.h / imgRatio;\n\t\t\t\t}\n\t\t\t\tviewBoxArray = [shapeBBox.x, shapeBBox.y, shapeBBox.w, shapeBBox.h];\n\t\n\t\t\t\tif (!shapeBBox) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\n\t\t\t\treturn viewBoxArray.join(\" \");\n\t\t\t},\n\t\n\t\t\tzoom: function zoom(direction) {\n\t\n\t\t\t\tvar mainSvgWrapper = this.$refs.smallSvgWrapper;\n\t\t\t\tif (this.$options.ZOOM_OUT === direction) {\n\t\t\t\t\tvar defaultViewBox = [0, 0, mainSvgWrapper.getAttribute(\"width\"), mainSvgWrapper.getAttribute(\"height\")];\n\t\t\t\t\tmainSvgWrapper.setAttribute(\"viewBox\", defaultViewBox.join(\" \"));\n\t\t\t\t\tthis.canZoom = true;\n\t\t\t\t}\n\t\n\t\t\t\tif (this.$options.ZOOM_IN === direction) {\n\t\t\t\t\tmainSvgWrapper.setAttribute(\"viewBox\", this.computeCentreredViewBox()); //this.computeZoomedViewBox());//\n\t\t\t\t\tthis.canZoom = false;\n\t\t\t\t}\n\t\t\t},\n\t\n\t\t\tsetDrawingMode: function setDrawingMode(mode, updateComponent) {\n\t\t\t\tif (!this.initialDrawingMode) {\n\t\t\t\t\tthis.initialDrawingMode = mode; //useful for cancel\n\t\t\t\t}\n\t\t\t\tvar updateComponent = typeof updateComponent === \"boolean\" ? updateComponent : true;\n\t\t\t\tthis.mode = this.$options['MODE_' + mode];\n\t\t\t\tthis.isRect = this.mode === this.$options.MODE_RECT ? true : false;\n\t\t\t\tif (updateComponent) {\n\t\t\t\t\tthis.drawingComponent.setDrawingMode(this.mode);\n\t\t\t\t}\n\t\t\t},\n\t\n\t\t\tcancel: function cancel() {\n\t\t\t\tthis.formView = true;\n\t\t\t\tvar currentPath = this.$refs.currentPath.getAttribute(\"d\");\n\t\t\t\tif (!currentPath.length || !this.initialDrawingMode) {\n\t\t\t\t\treturn;\n\t\t\t\t}{\n\t\t\t\t\tcurrentPath += \";\" + this.initialDrawingMode;\n\t\t\t\t\tthis.drawingComponent.setPath(currentPath);\n\t\t\t\t}\n\t\t\t},\n\t\n\t\t\thighLightZone: function highLightZone() {\n\t\t\t\tif (!this.displayMask) {\n\t\t\t\t\tthis.displayMask = true;\n\t\t\t\t} else {\n\t\t\t\t\tthis.displayMask = false;\n\t\t\t\t}\n\t\t\t},\n\t\n\t\t\tdisplayEditedPath: function displayEditedPath() {\n\t\t\t\tvar normalizePath = this.drawingComponent.getPath();\n\t\t\t},\n\t\n\t\t\tresetZoom: function resetZoom() {\n\t\t\t\tthis.zoom(this.$options.ZOOM_OUT);\n\t\t\t},\n\t\n\t\t\tshowEditor: function showEditor() {\n\t\t\t\tthis.formView = true;\n\t\t\t\tthis.resetZoom();\n\t\t\t\t/* on edit mode reset*/\n\t\t\t},\n\t\n\t\t\tshowForm: function showForm() {\n\t\t\t\tthis.normalizePath = this.drawingComponent.getPath();\n\t\t\t\tvar smallImage = this.$refs.smallImage;\n\t\t\t\tthis.formView = true;\n\t\t\t\tvar xRatio = smallImage.getAttribute(\"width\") / 100;\n\t\t\t\tvar yRatio = smallImage.getAttribute(\"height\") / 100;\n\t\t\t\tvar transformMatrix = [xRatio, 0, 0, yRatio, 0, 0].join(',');\n\t\t\t\tthis.transformMatrix = \"matrix(\" + transformMatrix + \")\";\n\t\t\t\tthis.fragmentPath = this.normalizePath.split(';')[0];\n\t\t\t},\n\t\n\t\t\tclear: function clear() {\n\t\t\t\tthis.drawingComponent.clear();\n\t\t\t}\n\t\t}\n\t};\n\n/***/ },\n/* 8 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\t\n\tvar _Typeahead = __webpack_require__(2);\n\t\n\tvar _Typeahead2 = _interopRequireDefault(_Typeahead);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\texports.default = {\n\t\tdata: function data() {\n\t\t\treturn {};\n\t\t},\n\t\n\t\n\t\tcomponents: {\n\t\t\tTypeahead: _Typeahead2.default\n\t\t},\n\t\n\t\tmounted: function mounted() {\n\t\n\t\t\tthis.targetKeyMap = {\n\t\t\t\ttitle: \"proposal-title\",\n\t\t\t\tdesc: \"proposal-description\",\n\t\t\t\tfrag: \"proposal-fragment\"\n\t\t\t};\n\t\n\t\t\tthis.targetFieldTypeMap = {\n\t\t\t\ttitle: \"input\",\n\t\t\t\tdesc: \"input\",\n\t\t\t\tfrag: \"frag\"\n\t\t\t};\n\t\n\t\t\tthis.originalValues = {\n\t\t\t\ttitle: \"\",\n\t\t\t\tdesc: \"\",\n\t\t\t\tfrag: \"\"\n\t\t\t};\n\t\t},\n\t\n\t\n\t\tmethods: {\n\t\n\t\t\tpickProposition: function pickProposition(event, sourceId, targetKey) {\n\t\t\t\tvar value = \"\";\n\t\t\t\tvar source = document.getElementById(sourceId);\n\t\t\t\tvar targetField = this.$refs[this.targetKeyMap[targetKey]];\n\t\t\t\tvar targetType = this.targetFieldTypeMap[targetKey];\n\t\t\t\tif (!targetType) {\n\t\t\t\t\tthrow new Error(\"A target type must be provided...\");\n\t\t\t\t}\n\t\n\t\t\t\tif (targetType === \"input\") {\n\t\t\t\t\tvalue = targetField.value;\n\t\t\t\t\ttargetField.value = source.value;\n\t\t\t\t}\n\t\n\t\t\t\tif (targetType === \"frag\") {\n\t\t\t\t\tvalue = targetField.getAttribute(\"d\");\n\t\t\t\t\tvar sourceValue = source.getAttribute(\"d\");\n\t\t\t\t\tvar targetPathType = targetField.getAttribute(\"data-path-type\");\n\t\t\t\t\ttargetField.setAttribute(\"d\", sourceValue);\n\t\n\t\t\t\t\tvar pathType = source.getAttribute(\"data-path-type\");\n\t\t\t\t\tpathType = pathType || \"FREE\";\n\t\t\t\t\tvar fragmentField = this.$refs[\"fragment-field\"];\n\t\t\t\t\tfragmentField.value = sourceValue + \";\" + pathType;\n\t\t\t\t}\n\t\n\t\t\t\tthis.preserveOriginalValue(targetKey, value);\n\t\t\t},\n\t\n\t\t\tpickTag: function pickTag(event, refTag) {\n\t\t\t\tvar source = this.$refs[refTag];\n\t\t\t\tvar target = this.$refs['proposal-tags'];\n\t\t\t\tthis.preserveOriginalValue('proposal-tags', target.tags);\n\t\t\t\ttarget.setTags(source.tags, true);\n\t\t\t},\n\t\n\t\t\tpreserveOriginalValue: function preserveOriginalValue(key, value) {\n\t\t\t\tif (!this.originalValues[key]) {\n\t\t\t\t\tthis.originalValues[key] = value;\n\t\t\t\t}\n\t\t\t},\n\t\n\t\t\thightlightSource: function hightlightSource(source) {\n\t\t\t\tsource.className += \"highlight\";\n\t\t\t},\n\t\n\t\t\tsave: function save() {\n\t\t\t\talert(\"this is it ... \");\n\t\t\t}\n\t\t}\n\t};\n\n/***/ },\n/* 9 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\t\n\tvar _utils = __webpack_require__(1);\n\t\n\texports.default = {\n\t\tdata: function data() {\n\t\t\treturn {\n\t\t\t\ttags: [],\n\t\t\t\treadOnly: false\n\t\t\t};\n\t\t},\n\t\n\t\n\t\tmethods: {\n\t\t\tremoveTag: function removeTag(index) {\n\t\t\t\tthis.tags.$remove(index);\n\t\t\t\tthis.normalizeSelectedTags();\n\t\t\t},\n\t\n\t\t\treset: function reset() {\n\t\t\t\tthis.tags = [];\n\t\t\t\tthis.normalizeSelectedTags();\n\t\t\t},\n\t\n\t\t\t/* check tag already exists */\n\t\t\ttagAlreadyExists: function tagAlreadyExists(tag) {\n\t\t\t\tvar result = false;\n\t\t\t\tvar found = this.tags.find(function (userTag) {\n\t\n\t\t\t\t\tif (!userTag.tag_link) {\n\t\n\t\t\t\t\t\tif (userTag.tag_label === tag.tag_label) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (userTag.tag_link === tag.tag_link) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif (found) {\n\t\t\t\t\tvar tagNode = this.$refs[found.id][0];\n\t\t\t\t\ttagNode.style.border = \"1px solid red\";\n\t\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t\ttagNode.style.border = \"\";\n\t\t\t\t\t}, 1000);\n\t\t\t\t\tresult = true;\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t},\n\t\t\tsetTags: function setTags(tagArrays) {\n\t\n\t\t\t\tif (!Array.isArray(tagArrays)) {\n\t\t\t\t\tnew Error('setTags expects an array!');\n\t\t\t\t}\n\t\t\t\tvar self = this;\n\t\t\t\ttagArrays.map(function (tag) {\n\t\t\t\t\tself.addTag(tag);\n\t\t\t\t});\n\t\t\t},\n\t\t\taddTag: function addTag(tag) {\n\t\n\t\t\t\tif (this.tagAlreadyExists(tag)) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\n\t\t\t\tif (!tag || !tag.hasOwnProperty('tag_label')) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\n\t\t\t\tif (!tag.id) {\n\t\t\t\t\ttag.id = (0, _utils.generateId)('tag_');\n\t\t\t\t}\n\t\n\t\t\t\tthis.tags.push(tag);\n\t\t\t\tthis.normalizeSelectedTags();\n\t\t\t},\n\t\t\tnormalizeSelectedTags: function normalizeSelectedTags() {\n\t\t\t\tvar result = [];\n\t\n\t\t\t\tthis.tags.map(function (tag) {\n\t\t\t\t\tvar tagItem = {};\n\t\t\t\t\ttagItem.tag_input = typeof tag.tag_link === \"string\" && tag.tag_link.length ? tag.tag_link : tag.tag_label;\n\t\t\t\t\ttagItem.accuracy = tag.accuracy;\n\t\t\t\t\ttagItem.relevancy = tag.relevancy;\n\t\t\t\t\tresult.push(tagItem);\n\t\t\t\t});\n\t\t\t\tthis.$parent.$data.selectedTags = JSON.stringify(result);\n\t\t\t},\n\t\n\t\n\t\t\tupdateAccuracy: function updateAccuracy(event, tag) {\n\t\t\t\ttag.accuracy = event.target.value;\n\t\t\t\tthis.normalizeSelectedTags();\n\t\t\t},\n\t\n\t\t\tupdatePertinence: function updatePertinence(event, tag) {\n\t\t\t\ttag.relevancy = event.target.value;\n\t\t\t\tthis.normalizeSelectedTags();\n\t\t\t}\n\t\t}\n\t}; //\n\n/***/ },\n/* 10 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\t\n\tvar _vueTypeahead = __webpack_require__(29);\n\t\n\tvar _vueTypeahead2 = _interopRequireDefault(_vueTypeahead);\n\t\n\tvar _Taglist = __webpack_require__(42);\n\t\n\tvar _Taglist2 = _interopRequireDefault(_Taglist);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\t//\n\t//\n\t//\n\t\n\tvar autoCompletePath = \"http://lookup.dbpedia.org/api/search/PrefixSearch?MaxHits=5\";\n\tvar wikipediaPath = \"http://fr.wikipedia.org/w/api.php\";\n\tvar parentsMethods = {\n\t\treset: _vueTypeahead2.default.methods.reset\n\t};\n\t\n\tvar get = function get(url, data) {\n\t\tvar dfd = jQuery.Deferred();\n\t\tvar promise = jQuery.getJSON(url, data).done(function (response) {\n\t\t\tvar envelope = {};\n\t\t\tenvelope.data = response;\n\t\t\tdfd.resolve(envelope);\n\t\t}).fail(dfd.reject);\n\t\treturn dfd.promise();\n\t};\n\t\n\texports.default = {\n\t\tmixins: [_vueTypeahead2.default],\n\t\tcomponents: { 'taglist': _Taglist2.default },\n\t\n\t\tprops: ['tags', 'read-only'],\n\t\n\t\tmounted: function mounted() {\n\t\t\tthis.taglist = this.$refs.taglist;\n\t\t\tthis.taglist.readOnly = this.readOnly;\n\t\t\tthis.setTags(this.tags);\n\t\t},\n\t\tdata: function data() {\n\t\t\treturn {\n\t\t\t\tsrc: autoCompletePath,\n\t\t\t\tlimit: 7,\n\t\t\t\tminChars: 2,\n\t\t\t\tshowAddButton: false,\n\t\t\t\tdatasource: \"wikipedia\",\n\t\t\t\tselectedTags: \"[]\",\n\t\t\t\titems: [],\n\t\t\t\tqueryParamName: \"QueryString\"\n\t\n\t\t\t};\n\t\t},\n\t\n\t\n\t\tmethods: {\n\t\t\tsetTags: function setTags(tags, reset) {\n\t\t\t\ttags = Array.isArray(tags) ? tags : [];\n\t\t\t\treset = typeof reset === \"boolean\" ? reset : false;\n\t\t\t\tif (reset) {\n\t\t\t\t\tthis.taglist.reset();\n\t\t\t\t}\n\t\t\t\tthis.taglist.setTags(tags);\n\t\t\t},\n\t\t\tcheckQuery: function checkQuery() {\n\t\t\t\tif (this.query.length === 0) {\n\t\t\t\t\tthis.reset();\n\t\t\t\t}\n\t\t\t},\n\t\t\tfetch: function fetch() {\n\t\t\t\tif (this.datasource === \"wikipedia\") {\n\t\t\t\t\treturn this.fetchWikiPedia();\n\t\t\t\t} else {\n\t\t\t\t\tvar request = {};\n\t\t\t\t\trequest[this.queryParamName] = this.query;\n\t\t\t\t\treturn get(this.src, query);\n\t\t\t\t}\n\t\t\t},\n\t\t\tfetchWikiPedia: function fetchWikiPedia() {\n\t\t\t\tthis.src = wikipediaPath;\n\t\t\t\tvar self = this;\n\t\t\t\tvar request = {\n\t\t\t\t\t'action': 'opensearch',\n\t\t\t\t\t'format': 'json',\n\t\t\t\t\t'search': this.query\n\t\t\t\t};\n\t\n\t\t\t\t/* make request */\n\t\t\t\tvar dfd = jQuery.Deferred();\n\t\t\t\tjQuery.ajax({\n\t\t\t\t\turl: this.src,\n\t\t\t\t\tdata: request,\n\t\t\t\t\tdataType: \"jsonp\",\n\t\t\t\t\tsuccess: function success(response) {\n\t\t\t\t\t\tvar envelope = {};\n\t\t\t\t\t\tenvelope.data = response;\n\t\t\t\t\t\tdfd.resolve(envelope);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn dfd.promise();\n\t\t\t},\n\t\t\treset: function reset() {\n\t\t\t\tthis.showAddButton = false;\n\t\t\t\tparentsMethods.reset.call(this);\n\t\t\t},\n\t\t\tprepareWikipediaResponse: function prepareWikipediaResponse(data) {\n\t\t\t\tvar results = [];\n\t\t\t\tif (data.length !== 4) {\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t\tvar labelsList = data[1];\n\t\t\t\tvar urlsList = data[3];\n\t\n\t\t\t\tif (labelsList.length !== urlsList.length) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\n\t\t\t\tlabelsList.map(function (item, index) {\n\t\t\t\t\tvar tagItem = {};\n\t\t\t\t\ttagItem.tag_label = item;\n\t\t\t\t\tvar link = urlsList[index];\n\t\t\t\t\tlink = link.replace(\"https://fr.wikipedia.org/wiki/\", \"http://fr.dbpedia.org/resource/\");\n\t\t\t\t\ttagItem.tag_link = decodeURI(link);\n\t\t\t\t\ttagItem.accuracy = 1;\n\t\t\t\t\ttagItem.relevancy = 1;\n\t\t\t\t\tresults.push(tagItem);\n\t\t\t\t});\n\t\n\t\t\t\treturn results;\n\t\t\t},\n\t\t\tprepareResponseData: function prepareResponseData(data) {\n\t\t\t\tvar responseData = typeof data === 'string' ? JSON.parse(data) : data;\n\t\n\t\t\t\tif (this.datasource === \"wikipedia\") {\n\t\t\t\t\tresponseData = this.prepareWikipediaResponse(responseData);\n\t\t\t\t}\n\t\n\t\t\t\tif (Array.isArray(responseData) && !responseData.length) {\n\t\t\t\t\tthis.showAddButton = true;\n\t\t\t\t}\n\t\t\t\treturn responseData;\n\t\t\t},\n\t\t\taddTag: function addTag() {\n\t\t\t\tif (this.hasItems) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tvar tag = { tag_label: this.query, accuracy: 1, relevancy: 1 };\n\t\t\t\tthis.$refs.taglist.addTag(tag);\n\t\t\t\tthis.reset();\n\t\t\t},\n\t\t\tonHit: function onHit(selected) {\n\t\t\t\tthis.$refs.taglist.addTag(selected);\n\t\t\t\tthis.reset();\n\t\t\t}\n\t\t}\n\t\n\t};\n\n/***/ },\n/* 11 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\t\n\tvar _utils = __webpack_require__(1);\n\t\n\tvar _snapsvgZoom = __webpack_require__(5);\n\t\n\tvar _snapsvgZoom2 = _interopRequireDefault(_snapsvgZoom);\n\t\n\tvar _snapsvg = __webpack_require__(3);\n\t\n\tvar _snapsvg2 = _interopRequireDefault(_snapsvg);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\texports.default = {\n\t\n\t\tprops: ['image-url', 'image-width', 'image-height', 'zoomTarget', 'main-image-id'],\n\t\n\t\tmounted: function mounted() {\n\t\t\tthis.root = new _snapsvg2.default(this.$refs['root-svg']);\n\t\t\tthis.handler = this.root.select('#zoom-handler');\n\t\t\tthis.image = this.root.select('#small-image');\n\t\t\tthis.root.attr({ width: 101, height: 101 });\n\t\t\tvar imageWidth = parseInt(this.image.attr(\"width\"));\n\t\t\tvar imageHeight = parseInt(this.image.attr(\"height\"));\n\t\t\t/* center image in the viewport */\n\t\t\tthis.root.attr({ viewBox: [0, 0, imageWidth, imageHeight] });\n\t\t\tthis.imgMinSize = Math.min(imageWidth, imageHeight);\n\t\n\t\t\tthis.handlerSize = 20;\n\t\t\tthis.handler.attr({ 'width': this.handlerSize, 'height': this.handlerSize });\n\t\t\tthis.currentViewBox = null;\n\t\t\tthis.currentViewport = null;\n\t\t\tthis.updateFunction = null;\n\t\t\tvar target = document.getElementById('zoomTarget');\n\t\n\t\t\tif (target) {\n\t\t\t\tthis.setZoomTarget(target);\n\t\t\t}\n\t\t\tthis.handleEvents();\n\t\t},\n\t\tdata: function data() {\n\t\t\treturn {\n\t\t\t\tshowHandler: false\n\t\t\t};\n\t\t},\n\t\n\t\tmethods: {\n\t\n\t\t\tsetZoomTarget: function setZoomTarget(zoomtarget) {\n\t\n\t\t\t\tif (zoomtarget.hasOwnProperty(\"type\") && zoomtarget.type === 'svg') {\n\t\t\t\t\tthis.paper = zoomtarget;\n\t\t\t\t} else {\n\t\n\t\t\t\t\tthis.paper = new _snapsvg2.default(zoomtarget);\n\t\t\t\t\tvar mainImage = this.paper.select(\"#\" + this.mainImageId);\n\t\t\t\t\tif (!mainImage) {\n\t\t\t\t\t\tthrow new Error(\"A main image wasn't found.\");\n\t\t\t\t\t};\n\t\t\t\t}\n\t\n\t\t\t\tthis.zoomHandler = _snapsvgZoom2.default.enable_zoom(this.paper);\n\t\t\t},\n\t\n\t\t\tincraseDrawingZoom: function incraseDrawingZoom() {\n\t\t\t\tthis.zoomHandler.zoomIn();\n\t\t\t},\n\t\n\t\t\tresetDrawingZoom: function resetDrawingZoom() {\n\t\t\t\tthis.zoomHandler.reset();\n\t\t\t},\n\t\n\t\t\tdecreaseDrawingZoom: function decreaseDrawingZoom() {\n\t\t\t\tthis.zoomHandler.zoomOut();\n\t\t\t},\n\t\n\t\t\thandleEvents: function handleEvents() {\n\t\t\t\t_utils.eventEmitter.on('zoomChanged', this.handleZoomChanged.bind(this));\n\t\t\t\tvar self = this;\n\t\n\t\t\t\tthis.handler.drag(function (dx, dy) {\n\t\t\t\t\tvar bbox = this.getBBox();\n\t\t\t\t\tvar startX = this.data(\"startPosition\").x;\n\t\t\t\t\tvar startY = this.data(\"startPosition\").y;\n\t\t\t\t\tvar imageWidth = parseInt(self.image.attr('width'));\n\t\t\t\t\tvar imageHeight = parseInt(self.image.attr('height'));\n\t\n\t\t\t\t\t/* New X */\n\t\t\t\t\tvar newX = startX + dx;\n\t\t\t\t\tvar newY = startY + dy;\n\t\n\t\t\t\t\t/* XBound */\n\t\t\t\t\tif (newX + bbox.w >= imageWidth) {\n\t\t\t\t\t\tnewX = imageWidth - bbox.w;\n\t\t\t\t\t}\n\t\t\t\t\t/* YBound */\n\t\t\t\t\tif (newY + bbox.h >= imageHeight) {\n\t\t\t\t\t\tnewY = imageHeight - bbox.h;\n\t\t\t\t\t}\n\t\n\t\t\t\t\tnewX = newX < 0 ? 0 : newX;\n\t\t\t\t\tnewY = newY < 0 ? 0 : newY;\n\t\n\t\t\t\t\tvar transformedValue = \"T\" + [newX, newY];\n\t\t\t\t\tthis.attr(\"transform\", transformedValue);\n\t\t\t\t\tself.notifyMove(this.getBBox().x, this.getBBox().y);\n\t\t\t\t}, function () {\n\t\t\t\t\tthis.data(\"startPosition\", { x: this.getBBox().x, y: this.getBBox().y });\n\t\t\t\t\tthis.data(\"origTransform\", this.transform().local);\n\t\t\t\t}, function () {});\n\t\t\t},\n\t\n\t\t\tmoveHandlerToCenter: function moveHandlerToCenter(x, c) {\n\t\t\t\tcx = cx ? cx : this.width / 2;\n\t\t\t\tcy = cy ? cy : this.height / 2;\n\t\t\t\tvar moveX = cx - this.handler.getBBox().w / 2;\n\t\t\t\tvar moveY = cy - this.handler.getBBox().h / 2;\n\t\t\t\tthis.handler.transform(\"T\" + [moveX, moveY]);\n\t\t\t},\n\t\n\t\t\tnotifyMove: function notifyMove(x, y) {\n\t\t\t\t_utils.eventEmitter.emit(\"moveZoomHandler\", {\n\t\t\t\t\tx: x,\n\t\t\t\t\ty: y,\n\t\t\t\t\tviewport: {\n\t\t\t\t\t\twidth: this.image.attr(\"width\"),\n\t\t\t\t\t\theight: this.image.attr(\"height\")\n\t\t\t\t\t} });\n\t\n\t\t\t\tif (!this.currentViewBox || !this.currentViewport || typeof this.updateFunction !== 'function') {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\n\t\t\t\t/*longueur image=> longueur viewbox */\n\t\t\t\tvar xRatio = this.currentImageSize.width / this.image.attr('width');\n\t\t\t\tvar yRatio = this.currentImageSize.height / this.image.attr('height');\n\t\t\t\tvar newX = x * xRatio;\n\t\t\t\tvar newY = y * yRatio;\n\t\t\t\tthis.currentViewBox[0] = newX;\n\t\t\t\tthis.currentViewBox[1] = newY;\n\t\t\t\tthis.updateFunction(this.currentViewBox);\n\t\t\t},\n\t\n\t\t\thandleZoomChanged: function handleZoomChanged(zoomInfos) {\n\t\n\t\t\t\tif (zoomInfos.currentScale === 1) {\n\t\t\t\t\tthis.showHandler = false;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\n\t\t\t\tthis.showHandler = true;\n\t\n\t\t\t\tthis.currentViewport = zoomInfos.viewport;\n\t\t\t\tthis.currentViewBox = zoomInfos.currentViewBox;\n\t\t\t\tthis.currentImageSize = zoomInfos.imageSize;\n\t\t\t\tthis.updateFunction = zoomInfos.updateFunction;\n\t\t\t\tvar handlerSize = zoomInfos.currentViewBox[2] * this.imgMinSize / zoomInfos.minSize;\n\t\n\t\t\t\tthis.handler.attr(\"width\", handlerSize);\n\t\t\t\tthis.handler.attr(\"height\", handlerSize);\n\t\n\t\t\t\t/*compute handler x, y */\n\t\t\t\tvar x = zoomInfos.currentViewBox[0] * this.image.attr(\"width\") / zoomInfos.imageSize.width;\n\t\t\t\tvar y = zoomInfos.currentViewBox[1] * this.image.attr(\"height\") / zoomInfos.imageSize.height;\n\t\t\t\tthis.handler.transform(\"T\" + [x, y]);\n\t\t\t}\n\t\t}\n\t}; //\n\t//\n\t//\n\n/***/ },\n/* 12 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\t\n\t/*\r\n\t\tMIT License http://www.opensource.org/licenses/mit-license.php\r\n\t\tAuthor Tobias Koppers @sokra\r\n\t*/\n\t// css base code, injected by the css-loader\n\tmodule.exports = function () {\n\t\tvar list = [];\n\t\n\t\t// return the list of modules as css string\n\t\tlist.toString = function toString() {\n\t\t\tvar result = [];\n\t\t\tfor (var i = 0; i < this.length; i++) {\n\t\t\t\tvar item = this[i];\n\t\t\t\tif (item[2]) {\n\t\t\t\t\tresult.push(\"@media \" + item[2] + \"{\" + item[1] + \"}\");\n\t\t\t\t} else {\n\t\t\t\t\tresult.push(item[1]);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn result.join(\"\");\n\t\t};\n\t\n\t\t// import a list of modules into the list\n\t\tlist.i = function (modules, mediaQuery) {\n\t\t\tif (typeof modules === \"string\") modules = [[null, modules, \"\"]];\n\t\t\tvar alreadyImportedModules = {};\n\t\t\tfor (var i = 0; i < this.length; i++) {\n\t\t\t\tvar id = this[i][0];\n\t\t\t\tif (typeof id === \"number\") alreadyImportedModules[id] = true;\n\t\t\t}\n\t\t\tfor (i = 0; i < modules.length; i++) {\n\t\t\t\tvar item = modules[i];\n\t\t\t\t// skip already imported module\n\t\t\t\t// this implementation is not 100% perfect for weird media query combinations\n\t\t\t\t// when a module is imported multiple times with different media queries.\n\t\t\t\t// I hope this will never occur (Hey this way we have smaller bundles)\n\t\t\t\tif (typeof item[0] !== \"number\" || !alreadyImportedModules[item[0]]) {\n\t\t\t\t\tif (mediaQuery && !item[2]) {\n\t\t\t\t\t\titem[2] = mediaQuery;\n\t\t\t\t\t} else if (mediaQuery) {\n\t\t\t\t\t\titem[2] = \"(\" + item[2] + \") and (\" + mediaQuery + \")\";\n\t\t\t\t\t}\n\t\t\t\t\tlist.push(item);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\treturn list;\n\t};\n\n/***/ },\n/* 13 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar assign = __webpack_require__(14),\n\t normalizeOpts = __webpack_require__(21),\n\t isCallable = __webpack_require__(17),\n\t contains = __webpack_require__(24),\n\t d;\n\t\n\td = module.exports = function (dscr, value /*, options*/) {\n\t\tvar c, e, w, options, desc;\n\t\tif (arguments.length < 2 || typeof dscr !== 'string') {\n\t\t\toptions = value;\n\t\t\tvalue = dscr;\n\t\t\tdscr = null;\n\t\t} else {\n\t\t\toptions = arguments[2];\n\t\t}\n\t\tif (dscr == null) {\n\t\t\tc = w = true;\n\t\t\te = false;\n\t\t} else {\n\t\t\tc = contains.call(dscr, 'c');\n\t\t\te = contains.call(dscr, 'e');\n\t\t\tw = contains.call(dscr, 'w');\n\t\t}\n\t\n\t\tdesc = { value: value, configurable: c, enumerable: e, writable: w };\n\t\treturn !options ? desc : assign(normalizeOpts(options), desc);\n\t};\n\t\n\td.gs = function (dscr, get, set /*, options*/) {\n\t\tvar c, e, options, desc;\n\t\tif (typeof dscr !== 'string') {\n\t\t\toptions = set;\n\t\t\tset = get;\n\t\t\tget = dscr;\n\t\t\tdscr = null;\n\t\t} else {\n\t\t\toptions = arguments[3];\n\t\t}\n\t\tif (get == null) {\n\t\t\tget = undefined;\n\t\t} else if (!isCallable(get)) {\n\t\t\toptions = get;\n\t\t\tget = set = undefined;\n\t\t} else if (set == null) {\n\t\t\tset = undefined;\n\t\t} else if (!isCallable(set)) {\n\t\t\toptions = set;\n\t\t\tset = undefined;\n\t\t}\n\t\tif (dscr == null) {\n\t\t\tc = true;\n\t\t\te = false;\n\t\t} else {\n\t\t\tc = contains.call(dscr, 'c');\n\t\t\te = contains.call(dscr, 'e');\n\t\t}\n\t\n\t\tdesc = { get: get, set: set, configurable: c, enumerable: e };\n\t\treturn !options ? desc : assign(normalizeOpts(options), desc);\n\t};\n\n/***/ },\n/* 14 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tmodule.exports = __webpack_require__(15)() ? Object.assign : __webpack_require__(16);\n\n/***/ },\n/* 15 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tmodule.exports = function () {\n\t\tvar assign = Object.assign,\n\t\t obj;\n\t\tif (typeof assign !== 'function') return false;\n\t\tobj = { foo: 'raz' };\n\t\tassign(obj, { bar: 'dwa' }, { trzy: 'trzy' });\n\t\treturn obj.foo + obj.bar + obj.trzy === 'razdwatrzy';\n\t};\n\n/***/ },\n/* 16 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar keys = __webpack_require__(18),\n\t value = __webpack_require__(23),\n\t max = Math.max;\n\t\n\tmodule.exports = function (dest, src /*, …srcn*/) {\n\t\tvar error,\n\t\t i,\n\t\t l = max(arguments.length, 2),\n\t\t assign;\n\t\tdest = Object(value(dest));\n\t\tassign = function assign(key) {\n\t\t\ttry {\n\t\t\t\tdest[key] = src[key];\n\t\t\t} catch (e) {\n\t\t\t\tif (!error) error = e;\n\t\t\t}\n\t\t};\n\t\tfor (i = 1; i < l; ++i) {\n\t\t\tsrc = arguments[i];\n\t\t\tkeys(src).forEach(assign);\n\t\t}\n\t\tif (error !== undefined) throw error;\n\t\treturn dest;\n\t};\n\n/***/ },\n/* 17 */\n/***/ function(module, exports) {\n\n\t// Deprecated\n\t\n\t'use strict';\n\t\n\tmodule.exports = function (obj) {\n\t return typeof obj === 'function';\n\t};\n\n/***/ },\n/* 18 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tmodule.exports = __webpack_require__(19)() ? Object.keys : __webpack_require__(20);\n\n/***/ },\n/* 19 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tmodule.exports = function () {\n\t\ttry {\n\t\t\tObject.keys('primitive');\n\t\t\treturn true;\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t};\n\n/***/ },\n/* 20 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tvar keys = Object.keys;\n\t\n\tmodule.exports = function (object) {\n\t\treturn keys(object == null ? object : Object(object));\n\t};\n\n/***/ },\n/* 21 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tvar forEach = Array.prototype.forEach,\n\t create = Object.create;\n\t\n\tvar process = function process(src, obj) {\n\t\tvar key;\n\t\tfor (key in src) {\n\t\t\tobj[key] = src[key];\n\t\t}\n\t};\n\t\n\tmodule.exports = function (options /*, …options*/) {\n\t\tvar result = create(null);\n\t\tforEach.call(arguments, function (options) {\n\t\t\tif (options == null) return;\n\t\t\tprocess(Object(options), result);\n\t\t});\n\t\treturn result;\n\t};\n\n/***/ },\n/* 22 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tmodule.exports = function (fn) {\n\t\tif (typeof fn !== 'function') throw new TypeError(fn + \" is not a function\");\n\t\treturn fn;\n\t};\n\n/***/ },\n/* 23 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tmodule.exports = function (value) {\n\t\tif (value == null) throw new TypeError(\"Cannot use null or undefined\");\n\t\treturn value;\n\t};\n\n/***/ },\n/* 24 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tmodule.exports = __webpack_require__(25)() ? String.prototype.contains : __webpack_require__(26);\n\n/***/ },\n/* 25 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tvar str = 'razdwatrzy';\n\t\n\tmodule.exports = function () {\n\t\tif (typeof str.contains !== 'function') return false;\n\t\treturn str.contains('dwa') === true && str.contains('foo') === false;\n\t};\n\n/***/ },\n/* 26 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tvar indexOf = String.prototype.indexOf;\n\t\n\tmodule.exports = function (searchString /*, position*/) {\n\t\treturn indexOf.call(this, searchString, arguments[1]) > -1;\n\t};\n\n/***/ },\n/* 27 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol ? \"symbol\" : typeof obj; };\n\t\n\tvar d = __webpack_require__(13),\n\t callable = __webpack_require__(22),\n\t apply = Function.prototype.apply,\n\t call = Function.prototype.call,\n\t create = Object.create,\n\t defineProperty = Object.defineProperty,\n\t defineProperties = Object.defineProperties,\n\t hasOwnProperty = Object.prototype.hasOwnProperty,\n\t descriptor = { configurable: true, enumerable: false, writable: true },\n\t on,\n\t _once2,\n\t off,\n\t emit,\n\t methods,\n\t descriptors,\n\t base;\n\t\n\ton = function on(type, listener) {\n\t\tvar data;\n\t\n\t\tcallable(listener);\n\t\n\t\tif (!hasOwnProperty.call(this, '__ee__')) {\n\t\t\tdata = descriptor.value = create(null);\n\t\t\tdefineProperty(this, '__ee__', descriptor);\n\t\t\tdescriptor.value = null;\n\t\t} else {\n\t\t\tdata = this.__ee__;\n\t\t}\n\t\tif (!data[type]) data[type] = listener;else if (_typeof(data[type]) === 'object') data[type].push(listener);else data[type] = [data[type], listener];\n\t\n\t\treturn this;\n\t};\n\t\n\t_once2 = function once(type, listener) {\n\t\tvar _once, self;\n\t\n\t\tcallable(listener);\n\t\tself = this;\n\t\ton.call(this, type, _once = function once() {\n\t\t\toff.call(self, type, _once);\n\t\t\tapply.call(listener, this, arguments);\n\t\t});\n\t\n\t\t_once.__eeOnceListener__ = listener;\n\t\treturn this;\n\t};\n\t\n\toff = function off(type, listener) {\n\t\tvar data, listeners, candidate, i;\n\t\n\t\tcallable(listener);\n\t\n\t\tif (!hasOwnProperty.call(this, '__ee__')) return this;\n\t\tdata = this.__ee__;\n\t\tif (!data[type]) return this;\n\t\tlisteners = data[type];\n\t\n\t\tif ((typeof listeners === 'undefined' ? 'undefined' : _typeof(listeners)) === 'object') {\n\t\t\tfor (i = 0; candidate = listeners[i]; ++i) {\n\t\t\t\tif (candidate === listener || candidate.__eeOnceListener__ === listener) {\n\t\t\t\t\tif (listeners.length === 2) data[type] = listeners[i ? 0 : 1];else listeners.splice(i, 1);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif (listeners === listener || listeners.__eeOnceListener__ === listener) {\n\t\t\t\tdelete data[type];\n\t\t\t}\n\t\t}\n\t\n\t\treturn this;\n\t};\n\t\n\temit = function emit(type) {\n\t\tvar i, l, listener, listeners, args;\n\t\n\t\tif (!hasOwnProperty.call(this, '__ee__')) return;\n\t\tlisteners = this.__ee__[type];\n\t\tif (!listeners) return;\n\t\n\t\tif ((typeof listeners === 'undefined' ? 'undefined' : _typeof(listeners)) === 'object') {\n\t\t\tl = arguments.length;\n\t\t\targs = new Array(l - 1);\n\t\t\tfor (i = 1; i < l; ++i) {\n\t\t\t\targs[i - 1] = arguments[i];\n\t\t\t}listeners = listeners.slice();\n\t\t\tfor (i = 0; listener = listeners[i]; ++i) {\n\t\t\t\tapply.call(listener, this, args);\n\t\t\t}\n\t\t} else {\n\t\t\tswitch (arguments.length) {\n\t\t\t\tcase 1:\n\t\t\t\t\tcall.call(listeners, this);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 2:\n\t\t\t\t\tcall.call(listeners, this, arguments[1]);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 3:\n\t\t\t\t\tcall.call(listeners, this, arguments[1], arguments[2]);\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tl = arguments.length;\n\t\t\t\t\targs = new Array(l - 1);\n\t\t\t\t\tfor (i = 1; i < l; ++i) {\n\t\t\t\t\t\targs[i - 1] = arguments[i];\n\t\t\t\t\t}\n\t\t\t\t\tapply.call(listeners, this, args);\n\t\t\t}\n\t\t}\n\t};\n\t\n\tmethods = {\n\t\ton: on,\n\t\tonce: _once2,\n\t\toff: off,\n\t\temit: emit\n\t};\n\t\n\tdescriptors = {\n\t\ton: d(on),\n\t\tonce: d(_once2),\n\t\toff: d(off),\n\t\temit: d(emit)\n\t};\n\t\n\tbase = defineProperties({}, descriptors);\n\t\n\tmodule.exports = exports = function exports(o) {\n\t\treturn o == null ? create(base) : defineProperties(Object(o), descriptors);\n\t};\n\texports.methods = methods;\n\n/***/ },\n/* 28 */\n/***/ function(module, exports) {\n\n\t/*!\n\t * vue-resource v0.9.1\n\t * https://github.com/vuejs/vue-resource\n\t * Released under the MIT License.\n\t */\n\t\n\t'use strict';\n\t\n\t/**\n\t * Promises/A+ polyfill v1.1.4 (https://github.com/bramstein/promis)\n\t */\n\t\n\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol ? \"symbol\" : typeof obj; };\n\t\n\tvar RESOLVED = 0;\n\tvar REJECTED = 1;\n\tvar PENDING = 2;\n\t\n\tfunction Promise$2(executor) {\n\t\n\t this.state = PENDING;\n\t this.value = undefined;\n\t this.deferred = [];\n\t\n\t var promise = this;\n\t\n\t try {\n\t executor(function (x) {\n\t promise.resolve(x);\n\t }, function (r) {\n\t promise.reject(r);\n\t });\n\t } catch (e) {\n\t promise.reject(e);\n\t }\n\t}\n\t\n\tPromise$2.reject = function (r) {\n\t return new Promise$2(function (resolve, reject) {\n\t reject(r);\n\t });\n\t};\n\t\n\tPromise$2.resolve = function (x) {\n\t return new Promise$2(function (resolve, reject) {\n\t resolve(x);\n\t });\n\t};\n\t\n\tPromise$2.all = function all(iterable) {\n\t return new Promise$2(function (resolve, reject) {\n\t var count = 0,\n\t result = [];\n\t\n\t if (iterable.length === 0) {\n\t resolve(result);\n\t }\n\t\n\t function resolver(i) {\n\t return function (x) {\n\t result[i] = x;\n\t count += 1;\n\t\n\t if (count === iterable.length) {\n\t resolve(result);\n\t }\n\t };\n\t }\n\t\n\t for (var i = 0; i < iterable.length; i += 1) {\n\t Promise$2.resolve(iterable[i]).then(resolver(i), reject);\n\t }\n\t });\n\t};\n\t\n\tPromise$2.race = function race(iterable) {\n\t return new Promise$2(function (resolve, reject) {\n\t for (var i = 0; i < iterable.length; i += 1) {\n\t Promise$2.resolve(iterable[i]).then(resolve, reject);\n\t }\n\t });\n\t};\n\t\n\tvar p$1 = Promise$2.prototype;\n\t\n\tp$1.resolve = function resolve(x) {\n\t var promise = this;\n\t\n\t if (promise.state === PENDING) {\n\t if (x === promise) {\n\t throw new TypeError('Promise settled with itself.');\n\t }\n\t\n\t var called = false;\n\t\n\t try {\n\t var then = x && x['then'];\n\t\n\t if (x !== null && (typeof x === 'undefined' ? 'undefined' : _typeof(x)) === 'object' && typeof then === 'function') {\n\t then.call(x, function (x) {\n\t if (!called) {\n\t promise.resolve(x);\n\t }\n\t called = true;\n\t }, function (r) {\n\t if (!called) {\n\t promise.reject(r);\n\t }\n\t called = true;\n\t });\n\t return;\n\t }\n\t } catch (e) {\n\t if (!called) {\n\t promise.reject(e);\n\t }\n\t return;\n\t }\n\t\n\t promise.state = RESOLVED;\n\t promise.value = x;\n\t promise.notify();\n\t }\n\t};\n\t\n\tp$1.reject = function reject(reason) {\n\t var promise = this;\n\t\n\t if (promise.state === PENDING) {\n\t if (reason === promise) {\n\t throw new TypeError('Promise settled with itself.');\n\t }\n\t\n\t promise.state = REJECTED;\n\t promise.value = reason;\n\t promise.notify();\n\t }\n\t};\n\t\n\tp$1.notify = function notify() {\n\t var promise = this;\n\t\n\t nextTick(function () {\n\t if (promise.state !== PENDING) {\n\t while (promise.deferred.length) {\n\t var deferred = promise.deferred.shift(),\n\t onResolved = deferred[0],\n\t onRejected = deferred[1],\n\t resolve = deferred[2],\n\t reject = deferred[3];\n\t\n\t try {\n\t if (promise.state === RESOLVED) {\n\t if (typeof onResolved === 'function') {\n\t resolve(onResolved.call(undefined, promise.value));\n\t } else {\n\t resolve(promise.value);\n\t }\n\t } else if (promise.state === REJECTED) {\n\t if (typeof onRejected === 'function') {\n\t resolve(onRejected.call(undefined, promise.value));\n\t } else {\n\t reject(promise.value);\n\t }\n\t }\n\t } catch (e) {\n\t reject(e);\n\t }\n\t }\n\t }\n\t });\n\t};\n\t\n\tp$1.then = function then(onResolved, onRejected) {\n\t var promise = this;\n\t\n\t return new Promise$2(function (resolve, reject) {\n\t promise.deferred.push([onResolved, onRejected, resolve, reject]);\n\t promise.notify();\n\t });\n\t};\n\t\n\tp$1.catch = function (onRejected) {\n\t return this.then(undefined, onRejected);\n\t};\n\t\n\tvar PromiseObj = window.Promise || Promise$2;\n\t\n\tfunction Promise$1(executor, context) {\n\t\n\t if (executor instanceof PromiseObj) {\n\t this.promise = executor;\n\t } else {\n\t this.promise = new PromiseObj(executor.bind(context));\n\t }\n\t\n\t this.context = context;\n\t}\n\t\n\tPromise$1.all = function (iterable, context) {\n\t return new Promise$1(PromiseObj.all(iterable), context);\n\t};\n\t\n\tPromise$1.resolve = function (value, context) {\n\t return new Promise$1(PromiseObj.resolve(value), context);\n\t};\n\t\n\tPromise$1.reject = function (reason, context) {\n\t return new Promise$1(PromiseObj.reject(reason), context);\n\t};\n\t\n\tPromise$1.race = function (iterable, context) {\n\t return new Promise$1(PromiseObj.race(iterable), context);\n\t};\n\t\n\tvar p = Promise$1.prototype;\n\t\n\tp.bind = function (context) {\n\t this.context = context;\n\t return this;\n\t};\n\t\n\tp.then = function (fulfilled, rejected) {\n\t\n\t if (fulfilled && fulfilled.bind && this.context) {\n\t fulfilled = fulfilled.bind(this.context);\n\t }\n\t\n\t if (rejected && rejected.bind && this.context) {\n\t rejected = rejected.bind(this.context);\n\t }\n\t\n\t return new Promise$1(this.promise.then(fulfilled, rejected), this.context);\n\t};\n\t\n\tp.catch = function (rejected) {\n\t\n\t if (rejected && rejected.bind && this.context) {\n\t rejected = rejected.bind(this.context);\n\t }\n\t\n\t return new Promise$1(this.promise.catch(rejected), this.context);\n\t};\n\t\n\tp.finally = function (callback) {\n\t\n\t return this.then(function (value) {\n\t callback.call(this);\n\t return value;\n\t }, function (reason) {\n\t callback.call(this);\n\t return PromiseObj.reject(reason);\n\t });\n\t};\n\t\n\tvar debug = false;\n\tvar util = {};\n\tvar array = [];\n\tfunction Util(Vue) {\n\t util = Vue.util;\n\t debug = Vue.config.debug || !Vue.config.silent;\n\t}\n\t\n\tfunction warn(msg) {\n\t if (typeof console !== 'undefined' && debug) {\n\t console.warn('[VueResource warn]: ' + msg);\n\t }\n\t}\n\t\n\tfunction error(msg) {\n\t if (typeof console !== 'undefined') {\n\t console.error(msg);\n\t }\n\t}\n\t\n\tfunction nextTick(cb, ctx) {\n\t return util.nextTick(cb, ctx);\n\t}\n\t\n\tfunction trim(str) {\n\t return str.replace(/^\\s*|\\s*$/g, '');\n\t}\n\t\n\tvar isArray = Array.isArray;\n\t\n\tfunction isString(val) {\n\t return typeof val === 'string';\n\t}\n\t\n\tfunction isBoolean(val) {\n\t return val === true || val === false;\n\t}\n\t\n\tfunction isFunction(val) {\n\t return typeof val === 'function';\n\t}\n\t\n\tfunction isObject(obj) {\n\t return obj !== null && (typeof obj === 'undefined' ? 'undefined' : _typeof(obj)) === 'object';\n\t}\n\t\n\tfunction isPlainObject(obj) {\n\t return isObject(obj) && Object.getPrototypeOf(obj) == Object.prototype;\n\t}\n\t\n\tfunction isFormData(obj) {\n\t return typeof FormData !== 'undefined' && obj instanceof FormData;\n\t}\n\t\n\tfunction when(value, fulfilled, rejected) {\n\t\n\t var promise = Promise$1.resolve(value);\n\t\n\t if (arguments.length < 2) {\n\t return promise;\n\t }\n\t\n\t return promise.then(fulfilled, rejected);\n\t}\n\t\n\tfunction options(fn, obj, opts) {\n\t\n\t opts = opts || {};\n\t\n\t if (isFunction(opts)) {\n\t opts = opts.call(obj);\n\t }\n\t\n\t return merge(fn.bind({ $vm: obj, $options: opts }), fn, { $options: opts });\n\t}\n\t\n\tfunction each(obj, iterator) {\n\t\n\t var i, key;\n\t\n\t if (typeof obj.length == 'number') {\n\t for (i = 0; i < obj.length; i++) {\n\t iterator.call(obj[i], obj[i], i);\n\t }\n\t } else if (isObject(obj)) {\n\t for (key in obj) {\n\t if (obj.hasOwnProperty(key)) {\n\t iterator.call(obj[key], obj[key], key);\n\t }\n\t }\n\t }\n\t\n\t return obj;\n\t}\n\t\n\tvar assign = Object.assign || _assign;\n\t\n\tfunction merge(target) {\n\t\n\t var args = array.slice.call(arguments, 1);\n\t\n\t args.forEach(function (source) {\n\t _merge(target, source, true);\n\t });\n\t\n\t return target;\n\t}\n\t\n\tfunction defaults(target) {\n\t\n\t var args = array.slice.call(arguments, 1);\n\t\n\t args.forEach(function (source) {\n\t\n\t for (var key in source) {\n\t if (target[key] === undefined) {\n\t target[key] = source[key];\n\t }\n\t }\n\t });\n\t\n\t return target;\n\t}\n\t\n\tfunction _assign(target) {\n\t\n\t var args = array.slice.call(arguments, 1);\n\t\n\t args.forEach(function (source) {\n\t _merge(target, source);\n\t });\n\t\n\t return target;\n\t}\n\t\n\tfunction _merge(target, source, deep) {\n\t for (var key in source) {\n\t if (deep && (isPlainObject(source[key]) || isArray(source[key]))) {\n\t if (isPlainObject(source[key]) && !isPlainObject(target[key])) {\n\t target[key] = {};\n\t }\n\t if (isArray(source[key]) && !isArray(target[key])) {\n\t target[key] = [];\n\t }\n\t _merge(target[key], source[key], deep);\n\t } else if (source[key] !== undefined) {\n\t target[key] = source[key];\n\t }\n\t }\n\t}\n\t\n\tfunction root(options, next) {\n\t\n\t var url = next(options);\n\t\n\t if (isString(options.root) && !url.match(/^(https?:)?\\//)) {\n\t url = options.root + '/' + url;\n\t }\n\t\n\t return url;\n\t}\n\t\n\tfunction query(options, next) {\n\t\n\t var urlParams = Object.keys(Url.options.params),\n\t query = {},\n\t url = next(options);\n\t\n\t each(options.params, function (value, key) {\n\t if (urlParams.indexOf(key) === -1) {\n\t query[key] = value;\n\t }\n\t });\n\t\n\t query = Url.params(query);\n\t\n\t if (query) {\n\t url += (url.indexOf('?') == -1 ? '?' : '&') + query;\n\t }\n\t\n\t return url;\n\t}\n\t\n\t/**\n\t * URL Template v2.0.6 (https://github.com/bramstein/url-template)\n\t */\n\t\n\tfunction expand(url, params, variables) {\n\t\n\t var tmpl = parse(url),\n\t expanded = tmpl.expand(params);\n\t\n\t if (variables) {\n\t variables.push.apply(variables, tmpl.vars);\n\t }\n\t\n\t return expanded;\n\t}\n\t\n\tfunction parse(template) {\n\t\n\t var operators = ['+', '#', '.', '/', ';', '?', '&'],\n\t variables = [];\n\t\n\t return {\n\t vars: variables,\n\t expand: function expand(context) {\n\t return template.replace(/\\{([^\\{\\}]+)\\}|([^\\{\\}]+)/g, function (_, expression, literal) {\n\t if (expression) {\n\t\n\t var operator = null,\n\t values = [];\n\t\n\t if (operators.indexOf(expression.charAt(0)) !== -1) {\n\t operator = expression.charAt(0);\n\t expression = expression.substr(1);\n\t }\n\t\n\t expression.split(/,/g).forEach(function (variable) {\n\t var tmp = /([^:\\*]*)(?::(\\d+)|(\\*))?/.exec(variable);\n\t values.push.apply(values, getValues(context, operator, tmp[1], tmp[2] || tmp[3]));\n\t variables.push(tmp[1]);\n\t });\n\t\n\t if (operator && operator !== '+') {\n\t\n\t var separator = ',';\n\t\n\t if (operator === '?') {\n\t separator = '&';\n\t } else if (operator !== '#') {\n\t separator = operator;\n\t }\n\t\n\t return (values.length !== 0 ? operator : '') + values.join(separator);\n\t } else {\n\t return values.join(',');\n\t }\n\t } else {\n\t return encodeReserved(literal);\n\t }\n\t });\n\t }\n\t };\n\t}\n\t\n\tfunction getValues(context, operator, key, modifier) {\n\t\n\t var value = context[key],\n\t result = [];\n\t\n\t if (isDefined(value) && value !== '') {\n\t if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n\t value = value.toString();\n\t\n\t if (modifier && modifier !== '*') {\n\t value = value.substring(0, parseInt(modifier, 10));\n\t }\n\t\n\t result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : null));\n\t } else {\n\t if (modifier === '*') {\n\t if (Array.isArray(value)) {\n\t value.filter(isDefined).forEach(function (value) {\n\t result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : null));\n\t });\n\t } else {\n\t Object.keys(value).forEach(function (k) {\n\t if (isDefined(value[k])) {\n\t result.push(encodeValue(operator, value[k], k));\n\t }\n\t });\n\t }\n\t } else {\n\t var tmp = [];\n\t\n\t if (Array.isArray(value)) {\n\t value.filter(isDefined).forEach(function (value) {\n\t tmp.push(encodeValue(operator, value));\n\t });\n\t } else {\n\t Object.keys(value).forEach(function (k) {\n\t if (isDefined(value[k])) {\n\t tmp.push(encodeURIComponent(k));\n\t tmp.push(encodeValue(operator, value[k].toString()));\n\t }\n\t });\n\t }\n\t\n\t if (isKeyOperator(operator)) {\n\t result.push(encodeURIComponent(key) + '=' + tmp.join(','));\n\t } else if (tmp.length !== 0) {\n\t result.push(tmp.join(','));\n\t }\n\t }\n\t }\n\t } else {\n\t if (operator === ';') {\n\t result.push(encodeURIComponent(key));\n\t } else if (value === '' && (operator === '&' || operator === '?')) {\n\t result.push(encodeURIComponent(key) + '=');\n\t } else if (value === '') {\n\t result.push('');\n\t }\n\t }\n\t\n\t return result;\n\t}\n\t\n\tfunction isDefined(value) {\n\t return value !== undefined && value !== null;\n\t}\n\t\n\tfunction isKeyOperator(operator) {\n\t return operator === ';' || operator === '&' || operator === '?';\n\t}\n\t\n\tfunction encodeValue(operator, value, key) {\n\t\n\t value = operator === '+' || operator === '#' ? encodeReserved(value) : encodeURIComponent(value);\n\t\n\t if (key) {\n\t return encodeURIComponent(key) + '=' + value;\n\t } else {\n\t return value;\n\t }\n\t}\n\t\n\tfunction encodeReserved(str) {\n\t return str.split(/(%[0-9A-Fa-f]{2})/g).map(function (part) {\n\t if (!/%[0-9A-Fa-f]/.test(part)) {\n\t part = encodeURI(part);\n\t }\n\t return part;\n\t }).join('');\n\t}\n\t\n\tfunction template(options) {\n\t\n\t var variables = [],\n\t url = expand(options.url, options.params, variables);\n\t\n\t variables.forEach(function (key) {\n\t delete options.params[key];\n\t });\n\t\n\t return url;\n\t}\n\t\n\t/**\n\t * Service for URL templating.\n\t */\n\t\n\tvar ie = document.documentMode;\n\tvar el = document.createElement('a');\n\t\n\tfunction Url(url, params) {\n\t\n\t var self = this || {},\n\t options = url,\n\t transform;\n\t\n\t if (isString(url)) {\n\t options = { url: url, params: params };\n\t }\n\t\n\t options = merge({}, Url.options, self.$options, options);\n\t\n\t Url.transforms.forEach(function (handler) {\n\t transform = factory(handler, transform, self.$vm);\n\t });\n\t\n\t return transform(options);\n\t}\n\t\n\t/**\n\t * Url options.\n\t */\n\t\n\tUrl.options = {\n\t url: '',\n\t root: null,\n\t params: {}\n\t};\n\t\n\t/**\n\t * Url transforms.\n\t */\n\t\n\tUrl.transforms = [template, query, root];\n\t\n\t/**\n\t * Encodes a Url parameter string.\n\t *\n\t * @param {Object} obj\n\t */\n\t\n\tUrl.params = function (obj) {\n\t\n\t var params = [],\n\t escape = encodeURIComponent;\n\t\n\t params.add = function (key, value) {\n\t\n\t if (isFunction(value)) {\n\t value = value();\n\t }\n\t\n\t if (value === null) {\n\t value = '';\n\t }\n\t\n\t this.push(escape(key) + '=' + escape(value));\n\t };\n\t\n\t serialize(params, obj);\n\t\n\t return params.join('&').replace(/%20/g, '+');\n\t};\n\t\n\t/**\n\t * Parse a URL and return its components.\n\t *\n\t * @param {String} url\n\t */\n\t\n\tUrl.parse = function (url) {\n\t\n\t if (ie) {\n\t el.href = url;\n\t url = el.href;\n\t }\n\t\n\t el.href = url;\n\t\n\t return {\n\t href: el.href,\n\t protocol: el.protocol ? el.protocol.replace(/:$/, '') : '',\n\t port: el.port,\n\t host: el.host,\n\t hostname: el.hostname,\n\t pathname: el.pathname.charAt(0) === '/' ? el.pathname : '/' + el.pathname,\n\t search: el.search ? el.search.replace(/^\\?/, '') : '',\n\t hash: el.hash ? el.hash.replace(/^#/, '') : ''\n\t };\n\t};\n\t\n\tfunction factory(handler, next, vm) {\n\t return function (options) {\n\t return handler.call(vm, options, next);\n\t };\n\t}\n\t\n\tfunction serialize(params, obj, scope) {\n\t\n\t var array = isArray(obj),\n\t plain = isPlainObject(obj),\n\t hash;\n\t\n\t each(obj, function (value, key) {\n\t\n\t hash = isObject(value) || isArray(value);\n\t\n\t if (scope) {\n\t key = scope + '[' + (plain || hash ? key : '') + ']';\n\t }\n\t\n\t if (!scope && array) {\n\t params.add(value.name, value.value);\n\t } else if (hash) {\n\t serialize(params, value, key);\n\t } else {\n\t params.add(key, value);\n\t }\n\t });\n\t}\n\t\n\tfunction xdrClient(request) {\n\t return new Promise$1(function (resolve) {\n\t\n\t var xdr = new XDomainRequest(),\n\t handler = function handler(event) {\n\t\n\t var response = request.respondWith(xdr.responseText, {\n\t status: xdr.status,\n\t statusText: xdr.statusText\n\t });\n\t\n\t resolve(response);\n\t };\n\t\n\t request.abort = function () {\n\t return xdr.abort();\n\t };\n\t\n\t xdr.open(request.method, request.getUrl(), true);\n\t xdr.timeout = 0;\n\t xdr.onload = handler;\n\t xdr.onerror = handler;\n\t xdr.ontimeout = function () {};\n\t xdr.onprogress = function () {};\n\t xdr.send(request.getBody());\n\t });\n\t}\n\t\n\tvar ORIGIN_URL = Url.parse(location.href);\n\tvar SUPPORTS_CORS = 'withCredentials' in new XMLHttpRequest();\n\t\n\tfunction cors(request, next) {\n\t\n\t if (!isBoolean(request.crossOrigin) && crossOrigin(request)) {\n\t request.crossOrigin = true;\n\t }\n\t\n\t if (request.crossOrigin) {\n\t\n\t if (!SUPPORTS_CORS) {\n\t request.client = xdrClient;\n\t }\n\t\n\t delete request.emulateHTTP;\n\t }\n\t\n\t next();\n\t}\n\t\n\tfunction crossOrigin(request) {\n\t\n\t var requestUrl = Url.parse(Url(request));\n\t\n\t return requestUrl.protocol !== ORIGIN_URL.protocol || requestUrl.host !== ORIGIN_URL.host;\n\t}\n\t\n\tfunction body(request, next) {\n\t\n\t if (request.emulateJSON && isPlainObject(request.body)) {\n\t request.body = Url.params(request.body);\n\t request.headers['Content-Type'] = 'application/x-www-form-urlencoded';\n\t }\n\t\n\t if (isFormData(request.body)) {\n\t delete request.headers['Content-Type'];\n\t }\n\t\n\t if (isPlainObject(request.body)) {\n\t request.body = JSON.stringify(request.body);\n\t }\n\t\n\t next(function (response) {\n\t\n\t var contentType = response.headers['Content-Type'];\n\t\n\t if (isString(contentType) && contentType.indexOf('application/json') === 0) {\n\t\n\t try {\n\t response.data = response.json();\n\t } catch (e) {\n\t response.data = null;\n\t }\n\t } else {\n\t response.data = response.text();\n\t }\n\t });\n\t}\n\t\n\tfunction jsonpClient(request) {\n\t return new Promise$1(function (resolve) {\n\t\n\t var name = request.jsonp || 'callback',\n\t callback = '_jsonp' + Math.random().toString(36).substr(2),\n\t body = null,\n\t handler,\n\t script;\n\t\n\t handler = function handler(event) {\n\t\n\t var status = 0;\n\t\n\t if (event.type === 'load' && body !== null) {\n\t status = 200;\n\t } else if (event.type === 'error') {\n\t status = 404;\n\t }\n\t\n\t resolve(request.respondWith(body, { status: status }));\n\t\n\t delete window[callback];\n\t document.body.removeChild(script);\n\t };\n\t\n\t request.params[name] = callback;\n\t\n\t window[callback] = function (result) {\n\t body = JSON.stringify(result);\n\t };\n\t\n\t script = document.createElement('script');\n\t script.src = request.getUrl();\n\t script.type = 'text/javascript';\n\t script.async = true;\n\t script.onload = handler;\n\t script.onerror = handler;\n\t\n\t document.body.appendChild(script);\n\t });\n\t}\n\t\n\tfunction jsonp(request, next) {\n\t\n\t if (request.method == 'JSONP') {\n\t request.client = jsonpClient;\n\t }\n\t\n\t next(function (response) {\n\t\n\t if (request.method == 'JSONP') {\n\t response.data = response.json();\n\t }\n\t });\n\t}\n\t\n\tfunction before(request, next) {\n\t\n\t if (isFunction(request.before)) {\n\t request.before.call(this, request);\n\t }\n\t\n\t next();\n\t}\n\t\n\t/**\n\t * HTTP method override Interceptor.\n\t */\n\t\n\tfunction method(request, next) {\n\t\n\t if (request.emulateHTTP && /^(PUT|PATCH|DELETE)$/i.test(request.method)) {\n\t request.headers['X-HTTP-Method-Override'] = request.method;\n\t request.method = 'POST';\n\t }\n\t\n\t next();\n\t}\n\t\n\tfunction header(request, next) {\n\t\n\t request.method = request.method.toUpperCase();\n\t request.headers = assign({}, Http.headers.common, !request.crossOrigin ? Http.headers.custom : {}, Http.headers[request.method.toLowerCase()], request.headers);\n\t\n\t next();\n\t}\n\t\n\t/**\n\t * Timeout Interceptor.\n\t */\n\t\n\tfunction timeout(request, next) {\n\t\n\t var timeout;\n\t\n\t if (request.timeout) {\n\t timeout = setTimeout(function () {\n\t request.cancel();\n\t }, request.timeout);\n\t }\n\t\n\t next(function (response) {\n\t\n\t clearTimeout(timeout);\n\t });\n\t}\n\t\n\tfunction xhrClient(request) {\n\t return new Promise$1(function (resolve) {\n\t\n\t var xhr = new XMLHttpRequest(),\n\t handler = function handler(event) {\n\t\n\t var response = request.respondWith('response' in xhr ? xhr.response : xhr.responseText, {\n\t status: xhr.status === 1223 ? 204 : xhr.status, // IE9 status bug\n\t statusText: xhr.status === 1223 ? 'No Content' : trim(xhr.statusText),\n\t headers: parseHeaders(xhr.getAllResponseHeaders())\n\t });\n\t\n\t resolve(response);\n\t };\n\t\n\t request.abort = function () {\n\t return xhr.abort();\n\t };\n\t\n\t xhr.open(request.method, request.getUrl(), true);\n\t xhr.timeout = 0;\n\t xhr.onload = handler;\n\t xhr.onerror = handler;\n\t\n\t if (request.progress) {\n\t if (request.method === 'GET') {\n\t xhr.addEventListener('progress', request.progress);\n\t } else if (/^(POST|PUT)$/i.test(request.method)) {\n\t xhr.upload.addEventListener('progress', request.progress);\n\t }\n\t }\n\t\n\t if (request.credentials === true) {\n\t xhr.withCredentials = true;\n\t }\n\t\n\t each(request.headers || {}, function (value, header) {\n\t xhr.setRequestHeader(header, value);\n\t });\n\t\n\t xhr.send(request.getBody());\n\t });\n\t}\n\t\n\tfunction parseHeaders(str) {\n\t\n\t var headers = {},\n\t value,\n\t name,\n\t i;\n\t\n\t each(trim(str).split('\\n'), function (row) {\n\t\n\t i = row.indexOf(':');\n\t name = trim(row.slice(0, i));\n\t value = trim(row.slice(i + 1));\n\t\n\t if (headers[name]) {\n\t\n\t if (isArray(headers[name])) {\n\t headers[name].push(value);\n\t } else {\n\t headers[name] = [headers[name], value];\n\t }\n\t } else {\n\t\n\t headers[name] = value;\n\t }\n\t });\n\t\n\t return headers;\n\t}\n\t\n\tfunction Client(context) {\n\t\n\t var reqHandlers = [sendRequest],\n\t resHandlers = [],\n\t handler;\n\t\n\t if (!isObject(context)) {\n\t context = null;\n\t }\n\t\n\t function Client(request) {\n\t return new Promise$1(function (resolve) {\n\t\n\t function exec() {\n\t\n\t handler = reqHandlers.pop();\n\t\n\t if (isFunction(handler)) {\n\t handler.call(context, request, next);\n\t } else {\n\t warn('Invalid interceptor of type ' + (typeof handler === 'undefined' ? 'undefined' : _typeof(handler)) + ', must be a function');\n\t next();\n\t }\n\t }\n\t\n\t function next(response) {\n\t when(response, function (response) {\n\t\n\t if (isFunction(response)) {\n\t\n\t resHandlers.unshift(response);\n\t } else if (isObject(response)) {\n\t\n\t resHandlers.forEach(function (handler) {\n\t handler.call(context, response);\n\t });\n\t\n\t resolve(response);\n\t\n\t return;\n\t }\n\t\n\t exec();\n\t });\n\t }\n\t\n\t exec();\n\t }, context);\n\t }\n\t\n\t Client.use = function (handler) {\n\t reqHandlers.push(handler);\n\t };\n\t\n\t return Client;\n\t}\n\t\n\tfunction sendRequest(request, resolve) {\n\t\n\t var client = request.client || xhrClient;\n\t\n\t resolve(client(request));\n\t}\n\t\n\tvar classCallCheck = function classCallCheck(instance, Constructor) {\n\t if (!(instance instanceof Constructor)) {\n\t throw new TypeError(\"Cannot call a class as a function\");\n\t }\n\t};\n\t\n\t/**\n\t * HTTP Response.\n\t */\n\t\n\tvar Response = function () {\n\t function Response(body, _ref) {\n\t var url = _ref.url;\n\t var headers = _ref.headers;\n\t var status = _ref.status;\n\t var statusText = _ref.statusText;\n\t classCallCheck(this, Response);\n\t\n\t this.url = url;\n\t this.body = body;\n\t this.headers = headers || {};\n\t this.status = status || 0;\n\t this.statusText = statusText || '';\n\t this.ok = status >= 200 && status < 300;\n\t }\n\t\n\t Response.prototype.text = function text() {\n\t return this.body;\n\t };\n\t\n\t Response.prototype.blob = function blob() {\n\t return new Blob([this.body]);\n\t };\n\t\n\t Response.prototype.json = function json() {\n\t return JSON.parse(this.body);\n\t };\n\t\n\t return Response;\n\t}();\n\t\n\tvar Request = function () {\n\t function Request(options) {\n\t classCallCheck(this, Request);\n\t\n\t this.method = 'GET';\n\t this.body = null;\n\t this.params = {};\n\t this.headers = {};\n\t\n\t assign(this, options);\n\t }\n\t\n\t Request.prototype.getUrl = function getUrl() {\n\t return Url(this);\n\t };\n\t\n\t Request.prototype.getBody = function getBody() {\n\t return this.body;\n\t };\n\t\n\t Request.prototype.respondWith = function respondWith(body, options) {\n\t return new Response(body, assign(options || {}, { url: this.getUrl() }));\n\t };\n\t\n\t return Request;\n\t}();\n\t\n\t/**\n\t * Service for sending network requests.\n\t */\n\t\n\tvar CUSTOM_HEADERS = { 'X-Requested-With': 'XMLHttpRequest' };\n\tvar COMMON_HEADERS = { 'Accept': 'application/json, text/plain, */*' };\n\tvar JSON_CONTENT_TYPE = { 'Content-Type': 'application/json;charset=utf-8' };\n\t\n\tfunction Http(options) {\n\t\n\t var self = this || {},\n\t client = Client(self.$vm);\n\t\n\t defaults(options || {}, self.$options, Http.options);\n\t\n\t Http.interceptors.forEach(function (handler) {\n\t client.use(handler);\n\t });\n\t\n\t return client(new Request(options)).then(function (response) {\n\t\n\t return response.ok ? response : Promise$1.reject(response);\n\t }, function (response) {\n\t\n\t if (response instanceof Error) {\n\t error(response);\n\t }\n\t\n\t return Promise$1.reject(response);\n\t });\n\t}\n\t\n\tHttp.options = {};\n\t\n\tHttp.headers = {\n\t put: JSON_CONTENT_TYPE,\n\t post: JSON_CONTENT_TYPE,\n\t patch: JSON_CONTENT_TYPE,\n\t delete: JSON_CONTENT_TYPE,\n\t custom: CUSTOM_HEADERS,\n\t common: COMMON_HEADERS\n\t};\n\t\n\tHttp.interceptors = [before, timeout, method, body, jsonp, header, cors];\n\t\n\t['get', 'delete', 'head', 'jsonp'].forEach(function (method) {\n\t\n\t Http[method] = function (url, options) {\n\t return this(assign(options || {}, { url: url, method: method }));\n\t };\n\t});\n\t\n\t['post', 'put', 'patch'].forEach(function (method) {\n\t\n\t Http[method] = function (url, body, options) {\n\t return this(assign(options || {}, { url: url, method: method, body: body }));\n\t };\n\t});\n\t\n\tfunction Resource(url, params, actions, options) {\n\t\n\t var self = this || {},\n\t resource = {};\n\t\n\t actions = assign({}, Resource.actions, actions);\n\t\n\t each(actions, function (action, name) {\n\t\n\t action = merge({ url: url, params: params || {} }, options, action);\n\t\n\t resource[name] = function () {\n\t return (self.$http || Http)(opts(action, arguments));\n\t };\n\t });\n\t\n\t return resource;\n\t}\n\t\n\tfunction opts(action, args) {\n\t\n\t var options = assign({}, action),\n\t params = {},\n\t body;\n\t\n\t switch (args.length) {\n\t\n\t case 2:\n\t\n\t params = args[0];\n\t body = args[1];\n\t\n\t break;\n\t\n\t case 1:\n\t\n\t if (/^(POST|PUT|PATCH)$/i.test(options.method)) {\n\t body = args[0];\n\t } else {\n\t params = args[0];\n\t }\n\t\n\t break;\n\t\n\t case 0:\n\t\n\t break;\n\t\n\t default:\n\t\n\t throw 'Expected up to 4 arguments [params, body], got ' + args.length + ' arguments';\n\t }\n\t\n\t options.body = body;\n\t options.params = assign({}, options.params, params);\n\t\n\t return options;\n\t}\n\t\n\tResource.actions = {\n\t\n\t get: { method: 'GET' },\n\t save: { method: 'POST' },\n\t query: { method: 'GET' },\n\t update: { method: 'PUT' },\n\t remove: { method: 'DELETE' },\n\t delete: { method: 'DELETE' }\n\t\n\t};\n\t\n\tfunction plugin(Vue) {\n\t\n\t if (plugin.installed) {\n\t return;\n\t }\n\t\n\t Util(Vue);\n\t\n\t Vue.url = Url;\n\t Vue.http = Http;\n\t Vue.resource = Resource;\n\t Vue.Promise = Promise$1;\n\t\n\t Object.defineProperties(Vue.prototype, {\n\t\n\t $url: {\n\t get: function get() {\n\t return options(Vue.url, this, this.$options.url);\n\t }\n\t },\n\t\n\t $http: {\n\t get: function get() {\n\t return options(Vue.http, this, this.$options.http);\n\t }\n\t },\n\t\n\t $resource: {\n\t get: function get() {\n\t return Vue.resource.bind(this);\n\t }\n\t },\n\t\n\t $promise: {\n\t get: function get() {\n\t var _this = this;\n\t\n\t return function (executor) {\n\t return new Vue.Promise(executor, _this);\n\t };\n\t }\n\t }\n\t\n\t });\n\t}\n\t\n\tif (typeof window !== 'undefined' && window.Vue) {\n\t window.Vue.use(plugin);\n\t}\n\t\n\tmodule.exports = plugin;\n\n/***/ },\n/* 29 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\t\n\tvar vue = __webpack_require__(30);\n\t\n\tvar main = {\n\t data: function data() {\n\t return {\n\t items: [],\n\t query: '',\n\t current: -1,\n\t loading: false,\n\t queryParamName: 'q'\n\t };\n\t },\n\t\n\t\n\t computed: {\n\t hasItems: function hasItems() {\n\t return this.items.length > 0;\n\t },\n\t isEmpty: function isEmpty() {\n\t return !this.query;\n\t },\n\t isDirty: function isDirty() {\n\t return !!this.query;\n\t }\n\t },\n\t\n\t methods: {\n\t update: function update() {\n\t var _this = this;\n\t\n\t if (!this.query) {\n\t return this.reset();\n\t }\n\t\n\t if (this.minChars && this.query.length < this.minChars) {\n\t return;\n\t }\n\t\n\t this.loading = true;\n\t\n\t this.fetch().then(function (response) {\n\t if (_this.query) {\n\t var data = response.data;\n\t data = _this.prepareResponseData ? _this.prepareResponseData(data) : data;\n\t _this.items = _this.limit ? data.slice(0, _this.limit) : data;\n\t _this.current = -1;\n\t _this.loading = false;\n\t }\n\t });\n\t },\n\t fetch: function fetch() {\n\t if (!this.$http) {\n\t return vue.util.warn('You need to install the `vue-resource` plugin', this);\n\t }\n\t\n\t if (!this.src) {\n\t return vue.util.warn('You need to set the `src` property', this);\n\t }\n\t\n\t var queryParam = _defineProperty({}, this.queryParamName, this.query);\n\t\n\t return this.$http.get(this.src, Object.assign(queryParam, this.data));\n\t },\n\t reset: function reset() {\n\t this.items = [];\n\t this.query = '';\n\t this.loading = false;\n\t },\n\t setActive: function setActive(index) {\n\t this.current = index;\n\t },\n\t activeClass: function activeClass(index) {\n\t return {\n\t active: this.current == index\n\t };\n\t },\n\t hit: function hit() {\n\t if (this.current !== -1) {\n\t this.onHit(this.items[this.current]);\n\t }\n\t },\n\t up: function up() {\n\t if (this.current > 0) {\n\t this.current--;\n\t } else if (this.current == -1) {\n\t this.current = this.items.length - 1;\n\t } else {\n\t this.current = -1;\n\t }\n\t },\n\t down: function down() {\n\t if (this.current < this.items.length - 1) {\n\t this.current++;\n\t } else {\n\t this.current = -1;\n\t }\n\t },\n\t onHit: function onHit() {\n\t vue.util.warn('You need to implement the `onHit` method', this);\n\t }\n\t }\n\t};\n\t\n\tmodule.exports = main;\n\n/***/ },\n/* 30 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(global) {/*!\n\t * Vue.js v1.0.25\n\t * (c) 2016 Evan You\n\t * Released under the MIT License.\n\t */'use strict';var _typeof=typeof Symbol===\"function\"&&typeof Symbol.iterator===\"symbol\"?function(obj){return typeof obj;}:function(obj){return obj&&typeof Symbol===\"function\"&&obj.constructor===Symbol?\"symbol\":typeof obj;};function set(obj,key,val){if(hasOwn(obj,key)){obj[key]=val;return;}if(obj._isVue){set(obj._data,key,val);return;}var ob=obj.__ob__;if(!ob){obj[key]=val;return;}ob.convert(key,val);ob.dep.notify();if(ob.vms){var i=ob.vms.length;while(i--){var vm=ob.vms[i];vm._proxy(key);vm._digest();}}return val;}/**\n\t * Delete a property and trigger change if necessary.\n\t *\n\t * @param {Object} obj\n\t * @param {String} key\n\t */function del(obj,key){if(!hasOwn(obj,key)){return;}delete obj[key];var ob=obj.__ob__;if(!ob){if(obj._isVue){delete obj._data[key];obj._digest();}return;}ob.dep.notify();if(ob.vms){var i=ob.vms.length;while(i--){var vm=ob.vms[i];vm._unproxy(key);vm._digest();}}}var hasOwnProperty=Object.prototype.hasOwnProperty;/**\n\t * Check whether the object has the property.\n\t *\n\t * @param {Object} obj\n\t * @param {String} key\n\t * @return {Boolean}\n\t */function hasOwn(obj,key){return hasOwnProperty.call(obj,key);}/**\n\t * Check if an expression is a literal value.\n\t *\n\t * @param {String} exp\n\t * @return {Boolean}\n\t */var literalValueRE=/^\\s?(true|false|-?[\\d\\.]+|'[^']*'|\"[^\"]*\")\\s?$/;function isLiteral(exp){return literalValueRE.test(exp);}/**\n\t * Check if a string starts with $ or _\n\t *\n\t * @param {String} str\n\t * @return {Boolean}\n\t */function isReserved(str){var c=(str+'').charCodeAt(0);return c===0x24||c===0x5F;}/**\n\t * Guard text output, make sure undefined outputs\n\t * empty string\n\t *\n\t * @param {*} value\n\t * @return {String}\n\t */function _toString(value){return value==null?'':value.toString();}/**\n\t * Check and convert possible numeric strings to numbers\n\t * before setting back to data\n\t *\n\t * @param {*} value\n\t * @return {*|Number}\n\t */function toNumber(value){if(typeof value!=='string'){return value;}else{var parsed=Number(value);return isNaN(parsed)?value:parsed;}}/**\n\t * Convert string boolean literals into real booleans.\n\t *\n\t * @param {*} value\n\t * @return {*|Boolean}\n\t */function toBoolean(value){return value==='true'?true:value==='false'?false:value;}/**\n\t * Strip quotes from a string\n\t *\n\t * @param {String} str\n\t * @return {String | false}\n\t */function stripQuotes(str){var a=str.charCodeAt(0);var b=str.charCodeAt(str.length-1);return a===b&&(a===0x22||a===0x27)?str.slice(1,-1):str;}/**\n\t * Camelize a hyphen-delmited string.\n\t *\n\t * @param {String} str\n\t * @return {String}\n\t */var camelizeRE=/-(\\w)/g;function camelize(str){return str.replace(camelizeRE,toUpper);}function toUpper(_,c){return c?c.toUpperCase():'';}/**\n\t * Hyphenate a camelCase string.\n\t *\n\t * @param {String} str\n\t * @return {String}\n\t */var hyphenateRE=/([a-z\\d])([A-Z])/g;function hyphenate(str){return str.replace(hyphenateRE,'$1-$2').toLowerCase();}/**\n\t * Converts hyphen/underscore/slash delimitered names into\n\t * camelized classNames.\n\t *\n\t * e.g. my-component => MyComponent\n\t * some_else => SomeElse\n\t * some/comp => SomeComp\n\t *\n\t * @param {String} str\n\t * @return {String}\n\t */var classifyRE=/(?:^|[-_\\/])(\\w)/g;function classify(str){return str.replace(classifyRE,toUpper);}/**\n\t * Simple bind, faster than native\n\t *\n\t * @param {Function} fn\n\t * @param {Object} ctx\n\t * @return {Function}\n\t */function bind(fn,ctx){return function(a){var l=arguments.length;return l?l>1?fn.apply(ctx,arguments):fn.call(ctx,a):fn.call(ctx);};}/**\n\t * Convert an Array-like object to a real Array.\n\t *\n\t * @param {Array-like} list\n\t * @param {Number} [start] - start index\n\t * @return {Array}\n\t */function toArray(list,start){start=start||0;var i=list.length-start;var ret=new Array(i);while(i--){ret[i]=list[i+start];}return ret;}/**\n\t * Mix properties into target object.\n\t *\n\t * @param {Object} to\n\t * @param {Object} from\n\t */function extend(to,from){var keys=Object.keys(from);var i=keys.length;while(i--){to[keys[i]]=from[keys[i]];}return to;}/**\n\t * Quick object check - this is primarily used to tell\n\t * Objects from primitive values when we know the value\n\t * is a JSON-compliant type.\n\t *\n\t * @param {*} obj\n\t * @return {Boolean}\n\t */function isObject(obj){return obj!==null&&(typeof obj==='undefined'?'undefined':_typeof(obj))==='object';}/**\n\t * Strict object type check. Only returns true\n\t * for plain JavaScript objects.\n\t *\n\t * @param {*} obj\n\t * @return {Boolean}\n\t */var toString=Object.prototype.toString;var OBJECT_STRING='[object Object]';function isPlainObject(obj){return toString.call(obj)===OBJECT_STRING;}/**\n\t * Array type check.\n\t *\n\t * @param {*} obj\n\t * @return {Boolean}\n\t */var isArray=Array.isArray;/**\n\t * Define a property.\n\t *\n\t * @param {Object} obj\n\t * @param {String} key\n\t * @param {*} val\n\t * @param {Boolean} [enumerable]\n\t */function def(obj,key,val,enumerable){Object.defineProperty(obj,key,{value:val,enumerable:!!enumerable,writable:true,configurable:true});}/**\n\t * Debounce a function so it only gets called after the\n\t * input stops arriving after the given wait period.\n\t *\n\t * @param {Function} func\n\t * @param {Number} wait\n\t * @return {Function} - the debounced function\n\t */function _debounce(func,wait){var timeout,args,context,timestamp,result;var later=function later(){var last=Date.now()-timestamp;if(last<wait&&last>=0){timeout=setTimeout(later,wait-last);}else{timeout=null;result=func.apply(context,args);if(!timeout)context=args=null;}};return function(){context=this;args=arguments;timestamp=Date.now();if(!timeout){timeout=setTimeout(later,wait);}return result;};}/**\n\t * Manual indexOf because it's slightly faster than\n\t * native.\n\t *\n\t * @param {Array} arr\n\t * @param {*} obj\n\t */function indexOf(arr,obj){var i=arr.length;while(i--){if(arr[i]===obj)return i;}return-1;}/**\n\t * Make a cancellable version of an async callback.\n\t *\n\t * @param {Function} fn\n\t * @return {Function}\n\t */function cancellable(fn){var cb=function cb(){if(!cb.cancelled){return fn.apply(this,arguments);}};cb.cancel=function(){cb.cancelled=true;};return cb;}/**\n\t * Check if two values are loosely equal - that is,\n\t * if they are plain objects, do they have the same shape?\n\t *\n\t * @param {*} a\n\t * @param {*} b\n\t * @return {Boolean}\n\t */function looseEqual(a,b){/* eslint-disable eqeqeq */return a==b||(isObject(a)&&isObject(b)?JSON.stringify(a)===JSON.stringify(b):false);/* eslint-enable eqeqeq */}var hasProto='__proto__'in{};// Browser environment sniffing\n\tvar inBrowser=typeof window!=='undefined'&&Object.prototype.toString.call(window)!=='[object Object]';// detect devtools\n\tvar devtools=inBrowser&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__;// UA sniffing for working around browser-specific quirks\n\tvar UA=inBrowser&&window.navigator.userAgent.toLowerCase();var isIE=UA&&UA.indexOf('trident')>0;var isIE9=UA&&UA.indexOf('msie 9.0')>0;var isAndroid=UA&&UA.indexOf('android')>0;var isIos=UA&&/(iphone|ipad|ipod|ios)/i.test(UA);var iosVersionMatch=isIos&&UA.match(/os ([\\d_]+)/);var iosVersion=iosVersionMatch&&iosVersionMatch[1].split('_');// detecting iOS UIWebView by indexedDB\n\tvar hasMutationObserverBug=iosVersion&&Number(iosVersion[0])>=9&&Number(iosVersion[1])>=3&&!window.indexedDB;var transitionProp=undefined;var transitionEndEvent=undefined;var animationProp=undefined;var animationEndEvent=undefined;// Transition property/event sniffing\n\tif(inBrowser&&!isIE9){var isWebkitTrans=window.ontransitionend===undefined&&window.onwebkittransitionend!==undefined;var isWebkitAnim=window.onanimationend===undefined&&window.onwebkitanimationend!==undefined;transitionProp=isWebkitTrans?'WebkitTransition':'transition';transitionEndEvent=isWebkitTrans?'webkitTransitionEnd':'transitionend';animationProp=isWebkitAnim?'WebkitAnimation':'animation';animationEndEvent=isWebkitAnim?'webkitAnimationEnd':'animationend';}/**\n\t * Defer a task to execute it asynchronously. Ideally this\n\t * should be executed as a microtask, so we leverage\n\t * MutationObserver if it's available, and fallback to\n\t * setTimeout(0).\n\t *\n\t * @param {Function} cb\n\t * @param {Object} ctx\n\t */var nextTick=function(){var callbacks=[];var pending=false;var timerFunc;function nextTickHandler(){pending=false;var copies=callbacks.slice(0);callbacks=[];for(var i=0;i<copies.length;i++){copies[i]();}}/* istanbul ignore if */if(typeof MutationObserver!=='undefined'&&!hasMutationObserverBug){var counter=1;var observer=new MutationObserver(nextTickHandler);var textNode=document.createTextNode(counter);observer.observe(textNode,{characterData:true});timerFunc=function timerFunc(){counter=(counter+1)%2;textNode.data=counter;};}else{// webpack attempts to inject a shim for setImmediate\n\t// if it is used as a global, so we have to work around that to\n\t// avoid bundling unnecessary code.\n\tvar context=inBrowser?window:typeof global!=='undefined'?global:{};timerFunc=context.setImmediate||setTimeout;}return function(cb,ctx){var func=ctx?function(){cb.call(ctx);}:cb;callbacks.push(func);if(pending)return;pending=true;timerFunc(nextTickHandler,0);};}();var _Set=undefined;/* istanbul ignore if */if(typeof Set!=='undefined'&&Set.toString().match(/native code/)){// use native Set when available.\n\t_Set=Set;}else{// a non-standard Set polyfill that only works with primitive keys.\n\t_Set=function _Set(){this.set=Object.create(null);};_Set.prototype.has=function(key){return this.set[key]!==undefined;};_Set.prototype.add=function(key){this.set[key]=1;};_Set.prototype.clear=function(){this.set=Object.create(null);};}function Cache(limit){this.size=0;this.limit=limit;this.head=this.tail=undefined;this._keymap=Object.create(null);}var p=Cache.prototype;/**\n\t * Put <value> into the cache associated with <key>.\n\t * Returns the entry which was removed to make room for\n\t * the new entry. Otherwise undefined is returned.\n\t * (i.e. if there was enough room already).\n\t *\n\t * @param {String} key\n\t * @param {*} value\n\t * @return {Entry|undefined}\n\t */p.put=function(key,value){var removed;var entry=this.get(key,true);if(!entry){if(this.size===this.limit){removed=this.shift();}entry={key:key};this._keymap[key]=entry;if(this.tail){this.tail.newer=entry;entry.older=this.tail;}else{this.head=entry;}this.tail=entry;this.size++;}entry.value=value;return removed;};/**\n\t * Purge the least recently used (oldest) entry from the\n\t * cache. Returns the removed entry or undefined if the\n\t * cache was empty.\n\t */p.shift=function(){var entry=this.head;if(entry){this.head=this.head.newer;this.head.older=undefined;entry.newer=entry.older=undefined;this._keymap[entry.key]=undefined;this.size--;}return entry;};/**\n\t * Get and register recent use of <key>. Returns the value\n\t * associated with <key> or undefined if not in cache.\n\t *\n\t * @param {String} key\n\t * @param {Boolean} returnEntry\n\t * @return {Entry|*}\n\t */p.get=function(key,returnEntry){var entry=this._keymap[key];if(entry===undefined)return;if(entry===this.tail){return returnEntry?entry:entry.value;}// HEAD--------------TAIL\n\t// <.older .newer>\n\t// <--- add direction --\n\t// A B C <D> E\n\tif(entry.newer){if(entry===this.head){this.head=entry.newer;}entry.newer.older=entry.older;// C <-- E.\n\t}if(entry.older){entry.older.newer=entry.newer;// C. --> E\n\t}entry.newer=undefined;// D --x\n\tentry.older=this.tail;// D. --> E\n\tif(this.tail){this.tail.newer=entry;// E. <-- D\n\t}this.tail=entry;return returnEntry?entry:entry.value;};var cache$1=new Cache(1000);var filterTokenRE=/[^\\s'\"]+|'[^']*'|\"[^\"]*\"/g;var reservedArgRE=/^in$|^-?\\d+/;/**\n\t * Parser state\n\t */var str;var dir;var c;var prev;var i;var l;var lastFilterIndex;var inSingle;var inDouble;var curly;var square;var paren;/**\n\t * Push a filter to the current directive object\n\t */function pushFilter(){var exp=str.slice(lastFilterIndex,i).trim();var filter;if(exp){filter={};var tokens=exp.match(filterTokenRE);filter.name=tokens[0];if(tokens.length>1){filter.args=tokens.slice(1).map(processFilterArg);}}if(filter){(dir.filters=dir.filters||[]).push(filter);}lastFilterIndex=i+1;}/**\n\t * Check if an argument is dynamic and strip quotes.\n\t *\n\t * @param {String} arg\n\t * @return {Object}\n\t */function processFilterArg(arg){if(reservedArgRE.test(arg)){return{value:toNumber(arg),dynamic:false};}else{var stripped=stripQuotes(arg);var dynamic=stripped===arg;return{value:dynamic?arg:stripped,dynamic:dynamic};}}/**\n\t * Parse a directive value and extract the expression\n\t * and its filters into a descriptor.\n\t *\n\t * Example:\n\t *\n\t * \"a + 1 | uppercase\" will yield:\n\t * {\n\t * expression: 'a + 1',\n\t * filters: [\n\t * { name: 'uppercase', args: null }\n\t * ]\n\t * }\n\t *\n\t * @param {String} s\n\t * @return {Object}\n\t */function parseDirective(s){var hit=cache$1.get(s);if(hit){return hit;}// reset parser state\n\tstr=s;inSingle=inDouble=false;curly=square=paren=0;lastFilterIndex=0;dir={};for(i=0,l=str.length;i<l;i++){prev=c;c=str.charCodeAt(i);if(inSingle){// check single quote\n\tif(c===0x27&&prev!==0x5C)inSingle=!inSingle;}else if(inDouble){// check double quote\n\tif(c===0x22&&prev!==0x5C)inDouble=!inDouble;}else if(c===0x7C&&// pipe\n\tstr.charCodeAt(i+1)!==0x7C&&str.charCodeAt(i-1)!==0x7C){if(dir.expression==null){// first filter, end of expression\n\tlastFilterIndex=i+1;dir.expression=str.slice(0,i).trim();}else{// already has filter\n\tpushFilter();}}else{switch(c){case 0x22:inDouble=true;break;// \"\n\tcase 0x27:inSingle=true;break;// '\n\tcase 0x28:paren++;break;// (\n\tcase 0x29:paren--;break;// )\n\tcase 0x5B:square++;break;// [\n\tcase 0x5D:square--;break;// ]\n\tcase 0x7B:curly++;break;// {\n\tcase 0x7D:curly--;break;// }\n\t}}}if(dir.expression==null){dir.expression=str.slice(0,i).trim();}else if(lastFilterIndex!==0){pushFilter();}cache$1.put(s,dir);return dir;}var directive=Object.freeze({parseDirective:parseDirective});var regexEscapeRE=/[-.*+?^${}()|[\\]\\/\\\\]/g;var cache=undefined;var tagRE=undefined;var htmlRE=undefined;/**\n\t * Escape a string so it can be used in a RegExp\n\t * constructor.\n\t *\n\t * @param {String} str\n\t */function escapeRegex(str){return str.replace(regexEscapeRE,'\\\\$&');}function compileRegex(){var open=escapeRegex(config.delimiters[0]);var close=escapeRegex(config.delimiters[1]);var unsafeOpen=escapeRegex(config.unsafeDelimiters[0]);var unsafeClose=escapeRegex(config.unsafeDelimiters[1]);tagRE=new RegExp(unsafeOpen+'((?:.|\\\\n)+?)'+unsafeClose+'|'+open+'((?:.|\\\\n)+?)'+close,'g');htmlRE=new RegExp('^'+unsafeOpen+'((?:.|\\\\n)+?)'+unsafeClose+'$');// reset cache\n\tcache=new Cache(1000);}/**\n\t * Parse a template text string into an array of tokens.\n\t *\n\t * @param {String} text\n\t * @return {Array<Object> | null}\n\t * - {String} type\n\t * - {String} value\n\t * - {Boolean} [html]\n\t * - {Boolean} [oneTime]\n\t */function parseText(text){if(!cache){compileRegex();}var hit=cache.get(text);if(hit){return hit;}if(!tagRE.test(text)){return null;}var tokens=[];var lastIndex=tagRE.lastIndex=0;var match,index,html,value,first,oneTime;/* eslint-disable no-cond-assign */while(match=tagRE.exec(text)){/* eslint-enable no-cond-assign */index=match.index;// push text token\n\tif(index>lastIndex){tokens.push({value:text.slice(lastIndex,index)});}// tag token\n\thtml=htmlRE.test(match[0]);value=html?match[1]:match[2];first=value.charCodeAt(0);oneTime=first===42;// *\n\tvalue=oneTime?value.slice(1):value;tokens.push({tag:true,value:value.trim(),html:html,oneTime:oneTime});lastIndex=index+match[0].length;}if(lastIndex<text.length){tokens.push({value:text.slice(lastIndex)});}cache.put(text,tokens);return tokens;}/**\n\t * Format a list of tokens into an expression.\n\t * e.g. tokens parsed from 'a {{b}} c' can be serialized\n\t * into one single expression as '\"a \" + b + \" c\"'.\n\t *\n\t * @param {Array} tokens\n\t * @param {Vue} [vm]\n\t * @return {String}\n\t */function tokensToExp(tokens,vm){if(tokens.length>1){return tokens.map(function(token){return formatToken(token,vm);}).join('+');}else{return formatToken(tokens[0],vm,true);}}/**\n\t * Format a single token.\n\t *\n\t * @param {Object} token\n\t * @param {Vue} [vm]\n\t * @param {Boolean} [single]\n\t * @return {String}\n\t */function formatToken(token,vm,single){return token.tag?token.oneTime&&vm?'\"'+vm.$eval(token.value)+'\"':inlineFilters(token.value,single):'\"'+token.value+'\"';}/**\n\t * For an attribute with multiple interpolation tags,\n\t * e.g. attr=\"some-{{thing | filter}}\", in order to combine\n\t * the whole thing into a single watchable expression, we\n\t * have to inline those filters. This function does exactly\n\t * that. This is a bit hacky but it avoids heavy changes\n\t * to directive parser and watcher mechanism.\n\t *\n\t * @param {String} exp\n\t * @param {Boolean} single\n\t * @return {String}\n\t */var filterRE=/[^|]\\|[^|]/;function inlineFilters(exp,single){if(!filterRE.test(exp)){return single?exp:'('+exp+')';}else{var dir=parseDirective(exp);if(!dir.filters){return'('+exp+')';}else{return'this._applyFilters('+dir.expression+// value\n\t',null,'+// oldValue (null for read)\n\tJSON.stringify(dir.filters)+// filter descriptors\n\t',false)';// write?\n\t}}}var text=Object.freeze({compileRegex:compileRegex,parseText:parseText,tokensToExp:tokensToExp});var delimiters=['{{','}}'];var unsafeDelimiters=['{{{','}}}'];var config=Object.defineProperties({/**\n\t * Whether to print debug messages.\n\t * Also enables stack trace for warnings.\n\t *\n\t * @type {Boolean}\n\t */debug:false,/**\n\t * Whether to suppress warnings.\n\t *\n\t * @type {Boolean}\n\t */silent:false,/**\n\t * Whether to use async rendering.\n\t */async:true,/**\n\t * Whether to warn against errors caught when evaluating\n\t * expressions.\n\t */warnExpressionErrors:true,/**\n\t * Whether to allow devtools inspection.\n\t * Disabled by default in production builds.\n\t */devtools:(\"production\")!=='production',/**\n\t * Internal flag to indicate the delimiters have been\n\t * changed.\n\t *\n\t * @type {Boolean}\n\t */_delimitersChanged:true,/**\n\t * List of asset types that a component can own.\n\t *\n\t * @type {Array}\n\t */_assetTypes:['component','directive','elementDirective','filter','transition','partial'],/**\n\t * prop binding modes\n\t */_propBindingModes:{ONE_WAY:0,TWO_WAY:1,ONE_TIME:2},/**\n\t * Max circular updates allowed in a batcher flush cycle.\n\t */_maxUpdateCount:100},{delimiters:{/**\n\t * Interpolation delimiters. Changing these would trigger\n\t * the text parser to re-compile the regular expressions.\n\t *\n\t * @type {Array<String>}\n\t */get:function get(){return delimiters;},set:function set(val){delimiters=val;compileRegex();},configurable:true,enumerable:true},unsafeDelimiters:{get:function get(){return unsafeDelimiters;},set:function set(val){unsafeDelimiters=val;compileRegex();},configurable:true,enumerable:true}});var warn=undefined;var formatComponentName=undefined;if(false){(function(){var hasConsole=typeof console!=='undefined';warn=function warn(msg,vm){if(hasConsole&&!config.silent){console.error('[Vue warn]: '+msg+(vm?formatComponentName(vm):''));}};formatComponentName=function formatComponentName(vm){var name=vm._isVue?vm.$options.name:vm.name;return name?' (found in component: <'+hyphenate(name)+'>)':'';};})();}/**\n\t * Append with transition.\n\t *\n\t * @param {Element} el\n\t * @param {Element} target\n\t * @param {Vue} vm\n\t * @param {Function} [cb]\n\t */function appendWithTransition(el,target,vm,cb){applyTransition(el,1,function(){target.appendChild(el);},vm,cb);}/**\n\t * InsertBefore with transition.\n\t *\n\t * @param {Element} el\n\t * @param {Element} target\n\t * @param {Vue} vm\n\t * @param {Function} [cb]\n\t */function beforeWithTransition(el,target,vm,cb){applyTransition(el,1,function(){before(el,target);},vm,cb);}/**\n\t * Remove with transition.\n\t *\n\t * @param {Element} el\n\t * @param {Vue} vm\n\t * @param {Function} [cb]\n\t */function removeWithTransition(el,vm,cb){applyTransition(el,-1,function(){remove(el);},vm,cb);}/**\n\t * Apply transitions with an operation callback.\n\t *\n\t * @param {Element} el\n\t * @param {Number} direction\n\t * 1: enter\n\t * -1: leave\n\t * @param {Function} op - the actual DOM operation\n\t * @param {Vue} vm\n\t * @param {Function} [cb]\n\t */function applyTransition(el,direction,op,vm,cb){var transition=el.__v_trans;if(!transition||// skip if there are no js hooks and CSS transition is\n\t// not supported\n\t!transition.hooks&&!transitionEndEvent||// skip transitions for initial compile\n\t!vm._isCompiled||// if the vm is being manipulated by a parent directive\n\t// during the parent's compilation phase, skip the\n\t// animation.\n\tvm.$parent&&!vm.$parent._isCompiled){op();if(cb)cb();return;}var action=direction>0?'enter':'leave';transition[action](op,cb);}var transition=Object.freeze({appendWithTransition:appendWithTransition,beforeWithTransition:beforeWithTransition,removeWithTransition:removeWithTransition,applyTransition:applyTransition});/**\n\t * Query an element selector if it's not an element already.\n\t *\n\t * @param {String|Element} el\n\t * @return {Element}\n\t */function query(el){if(typeof el==='string'){var selector=el;el=document.querySelector(el);if(!el){(\"production\")!=='production'&&warn('Cannot find element: '+selector);}}return el;}/**\n\t * Check if a node is in the document.\n\t * Note: document.documentElement.contains should work here\n\t * but always returns false for comment nodes in phantomjs,\n\t * making unit tests difficult. This is fixed by doing the\n\t * contains() check on the node's parentNode instead of\n\t * the node itself.\n\t *\n\t * @param {Node} node\n\t * @return {Boolean}\n\t */function inDoc(node){if(!node)return false;var doc=node.ownerDocument.documentElement;var parent=node.parentNode;return doc===node||doc===parent||!!(parent&&parent.nodeType===1&&doc.contains(parent));}/**\n\t * Get and remove an attribute from a node.\n\t *\n\t * @param {Node} node\n\t * @param {String} _attr\n\t */function getAttr(node,_attr){var val=node.getAttribute(_attr);if(val!==null){node.removeAttribute(_attr);}return val;}/**\n\t * Get an attribute with colon or v-bind: prefix.\n\t *\n\t * @param {Node} node\n\t * @param {String} name\n\t * @return {String|null}\n\t */function getBindAttr(node,name){var val=getAttr(node,':'+name);if(val===null){val=getAttr(node,'v-bind:'+name);}return val;}/**\n\t * Check the presence of a bind attribute.\n\t *\n\t * @param {Node} node\n\t * @param {String} name\n\t * @return {Boolean}\n\t */function hasBindAttr(node,name){return node.hasAttribute(name)||node.hasAttribute(':'+name)||node.hasAttribute('v-bind:'+name);}/**\n\t * Insert el before target\n\t *\n\t * @param {Element} el\n\t * @param {Element} target\n\t */function before(el,target){target.parentNode.insertBefore(el,target);}/**\n\t * Insert el after target\n\t *\n\t * @param {Element} el\n\t * @param {Element} target\n\t */function after(el,target){if(target.nextSibling){before(el,target.nextSibling);}else{target.parentNode.appendChild(el);}}/**\n\t * Remove el from DOM\n\t *\n\t * @param {Element} el\n\t */function remove(el){el.parentNode.removeChild(el);}/**\n\t * Prepend el to target\n\t *\n\t * @param {Element} el\n\t * @param {Element} target\n\t */function prepend(el,target){if(target.firstChild){before(el,target.firstChild);}else{target.appendChild(el);}}/**\n\t * Replace target with el\n\t *\n\t * @param {Element} target\n\t * @param {Element} el\n\t */function replace(target,el){var parent=target.parentNode;if(parent){parent.replaceChild(el,target);}}/**\n\t * Add event listener shorthand.\n\t *\n\t * @param {Element} el\n\t * @param {String} event\n\t * @param {Function} cb\n\t * @param {Boolean} [useCapture]\n\t */function on(el,event,cb,useCapture){el.addEventListener(event,cb,useCapture);}/**\n\t * Remove event listener shorthand.\n\t *\n\t * @param {Element} el\n\t * @param {String} event\n\t * @param {Function} cb\n\t */function off(el,event,cb){el.removeEventListener(event,cb);}/**\n\t * For IE9 compat: when both class and :class are present\n\t * getAttribute('class') returns wrong value...\n\t *\n\t * @param {Element} el\n\t * @return {String}\n\t */function getClass(el){var classname=el.className;if((typeof classname==='undefined'?'undefined':_typeof(classname))==='object'){classname=classname.baseVal||'';}return classname;}/**\n\t * In IE9, setAttribute('class') will result in empty class\n\t * if the element also has the :class attribute; However in\n\t * PhantomJS, setting `className` does not work on SVG elements...\n\t * So we have to do a conditional check here.\n\t *\n\t * @param {Element} el\n\t * @param {String} cls\n\t */function setClass(el,cls){/* istanbul ignore if */if(isIE9&&!/svg$/.test(el.namespaceURI)){el.className=cls;}else{el.setAttribute('class',cls);}}/**\n\t * Add class with compatibility for IE & SVG\n\t *\n\t * @param {Element} el\n\t * @param {String} cls\n\t */function addClass(el,cls){if(el.classList){el.classList.add(cls);}else{var cur=' '+getClass(el)+' ';if(cur.indexOf(' '+cls+' ')<0){setClass(el,(cur+cls).trim());}}}/**\n\t * Remove class with compatibility for IE & SVG\n\t *\n\t * @param {Element} el\n\t * @param {String} cls\n\t */function removeClass(el,cls){if(el.classList){el.classList.remove(cls);}else{var cur=' '+getClass(el)+' ';var tar=' '+cls+' ';while(cur.indexOf(tar)>=0){cur=cur.replace(tar,' ');}setClass(el,cur.trim());}if(!el.className){el.removeAttribute('class');}}/**\n\t * Extract raw content inside an element into a temporary\n\t * container div\n\t *\n\t * @param {Element} el\n\t * @param {Boolean} asFragment\n\t * @return {Element|DocumentFragment}\n\t */function extractContent(el,asFragment){var child;var rawContent;/* istanbul ignore if */if(isTemplate(el)&&isFragment(el.content)){el=el.content;}if(el.hasChildNodes()){trimNode(el);rawContent=asFragment?document.createDocumentFragment():document.createElement('div');/* eslint-disable no-cond-assign */while(child=el.firstChild){/* eslint-enable no-cond-assign */rawContent.appendChild(child);}}return rawContent;}/**\n\t * Trim possible empty head/tail text and comment\n\t * nodes inside a parent.\n\t *\n\t * @param {Node} node\n\t */function trimNode(node){var child;/* eslint-disable no-sequences */while(child=node.firstChild,isTrimmable(child)){node.removeChild(child);}while(child=node.lastChild,isTrimmable(child)){node.removeChild(child);}/* eslint-enable no-sequences */}function isTrimmable(node){return node&&(node.nodeType===3&&!node.data.trim()||node.nodeType===8);}/**\n\t * Check if an element is a template tag.\n\t * Note if the template appears inside an SVG its tagName\n\t * will be in lowercase.\n\t *\n\t * @param {Element} el\n\t */function isTemplate(el){return el.tagName&&el.tagName.toLowerCase()==='template';}/**\n\t * Create an \"anchor\" for performing dom insertion/removals.\n\t * This is used in a number of scenarios:\n\t * - fragment instance\n\t * - v-html\n\t * - v-if\n\t * - v-for\n\t * - component\n\t *\n\t * @param {String} content\n\t * @param {Boolean} persist - IE trashes empty textNodes on\n\t * cloneNode(true), so in certain\n\t * cases the anchor needs to be\n\t * non-empty to be persisted in\n\t * templates.\n\t * @return {Comment|Text}\n\t */function createAnchor(content,persist){var anchor=config.debug?document.createComment(content):document.createTextNode(persist?' ':'');anchor.__v_anchor=true;return anchor;}/**\n\t * Find a component ref attribute that starts with $.\n\t *\n\t * @param {Element} node\n\t * @return {String|undefined}\n\t */var refRE=/^v-ref:/;function findRef(node){if(node.hasAttributes()){var attrs=node.attributes;for(var i=0,l=attrs.length;i<l;i++){var name=attrs[i].name;if(refRE.test(name)){return camelize(name.replace(refRE,''));}}}}/**\n\t * Map a function to a range of nodes .\n\t *\n\t * @param {Node} node\n\t * @param {Node} end\n\t * @param {Function} op\n\t */function mapNodeRange(node,end,op){var next;while(node!==end){next=node.nextSibling;op(node);node=next;}op(end);}/**\n\t * Remove a range of nodes with transition, store\n\t * the nodes in a fragment with correct ordering,\n\t * and call callback when done.\n\t *\n\t * @param {Node} start\n\t * @param {Node} end\n\t * @param {Vue} vm\n\t * @param {DocumentFragment} frag\n\t * @param {Function} cb\n\t */function removeNodeRange(start,end,vm,frag,cb){var done=false;var removed=0;var nodes=[];mapNodeRange(start,end,function(node){if(node===end)done=true;nodes.push(node);removeWithTransition(node,vm,onRemoved);});function onRemoved(){removed++;if(done&&removed>=nodes.length){for(var i=0;i<nodes.length;i++){frag.appendChild(nodes[i]);}cb&&cb();}}}/**\n\t * Check if a node is a DocumentFragment.\n\t *\n\t * @param {Node} node\n\t * @return {Boolean}\n\t */function isFragment(node){return node&&node.nodeType===11;}/**\n\t * Get outerHTML of elements, taking care\n\t * of SVG elements in IE as well.\n\t *\n\t * @param {Element} el\n\t * @return {String}\n\t */function getOuterHTML(el){if(el.outerHTML){return el.outerHTML;}else{var container=document.createElement('div');container.appendChild(el.cloneNode(true));return container.innerHTML;}}var commonTagRE=/^(div|p|span|img|a|b|i|br|ul|ol|li|h1|h2|h3|h4|h5|h6|code|pre|table|th|td|tr|form|label|input|select|option|nav|article|section|header|footer)$/i;var reservedTagRE=/^(slot|partial|component)$/i;var isUnknownElement=undefined;if(false){isUnknownElement=function isUnknownElement(el,tag){if(tag.indexOf('-')>-1){// http://stackoverflow.com/a/28210364/1070244\n\treturn el.constructor===window.HTMLUnknownElement||el.constructor===window.HTMLElement;}else{return (/HTMLUnknownElement/.test(el.toString())&&// Chrome returns unknown for several HTML5 elements.\n\t// https://code.google.com/p/chromium/issues/detail?id=540526\n\t// Firefox returns unknown for some \"Interactive elements.\"\n\t!/^(data|time|rtc|rb|details|dialog|summary)$/.test(tag));}};}/**\n\t * Check if an element is a component, if yes return its\n\t * component id.\n\t *\n\t * @param {Element} el\n\t * @param {Object} options\n\t * @return {Object|undefined}\n\t */function checkComponentAttr(el,options){var tag=el.tagName.toLowerCase();var hasAttrs=el.hasAttributes();if(!commonTagRE.test(tag)&&!reservedTagRE.test(tag)){if(resolveAsset(options,'components',tag)){return{id:tag};}else{var is=hasAttrs&&getIsBinding(el,options);if(is){return is;}else if(false){var expectedTag=options._componentNameMap&&options._componentNameMap[tag];if(expectedTag){warn('Unknown custom element: <'+tag+'> - '+'did you mean <'+expectedTag+'>? '+'HTML is case-insensitive, remember to use kebab-case in templates.');}else if(isUnknownElement(el,tag)){warn('Unknown custom element: <'+tag+'> - did you '+'register the component correctly? For recursive components, '+'make sure to provide the \"name\" option.');}}}}else if(hasAttrs){return getIsBinding(el,options);}}/**\n\t * Get \"is\" binding from an element.\n\t *\n\t * @param {Element} el\n\t * @param {Object} options\n\t * @return {Object|undefined}\n\t */function getIsBinding(el,options){// dynamic syntax\n\tvar exp=el.getAttribute('is');if(exp!=null){if(resolveAsset(options,'components',exp)){el.removeAttribute('is');return{id:exp};}}else{exp=getBindAttr(el,'is');if(exp!=null){return{id:exp,dynamic:true};}}}/**\n\t * Option overwriting strategies are functions that handle\n\t * how to merge a parent option value and a child option\n\t * value into the final value.\n\t *\n\t * All strategy functions follow the same signature:\n\t *\n\t * @param {*} parentVal\n\t * @param {*} childVal\n\t * @param {Vue} [vm]\n\t */var strats=config.optionMergeStrategies=Object.create(null);/**\n\t * Helper that recursively merges two data objects together.\n\t */function mergeData(to,from){var key,toVal,fromVal;for(key in from){toVal=to[key];fromVal=from[key];if(!hasOwn(to,key)){set(to,key,fromVal);}else if(isObject(toVal)&&isObject(fromVal)){mergeData(toVal,fromVal);}}return to;}/**\n\t * Data\n\t */strats.data=function(parentVal,childVal,vm){if(!vm){// in a Vue.extend merge, both should be functions\n\tif(!childVal){return parentVal;}if(typeof childVal!=='function'){(\"production\")!=='production'&&warn('The \"data\" option should be a function '+'that returns a per-instance value in component '+'definitions.',vm);return parentVal;}if(!parentVal){return childVal;}// when parentVal & childVal are both present,\n\t// we need to return a function that returns the\n\t// merged result of both functions... no need to\n\t// check if parentVal is a function here because\n\t// it has to be a function to pass previous merges.\n\treturn function mergedDataFn(){return mergeData(childVal.call(this),parentVal.call(this));};}else if(parentVal||childVal){return function mergedInstanceDataFn(){// instance merge\n\tvar instanceData=typeof childVal==='function'?childVal.call(vm):childVal;var defaultData=typeof parentVal==='function'?parentVal.call(vm):undefined;if(instanceData){return mergeData(instanceData,defaultData);}else{return defaultData;}};}};/**\n\t * El\n\t */strats.el=function(parentVal,childVal,vm){if(!vm&&childVal&&typeof childVal!=='function'){(\"production\")!=='production'&&warn('The \"el\" option should be a function '+'that returns a per-instance value in component '+'definitions.',vm);return;}var ret=childVal||parentVal;// invoke the element factory if this is instance merge\n\treturn vm&&typeof ret==='function'?ret.call(vm):ret;};/**\n\t * Hooks and param attributes are merged as arrays.\n\t */strats.init=strats.created=strats.ready=strats.attached=strats.detached=strats.beforeCompile=strats.compiled=strats.beforeDestroy=strats.destroyed=strats.activate=function(parentVal,childVal){return childVal?parentVal?parentVal.concat(childVal):isArray(childVal)?childVal:[childVal]:parentVal;};/**\n\t * Assets\n\t *\n\t * When a vm is present (instance creation), we need to do\n\t * a three-way merge between constructor options, instance\n\t * options and parent options.\n\t */function mergeAssets(parentVal,childVal){var res=Object.create(parentVal||null);return childVal?extend(res,guardArrayAssets(childVal)):res;}config._assetTypes.forEach(function(type){strats[type+'s']=mergeAssets;});/**\n\t * Events & Watchers.\n\t *\n\t * Events & watchers hashes should not overwrite one\n\t * another, so we merge them as arrays.\n\t */strats.watch=strats.events=function(parentVal,childVal){if(!childVal)return parentVal;if(!parentVal)return childVal;var ret={};extend(ret,parentVal);for(var key in childVal){var parent=ret[key];var child=childVal[key];if(parent&&!isArray(parent)){parent=[parent];}ret[key]=parent?parent.concat(child):[child];}return ret;};/**\n\t * Other object hashes.\n\t */strats.props=strats.methods=strats.computed=function(parentVal,childVal){if(!childVal)return parentVal;if(!parentVal)return childVal;var ret=Object.create(null);extend(ret,parentVal);extend(ret,childVal);return ret;};/**\n\t * Default strategy.\n\t */var defaultStrat=function defaultStrat(parentVal,childVal){return childVal===undefined?parentVal:childVal;};/**\n\t * Make sure component options get converted to actual\n\t * constructors.\n\t *\n\t * @param {Object} options\n\t */function guardComponents(options){if(options.components){var components=options.components=guardArrayAssets(options.components);var ids=Object.keys(components);var def;if(false){var map=options._componentNameMap={};}for(var i=0,l=ids.length;i<l;i++){var key=ids[i];if(commonTagRE.test(key)||reservedTagRE.test(key)){(\"production\")!=='production'&&warn('Do not use built-in or reserved HTML elements as component '+'id: '+key);continue;}// record a all lowercase <-> kebab-case mapping for\n\t// possible custom element case error warning\n\tif(false){map[key.replace(/-/g,'').toLowerCase()]=hyphenate(key);}def=components[key];if(isPlainObject(def)){components[key]=Vue.extend(def);}}}}/**\n\t * Ensure all props option syntax are normalized into the\n\t * Object-based format.\n\t *\n\t * @param {Object} options\n\t */function guardProps(options){var props=options.props;var i,val;if(isArray(props)){options.props={};i=props.length;while(i--){val=props[i];if(typeof val==='string'){options.props[val]=null;}else if(val.name){options.props[val.name]=val;}}}else if(isPlainObject(props)){var keys=Object.keys(props);i=keys.length;while(i--){val=props[keys[i]];if(typeof val==='function'){props[keys[i]]={type:val};}}}}/**\n\t * Guard an Array-format assets option and converted it\n\t * into the key-value Object format.\n\t *\n\t * @param {Object|Array} assets\n\t * @return {Object}\n\t */function guardArrayAssets(assets){if(isArray(assets)){var res={};var i=assets.length;var asset;while(i--){asset=assets[i];var id=typeof asset==='function'?asset.options&&asset.options.name||asset.id:asset.name||asset.id;if(!id){(\"production\")!=='production'&&warn('Array-syntax assets must provide a \"name\" or \"id\" field.');}else{res[id]=asset;}}return res;}return assets;}/**\n\t * Merge two option objects into a new one.\n\t * Core utility used in both instantiation and inheritance.\n\t *\n\t * @param {Object} parent\n\t * @param {Object} child\n\t * @param {Vue} [vm] - if vm is present, indicates this is\n\t * an instantiation merge.\n\t */function mergeOptions(parent,child,vm){guardComponents(child);guardProps(child);if(false){if(child.propsData&&!vm){warn('propsData can only be used as an instantiation option.');}}var options={};var key;if(child['extends']){parent=typeof child['extends']==='function'?mergeOptions(parent,child['extends'].options,vm):mergeOptions(parent,child['extends'],vm);}if(child.mixins){for(var i=0,l=child.mixins.length;i<l;i++){var mixin=child.mixins[i];var mixinOptions=mixin.prototype instanceof Vue?mixin.options:mixin;parent=mergeOptions(parent,mixinOptions,vm);}}for(key in parent){mergeField(key);}for(key in child){if(!hasOwn(parent,key)){mergeField(key);}}function mergeField(key){var strat=strats[key]||defaultStrat;options[key]=strat(parent[key],child[key],vm,key);}return options;}/**\n\t * Resolve an asset.\n\t * This function is used because child instances need access\n\t * to assets defined in its ancestor chain.\n\t *\n\t * @param {Object} options\n\t * @param {String} type\n\t * @param {String} id\n\t * @param {Boolean} warnMissing\n\t * @return {Object|Function}\n\t */function resolveAsset(options,type,id,warnMissing){/* istanbul ignore if */if(typeof id!=='string'){return;}var assets=options[type];var camelizedId;var res=assets[id]||// camelCase ID\n\tassets[camelizedId=camelize(id)]||// Pascal Case ID\n\tassets[camelizedId.charAt(0).toUpperCase()+camelizedId.slice(1)];if(false){warn('Failed to resolve '+type.slice(0,-1)+': '+id,options);}return res;}var uid$1=0;/**\n\t * A dep is an observable that can have multiple\n\t * directives subscribing to it.\n\t *\n\t * @constructor\n\t */function Dep(){this.id=uid$1++;this.subs=[];}// the current target watcher being evaluated.\n\t// this is globally unique because there could be only one\n\t// watcher being evaluated at any time.\n\tDep.target=null;/**\n\t * Add a directive subscriber.\n\t *\n\t * @param {Directive} sub\n\t */Dep.prototype.addSub=function(sub){this.subs.push(sub);};/**\n\t * Remove a directive subscriber.\n\t *\n\t * @param {Directive} sub\n\t */Dep.prototype.removeSub=function(sub){this.subs.$remove(sub);};/**\n\t * Add self as a dependency to the target watcher.\n\t */Dep.prototype.depend=function(){Dep.target.addDep(this);};/**\n\t * Notify all subscribers of a new value.\n\t */Dep.prototype.notify=function(){// stablize the subscriber list first\n\tvar subs=toArray(this.subs);for(var i=0,l=subs.length;i<l;i++){subs[i].update();}};var arrayProto=Array.prototype;var arrayMethods=Object.create(arrayProto)/**\n\t * Intercept mutating methods and emit events\n\t */;['push','pop','shift','unshift','splice','sort','reverse'].forEach(function(method){// cache original method\n\tvar original=arrayProto[method];def(arrayMethods,method,function mutator(){// avoid leaking arguments:\n\t// http://jsperf.com/closure-with-arguments\n\tvar i=arguments.length;var args=new Array(i);while(i--){args[i]=arguments[i];}var result=original.apply(this,args);var ob=this.__ob__;var inserted;switch(method){case'push':inserted=args;break;case'unshift':inserted=args;break;case'splice':inserted=args.slice(2);break;}if(inserted)ob.observeArray(inserted);// notify change\n\tob.dep.notify();return result;});});/**\n\t * Swap the element at the given index with a new value\n\t * and emits corresponding event.\n\t *\n\t * @param {Number} index\n\t * @param {*} val\n\t * @return {*} - replaced element\n\t */def(arrayProto,'$set',function $set(index,val){if(index>=this.length){this.length=Number(index)+1;}return this.splice(index,1,val)[0];});/**\n\t * Convenience method to remove the element at given index or target element reference.\n\t *\n\t * @param {*} item\n\t */def(arrayProto,'$remove',function $remove(item){/* istanbul ignore if */if(!this.length)return;var index=indexOf(this,item);if(index>-1){return this.splice(index,1);}});var arrayKeys=Object.getOwnPropertyNames(arrayMethods);/**\n\t * By default, when a reactive property is set, the new value is\n\t * also converted to become reactive. However in certain cases, e.g.\n\t * v-for scope alias and props, we don't want to force conversion\n\t * because the value may be a nested value under a frozen data structure.\n\t *\n\t * So whenever we want to set a reactive property without forcing\n\t * conversion on the new value, we wrap that call inside this function.\n\t */var shouldConvert=true;function withoutConversion(fn){shouldConvert=false;fn();shouldConvert=true;}/**\n\t * Observer class that are attached to each observed\n\t * object. Once attached, the observer converts target\n\t * object's property keys into getter/setters that\n\t * collect dependencies and dispatches updates.\n\t *\n\t * @param {Array|Object} value\n\t * @constructor\n\t */function Observer(value){this.value=value;this.dep=new Dep();def(value,'__ob__',this);if(isArray(value)){var augment=hasProto?protoAugment:copyAugment;augment(value,arrayMethods,arrayKeys);this.observeArray(value);}else{this.walk(value);}}// Instance methods\n\t/**\n\t * Walk through each property and convert them into\n\t * getter/setters. This method should only be called when\n\t * value type is Object.\n\t *\n\t * @param {Object} obj\n\t */Observer.prototype.walk=function(obj){var keys=Object.keys(obj);for(var i=0,l=keys.length;i<l;i++){this.convert(keys[i],obj[keys[i]]);}};/**\n\t * Observe a list of Array items.\n\t *\n\t * @param {Array} items\n\t */Observer.prototype.observeArray=function(items){for(var i=0,l=items.length;i<l;i++){observe(items[i]);}};/**\n\t * Convert a property into getter/setter so we can emit\n\t * the events when the property is accessed/changed.\n\t *\n\t * @param {String} key\n\t * @param {*} val\n\t */Observer.prototype.convert=function(key,val){defineReactive(this.value,key,val);};/**\n\t * Add an owner vm, so that when $set/$delete mutations\n\t * happen we can notify owner vms to proxy the keys and\n\t * digest the watchers. This is only called when the object\n\t * is observed as an instance's root $data.\n\t *\n\t * @param {Vue} vm\n\t */Observer.prototype.addVm=function(vm){(this.vms||(this.vms=[])).push(vm);};/**\n\t * Remove an owner vm. This is called when the object is\n\t * swapped out as an instance's $data object.\n\t *\n\t * @param {Vue} vm\n\t */Observer.prototype.removeVm=function(vm){this.vms.$remove(vm);};// helpers\n\t/**\n\t * Augment an target Object or Array by intercepting\n\t * the prototype chain using __proto__\n\t *\n\t * @param {Object|Array} target\n\t * @param {Object} src\n\t */function protoAugment(target,src){/* eslint-disable no-proto */target.__proto__=src;/* eslint-enable no-proto */}/**\n\t * Augment an target Object or Array by defining\n\t * hidden properties.\n\t *\n\t * @param {Object|Array} target\n\t * @param {Object} proto\n\t */function copyAugment(target,src,keys){for(var i=0,l=keys.length;i<l;i++){var key=keys[i];def(target,key,src[key]);}}/**\n\t * Attempt to create an observer instance for a value,\n\t * returns the new observer if successfully observed,\n\t * or the existing observer if the value already has one.\n\t *\n\t * @param {*} value\n\t * @param {Vue} [vm]\n\t * @return {Observer|undefined}\n\t * @static\n\t */function observe(value,vm){if(!value||(typeof value==='undefined'?'undefined':_typeof(value))!=='object'){return;}var ob;if(hasOwn(value,'__ob__')&&value.__ob__ instanceof Observer){ob=value.__ob__;}else if(shouldConvert&&(isArray(value)||isPlainObject(value))&&Object.isExtensible(value)&&!value._isVue){ob=new Observer(value);}if(ob&&vm){ob.addVm(vm);}return ob;}/**\n\t * Define a reactive property on an Object.\n\t *\n\t * @param {Object} obj\n\t * @param {String} key\n\t * @param {*} val\n\t */function defineReactive(obj,key,val){var dep=new Dep();var property=Object.getOwnPropertyDescriptor(obj,key);if(property&&property.configurable===false){return;}// cater for pre-defined getter/setters\n\tvar getter=property&&property.get;var setter=property&&property.set;var childOb=observe(val);Object.defineProperty(obj,key,{enumerable:true,configurable:true,get:function reactiveGetter(){var value=getter?getter.call(obj):val;if(Dep.target){dep.depend();if(childOb){childOb.dep.depend();}if(isArray(value)){for(var e,i=0,l=value.length;i<l;i++){e=value[i];e&&e.__ob__&&e.__ob__.dep.depend();}}}return value;},set:function reactiveSetter(newVal){var value=getter?getter.call(obj):val;if(newVal===value){return;}if(setter){setter.call(obj,newVal);}else{val=newVal;}childOb=observe(newVal);dep.notify();}});}var util=Object.freeze({defineReactive:defineReactive,set:set,del:del,hasOwn:hasOwn,isLiteral:isLiteral,isReserved:isReserved,_toString:_toString,toNumber:toNumber,toBoolean:toBoolean,stripQuotes:stripQuotes,camelize:camelize,hyphenate:hyphenate,classify:classify,bind:bind,toArray:toArray,extend:extend,isObject:isObject,isPlainObject:isPlainObject,def:def,debounce:_debounce,indexOf:indexOf,cancellable:cancellable,looseEqual:looseEqual,isArray:isArray,hasProto:hasProto,inBrowser:inBrowser,devtools:devtools,isIE:isIE,isIE9:isIE9,isAndroid:isAndroid,isIos:isIos,iosVersionMatch:iosVersionMatch,iosVersion:iosVersion,hasMutationObserverBug:hasMutationObserverBug,get transitionProp(){return transitionProp;},get transitionEndEvent(){return transitionEndEvent;},get animationProp(){return animationProp;},get animationEndEvent(){return animationEndEvent;},nextTick:nextTick,get _Set(){return _Set;},query:query,inDoc:inDoc,getAttr:getAttr,getBindAttr:getBindAttr,hasBindAttr:hasBindAttr,before:before,after:after,remove:remove,prepend:prepend,replace:replace,on:on,off:off,setClass:setClass,addClass:addClass,removeClass:removeClass,extractContent:extractContent,trimNode:trimNode,isTemplate:isTemplate,createAnchor:createAnchor,findRef:findRef,mapNodeRange:mapNodeRange,removeNodeRange:removeNodeRange,isFragment:isFragment,getOuterHTML:getOuterHTML,mergeOptions:mergeOptions,resolveAsset:resolveAsset,checkComponentAttr:checkComponentAttr,commonTagRE:commonTagRE,reservedTagRE:reservedTagRE,get warn(){return warn;}});var uid=0;function initMixin(Vue){/**\n\t * The main init sequence. This is called for every\n\t * instance, including ones that are created from extended\n\t * constructors.\n\t *\n\t * @param {Object} options - this options object should be\n\t * the result of merging class\n\t * options and the options passed\n\t * in to the constructor.\n\t */Vue.prototype._init=function(options){options=options||{};this.$el=null;this.$parent=options.parent;this.$root=this.$parent?this.$parent.$root:this;this.$children=[];this.$refs={};// child vm references\n\tthis.$els={};// element references\n\tthis._watchers=[];// all watchers as an array\n\tthis._directives=[];// all directives\n\t// a uid\n\tthis._uid=uid++;// a flag to avoid this being observed\n\tthis._isVue=true;// events bookkeeping\n\tthis._events={};// registered callbacks\n\tthis._eventsCount={};// for $broadcast optimization\n\t// fragment instance properties\n\tthis._isFragment=false;this._fragment=// @type {DocumentFragment}\n\tthis._fragmentStart=// @type {Text|Comment}\n\tthis._fragmentEnd=null;// @type {Text|Comment}\n\t// lifecycle state\n\tthis._isCompiled=this._isDestroyed=this._isReady=this._isAttached=this._isBeingDestroyed=this._vForRemoving=false;this._unlinkFn=null;// context:\n\t// if this is a transcluded component, context\n\t// will be the common parent vm of this instance\n\t// and its host.\n\tthis._context=options._context||this.$parent;// scope:\n\t// if this is inside an inline v-for, the scope\n\t// will be the intermediate scope created for this\n\t// repeat fragment. this is used for linking props\n\t// and container directives.\n\tthis._scope=options._scope;// fragment:\n\t// if this instance is compiled inside a Fragment, it\n\t// needs to reigster itself as a child of that fragment\n\t// for attach/detach to work properly.\n\tthis._frag=options._frag;if(this._frag){this._frag.children.push(this);}// push self into parent / transclusion host\n\tif(this.$parent){this.$parent.$children.push(this);}// merge options.\n\toptions=this.$options=mergeOptions(this.constructor.options,options,this);// set ref\n\tthis._updateRef();// initialize data as empty object.\n\t// it will be filled up in _initData().\n\tthis._data={};// call init hook\n\tthis._callHook('init');// initialize data observation and scope inheritance.\n\tthis._initState();// setup event system and option events.\n\tthis._initEvents();// call created hook\n\tthis._callHook('created');// if `el` option is passed, start compilation.\n\tif(options.el){this.$mount(options.el);}};}var pathCache=new Cache(1000);// actions\n\tvar APPEND=0;var PUSH=1;var INC_SUB_PATH_DEPTH=2;var PUSH_SUB_PATH=3;// states\n\tvar BEFORE_PATH=0;var IN_PATH=1;var BEFORE_IDENT=2;var IN_IDENT=3;var IN_SUB_PATH=4;var IN_SINGLE_QUOTE=5;var IN_DOUBLE_QUOTE=6;var AFTER_PATH=7;var ERROR=8;var pathStateMachine=[];pathStateMachine[BEFORE_PATH]={'ws':[BEFORE_PATH],'ident':[IN_IDENT,APPEND],'[':[IN_SUB_PATH],'eof':[AFTER_PATH]};pathStateMachine[IN_PATH]={'ws':[IN_PATH],'.':[BEFORE_IDENT],'[':[IN_SUB_PATH],'eof':[AFTER_PATH]};pathStateMachine[BEFORE_IDENT]={'ws':[BEFORE_IDENT],'ident':[IN_IDENT,APPEND]};pathStateMachine[IN_IDENT]={'ident':[IN_IDENT,APPEND],'0':[IN_IDENT,APPEND],'number':[IN_IDENT,APPEND],'ws':[IN_PATH,PUSH],'.':[BEFORE_IDENT,PUSH],'[':[IN_SUB_PATH,PUSH],'eof':[AFTER_PATH,PUSH]};pathStateMachine[IN_SUB_PATH]={\"'\":[IN_SINGLE_QUOTE,APPEND],'\"':[IN_DOUBLE_QUOTE,APPEND],'[':[IN_SUB_PATH,INC_SUB_PATH_DEPTH],']':[IN_PATH,PUSH_SUB_PATH],'eof':ERROR,'else':[IN_SUB_PATH,APPEND]};pathStateMachine[IN_SINGLE_QUOTE]={\"'\":[IN_SUB_PATH,APPEND],'eof':ERROR,'else':[IN_SINGLE_QUOTE,APPEND]};pathStateMachine[IN_DOUBLE_QUOTE]={'\"':[IN_SUB_PATH,APPEND],'eof':ERROR,'else':[IN_DOUBLE_QUOTE,APPEND]};/**\n\t * Determine the type of a character in a keypath.\n\t *\n\t * @param {Char} ch\n\t * @return {String} type\n\t */function getPathCharType(ch){if(ch===undefined){return'eof';}var code=ch.charCodeAt(0);switch(code){case 0x5B:// [\n\tcase 0x5D:// ]\n\tcase 0x2E:// .\n\tcase 0x22:// \"\n\tcase 0x27:// '\n\tcase 0x30:// 0\n\treturn ch;case 0x5F:// _\n\tcase 0x24:// $\n\treturn'ident';case 0x20:// Space\n\tcase 0x09:// Tab\n\tcase 0x0A:// Newline\n\tcase 0x0D:// Return\n\tcase 0xA0:// No-break space\n\tcase 0xFEFF:// Byte Order Mark\n\tcase 0x2028:// Line Separator\n\tcase 0x2029:// Paragraph Separator\n\treturn'ws';}// a-z, A-Z\n\tif(code>=0x61&&code<=0x7A||code>=0x41&&code<=0x5A){return'ident';}// 1-9\n\tif(code>=0x31&&code<=0x39){return'number';}return'else';}/**\n\t * Format a subPath, return its plain form if it is\n\t * a literal string or number. Otherwise prepend the\n\t * dynamic indicator (*).\n\t *\n\t * @param {String} path\n\t * @return {String}\n\t */function formatSubPath(path){var trimmed=path.trim();// invalid leading 0\n\tif(path.charAt(0)==='0'&&isNaN(path)){return false;}return isLiteral(trimmed)?stripQuotes(trimmed):'*'+trimmed;}/**\n\t * Parse a string path into an array of segments\n\t *\n\t * @param {String} path\n\t * @return {Array|undefined}\n\t */function parse(path){var keys=[];var index=-1;var mode=BEFORE_PATH;var subPathDepth=0;var c,newChar,key,type,transition,action,typeMap;var actions=[];actions[PUSH]=function(){if(key!==undefined){keys.push(key);key=undefined;}};actions[APPEND]=function(){if(key===undefined){key=newChar;}else{key+=newChar;}};actions[INC_SUB_PATH_DEPTH]=function(){actions[APPEND]();subPathDepth++;};actions[PUSH_SUB_PATH]=function(){if(subPathDepth>0){subPathDepth--;mode=IN_SUB_PATH;actions[APPEND]();}else{subPathDepth=0;key=formatSubPath(key);if(key===false){return false;}else{actions[PUSH]();}}};function maybeUnescapeQuote(){var nextChar=path[index+1];if(mode===IN_SINGLE_QUOTE&&nextChar===\"'\"||mode===IN_DOUBLE_QUOTE&&nextChar==='\"'){index++;newChar='\\\\'+nextChar;actions[APPEND]();return true;}}while(mode!=null){index++;c=path[index];if(c==='\\\\'&&maybeUnescapeQuote()){continue;}type=getPathCharType(c);typeMap=pathStateMachine[mode];transition=typeMap[type]||typeMap['else']||ERROR;if(transition===ERROR){return;// parse error\n\t}mode=transition[0];action=actions[transition[1]];if(action){newChar=transition[2];newChar=newChar===undefined?c:newChar;if(action()===false){return;}}if(mode===AFTER_PATH){keys.raw=path;return keys;}}}/**\n\t * External parse that check for a cache hit first\n\t *\n\t * @param {String} path\n\t * @return {Array|undefined}\n\t */function parsePath(path){var hit=pathCache.get(path);if(!hit){hit=parse(path);if(hit){pathCache.put(path,hit);}}return hit;}/**\n\t * Get from an object from a path string\n\t *\n\t * @param {Object} obj\n\t * @param {String} path\n\t */function getPath(obj,path){return parseExpression(path).get(obj);}/**\n\t * Warn against setting non-existent root path on a vm.\n\t */var warnNonExistent;if(false){warnNonExistent=function warnNonExistent(path,vm){warn('You are setting a non-existent path \"'+path.raw+'\" '+'on a vm instance. Consider pre-initializing the property '+'with the \"data\" option for more reliable reactivity '+'and better performance.',vm);};}/**\n\t * Set on an object from a path\n\t *\n\t * @param {Object} obj\n\t * @param {String | Array} path\n\t * @param {*} val\n\t */function setPath(obj,path,val){var original=obj;if(typeof path==='string'){path=parse(path);}if(!path||!isObject(obj)){return false;}var last,key;for(var i=0,l=path.length;i<l;i++){last=obj;key=path[i];if(key.charAt(0)==='*'){key=parseExpression(key.slice(1)).get.call(original,original);}if(i<l-1){obj=obj[key];if(!isObject(obj)){obj={};if(false){warnNonExistent(path,last);}set(last,key,obj);}}else{if(isArray(obj)){obj.$set(key,val);}else if(key in obj){obj[key]=val;}else{if(false){warnNonExistent(path,obj);}set(obj,key,val);}}}return true;}var path=Object.freeze({parsePath:parsePath,getPath:getPath,setPath:setPath});var expressionCache=new Cache(1000);var allowedKeywords='Math,Date,this,true,false,null,undefined,Infinity,NaN,'+'isNaN,isFinite,decodeURI,decodeURIComponent,encodeURI,'+'encodeURIComponent,parseInt,parseFloat';var allowedKeywordsRE=new RegExp('^('+allowedKeywords.replace(/,/g,'\\\\b|')+'\\\\b)');// keywords that don't make sense inside expressions\n\tvar improperKeywords='break,case,class,catch,const,continue,debugger,default,'+'delete,do,else,export,extends,finally,for,function,if,'+'import,in,instanceof,let,return,super,switch,throw,try,'+'var,while,with,yield,enum,await,implements,package,'+'protected,static,interface,private,public';var improperKeywordsRE=new RegExp('^('+improperKeywords.replace(/,/g,'\\\\b|')+'\\\\b)');var wsRE=/\\s/g;var newlineRE=/\\n/g;var saveRE=/[\\{,]\\s*[\\w\\$_]+\\s*:|('(?:[^'\\\\]|\\\\.)*'|\"(?:[^\"\\\\]|\\\\.)*\"|`(?:[^`\\\\]|\\\\.)*\\$\\{|\\}(?:[^`\\\\]|\\\\.)*`|`(?:[^`\\\\]|\\\\.)*`)|new |typeof |void /g;var restoreRE=/\"(\\d+)\"/g;var pathTestRE=/^[A-Za-z_$][\\w$]*(?:\\.[A-Za-z_$][\\w$]*|\\['.*?'\\]|\\[\".*?\"\\]|\\[\\d+\\]|\\[[A-Za-z_$][\\w$]*\\])*$/;var identRE=/[^\\w$\\.](?:[A-Za-z_$][\\w$]*)/g;var literalValueRE$1=/^(?:true|false|null|undefined|Infinity|NaN)$/;function noop(){}/**\n\t * Save / Rewrite / Restore\n\t *\n\t * When rewriting paths found in an expression, it is\n\t * possible for the same letter sequences to be found in\n\t * strings and Object literal property keys. Therefore we\n\t * remove and store these parts in a temporary array, and\n\t * restore them after the path rewrite.\n\t */var saved=[];/**\n\t * Save replacer\n\t *\n\t * The save regex can match two possible cases:\n\t * 1. An opening object literal\n\t * 2. A string\n\t * If matched as a plain string, we need to escape its\n\t * newlines, since the string needs to be preserved when\n\t * generating the function body.\n\t *\n\t * @param {String} str\n\t * @param {String} isString - str if matched as a string\n\t * @return {String} - placeholder with index\n\t */function save(str,isString){var i=saved.length;saved[i]=isString?str.replace(newlineRE,'\\\\n'):str;return'\"'+i+'\"';}/**\n\t * Path rewrite replacer\n\t *\n\t * @param {String} raw\n\t * @return {String}\n\t */function rewrite(raw){var c=raw.charAt(0);var path=raw.slice(1);if(allowedKeywordsRE.test(path)){return raw;}else{path=path.indexOf('\"')>-1?path.replace(restoreRE,restore):path;return c+'scope.'+path;}}/**\n\t * Restore replacer\n\t *\n\t * @param {String} str\n\t * @param {String} i - matched save index\n\t * @return {String}\n\t */function restore(str,i){return saved[i];}/**\n\t * Rewrite an expression, prefixing all path accessors with\n\t * `scope.` and generate getter/setter functions.\n\t *\n\t * @param {String} exp\n\t * @return {Function}\n\t */function compileGetter(exp){if(improperKeywordsRE.test(exp)){(\"production\")!=='production'&&warn('Avoid using reserved keywords in expression: '+exp);}// reset state\n\tsaved.length=0;// save strings and object literal keys\n\tvar body=exp.replace(saveRE,save).replace(wsRE,'');// rewrite all paths\n\t// pad 1 space here because the regex matches 1 extra char\n\tbody=(' '+body).replace(identRE,rewrite).replace(restoreRE,restore);return makeGetterFn(body);}/**\n\t * Build a getter function. Requires eval.\n\t *\n\t * We isolate the try/catch so it doesn't affect the\n\t * optimization of the parse function when it is not called.\n\t *\n\t * @param {String} body\n\t * @return {Function|undefined}\n\t */function makeGetterFn(body){try{/* eslint-disable no-new-func */return new Function('scope','return '+body+';');/* eslint-enable no-new-func */}catch(e){if(false){/* istanbul ignore if */if(e.toString().match(/unsafe-eval|CSP/)){warn('It seems you are using the default build of Vue.js in an environment '+'with Content Security Policy that prohibits unsafe-eval. '+'Use the CSP-compliant build instead: '+'http://vuejs.org/guide/installation.html#CSP-compliant-build');}else{warn('Invalid expression. '+'Generated function body: '+body);}}return noop;}}/**\n\t * Compile a setter function for the expression.\n\t *\n\t * @param {String} exp\n\t * @return {Function|undefined}\n\t */function compileSetter(exp){var path=parsePath(exp);if(path){return function(scope,val){setPath(scope,path,val);};}else{(\"production\")!=='production'&&warn('Invalid setter expression: '+exp);}}/**\n\t * Parse an expression into re-written getter/setters.\n\t *\n\t * @param {String} exp\n\t * @param {Boolean} needSet\n\t * @return {Function}\n\t */function parseExpression(exp,needSet){exp=exp.trim();// try cache\n\tvar hit=expressionCache.get(exp);if(hit){if(needSet&&!hit.set){hit.set=compileSetter(hit.exp);}return hit;}var res={exp:exp};res.get=isSimplePath(exp)&&exp.indexOf('[')<0// optimized super simple getter\n\t?makeGetterFn('scope.'+exp)// dynamic getter\n\t:compileGetter(exp);if(needSet){res.set=compileSetter(exp);}expressionCache.put(exp,res);return res;}/**\n\t * Check if an expression is a simple path.\n\t *\n\t * @param {String} exp\n\t * @return {Boolean}\n\t */function isSimplePath(exp){return pathTestRE.test(exp)&&// don't treat literal values as paths\n\t!literalValueRE$1.test(exp)&&// Math constants e.g. Math.PI, Math.E etc.\n\texp.slice(0,5)!=='Math.';}var expression=Object.freeze({parseExpression:parseExpression,isSimplePath:isSimplePath});// we have two separate queues: one for directive updates\n\t// and one for user watcher registered via $watch().\n\t// we want to guarantee directive updates to be called\n\t// before user watchers so that when user watchers are\n\t// triggered, the DOM would have already been in updated\n\t// state.\n\tvar queue=[];var userQueue=[];var has={};var circular={};var waiting=false;/**\n\t * Reset the batcher's state.\n\t */function resetBatcherState(){queue.length=0;userQueue.length=0;has={};circular={};waiting=false;}/**\n\t * Flush both queues and run the watchers.\n\t */function flushBatcherQueue(){var _again=true;_function:while(_again){_again=false;runBatcherQueue(queue);runBatcherQueue(userQueue);// user watchers triggered more watchers,\n\t// keep flushing until it depletes\n\tif(queue.length){_again=true;continue _function;}// dev tool hook\n\t/* istanbul ignore if */if(devtools&&config.devtools){devtools.emit('flush');}resetBatcherState();}}/**\n\t * Run the watchers in a single queue.\n\t *\n\t * @param {Array} queue\n\t */function runBatcherQueue(queue){// do not cache length because more watchers might be pushed\n\t// as we run existing watchers\n\tfor(var i=0;i<queue.length;i++){var watcher=queue[i];var id=watcher.id;has[id]=null;watcher.run();// in dev build, check and stop circular updates.\n\tif(false){circular[id]=(circular[id]||0)+1;if(circular[id]>config._maxUpdateCount){warn('You may have an infinite update loop for watcher '+'with expression \"'+watcher.expression+'\"',watcher.vm);break;}}}queue.length=0;}/**\n\t * Push a watcher into the watcher queue.\n\t * Jobs with duplicate IDs will be skipped unless it's\n\t * pushed when the queue is being flushed.\n\t *\n\t * @param {Watcher} watcher\n\t * properties:\n\t * - {Number} id\n\t * - {Function} run\n\t */function pushWatcher(watcher){var id=watcher.id;if(has[id]==null){// push watcher into appropriate queue\n\tvar q=watcher.user?userQueue:queue;has[id]=q.length;q.push(watcher);// queue the flush\n\tif(!waiting){waiting=true;nextTick(flushBatcherQueue);}}}var uid$2=0;/**\n\t * A watcher parses an expression, collects dependencies,\n\t * and fires callback when the expression value changes.\n\t * This is used for both the $watch() api and directives.\n\t *\n\t * @param {Vue} vm\n\t * @param {String|Function} expOrFn\n\t * @param {Function} cb\n\t * @param {Object} options\n\t * - {Array} filters\n\t * - {Boolean} twoWay\n\t * - {Boolean} deep\n\t * - {Boolean} user\n\t * - {Boolean} sync\n\t * - {Boolean} lazy\n\t * - {Function} [preProcess]\n\t * - {Function} [postProcess]\n\t * @constructor\n\t */function Watcher(vm,expOrFn,cb,options){// mix in options\n\tif(options){extend(this,options);}var isFn=typeof expOrFn==='function';this.vm=vm;vm._watchers.push(this);this.expression=expOrFn;this.cb=cb;this.id=++uid$2;// uid for batching\n\tthis.active=true;this.dirty=this.lazy;// for lazy watchers\n\tthis.deps=[];this.newDeps=[];this.depIds=new _Set();this.newDepIds=new _Set();this.prevError=null;// for async error stacks\n\t// parse expression for getter/setter\n\tif(isFn){this.getter=expOrFn;this.setter=undefined;}else{var res=parseExpression(expOrFn,this.twoWay);this.getter=res.get;this.setter=res.set;}this.value=this.lazy?undefined:this.get();// state for avoiding false triggers for deep and Array\n\t// watchers during vm._digest()\n\tthis.queued=this.shallow=false;}/**\n\t * Evaluate the getter, and re-collect dependencies.\n\t */Watcher.prototype.get=function(){this.beforeGet();var scope=this.scope||this.vm;var value;try{value=this.getter.call(scope,scope);}catch(e){if(false){warn('Error when evaluating expression '+'\"'+this.expression+'\": '+e.toString(),this.vm);}}// \"touch\" every property so they are all tracked as\n\t// dependencies for deep watching\n\tif(this.deep){traverse(value);}if(this.preProcess){value=this.preProcess(value);}if(this.filters){value=scope._applyFilters(value,null,this.filters,false);}if(this.postProcess){value=this.postProcess(value);}this.afterGet();return value;};/**\n\t * Set the corresponding value with the setter.\n\t *\n\t * @param {*} value\n\t */Watcher.prototype.set=function(value){var scope=this.scope||this.vm;if(this.filters){value=scope._applyFilters(value,this.value,this.filters,true);}try{this.setter.call(scope,scope,value);}catch(e){if(false){warn('Error when evaluating setter '+'\"'+this.expression+'\": '+e.toString(),this.vm);}}// two-way sync for v-for alias\n\tvar forContext=scope.$forContext;if(forContext&&forContext.alias===this.expression){if(forContext.filters){(\"production\")!=='production'&&warn('It seems you are using two-way binding on '+'a v-for alias ('+this.expression+'), and the '+'v-for has filters. This will not work properly. '+'Either remove the filters or use an array of '+'objects and bind to object properties instead.',this.vm);return;}forContext._withLock(function(){if(scope.$key){// original is an object\n\tforContext.rawValue[scope.$key]=value;}else{forContext.rawValue.$set(scope.$index,value);}});}};/**\n\t * Prepare for dependency collection.\n\t */Watcher.prototype.beforeGet=function(){Dep.target=this;};/**\n\t * Add a dependency to this directive.\n\t *\n\t * @param {Dep} dep\n\t */Watcher.prototype.addDep=function(dep){var id=dep.id;if(!this.newDepIds.has(id)){this.newDepIds.add(id);this.newDeps.push(dep);if(!this.depIds.has(id)){dep.addSub(this);}}};/**\n\t * Clean up for dependency collection.\n\t */Watcher.prototype.afterGet=function(){Dep.target=null;var i=this.deps.length;while(i--){var dep=this.deps[i];if(!this.newDepIds.has(dep.id)){dep.removeSub(this);}}var tmp=this.depIds;this.depIds=this.newDepIds;this.newDepIds=tmp;this.newDepIds.clear();tmp=this.deps;this.deps=this.newDeps;this.newDeps=tmp;this.newDeps.length=0;};/**\n\t * Subscriber interface.\n\t * Will be called when a dependency changes.\n\t *\n\t * @param {Boolean} shallow\n\t */Watcher.prototype.update=function(shallow){if(this.lazy){this.dirty=true;}else if(this.sync||!config.async){this.run();}else{// if queued, only overwrite shallow with non-shallow,\n\t// but not the other way around.\n\tthis.shallow=this.queued?shallow?this.shallow:false:!!shallow;this.queued=true;// record before-push error stack in debug mode\n\t/* istanbul ignore if */if(false){this.prevError=new Error('[vue] async stack trace');}pushWatcher(this);}};/**\n\t * Batcher job interface.\n\t * Will be called by the batcher.\n\t */Watcher.prototype.run=function(){if(this.active){var value=this.get();if(value!==this.value||// Deep watchers and watchers on Object/Arrays should fire even\n\t// when the value is the same, because the value may\n\t// have mutated; but only do so if this is a\n\t// non-shallow update (caused by a vm digest).\n\t(isObject(value)||this.deep)&&!this.shallow){// set new value\n\tvar oldValue=this.value;this.value=value;// in debug + async mode, when a watcher callbacks\n\t// throws, we also throw the saved before-push error\n\t// so the full cross-tick stack trace is available.\n\tvar prevError=this.prevError;/* istanbul ignore if */if(false){this.prevError=null;try{this.cb.call(this.vm,value,oldValue);}catch(e){nextTick(function(){throw prevError;},0);throw e;}}else{this.cb.call(this.vm,value,oldValue);}}this.queued=this.shallow=false;}};/**\n\t * Evaluate the value of the watcher.\n\t * This only gets called for lazy watchers.\n\t */Watcher.prototype.evaluate=function(){// avoid overwriting another watcher that is being\n\t// collected.\n\tvar current=Dep.target;this.value=this.get();this.dirty=false;Dep.target=current;};/**\n\t * Depend on all deps collected by this watcher.\n\t */Watcher.prototype.depend=function(){var i=this.deps.length;while(i--){this.deps[i].depend();}};/**\n\t * Remove self from all dependencies' subcriber list.\n\t */Watcher.prototype.teardown=function(){if(this.active){// remove self from vm's watcher list\n\t// this is a somewhat expensive operation so we skip it\n\t// if the vm is being destroyed or is performing a v-for\n\t// re-render (the watcher list is then filtered by v-for).\n\tif(!this.vm._isBeingDestroyed&&!this.vm._vForRemoving){this.vm._watchers.$remove(this);}var i=this.deps.length;while(i--){this.deps[i].removeSub(this);}this.active=false;this.vm=this.cb=this.value=null;}};/**\n\t * Recrusively traverse an object to evoke all converted\n\t * getters, so that every nested property inside the object\n\t * is collected as a \"deep\" dependency.\n\t *\n\t * @param {*} val\n\t */var seenObjects=new _Set();function traverse(val,seen){var i=undefined,keys=undefined;if(!seen){seen=seenObjects;seen.clear();}var isA=isArray(val);var isO=isObject(val);if(isA||isO){if(val.__ob__){var depId=val.__ob__.dep.id;if(seen.has(depId)){return;}else{seen.add(depId);}}if(isA){i=val.length;while(i--){traverse(val[i],seen);}}else if(isO){keys=Object.keys(val);i=keys.length;while(i--){traverse(val[keys[i]],seen);}}}}var text$1={bind:function bind(){this.attr=this.el.nodeType===3?'data':'textContent';},update:function update(value){this.el[this.attr]=_toString(value);}};var templateCache=new Cache(1000);var idSelectorCache=new Cache(1000);var map={efault:[0,'',''],legend:[1,'<fieldset>','</fieldset>'],tr:[2,'<table><tbody>','</tbody></table>'],col:[2,'<table><tbody></tbody><colgroup>','</colgroup></table>']};map.td=map.th=[3,'<table><tbody><tr>','</tr></tbody></table>'];map.option=map.optgroup=[1,'<select multiple=\"multiple\">','</select>'];map.thead=map.tbody=map.colgroup=map.caption=map.tfoot=[1,'<table>','</table>'];map.g=map.defs=map.symbol=map.use=map.image=map.text=map.circle=map.ellipse=map.line=map.path=map.polygon=map.polyline=map.rect=[1,'<svg '+'xmlns=\"http://www.w3.org/2000/svg\" '+'xmlns:xlink=\"http://www.w3.org/1999/xlink\" '+'xmlns:ev=\"http://www.w3.org/2001/xml-events\"'+'version=\"1.1\">','</svg>'];/**\n\t * Check if a node is a supported template node with a\n\t * DocumentFragment content.\n\t *\n\t * @param {Node} node\n\t * @return {Boolean}\n\t */function isRealTemplate(node){return isTemplate(node)&&isFragment(node.content);}var tagRE$1=/<([\\w:-]+)/;var entityRE=/&#?\\w+?;/;var commentRE=/<!--/;/**\n\t * Convert a string template to a DocumentFragment.\n\t * Determines correct wrapping by tag types. Wrapping\n\t * strategy found in jQuery & component/domify.\n\t *\n\t * @param {String} templateString\n\t * @param {Boolean} raw\n\t * @return {DocumentFragment}\n\t */function stringToFragment(templateString,raw){// try a cache hit first\n\tvar cacheKey=raw?templateString:templateString.trim();var hit=templateCache.get(cacheKey);if(hit){return hit;}var frag=document.createDocumentFragment();var tagMatch=templateString.match(tagRE$1);var entityMatch=entityRE.test(templateString);var commentMatch=commentRE.test(templateString);if(!tagMatch&&!entityMatch&&!commentMatch){// text only, return a single text node.\n\tfrag.appendChild(document.createTextNode(templateString));}else{var tag=tagMatch&&tagMatch[1];var wrap=map[tag]||map.efault;var depth=wrap[0];var prefix=wrap[1];var suffix=wrap[2];var node=document.createElement('div');node.innerHTML=prefix+templateString+suffix;while(depth--){node=node.lastChild;}var child;/* eslint-disable no-cond-assign */while(child=node.firstChild){/* eslint-enable no-cond-assign */frag.appendChild(child);}}if(!raw){trimNode(frag);}templateCache.put(cacheKey,frag);return frag;}/**\n\t * Convert a template node to a DocumentFragment.\n\t *\n\t * @param {Node} node\n\t * @return {DocumentFragment}\n\t */function nodeToFragment(node){// if its a template tag and the browser supports it,\n\t// its content is already a document fragment. However, iOS Safari has\n\t// bug when using directly cloned template content with touch\n\t// events and can cause crashes when the nodes are removed from DOM, so we\n\t// have to treat template elements as string templates. (#2805)\n\t/* istanbul ignore if */if(isRealTemplate(node)){return stringToFragment(node.innerHTML);}// script template\n\tif(node.tagName==='SCRIPT'){return stringToFragment(node.textContent);}// normal node, clone it to avoid mutating the original\n\tvar clonedNode=cloneNode(node);var frag=document.createDocumentFragment();var child;/* eslint-disable no-cond-assign */while(child=clonedNode.firstChild){/* eslint-enable no-cond-assign */frag.appendChild(child);}trimNode(frag);return frag;}// Test for the presence of the Safari template cloning bug\n\t// https://bugs.webkit.org/showug.cgi?id=137755\n\tvar hasBrokenTemplate=function(){/* istanbul ignore else */if(inBrowser){var a=document.createElement('div');a.innerHTML='<template>1</template>';return!a.cloneNode(true).firstChild.innerHTML;}else{return false;}}();// Test for IE10/11 textarea placeholder clone bug\n\tvar hasTextareaCloneBug=function(){/* istanbul ignore else */if(inBrowser){var t=document.createElement('textarea');t.placeholder='t';return t.cloneNode(true).value==='t';}else{return false;}}();/**\n\t * 1. Deal with Safari cloning nested <template> bug by\n\t * manually cloning all template instances.\n\t * 2. Deal with IE10/11 textarea placeholder bug by setting\n\t * the correct value after cloning.\n\t *\n\t * @param {Element|DocumentFragment} node\n\t * @return {Element|DocumentFragment}\n\t */function cloneNode(node){/* istanbul ignore if */if(!node.querySelectorAll){return node.cloneNode();}var res=node.cloneNode(true);var i,original,cloned;/* istanbul ignore if */if(hasBrokenTemplate){var tempClone=res;if(isRealTemplate(node)){node=node.content;tempClone=res.content;}original=node.querySelectorAll('template');if(original.length){cloned=tempClone.querySelectorAll('template');i=cloned.length;while(i--){cloned[i].parentNode.replaceChild(cloneNode(original[i]),cloned[i]);}}}/* istanbul ignore if */if(hasTextareaCloneBug){if(node.tagName==='TEXTAREA'){res.value=node.value;}else{original=node.querySelectorAll('textarea');if(original.length){cloned=res.querySelectorAll('textarea');i=cloned.length;while(i--){cloned[i].value=original[i].value;}}}}return res;}/**\n\t * Process the template option and normalizes it into a\n\t * a DocumentFragment that can be used as a partial or a\n\t * instance template.\n\t *\n\t * @param {*} template\n\t * Possible values include:\n\t * - DocumentFragment object\n\t * - Node object of type Template\n\t * - id selector: '#some-template-id'\n\t * - template string: '<div><span>{{msg}}</span></div>'\n\t * @param {Boolean} shouldClone\n\t * @param {Boolean} raw\n\t * inline HTML interpolation. Do not check for id\n\t * selector and keep whitespace in the string.\n\t * @return {DocumentFragment|undefined}\n\t */function parseTemplate(template,shouldClone,raw){var node,frag;// if the template is already a document fragment,\n\t// do nothing\n\tif(isFragment(template)){trimNode(template);return shouldClone?cloneNode(template):template;}if(typeof template==='string'){// id selector\n\tif(!raw&&template.charAt(0)==='#'){// id selector can be cached too\n\tfrag=idSelectorCache.get(template);if(!frag){node=document.getElementById(template.slice(1));if(node){frag=nodeToFragment(node);// save selector to cache\n\tidSelectorCache.put(template,frag);}}}else{// normal string template\n\tfrag=stringToFragment(template,raw);}}else if(template.nodeType){// a direct node\n\tfrag=nodeToFragment(template);}return frag&&shouldClone?cloneNode(frag):frag;}var template=Object.freeze({cloneNode:cloneNode,parseTemplate:parseTemplate});var html={bind:function bind(){// a comment node means this is a binding for\n\t// {{{ inline unescaped html }}}\n\tif(this.el.nodeType===8){// hold nodes\n\tthis.nodes=[];// replace the placeholder with proper anchor\n\tthis.anchor=createAnchor('v-html');replace(this.el,this.anchor);}},update:function update(value){value=_toString(value);if(this.nodes){this.swap(value);}else{this.el.innerHTML=value;}},swap:function swap(value){// remove old nodes\n\tvar i=this.nodes.length;while(i--){remove(this.nodes[i]);}// convert new value to a fragment\n\t// do not attempt to retrieve from id selector\n\tvar frag=parseTemplate(value,true,true);// save a reference to these nodes so we can remove later\n\tthis.nodes=toArray(frag.childNodes);before(frag,this.anchor);}};/**\n\t * Abstraction for a partially-compiled fragment.\n\t * Can optionally compile content with a child scope.\n\t *\n\t * @param {Function} linker\n\t * @param {Vue} vm\n\t * @param {DocumentFragment} frag\n\t * @param {Vue} [host]\n\t * @param {Object} [scope]\n\t * @param {Fragment} [parentFrag]\n\t */function Fragment(linker,vm,frag,host,scope,parentFrag){this.children=[];this.childFrags=[];this.vm=vm;this.scope=scope;this.inserted=false;this.parentFrag=parentFrag;if(parentFrag){parentFrag.childFrags.push(this);}this.unlink=linker(vm,frag,host,scope,this);var single=this.single=frag.childNodes.length===1&&// do not go single mode if the only node is an anchor\n\t!frag.childNodes[0].__v_anchor;if(single){this.node=frag.childNodes[0];this.before=singleBefore;this.remove=singleRemove;}else{this.node=createAnchor('fragment-start');this.end=createAnchor('fragment-end');this.frag=frag;prepend(this.node,frag);frag.appendChild(this.end);this.before=multiBefore;this.remove=multiRemove;}this.node.__v_frag=this;}/**\n\t * Call attach/detach for all components contained within\n\t * this fragment. Also do so recursively for all child\n\t * fragments.\n\t *\n\t * @param {Function} hook\n\t */Fragment.prototype.callHook=function(hook){var i,l;for(i=0,l=this.childFrags.length;i<l;i++){this.childFrags[i].callHook(hook);}for(i=0,l=this.children.length;i<l;i++){hook(this.children[i]);}};/**\n\t * Insert fragment before target, single node version\n\t *\n\t * @param {Node} target\n\t * @param {Boolean} withTransition\n\t */function singleBefore(target,withTransition){this.inserted=true;var method=withTransition!==false?beforeWithTransition:before;method(this.node,target,this.vm);if(inDoc(this.node)){this.callHook(attach);}}/**\n\t * Remove fragment, single node version\n\t */function singleRemove(){this.inserted=false;var shouldCallRemove=inDoc(this.node);var self=this;this.beforeRemove();removeWithTransition(this.node,this.vm,function(){if(shouldCallRemove){self.callHook(detach);}self.destroy();});}/**\n\t * Insert fragment before target, multi-nodes version\n\t *\n\t * @param {Node} target\n\t * @param {Boolean} withTransition\n\t */function multiBefore(target,withTransition){this.inserted=true;var vm=this.vm;var method=withTransition!==false?beforeWithTransition:before;mapNodeRange(this.node,this.end,function(node){method(node,target,vm);});if(inDoc(this.node)){this.callHook(attach);}}/**\n\t * Remove fragment, multi-nodes version\n\t */function multiRemove(){this.inserted=false;var self=this;var shouldCallRemove=inDoc(this.node);this.beforeRemove();removeNodeRange(this.node,this.end,this.vm,this.frag,function(){if(shouldCallRemove){self.callHook(detach);}self.destroy();});}/**\n\t * Prepare the fragment for removal.\n\t */Fragment.prototype.beforeRemove=function(){var i,l;for(i=0,l=this.childFrags.length;i<l;i++){// call the same method recursively on child\n\t// fragments, depth-first\n\tthis.childFrags[i].beforeRemove(false);}for(i=0,l=this.children.length;i<l;i++){// Call destroy for all contained instances,\n\t// with remove:false and defer:true.\n\t// Defer is necessary because we need to\n\t// keep the children to call detach hooks\n\t// on them.\n\tthis.children[i].$destroy(false,true);}var dirs=this.unlink.dirs;for(i=0,l=dirs.length;i<l;i++){// disable the watchers on all the directives\n\t// so that the rendered content stays the same\n\t// during removal.\n\tdirs[i]._watcher&&dirs[i]._watcher.teardown();}};/**\n\t * Destroy the fragment.\n\t */Fragment.prototype.destroy=function(){if(this.parentFrag){this.parentFrag.childFrags.$remove(this);}this.node.__v_frag=null;this.unlink();};/**\n\t * Call attach hook for a Vue instance.\n\t *\n\t * @param {Vue} child\n\t */function attach(child){if(!child._isAttached&&inDoc(child.$el)){child._callHook('attached');}}/**\n\t * Call detach hook for a Vue instance.\n\t *\n\t * @param {Vue} child\n\t */function detach(child){if(child._isAttached&&!inDoc(child.$el)){child._callHook('detached');}}var linkerCache=new Cache(5000);/**\n\t * A factory that can be used to create instances of a\n\t * fragment. Caches the compiled linker if possible.\n\t *\n\t * @param {Vue} vm\n\t * @param {Element|String} el\n\t */function FragmentFactory(vm,el){this.vm=vm;var template;var isString=typeof el==='string';if(isString||isTemplate(el)&&!el.hasAttribute('v-if')){template=parseTemplate(el,true);}else{template=document.createDocumentFragment();template.appendChild(el);}this.template=template;// linker can be cached, but only for components\n\tvar linker;var cid=vm.constructor.cid;if(cid>0){var cacheId=cid+(isString?el:getOuterHTML(el));linker=linkerCache.get(cacheId);if(!linker){linker=compile(template,vm.$options,true);linkerCache.put(cacheId,linker);}}else{linker=compile(template,vm.$options,true);}this.linker=linker;}/**\n\t * Create a fragment instance with given host and scope.\n\t *\n\t * @param {Vue} host\n\t * @param {Object} scope\n\t * @param {Fragment} parentFrag\n\t */FragmentFactory.prototype.create=function(host,scope,parentFrag){var frag=cloneNode(this.template);return new Fragment(this.linker,this.vm,frag,host,scope,parentFrag);};var ON=700;var MODEL=800;var BIND=850;var TRANSITION=1100;var EL=1500;var COMPONENT=1500;var PARTIAL=1750;var IF=2100;var FOR=2200;var SLOT=2300;var uid$3=0;var vFor={priority:FOR,terminal:true,params:['track-by','stagger','enter-stagger','leave-stagger'],bind:function bind(){// support \"item in/of items\" syntax\n\tvar inMatch=this.expression.match(/(.*) (?:in|of) (.*)/);if(inMatch){var itMatch=inMatch[1].match(/\\((.*),(.*)\\)/);if(itMatch){this.iterator=itMatch[1].trim();this.alias=itMatch[2].trim();}else{this.alias=inMatch[1].trim();}this.expression=inMatch[2];}if(!this.alias){(\"production\")!=='production'&&warn('Invalid v-for expression \"'+this.descriptor.raw+'\": '+'alias is required.',this.vm);return;}// uid as a cache identifier\n\tthis.id='__v-for__'+ ++uid$3;// check if this is an option list,\n\t// so that we know if we need to update the <select>'s\n\t// v-model when the option list has changed.\n\t// because v-model has a lower priority than v-for,\n\t// the v-model is not bound here yet, so we have to\n\t// retrive it in the actual updateModel() function.\n\tvar tag=this.el.tagName;this.isOption=(tag==='OPTION'||tag==='OPTGROUP')&&this.el.parentNode.tagName==='SELECT';// setup anchor nodes\n\tthis.start=createAnchor('v-for-start');this.end=createAnchor('v-for-end');replace(this.el,this.end);before(this.start,this.end);// cache\n\tthis.cache=Object.create(null);// fragment factory\n\tthis.factory=new FragmentFactory(this.vm,this.el);},update:function update(data){this.diff(data);this.updateRef();this.updateModel();},/**\n\t * Diff, based on new data and old data, determine the\n\t * minimum amount of DOM manipulations needed to make the\n\t * DOM reflect the new data Array.\n\t *\n\t * The algorithm diffs the new data Array by storing a\n\t * hidden reference to an owner vm instance on previously\n\t * seen data. This allows us to achieve O(n) which is\n\t * better than a levenshtein distance based algorithm,\n\t * which is O(m * n).\n\t *\n\t * @param {Array} data\n\t */diff:function diff(data){// check if the Array was converted from an Object\n\tvar item=data[0];var convertedFromObject=this.fromObject=isObject(item)&&hasOwn(item,'$key')&&hasOwn(item,'$value');var trackByKey=this.params.trackBy;var oldFrags=this.frags;var frags=this.frags=new Array(data.length);var alias=this.alias;var iterator=this.iterator;var start=this.start;var end=this.end;var inDocument=inDoc(start);var init=!oldFrags;var i,l,frag,key,value,primitive;// First pass, go through the new Array and fill up\n\t// the new frags array. If a piece of data has a cached\n\t// instance for it, we reuse it. Otherwise build a new\n\t// instance.\n\tfor(i=0,l=data.length;i<l;i++){item=data[i];key=convertedFromObject?item.$key:null;value=convertedFromObject?item.$value:item;primitive=!isObject(value);frag=!init&&this.getCachedFrag(value,i,key);if(frag){// reusable fragment\n\tfrag.reused=true;// update $index\n\tfrag.scope.$index=i;// update $key\n\tif(key){frag.scope.$key=key;}// update iterator\n\tif(iterator){frag.scope[iterator]=key!==null?key:i;}// update data for track-by, object repeat &\n\t// primitive values.\n\tif(trackByKey||convertedFromObject||primitive){withoutConversion(function(){frag.scope[alias]=value;});}}else{// new isntance\n\tfrag=this.create(value,alias,i,key);frag.fresh=!init;}frags[i]=frag;if(init){frag.before(end);}}// we're done for the initial render.\n\tif(init){return;}// Second pass, go through the old fragments and\n\t// destroy those who are not reused (and remove them\n\t// from cache)\n\tvar removalIndex=0;var totalRemoved=oldFrags.length-frags.length;// when removing a large number of fragments, watcher removal\n\t// turns out to be a perf bottleneck, so we batch the watcher\n\t// removals into a single filter call!\n\tthis.vm._vForRemoving=true;for(i=0,l=oldFrags.length;i<l;i++){frag=oldFrags[i];if(!frag.reused){this.deleteCachedFrag(frag);this.remove(frag,removalIndex++,totalRemoved,inDocument);}}this.vm._vForRemoving=false;if(removalIndex){this.vm._watchers=this.vm._watchers.filter(function(w){return w.active;});}// Final pass, move/insert new fragments into the\n\t// right place.\n\tvar targetPrev,prevEl,currentPrev;var insertionIndex=0;for(i=0,l=frags.length;i<l;i++){frag=frags[i];// this is the frag that we should be after\n\ttargetPrev=frags[i-1];prevEl=targetPrev?targetPrev.staggerCb?targetPrev.staggerAnchor:targetPrev.end||targetPrev.node:start;if(frag.reused&&!frag.staggerCb){currentPrev=findPrevFrag(frag,start,this.id);if(currentPrev!==targetPrev&&(!currentPrev||// optimization for moving a single item.\n\t// thanks to suggestions by @livoras in #1807\n\tfindPrevFrag(currentPrev,start,this.id)!==targetPrev)){this.move(frag,prevEl);}}else{// new instance, or still in stagger.\n\t// insert with updated stagger index.\n\tthis.insert(frag,insertionIndex++,prevEl,inDocument);}frag.reused=frag.fresh=false;}},/**\n\t * Create a new fragment instance.\n\t *\n\t * @param {*} value\n\t * @param {String} alias\n\t * @param {Number} index\n\t * @param {String} [key]\n\t * @return {Fragment}\n\t */create:function create(value,alias,index,key){var host=this._host;// create iteration scope\n\tvar parentScope=this._scope||this.vm;var scope=Object.create(parentScope);// ref holder for the scope\n\tscope.$refs=Object.create(parentScope.$refs);scope.$els=Object.create(parentScope.$els);// make sure point $parent to parent scope\n\tscope.$parent=parentScope;// for two-way binding on alias\n\tscope.$forContext=this;// define scope properties\n\t// important: define the scope alias without forced conversion\n\t// so that frozen data structures remain non-reactive.\n\twithoutConversion(function(){defineReactive(scope,alias,value);});defineReactive(scope,'$index',index);if(key){defineReactive(scope,'$key',key);}else if(scope.$key){// avoid accidental fallback\n\tdef(scope,'$key',null);}if(this.iterator){defineReactive(scope,this.iterator,key!==null?key:index);}var frag=this.factory.create(host,scope,this._frag);frag.forId=this.id;this.cacheFrag(value,frag,index,key);return frag;},/**\n\t * Update the v-ref on owner vm.\n\t */updateRef:function updateRef(){var ref=this.descriptor.ref;if(!ref)return;var hash=(this._scope||this.vm).$refs;var refs;if(!this.fromObject){refs=this.frags.map(findVmFromFrag);}else{refs={};this.frags.forEach(function(frag){refs[frag.scope.$key]=findVmFromFrag(frag);});}hash[ref]=refs;},/**\n\t * For option lists, update the containing v-model on\n\t * parent <select>.\n\t */updateModel:function updateModel(){if(this.isOption){var parent=this.start.parentNode;var model=parent&&parent.__v_model;if(model){model.forceUpdate();}}},/**\n\t * Insert a fragment. Handles staggering.\n\t *\n\t * @param {Fragment} frag\n\t * @param {Number} index\n\t * @param {Node} prevEl\n\t * @param {Boolean} inDocument\n\t */insert:function insert(frag,index,prevEl,inDocument){if(frag.staggerCb){frag.staggerCb.cancel();frag.staggerCb=null;}var staggerAmount=this.getStagger(frag,index,null,'enter');if(inDocument&&staggerAmount){// create an anchor and insert it synchronously,\n\t// so that we can resolve the correct order without\n\t// worrying about some elements not inserted yet\n\tvar anchor=frag.staggerAnchor;if(!anchor){anchor=frag.staggerAnchor=createAnchor('stagger-anchor');anchor.__v_frag=frag;}after(anchor,prevEl);var op=frag.staggerCb=cancellable(function(){frag.staggerCb=null;frag.before(anchor);remove(anchor);});setTimeout(op,staggerAmount);}else{var target=prevEl.nextSibling;/* istanbul ignore if */if(!target){// reset end anchor position in case the position was messed up\n\t// by an external drag-n-drop library.\n\tafter(this.end,prevEl);target=this.end;}frag.before(target);}},/**\n\t * Remove a fragment. Handles staggering.\n\t *\n\t * @param {Fragment} frag\n\t * @param {Number} index\n\t * @param {Number} total\n\t * @param {Boolean} inDocument\n\t */remove:function remove(frag,index,total,inDocument){if(frag.staggerCb){frag.staggerCb.cancel();frag.staggerCb=null;// it's not possible for the same frag to be removed\n\t// twice, so if we have a pending stagger callback,\n\t// it means this frag is queued for enter but removed\n\t// before its transition started. Since it is already\n\t// destroyed, we can just leave it in detached state.\n\treturn;}var staggerAmount=this.getStagger(frag,index,total,'leave');if(inDocument&&staggerAmount){var op=frag.staggerCb=cancellable(function(){frag.staggerCb=null;frag.remove();});setTimeout(op,staggerAmount);}else{frag.remove();}},/**\n\t * Move a fragment to a new position.\n\t * Force no transition.\n\t *\n\t * @param {Fragment} frag\n\t * @param {Node} prevEl\n\t */move:function move(frag,prevEl){// fix a common issue with Sortable:\n\t// if prevEl doesn't have nextSibling, this means it's\n\t// been dragged after the end anchor. Just re-position\n\t// the end anchor to the end of the container.\n\t/* istanbul ignore if */if(!prevEl.nextSibling){this.end.parentNode.appendChild(this.end);}frag.before(prevEl.nextSibling,false);},/**\n\t * Cache a fragment using track-by or the object key.\n\t *\n\t * @param {*} value\n\t * @param {Fragment} frag\n\t * @param {Number} index\n\t * @param {String} [key]\n\t */cacheFrag:function cacheFrag(value,frag,index,key){var trackByKey=this.params.trackBy;var cache=this.cache;var primitive=!isObject(value);var id;if(key||trackByKey||primitive){id=getTrackByKey(index,key,value,trackByKey);if(!cache[id]){cache[id]=frag;}else if(trackByKey!=='$index'){(\"production\")!=='production'&&this.warnDuplicate(value);}}else{id=this.id;if(hasOwn(value,id)){if(value[id]===null){value[id]=frag;}else{(\"production\")!=='production'&&this.warnDuplicate(value);}}else if(Object.isExtensible(value)){def(value,id,frag);}else if(false){warn('Frozen v-for objects cannot be automatically tracked, make sure to '+'provide a track-by key.');}}frag.raw=value;},/**\n\t * Get a cached fragment from the value/index/key\n\t *\n\t * @param {*} value\n\t * @param {Number} index\n\t * @param {String} key\n\t * @return {Fragment}\n\t */getCachedFrag:function getCachedFrag(value,index,key){var trackByKey=this.params.trackBy;var primitive=!isObject(value);var frag;if(key||trackByKey||primitive){var id=getTrackByKey(index,key,value,trackByKey);frag=this.cache[id];}else{frag=value[this.id];}if(frag&&(frag.reused||frag.fresh)){(\"production\")!=='production'&&this.warnDuplicate(value);}return frag;},/**\n\t * Delete a fragment from cache.\n\t *\n\t * @param {Fragment} frag\n\t */deleteCachedFrag:function deleteCachedFrag(frag){var value=frag.raw;var trackByKey=this.params.trackBy;var scope=frag.scope;var index=scope.$index;// fix #948: avoid accidentally fall through to\n\t// a parent repeater which happens to have $key.\n\tvar key=hasOwn(scope,'$key')&&scope.$key;var primitive=!isObject(value);if(trackByKey||key||primitive){var id=getTrackByKey(index,key,value,trackByKey);this.cache[id]=null;}else{value[this.id]=null;frag.raw=null;}},/**\n\t * Get the stagger amount for an insertion/removal.\n\t *\n\t * @param {Fragment} frag\n\t * @param {Number} index\n\t * @param {Number} total\n\t * @param {String} type\n\t */getStagger:function getStagger(frag,index,total,type){type=type+'Stagger';var trans=frag.node.__v_trans;var hooks=trans&&trans.hooks;var hook=hooks&&(hooks[type]||hooks.stagger);return hook?hook.call(frag,index,total):index*parseInt(this.params[type]||this.params.stagger,10);},/**\n\t * Pre-process the value before piping it through the\n\t * filters. This is passed to and called by the watcher.\n\t */_preProcess:function _preProcess(value){// regardless of type, store the un-filtered raw value.\n\tthis.rawValue=value;return value;},/**\n\t * Post-process the value after it has been piped through\n\t * the filters. This is passed to and called by the watcher.\n\t *\n\t * It is necessary for this to be called during the\n\t * watcher's dependency collection phase because we want\n\t * the v-for to update when the source Object is mutated.\n\t */_postProcess:function _postProcess(value){if(isArray(value)){return value;}else if(isPlainObject(value)){// convert plain object to array.\n\tvar keys=Object.keys(value);var i=keys.length;var res=new Array(i);var key;while(i--){key=keys[i];res[i]={$key:key,$value:value[key]};}return res;}else{if(typeof value==='number'&&!isNaN(value)){value=range(value);}return value||[];}},unbind:function unbind(){if(this.descriptor.ref){(this._scope||this.vm).$refs[this.descriptor.ref]=null;}if(this.frags){var i=this.frags.length;var frag;while(i--){frag=this.frags[i];this.deleteCachedFrag(frag);frag.destroy();}}}};/**\n\t * Helper to find the previous element that is a fragment\n\t * anchor. This is necessary because a destroyed frag's\n\t * element could still be lingering in the DOM before its\n\t * leaving transition finishes, but its inserted flag\n\t * should have been set to false so we can skip them.\n\t *\n\t * If this is a block repeat, we want to make sure we only\n\t * return frag that is bound to this v-for. (see #929)\n\t *\n\t * @param {Fragment} frag\n\t * @param {Comment|Text} anchor\n\t * @param {String} id\n\t * @return {Fragment}\n\t */function findPrevFrag(frag,anchor,id){var el=frag.node.previousSibling;/* istanbul ignore if */if(!el)return;frag=el.__v_frag;while((!frag||frag.forId!==id||!frag.inserted)&&el!==anchor){el=el.previousSibling;/* istanbul ignore if */if(!el)return;frag=el.__v_frag;}return frag;}/**\n\t * Find a vm from a fragment.\n\t *\n\t * @param {Fragment} frag\n\t * @return {Vue|undefined}\n\t */function findVmFromFrag(frag){var node=frag.node;// handle multi-node frag\n\tif(frag.end){while(!node.__vue__&&node!==frag.end&&node.nextSibling){node=node.nextSibling;}}return node.__vue__;}/**\n\t * Create a range array from given number.\n\t *\n\t * @param {Number} n\n\t * @return {Array}\n\t */function range(n){var i=-1;var ret=new Array(Math.floor(n));while(++i<n){ret[i]=i;}return ret;}/**\n\t * Get the track by key for an item.\n\t *\n\t * @param {Number} index\n\t * @param {String} key\n\t * @param {*} value\n\t * @param {String} [trackByKey]\n\t */function getTrackByKey(index,key,value,trackByKey){return trackByKey?trackByKey==='$index'?index:trackByKey.charAt(0).match(/\\w/)?getPath(value,trackByKey):value[trackByKey]:key||value;}if(false){vFor.warnDuplicate=function(value){warn('Duplicate value found in v-for=\"'+this.descriptor.raw+'\": '+JSON.stringify(value)+'. Use track-by=\"$index\" if '+'you are expecting duplicate values.',this.vm);};}var vIf={priority:IF,terminal:true,bind:function bind(){var el=this.el;if(!el.__vue__){// check else block\n\tvar next=el.nextElementSibling;if(next&&getAttr(next,'v-else')!==null){remove(next);this.elseEl=next;}// check main block\n\tthis.anchor=createAnchor('v-if');replace(el,this.anchor);}else{(\"production\")!=='production'&&warn('v-if=\"'+this.expression+'\" cannot be '+'used on an instance root element.',this.vm);this.invalid=true;}},update:function update(value){if(this.invalid)return;if(value){if(!this.frag){this.insert();}}else{this.remove();}},insert:function insert(){if(this.elseFrag){this.elseFrag.remove();this.elseFrag=null;}// lazy init factory\n\tif(!this.factory){this.factory=new FragmentFactory(this.vm,this.el);}this.frag=this.factory.create(this._host,this._scope,this._frag);this.frag.before(this.anchor);},remove:function remove(){if(this.frag){this.frag.remove();this.frag=null;}if(this.elseEl&&!this.elseFrag){if(!this.elseFactory){this.elseFactory=new FragmentFactory(this.elseEl._context||this.vm,this.elseEl);}this.elseFrag=this.elseFactory.create(this._host,this._scope,this._frag);this.elseFrag.before(this.anchor);}},unbind:function unbind(){if(this.frag){this.frag.destroy();}if(this.elseFrag){this.elseFrag.destroy();}}};var show={bind:function bind(){// check else block\n\tvar next=this.el.nextElementSibling;if(next&&getAttr(next,'v-else')!==null){this.elseEl=next;}},update:function update(value){this.apply(this.el,value);if(this.elseEl){this.apply(this.elseEl,!value);}},apply:function apply(el,value){if(inDoc(el)){applyTransition(el,value?1:-1,toggle,this.vm);}else{toggle();}function toggle(){el.style.display=value?'':'none';}}};var text$2={bind:function bind(){var self=this;var el=this.el;var isRange=el.type==='range';var lazy=this.params.lazy;var number=this.params.number;var debounce=this.params.debounce;// handle composition events.\n\t// http://blog.evanyou.me/2014/01/03/composition-event/\n\t// skip this for Android because it handles composition\n\t// events quite differently. Android doesn't trigger\n\t// composition events for language input methods e.g.\n\t// Chinese, but instead triggers them for spelling\n\t// suggestions... (see Discussion/#162)\n\tvar composing=false;if(!isAndroid&&!isRange){this.on('compositionstart',function(){composing=true;});this.on('compositionend',function(){composing=false;// in IE11 the \"compositionend\" event fires AFTER\n\t// the \"input\" event, so the input handler is blocked\n\t// at the end... have to call it here.\n\t//\n\t// #1327: in lazy mode this is unecessary.\n\tif(!lazy){self.listener();}});}// prevent messing with the input when user is typing,\n\t// and force update on blur.\n\tthis.focused=false;if(!isRange&&!lazy){this.on('focus',function(){self.focused=true;});this.on('blur',function(){self.focused=false;// do not sync value after fragment removal (#2017)\n\tif(!self._frag||self._frag.inserted){self.rawListener();}});}// Now attach the main listener\n\tthis.listener=this.rawListener=function(){if(composing||!self._bound){return;}var val=number||isRange?toNumber(el.value):el.value;self.set(val);// force update on next tick to avoid lock & same value\n\t// also only update when user is not typing\n\tnextTick(function(){if(self._bound&&!self.focused){self.update(self._watcher.value);}});};// apply debounce\n\tif(debounce){this.listener=_debounce(this.listener,debounce);}// Support jQuery events, since jQuery.trigger() doesn't\n\t// trigger native events in some cases and some plugins\n\t// rely on $.trigger()\n\t//\n\t// We want to make sure if a listener is attached using\n\t// jQuery, it is also removed with jQuery, that's why\n\t// we do the check for each directive instance and\n\t// store that check result on itself. This also allows\n\t// easier test coverage control by unsetting the global\n\t// jQuery variable in tests.\n\tthis.hasjQuery=typeof jQuery==='function';if(this.hasjQuery){var method=jQuery.fn.on?'on':'bind';jQuery(el)[method]('change',this.rawListener);if(!lazy){jQuery(el)[method]('input',this.listener);}}else{this.on('change',this.rawListener);if(!lazy){this.on('input',this.listener);}}// IE9 doesn't fire input event on backspace/del/cut\n\tif(!lazy&&isIE9){this.on('cut',function(){nextTick(self.listener);});this.on('keyup',function(e){if(e.keyCode===46||e.keyCode===8){self.listener();}});}// set initial value if present\n\tif(el.hasAttribute('value')||el.tagName==='TEXTAREA'&&el.value.trim()){this.afterBind=this.listener;}},update:function update(value){// #3029 only update when the value changes. This prevent\n\t// browsers from overwriting values like selectionStart\n\tvalue=_toString(value);if(value!==this.el.value)this.el.value=value;},unbind:function unbind(){var el=this.el;if(this.hasjQuery){var method=jQuery.fn.off?'off':'unbind';jQuery(el)[method]('change',this.listener);jQuery(el)[method]('input',this.listener);}}};var radio={bind:function bind(){var self=this;var el=this.el;this.getValue=function(){// value overwrite via v-bind:value\n\tif(el.hasOwnProperty('_value')){return el._value;}var val=el.value;if(self.params.number){val=toNumber(val);}return val;};this.listener=function(){self.set(self.getValue());};this.on('change',this.listener);if(el.hasAttribute('checked')){this.afterBind=this.listener;}},update:function update(value){this.el.checked=looseEqual(value,this.getValue());}};var select={bind:function bind(){var _this=this;var self=this;var el=this.el;// method to force update DOM using latest value.\n\tthis.forceUpdate=function(){if(self._watcher){self.update(self._watcher.get());}};// check if this is a multiple select\n\tvar multiple=this.multiple=el.hasAttribute('multiple');// attach listener\n\tthis.listener=function(){var value=getValue(el,multiple);value=self.params.number?isArray(value)?value.map(toNumber):toNumber(value):value;self.set(value);};this.on('change',this.listener);// if has initial value, set afterBind\n\tvar initValue=getValue(el,multiple,true);if(multiple&&initValue.length||!multiple&&initValue!==null){this.afterBind=this.listener;}// All major browsers except Firefox resets\n\t// selectedIndex with value -1 to 0 when the element\n\t// is appended to a new parent, therefore we have to\n\t// force a DOM update whenever that happens...\n\tthis.vm.$on('hook:attached',function(){nextTick(_this.forceUpdate);});},update:function update(value){var el=this.el;if(!inDoc(el)){return nextTick(this.forceUpdate);}el.selectedIndex=-1;var multi=this.multiple&&isArray(value);var options=el.options;var i=options.length;var op,val;while(i--){op=options[i];val=op.hasOwnProperty('_value')?op._value:op.value;/* eslint-disable eqeqeq */op.selected=multi?indexOf$1(value,val)>-1:looseEqual(value,val);/* eslint-enable eqeqeq */}},unbind:function unbind(){/* istanbul ignore next */this.vm.$off('hook:attached',this.forceUpdate);}};/**\n\t * Get select value\n\t *\n\t * @param {SelectElement} el\n\t * @param {Boolean} multi\n\t * @param {Boolean} init\n\t * @return {Array|*}\n\t */function getValue(el,multi,init){var res=multi?[]:null;var op,val,selected;for(var i=0,l=el.options.length;i<l;i++){op=el.options[i];selected=init?op.hasAttribute('selected'):op.selected;if(selected){val=op.hasOwnProperty('_value')?op._value:op.value;if(multi){res.push(val);}else{return val;}}}return res;}/**\n\t * Native Array.indexOf uses strict equal, but in this\n\t * case we need to match string/numbers with custom equal.\n\t *\n\t * @param {Array} arr\n\t * @param {*} val\n\t */function indexOf$1(arr,val){var i=arr.length;while(i--){if(looseEqual(arr[i],val)){return i;}}return-1;}var checkbox={bind:function bind(){var self=this;var el=this.el;this.getValue=function(){return el.hasOwnProperty('_value')?el._value:self.params.number?toNumber(el.value):el.value;};function getBooleanValue(){var val=el.checked;if(val&&el.hasOwnProperty('_trueValue')){return el._trueValue;}if(!val&&el.hasOwnProperty('_falseValue')){return el._falseValue;}return val;}this.listener=function(){var model=self._watcher.value;if(isArray(model)){var val=self.getValue();if(el.checked){if(indexOf(model,val)<0){model.push(val);}}else{model.$remove(val);}}else{self.set(getBooleanValue());}};this.on('change',this.listener);if(el.hasAttribute('checked')){this.afterBind=this.listener;}},update:function update(value){var el=this.el;if(isArray(value)){el.checked=indexOf(value,this.getValue())>-1;}else{if(el.hasOwnProperty('_trueValue')){el.checked=looseEqual(value,el._trueValue);}else{el.checked=!!value;}}}};var handlers={text:text$2,radio:radio,select:select,checkbox:checkbox};var model={priority:MODEL,twoWay:true,handlers:handlers,params:['lazy','number','debounce'],/**\n\t * Possible elements:\n\t * <select>\n\t * <textarea>\n\t * <input type=\"*\">\n\t * - text\n\t * - checkbox\n\t * - radio\n\t * - number\n\t */bind:function bind(){// friendly warning...\n\tthis.checkFilters();if(this.hasRead&&!this.hasWrite){(\"production\")!=='production'&&warn('It seems you are using a read-only filter with '+'v-model=\"'+this.descriptor.raw+'\". '+'You might want to use a two-way filter to ensure correct behavior.',this.vm);}var el=this.el;var tag=el.tagName;var handler;if(tag==='INPUT'){handler=handlers[el.type]||handlers.text;}else if(tag==='SELECT'){handler=handlers.select;}else if(tag==='TEXTAREA'){handler=handlers.text;}else{(\"production\")!=='production'&&warn('v-model does not support element type: '+tag,this.vm);return;}el.__v_model=this;handler.bind.call(this);this.update=handler.update;this._unbind=handler.unbind;},/**\n\t * Check read/write filter stats.\n\t */checkFilters:function checkFilters(){var filters=this.filters;if(!filters)return;var i=filters.length;while(i--){var filter=resolveAsset(this.vm.$options,'filters',filters[i].name);if(typeof filter==='function'||filter.read){this.hasRead=true;}if(filter.write){this.hasWrite=true;}}},unbind:function unbind(){this.el.__v_model=null;this._unbind&&this._unbind();}};// keyCode aliases\n\tvar keyCodes={esc:27,tab:9,enter:13,space:32,'delete':[8,46],up:38,left:37,right:39,down:40};function keyFilter(handler,keys){var codes=keys.map(function(key){var charCode=key.charCodeAt(0);if(charCode>47&&charCode<58){return parseInt(key,10);}if(key.length===1){charCode=key.toUpperCase().charCodeAt(0);if(charCode>64&&charCode<91){return charCode;}}return keyCodes[key];});codes=[].concat.apply([],codes);return function keyHandler(e){if(codes.indexOf(e.keyCode)>-1){return handler.call(this,e);}};}function stopFilter(handler){return function stopHandler(e){e.stopPropagation();return handler.call(this,e);};}function preventFilter(handler){return function preventHandler(e){e.preventDefault();return handler.call(this,e);};}function selfFilter(handler){return function selfHandler(e){if(e.target===e.currentTarget){return handler.call(this,e);}};}var on$1={priority:ON,acceptStatement:true,keyCodes:keyCodes,bind:function bind(){// deal with iframes\n\tif(this.el.tagName==='IFRAME'&&this.arg!=='load'){var self=this;this.iframeBind=function(){on(self.el.contentWindow,self.arg,self.handler,self.modifiers.capture);};this.on('load',this.iframeBind);}},update:function update(handler){// stub a noop for v-on with no value,\n\t// e.g. @mousedown.prevent\n\tif(!this.descriptor.raw){handler=function handler(){};}if(typeof handler!=='function'){(\"production\")!=='production'&&warn('v-on:'+this.arg+'=\"'+this.expression+'\" expects a function value, '+'got '+handler,this.vm);return;}// apply modifiers\n\tif(this.modifiers.stop){handler=stopFilter(handler);}if(this.modifiers.prevent){handler=preventFilter(handler);}if(this.modifiers.self){handler=selfFilter(handler);}// key filter\n\tvar keys=Object.keys(this.modifiers).filter(function(key){return key!=='stop'&&key!=='prevent'&&key!=='self'&&key!=='capture';});if(keys.length){handler=keyFilter(handler,keys);}this.reset();this.handler=handler;if(this.iframeBind){this.iframeBind();}else{on(this.el,this.arg,this.handler,this.modifiers.capture);}},reset:function reset(){var el=this.iframeBind?this.el.contentWindow:this.el;if(this.handler){off(el,this.arg,this.handler);}},unbind:function unbind(){this.reset();}};var prefixes=['-webkit-','-moz-','-ms-'];var camelPrefixes=['Webkit','Moz','ms'];var importantRE=/!important;?$/;var propCache=Object.create(null);var testEl=null;var style={deep:true,update:function update(value){if(typeof value==='string'){this.el.style.cssText=value;}else if(isArray(value)){this.handleObject(value.reduce(extend,{}));}else{this.handleObject(value||{});}},handleObject:function handleObject(value){// cache object styles so that only changed props\n\t// are actually updated.\n\tvar cache=this.cache||(this.cache={});var name,val;for(name in cache){if(!(name in value)){this.handleSingle(name,null);delete cache[name];}}for(name in value){val=value[name];if(val!==cache[name]){cache[name]=val;this.handleSingle(name,val);}}},handleSingle:function handleSingle(prop,value){prop=normalize(prop);if(!prop)return;// unsupported prop\n\t// cast possible numbers/booleans into strings\n\tif(value!=null)value+='';if(value){var isImportant=importantRE.test(value)?'important':'';if(isImportant){/* istanbul ignore if */if(false){warn('It\\'s probably a bad idea to use !important with inline rules. '+'This feature will be deprecated in a future version of Vue.');}value=value.replace(importantRE,'').trim();this.el.style.setProperty(prop.kebab,value,isImportant);}else{this.el.style[prop.camel]=value;}}else{this.el.style[prop.camel]='';}}};/**\n\t * Normalize a CSS property name.\n\t * - cache result\n\t * - auto prefix\n\t * - camelCase -> dash-case\n\t *\n\t * @param {String} prop\n\t * @return {String}\n\t */function normalize(prop){if(propCache[prop]){return propCache[prop];}var res=prefix(prop);propCache[prop]=propCache[res]=res;return res;}/**\n\t * Auto detect the appropriate prefix for a CSS property.\n\t * https://gist.github.com/paulirish/523692\n\t *\n\t * @param {String} prop\n\t * @return {String}\n\t */function prefix(prop){prop=hyphenate(prop);var camel=camelize(prop);var upper=camel.charAt(0).toUpperCase()+camel.slice(1);if(!testEl){testEl=document.createElement('div');}var i=prefixes.length;var prefixed;if(camel!=='filter'&&camel in testEl.style){return{kebab:prop,camel:camel};}while(i--){prefixed=camelPrefixes[i]+upper;if(prefixed in testEl.style){return{kebab:prefixes[i]+prop,camel:prefixed};}}}// xlink\n\tvar xlinkNS='http://www.w3.org/1999/xlink';var xlinkRE=/^xlink:/;// check for attributes that prohibit interpolations\n\tvar disallowedInterpAttrRE=/^v-|^:|^@|^(?:is|transition|transition-mode|debounce|track-by|stagger|enter-stagger|leave-stagger)$/;// these attributes should also set their corresponding properties\n\t// because they only affect the initial state of the element\n\tvar attrWithPropsRE=/^(?:value|checked|selected|muted)$/;// these attributes expect enumrated values of \"true\" or \"false\"\n\t// but are not boolean attributes\n\tvar enumeratedAttrRE=/^(?:draggable|contenteditable|spellcheck)$/;// these attributes should set a hidden property for\n\t// binding v-model to object values\n\tvar modelProps={value:'_value','true-value':'_trueValue','false-value':'_falseValue'};var bind$1={priority:BIND,bind:function bind(){var attr=this.arg;var tag=this.el.tagName;// should be deep watch on object mode\n\tif(!attr){this.deep=true;}// handle interpolation bindings\n\tvar descriptor=this.descriptor;var tokens=descriptor.interp;if(tokens){// handle interpolations with one-time tokens\n\tif(descriptor.hasOneTime){this.expression=tokensToExp(tokens,this._scope||this.vm);}// only allow binding on native attributes\n\tif(disallowedInterpAttrRE.test(attr)||attr==='name'&&(tag==='PARTIAL'||tag==='SLOT')){(\"production\")!=='production'&&warn(attr+'=\"'+descriptor.raw+'\": '+'attribute interpolation is not allowed in Vue.js '+'directives and special attributes.',this.vm);this.el.removeAttribute(attr);this.invalid=true;}/* istanbul ignore if */if(false){var raw=attr+'=\"'+descriptor.raw+'\": ';// warn src\n\tif(attr==='src'){warn(raw+'interpolation in \"src\" attribute will cause '+'a 404 request. Use v-bind:src instead.',this.vm);}// warn style\n\tif(attr==='style'){warn(raw+'interpolation in \"style\" attribute will cause '+'the attribute to be discarded in Internet Explorer. '+'Use v-bind:style instead.',this.vm);}}}},update:function update(value){if(this.invalid){return;}var attr=this.arg;if(this.arg){this.handleSingle(attr,value);}else{this.handleObject(value||{});}},// share object handler with v-bind:class\n\thandleObject:style.handleObject,handleSingle:function handleSingle(attr,value){var el=this.el;var interp=this.descriptor.interp;if(this.modifiers.camel){attr=camelize(attr);}if(!interp&&attrWithPropsRE.test(attr)&&attr in el){var attrValue=attr==='value'?value==null// IE9 will set input.value to \"null\" for null...\n\t?'':value:value;if(el[attr]!==attrValue){el[attr]=attrValue;}}// set model props\n\tvar modelProp=modelProps[attr];if(!interp&&modelProp){el[modelProp]=value;// update v-model if present\n\tvar model=el.__v_model;if(model){model.listener();}}// do not set value attribute for textarea\n\tif(attr==='value'&&el.tagName==='TEXTAREA'){el.removeAttribute(attr);return;}// update attribute\n\tif(enumeratedAttrRE.test(attr)){el.setAttribute(attr,value?'true':'false');}else if(value!=null&&value!==false){if(attr==='class'){// handle edge case #1960:\n\t// class interpolation should not overwrite Vue transition class\n\tif(el.__v_trans){value+=' '+el.__v_trans.id+'-transition';}setClass(el,value);}else if(xlinkRE.test(attr)){el.setAttributeNS(xlinkNS,attr,value===true?'':value);}else{el.setAttribute(attr,value===true?'':value);}}else{el.removeAttribute(attr);}}};var el={priority:EL,bind:function bind(){/* istanbul ignore if */if(!this.arg){return;}var id=this.id=camelize(this.arg);var refs=(this._scope||this.vm).$els;if(hasOwn(refs,id)){refs[id]=this.el;}else{defineReactive(refs,id,this.el);}},unbind:function unbind(){var refs=(this._scope||this.vm).$els;if(refs[this.id]===this.el){refs[this.id]=null;}}};var ref={bind:function bind(){(\"production\")!=='production'&&warn('v-ref:'+this.arg+' must be used on a child '+'component. Found on <'+this.el.tagName.toLowerCase()+'>.',this.vm);}};var cloak={bind:function bind(){var el=this.el;this.vm.$once('pre-hook:compiled',function(){el.removeAttribute('v-cloak');});}};// must export plain object\n\tvar directives={text:text$1,html:html,'for':vFor,'if':vIf,show:show,model:model,on:on$1,bind:bind$1,el:el,ref:ref,cloak:cloak};var vClass={deep:true,update:function update(value){if(!value){this.cleanup();}else if(typeof value==='string'){this.setClass(value.trim().split(/\\s+/));}else{this.setClass(normalize$1(value));}},setClass:function setClass(value){this.cleanup(value);for(var i=0,l=value.length;i<l;i++){var val=value[i];if(val){apply(this.el,val,addClass);}}this.prevKeys=value;},cleanup:function cleanup(value){var prevKeys=this.prevKeys;if(!prevKeys)return;var i=prevKeys.length;while(i--){var key=prevKeys[i];if(!value||value.indexOf(key)<0){apply(this.el,key,removeClass);}}}};/**\n\t * Normalize objects and arrays (potentially containing objects)\n\t * into array of strings.\n\t *\n\t * @param {Object|Array<String|Object>} value\n\t * @return {Array<String>}\n\t */function normalize$1(value){var res=[];if(isArray(value)){for(var i=0,l=value.length;i<l;i++){var _key=value[i];if(_key){if(typeof _key==='string'){res.push(_key);}else{for(var k in _key){if(_key[k])res.push(k);}}}}}else if(isObject(value)){for(var key in value){if(value[key])res.push(key);}}return res;}/**\n\t * Add or remove a class/classes on an element\n\t *\n\t * @param {Element} el\n\t * @param {String} key The class name. This may or may not\n\t * contain a space character, in such a\n\t * case we'll deal with multiple class\n\t * names at once.\n\t * @param {Function} fn\n\t */function apply(el,key,fn){key=key.trim();if(key.indexOf(' ')===-1){fn(el,key);return;}// The key contains one or more space characters.\n\t// Since a class name doesn't accept such characters, we\n\t// treat it as multiple classes.\n\tvar keys=key.split(/\\s+/);for(var i=0,l=keys.length;i<l;i++){fn(el,keys[i]);}}var component={priority:COMPONENT,params:['keep-alive','transition-mode','inline-template'],/**\n\t * Setup. Two possible usages:\n\t *\n\t * - static:\n\t * <comp> or <div v-component=\"comp\">\n\t *\n\t * - dynamic:\n\t * <component :is=\"view\">\n\t */bind:function bind(){if(!this.el.__vue__){// keep-alive cache\n\tthis.keepAlive=this.params.keepAlive;if(this.keepAlive){this.cache={};}// check inline-template\n\tif(this.params.inlineTemplate){// extract inline template as a DocumentFragment\n\tthis.inlineTemplate=extractContent(this.el,true);}// component resolution related state\n\tthis.pendingComponentCb=this.Component=null;// transition related state\n\tthis.pendingRemovals=0;this.pendingRemovalCb=null;// create a ref anchor\n\tthis.anchor=createAnchor('v-component');replace(this.el,this.anchor);// remove is attribute.\n\t// this is removed during compilation, but because compilation is\n\t// cached, when the component is used elsewhere this attribute\n\t// will remain at link time.\n\tthis.el.removeAttribute('is');this.el.removeAttribute(':is');// remove ref, same as above\n\tif(this.descriptor.ref){this.el.removeAttribute('v-ref:'+hyphenate(this.descriptor.ref));}// if static, build right now.\n\tif(this.literal){this.setComponent(this.expression);}}else{(\"production\")!=='production'&&warn('cannot mount component \"'+this.expression+'\" '+'on already mounted element: '+this.el);}},/**\n\t * Public update, called by the watcher in the dynamic\n\t * literal scenario, e.g. <component :is=\"view\">\n\t */update:function update(value){if(!this.literal){this.setComponent(value);}},/**\n\t * Switch dynamic components. May resolve the component\n\t * asynchronously, and perform transition based on\n\t * specified transition mode. Accepts a few additional\n\t * arguments specifically for vue-router.\n\t *\n\t * The callback is called when the full transition is\n\t * finished.\n\t *\n\t * @param {String} value\n\t * @param {Function} [cb]\n\t */setComponent:function setComponent(value,cb){this.invalidatePending();if(!value){// just remove current\n\tthis.unbuild(true);this.remove(this.childVM,cb);this.childVM=null;}else{var self=this;this.resolveComponent(value,function(){self.mountComponent(cb);});}},/**\n\t * Resolve the component constructor to use when creating\n\t * the child vm.\n\t *\n\t * @param {String|Function} value\n\t * @param {Function} cb\n\t */resolveComponent:function resolveComponent(value,cb){var self=this;this.pendingComponentCb=cancellable(function(Component){self.ComponentName=Component.options.name||(typeof value==='string'?value:null);self.Component=Component;cb();});this.vm._resolveComponent(value,this.pendingComponentCb);},/**\n\t * Create a new instance using the current constructor and\n\t * replace the existing instance. This method doesn't care\n\t * whether the new component and the old one are actually\n\t * the same.\n\t *\n\t * @param {Function} [cb]\n\t */mountComponent:function mountComponent(cb){// actual mount\n\tthis.unbuild(true);var self=this;var activateHooks=this.Component.options.activate;var cached=this.getCached();var newComponent=this.build();if(activateHooks&&!cached){this.waitingFor=newComponent;callActivateHooks(activateHooks,newComponent,function(){if(self.waitingFor!==newComponent){return;}self.waitingFor=null;self.transition(newComponent,cb);});}else{// update ref for kept-alive component\n\tif(cached){newComponent._updateRef();}this.transition(newComponent,cb);}},/**\n\t * When the component changes or unbinds before an async\n\t * constructor is resolved, we need to invalidate its\n\t * pending callback.\n\t */invalidatePending:function invalidatePending(){if(this.pendingComponentCb){this.pendingComponentCb.cancel();this.pendingComponentCb=null;}},/**\n\t * Instantiate/insert a new child vm.\n\t * If keep alive and has cached instance, insert that\n\t * instance; otherwise build a new one and cache it.\n\t *\n\t * @param {Object} [extraOptions]\n\t * @return {Vue} - the created instance\n\t */build:function build(extraOptions){var cached=this.getCached();if(cached){return cached;}if(this.Component){// default options\n\tvar options={name:this.ComponentName,el:cloneNode(this.el),template:this.inlineTemplate,// make sure to add the child with correct parent\n\t// if this is a transcluded component, its parent\n\t// should be the transclusion host.\n\tparent:this._host||this.vm,// if no inline-template, then the compiled\n\t// linker can be cached for better performance.\n\t_linkerCachable:!this.inlineTemplate,_ref:this.descriptor.ref,_asComponent:true,_isRouterView:this._isRouterView,// if this is a transcluded component, context\n\t// will be the common parent vm of this instance\n\t// and its host.\n\t_context:this.vm,// if this is inside an inline v-for, the scope\n\t// will be the intermediate scope created for this\n\t// repeat fragment. this is used for linking props\n\t// and container directives.\n\t_scope:this._scope,// pass in the owner fragment of this component.\n\t// this is necessary so that the fragment can keep\n\t// track of its contained components in order to\n\t// call attach/detach hooks for them.\n\t_frag:this._frag};// extra options\n\t// in 1.0.0 this is used by vue-router only\n\t/* istanbul ignore if */if(extraOptions){extend(options,extraOptions);}var child=new this.Component(options);if(this.keepAlive){this.cache[this.Component.cid]=child;}/* istanbul ignore if */if(false){warn('Transitions will not work on a fragment instance. '+'Template: '+child.$options.template,child);}return child;}},/**\n\t * Try to get a cached instance of the current component.\n\t *\n\t * @return {Vue|undefined}\n\t */getCached:function getCached(){return this.keepAlive&&this.cache[this.Component.cid];},/**\n\t * Teardown the current child, but defers cleanup so\n\t * that we can separate the destroy and removal steps.\n\t *\n\t * @param {Boolean} defer\n\t */unbuild:function unbuild(defer){if(this.waitingFor){if(!this.keepAlive){this.waitingFor.$destroy();}this.waitingFor=null;}var child=this.childVM;if(!child||this.keepAlive){if(child){// remove ref\n\tchild._inactive=true;child._updateRef(true);}return;}// the sole purpose of `deferCleanup` is so that we can\n\t// \"deactivate\" the vm right now and perform DOM removal\n\t// later.\n\tchild.$destroy(false,defer);},/**\n\t * Remove current destroyed child and manually do\n\t * the cleanup after removal.\n\t *\n\t * @param {Function} cb\n\t */remove:function remove(child,cb){var keepAlive=this.keepAlive;if(child){// we may have a component switch when a previous\n\t// component is still being transitioned out.\n\t// we want to trigger only one lastest insertion cb\n\t// when the existing transition finishes. (#1119)\n\tthis.pendingRemovals++;this.pendingRemovalCb=cb;var self=this;child.$remove(function(){self.pendingRemovals--;if(!keepAlive)child._cleanup();if(!self.pendingRemovals&&self.pendingRemovalCb){self.pendingRemovalCb();self.pendingRemovalCb=null;}});}else if(cb){cb();}},/**\n\t * Actually swap the components, depending on the\n\t * transition mode. Defaults to simultaneous.\n\t *\n\t * @param {Vue} target\n\t * @param {Function} [cb]\n\t */transition:function transition(target,cb){var self=this;var current=this.childVM;// for devtool inspection\n\tif(current)current._inactive=true;target._inactive=false;this.childVM=target;switch(self.params.transitionMode){case'in-out':target.$before(self.anchor,function(){self.remove(current,cb);});break;case'out-in':self.remove(current,function(){target.$before(self.anchor,cb);});break;default:self.remove(current);target.$before(self.anchor,cb);}},/**\n\t * Unbind.\n\t */unbind:function unbind(){this.invalidatePending();// Do not defer cleanup when unbinding\n\tthis.unbuild();// destroy all keep-alive cached instances\n\tif(this.cache){for(var key in this.cache){this.cache[key].$destroy();}this.cache=null;}}};/**\n\t * Call activate hooks in order (asynchronous)\n\t *\n\t * @param {Array} hooks\n\t * @param {Vue} vm\n\t * @param {Function} cb\n\t */function callActivateHooks(hooks,vm,cb){var total=hooks.length;var called=0;hooks[0].call(vm,next);function next(){if(++called>=total){cb();}else{hooks[called].call(vm,next);}}}var propBindingModes=config._propBindingModes;var empty={};// regexes\n\tvar identRE$1=/^[$_a-zA-Z]+[\\w$]*$/;var settablePathRE=/^[A-Za-z_$][\\w$]*(\\.[A-Za-z_$][\\w$]*|\\[[^\\[\\]]+\\])*$/;/**\n\t * Compile props on a root element and return\n\t * a props link function.\n\t *\n\t * @param {Element|DocumentFragment} el\n\t * @param {Array} propOptions\n\t * @param {Vue} vm\n\t * @return {Function} propsLinkFn\n\t */function compileProps(el,propOptions,vm){var props=[];var names=Object.keys(propOptions);var i=names.length;var options,name,attr,value,path,parsed,prop;while(i--){name=names[i];options=propOptions[name]||empty;if(false){warn('Do not use $data as prop.',vm);continue;}// props could contain dashes, which will be\n\t// interpreted as minus calculations by the parser\n\t// so we need to camelize the path here\n\tpath=camelize(name);if(!identRE$1.test(path)){(\"production\")!=='production'&&warn('Invalid prop key: \"'+name+'\". Prop keys '+'must be valid identifiers.',vm);continue;}prop={name:name,path:path,options:options,mode:propBindingModes.ONE_WAY,raw:null};attr=hyphenate(name);// first check dynamic version\n\tif((value=getBindAttr(el,attr))===null){if((value=getBindAttr(el,attr+'.sync'))!==null){prop.mode=propBindingModes.TWO_WAY;}else if((value=getBindAttr(el,attr+'.once'))!==null){prop.mode=propBindingModes.ONE_TIME;}}if(value!==null){// has dynamic binding!\n\tprop.raw=value;parsed=parseDirective(value);value=parsed.expression;prop.filters=parsed.filters;// check binding type\n\tif(isLiteral(value)&&!parsed.filters){// for expressions containing literal numbers and\n\t// booleans, there's no need to setup a prop binding,\n\t// so we can optimize them as a one-time set.\n\tprop.optimizedLiteral=true;}else{prop.dynamic=true;// check non-settable path for two-way bindings\n\tif(false){prop.mode=propBindingModes.ONE_WAY;warn('Cannot bind two-way prop with non-settable '+'parent path: '+value,vm);}}prop.parentPath=value;// warn required two-way\n\tif(false){warn('Prop \"'+name+'\" expects a two-way binding type.',vm);}}else if((value=getAttr(el,attr))!==null){// has literal binding!\n\tprop.raw=value;}else if(false){// check possible camelCase prop usage\n\tvar lowerCaseName=path.toLowerCase();value=/[A-Z\\-]/.test(name)&&(el.getAttribute(lowerCaseName)||el.getAttribute(':'+lowerCaseName)||el.getAttribute('v-bind:'+lowerCaseName)||el.getAttribute(':'+lowerCaseName+'.once')||el.getAttribute('v-bind:'+lowerCaseName+'.once')||el.getAttribute(':'+lowerCaseName+'.sync')||el.getAttribute('v-bind:'+lowerCaseName+'.sync'));if(value){warn('Possible usage error for prop `'+lowerCaseName+'` - '+'did you mean `'+attr+'`? HTML is case-insensitive, remember to use '+'kebab-case for props in templates.',vm);}else if(options.required){// warn missing required\n\twarn('Missing required prop: '+name,vm);}}// push prop\n\tprops.push(prop);}return makePropsLinkFn(props);}/**\n\t * Build a function that applies props to a vm.\n\t *\n\t * @param {Array} props\n\t * @return {Function} propsLinkFn\n\t */function makePropsLinkFn(props){return function propsLinkFn(vm,scope){// store resolved props info\n\tvm._props={};var inlineProps=vm.$options.propsData;var i=props.length;var prop,path,options,value,raw;while(i--){prop=props[i];raw=prop.raw;path=prop.path;options=prop.options;vm._props[path]=prop;if(inlineProps&&hasOwn(inlineProps,path)){initProp(vm,prop,inlineProps[path]);}if(raw===null){// initialize absent prop\n\tinitProp(vm,prop,undefined);}else if(prop.dynamic){// dynamic prop\n\tif(prop.mode===propBindingModes.ONE_TIME){// one time binding\n\tvalue=(scope||vm._context||vm).$get(prop.parentPath);initProp(vm,prop,value);}else{if(vm._context){// dynamic binding\n\tvm._bindDir({name:'prop',def:propDef,prop:prop},null,null,scope);// el, host, scope\n\t}else{// root instance\n\tinitProp(vm,prop,vm.$get(prop.parentPath));}}}else if(prop.optimizedLiteral){// optimized literal, cast it and just set once\n\tvar stripped=stripQuotes(raw);value=stripped===raw?toBoolean(toNumber(raw)):stripped;initProp(vm,prop,value);}else{// string literal, but we need to cater for\n\t// Boolean props with no value, or with same\n\t// literal value (e.g. disabled=\"disabled\")\n\t// see https://github.com/vuejs/vue-loader/issues/182\n\tvalue=options.type===Boolean&&(raw===''||raw===hyphenate(prop.name))?true:raw;initProp(vm,prop,value);}}};}/**\n\t * Process a prop with a rawValue, applying necessary coersions,\n\t * default values & assertions and call the given callback with\n\t * processed value.\n\t *\n\t * @param {Vue} vm\n\t * @param {Object} prop\n\t * @param {*} rawValue\n\t * @param {Function} fn\n\t */function processPropValue(vm,prop,rawValue,fn){var isSimple=prop.dynamic&&isSimplePath(prop.parentPath);var value=rawValue;if(value===undefined){value=getPropDefaultValue(vm,prop);}value=coerceProp(prop,value,vm);var coerced=value!==rawValue;if(!assertProp(prop,value,vm)){value=undefined;}if(isSimple&&!coerced){withoutConversion(function(){fn(value);});}else{fn(value);}}/**\n\t * Set a prop's initial value on a vm and its data object.\n\t *\n\t * @param {Vue} vm\n\t * @param {Object} prop\n\t * @param {*} value\n\t */function initProp(vm,prop,value){processPropValue(vm,prop,value,function(value){defineReactive(vm,prop.path,value);});}/**\n\t * Update a prop's value on a vm.\n\t *\n\t * @param {Vue} vm\n\t * @param {Object} prop\n\t * @param {*} value\n\t */function updateProp(vm,prop,value){processPropValue(vm,prop,value,function(value){vm[prop.path]=value;});}/**\n\t * Get the default value of a prop.\n\t *\n\t * @param {Vue} vm\n\t * @param {Object} prop\n\t * @return {*}\n\t */function getPropDefaultValue(vm,prop){// no default, return undefined\n\tvar options=prop.options;if(!hasOwn(options,'default')){// absent boolean value defaults to false\n\treturn options.type===Boolean?false:undefined;}var def=options['default'];// warn against non-factory defaults for Object & Array\n\tif(isObject(def)){(\"production\")!=='production'&&warn('Invalid default value for prop \"'+prop.name+'\": '+'Props with type Object/Array must use a factory function '+'to return the default value.',vm);}// call factory function for non-Function types\n\treturn typeof def==='function'&&options.type!==Function?def.call(vm):def;}/**\n\t * Assert whether a prop is valid.\n\t *\n\t * @param {Object} prop\n\t * @param {*} value\n\t * @param {Vue} vm\n\t */function assertProp(prop,value,vm){if(!prop.options.required&&(// non-required\n\tprop.raw===null||// abscent\n\tvalue==null)// null or undefined\n\t){return true;}var options=prop.options;var type=options.type;var valid=!type;var expectedTypes=[];if(type){if(!isArray(type)){type=[type];}for(var i=0;i<type.length&&!valid;i++){var assertedType=assertType(value,type[i]);expectedTypes.push(assertedType.expectedType);valid=assertedType.valid;}}if(!valid){if(false){warn('Invalid prop: type check failed for prop \"'+prop.name+'\".'+' Expected '+expectedTypes.map(formatType).join(', ')+', got '+formatValue(value)+'.',vm);}return false;}var validator=options.validator;if(validator){if(!validator(value)){(\"production\")!=='production'&&warn('Invalid prop: custom validator check failed for prop \"'+prop.name+'\".',vm);return false;}}return true;}/**\n\t * Force parsing value with coerce option.\n\t *\n\t * @param {*} value\n\t * @param {Object} options\n\t * @return {*}\n\t */function coerceProp(prop,value,vm){var coerce=prop.options.coerce;if(!coerce){return value;}if(typeof coerce==='function'){return coerce(value);}else{(\"production\")!=='production'&&warn('Invalid coerce for prop \"'+prop.name+'\": expected function, got '+(typeof coerce==='undefined'?'undefined':_typeof(coerce))+'.',vm);return value;}}/**\n\t * Assert the type of a value\n\t *\n\t * @param {*} value\n\t * @param {Function} type\n\t * @return {Object}\n\t */function assertType(value,type){var valid;var expectedType;if(type===String){expectedType='string';valid=(typeof value==='undefined'?'undefined':_typeof(value))===expectedType;}else if(type===Number){expectedType='number';valid=(typeof value==='undefined'?'undefined':_typeof(value))===expectedType;}else if(type===Boolean){expectedType='boolean';valid=(typeof value==='undefined'?'undefined':_typeof(value))===expectedType;}else if(type===Function){expectedType='function';valid=(typeof value==='undefined'?'undefined':_typeof(value))===expectedType;}else if(type===Object){expectedType='object';valid=isPlainObject(value);}else if(type===Array){expectedType='array';valid=isArray(value);}else{valid=value instanceof type;}return{valid:valid,expectedType:expectedType};}/**\n\t * Format type for output\n\t *\n\t * @param {String} type\n\t * @return {String}\n\t */function formatType(type){return type?type.charAt(0).toUpperCase()+type.slice(1):'custom type';}/**\n\t * Format value\n\t *\n\t * @param {*} value\n\t * @return {String}\n\t */function formatValue(val){return Object.prototype.toString.call(val).slice(8,-1);}var bindingModes=config._propBindingModes;var propDef={bind:function bind(){var child=this.vm;var parent=child._context;// passed in from compiler directly\n\tvar prop=this.descriptor.prop;var childKey=prop.path;var parentKey=prop.parentPath;var twoWay=prop.mode===bindingModes.TWO_WAY;var parentWatcher=this.parentWatcher=new Watcher(parent,parentKey,function(val){updateProp(child,prop,val);},{twoWay:twoWay,filters:prop.filters,// important: props need to be observed on the\n\t// v-for scope if present\n\tscope:this._scope});// set the child initial value.\n\tinitProp(child,prop,parentWatcher.value);// setup two-way binding\n\tif(twoWay){// important: defer the child watcher creation until\n\t// the created hook (after data observation)\n\tvar self=this;child.$once('pre-hook:created',function(){self.childWatcher=new Watcher(child,childKey,function(val){parentWatcher.set(val);},{// ensure sync upward before parent sync down.\n\t// this is necessary in cases e.g. the child\n\t// mutates a prop array, then replaces it. (#1683)\n\tsync:true});});}},unbind:function unbind(){this.parentWatcher.teardown();if(this.childWatcher){this.childWatcher.teardown();}}};var queue$1=[];var queued=false;/**\n\t * Push a job into the queue.\n\t *\n\t * @param {Function} job\n\t */function pushJob(job){queue$1.push(job);if(!queued){queued=true;nextTick(flush);}}/**\n\t * Flush the queue, and do one forced reflow before\n\t * triggering transitions.\n\t */function flush(){// Force layout\n\tvar f=document.documentElement.offsetHeight;for(var i=0;i<queue$1.length;i++){queue$1[i]();}queue$1=[];queued=false;// dummy return, so js linters don't complain about\n\t// unused variable f\n\treturn f;}var TYPE_TRANSITION='transition';var TYPE_ANIMATION='animation';var transDurationProp=transitionProp+'Duration';var animDurationProp=animationProp+'Duration';/**\n\t * If a just-entered element is applied the\n\t * leave class while its enter transition hasn't started yet,\n\t * and the transitioned property has the same value for both\n\t * enter/leave, then the leave transition will be skipped and\n\t * the transitionend event never fires. This function ensures\n\t * its callback to be called after a transition has started\n\t * by waiting for double raf.\n\t *\n\t * It falls back to setTimeout on devices that support CSS\n\t * transitions but not raf (e.g. Android 4.2 browser) - since\n\t * these environments are usually slow, we are giving it a\n\t * relatively large timeout.\n\t */var raf=inBrowser&&window.requestAnimationFrame;var waitForTransitionStart=raf/* istanbul ignore next */?function(fn){raf(function(){raf(fn);});}:function(fn){setTimeout(fn,50);};/**\n\t * A Transition object that encapsulates the state and logic\n\t * of the transition.\n\t *\n\t * @param {Element} el\n\t * @param {String} id\n\t * @param {Object} hooks\n\t * @param {Vue} vm\n\t */function Transition(el,id,hooks,vm){this.id=id;this.el=el;this.enterClass=hooks&&hooks.enterClass||id+'-enter';this.leaveClass=hooks&&hooks.leaveClass||id+'-leave';this.hooks=hooks;this.vm=vm;// async state\n\tthis.pendingCssEvent=this.pendingCssCb=this.cancel=this.pendingJsCb=this.op=this.cb=null;this.justEntered=false;this.entered=this.left=false;this.typeCache={};// check css transition type\n\tthis.type=hooks&&hooks.type;/* istanbul ignore if */if(false){if(this.type&&this.type!==TYPE_TRANSITION&&this.type!==TYPE_ANIMATION){warn('invalid CSS transition type for transition=\"'+this.id+'\": '+this.type,vm);}}// bind\n\tvar self=this;['enterNextTick','enterDone','leaveNextTick','leaveDone'].forEach(function(m){self[m]=bind(self[m],self);});}var p$1=Transition.prototype;/**\n\t * Start an entering transition.\n\t *\n\t * 1. enter transition triggered\n\t * 2. call beforeEnter hook\n\t * 3. add enter class\n\t * 4. insert/show element\n\t * 5. call enter hook (with possible explicit js callback)\n\t * 6. reflow\n\t * 7. based on transition type:\n\t * - transition:\n\t * remove class now, wait for transitionend,\n\t * then done if there's no explicit js callback.\n\t * - animation:\n\t * wait for animationend, remove class,\n\t * then done if there's no explicit js callback.\n\t * - no css transition:\n\t * done now if there's no explicit js callback.\n\t * 8. wait for either done or js callback, then call\n\t * afterEnter hook.\n\t *\n\t * @param {Function} op - insert/show the element\n\t * @param {Function} [cb]\n\t */p$1.enter=function(op,cb){this.cancelPending();this.callHook('beforeEnter');this.cb=cb;addClass(this.el,this.enterClass);op();this.entered=false;this.callHookWithCb('enter');if(this.entered){return;// user called done synchronously.\n\t}this.cancel=this.hooks&&this.hooks.enterCancelled;pushJob(this.enterNextTick);};/**\n\t * The \"nextTick\" phase of an entering transition, which is\n\t * to be pushed into a queue and executed after a reflow so\n\t * that removing the class can trigger a CSS transition.\n\t */p$1.enterNextTick=function(){var _this=this;// prevent transition skipping\n\tthis.justEntered=true;waitForTransitionStart(function(){_this.justEntered=false;});var enterDone=this.enterDone;var type=this.getCssTransitionType(this.enterClass);if(!this.pendingJsCb){if(type===TYPE_TRANSITION){// trigger transition by removing enter class now\n\tremoveClass(this.el,this.enterClass);this.setupCssCb(transitionEndEvent,enterDone);}else if(type===TYPE_ANIMATION){this.setupCssCb(animationEndEvent,enterDone);}else{enterDone();}}else if(type===TYPE_TRANSITION){removeClass(this.el,this.enterClass);}};/**\n\t * The \"cleanup\" phase of an entering transition.\n\t */p$1.enterDone=function(){this.entered=true;this.cancel=this.pendingJsCb=null;removeClass(this.el,this.enterClass);this.callHook('afterEnter');if(this.cb)this.cb();};/**\n\t * Start a leaving transition.\n\t *\n\t * 1. leave transition triggered.\n\t * 2. call beforeLeave hook\n\t * 3. add leave class (trigger css transition)\n\t * 4. call leave hook (with possible explicit js callback)\n\t * 5. reflow if no explicit js callback is provided\n\t * 6. based on transition type:\n\t * - transition or animation:\n\t * wait for end event, remove class, then done if\n\t * there's no explicit js callback.\n\t * - no css transition:\n\t * done if there's no explicit js callback.\n\t * 7. wait for either done or js callback, then call\n\t * afterLeave hook.\n\t *\n\t * @param {Function} op - remove/hide the element\n\t * @param {Function} [cb]\n\t */p$1.leave=function(op,cb){this.cancelPending();this.callHook('beforeLeave');this.op=op;this.cb=cb;addClass(this.el,this.leaveClass);this.left=false;this.callHookWithCb('leave');if(this.left){return;// user called done synchronously.\n\t}this.cancel=this.hooks&&this.hooks.leaveCancelled;// only need to handle leaveDone if\n\t// 1. the transition is already done (synchronously called\n\t// by the user, which causes this.op set to null)\n\t// 2. there's no explicit js callback\n\tif(this.op&&!this.pendingJsCb){// if a CSS transition leaves immediately after enter,\n\t// the transitionend event never fires. therefore we\n\t// detect such cases and end the leave immediately.\n\tif(this.justEntered){this.leaveDone();}else{pushJob(this.leaveNextTick);}}};/**\n\t * The \"nextTick\" phase of a leaving transition.\n\t */p$1.leaveNextTick=function(){var type=this.getCssTransitionType(this.leaveClass);if(type){var event=type===TYPE_TRANSITION?transitionEndEvent:animationEndEvent;this.setupCssCb(event,this.leaveDone);}else{this.leaveDone();}};/**\n\t * The \"cleanup\" phase of a leaving transition.\n\t */p$1.leaveDone=function(){this.left=true;this.cancel=this.pendingJsCb=null;this.op();removeClass(this.el,this.leaveClass);this.callHook('afterLeave');if(this.cb)this.cb();this.op=null;};/**\n\t * Cancel any pending callbacks from a previously running\n\t * but not finished transition.\n\t */p$1.cancelPending=function(){this.op=this.cb=null;var hasPending=false;if(this.pendingCssCb){hasPending=true;off(this.el,this.pendingCssEvent,this.pendingCssCb);this.pendingCssEvent=this.pendingCssCb=null;}if(this.pendingJsCb){hasPending=true;this.pendingJsCb.cancel();this.pendingJsCb=null;}if(hasPending){removeClass(this.el,this.enterClass);removeClass(this.el,this.leaveClass);}if(this.cancel){this.cancel.call(this.vm,this.el);this.cancel=null;}};/**\n\t * Call a user-provided synchronous hook function.\n\t *\n\t * @param {String} type\n\t */p$1.callHook=function(type){if(this.hooks&&this.hooks[type]){this.hooks[type].call(this.vm,this.el);}};/**\n\t * Call a user-provided, potentially-async hook function.\n\t * We check for the length of arguments to see if the hook\n\t * expects a `done` callback. If true, the transition's end\n\t * will be determined by when the user calls that callback;\n\t * otherwise, the end is determined by the CSS transition or\n\t * animation.\n\t *\n\t * @param {String} type\n\t */p$1.callHookWithCb=function(type){var hook=this.hooks&&this.hooks[type];if(hook){if(hook.length>1){this.pendingJsCb=cancellable(this[type+'Done']);}hook.call(this.vm,this.el,this.pendingJsCb);}};/**\n\t * Get an element's transition type based on the\n\t * calculated styles.\n\t *\n\t * @param {String} className\n\t * @return {Number}\n\t */p$1.getCssTransitionType=function(className){/* istanbul ignore if */if(!transitionEndEvent||// skip CSS transitions if page is not visible -\n\t// this solves the issue of transitionend events not\n\t// firing until the page is visible again.\n\t// pageVisibility API is supported in IE10+, same as\n\t// CSS transitions.\n\tdocument.hidden||// explicit js-only transition\n\tthis.hooks&&this.hooks.css===false||// element is hidden\n\tisHidden(this.el)){return;}var type=this.type||this.typeCache[className];if(type)return type;var inlineStyles=this.el.style;var computedStyles=window.getComputedStyle(this.el);var transDuration=inlineStyles[transDurationProp]||computedStyles[transDurationProp];if(transDuration&&transDuration!=='0s'){type=TYPE_TRANSITION;}else{var animDuration=inlineStyles[animDurationProp]||computedStyles[animDurationProp];if(animDuration&&animDuration!=='0s'){type=TYPE_ANIMATION;}}if(type){this.typeCache[className]=type;}return type;};/**\n\t * Setup a CSS transitionend/animationend callback.\n\t *\n\t * @param {String} event\n\t * @param {Function} cb\n\t */p$1.setupCssCb=function(event,cb){this.pendingCssEvent=event;var self=this;var el=this.el;var onEnd=this.pendingCssCb=function(e){if(e.target===el){off(el,event,onEnd);self.pendingCssEvent=self.pendingCssCb=null;if(!self.pendingJsCb&&cb){cb();}}};on(el,event,onEnd);};/**\n\t * Check if an element is hidden - in that case we can just\n\t * skip the transition alltogether.\n\t *\n\t * @param {Element} el\n\t * @return {Boolean}\n\t */function isHidden(el){if(/svg$/.test(el.namespaceURI)){// SVG elements do not have offset(Width|Height)\n\t// so we need to check the client rect\n\tvar rect=el.getBoundingClientRect();return!(rect.width||rect.height);}else{return!(el.offsetWidth||el.offsetHeight||el.getClientRects().length);}}var transition$1={priority:TRANSITION,update:function update(id,oldId){var el=this.el;// resolve on owner vm\n\tvar hooks=resolveAsset(this.vm.$options,'transitions',id);id=id||'v';oldId=oldId||'v';el.__v_trans=new Transition(el,id,hooks,this.vm);removeClass(el,oldId+'-transition');addClass(el,id+'-transition');}};var internalDirectives={style:style,'class':vClass,component:component,prop:propDef,transition:transition$1};// special binding prefixes\n\tvar bindRE=/^v-bind:|^:/;var onRE=/^v-on:|^@/;var dirAttrRE=/^v-([^:]+)(?:$|:(.*)$)/;var modifierRE=/\\.[^\\.]+/g;var transitionRE=/^(v-bind:|:)?transition$/;// default directive priority\n\tvar DEFAULT_PRIORITY=1000;var DEFAULT_TERMINAL_PRIORITY=2000;/**\n\t * Compile a template and return a reusable composite link\n\t * function, which recursively contains more link functions\n\t * inside. This top level compile function would normally\n\t * be called on instance root nodes, but can also be used\n\t * for partial compilation if the partial argument is true.\n\t *\n\t * The returned composite link function, when called, will\n\t * return an unlink function that tearsdown all directives\n\t * created during the linking phase.\n\t *\n\t * @param {Element|DocumentFragment} el\n\t * @param {Object} options\n\t * @param {Boolean} partial\n\t * @return {Function}\n\t */function compile(el,options,partial){// link function for the node itself.\n\tvar nodeLinkFn=partial||!options._asComponent?compileNode(el,options):null;// link function for the childNodes\n\tvar childLinkFn=!(nodeLinkFn&&nodeLinkFn.terminal)&&!isScript(el)&&el.hasChildNodes()?compileNodeList(el.childNodes,options):null;/**\n\t * A composite linker function to be called on a already\n\t * compiled piece of DOM, which instantiates all directive\n\t * instances.\n\t *\n\t * @param {Vue} vm\n\t * @param {Element|DocumentFragment} el\n\t * @param {Vue} [host] - host vm of transcluded content\n\t * @param {Object} [scope] - v-for scope\n\t * @param {Fragment} [frag] - link context fragment\n\t * @return {Function|undefined}\n\t */return function compositeLinkFn(vm,el,host,scope,frag){// cache childNodes before linking parent, fix #657\n\tvar childNodes=toArray(el.childNodes);// link\n\tvar dirs=linkAndCapture(function compositeLinkCapturer(){if(nodeLinkFn)nodeLinkFn(vm,el,host,scope,frag);if(childLinkFn)childLinkFn(vm,childNodes,host,scope,frag);},vm);return makeUnlinkFn(vm,dirs);};}/**\n\t * Apply a linker to a vm/element pair and capture the\n\t * directives created during the process.\n\t *\n\t * @param {Function} linker\n\t * @param {Vue} vm\n\t */function linkAndCapture(linker,vm){/* istanbul ignore if */if(true){// reset directives before every capture in production\n\t// mode, so that when unlinking we don't need to splice\n\t// them out (which turns out to be a perf hit).\n\t// they are kept in development mode because they are\n\t// useful for Vue's own tests.\n\tvm._directives=[];}var originalDirCount=vm._directives.length;linker();var dirs=vm._directives.slice(originalDirCount);dirs.sort(directiveComparator);for(var i=0,l=dirs.length;i<l;i++){dirs[i]._bind();}return dirs;}/**\n\t * Directive priority sort comparator\n\t *\n\t * @param {Object} a\n\t * @param {Object} b\n\t */function directiveComparator(a,b){a=a.descriptor.def.priority||DEFAULT_PRIORITY;b=b.descriptor.def.priority||DEFAULT_PRIORITY;return a>b?-1:a===b?0:1;}/**\n\t * Linker functions return an unlink function that\n\t * tearsdown all directives instances generated during\n\t * the process.\n\t *\n\t * We create unlink functions with only the necessary\n\t * information to avoid retaining additional closures.\n\t *\n\t * @param {Vue} vm\n\t * @param {Array} dirs\n\t * @param {Vue} [context]\n\t * @param {Array} [contextDirs]\n\t * @return {Function}\n\t */function makeUnlinkFn(vm,dirs,context,contextDirs){function unlink(destroying){teardownDirs(vm,dirs,destroying);if(context&&contextDirs){teardownDirs(context,contextDirs);}}// expose linked directives\n\tunlink.dirs=dirs;return unlink;}/**\n\t * Teardown partial linked directives.\n\t *\n\t * @param {Vue} vm\n\t * @param {Array} dirs\n\t * @param {Boolean} destroying\n\t */function teardownDirs(vm,dirs,destroying){var i=dirs.length;while(i--){dirs[i]._teardown();if(false){vm._directives.$remove(dirs[i]);}}}/**\n\t * Compile link props on an instance.\n\t *\n\t * @param {Vue} vm\n\t * @param {Element} el\n\t * @param {Object} props\n\t * @param {Object} [scope]\n\t * @return {Function}\n\t */function compileAndLinkProps(vm,el,props,scope){var propsLinkFn=compileProps(el,props,vm);var propDirs=linkAndCapture(function(){propsLinkFn(vm,scope);},vm);return makeUnlinkFn(vm,propDirs);}/**\n\t * Compile the root element of an instance.\n\t *\n\t * 1. attrs on context container (context scope)\n\t * 2. attrs on the component template root node, if\n\t * replace:true (child scope)\n\t *\n\t * If this is a fragment instance, we only need to compile 1.\n\t *\n\t * @param {Element} el\n\t * @param {Object} options\n\t * @param {Object} contextOptions\n\t * @return {Function}\n\t */function compileRoot(el,options,contextOptions){var containerAttrs=options._containerAttrs;var replacerAttrs=options._replacerAttrs;var contextLinkFn,replacerLinkFn;// only need to compile other attributes for\n\t// non-fragment instances\n\tif(el.nodeType!==11){// for components, container and replacer need to be\n\t// compiled separately and linked in different scopes.\n\tif(options._asComponent){// 2. container attributes\n\tif(containerAttrs&&contextOptions){contextLinkFn=compileDirectives(containerAttrs,contextOptions);}if(replacerAttrs){// 3. replacer attributes\n\treplacerLinkFn=compileDirectives(replacerAttrs,options);}}else{// non-component, just compile as a normal element.\n\treplacerLinkFn=compileDirectives(el.attributes,options);}}else if(false){// warn container directives for fragment instances\n\tvar names=containerAttrs.filter(function(attr){// allow vue-loader/vueify scoped css attributes\n\treturn attr.name.indexOf('_v-')<0&&// allow event listeners\n\t!onRE.test(attr.name)&&// allow slots\n\tattr.name!=='slot';}).map(function(attr){return'\"'+attr.name+'\"';});if(names.length){var plural=names.length>1;warn('Attribute'+(plural?'s ':' ')+names.join(', ')+(plural?' are':' is')+' ignored on component '+'<'+options.el.tagName.toLowerCase()+'> because '+'the component is a fragment instance: '+'http://vuejs.org/guide/components.html#Fragment-Instance');}}options._containerAttrs=options._replacerAttrs=null;return function rootLinkFn(vm,el,scope){// link context scope dirs\n\tvar context=vm._context;var contextDirs;if(context&&contextLinkFn){contextDirs=linkAndCapture(function(){contextLinkFn(context,el,null,scope);},context);}// link self\n\tvar selfDirs=linkAndCapture(function(){if(replacerLinkFn)replacerLinkFn(vm,el);},vm);// return the unlink function that tearsdown context\n\t// container directives.\n\treturn makeUnlinkFn(vm,selfDirs,context,contextDirs);};}/**\n\t * Compile a node and return a nodeLinkFn based on the\n\t * node type.\n\t *\n\t * @param {Node} node\n\t * @param {Object} options\n\t * @return {Function|null}\n\t */function compileNode(node,options){var type=node.nodeType;if(type===1&&!isScript(node)){return compileElement(node,options);}else if(type===3&&node.data.trim()){return compileTextNode(node,options);}else{return null;}}/**\n\t * Compile an element and return a nodeLinkFn.\n\t *\n\t * @param {Element} el\n\t * @param {Object} options\n\t * @return {Function|null}\n\t */function compileElement(el,options){// preprocess textareas.\n\t// textarea treats its text content as the initial value.\n\t// just bind it as an attr directive for value.\n\tif(el.tagName==='TEXTAREA'){var tokens=parseText(el.value);if(tokens){el.setAttribute(':value',tokensToExp(tokens));el.value='';}}var linkFn;var hasAttrs=el.hasAttributes();var attrs=hasAttrs&&toArray(el.attributes);// check terminal directives (for & if)\n\tif(hasAttrs){linkFn=checkTerminalDirectives(el,attrs,options);}// check element directives\n\tif(!linkFn){linkFn=checkElementDirectives(el,options);}// check component\n\tif(!linkFn){linkFn=checkComponent(el,options);}// normal directives\n\tif(!linkFn&&hasAttrs){linkFn=compileDirectives(attrs,options);}return linkFn;}/**\n\t * Compile a textNode and return a nodeLinkFn.\n\t *\n\t * @param {TextNode} node\n\t * @param {Object} options\n\t * @return {Function|null} textNodeLinkFn\n\t */function compileTextNode(node,options){// skip marked text nodes\n\tif(node._skip){return removeText;}var tokens=parseText(node.wholeText);if(!tokens){return null;}// mark adjacent text nodes as skipped,\n\t// because we are using node.wholeText to compile\n\t// all adjacent text nodes together. This fixes\n\t// issues in IE where sometimes it splits up a single\n\t// text node into multiple ones.\n\tvar next=node.nextSibling;while(next&&next.nodeType===3){next._skip=true;next=next.nextSibling;}var frag=document.createDocumentFragment();var el,token;for(var i=0,l=tokens.length;i<l;i++){token=tokens[i];el=token.tag?processTextToken(token,options):document.createTextNode(token.value);frag.appendChild(el);}return makeTextNodeLinkFn(tokens,frag,options);}/**\n\t * Linker for an skipped text node.\n\t *\n\t * @param {Vue} vm\n\t * @param {Text} node\n\t */function removeText(vm,node){remove(node);}/**\n\t * Process a single text token.\n\t *\n\t * @param {Object} token\n\t * @param {Object} options\n\t * @return {Node}\n\t */function processTextToken(token,options){var el;if(token.oneTime){el=document.createTextNode(token.value);}else{if(token.html){el=document.createComment('v-html');setTokenType('html');}else{// IE will clean up empty textNodes during\n\t// frag.cloneNode(true), so we have to give it\n\t// something here...\n\tel=document.createTextNode(' ');setTokenType('text');}}function setTokenType(type){if(token.descriptor)return;var parsed=parseDirective(token.value);token.descriptor={name:type,def:directives[type],expression:parsed.expression,filters:parsed.filters};}return el;}/**\n\t * Build a function that processes a textNode.\n\t *\n\t * @param {Array<Object>} tokens\n\t * @param {DocumentFragment} frag\n\t */function makeTextNodeLinkFn(tokens,frag){return function textNodeLinkFn(vm,el,host,scope){var fragClone=frag.cloneNode(true);var childNodes=toArray(fragClone.childNodes);var token,value,node;for(var i=0,l=tokens.length;i<l;i++){token=tokens[i];value=token.value;if(token.tag){node=childNodes[i];if(token.oneTime){value=(scope||vm).$eval(value);if(token.html){replace(node,parseTemplate(value,true));}else{node.data=_toString(value);}}else{vm._bindDir(token.descriptor,node,host,scope);}}}replace(el,fragClone);};}/**\n\t * Compile a node list and return a childLinkFn.\n\t *\n\t * @param {NodeList} nodeList\n\t * @param {Object} options\n\t * @return {Function|undefined}\n\t */function compileNodeList(nodeList,options){var linkFns=[];var nodeLinkFn,childLinkFn,node;for(var i=0,l=nodeList.length;i<l;i++){node=nodeList[i];nodeLinkFn=compileNode(node,options);childLinkFn=!(nodeLinkFn&&nodeLinkFn.terminal)&&node.tagName!=='SCRIPT'&&node.hasChildNodes()?compileNodeList(node.childNodes,options):null;linkFns.push(nodeLinkFn,childLinkFn);}return linkFns.length?makeChildLinkFn(linkFns):null;}/**\n\t * Make a child link function for a node's childNodes.\n\t *\n\t * @param {Array<Function>} linkFns\n\t * @return {Function} childLinkFn\n\t */function makeChildLinkFn(linkFns){return function childLinkFn(vm,nodes,host,scope,frag){var node,nodeLinkFn,childrenLinkFn;for(var i=0,n=0,l=linkFns.length;i<l;n++){node=nodes[n];nodeLinkFn=linkFns[i++];childrenLinkFn=linkFns[i++];// cache childNodes before linking parent, fix #657\n\tvar childNodes=toArray(node.childNodes);if(nodeLinkFn){nodeLinkFn(vm,node,host,scope,frag);}if(childrenLinkFn){childrenLinkFn(vm,childNodes,host,scope,frag);}}};}/**\n\t * Check for element directives (custom elements that should\n\t * be resovled as terminal directives).\n\t *\n\t * @param {Element} el\n\t * @param {Object} options\n\t */function checkElementDirectives(el,options){var tag=el.tagName.toLowerCase();if(commonTagRE.test(tag)){return;}var def=resolveAsset(options,'elementDirectives',tag);if(def){return makeTerminalNodeLinkFn(el,tag,'',options,def);}}/**\n\t * Check if an element is a component. If yes, return\n\t * a component link function.\n\t *\n\t * @param {Element} el\n\t * @param {Object} options\n\t * @return {Function|undefined}\n\t */function checkComponent(el,options){var component=checkComponentAttr(el,options);if(component){var ref=findRef(el);var descriptor={name:'component',ref:ref,expression:component.id,def:internalDirectives.component,modifiers:{literal:!component.dynamic}};var componentLinkFn=function componentLinkFn(vm,el,host,scope,frag){if(ref){defineReactive((scope||vm).$refs,ref,null);}vm._bindDir(descriptor,el,host,scope,frag);};componentLinkFn.terminal=true;return componentLinkFn;}}/**\n\t * Check an element for terminal directives in fixed order.\n\t * If it finds one, return a terminal link function.\n\t *\n\t * @param {Element} el\n\t * @param {Array} attrs\n\t * @param {Object} options\n\t * @return {Function} terminalLinkFn\n\t */function checkTerminalDirectives(el,attrs,options){// skip v-pre\n\tif(getAttr(el,'v-pre')!==null){return skip;}// skip v-else block, but only if following v-if\n\tif(el.hasAttribute('v-else')){var prev=el.previousElementSibling;if(prev&&prev.hasAttribute('v-if')){return skip;}}var attr,name,value,modifiers,matched,dirName,rawName,arg,def,termDef;for(var i=0,j=attrs.length;i<j;i++){attr=attrs[i];name=attr.name.replace(modifierRE,'');if(matched=name.match(dirAttrRE)){def=resolveAsset(options,'directives',matched[1]);if(def&&def.terminal){if(!termDef||(def.priority||DEFAULT_TERMINAL_PRIORITY)>termDef.priority){termDef=def;rawName=attr.name;modifiers=parseModifiers(attr.name);value=attr.value;dirName=matched[1];arg=matched[2];}}}}if(termDef){return makeTerminalNodeLinkFn(el,dirName,value,options,termDef,rawName,arg,modifiers);}}function skip(){}skip.terminal=true;/**\n\t * Build a node link function for a terminal directive.\n\t * A terminal link function terminates the current\n\t * compilation recursion and handles compilation of the\n\t * subtree in the directive.\n\t *\n\t * @param {Element} el\n\t * @param {String} dirName\n\t * @param {String} value\n\t * @param {Object} options\n\t * @param {Object} def\n\t * @param {String} [rawName]\n\t * @param {String} [arg]\n\t * @param {Object} [modifiers]\n\t * @return {Function} terminalLinkFn\n\t */function makeTerminalNodeLinkFn(el,dirName,value,options,def,rawName,arg,modifiers){var parsed=parseDirective(value);var descriptor={name:dirName,arg:arg,expression:parsed.expression,filters:parsed.filters,raw:value,attr:rawName,modifiers:modifiers,def:def};// check ref for v-for and router-view\n\tif(dirName==='for'||dirName==='router-view'){descriptor.ref=findRef(el);}var fn=function terminalNodeLinkFn(vm,el,host,scope,frag){if(descriptor.ref){defineReactive((scope||vm).$refs,descriptor.ref,null);}vm._bindDir(descriptor,el,host,scope,frag);};fn.terminal=true;return fn;}/**\n\t * Compile the directives on an element and return a linker.\n\t *\n\t * @param {Array|NamedNodeMap} attrs\n\t * @param {Object} options\n\t * @return {Function}\n\t */function compileDirectives(attrs,options){var i=attrs.length;var dirs=[];var attr,name,value,rawName,rawValue,dirName,arg,modifiers,dirDef,tokens,matched;while(i--){attr=attrs[i];name=rawName=attr.name;value=rawValue=attr.value;tokens=parseText(value);// reset arg\n\targ=null;// check modifiers\n\tmodifiers=parseModifiers(name);name=name.replace(modifierRE,'');// attribute interpolations\n\tif(tokens){value=tokensToExp(tokens);arg=name;pushDir('bind',directives.bind,tokens);// warn against mixing mustaches with v-bind\n\tif(false){if(name==='class'&&Array.prototype.some.call(attrs,function(attr){return attr.name===':class'||attr.name==='v-bind:class';})){warn('class=\"'+rawValue+'\": Do not mix mustache interpolation '+'and v-bind for \"class\" on the same element. Use one or the other.',options);}}}else// special attribute: transition\n\tif(transitionRE.test(name)){modifiers.literal=!bindRE.test(name);pushDir('transition',internalDirectives.transition);}else// event handlers\n\tif(onRE.test(name)){arg=name.replace(onRE,'');pushDir('on',directives.on);}else// attribute bindings\n\tif(bindRE.test(name)){dirName=name.replace(bindRE,'');if(dirName==='style'||dirName==='class'){pushDir(dirName,internalDirectives[dirName]);}else{arg=dirName;pushDir('bind',directives.bind);}}else// normal directives\n\tif(matched=name.match(dirAttrRE)){dirName=matched[1];arg=matched[2];// skip v-else (when used with v-show)\n\tif(dirName==='else'){continue;}dirDef=resolveAsset(options,'directives',dirName,true);if(dirDef){pushDir(dirName,dirDef);}}}/**\n\t * Push a directive.\n\t *\n\t * @param {String} dirName\n\t * @param {Object|Function} def\n\t * @param {Array} [interpTokens]\n\t */function pushDir(dirName,def,interpTokens){var hasOneTimeToken=interpTokens&&hasOneTime(interpTokens);var parsed=!hasOneTimeToken&&parseDirective(value);dirs.push({name:dirName,attr:rawName,raw:rawValue,def:def,arg:arg,modifiers:modifiers,// conversion from interpolation strings with one-time token\n\t// to expression is differed until directive bind time so that we\n\t// have access to the actual vm context for one-time bindings.\n\texpression:parsed&&parsed.expression,filters:parsed&&parsed.filters,interp:interpTokens,hasOneTime:hasOneTimeToken});}if(dirs.length){return makeNodeLinkFn(dirs);}}/**\n\t * Parse modifiers from directive attribute name.\n\t *\n\t * @param {String} name\n\t * @return {Object}\n\t */function parseModifiers(name){var res=Object.create(null);var match=name.match(modifierRE);if(match){var i=match.length;while(i--){res[match[i].slice(1)]=true;}}return res;}/**\n\t * Build a link function for all directives on a single node.\n\t *\n\t * @param {Array} directives\n\t * @return {Function} directivesLinkFn\n\t */function makeNodeLinkFn(directives){return function nodeLinkFn(vm,el,host,scope,frag){// reverse apply because it's sorted low to high\n\tvar i=directives.length;while(i--){vm._bindDir(directives[i],el,host,scope,frag);}};}/**\n\t * Check if an interpolation string contains one-time tokens.\n\t *\n\t * @param {Array} tokens\n\t * @return {Boolean}\n\t */function hasOneTime(tokens){var i=tokens.length;while(i--){if(tokens[i].oneTime)return true;}}function isScript(el){return el.tagName==='SCRIPT'&&(!el.hasAttribute('type')||el.getAttribute('type')==='text/javascript');}var specialCharRE=/[^\\w\\-:\\.]/;/**\n\t * Process an element or a DocumentFragment based on a\n\t * instance option object. This allows us to transclude\n\t * a template node/fragment before the instance is created,\n\t * so the processed fragment can then be cloned and reused\n\t * in v-for.\n\t *\n\t * @param {Element} el\n\t * @param {Object} options\n\t * @return {Element|DocumentFragment}\n\t */function transclude(el,options){// extract container attributes to pass them down\n\t// to compiler, because they need to be compiled in\n\t// parent scope. we are mutating the options object here\n\t// assuming the same object will be used for compile\n\t// right after this.\n\tif(options){options._containerAttrs=extractAttrs(el);}// for template tags, what we want is its content as\n\t// a documentFragment (for fragment instances)\n\tif(isTemplate(el)){el=parseTemplate(el);}if(options){if(options._asComponent&&!options.template){options.template='<slot></slot>';}if(options.template){options._content=extractContent(el);el=transcludeTemplate(el,options);}}if(isFragment(el)){// anchors for fragment instance\n\t// passing in `persist: true` to avoid them being\n\t// discarded by IE during template cloning\n\tprepend(createAnchor('v-start',true),el);el.appendChild(createAnchor('v-end',true));}return el;}/**\n\t * Process the template option.\n\t * If the replace option is true this will swap the $el.\n\t *\n\t * @param {Element} el\n\t * @param {Object} options\n\t * @return {Element|DocumentFragment}\n\t */function transcludeTemplate(el,options){var template=options.template;var frag=parseTemplate(template,true);if(frag){var replacer=frag.firstChild;var tag=replacer.tagName&&replacer.tagName.toLowerCase();if(options.replace){/* istanbul ignore if */if(el===document.body){(\"production\")!=='production'&&warn('You are mounting an instance with a template to '+'<body>. This will replace <body> entirely. You '+'should probably use `replace: false` here.');}// there are many cases where the instance must\n\t// become a fragment instance: basically anything that\n\t// can create more than 1 root nodes.\n\tif(// multi-children template\n\tfrag.childNodes.length>1||// non-element template\n\treplacer.nodeType!==1||// single nested component\n\ttag==='component'||resolveAsset(options,'components',tag)||hasBindAttr(replacer,'is')||// element directive\n\tresolveAsset(options,'elementDirectives',tag)||// for block\n\treplacer.hasAttribute('v-for')||// if block\n\treplacer.hasAttribute('v-if')){return frag;}else{options._replacerAttrs=extractAttrs(replacer);mergeAttrs(el,replacer);return replacer;}}else{el.appendChild(frag);return el;}}else{(\"production\")!=='production'&&warn('Invalid template option: '+template);}}/**\n\t * Helper to extract a component container's attributes\n\t * into a plain object array.\n\t *\n\t * @param {Element} el\n\t * @return {Array}\n\t */function extractAttrs(el){if(el.nodeType===1&&el.hasAttributes()){return toArray(el.attributes);}}/**\n\t * Merge the attributes of two elements, and make sure\n\t * the class names are merged properly.\n\t *\n\t * @param {Element} from\n\t * @param {Element} to\n\t */function mergeAttrs(from,to){var attrs=from.attributes;var i=attrs.length;var name,value;while(i--){name=attrs[i].name;value=attrs[i].value;if(!to.hasAttribute(name)&&!specialCharRE.test(name)){to.setAttribute(name,value);}else if(name==='class'&&!parseText(value)&&(value=value.trim())){value.split(/\\s+/).forEach(function(cls){addClass(to,cls);});}}}/**\n\t * Scan and determine slot content distribution.\n\t * We do this during transclusion instead at compile time so that\n\t * the distribution is decoupled from the compilation order of\n\t * the slots.\n\t *\n\t * @param {Element|DocumentFragment} template\n\t * @param {Element} content\n\t * @param {Vue} vm\n\t */function resolveSlots(vm,content){if(!content){return;}var contents=vm._slotContents=Object.create(null);var el,name;for(var i=0,l=content.children.length;i<l;i++){el=content.children[i];/* eslint-disable no-cond-assign */if(name=el.getAttribute('slot')){(contents[name]||(contents[name]=[])).push(el);}/* eslint-enable no-cond-assign */if(false){warn('The \"slot\" attribute must be static.',vm.$parent);}}for(name in contents){contents[name]=extractFragment(contents[name],content);}if(content.hasChildNodes()){var nodes=content.childNodes;if(nodes.length===1&&nodes[0].nodeType===3&&!nodes[0].data.trim()){return;}contents['default']=extractFragment(content.childNodes,content);}}/**\n\t * Extract qualified content nodes from a node list.\n\t *\n\t * @param {NodeList} nodes\n\t * @return {DocumentFragment}\n\t */function extractFragment(nodes,parent){var frag=document.createDocumentFragment();nodes=toArray(nodes);for(var i=0,l=nodes.length;i<l;i++){var node=nodes[i];if(isTemplate(node)&&!node.hasAttribute('v-if')&&!node.hasAttribute('v-for')){parent.removeChild(node);node=parseTemplate(node,true);}frag.appendChild(node);}return frag;}var compiler=Object.freeze({compile:compile,compileAndLinkProps:compileAndLinkProps,compileRoot:compileRoot,transclude:transclude,resolveSlots:resolveSlots});function stateMixin(Vue){/**\n\t * Accessor for `$data` property, since setting $data\n\t * requires observing the new object and updating\n\t * proxied properties.\n\t */Object.defineProperty(Vue.prototype,'$data',{get:function get(){return this._data;},set:function set(newData){if(newData!==this._data){this._setData(newData);}}});/**\n\t * Setup the scope of an instance, which contains:\n\t * - observed data\n\t * - computed properties\n\t * - user methods\n\t * - meta properties\n\t */Vue.prototype._initState=function(){this._initProps();this._initMeta();this._initMethods();this._initData();this._initComputed();};/**\n\t * Initialize props.\n\t */Vue.prototype._initProps=function(){var options=this.$options;var el=options.el;var props=options.props;if(props&&!el){(\"production\")!=='production'&&warn('Props will not be compiled if no `el` option is '+'provided at instantiation.',this);}// make sure to convert string selectors into element now\n\tel=options.el=query(el);this._propsUnlinkFn=el&&el.nodeType===1&&props// props must be linked in proper scope if inside v-for\n\t?compileAndLinkProps(this,el,props,this._scope):null;};/**\n\t * Initialize the data.\n\t */Vue.prototype._initData=function(){var dataFn=this.$options.data;var data=this._data=dataFn?dataFn():{};if(!isPlainObject(data)){data={};(\"production\")!=='production'&&warn('data functions should return an object.',this);}var props=this._props;// proxy data on instance\n\tvar keys=Object.keys(data);var i,key;i=keys.length;while(i--){key=keys[i];// there are two scenarios where we can proxy a data key:\n\t// 1. it's not already defined as a prop\n\t// 2. it's provided via a instantiation option AND there are no\n\t// template prop present\n\tif(!props||!hasOwn(props,key)){this._proxy(key);}else if(false){warn('Data field \"'+key+'\" is already defined '+'as a prop. To provide default value for a prop, use the \"default\" '+'prop option; if you want to pass prop values to an instantiation '+'call, use the \"propsData\" option.',this);}}// observe data\n\tobserve(data,this);};/**\n\t * Swap the instance's $data. Called in $data's setter.\n\t *\n\t * @param {Object} newData\n\t */Vue.prototype._setData=function(newData){newData=newData||{};var oldData=this._data;this._data=newData;var keys,key,i;// unproxy keys not present in new data\n\tkeys=Object.keys(oldData);i=keys.length;while(i--){key=keys[i];if(!(key in newData)){this._unproxy(key);}}// proxy keys not already proxied,\n\t// and trigger change for changed values\n\tkeys=Object.keys(newData);i=keys.length;while(i--){key=keys[i];if(!hasOwn(this,key)){// new property\n\tthis._proxy(key);}}oldData.__ob__.removeVm(this);observe(newData,this);this._digest();};/**\n\t * Proxy a property, so that\n\t * vm.prop === vm._data.prop\n\t *\n\t * @param {String} key\n\t */Vue.prototype._proxy=function(key){if(!isReserved(key)){// need to store ref to self here\n\t// because these getter/setters might\n\t// be called by child scopes via\n\t// prototype inheritance.\n\tvar self=this;Object.defineProperty(self,key,{configurable:true,enumerable:true,get:function proxyGetter(){return self._data[key];},set:function proxySetter(val){self._data[key]=val;}});}};/**\n\t * Unproxy a property.\n\t *\n\t * @param {String} key\n\t */Vue.prototype._unproxy=function(key){if(!isReserved(key)){delete this[key];}};/**\n\t * Force update on every watcher in scope.\n\t */Vue.prototype._digest=function(){for(var i=0,l=this._watchers.length;i<l;i++){this._watchers[i].update(true);// shallow updates\n\t}};/**\n\t * Setup computed properties. They are essentially\n\t * special getter/setters\n\t */function noop(){}Vue.prototype._initComputed=function(){var computed=this.$options.computed;if(computed){for(var key in computed){var userDef=computed[key];var def={enumerable:true,configurable:true};if(typeof userDef==='function'){def.get=makeComputedGetter(userDef,this);def.set=noop;}else{def.get=userDef.get?userDef.cache!==false?makeComputedGetter(userDef.get,this):bind(userDef.get,this):noop;def.set=userDef.set?bind(userDef.set,this):noop;}Object.defineProperty(this,key,def);}}};function makeComputedGetter(getter,owner){var watcher=new Watcher(owner,getter,null,{lazy:true});return function computedGetter(){if(watcher.dirty){watcher.evaluate();}if(Dep.target){watcher.depend();}return watcher.value;};}/**\n\t * Setup instance methods. Methods must be bound to the\n\t * instance since they might be passed down as a prop to\n\t * child components.\n\t */Vue.prototype._initMethods=function(){var methods=this.$options.methods;if(methods){for(var key in methods){this[key]=bind(methods[key],this);}}};/**\n\t * Initialize meta information like $index, $key & $value.\n\t */Vue.prototype._initMeta=function(){var metas=this.$options._meta;if(metas){for(var key in metas){defineReactive(this,key,metas[key]);}}};}var eventRE=/^v-on:|^@/;function eventsMixin(Vue){/**\n\t * Setup the instance's option events & watchers.\n\t * If the value is a string, we pull it from the\n\t * instance's methods by name.\n\t */Vue.prototype._initEvents=function(){var options=this.$options;if(options._asComponent){registerComponentEvents(this,options.el);}registerCallbacks(this,'$on',options.events);registerCallbacks(this,'$watch',options.watch);};/**\n\t * Register v-on events on a child component\n\t *\n\t * @param {Vue} vm\n\t * @param {Element} el\n\t */function registerComponentEvents(vm,el){var attrs=el.attributes;var name,value,handler;for(var i=0,l=attrs.length;i<l;i++){name=attrs[i].name;if(eventRE.test(name)){name=name.replace(eventRE,'');// force the expression into a statement so that\n\t// it always dynamically resolves the method to call (#2670)\n\t// kinda ugly hack, but does the job.\n\tvalue=attrs[i].value;if(isSimplePath(value)){value+='.apply(this, $arguments)';}handler=(vm._scope||vm._context).$eval(value,true);handler._fromParent=true;vm.$on(name.replace(eventRE),handler);}}}/**\n\t * Register callbacks for option events and watchers.\n\t *\n\t * @param {Vue} vm\n\t * @param {String} action\n\t * @param {Object} hash\n\t */function registerCallbacks(vm,action,hash){if(!hash)return;var handlers,key,i,j;for(key in hash){handlers=hash[key];if(isArray(handlers)){for(i=0,j=handlers.length;i<j;i++){register(vm,action,key,handlers[i]);}}else{register(vm,action,key,handlers);}}}/**\n\t * Helper to register an event/watch callback.\n\t *\n\t * @param {Vue} vm\n\t * @param {String} action\n\t * @param {String} key\n\t * @param {Function|String|Object} handler\n\t * @param {Object} [options]\n\t */function register(vm,action,key,handler,options){var type=typeof handler==='undefined'?'undefined':_typeof(handler);if(type==='function'){vm[action](key,handler,options);}else if(type==='string'){var methods=vm.$options.methods;var method=methods&&methods[handler];if(method){vm[action](key,method,options);}else{(\"production\")!=='production'&&warn('Unknown method: \"'+handler+'\" when '+'registering callback for '+action+': \"'+key+'\".',vm);}}else if(handler&&type==='object'){register(vm,action,key,handler.handler,handler);}}/**\n\t * Setup recursive attached/detached calls\n\t */Vue.prototype._initDOMHooks=function(){this.$on('hook:attached',onAttached);this.$on('hook:detached',onDetached);};/**\n\t * Callback to recursively call attached hook on children\n\t */function onAttached(){if(!this._isAttached){this._isAttached=true;this.$children.forEach(callAttach);}}/**\n\t * Iterator to call attached hook\n\t *\n\t * @param {Vue} child\n\t */function callAttach(child){if(!child._isAttached&&inDoc(child.$el)){child._callHook('attached');}}/**\n\t * Callback to recursively call detached hook on children\n\t */function onDetached(){if(this._isAttached){this._isAttached=false;this.$children.forEach(callDetach);}}/**\n\t * Iterator to call detached hook\n\t *\n\t * @param {Vue} child\n\t */function callDetach(child){if(child._isAttached&&!inDoc(child.$el)){child._callHook('detached');}}/**\n\t * Trigger all handlers for a hook\n\t *\n\t * @param {String} hook\n\t */Vue.prototype._callHook=function(hook){this.$emit('pre-hook:'+hook);var handlers=this.$options[hook];if(handlers){for(var i=0,j=handlers.length;i<j;i++){handlers[i].call(this);}}this.$emit('hook:'+hook);};}function noop$1(){}/**\n\t * A directive links a DOM element with a piece of data,\n\t * which is the result of evaluating an expression.\n\t * It registers a watcher with the expression and calls\n\t * the DOM update function when a change is triggered.\n\t *\n\t * @param {Object} descriptor\n\t * - {String} name\n\t * - {Object} def\n\t * - {String} expression\n\t * - {Array<Object>} [filters]\n\t * - {Object} [modifiers]\n\t * - {Boolean} literal\n\t * - {String} attr\n\t * - {String} arg\n\t * - {String} raw\n\t * - {String} [ref]\n\t * - {Array<Object>} [interp]\n\t * - {Boolean} [hasOneTime]\n\t * @param {Vue} vm\n\t * @param {Node} el\n\t * @param {Vue} [host] - transclusion host component\n\t * @param {Object} [scope] - v-for scope\n\t * @param {Fragment} [frag] - owner fragment\n\t * @constructor\n\t */function Directive(descriptor,vm,el,host,scope,frag){this.vm=vm;this.el=el;// copy descriptor properties\n\tthis.descriptor=descriptor;this.name=descriptor.name;this.expression=descriptor.expression;this.arg=descriptor.arg;this.modifiers=descriptor.modifiers;this.filters=descriptor.filters;this.literal=this.modifiers&&this.modifiers.literal;// private\n\tthis._locked=false;this._bound=false;this._listeners=null;// link context\n\tthis._host=host;this._scope=scope;this._frag=frag;// store directives on node in dev mode\n\tif(false){this.el._vue_directives=this.el._vue_directives||[];this.el._vue_directives.push(this);}}/**\n\t * Initialize the directive, mixin definition properties,\n\t * setup the watcher, call definition bind() and update()\n\t * if present.\n\t */Directive.prototype._bind=function(){var name=this.name;var descriptor=this.descriptor;// remove attribute\n\tif((name!=='cloak'||this.vm._isCompiled)&&this.el&&this.el.removeAttribute){var attr=descriptor.attr||'v-'+name;this.el.removeAttribute(attr);}// copy def properties\n\tvar def=descriptor.def;if(typeof def==='function'){this.update=def;}else{extend(this,def);}// setup directive params\n\tthis._setupParams();// initial bind\n\tif(this.bind){this.bind();}this._bound=true;if(this.literal){this.update&&this.update(descriptor.raw);}else if((this.expression||this.modifiers)&&(this.update||this.twoWay)&&!this._checkStatement()){// wrapped updater for context\n\tvar dir=this;if(this.update){this._update=function(val,oldVal){if(!dir._locked){dir.update(val,oldVal);}};}else{this._update=noop$1;}var preProcess=this._preProcess?bind(this._preProcess,this):null;var postProcess=this._postProcess?bind(this._postProcess,this):null;var watcher=this._watcher=new Watcher(this.vm,this.expression,this._update,// callback\n\t{filters:this.filters,twoWay:this.twoWay,deep:this.deep,preProcess:preProcess,postProcess:postProcess,scope:this._scope});// v-model with inital inline value need to sync back to\n\t// model instead of update to DOM on init. They would\n\t// set the afterBind hook to indicate that.\n\tif(this.afterBind){this.afterBind();}else if(this.update){this.update(watcher.value);}}};/**\n\t * Setup all param attributes, e.g. track-by,\n\t * transition-mode, etc...\n\t */Directive.prototype._setupParams=function(){if(!this.params){return;}var params=this.params;// swap the params array with a fresh object.\n\tthis.params=Object.create(null);var i=params.length;var key,val,mappedKey;while(i--){key=hyphenate(params[i]);mappedKey=camelize(key);val=getBindAttr(this.el,key);if(val!=null){// dynamic\n\tthis._setupParamWatcher(mappedKey,val);}else{// static\n\tval=getAttr(this.el,key);if(val!=null){this.params[mappedKey]=val===''?true:val;}}}};/**\n\t * Setup a watcher for a dynamic param.\n\t *\n\t * @param {String} key\n\t * @param {String} expression\n\t */Directive.prototype._setupParamWatcher=function(key,expression){var self=this;var called=false;var unwatch=(this._scope||this.vm).$watch(expression,function(val,oldVal){self.params[key]=val;// since we are in immediate mode,\n\t// only call the param change callbacks if this is not the first update.\n\tif(called){var cb=self.paramWatchers&&self.paramWatchers[key];if(cb){cb.call(self,val,oldVal);}}else{called=true;}},{immediate:true,user:false});(this._paramUnwatchFns||(this._paramUnwatchFns=[])).push(unwatch);};/**\n\t * Check if the directive is a function caller\n\t * and if the expression is a callable one. If both true,\n\t * we wrap up the expression and use it as the event\n\t * handler.\n\t *\n\t * e.g. on-click=\"a++\"\n\t *\n\t * @return {Boolean}\n\t */Directive.prototype._checkStatement=function(){var expression=this.expression;if(expression&&this.acceptStatement&&!isSimplePath(expression)){var fn=parseExpression(expression).get;var scope=this._scope||this.vm;var handler=function handler(e){scope.$event=e;fn.call(scope,scope);scope.$event=null;};if(this.filters){handler=scope._applyFilters(handler,null,this.filters);}this.update(handler);return true;}};/**\n\t * Set the corresponding value with the setter.\n\t * This should only be used in two-way directives\n\t * e.g. v-model.\n\t *\n\t * @param {*} value\n\t * @public\n\t */Directive.prototype.set=function(value){/* istanbul ignore else */if(this.twoWay){this._withLock(function(){this._watcher.set(value);});}else if(false){warn('Directive.set() can only be used inside twoWay'+'directives.');}};/**\n\t * Execute a function while preventing that function from\n\t * triggering updates on this directive instance.\n\t *\n\t * @param {Function} fn\n\t */Directive.prototype._withLock=function(fn){var self=this;self._locked=true;fn.call(self);nextTick(function(){self._locked=false;});};/**\n\t * Convenience method that attaches a DOM event listener\n\t * to the directive element and autometically tears it down\n\t * during unbind.\n\t *\n\t * @param {String} event\n\t * @param {Function} handler\n\t * @param {Boolean} [useCapture]\n\t */Directive.prototype.on=function(event,handler,useCapture){on(this.el,event,handler,useCapture);(this._listeners||(this._listeners=[])).push([event,handler]);};/**\n\t * Teardown the watcher and call unbind.\n\t */Directive.prototype._teardown=function(){if(this._bound){this._bound=false;if(this.unbind){this.unbind();}if(this._watcher){this._watcher.teardown();}var listeners=this._listeners;var i;if(listeners){i=listeners.length;while(i--){off(this.el,listeners[i][0],listeners[i][1]);}}var unwatchFns=this._paramUnwatchFns;if(unwatchFns){i=unwatchFns.length;while(i--){unwatchFns[i]();}}if(false){this.el._vue_directives.$remove(this);}this.vm=this.el=this._watcher=this._listeners=null;}};function lifecycleMixin(Vue){/**\n\t * Update v-ref for component.\n\t *\n\t * @param {Boolean} remove\n\t */Vue.prototype._updateRef=function(remove){var ref=this.$options._ref;if(ref){var refs=(this._scope||this._context).$refs;if(remove){if(refs[ref]===this){refs[ref]=null;}}else{refs[ref]=this;}}};/**\n\t * Transclude, compile and link element.\n\t *\n\t * If a pre-compiled linker is available, that means the\n\t * passed in element will be pre-transcluded and compiled\n\t * as well - all we need to do is to call the linker.\n\t *\n\t * Otherwise we need to call transclude/compile/link here.\n\t *\n\t * @param {Element} el\n\t */Vue.prototype._compile=function(el){var options=this.$options;// transclude and init element\n\t// transclude can potentially replace original\n\t// so we need to keep reference; this step also injects\n\t// the template and caches the original attributes\n\t// on the container node and replacer node.\n\tvar original=el;el=transclude(el,options);this._initElement(el);// handle v-pre on root node (#2026)\n\tif(el.nodeType===1&&getAttr(el,'v-pre')!==null){return;}// root is always compiled per-instance, because\n\t// container attrs and props can be different every time.\n\tvar contextOptions=this._context&&this._context.$options;var rootLinker=compileRoot(el,options,contextOptions);// resolve slot distribution\n\tresolveSlots(this,options._content);// compile and link the rest\n\tvar contentLinkFn;var ctor=this.constructor;// component compilation can be cached\n\t// as long as it's not using inline-template\n\tif(options._linkerCachable){contentLinkFn=ctor.linker;if(!contentLinkFn){contentLinkFn=ctor.linker=compile(el,options);}}// link phase\n\t// make sure to link root with prop scope!\n\tvar rootUnlinkFn=rootLinker(this,el,this._scope);var contentUnlinkFn=contentLinkFn?contentLinkFn(this,el):compile(el,options)(this,el);// register composite unlink function\n\t// to be called during instance destruction\n\tthis._unlinkFn=function(){rootUnlinkFn();// passing destroying: true to avoid searching and\n\t// splicing the directives\n\tcontentUnlinkFn(true);};// finally replace original\n\tif(options.replace){replace(original,el);}this._isCompiled=true;this._callHook('compiled');};/**\n\t * Initialize instance element. Called in the public\n\t * $mount() method.\n\t *\n\t * @param {Element} el\n\t */Vue.prototype._initElement=function(el){if(isFragment(el)){this._isFragment=true;this.$el=this._fragmentStart=el.firstChild;this._fragmentEnd=el.lastChild;// set persisted text anchors to empty\n\tif(this._fragmentStart.nodeType===3){this._fragmentStart.data=this._fragmentEnd.data='';}this._fragment=el;}else{this.$el=el;}this.$el.__vue__=this;this._callHook('beforeCompile');};/**\n\t * Create and bind a directive to an element.\n\t *\n\t * @param {Object} descriptor - parsed directive descriptor\n\t * @param {Node} node - target node\n\t * @param {Vue} [host] - transclusion host component\n\t * @param {Object} [scope] - v-for scope\n\t * @param {Fragment} [frag] - owner fragment\n\t */Vue.prototype._bindDir=function(descriptor,node,host,scope,frag){this._directives.push(new Directive(descriptor,this,node,host,scope,frag));};/**\n\t * Teardown an instance, unobserves the data, unbind all the\n\t * directives, turn off all the event listeners, etc.\n\t *\n\t * @param {Boolean} remove - whether to remove the DOM node.\n\t * @param {Boolean} deferCleanup - if true, defer cleanup to\n\t * be called later\n\t */Vue.prototype._destroy=function(remove,deferCleanup){if(this._isBeingDestroyed){if(!deferCleanup){this._cleanup();}return;}var destroyReady;var pendingRemoval;var self=this;// Cleanup should be called either synchronously or asynchronoysly as\n\t// callback of this.$remove(), or if remove and deferCleanup are false.\n\t// In any case it should be called after all other removing, unbinding and\n\t// turning of is done\n\tvar cleanupIfPossible=function cleanupIfPossible(){if(destroyReady&&!pendingRemoval&&!deferCleanup){self._cleanup();}};// remove DOM element\n\tif(remove&&this.$el){pendingRemoval=true;this.$remove(function(){pendingRemoval=false;cleanupIfPossible();});}this._callHook('beforeDestroy');this._isBeingDestroyed=true;var i;// remove self from parent. only necessary\n\t// if parent is not being destroyed as well.\n\tvar parent=this.$parent;if(parent&&!parent._isBeingDestroyed){parent.$children.$remove(this);// unregister ref (remove: true)\n\tthis._updateRef(true);}// destroy all children.\n\ti=this.$children.length;while(i--){this.$children[i].$destroy();}// teardown props\n\tif(this._propsUnlinkFn){this._propsUnlinkFn();}// teardown all directives. this also tearsdown all\n\t// directive-owned watchers.\n\tif(this._unlinkFn){this._unlinkFn();}i=this._watchers.length;while(i--){this._watchers[i].teardown();}// remove reference to self on $el\n\tif(this.$el){this.$el.__vue__=null;}destroyReady=true;cleanupIfPossible();};/**\n\t * Clean up to ensure garbage collection.\n\t * This is called after the leave transition if there\n\t * is any.\n\t */Vue.prototype._cleanup=function(){if(this._isDestroyed){return;}// remove self from owner fragment\n\t// do it in cleanup so that we can call $destroy with\n\t// defer right when a fragment is about to be removed.\n\tif(this._frag){this._frag.children.$remove(this);}// remove reference from data ob\n\t// frozen object may not have observer.\n\tif(this._data&&this._data.__ob__){this._data.__ob__.removeVm(this);}// Clean up references to private properties and other\n\t// instances. preserve reference to _data so that proxy\n\t// accessors still work. The only potential side effect\n\t// here is that mutating the instance after it's destroyed\n\t// may affect the state of other components that are still\n\t// observing the same object, but that seems to be a\n\t// reasonable responsibility for the user rather than\n\t// always throwing an error on them.\n\tthis.$el=this.$parent=this.$root=this.$children=this._watchers=this._context=this._scope=this._directives=null;// call the last hook...\n\tthis._isDestroyed=true;this._callHook('destroyed');// turn off all instance listeners.\n\tthis.$off();};}function miscMixin(Vue){/**\n\t * Apply a list of filter (descriptors) to a value.\n\t * Using plain for loops here because this will be called in\n\t * the getter of any watcher with filters so it is very\n\t * performance sensitive.\n\t *\n\t * @param {*} value\n\t * @param {*} [oldValue]\n\t * @param {Array} filters\n\t * @param {Boolean} write\n\t * @return {*}\n\t */Vue.prototype._applyFilters=function(value,oldValue,filters,write){var filter,fn,args,arg,offset,i,l,j,k;for(i=0,l=filters.length;i<l;i++){filter=filters[write?l-i-1:i];fn=resolveAsset(this.$options,'filters',filter.name,true);if(!fn)continue;fn=write?fn.write:fn.read||fn;if(typeof fn!=='function')continue;args=write?[value,oldValue]:[value];offset=write?2:1;if(filter.args){for(j=0,k=filter.args.length;j<k;j++){arg=filter.args[j];args[j+offset]=arg.dynamic?this.$get(arg.value):arg.value;}}value=fn.apply(this,args);}return value;};/**\n\t * Resolve a component, depending on whether the component\n\t * is defined normally or using an async factory function.\n\t * Resolves synchronously if already resolved, otherwise\n\t * resolves asynchronously and caches the resolved\n\t * constructor on the factory.\n\t *\n\t * @param {String|Function} value\n\t * @param {Function} cb\n\t */Vue.prototype._resolveComponent=function(value,cb){var factory;if(typeof value==='function'){factory=value;}else{factory=resolveAsset(this.$options,'components',value,true);}/* istanbul ignore if */if(!factory){return;}// async component factory\n\tif(!factory.options){if(factory.resolved){// cached\n\tcb(factory.resolved);}else if(factory.requested){// pool callbacks\n\tfactory.pendingCallbacks.push(cb);}else{factory.requested=true;var cbs=factory.pendingCallbacks=[cb];factory.call(this,function resolve(res){if(isPlainObject(res)){res=Vue.extend(res);}// cache resolved\n\tfactory.resolved=res;// invoke callbacks\n\tfor(var i=0,l=cbs.length;i<l;i++){cbs[i](res);}},function reject(reason){(\"production\")!=='production'&&warn('Failed to resolve async component'+(typeof value==='string'?': '+value:'')+'. '+(reason?'\\nReason: '+reason:''));});}}else{// normal component\n\tcb(factory);}};}var filterRE$1=/[^|]\\|[^|]/;function dataAPI(Vue){/**\n\t * Get the value from an expression on this vm.\n\t *\n\t * @param {String} exp\n\t * @param {Boolean} [asStatement]\n\t * @return {*}\n\t */Vue.prototype.$get=function(exp,asStatement){var res=parseExpression(exp);if(res){if(asStatement){var self=this;return function statementHandler(){self.$arguments=toArray(arguments);var result=res.get.call(self,self);self.$arguments=null;return result;};}else{try{return res.get.call(this,this);}catch(e){}}}};/**\n\t * Set the value from an expression on this vm.\n\t * The expression must be a valid left-hand\n\t * expression in an assignment.\n\t *\n\t * @param {String} exp\n\t * @param {*} val\n\t */Vue.prototype.$set=function(exp,val){var res=parseExpression(exp,true);if(res&&res.set){res.set.call(this,this,val);}};/**\n\t * Delete a property on the VM\n\t *\n\t * @param {String} key\n\t */Vue.prototype.$delete=function(key){del(this._data,key);};/**\n\t * Watch an expression, trigger callback when its\n\t * value changes.\n\t *\n\t * @param {String|Function} expOrFn\n\t * @param {Function} cb\n\t * @param {Object} [options]\n\t * - {Boolean} deep\n\t * - {Boolean} immediate\n\t * @return {Function} - unwatchFn\n\t */Vue.prototype.$watch=function(expOrFn,cb,options){var vm=this;var parsed;if(typeof expOrFn==='string'){parsed=parseDirective(expOrFn);expOrFn=parsed.expression;}var watcher=new Watcher(vm,expOrFn,cb,{deep:options&&options.deep,sync:options&&options.sync,filters:parsed&&parsed.filters,user:!options||options.user!==false});if(options&&options.immediate){cb.call(vm,watcher.value);}return function unwatchFn(){watcher.teardown();};};/**\n\t * Evaluate a text directive, including filters.\n\t *\n\t * @param {String} text\n\t * @param {Boolean} [asStatement]\n\t * @return {String}\n\t */Vue.prototype.$eval=function(text,asStatement){// check for filters.\n\tif(filterRE$1.test(text)){var dir=parseDirective(text);// the filter regex check might give false positive\n\t// for pipes inside strings, so it's possible that\n\t// we don't get any filters here\n\tvar val=this.$get(dir.expression,asStatement);return dir.filters?this._applyFilters(val,null,dir.filters):val;}else{// no filter\n\treturn this.$get(text,asStatement);}};/**\n\t * Interpolate a piece of template text.\n\t *\n\t * @param {String} text\n\t * @return {String}\n\t */Vue.prototype.$interpolate=function(text){var tokens=parseText(text);var vm=this;if(tokens){if(tokens.length===1){return vm.$eval(tokens[0].value)+'';}else{return tokens.map(function(token){return token.tag?vm.$eval(token.value):token.value;}).join('');}}else{return text;}};/**\n\t * Log instance data as a plain JS object\n\t * so that it is easier to inspect in console.\n\t * This method assumes console is available.\n\t *\n\t * @param {String} [path]\n\t */Vue.prototype.$log=function(path){var data=path?getPath(this._data,path):this._data;if(data){data=clean(data);}// include computed fields\n\tif(!path){var key;for(key in this.$options.computed){data[key]=clean(this[key]);}if(this._props){for(key in this._props){data[key]=clean(this[key]);}}}console.log(data);};/**\n\t * \"clean\" a getter/setter converted object into a plain\n\t * object copy.\n\t *\n\t * @param {Object} - obj\n\t * @return {Object}\n\t */function clean(obj){return JSON.parse(JSON.stringify(obj));}}function domAPI(Vue){/**\n\t * Convenience on-instance nextTick. The callback is\n\t * auto-bound to the instance, and this avoids component\n\t * modules having to rely on the global Vue.\n\t *\n\t * @param {Function} fn\n\t */Vue.prototype.$nextTick=function(fn){nextTick(fn,this);};/**\n\t * Append instance to target\n\t *\n\t * @param {Node} target\n\t * @param {Function} [cb]\n\t * @param {Boolean} [withTransition] - defaults to true\n\t */Vue.prototype.$appendTo=function(target,cb,withTransition){return insert(this,target,cb,withTransition,append,appendWithTransition);};/**\n\t * Prepend instance to target\n\t *\n\t * @param {Node} target\n\t * @param {Function} [cb]\n\t * @param {Boolean} [withTransition] - defaults to true\n\t */Vue.prototype.$prependTo=function(target,cb,withTransition){target=query(target);if(target.hasChildNodes()){this.$before(target.firstChild,cb,withTransition);}else{this.$appendTo(target,cb,withTransition);}return this;};/**\n\t * Insert instance before target\n\t *\n\t * @param {Node} target\n\t * @param {Function} [cb]\n\t * @param {Boolean} [withTransition] - defaults to true\n\t */Vue.prototype.$before=function(target,cb,withTransition){return insert(this,target,cb,withTransition,beforeWithCb,beforeWithTransition);};/**\n\t * Insert instance after target\n\t *\n\t * @param {Node} target\n\t * @param {Function} [cb]\n\t * @param {Boolean} [withTransition] - defaults to true\n\t */Vue.prototype.$after=function(target,cb,withTransition){target=query(target);if(target.nextSibling){this.$before(target.nextSibling,cb,withTransition);}else{this.$appendTo(target.parentNode,cb,withTransition);}return this;};/**\n\t * Remove instance from DOM\n\t *\n\t * @param {Function} [cb]\n\t * @param {Boolean} [withTransition] - defaults to true\n\t */Vue.prototype.$remove=function(cb,withTransition){if(!this.$el.parentNode){return cb&&cb();}var inDocument=this._isAttached&&inDoc(this.$el);// if we are not in document, no need to check\n\t// for transitions\n\tif(!inDocument)withTransition=false;var self=this;var realCb=function realCb(){if(inDocument)self._callHook('detached');if(cb)cb();};if(this._isFragment){removeNodeRange(this._fragmentStart,this._fragmentEnd,this,this._fragment,realCb);}else{var op=withTransition===false?removeWithCb:removeWithTransition;op(this.$el,this,realCb);}return this;};/**\n\t * Shared DOM insertion function.\n\t *\n\t * @param {Vue} vm\n\t * @param {Element} target\n\t * @param {Function} [cb]\n\t * @param {Boolean} [withTransition]\n\t * @param {Function} op1 - op for non-transition insert\n\t * @param {Function} op2 - op for transition insert\n\t * @return vm\n\t */function insert(vm,target,cb,withTransition,op1,op2){target=query(target);var targetIsDetached=!inDoc(target);var op=withTransition===false||targetIsDetached?op1:op2;var shouldCallHook=!targetIsDetached&&!vm._isAttached&&!inDoc(vm.$el);if(vm._isFragment){mapNodeRange(vm._fragmentStart,vm._fragmentEnd,function(node){op(node,target,vm);});cb&&cb();}else{op(vm.$el,target,vm,cb);}if(shouldCallHook){vm._callHook('attached');}return vm;}/**\n\t * Check for selectors\n\t *\n\t * @param {String|Element} el\n\t */function query(el){return typeof el==='string'?document.querySelector(el):el;}/**\n\t * Append operation that takes a callback.\n\t *\n\t * @param {Node} el\n\t * @param {Node} target\n\t * @param {Vue} vm - unused\n\t * @param {Function} [cb]\n\t */function append(el,target,vm,cb){target.appendChild(el);if(cb)cb();}/**\n\t * InsertBefore operation that takes a callback.\n\t *\n\t * @param {Node} el\n\t * @param {Node} target\n\t * @param {Vue} vm - unused\n\t * @param {Function} [cb]\n\t */function beforeWithCb(el,target,vm,cb){before(el,target);if(cb)cb();}/**\n\t * Remove operation that takes a callback.\n\t *\n\t * @param {Node} el\n\t * @param {Vue} vm - unused\n\t * @param {Function} [cb]\n\t */function removeWithCb(el,vm,cb){remove(el);if(cb)cb();}}function eventsAPI(Vue){/**\n\t * Listen on the given `event` with `fn`.\n\t *\n\t * @param {String} event\n\t * @param {Function} fn\n\t */Vue.prototype.$on=function(event,fn){(this._events[event]||(this._events[event]=[])).push(fn);modifyListenerCount(this,event,1);return this;};/**\n\t * Adds an `event` listener that will be invoked a single\n\t * time then automatically removed.\n\t *\n\t * @param {String} event\n\t * @param {Function} fn\n\t */Vue.prototype.$once=function(event,fn){var self=this;function on(){self.$off(event,on);fn.apply(this,arguments);}on.fn=fn;this.$on(event,on);return this;};/**\n\t * Remove the given callback for `event` or all\n\t * registered callbacks.\n\t *\n\t * @param {String} event\n\t * @param {Function} fn\n\t */Vue.prototype.$off=function(event,fn){var cbs;// all\n\tif(!arguments.length){if(this.$parent){for(event in this._events){cbs=this._events[event];if(cbs){modifyListenerCount(this,event,-cbs.length);}}}this._events={};return this;}// specific event\n\tcbs=this._events[event];if(!cbs){return this;}if(arguments.length===1){modifyListenerCount(this,event,-cbs.length);this._events[event]=null;return this;}// specific handler\n\tvar cb;var i=cbs.length;while(i--){cb=cbs[i];if(cb===fn||cb.fn===fn){modifyListenerCount(this,event,-1);cbs.splice(i,1);break;}}return this;};/**\n\t * Trigger an event on self.\n\t *\n\t * @param {String|Object} event\n\t * @return {Boolean} shouldPropagate\n\t */Vue.prototype.$emit=function(event){var isSource=typeof event==='string';event=isSource?event:event.name;var cbs=this._events[event];var shouldPropagate=isSource||!cbs;if(cbs){cbs=cbs.length>1?toArray(cbs):cbs;// this is a somewhat hacky solution to the question raised\n\t// in #2102: for an inline component listener like <comp @test=\"doThis\">,\n\t// the propagation handling is somewhat broken. Therefore we\n\t// need to treat these inline callbacks differently.\n\tvar hasParentCbs=isSource&&cbs.some(function(cb){return cb._fromParent;});if(hasParentCbs){shouldPropagate=false;}var args=toArray(arguments,1);for(var i=0,l=cbs.length;i<l;i++){var cb=cbs[i];var res=cb.apply(this,args);if(res===true&&(!hasParentCbs||cb._fromParent)){shouldPropagate=true;}}}return shouldPropagate;};/**\n\t * Recursively broadcast an event to all children instances.\n\t *\n\t * @param {String|Object} event\n\t * @param {...*} additional arguments\n\t */Vue.prototype.$broadcast=function(event){var isSource=typeof event==='string';event=isSource?event:event.name;// if no child has registered for this event,\n\t// then there's no need to broadcast.\n\tif(!this._eventsCount[event])return;var children=this.$children;var args=toArray(arguments);if(isSource){// use object event to indicate non-source emit\n\t// on children\n\targs[0]={name:event,source:this};}for(var i=0,l=children.length;i<l;i++){var child=children[i];var shouldPropagate=child.$emit.apply(child,args);if(shouldPropagate){child.$broadcast.apply(child,args);}}return this;};/**\n\t * Recursively propagate an event up the parent chain.\n\t *\n\t * @param {String} event\n\t * @param {...*} additional arguments\n\t */Vue.prototype.$dispatch=function(event){var shouldPropagate=this.$emit.apply(this,arguments);if(!shouldPropagate)return;var parent=this.$parent;var args=toArray(arguments);// use object event to indicate non-source emit\n\t// on parents\n\targs[0]={name:event,source:this};while(parent){shouldPropagate=parent.$emit.apply(parent,args);parent=shouldPropagate?parent.$parent:null;}return this;};/**\n\t * Modify the listener counts on all parents.\n\t * This bookkeeping allows $broadcast to return early when\n\t * no child has listened to a certain event.\n\t *\n\t * @param {Vue} vm\n\t * @param {String} event\n\t * @param {Number} count\n\t */var hookRE=/^hook:/;function modifyListenerCount(vm,event,count){var parent=vm.$parent;// hooks do not get broadcasted so no need\n\t// to do bookkeeping for them\n\tif(!parent||!count||hookRE.test(event))return;while(parent){parent._eventsCount[event]=(parent._eventsCount[event]||0)+count;parent=parent.$parent;}}}function lifecycleAPI(Vue){/**\n\t * Set instance target element and kick off the compilation\n\t * process. The passed in `el` can be a selector string, an\n\t * existing Element, or a DocumentFragment (for block\n\t * instances).\n\t *\n\t * @param {Element|DocumentFragment|string} el\n\t * @public\n\t */Vue.prototype.$mount=function(el){if(this._isCompiled){(\"production\")!=='production'&&warn('$mount() should be called only once.',this);return;}el=query(el);if(!el){el=document.createElement('div');}this._compile(el);this._initDOMHooks();if(inDoc(this.$el)){this._callHook('attached');ready.call(this);}else{this.$once('hook:attached',ready);}return this;};/**\n\t * Mark an instance as ready.\n\t */function ready(){this._isAttached=true;this._isReady=true;this._callHook('ready');}/**\n\t * Teardown the instance, simply delegate to the internal\n\t * _destroy.\n\t *\n\t * @param {Boolean} remove\n\t * @param {Boolean} deferCleanup\n\t */Vue.prototype.$destroy=function(remove,deferCleanup){this._destroy(remove,deferCleanup);};/**\n\t * Partially compile a piece of DOM and return a\n\t * decompile function.\n\t *\n\t * @param {Element|DocumentFragment} el\n\t * @param {Vue} [host]\n\t * @param {Object} [scope]\n\t * @param {Fragment} [frag]\n\t * @return {Function}\n\t */Vue.prototype.$compile=function(el,host,scope,frag){return compile(el,this.$options,true)(this,el,host,scope,frag);};}/**\n\t * The exposed Vue constructor.\n\t *\n\t * API conventions:\n\t * - public API methods/properties are prefixed with `$`\n\t * - internal methods/properties are prefixed with `_`\n\t * - non-prefixed properties are assumed to be proxied user\n\t * data.\n\t *\n\t * @constructor\n\t * @param {Object} [options]\n\t * @public\n\t */function Vue(options){this._init(options);}// install internals\n\tinitMixin(Vue);stateMixin(Vue);eventsMixin(Vue);lifecycleMixin(Vue);miscMixin(Vue);// install instance APIs\n\tdataAPI(Vue);domAPI(Vue);eventsAPI(Vue);lifecycleAPI(Vue);var slot={priority:SLOT,params:['name'],bind:function bind(){// this was resolved during component transclusion\n\tvar name=this.params.name||'default';var content=this.vm._slotContents&&this.vm._slotContents[name];if(!content||!content.hasChildNodes()){this.fallback();}else{this.compile(content.cloneNode(true),this.vm._context,this.vm);}},compile:function compile(content,context,host){if(content&&context){if(this.el.hasChildNodes()&&content.childNodes.length===1&&content.childNodes[0].nodeType===1&&content.childNodes[0].hasAttribute('v-if')){// if the inserted slot has v-if\n\t// inject fallback content as the v-else\n\tvar elseBlock=document.createElement('template');elseBlock.setAttribute('v-else','');elseBlock.innerHTML=this.el.innerHTML;// the else block should be compiled in child scope\n\telseBlock._context=this.vm;content.appendChild(elseBlock);}var scope=host?host._scope:this._scope;this.unlink=context.$compile(content,host,scope,this._frag);}if(content){replace(this.el,content);}else{remove(this.el);}},fallback:function fallback(){this.compile(extractContent(this.el,true),this.vm);},unbind:function unbind(){if(this.unlink){this.unlink();}}};var partial={priority:PARTIAL,params:['name'],// watch changes to name for dynamic partials\n\tparamWatchers:{name:function name(value){vIf.remove.call(this);if(value){this.insert(value);}}},bind:function bind(){this.anchor=createAnchor('v-partial');replace(this.el,this.anchor);this.insert(this.params.name);},insert:function insert(id){var partial=resolveAsset(this.vm.$options,'partials',id,true);if(partial){this.factory=new FragmentFactory(this.vm,partial);vIf.insert.call(this);}},unbind:function unbind(){if(this.frag){this.frag.destroy();}}};var elementDirectives={slot:slot,partial:partial};var convertArray=vFor._postProcess;/**\n\t * Limit filter for arrays\n\t *\n\t * @param {Number} n\n\t * @param {Number} offset (Decimal expected)\n\t */function limitBy(arr,n,offset){offset=offset?parseInt(offset,10):0;n=toNumber(n);return typeof n==='number'?arr.slice(offset,offset+n):arr;}/**\n\t * Filter filter for arrays\n\t *\n\t * @param {String} search\n\t * @param {String} [delimiter]\n\t * @param {String} ...dataKeys\n\t */function filterBy(arr,search,delimiter){arr=convertArray(arr);if(search==null){return arr;}if(typeof search==='function'){return arr.filter(search);}// cast to lowercase string\n\tsearch=(''+search).toLowerCase();// allow optional `in` delimiter\n\t// because why not\n\tvar n=delimiter==='in'?3:2;// extract and flatten keys\n\tvar keys=Array.prototype.concat.apply([],toArray(arguments,n));var res=[];var item,key,val,j;for(var i=0,l=arr.length;i<l;i++){item=arr[i];val=item&&item.$value||item;j=keys.length;if(j){while(j--){key=keys[j];if(key==='$key'&&contains(item.$key,search)||contains(getPath(val,key),search)){res.push(item);break;}}}else if(contains(item,search)){res.push(item);}}return res;}/**\n\t * Filter filter for arrays\n\t *\n\t * @param {String|Array<String>|Function} ...sortKeys\n\t * @param {Number} [order]\n\t */function orderBy(arr){var _comparator=null;var sortKeys=undefined;arr=convertArray(arr);// determine order (last argument)\n\tvar args=toArray(arguments,1);var order=args[args.length-1];if(typeof order==='number'){order=order<0?-1:1;args=args.length>1?args.slice(0,-1):args;}else{order=1;}// determine sortKeys & comparator\n\tvar firstArg=args[0];if(!firstArg){return arr;}else if(typeof firstArg==='function'){// custom comparator\n\t_comparator=function comparator(a,b){return firstArg(a,b)*order;};}else{// string keys. flatten first\n\tsortKeys=Array.prototype.concat.apply([],args);_comparator=function comparator(a,b,i){i=i||0;return i>=sortKeys.length-1?baseCompare(a,b,i):baseCompare(a,b,i)||_comparator(a,b,i+1);};}function baseCompare(a,b,sortKeyIndex){var sortKey=sortKeys[sortKeyIndex];if(sortKey){if(sortKey!=='$key'){if(isObject(a)&&'$value'in a)a=a.$value;if(isObject(b)&&'$value'in b)b=b.$value;}a=isObject(a)?getPath(a,sortKey):a;b=isObject(b)?getPath(b,sortKey):b;}return a===b?0:a>b?order:-order;}// sort on a copy to avoid mutating original array\n\treturn arr.slice().sort(_comparator);}/**\n\t * String contain helper\n\t *\n\t * @param {*} val\n\t * @param {String} search\n\t */function contains(val,search){var i;if(isPlainObject(val)){var keys=Object.keys(val);i=keys.length;while(i--){if(contains(val[keys[i]],search)){return true;}}}else if(isArray(val)){i=val.length;while(i--){if(contains(val[i],search)){return true;}}}else if(val!=null){return val.toString().toLowerCase().indexOf(search)>-1;}}var digitsRE=/(\\d{3})(?=\\d)/g;// asset collections must be a plain object.\n\tvar filters={orderBy:orderBy,filterBy:filterBy,limitBy:limitBy,/**\n\t * Stringify value.\n\t *\n\t * @param {Number} indent\n\t */json:{read:function read(value,indent){return typeof value==='string'?value:JSON.stringify(value,null,arguments.length>1?indent:2);},write:function write(value){try{return JSON.parse(value);}catch(e){return value;}}},/**\n\t * 'abc' => 'Abc'\n\t */capitalize:function capitalize(value){if(!value&&value!==0)return'';value=value.toString();return value.charAt(0).toUpperCase()+value.slice(1);},/**\n\t * 'abc' => 'ABC'\n\t */uppercase:function uppercase(value){return value||value===0?value.toString().toUpperCase():'';},/**\n\t * 'AbC' => 'abc'\n\t */lowercase:function lowercase(value){return value||value===0?value.toString().toLowerCase():'';},/**\n\t * 12345 => $12,345.00\n\t *\n\t * @param {String} sign\n\t * @param {Number} decimals Decimal places\n\t */currency:function currency(value,_currency,decimals){value=parseFloat(value);if(!isFinite(value)||!value&&value!==0)return'';_currency=_currency!=null?_currency:'$';decimals=decimals!=null?decimals:2;var stringified=Math.abs(value).toFixed(decimals);var _int=decimals?stringified.slice(0,-1-decimals):stringified;var i=_int.length%3;var head=i>0?_int.slice(0,i)+(_int.length>3?',':''):'';var _float=decimals?stringified.slice(-1-decimals):'';var sign=value<0?'-':'';return sign+_currency+head+_int.slice(i).replace(digitsRE,'$1,')+_float;},/**\n\t * 'item' => 'items'\n\t *\n\t * @params\n\t * an array of strings corresponding to\n\t * the single, double, triple ... forms of the word to\n\t * be pluralized. When the number to be pluralized\n\t * exceeds the length of the args, it will use the last\n\t * entry in the array.\n\t *\n\t * e.g. ['single', 'double', 'triple', 'multiple']\n\t */pluralize:function pluralize(value){var args=toArray(arguments,1);return args.length>1?args[value%10-1]||args[args.length-1]:args[0]+(value===1?'':'s');},/**\n\t * Debounce a handler function.\n\t *\n\t * @param {Function} handler\n\t * @param {Number} delay = 300\n\t * @return {Function}\n\t */debounce:function debounce(handler,delay){if(!handler)return;if(!delay){delay=300;}return _debounce(handler,delay);}};function installGlobalAPI(Vue){/**\n\t * Vue and every constructor that extends Vue has an\n\t * associated options object, which can be accessed during\n\t * compilation steps as `this.constructor.options`.\n\t *\n\t * These can be seen as the default options of every\n\t * Vue instance.\n\t */Vue.options={directives:directives,elementDirectives:elementDirectives,filters:filters,transitions:{},components:{},partials:{},replace:true};/**\n\t * Expose useful internals\n\t */Vue.util=util;Vue.config=config;Vue.set=set;Vue['delete']=del;Vue.nextTick=nextTick;/**\n\t * The following are exposed for advanced usage / plugins\n\t */Vue.compiler=compiler;Vue.FragmentFactory=FragmentFactory;Vue.internalDirectives=internalDirectives;Vue.parsers={path:path,text:text,template:template,directive:directive,expression:expression};/**\n\t * Each instance constructor, including Vue, has a unique\n\t * cid. This enables us to create wrapped \"child\n\t * constructors\" for prototypal inheritance and cache them.\n\t */Vue.cid=0;var cid=1;/**\n\t * Class inheritance\n\t *\n\t * @param {Object} extendOptions\n\t */Vue.extend=function(extendOptions){extendOptions=extendOptions||{};var Super=this;var isFirstExtend=Super.cid===0;if(isFirstExtend&&extendOptions._Ctor){return extendOptions._Ctor;}var name=extendOptions.name||Super.options.name;if(false){if(!/^[a-zA-Z][\\w-]*$/.test(name)){warn('Invalid component name: \"'+name+'\". Component names '+'can only contain alphanumeric characaters and the hyphen.');name=null;}}var Sub=createClass(name||'VueComponent');Sub.prototype=Object.create(Super.prototype);Sub.prototype.constructor=Sub;Sub.cid=cid++;Sub.options=mergeOptions(Super.options,extendOptions);Sub['super']=Super;// allow further extension\n\tSub.extend=Super.extend;// create asset registers, so extended classes\n\t// can have their private assets too.\n\tconfig._assetTypes.forEach(function(type){Sub[type]=Super[type];});// enable recursive self-lookup\n\tif(name){Sub.options.components[name]=Sub;}// cache constructor\n\tif(isFirstExtend){extendOptions._Ctor=Sub;}return Sub;};/**\n\t * A function that returns a sub-class constructor with the\n\t * given name. This gives us much nicer output when\n\t * logging instances in the console.\n\t *\n\t * @param {String} name\n\t * @return {Function}\n\t */function createClass(name){/* eslint-disable no-new-func */return new Function('return function '+classify(name)+' (options) { this._init(options) }')();/* eslint-enable no-new-func */}/**\n\t * Plugin system\n\t *\n\t * @param {Object} plugin\n\t */Vue.use=function(plugin){/* istanbul ignore if */if(plugin.installed){return;}// additional parameters\n\tvar args=toArray(arguments,1);args.unshift(this);if(typeof plugin.install==='function'){plugin.install.apply(plugin,args);}else{plugin.apply(null,args);}plugin.installed=true;return this;};/**\n\t * Apply a global mixin by merging it into the default\n\t * options.\n\t */Vue.mixin=function(mixin){Vue.options=mergeOptions(Vue.options,mixin);};/**\n\t * Create asset registration methods with the following\n\t * signature:\n\t *\n\t * @param {String} id\n\t * @param {*} definition\n\t */config._assetTypes.forEach(function(type){Vue[type]=function(id,definition){if(!definition){return this.options[type+'s'][id];}else{/* istanbul ignore if */if(false){if(type==='component'&&(commonTagRE.test(id)||reservedTagRE.test(id))){warn('Do not use built-in or reserved HTML elements as component '+'id: '+id);}}if(type==='component'&&isPlainObject(definition)){if(!definition.name){definition.name=id;}definition=Vue.extend(definition);}this.options[type+'s'][id]=definition;return definition;}};});// expose internal transition API\n\textend(Vue.transition,transition);}installGlobalAPI(Vue);Vue.version='1.0.25';// devtools global hook\n\t/* istanbul ignore next */setTimeout(function(){if(config.devtools){if(devtools){devtools.emit('init',Vue);}else if(false){console.log('Download the Vue Devtools for a better development experience:\\n'+'https://github.com/vuejs/vue-devtools');}}},0);module.exports=Vue;\n\t/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))\n\n/***/ },\n/* 31 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/* WEBPACK VAR INJECTION */(function(global) {'use strict';var _typeof=typeof Symbol===\"function\"&&typeof Symbol.iterator===\"symbol\"?function(obj){return typeof obj;}:function(obj){return obj&&typeof Symbol===\"function\"&&obj.constructor===Symbol?\"symbol\":typeof obj;};/*!\n\t * Vue.js v2.0.0-alpha.8\n\t * (c) 2014-2016 Evan You\n\t * Released under the MIT License.\n\t */(function(global,factory){( false?'undefined':_typeof(exports))==='object'&&typeof module!=='undefined'?module.exports=factory(): true?!(__WEBPACK_AMD_DEFINE_FACTORY__ = (factory), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)):global.Vue=factory();})(undefined,function(){'use strict';/**\n\t * Convert a value to a string that is actually rendered.\n\t */function _toString(val){return val==null?'':(typeof val==='undefined'?'undefined':_typeof(val))==='object'?JSON.stringify(val,null,2):String(val);}/**\n\t * Convert a input value to a number for persistence.\n\t * If the conversion fails, return original string.\n\t */function toNumber(val){var n=parseFloat(val,10);return n||n===0?n:val;}/**\n\t * Make a map and return a function for checking if a key\n\t * is in that map.\n\t */function makeMap(str,expectsLowerCase){var map=Object.create(null);var list=str.split(',');for(var i=0;i<list.length;i++){map[list[i]]=true;}return expectsLowerCase?function(val){return map[val.toLowerCase()];}:function(val){return map[val];};}/**\n\t * Check if a tag is a built-in tag.\n\t */var isBuiltInTag=makeMap('slot,component,render,transition',true);/**\n\t * Remove an item from an array\n\t */function remove(arr,item){if(arr.length){var index=arr.indexOf(item);if(index>-1){return arr.splice(index,1);}}}/**\n\t * Check whether the object has the property.\n\t */var hasOwnProperty=Object.prototype.hasOwnProperty;function hasOwn(obj,key){return hasOwnProperty.call(obj,key);}/**\n\t * Check if value is primitive\n\t */function isPrimitive(value){return typeof value==='string'||typeof value==='number';}/**\n\t * Create a cached version of a pure function.\n\t */function cached(fn){var cache=Object.create(null);return function cachedFn(str){var hit=cache[str];return hit||(cache[str]=fn(str));};}/**\n\t * Camelize a hyphen-delmited string.\n\t */var camelizeRE=/-(\\w)/g;var camelize=cached(function(str){return str.replace(camelizeRE,function(_,c){return c?c.toUpperCase():'';});});/**\n\t * Capitalize a string.\n\t */var capitalize=cached(function(str){return str.charAt(0).toUpperCase()+str.slice(1);});/**\n\t * Hyphenate a camelCase string.\n\t */var hyphenateRE=/([a-z\\d])([A-Z])/g;var hyphenate=cached(function(str){return str.replace(hyphenateRE,'$1-$2').toLowerCase();});/**\n\t * Simple bind, faster than native\n\t */function bind(fn,ctx){return function(a){var l=arguments.length;return l?l>1?fn.apply(ctx,arguments):fn.call(ctx,a):fn.call(ctx);};}/**\n\t * Convert an Array-like object to a real Array.\n\t */function toArray(list,start){start=start||0;var i=list.length-start;var ret=new Array(i);while(i--){ret[i]=list[i+start];}return ret;}/**\n\t * Mix properties into target object.\n\t */function extend(to,_from){for(var _key in _from){to[_key]=_from[_key];}return to;}/**\n\t * Quick object check - this is primarily used to tell\n\t * Objects from primitive values when we know the value\n\t * is a JSON-compliant type.\n\t */function isObject(obj){return obj!==null&&(typeof obj==='undefined'?'undefined':_typeof(obj))==='object';}/**\n\t * Strict object type check. Only returns true\n\t * for plain JavaScript objects.\n\t */var toString=Object.prototype.toString;var OBJECT_STRING='[object Object]';function isPlainObject(obj){return toString.call(obj)===OBJECT_STRING;}/**\n\t * Merge an Array of Objects into a single Object.\n\t */function toObject(arr){var res=arr[0]||{};for(var i=1;i<arr.length;i++){if(arr[i]){extend(res,arr[i]);}}return res;}/**\n\t * Perform no operation.\n\t */function noop(){}/**\n\t * Always return false.\n\t */var no=function no(){return false;};/**\n\t * Generate a static keys string from compiler modules.\n\t */function genStaticKeys(modules){return modules.reduce(function(keys,m){return keys.concat(m.staticKeys||[]);},[]).join(',');}var config={/**\n\t * Option merge strategies (used in core/util/options)\n\t */optionMergeStrategies:Object.create(null),/**\n\t * Whether to suppress warnings.\n\t */silent:false,/**\n\t * Whether to enable devtools\n\t */devtools:\"development\"!=='production',/**\n\t * Error handler for watcher errors\n\t */errorHandler:null,/**\n\t * Ignore certain custom elements\n\t */ignoredElements:null,/**\n\t * Custom user key aliases for v-on\n\t */keyCodes:Object.create(null),/**\n\t * Check if a tag is reserved so that it cannot be registered as a\n\t * component. This is platform-dependent and may be overwritten.\n\t */isReservedTag:no,/**\n\t * Check if a tag is an unknown element.\n\t * Platform-dependent.\n\t */isUnknownElement:no,/**\n\t * Get the namespace of an element\n\t */getTagNamespace:noop,/**\n\t * Check if an attribute must be bound using property, e.g. value\n\t * Platform-dependent.\n\t */mustUseProp:no,/**\n\t * List of asset types that a component can own.\n\t */_assetTypes:['component','directive','transition','filter'],/**\n\t * List of lifecycle hooks.\n\t */_lifecycleHooks:['beforeCreate','created','beforeMount','mounted','beforeUpdate','updated','beforeDestroy','destroyed','activated','deactivated'],/**\n\t * Max circular updates allowed in a scheduler flush cycle.\n\t */_maxUpdateCount:100,/**\n\t * Server rendering?\n\t */_isServer:\"client\"==='server'};/**\n\t * Check if a string starts with $ or _\n\t */function isReserved(str){var c=(str+'').charCodeAt(0);return c===0x24||c===0x5F;}/**\n\t * Define a property.\n\t */function def(obj,key,val,enumerable){Object.defineProperty(obj,key,{value:val,enumerable:!!enumerable,writable:true,configurable:true});}/**\n\t * Parse simple path.\n\t */var bailRE=/[^\\w\\.]/;function parsePath(path){if(bailRE.test(path)){return;}else{var _ret=function(){var segments=path.split('.');return{v:function v(obj){for(var i=0;i<segments.length;i++){if(!obj)return;obj=obj[segments[i]];}return obj;}};}();if((typeof _ret==='undefined'?'undefined':_typeof(_ret))===\"object\")return _ret.v;}}/* global MutationObserver */// can we use __proto__?\n\tvar hasProto='__proto__'in{};// Browser environment sniffing\n\tvar inBrowser=typeof window!=='undefined'&&Object.prototype.toString.call(window)!=='[object Object]';// detect devtools\n\tvar devtools=inBrowser&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__;// UA sniffing for working around browser-specific quirks\n\tvar UA=inBrowser&&window.navigator.userAgent.toLowerCase();var isIos=UA&&/(iphone|ipad|ipod|ios)/i.test(UA);var iosVersionMatch=UA&&isIos&&UA.match(/os ([\\d_]+)/);var iosVersion=iosVersionMatch&&iosVersionMatch[1].split('_');// MutationObserver is unreliable in iOS 9.3 UIWebView\n\t// detecting it by checking presence of IndexedDB\n\t// ref #3027\n\tvar hasMutationObserverBug=iosVersion&&Number(iosVersion[0])>=9&&Number(iosVersion[1])>=3&&!window.indexedDB;/**\n\t * Defer a task to execute it asynchronously. Ideally this\n\t * should be executed as a microtask, so we leverage\n\t * MutationObserver if it's available, and fallback to\n\t * setTimeout(0).\n\t *\n\t * @param {Function} cb\n\t * @param {Object} ctx\n\t */var nextTick=function(){var callbacks=[];var pending=false;var timerFunc=void 0;function nextTickHandler(){pending=false;var copies=callbacks.slice(0);callbacks=[];for(var i=0;i<copies.length;i++){copies[i]();}}/* istanbul ignore else */if(typeof MutationObserver!=='undefined'&&!hasMutationObserverBug){(function(){var counter=1;var observer=new MutationObserver(nextTickHandler);var textNode=document.createTextNode(String(counter));observer.observe(textNode,{characterData:true});timerFunc=function timerFunc(){counter=(counter+1)%2;textNode.data=String(counter);};})();}else{// webpack attempts to inject a shim for setImmediate\n\t// if it is used as a global, so we have to work around that to\n\t// avoid bundling unnecessary code.\n\tvar context=inBrowser?window:typeof global!=='undefined'?global:{};timerFunc=context.setImmediate||setTimeout;}return function(cb,ctx){var func=ctx?function(){cb.call(ctx);}:cb;callbacks.push(func);if(pending)return;pending=true;timerFunc(nextTickHandler,0);};}();var _Set=void 0;/* istanbul ignore if */if(typeof Set!=='undefined'&&/native code/.test(Set.toString())){// use native Set when available.\n\t_Set=Set;}else{// a non-standard Set polyfill that only works with primitive keys.\n\t_Set=function(){function Set(){this.set=Object.create(null);}Set.prototype.has=function has(key){return this.set[key]!==undefined;};Set.prototype.add=function add(key){this.set[key]=1;};Set.prototype.clear=function clear(){this.set=Object.create(null);};return Set;}();}var hasProxy=void 0;var proxyHandlers=void 0;var initProxy=void 0;if(true){(function(){var allowedGlobals=makeMap('Infinity,undefined,NaN,isFinite,isNaN,'+'parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,'+'Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,'+'require,__webpack_require__'// for Webpack/Browserify\n\t);hasProxy=typeof Proxy!=='undefined'&&Proxy.toString().match(/native code/);proxyHandlers={has:function has(target,key){var has=key in target;var isAllowedGlobal=allowedGlobals(key);if(!has&&!isAllowedGlobal){warn('Trying to access non-existent property \"'+key+'\" while rendering. '+'Make sure to declare reactive data properties in the data option.',target);}return!isAllowedGlobal;}};initProxy=function initProxy(vm){if(hasProxy){vm._renderProxy=new Proxy(vm,proxyHandlers);}else{vm._renderProxy=vm;}};})();}var uid$2=0;/**\n\t * A dep is an observable that can have multiple\n\t * directives subscribing to it.\n\t */var Dep=function(){function Dep(){this.id=uid$2++;this.subs=[];}Dep.prototype.addSub=function addSub(sub){this.subs.push(sub);};Dep.prototype.removeSub=function removeSub(sub){remove(this.subs,sub);};Dep.prototype.depend=function depend(){if(Dep.target){Dep.target.addDep(this);}};Dep.prototype.notify=function notify(){// stablize the subscriber list first\n\tvar subs=this.subs.slice();for(var i=0,l=subs.length;i<l;i++){subs[i].update();}};return Dep;}();Dep.target=null;var targetStack=[];function pushTarget(_target){if(Dep.target)targetStack.push(Dep.target);Dep.target=_target;}function popTarget(){Dep.target=targetStack.pop();}// We have two separate queues: one for internal component re-render updates\n\t// and one for user watcher registered via $watch(). We want to guarantee\n\t// re-render updates to be called before user watchers so that when user\n\t// watchers are triggered, the DOM would already be in updated state.\n\tvar queue=[];var userQueue=[];var has={};var circular={};var waiting=false;/**\n\t * Reset the scheduler's state.\n\t */function resetSchedulerState(){queue.length=0;userQueue.length=0;has={};if(true){circular={};}waiting=false;}/**\n\t * Flush both queues and run the watchers.\n\t */function flushSchedulerQueue(){runSchedulerQueue(queue.sort(queueSorter));runSchedulerQueue(userQueue);// user watchers triggered more watchers,\n\t// keep flushing until it depletes\n\tif(queue.length){return flushSchedulerQueue();}// devtool hook\n\t/* istanbul ignore if */if(devtools&&config.devtools){devtools.emit('flush');}resetSchedulerState();}/**\n\t * Sort queue before flush.\n\t * This ensures components are updated from parent to child\n\t * so there will be no duplicate updates, e.g. a child was\n\t * pushed into the queue first and then its parent's props\n\t * changed.\n\t */function queueSorter(a,b){return a.id-b.id;}/**\n\t * Run the watchers in a single queue.\n\t */function runSchedulerQueue(queue){// do not cache length because more watchers might be pushed\n\t// as we run existing watchers\n\tfor(var i=0;i<queue.length;i++){var watcher=queue[i];var id=watcher.id;has[id]=null;watcher.run();// in dev build, check and stop circular updates.\n\tif(\"development\"!=='production'&&has[id]!=null){circular[id]=(circular[id]||0)+1;if(circular[id]>config._maxUpdateCount){warn('You may have an infinite update loop for watcher '+'with expression \"'+watcher.expression+'\"',watcher.vm);break;}}}queue.length=0;}/**\n\t * Push a watcher into the watcher queue.\n\t * Jobs with duplicate IDs will be skipped unless it's\n\t * pushed when the queue is being flushed.\n\t */function queueWatcher(watcher){var id=watcher.id;if(has[id]==null){// push watcher into appropriate queue\n\tvar q=watcher.user?userQueue:queue;has[id]=true;q.push(watcher);// queue the flush\n\tif(!waiting){waiting=true;nextTick(flushSchedulerQueue);}}}var uid$1=0;/**\n\t * A watcher parses an expression, collects dependencies,\n\t * and fires callback when the expression value changes.\n\t * This is used for both the $watch() api and directives.\n\t */var Watcher=function(){function Watcher(vm,expOrFn,cb){var options=arguments.length<=3||arguments[3]===undefined?{}:arguments[3];this.vm=vm;vm._watchers.push(this);// options\n\tthis.deep=!!options.deep;this.user=!!options.user;this.lazy=!!options.lazy;this.sync=!!options.sync;this.expression=expOrFn.toString();this.cb=cb;this.id=++uid$1;// uid for batching\n\tthis.active=true;this.dirty=this.lazy;// for lazy watchers\n\tthis.deps=[];this.newDeps=[];this.depIds=new _Set();this.newDepIds=new _Set();// parse expression for getter\n\tif(typeof expOrFn==='function'){this.getter=expOrFn;}else{this.getter=parsePath(expOrFn);if(!this.getter){this.getter=function(){};\"development\"!=='production'&&warn('Failed watching path: '+expOrFn+'Watcher only accepts simple dot-delimited paths. '+'For full control, use a function instead.',vm);}}this.value=this.lazy?undefined:this.get();}/**\n\t * Evaluate the getter, and re-collect dependencies.\n\t */Watcher.prototype.get=function get(){pushTarget(this);var value=void 0;try{value=this.getter.call(this.vm,this.vm);}catch(e){if(true){if(this.user){warn('Error when evaluating watcher with getter: '+this.expression,this.vm);}else{warn('Error during component render',this.vm);}/* istanbul ignore else */if(config.errorHandler){config.errorHandler.call(null,e,this.vm);}else{throw e;}}// return old value when evaluation fails so the current UI is preserved\n\t// if the error was somehow handled by user\n\tvalue=this.value;}// \"touch\" every property so they are all tracked as\n\t// dependencies for deep watching\n\tif(this.deep){traverse(value);}popTarget();this.cleanupDeps();return value;};/**\n\t * Add a dependency to this directive.\n\t */Watcher.prototype.addDep=function addDep(dep){var id=dep.id;if(!this.newDepIds.has(id)){this.newDepIds.add(id);this.newDeps.push(dep);if(!this.depIds.has(id)){dep.addSub(this);}}};/**\n\t * Clean up for dependency collection.\n\t */Watcher.prototype.cleanupDeps=function cleanupDeps(){var i=this.deps.length;while(i--){var dep=this.deps[i];if(!this.newDepIds.has(dep.id)){dep.removeSub(this);}}var tmp=this.depIds;this.depIds=this.newDepIds;this.newDepIds=tmp;this.newDepIds.clear();tmp=this.deps;this.deps=this.newDeps;this.newDeps=tmp;this.newDeps.length=0;};/**\n\t * Subscriber interface.\n\t * Will be called when a dependency changes.\n\t */Watcher.prototype.update=function update(){/* istanbul ignore else */if(this.lazy){this.dirty=true;}else if(this.sync){this.run();}else{queueWatcher(this);}};/**\n\t * Scheduler job interface.\n\t * Will be called by the scheduler.\n\t */Watcher.prototype.run=function run(){if(this.active){var value=this.get();if(value!==this.value||// Deep watchers and watchers on Object/Arrays should fire even\n\t// when the value is the same, because the value may\n\t// have mutated.\n\tisObject(value)||this.deep){// set new value\n\tvar oldValue=this.value;this.value=value;if(this.user){try{this.cb.call(this.vm,value,oldValue);}catch(e){\"development\"!=='production'&&warn('Error in watcher \"'+this.expression+'\"',this.vm);/* istanbul ignore else */if(config.errorHandler){config.errorHandler.call(null,e,this.vm);}else{throw e;}}}else{this.cb.call(this.vm,value,oldValue);}}}};/**\n\t * Evaluate the value of the watcher.\n\t * This only gets called for lazy watchers.\n\t */Watcher.prototype.evaluate=function evaluate(){this.value=this.get();this.dirty=false;};/**\n\t * Depend on all deps collected by this watcher.\n\t */Watcher.prototype.depend=function depend(){var i=this.deps.length;while(i--){this.deps[i].depend();}};/**\n\t * Remove self from all dependencies' subcriber list.\n\t */Watcher.prototype.teardown=function teardown(){if(this.active){// remove self from vm's watcher list\n\t// this is a somewhat expensive operation so we skip it\n\t// if the vm is being destroyed or is performing a v-for\n\t// re-render (the watcher list is then filtered by v-for).\n\tif(!this.vm._isBeingDestroyed&&!this.vm._vForRemoving){remove(this.vm._watchers,this);}var i=this.deps.length;while(i--){this.deps[i].removeSub(this);}this.active=false;}};return Watcher;}();var seenObjects=new _Set();function traverse(val,seen){var i=void 0,keys=void 0;if(!seen){seen=seenObjects;seen.clear();}var isA=Array.isArray(val);var isO=isObject(val);if((isA||isO)&&Object.isExtensible(val)){if(val.__ob__){var depId=val.__ob__.dep.id;if(seen.has(depId)){return;}else{seen.add(depId);}}if(isA){i=val.length;while(i--){traverse(val[i],seen);}}else if(isO){keys=Object.keys(val);i=keys.length;while(i--){traverse(val[keys[i]],seen);}}}}var arrayProto=Array.prototype;var arrayMethods=Object.create(arrayProto)/**\n\t * Intercept mutating methods and emit events\n\t */;['push','pop','shift','unshift','splice','sort','reverse'].forEach(function(method){// cache original method\n\tvar original=arrayProto[method];def(arrayMethods,method,function mutator(){// avoid leaking arguments:\n\t// http://jsperf.com/closure-with-arguments\n\tvar i=arguments.length;var args=new Array(i);while(i--){args[i]=arguments[i];}var result=original.apply(this,args);var ob=this.__ob__;var inserted=void 0;switch(method){case'push':inserted=args;break;case'unshift':inserted=args;break;case'splice':inserted=args.slice(2);break;}if(inserted)ob.observeArray(inserted);// notify change\n\tob.dep.notify();return result;});});var arrayKeys=Object.getOwnPropertyNames(arrayMethods);/**\n\t * By default, when a reactive property is set, the new value is\n\t * also converted to become reactive. However when passing down props,\n\t * we don't want to force conversion because the value may be a nested value\n\t * under a frozen data structure. Converting it would defeat the optimization.\n\t */var observerState={shouldConvert:true,isSettingProps:false};/**\n\t * Observer class that are attached to each observed\n\t * object. Once attached, the observer converts target\n\t * object's property keys into getter/setters that\n\t * collect dependencies and dispatches updates.\n\t */var Observer=function(){// number of vms that has this object as root $data\n\tfunction Observer(value){this.value=value;this.dep=new Dep();this.vmCount=0;def(value,'__ob__',this);if(Array.isArray(value)){var augment=hasProto?protoAugment:copyAugment;augment(value,arrayMethods,arrayKeys);this.observeArray(value);}else{this.walk(value);}}/**\n\t * Walk through each property and convert them into\n\t * getter/setters. This method should only be called when\n\t * value type is Object.\n\t */Observer.prototype.walk=function walk(obj){var val=this.value;for(var key in obj){defineReactive(val,key,obj[key]);}};/**\n\t * Observe a list of Array items.\n\t */Observer.prototype.observeArray=function observeArray(items){for(var i=0,l=items.length;i<l;i++){observe(items[i]);}};return Observer;}();// helpers\n\t/**\n\t * Augment an target Object or Array by intercepting\n\t * the prototype chain using __proto__\n\t */function protoAugment(target,src){/* eslint-disable no-proto */target.__proto__=src;/* eslint-enable no-proto */}/**\n\t * Augment an target Object or Array by defining\n\t * hidden properties.\n\t *\n\t * istanbul ignore next\n\t */function copyAugment(target,src,keys){for(var i=0,l=keys.length;i<l;i++){var key=keys[i];def(target,key,src[key]);}}/**\n\t * Attempt to create an observer instance for a value,\n\t * returns the new observer if successfully observed,\n\t * or the existing observer if the value already has one.\n\t */function observe(value){if(!isObject(value)){return;}var ob=void 0;if(hasOwn(value,'__ob__')&&value.__ob__ instanceof Observer){ob=value.__ob__;}else if(observerState.shouldConvert&&!config._isServer&&(Array.isArray(value)||isPlainObject(value))&&Object.isExtensible(value)&&!value._isVue){ob=new Observer(value);}return ob;}/**\n\t * Define a reactive property on an Object.\n\t */function defineReactive(obj,key,val,customSetter){var dep=new Dep();var property=Object.getOwnPropertyDescriptor(obj,key);if(property&&property.configurable===false){return;}// cater for pre-defined getter/setters\n\tvar getter=property&&property.get;var setter=property&&property.set;var childOb=observe(val);Object.defineProperty(obj,key,{enumerable:true,configurable:true,get:function reactiveGetter(){var value=getter?getter.call(obj):val;if(Dep.target){dep.depend();if(childOb){childOb.dep.depend();}if(Array.isArray(value)){for(var e,i=0,l=value.length;i<l;i++){e=value[i];e&&e.__ob__&&e.__ob__.dep.depend();}}}return value;},set:function reactiveSetter(newVal){var value=getter?getter.call(obj):val;if(newVal===value){return;}if(\"development\"!=='production'&&customSetter){customSetter();}if(setter){setter.call(obj,newVal);}else{val=newVal;}childOb=observe(newVal);dep.notify();}});}/**\n\t * Set a property on an object. Adds the new property and\n\t * triggers change notification if the property doesn't\n\t * already exist.\n\t */function set(obj,key,val){if(Array.isArray(obj)){obj.splice(key,1,val);return val;}if(hasOwn(obj,key)){obj[key]=val;return;}var ob=obj.__ob__;if(obj._isVue||ob&&ob.vmCount){\"development\"!=='production'&&warn('Avoid adding reactive properties to a Vue instance or its root $data '+'at runtime - delcare it upfront in the data option.');return;}if(!ob){obj[key]=val;return;}defineReactive(ob.value,key,val);ob.dep.notify();return val;}/**\n\t * Delete a property and trigger change if necessary.\n\t */function del(obj,key){var ob=obj.__ob__;if(obj._isVue||ob&&ob.vmCount){\"development\"!=='production'&&warn('Avoid deleting properties on a Vue instance or its root $data '+'- just set it to null.');return;}if(!hasOwn(obj,key)){return;}delete obj[key];if(!ob){return;}ob.dep.notify();}function initState(vm){vm._watchers=[];initProps(vm);initData(vm);initComputed(vm);initMethods(vm);initWatch(vm);}function initProps(vm){var props=vm.$options.props;var propsData=vm.$options.propsData;if(props){var keys=vm.$options._propKeys=Object.keys(props);var isRoot=!vm.$parent;// root instance props should be converted\n\tobserverState.shouldConvert=isRoot;var _loop=function _loop(i){var key=keys[i];/* istanbul ignore else */if(true){defineReactive(vm,key,validateProp(vm,key,propsData),function(){if(vm.$parent&&!observerState.isSettingProps){warn('Avoid mutating a prop directly since the value will be '+'overwritten whenever the parent component re-renders. '+'Instead, use a data or computed property based on the prop\\'s '+('value. Prop being mutated: \"'+key+'\"'),vm);}});}else{}};for(var i=0;i<keys.length;i++){_loop(i);}observerState.shouldConvert=true;}}function initData(vm){var data=vm.$options.data;data=vm._data=typeof data==='function'?data.call(vm):data||{};if(!isPlainObject(data)){data={};\"development\"!=='production'&&warn('data functions should return an object.',vm);}// proxy data on instance\n\tvar keys=Object.keys(data);var props=vm.$options.props;var i=keys.length;while(i--){if(props&&hasOwn(props,keys[i])){\"development\"!=='production'&&warn('The data property \"'+keys[i]+'\" is already declared as a prop. '+'Use prop default value instead.',vm);}else{proxy(vm,keys[i]);}}// observe data\n\tobserve(data);data.__ob__&&data.__ob__.vmCount++;}var computedSharedDefinition={enumerable:true,configurable:true,get:noop,set:noop};function initComputed(vm){var computed=vm.$options.computed;if(computed){for(var _key in computed){var userDef=computed[_key];if(typeof userDef==='function'){computedSharedDefinition.get=makeComputedGetter(userDef,vm);computedSharedDefinition.set=noop;}else{computedSharedDefinition.get=userDef.get?userDef.cache!==false?makeComputedGetter(userDef.get,vm):bind(userDef.get,vm):noop;computedSharedDefinition.set=userDef.set?bind(userDef.set,vm):noop;}Object.defineProperty(vm,_key,computedSharedDefinition);}}}function makeComputedGetter(getter,owner){var watcher=new Watcher(owner,getter,noop,{lazy:true});return function computedGetter(){if(watcher.dirty){watcher.evaluate();}if(Dep.target){watcher.depend();}return watcher.value;};}function initMethods(vm){var methods=vm.$options.methods;if(methods){for(var _key2 in methods){vm[_key2]=bind(methods[_key2],vm);}}}function initWatch(vm){var watch=vm.$options.watch;if(watch){for(var _key3 in watch){var handler=watch[_key3];if(Array.isArray(handler)){for(var i=0;i<handler.length;i++){createWatcher(vm,_key3,handler[i]);}}else{createWatcher(vm,_key3,handler);}}}}function createWatcher(vm,key,handler){var options=void 0;if(isPlainObject(handler)){options=handler;handler=handler.handler;}if(typeof handler==='string'){handler=vm[handler];}vm.$watch(key,handler,options);}function stateMixin(Vue){// flow somehow has problems with directly declared definition object\n\t// when using Object.defineProperty, so we have to procedurally build up\n\t// the object here.\n\tvar dataDef={};dataDef.get=function(){return this._data;};if(true){dataDef.set=function(newData){warn('Avoid replacing instance root $data. '+'Use nested data properties instead.',this);};}Object.defineProperty(Vue.prototype,'$data',dataDef);Vue.prototype.$watch=function(expOrFn,cb,options){var vm=this;options=options||{};options.user=true;var watcher=new Watcher(vm,expOrFn,cb,options);if(options.immediate){cb.call(vm,watcher.value);}return function unwatchFn(){watcher.teardown();};};}function proxy(vm,key){if(!isReserved(key)){Object.defineProperty(vm,key,{configurable:true,enumerable:true,get:function proxyGetter(){return vm._data[key];},set:function proxySetter(val){vm._data[key]=val;}});}}var VNode=function VNode(tag,data,children,text,elm,ns,context,host,componentOptions){this.tag=tag;this.data=data;this.children=children;this.text=text;this.elm=elm;this.ns=ns;this.context=context;this.host=host;this.key=data&&data.key;this.componentOptions=componentOptions;this.child=undefined;this.parent=undefined;this.raw=false;// apply construct hook.\n\t// this is applied during render, before patch happens.\n\t// unlike other hooks, this is applied on both client and server.\n\tvar constructHook=data&&data.hook&&data.hook.construct;if(constructHook){constructHook(this);}};var emptyVNode=function emptyVNode(){return new VNode(undefined,undefined,undefined,'');};function normalizeChildren(children,ns){// invoke children thunks.\n\t// components always receive their children as thunks so that they\n\t// can perform the actual render inside their own dependency collection cycle.\n\tif(typeof children==='function'){children=children();}if(isPrimitive(children)){return[createTextVNode(children)];}if(Array.isArray(children)){var res=[];for(var i=0,l=children.length;i<l;i++){var c=children[i];var last=res[res.length-1];// nested\n\tif(Array.isArray(c)){res.push.apply(res,normalizeChildren(c));}else if(isPrimitive(c)){if(last&&last.text){last.text+=String(c);}else{// convert primitive to vnode\n\tres.push(createTextVNode(c));}}else if(c instanceof VNode){if(c.text&&last&&last.text){last.text+=c.text;}else{// inherit parent namespace\n\tif(ns&&c.tag)c.ns=ns;res.push(c);}}}return res;}}function createTextVNode(val){return new VNode(undefined,undefined,undefined,String(val));}function updateListeners(on,oldOn,add,remove){var name=void 0,cur=void 0,old=void 0,fn=void 0,event=void 0,capture=void 0;for(name in on){cur=on[name];old=oldOn[name];if(!old){capture=name.charAt(0)==='!';event=capture?name.slice(1):name;if(Array.isArray(cur)){add(event,cur.invoker=arrInvoker(cur),capture);}else{fn=cur;cur=on[name]={};cur.fn=fn;add(event,cur.invoker=fnInvoker(cur),capture);}}else if(Array.isArray(old)){old.length=cur.length;for(var i=0;i<old.length;i++){old[i]=cur[i];}on[name]=old;}else{old.fn=cur;on[name]=old;}}for(name in oldOn){if(!on[name]){event=name.charAt(0)==='!'?name.slice(1):name;remove(event,oldOn[name].invoker);}}}function arrInvoker(arr){return function(ev){var single=arguments.length===1;for(var i=0;i<arr.length;i++){single?arr[i](ev):arr[i].apply(null,arguments);}};}function fnInvoker(o){return function(ev){var single=arguments.length===1;single?o.fn(ev):o.fn.apply(null,arguments);};}function initLifecycle(vm){var options=vm.$options;vm.$parent=options.parent;vm.$root=vm.$parent?vm.$parent.$root:vm;if(vm.$parent&&!options._abstract){vm.$parent.$children.push(vm);}vm.$children=[];vm.$refs={};vm._watcher=null;vm._inactive=false;vm._isMounted=false;vm._isDestroyed=false;vm._isBeingDestroyed=false;}function lifecycleMixin(Vue){Vue.prototype._mount=function(el,hydrating){var vm=this;vm.$el=el;if(!vm.$options.render){vm.$options.render=emptyVNode;if(true){/* istanbul ignore if */if(vm.$options.template){warn('You are using the runtime-only build of Vue where the template '+'option is not available. Either pre-compile the templates into '+'render functions, or use the compiler-included build.',vm);}else{warn('Failed to mount component: template or render function not defined.',vm);}}}callHook(vm,'beforeMount');vm._watcher=new Watcher(vm,function(){vm._update(vm._render(),hydrating);},noop);hydrating=false;// root instance, call mounted on self\n\t// mounted is called for child components in its inserted hook\n\tif(vm.$root===vm){vm._isMounted=true;callHook(vm,'mounted');}return vm;};Vue.prototype._update=function(vnode,hydrating){var vm=this;if(vm._isMounted){callHook(vm,'beforeUpdate');}var prevEl=vm.$el;if(!vm._vnode){// Vue.prototype.__patch__ is injected in entry points\n\t// based on the rendering backend used.\n\tvm.$el=vm.__patch__(vm.$el,vnode,hydrating);}else{vm.$el=vm.__patch__(vm._vnode,vnode);}vm._vnode=vnode;// update __vue__ reference\n\tif(prevEl){prevEl.__vue__=null;}if(vm.$el){vm.$el.__vue__=vm;}// update parent vnode element after patch\n\tvar parentNode=vm.$options._parentVnode;if(parentNode){parentNode.elm=vm.$el;// update parent $el if the parent is HOC\n\t// this is necessary because child is updated after parent\n\tif(vm.$parent&&parentNode===vm.$parent._vnode){vm.$parent.$el=vm.$el;}}if(vm._isMounted){callHook(vm,'updated');}};Vue.prototype._updateFromParent=function(propsData,listeners,parentVnode,renderChildren){var vm=this;vm.$options._parentVnode=parentVnode;vm.$options._renderChildren=renderChildren;// update props\n\tif(propsData&&vm.$options.props){observerState.shouldConvert=false;if(true){observerState.isSettingProps=true;}var propKeys=vm.$options._propKeys||[];for(var i=0;i<propKeys.length;i++){var key=propKeys[i];vm[key]=validateProp(vm,key,propsData);}observerState.shouldConvert=true;if(true){observerState.isSettingProps=false;}}// update listeners\n\tif(listeners){var oldListeners=vm.$options._parentListeners;vm.$options._parentListeners=listeners;vm._updateListeners(listeners,oldListeners);}};Vue.prototype.$forceUpdate=function(){var vm=this;if(vm._watcher){vm._watcher.update();}if(vm._watchers.length){for(var i=0;i<vm._watchers.length;i++){vm._watchers[i].update(true/* shallow */);}}};Vue.prototype.$destroy=function(){var vm=this;if(vm._isBeingDestroyed){return;}callHook(vm,'beforeDestroy');vm._isBeingDestroyed=true;// remove self from parent\n\tvar parent=vm.$parent;if(parent&&!parent._isBeingDestroyed&&!vm.$options._abstract){remove(parent.$children,vm);}// teardown watchers\n\tif(vm._watcher){vm._watcher.teardown();}var i=vm._watchers.length;while(i--){vm._watchers[i].teardown();}// remove reference from data ob\n\t// frozen object may not have observer.\n\tif(vm._data.__ob__){vm._data.__ob__.vmCount--;}// call the last hook...\n\tvm._isDestroyed=true;callHook(vm,'destroyed');// turn off all instance listeners.\n\tvm.$off();// remove __vue__ reference\n\tif(vm.$el){vm.$el.__vue__=null;}};}function callHook(vm,hook){vm.$emit('pre-hook:'+hook);var handlers=vm.$options[hook];if(handlers){for(var i=0,j=handlers.length;i<j;i++){handlers[i].call(vm);}}vm.$emit('hook:'+hook);}var hooks={init:init,prepatch:prepatch,insert:insert,destroy:destroy};var hooksToMerge=Object.keys(hooks);function createComponent(Ctor,data,parent,context,host,children,tag){// ensure children is a thunk\n\tif(\"development\"!=='production'&&children&&typeof children!=='function'){warn('A component\\'s children should be a function that returns the '+'children array. This allows the component to track the children '+'dependencies and optimizes re-rendering.');}if(!Ctor){return;}if(isObject(Ctor)){Ctor=Vue.extend(Ctor);}if(typeof Ctor!=='function'){if(true){warn('Invalid Component definition: '+Ctor,parent);}return;}// async component\n\tif(!Ctor.cid){if(Ctor.resolved){Ctor=Ctor.resolved;}else{Ctor=resolveAsyncComponent(Ctor,function(){// it's ok to queue this on every render because\n\t// $forceUpdate is buffered. this is only called\n\t// if the\n\tparent.$forceUpdate();});if(!Ctor){// return nothing if this is indeed an async component\n\t// wait for the callback to trigger parent update.\n\treturn;}}}data=data||{};// extract props\n\tvar propsData=extractProps(data,Ctor);// functional component\n\tif(Ctor.options.functional){return Ctor.options.render.call(null,parent.$createElement,// h\n\tpropsData||{},// props\n\tnormalizeChildren(children)// children\n\t);}// merge component management hooks onto the placeholder node\n\tmergeHooks(data);// extract listeners, since these needs to be treated as\n\t// child component listeners instead of DOM listeners\n\tvar listeners=data.on;if(listeners){delete data.on;}// return a placeholder vnode\n\tvar name=Ctor.options.name||tag;var vnode=new VNode('vue-component-'+Ctor.cid+(name?'-'+name:''),data,undefined,undefined,undefined,undefined,context,host,{Ctor:Ctor,propsData:propsData,listeners:listeners,parent:parent,tag:tag,children:children});return vnode;}function createComponentInstanceForVnode(vnode// we know it's MountedComponentVNode but flow doesn't\n\t){var vnodeComponentOptions=vnode.componentOptions;var options={_isComponent:true,parent:vnodeComponentOptions.parent,propsData:vnodeComponentOptions.propsData,_componentTag:vnodeComponentOptions.tag,_parentVnode:vnode,_parentListeners:vnodeComponentOptions.listeners,_renderChildren:vnodeComponentOptions.children};// check inline-template render functions\n\tvar inlineTemplate=vnode.data.inlineTemplate;if(inlineTemplate){options.render=inlineTemplate.render;options.staticRenderFns=inlineTemplate.staticRenderFns;}return new vnodeComponentOptions.Ctor(options);}function init(vnode,hydrating){if(!vnode.child){var child=vnode.child=createComponentInstanceForVnode(vnode);child.$mount(hydrating?vnode.elm:undefined,hydrating);}}function prepatch(oldVnode,vnode){var options=vnode.componentOptions;vnode.child=oldVnode.child;vnode.child._updateFromParent(options.propsData,// updated props\n\toptions.listeners,// updated listeners\n\tvnode,// new parent vnode\n\toptions.children// new children\n\t);}function insert(vnode){if(!vnode.child._isMounted){vnode.child._isMounted=true;callHook(vnode.child,'mounted');}if(vnode.data.keepAlive){vnode.child._inactive=false;callHook(vnode.child,'activated');}}function destroy(vnode){if(!vnode.child._isDestroyed){if(!vnode.data.keepAlive){vnode.child.$destroy();}else{vnode.child._inactive=true;callHook(vnode.child,'deactivated');}}}function resolveAsyncComponent(factory,cb){if(factory.requested){// pool callbacks\n\tfactory.pendingCallbacks.push(cb);}else{var _ret=function(){factory.requested=true;var cbs=factory.pendingCallbacks=[cb];var sync=true;factory(// resolve\n\tfunction(res){if(isObject(res)){res=Vue.extend(res);}// cache resolved\n\tfactory.resolved=res;// invoke callbacks only if this is not a synchronous resolve\n\t// (async resolves are shimmed as synchronous during SSR)\n\tif(!sync){for(var i=0,l=cbs.length;i<l;i++){cbs[i](res);}}},// reject\n\tfunction(reason){\"development\"!=='production'&&warn('Failed to resolve async component: '+factory+(reason?'\\nReason: '+reason:''));});sync=false;// return in case resolved synchronously\n\treturn{v:factory.resolved};}();if((typeof _ret==='undefined'?'undefined':_typeof(_ret))===\"object\")return _ret.v;}}function extractProps(data,Ctor){// we are only extrating raw values here.\n\t// validation and default values are handled in the child\n\t// component itself.\n\tvar propOptions=Ctor.options.props;if(!propOptions){return;}var res={};var attrs=data.attrs;var props=data.props;var staticAttrs=data.staticAttrs;if(!attrs&&!props&&!staticAttrs){return res;}for(var key in propOptions){var altKey=hyphenate(key);checkProp(res,attrs,key,altKey)||checkProp(res,props,key,altKey)||checkProp(res,staticAttrs,key,altKey);}return res;}function checkProp(res,hash,key,altKey){if(hash){if(hasOwn(hash,key)){res[key]=hash[key];delete hash[key];return true;}else if(hasOwn(hash,altKey)){res[key]=hash[altKey];delete hash[altKey];return true;}}return false;}function mergeHooks(data){if(data.hook){for(var i=0;i<hooksToMerge.length;i++){var key=hooksToMerge[i];var fromParent=data.hook[key];var ours=hooks[key];data.hook[key]=fromParent?mergeHook$1(ours,fromParent):ours;}}else{data.hook=hooks;}}function mergeHook$1(a,b){// since all hooks have at most two args, use fixed args\n\t// to avoid having to use fn.apply().\n\treturn function(_,__){a(_,__);b(_,__);};}// wrapper function for providing a more flexible interface\n\t// without getting yelled at by flow\n\tfunction createElement(tag,data,children){if(data&&(Array.isArray(data)||(typeof data==='undefined'?'undefined':_typeof(data))!=='object')){children=data;data=undefined;}return _createElement.call(this,tag,data,children);}function _createElement(tag,data,children){// make sure to expose real self instead of proxy\n\tvar context=this._self;var parent=renderState.activeInstance;var host=context!==parent?parent:undefined;if(!parent){\"development\"!=='production'&&warn('createElement cannot be called outside of component '+'render functions.');return;}if(!tag){// in case of component :is set to falsy value\n\treturn emptyVNode();}if(typeof tag==='string'){var namespace=config.getTagNamespace(tag);var Ctor=void 0;if(config.isReservedTag(tag)){return new VNode(tag,data,normalizeChildren(children,namespace),undefined,undefined,namespace,context,host);}else if(Ctor=resolveAsset(context.$options,'components',tag)){return createComponent(Ctor,data,parent,context,host,children,tag);}else{if(true){if(!namespace&&!(config.ignoredElements&&config.ignoredElements.indexOf(tag)>-1)&&config.isUnknownElement(tag)){warn('Unknown custom element: <'+tag+'> - did you '+'register the component correctly? For recursive components, '+'make sure to provide the \"name\" option.');}}return new VNode(tag,data,normalizeChildren(children,namespace),undefined,undefined,namespace,context,host);}}else{return createComponent(tag,data,parent,context,host,children);}}var renderState={activeInstance:null};function initRender(vm){vm._vnode=null;vm._staticTrees=null;vm.$slots={};// bind the public createElement fn to this instance\n\t// so that we get proper render context inside it.\n\tvm.$createElement=bind(createElement,vm);if(vm.$options.el){vm.$mount(vm.$options.el);}}function renderMixin(Vue){Vue.prototype.$nextTick=function(fn){nextTick(fn,this);};Vue.prototype._render=function(){var vm=this;// set current active instance\n\tvar prev=renderState.activeInstance;renderState.activeInstance=vm;var _vm$$options=vm.$options;var render=_vm$$options.render;var staticRenderFns=_vm$$options.staticRenderFns;var _renderChildren=_vm$$options._renderChildren;var _parentVnode=_vm$$options._parentVnode;if(staticRenderFns&&!this._staticTrees){this._staticTrees=[];}// resolve slots. becaues slots are rendered in parent scope,\n\t// we set the activeInstance to parent.\n\tif(_renderChildren){resolveSlots(vm,_renderChildren);}// render self\n\tvar vnode=render.call(vm._renderProxy,vm.$createElement);// return empty vnode in case the render function errored out\n\tif(!(vnode instanceof VNode)){if(\"development\"!=='production'&&Array.isArray(vnode)){warn('Multiple root nodes returned from render function. Render function '+'should return a single root node.',vm);}vnode=emptyVNode();}// set parent\n\tvnode.parent=_parentVnode;// restore render state\n\trenderState.activeInstance=prev;return vnode;};// shorthands used in render functions\n\tVue.prototype._h=createElement;// toString for mustaches\n\tVue.prototype._s=_toString;// number conversion\n\tVue.prototype._n=toNumber;//\n\tVue.prototype._m=function renderStatic(index){return this._staticTrees[index]||(this._staticTrees[index]=this.$options.staticRenderFns[index].call(this._renderProxy));};// filter resolution helper\n\tvar identity=function identity(_){return _;};Vue.prototype._f=function resolveFilter(id){return resolveAsset(this.$options,'filters',id,true)||identity;};// render v-for\n\tVue.prototype._l=function renderList(val,render){var ret=void 0,i=void 0,l=void 0,keys=void 0,key=void 0;if(Array.isArray(val)){ret=new Array(val.length);for(i=0,l=val.length;i<l;i++){ret[i]=render(val[i],i);}}else if(typeof val==='number'){ret=new Array(val);for(i=0;i<val;i++){ret[i]=render(i+1,i);}}else if(isObject(val)){keys=Object.keys(val);ret=new Array(keys.length);for(i=0,l=keys.length;i<l;i++){key=keys[i];ret[i]=render(val[key],key,i);}}return ret;};// apply v-bind object\n\tVue.prototype._b=function bindProps(vnode,value){if(value){if(!isObject(value)){\"development\"!=='production'&&warn('v-bind without argument expects an Object or Array value',this);}else{if(Array.isArray(value)){value=toObject(value);}var data=vnode.data;for(var key in value){var hash=config.mustUseProp(key)?data.props||(data.props={}):data.attrs||(data.attrs={});hash[key]=value[key];}}}};// expose v-on keyCodes\n\tVue.prototype._k=function getKeyCodes(key){return config.keyCodes[key];};}function resolveSlots(vm,renderChildren){if(renderChildren){var children=normalizeChildren(renderChildren)||[];var slots={};var defaultSlot=[];var name=void 0,child=void 0;for(var i=0,l=children.length;i<l;i++){child=children[i];if(name=child.data&&child.data.slot){var slot=slots[name]||(slots[name]=[]);if(child.tag==='template'){slot.push.apply(slot,child.children);}else{slot.push(child);}}else{defaultSlot.push(child);}}if(defaultSlot.length&&!(defaultSlot.length===1&&defaultSlot[0].text===' ')){slots['default']=defaultSlot;}vm.$slots=slots;}}function initEvents(vm){vm._events=Object.create(null);// init parent attached events\n\tvar listeners=vm.$options._parentListeners;var on=bind(vm.$on,vm);var off=bind(vm.$off,vm);vm._updateListeners=function(listeners,oldListeners){updateListeners(listeners,oldListeners||{},on,off);};if(listeners){vm._updateListeners(listeners);}}function eventsMixin(Vue){Vue.prototype.$on=function(event,fn){var vm=this;(vm._events[event]||(vm._events[event]=[])).push(fn);return vm;};Vue.prototype.$once=function(event,fn){var vm=this;function on(){vm.$off(event,on);fn.apply(vm,arguments);}on.fn=fn;vm.$on(event,on);return vm;};Vue.prototype.$off=function(event,fn){var vm=this;// all\n\tif(!arguments.length){vm._events=Object.create(null);return vm;}// specific event\n\tvar cbs=vm._events[event];if(!cbs){return vm;}if(arguments.length===1){vm._events[event]=null;return vm;}// specific handler\n\tvar cb=void 0;var i=cbs.length;while(i--){cb=cbs[i];if(cb===fn||cb.fn===fn){cbs.splice(i,1);break;}}return vm;};Vue.prototype.$emit=function(event){var vm=this;var cbs=vm._events[event];if(cbs){cbs=cbs.length>1?toArray(cbs):cbs;var args=toArray(arguments,1);for(var i=0,l=cbs.length;i<l;i++){cbs[i].apply(vm,args);}}return vm;};}var uid=0;function initMixin(Vue){Vue.prototype._init=function(options){var vm=this;// a uid\n\tvm._uid=uid++;// a flag to avoid this being observed\n\tvm._isVue=true;// merge options\n\tif(options&&options._isComponent){// optimize internal component instantiation\n\t// since dynamic options merging is pretty slow, and none of the\n\t// internal component options needs special treatment.\n\tinitInternalComponent(vm,options);}else{vm.$options=mergeOptions(resolveConstructorOptions(vm),options||{},vm);}/* istanbul ignore else */if(true){initProxy(vm);}else{}// expose real self\n\tvm._self=vm;initLifecycle(vm);initEvents(vm);callHook(vm,'beforeCreate');initState(vm);callHook(vm,'created');initRender(vm);};function initInternalComponent(vm,options){var opts=vm.$options=Object.create(resolveConstructorOptions(vm));// doing this because it's faster than dynamic enumeration.\n\topts.parent=options.parent;opts.propsData=options.propsData;opts._parentVnode=options._parentVnode;opts._parentListeners=options._parentListeners;opts._renderChildren=options._renderChildren;opts._componentTag=options._componentTag;if(options.render){opts.render=options.render;opts.staticRenderFns=options.staticRenderFns;}}function resolveConstructorOptions(vm){var Ctor=vm.constructor;var options=Ctor.options;if(Ctor.super){var superOptions=Ctor.super.options;var cachedSuperOptions=Ctor.superOptions;if(superOptions!==cachedSuperOptions){// super option changed\n\tCtor.superOptions=superOptions;options=Ctor.options=mergeOptions(superOptions,Ctor.extendOptions);if(options.name){options.components[options.name]=Ctor;}}}return options;}}function Vue(options){this._init(options);}initMixin(Vue);stateMixin(Vue);eventsMixin(Vue);lifecycleMixin(Vue);renderMixin(Vue);var warn=void 0;var formatComponentName=void 0;if(true){(function(){var hasConsole=typeof console!=='undefined';warn=function warn(msg,vm){if(hasConsole&&!config.silent){console.error('[Vue warn]: '+msg+(vm?formatComponentName(vm):''));}};formatComponentName=function formatComponentName(vm){if(vm.$root===vm){return' (found in root instance)';}var name=vm._isVue?vm.$options.name||vm.$options._componentTag:vm.name;return name?' (found in component: <'+hyphenate(name)+'>)':' (found in anonymous component. Use the \"name\" option for better debugging messages)';};})();}/**\n\t * Option overwriting strategies are functions that handle\n\t * how to merge a parent option value and a child option\n\t * value into the final value.\n\t */var strats=config.optionMergeStrategies;/**\n\t * Options with restrictions\n\t */if(true){strats.el=strats.propsData=function(parent,child,vm,key){if(!vm){warn('option \"'+key+'\" can only be used during instance '+'creation with the `new` keyword.');}return defaultStrat(parent,child);};strats.name=function(parent,child,vm){if(vm){warn('options \"name\" can only be used as a component definition option, '+'not during instance creation.');}return defaultStrat(parent,child);};}/**\n\t * Helper that recursively merges two data objects together.\n\t */function mergeData(to,from){var key=void 0,toVal=void 0,fromVal=void 0;for(key in from){toVal=to[key];fromVal=from[key];if(!hasOwn(to,key)){set(to,key,fromVal);}else if(isObject(toVal)&&isObject(fromVal)){mergeData(toVal,fromVal);}}return to;}/**\n\t * Data\n\t */strats.data=function(parentVal,childVal,vm){if(!vm){// in a Vue.extend merge, both should be functions\n\tif(!childVal){return parentVal;}if(typeof childVal!=='function'){\"development\"!=='production'&&warn('The \"data\" option should be a function '+'that returns a per-instance value in component '+'definitions.',vm);return parentVal;}if(!parentVal){return childVal;}// when parentVal & childVal are both present,\n\t// we need to return a function that returns the\n\t// merged result of both functions... no need to\n\t// check if parentVal is a function here because\n\t// it has to be a function to pass previous merges.\n\treturn function mergedDataFn(){return mergeData(childVal.call(this),parentVal.call(this));};}else if(parentVal||childVal){return function mergedInstanceDataFn(){// instance merge\n\tvar instanceData=typeof childVal==='function'?childVal.call(vm):childVal;var defaultData=typeof parentVal==='function'?parentVal.call(vm):undefined;if(instanceData){return mergeData(instanceData,defaultData);}else{return defaultData;}};}};/**\n\t * Hooks and param attributes are merged as arrays.\n\t */function mergeHook(parentVal,childVal){return childVal?parentVal?parentVal.concat(childVal):Array.isArray(childVal)?childVal:[childVal]:parentVal;}config._lifecycleHooks.forEach(function(hook){strats[hook]=mergeHook;});/**\n\t * Assets\n\t *\n\t * When a vm is present (instance creation), we need to do\n\t * a three-way merge between constructor options, instance\n\t * options and parent options.\n\t */function mergeAssets(parentVal,childVal){var res=Object.create(parentVal||null);return childVal?extend(res,childVal):res;}config._assetTypes.forEach(function(type){strats[type+'s']=mergeAssets;});/**\n\t * Watchers.\n\t *\n\t * Watchers hashes should not overwrite one\n\t * another, so we merge them as arrays.\n\t */strats.watch=function(parentVal,childVal){/* istanbul ignore if */if(!childVal)return parentVal;if(!parentVal)return childVal;var ret={};extend(ret,parentVal);for(var key in childVal){var parent=ret[key];var child=childVal[key];if(parent&&!Array.isArray(parent)){parent=[parent];}ret[key]=parent?parent.concat(child):[child];}return ret;};/**\n\t * Other object hashes.\n\t */strats.props=strats.methods=strats.computed=function(parentVal,childVal){if(!childVal)return parentVal;if(!parentVal)return childVal;var ret=Object.create(null);extend(ret,parentVal);extend(ret,childVal);return ret;};/**\n\t * Default strategy.\n\t */var defaultStrat=function defaultStrat(parentVal,childVal){return childVal===undefined?parentVal:childVal;};/**\n\t * Make sure component options get converted to actual\n\t * constructors.\n\t */function normalizeComponents(options){if(options.components){var components=options.components;var def=void 0;for(var key in components){var lower=key.toLowerCase();if(isBuiltInTag(lower)||config.isReservedTag(lower)){\"development\"!=='production'&&warn('Do not use built-in or reserved HTML elements as component '+'id: '+key);continue;}def=components[key];if(isPlainObject(def)){components[key]=Vue.extend(def);}}}}/**\n\t * Ensure all props option syntax are normalized into the\n\t * Object-based format.\n\t */function normalizeProps(options){var props=options.props;if(!props)return;var res={};var i=void 0,val=void 0,name=void 0;if(Array.isArray(props)){i=props.length;while(i--){val=props[i];if(typeof val==='string'){name=camelize(val);res[name]={type:null};}else if(true){warn('props must be strings when using array syntax.');}}}else if(isPlainObject(props)){for(var key in props){val=props[key];name=camelize(key);res[name]=isPlainObject(val)?val:{type:val};}}options.props=res;}/**\n\t * Normalize raw function directives into object format.\n\t */function normalizeDirectives(options){var dirs=options.directives;if(dirs){for(var key in dirs){var def=dirs[key];if(typeof def==='function'){dirs[key]={bind:def,update:def};}}}}/**\n\t * Merge two option objects into a new one.\n\t * Core utility used in both instantiation and inheritance.\n\t */function mergeOptions(parent,child,vm){normalizeComponents(child);normalizeProps(child);normalizeDirectives(child);var extendsFrom=child.extends;if(extendsFrom){parent=typeof extendsFrom==='function'?mergeOptions(parent,extendsFrom.options,vm):mergeOptions(parent,extendsFrom,vm);}if(child.mixins){for(var i=0,l=child.mixins.length;i<l;i++){var mixin=child.mixins[i];if(mixin.prototype instanceof Vue){mixin=mixin.options;}parent=mergeOptions(parent,mixin,vm);}}var options={};var key=void 0;for(key in parent){mergeField(key);}for(key in child){if(!hasOwn(parent,key)){mergeField(key);}}function mergeField(key){var strat=strats[key]||defaultStrat;options[key]=strat(parent[key],child[key],vm,key);}return options;}/**\n\t * Resolve an asset.\n\t * This function is used because child instances need access\n\t * to assets defined in its ancestor chain.\n\t */function resolveAsset(options,type,id,warnMissing){/* istanbul ignore if */if(typeof id!=='string'){return;}var assets=options[type];var res=assets[id]||// camelCase ID\n\tassets[camelize(id)]||// Pascal Case ID\n\tassets[capitalize(camelize(id))];if(\"development\"!=='production'&&warnMissing&&!res){warn('Failed to resolve '+type.slice(0,-1)+': '+id,options);}return res;}function validateProp(vm,key,propsData){/* istanbul ignore if */if(!vm.$options.props||!propsData)return;var prop=vm.$options.props[key];var absent=!hasOwn(propsData,key);var value=propsData[key];// handle boolean props\n\tif(prop.type===Boolean){if(absent&&!hasOwn(prop,'default')){value=false;}else if(value===''||value===hyphenate(key)){value=true;}}// check default value\n\tif(value===undefined){value=getPropDefaultValue(vm,prop,key);// since the default value is a fresh copy,\n\t// make sure to observe it.\n\tobserverState.shouldConvert=true;observe(value);observerState.shouldConvert=false;}if(true){assertProp(prop,key,value,vm,absent);}return value;}/**\n\t * Get the default value of a prop.\n\t */function getPropDefaultValue(vm,prop,name){// no default, return undefined\n\tif(!hasOwn(prop,'default')){return undefined;}var def=prop.default;// warn against non-factory defaults for Object & Array\n\tif(isObject(def)){\"development\"!=='production'&&warn('Invalid default value for prop \"'+name+'\": '+'Props with type Object/Array must use a factory function '+'to return the default value.',vm);}// call factory function for non-Function types\n\treturn typeof def==='function'&&prop.type!==Function?def.call(vm):def;}/**\n\t * Assert whether a prop is valid.\n\t */function assertProp(prop,name,value,vm,absent){if(prop.required&&absent){warn('Missing required prop: \"'+name+'\"',vm);return;}if(value==null&&!prop.required){return;}var type=prop.type;var valid=!type;var expectedTypes=[];if(type){if(!Array.isArray(type)){type=[type];}for(var i=0;i<type.length&&!valid;i++){var assertedType=assertType(value,type[i]);expectedTypes.push(assertedType.expectedType);valid=assertedType.valid;}}if(!valid){warn('Invalid prop: type check failed for prop \"'+name+'\".'+' Expected '+expectedTypes.map(capitalize).join(', ')+', got '+Object.prototype.toString.call(value).slice(8,-1)+'.',vm);return;}var validator=prop.validator;if(validator){if(!validator(value)){warn('Invalid prop: custom validator check failed for prop \"'+name+'\".',vm);}}}/**\n\t * Assert the type of a value\n\t */function assertType(value,type){var valid=void 0;var expectedType=void 0;if(type===String){expectedType='string';valid=(typeof value==='undefined'?'undefined':_typeof(value))===expectedType;}else if(type===Number){expectedType='number';valid=(typeof value==='undefined'?'undefined':_typeof(value))===expectedType;}else if(type===Boolean){expectedType='boolean';valid=(typeof value==='undefined'?'undefined':_typeof(value))===expectedType;}else if(type===Function){expectedType='function';valid=(typeof value==='undefined'?'undefined':_typeof(value))===expectedType;}else if(type===Object){expectedType='Object';valid=isPlainObject(value);}else if(type===Array){expectedType='Array';valid=Array.isArray(value);}else{expectedType=type.name||type.toString();valid=value instanceof type;}return{valid:valid,expectedType:expectedType};}var util=Object.freeze({defineReactive:defineReactive,_toString:_toString,toNumber:toNumber,makeMap:makeMap,isBuiltInTag:isBuiltInTag,remove:remove,hasOwn:hasOwn,isPrimitive:isPrimitive,cached:cached,camelize:camelize,capitalize:capitalize,hyphenate:hyphenate,bind:bind,toArray:toArray,extend:extend,isObject:isObject,isPlainObject:isPlainObject,toObject:toObject,noop:noop,no:no,genStaticKeys:genStaticKeys,isReserved:isReserved,def:def,parsePath:parsePath,hasProto:hasProto,inBrowser:inBrowser,devtools:devtools,UA:UA,nextTick:nextTick,get _Set(){return _Set;},mergeOptions:mergeOptions,resolveAsset:resolveAsset,get warn(){return warn;},validateProp:validateProp});function initUse(Vue){Vue.use=function(plugin){/* istanbul ignore if */if(plugin.installed){return;}// additional parameters\n\tvar args=toArray(arguments,1);args.unshift(this);if(typeof plugin.install==='function'){plugin.install.apply(plugin,args);}else{plugin.apply(null,args);}plugin.installed=true;return this;};}function initMixin$1(Vue){Vue.mixin=function(mixin){Vue.options=mergeOptions(Vue.options,mixin);};}function initExtend(Vue){/**\n\t * Each instance constructor, including Vue, has a unique\n\t * cid. This enables us to create wrapped \"child\n\t * constructors\" for prototypal inheritance and cache them.\n\t */Vue.cid=0;var cid=1;/**\n\t * Class inheritance\n\t */Vue.extend=function(extendOptions){extendOptions=extendOptions||{};var Super=this;var isFirstExtend=Super.cid===0;if(isFirstExtend&&extendOptions._Ctor){return extendOptions._Ctor;}var name=extendOptions.name||Super.options.name;if(true){if(!/^[a-zA-Z][\\w-]*$/.test(name)){warn('Invalid component name: \"'+name+'\". Component names '+'can only contain alphanumeric characaters and the hyphen.');name=null;}}var Sub=function VueComponent(options){this._init(options);};Sub.prototype=Object.create(Super.prototype);Sub.prototype.constructor=Sub;Sub.cid=cid++;Sub.options=mergeOptions(Super.options,extendOptions);Sub['super']=Super;// allow further extension\n\tSub.extend=Super.extend;// create asset registers, so extended classes\n\t// can have their private assets too.\n\tconfig._assetTypes.forEach(function(type){Sub[type]=Super[type];});// enable recursive self-lookup\n\tif(name){Sub.options.components[name]=Sub;}// keep a reference to the super options at extension time.\n\t// later at instantiation we can check if Super's options have\n\t// been updated.\n\tSub.superOptions=Super.options;Sub.extendOptions=extendOptions;// cache constructor\n\tif(isFirstExtend){extendOptions._Ctor=Sub;}return Sub;};}function initAssetRegisters(Vue){/**\n\t * Create asset registration methods.\n\t */config._assetTypes.forEach(function(type){Vue[type]=function(id,definition){if(!definition){return this.options[type+'s'][id];}else{/* istanbul ignore if */if(true){if(type==='component'&&config.isReservedTag(id)){warn('Do not use built-in or reserved HTML elements as component '+'id: '+id);}}if(type==='component'&&isPlainObject(definition)){definition.name=definition.name||id;definition=Vue.extend(definition);}this.options[type+'s'][id]=definition;return definition;}};});}var KeepAlive={name:'keep-alive',_abstract:true,props:{child:Object},created:function created(){this.cache=Object.create(null);},render:function render(){var rawChild=this.child;var realChild=getRealChild(this.child);var cid=realChild.componentOptions.Ctor.cid;if(this.cache[cid]){var child=realChild.child=this.cache[cid].child;realChild.elm=this.$el=child.$el;}else{this.cache[cid]=realChild;}realChild.data.keepAlive=true;return rawChild;},destroyed:function destroyed(){for(var key in this.cache){var vnode=this.cache[key];callHook(vnode.child,'deactivated');vnode.child.$destroy();}}};// in case the child is also an abstract component, e.g. <transition-control>\n\t// we want to recrusively retrieve the real component to be rendered\n\tfunction getRealChild(vnode){var compOptions=vnode&&vnode.componentOptions;if(compOptions&&compOptions.Ctor.options._abstract){return getRealChild(compOptions.propsData.child);}else{return vnode;}}var builtInComponents={KeepAlive:KeepAlive};function initGlobalAPI(Vue){// config\n\tvar configDef={};configDef.get=function(){return config;};if(true){configDef.set=function(){warn('Do not replace the Vue.config object, set individual fields instead.');};}Object.defineProperty(Vue,'config',configDef);Vue.util=util;Vue.set=set;Vue.delete=del;Vue.nextTick=nextTick;Vue.options=Object.create(null);config._assetTypes.forEach(function(type){Vue.options[type+'s']=Object.create(null);});extend(Vue.options.components,builtInComponents);initUse(Vue);initMixin$1(Vue);initExtend(Vue);initAssetRegisters(Vue);}initGlobalAPI(Vue);Object.defineProperty(Vue.prototype,'$isServer',{get:function get(){return config._isServer;}});Vue.version='2.0.0-alpha.8';// attributes that should be using props for binding\n\tvar mustUseProp=makeMap('value,selected,checked,muted');var isEnumeratedAttr=makeMap('contenteditable,draggable,spellcheck');var isBooleanAttr=makeMap('allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,'+'default,defaultchecked,defaultmuted,defaultselected,defer,disabled,'+'enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,'+'muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,'+'required,reversed,scoped,seamless,selected,sortable,translate,'+'truespeed,typemustmatch,visible');var isAttr=makeMap('accept,accept-charset,accesskey,action,align,alt,async,autocomplete,'+'autofocus,autoplay,autosave,bgcolor,border,buffered,challenge,charset,'+'checked,cite,class,code,codebase,color,cols,colspan,content,http-equiv,'+'name,contenteditable,contextmenu,controls,coords,data,datetime,default,'+'defer,dir,dirname,disabled,download,draggable,dropzone,enctype,method,for,'+'form,formaction,headers,<th>,height,hidden,high,href,hreflang,http-equiv,'+'icon,id,ismap,itemprop,keytype,kind,label,lang,language,list,loop,low,'+'manifest,max,maxlength,media,method,GET,POST,min,multiple,email,file,'+'muted,name,novalidate,open,optimum,pattern,ping,placeholder,poster,'+'preload,radiogroup,readonly,rel,required,reversed,rows,rowspan,sandbox,'+'scope,scoped,seamless,selected,shape,size,type,text,password,sizes,span,'+'spellcheck,src,srcdoc,srclang,srcset,start,step,style,summary,tabindex,'+'target,title,type,usemap,value,width,wrap');var xlinkNS='http://www.w3.org/1999/xlink';var isXlink=function isXlink(name){return name.charAt(5)===':'&&name.slice(0,5)==='xlink';};var getXlinkProp=function getXlinkProp(name){return isXlink(name)?name.slice(6,name.length):'';};var isFalsyAttrValue=function isFalsyAttrValue(val){return val==null||val===false;};function genClassForVnode(vnode){var data=vnode.data;// Important: check if this is a component container node\n\t// or a child component root node\n\tvar i=void 0;if((i=vnode.child)&&(i=i._vnode.data)){data=mergeClassData(i,data);}if((i=vnode.parent)&&(i=i.data)){data=mergeClassData(data,i);}return genClassFromData(data);}function mergeClassData(child,parent){return{staticClass:concat(child.staticClass,parent.staticClass),class:child.class?[child.class,parent.class]:parent.class};}function genClassFromData(data){var dynamicClass=data.class;var staticClass=data.staticClass;if(staticClass||dynamicClass){return concat(staticClass,stringifyClass(dynamicClass));}/* istanbul ignore next */return'';}function concat(a,b){return a?b?a+' '+b:a:b||'';}function stringifyClass(value){var res='';if(!value){return res;}if(typeof value==='string'){return value;}if(Array.isArray(value)){var stringified=void 0;for(var i=0,l=value.length;i<l;i++){if(value[i]){if(stringified=stringifyClass(value[i])){res+=stringified+' ';}}}return res.slice(0,-1);}if(isObject(value)){for(var key in value){if(value[key])res+=key+' ';}return res.slice(0,-1);}/* istanbul ignore next */return res;}var namespaceMap={svg:'http://www.w3.org/2000/svg',math:'http://www.w3.org/1998/Math/MathML'};var isReservedTag=makeMap('html,base,head,link,meta,style,title,'+'address,article,footer,header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,'+'div,dd,dl,dt,figcaption,figure,hr,img,li,main,ol,p,pre,ul,'+'a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,'+'s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,'+'embed,object,param,source,canvas,script,noscript,del,ins,'+'caption,col,colgroup,table,thead,tbody,td,th,tr,'+'button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,'+'output,progress,select,textarea,'+'details,dialog,menu,menuitem,summary,'+'content,element,shadow,template');var isUnaryTag=makeMap('area,base,br,col,embed,frame,hr,img,input,isindex,keygen,'+'link,meta,param,source,track,wbr',true);// Elements that you can, intentionally, leave open\n\t// (and which close themselves)\n\tvar canBeLeftOpenTag=makeMap('colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr,source',true);// HTML5 tags https://html.spec.whatwg.org/multipage/indices.html#elements-3\n\t// Phrasing Content https://html.spec.whatwg.org/multipage/dom.html#phrasing-content\n\tvar isNonPhrasingTag=makeMap('address,article,aside,base,blockquote,body,caption,col,colgroup,dd,'+'details,dialog,div,dl,dt,fieldset,figcaption,figure,footer,form,'+'h1,h2,h3,h4,h5,h6,head,header,hgroup,hr,html,legend,li,menuitem,meta,'+'optgroup,option,param,rp,rt,source,style,summary,tbody,td,tfoot,th,thead,'+'title,tr,track',true);// this map covers namespace elements that can appear as template root nodes\n\tvar isSVG=makeMap('svg,g,defs,symbol,use,image,text,circle,ellipse,'+'line,path,polygon,polyline,rect',true);function getTagNamespace(tag){if(isSVG(tag)){return'svg';}// basic support for MathML\n\t// note it doesn't support other MathML elements being component roots\n\tif(tag==='math'){return'math';}}var unknownElementCache=Object.create(null);function isUnknownElement(tag){/* istanbul ignore if */if(!inBrowser){return true;}tag=tag.toLowerCase();/* istanbul ignore if */if(unknownElementCache[tag]!=null){return unknownElementCache[tag];}var el=document.createElement(tag);if(tag.indexOf('-')>-1){// http://stackoverflow.com/a/28210364/1070244\n\treturn unknownElementCache[tag]=el.constructor===window.HTMLUnknownElement||el.constructor===window.HTMLElement;}else{return unknownElementCache[tag]=/HTMLUnknownElement/.test(el.toString());}}var UA$1=inBrowser&&window.navigator.userAgent.toLowerCase();var isIE=UA$1&&/msie|trident/.test(UA$1);var isIE9=UA$1&&UA$1.indexOf('msie 9.0')>0;var isAndroid=UA$1&&UA$1.indexOf('android')>0;/**\n\t * Query an element selector if it's not an element already.\n\t */function query(el){if(typeof el==='string'){var selector=el;el=document.querySelector(el);if(!el){\"development\"!=='production'&&warn('Cannot find element: '+selector);return document.createElement('div');}}return el;}function createElement$1(tagName){return document.createElement(tagName);}function createElementNS(namespace,tagName){return document.createElementNS(namespaceMap[namespace],tagName);}function createTextNode(text){return document.createTextNode(text);}function insertBefore(parentNode,newNode,referenceNode){parentNode.insertBefore(newNode,referenceNode);}function removeChild(node,child){node.removeChild(child);}function appendChild(node,child){node.appendChild(child);}function parentNode(node){return node.parentNode;}function nextSibling(node){return node.nextSibling;}function tagName(node){return node.tagName;}function setTextContent(node,text){node.textContent=text;}function childNodes(node){return node.childNodes;}function setAttribute(node,key,val){node.setAttribute(key,val);}var nodeOps=Object.freeze({createElement:createElement$1,createElementNS:createElementNS,createTextNode:createTextNode,insertBefore:insertBefore,removeChild:removeChild,appendChild:appendChild,parentNode:parentNode,nextSibling:nextSibling,tagName:tagName,setTextContent:setTextContent,childNodes:childNodes,setAttribute:setAttribute});var emptyData={};var emptyNode=new VNode('',emptyData,[]);var hooks$1=['create','update','postpatch','remove','destroy'];function isUndef(s){return s==null;}function isDef(s){return s!=null;}function sameVnode(vnode1,vnode2){return vnode1.key===vnode2.key&&vnode1.tag===vnode2.tag;}function createKeyToOldIdx(children,beginIdx,endIdx){var i=void 0,key=void 0;var map={};for(i=beginIdx;i<=endIdx;++i){key=children[i].key;if(isDef(key))map[key]=i;}return map;}function createPatchFunction(backend){var i=void 0,j=void 0;var cbs={};var modules=backend.modules;var nodeOps=backend.nodeOps;for(i=0;i<hooks$1.length;++i){cbs[hooks$1[i]]=[];for(j=0;j<modules.length;++j){if(modules[j][hooks$1[i]]!==undefined)cbs[hooks$1[i]].push(modules[j][hooks$1[i]]);}}function emptyNodeAt(elm){return new VNode(nodeOps.tagName(elm).toLowerCase(),{},[],undefined,elm);}function createRmCb(childElm,listeners){function remove(){if(--remove.listeners===0){removeElement(childElm);}}remove.listeners=listeners;return remove;}function removeElement(el){var parent=nodeOps.parentNode(el);nodeOps.removeChild(parent,el);}function createElm(vnode,insertedVnodeQueue){var i=void 0,elm=void 0;var data=vnode.data;if(isDef(data)){if(isDef(i=data.hook)&&isDef(i=i.init))i(vnode);// after calling the init hook, if the vnode is a child component\n\t// it should've created a child instance and mounted it. the child\n\t// component also has set the placeholder vnode's elm.\n\t// in that case we can just return the element and be done.\n\tif(isDef(i=vnode.child)){invokeCreateHooks(vnode,insertedVnodeQueue);setScope(vnode);return vnode.elm;}}var children=vnode.children;var tag=vnode.tag;if(isDef(tag)){elm=vnode.elm=vnode.ns?nodeOps.createElementNS(vnode.ns,tag):nodeOps.createElement(tag);setScope(vnode);if(Array.isArray(children)){for(i=0;i<children.length;++i){nodeOps.appendChild(elm,createElm(children[i],insertedVnodeQueue));}}else if(isPrimitive(vnode.text)){nodeOps.appendChild(elm,nodeOps.createTextNode(vnode.text));}if(isDef(data)){invokeCreateHooks(vnode,insertedVnodeQueue);}}else{elm=vnode.elm=nodeOps.createTextNode(vnode.text);}return vnode.elm;}function invokeCreateHooks(vnode,insertedVnodeQueue){for(var _i=0;_i<cbs.create.length;++_i){cbs.create[_i](emptyNode,vnode);}i=vnode.data.hook;// Reuse variable\n\tif(isDef(i)){if(i.create)i.create(emptyNode,vnode);if(i.insert)insertedVnodeQueue.push(vnode);}}// set scope id attribute for scoped CSS.\n\t// this is implemented as a special case to avoid the overhead\n\t// of going through the normal attribute patching process.\n\tfunction setScope(vnode){var i=void 0;if(isDef(i=vnode.host)&&isDef(i=i.$options._scopeId)){nodeOps.setAttribute(vnode.elm,i,'');}if(isDef(i=vnode.context)&&isDef(i=i.$options._scopeId)){nodeOps.setAttribute(vnode.elm,i,'');}}function addVnodes(parentElm,before,vnodes,startIdx,endIdx,insertedVnodeQueue){for(;startIdx<=endIdx;++startIdx){nodeOps.insertBefore(parentElm,createElm(vnodes[startIdx],insertedVnodeQueue),before);}}function invokeDestroyHook(vnode){var i=void 0,j=void 0;var data=vnode.data;if(isDef(data)){if(isDef(i=data.hook)&&isDef(i=i.destroy))i(vnode);for(i=0;i<cbs.destroy.length;++i){cbs.destroy[i](vnode);}}if(isDef(i=vnode.child)&&!data.keepAlive){invokeDestroyHook(i._vnode);}if(isDef(i=vnode.children)){for(j=0;j<vnode.children.length;++j){invokeDestroyHook(vnode.children[j]);}}}function removeVnodes(parentElm,vnodes,startIdx,endIdx){for(;startIdx<=endIdx;++startIdx){var ch=vnodes[startIdx];if(isDef(ch)){if(isDef(ch.tag)){invokeDestroyHook(ch);removeAndInvokeRemoveHook(ch);}else{// Text node\n\tnodeOps.removeChild(parentElm,ch.elm);}}}}function removeAndInvokeRemoveHook(vnode,rm){if(rm||isDef(vnode.data)){var listeners=cbs.remove.length+1;if(!rm){// directly removing\n\trm=createRmCb(vnode.elm,listeners);}else{// we have a recursively passed down rm callback\n\t// increase the listeners count\n\trm.listeners+=listeners;}// recursively invoke hooks on child component root node\n\tif(isDef(i=vnode.child)&&isDef(i=i._vnode)&&isDef(i.data)){removeAndInvokeRemoveHook(i,rm);}for(i=0;i<cbs.remove.length;++i){cbs.remove[i](vnode,rm);}if(isDef(i=vnode.data.hook)&&isDef(i=i.remove)){i(vnode,rm);}else{rm();}}else{removeElement(vnode.elm);}}function updateChildren(parentElm,oldCh,newCh,insertedVnodeQueue){var oldStartIdx=0;var newStartIdx=0;var oldEndIdx=oldCh.length-1;var oldStartVnode=oldCh[0];var oldEndVnode=oldCh[oldEndIdx];var newEndIdx=newCh.length-1;var newStartVnode=newCh[0];var newEndVnode=newCh[newEndIdx];var oldKeyToIdx=void 0,idxInOld=void 0,elmToMove=void 0,before=void 0;while(oldStartIdx<=oldEndIdx&&newStartIdx<=newEndIdx){if(isUndef(oldStartVnode)){oldStartVnode=oldCh[++oldStartIdx];// Vnode has been moved left\n\t}else if(isUndef(oldEndVnode)){oldEndVnode=oldCh[--oldEndIdx];}else if(sameVnode(oldStartVnode,newStartVnode)){patchVnode(oldStartVnode,newStartVnode,insertedVnodeQueue);oldStartVnode=oldCh[++oldStartIdx];newStartVnode=newCh[++newStartIdx];}else if(sameVnode(oldEndVnode,newEndVnode)){patchVnode(oldEndVnode,newEndVnode,insertedVnodeQueue);oldEndVnode=oldCh[--oldEndIdx];newEndVnode=newCh[--newEndIdx];}else if(sameVnode(oldStartVnode,newEndVnode)){// Vnode moved right\n\tpatchVnode(oldStartVnode,newEndVnode,insertedVnodeQueue);nodeOps.insertBefore(parentElm,oldStartVnode.elm,nodeOps.nextSibling(oldEndVnode.elm));oldStartVnode=oldCh[++oldStartIdx];newEndVnode=newCh[--newEndIdx];}else if(sameVnode(oldEndVnode,newStartVnode)){// Vnode moved left\n\tpatchVnode(oldEndVnode,newStartVnode,insertedVnodeQueue);nodeOps.insertBefore(parentElm,oldEndVnode.elm,oldStartVnode.elm);oldEndVnode=oldCh[--oldEndIdx];newStartVnode=newCh[++newStartIdx];}else{if(isUndef(oldKeyToIdx))oldKeyToIdx=createKeyToOldIdx(oldCh,oldStartIdx,oldEndIdx);idxInOld=oldKeyToIdx[newStartVnode.key];if(isUndef(idxInOld)){// New element\n\tnodeOps.insertBefore(parentElm,createElm(newStartVnode,insertedVnodeQueue),oldStartVnode.elm);newStartVnode=newCh[++newStartIdx];}else{elmToMove=oldCh[idxInOld];/* istanbul ignore if */if(\"development\"!=='production'&&!elmToMove){warn('It seems there are duplicate keys that is causing an update error. '+'Make sure each v-for item has a unique key.');}if(elmToMove.tag!==newStartVnode.tag){// same key but different element. treat as new element\n\tnodeOps.insertBefore(parentElm,createElm(newStartVnode,insertedVnodeQueue),oldStartVnode.elm);newStartVnode=newCh[++newStartIdx];}else{patchVnode(elmToMove,newStartVnode,insertedVnodeQueue);oldCh[idxInOld]=undefined;nodeOps.insertBefore(parentElm,newStartVnode.elm,oldStartVnode.elm);newStartVnode=newCh[++newStartIdx];}}}}if(oldStartIdx>oldEndIdx){before=isUndef(newCh[newEndIdx+1])?null:newCh[newEndIdx+1].elm;addVnodes(parentElm,before,newCh,newStartIdx,newEndIdx,insertedVnodeQueue);}else if(newStartIdx>newEndIdx){removeVnodes(parentElm,oldCh,oldStartIdx,oldEndIdx);}}function patchVnode(oldVnode,vnode,insertedVnodeQueue){if(oldVnode===vnode)return;var i=void 0,hook=void 0;var hasData=isDef(i=vnode.data);if(hasData){// ensure the oldVnode also has data during patch\n\toldVnode.data=oldVnode.data||emptyData;if(isDef(hook=i.hook)&&isDef(i=hook.prepatch)){i(oldVnode,vnode);}}var elm=vnode.elm=oldVnode.elm;var oldCh=oldVnode.children;var ch=vnode.children;if(hasData){for(i=0;i<cbs.update.length;++i){cbs.update[i](oldVnode,vnode);}if(isDef(hook)&&isDef(i=hook.update))i(oldVnode,vnode);}if(isUndef(vnode.text)){if(isDef(oldCh)&&isDef(ch)){if(oldCh!==ch)updateChildren(elm,oldCh,ch,insertedVnodeQueue);}else if(isDef(ch)){if(isDef(oldVnode.text))nodeOps.setTextContent(elm,'');addVnodes(elm,null,ch,0,ch.length-1,insertedVnodeQueue);}else if(isDef(oldCh)){removeVnodes(elm,oldCh,0,oldCh.length-1);}else if(isDef(oldVnode.text)){nodeOps.setTextContent(elm,'');}}else if(oldVnode.text!==vnode.text){nodeOps.setTextContent(elm,vnode.text);}if(hasData){for(i=0;i<cbs.postpatch.length;++i){cbs.postpatch[i](oldVnode,vnode);}if(isDef(hook)&&isDef(i=hook.postpatch))i(oldVnode,vnode);}}function invokeInsertHook(queue){for(var _i2=0;_i2<queue.length;++_i2){queue[_i2].data.hook.insert(queue[_i2]);}}function hydrate(elm,vnode,insertedVnodeQueue){if(true){if(!assertNodeMatch(elm,vnode)){return false;}}vnode.elm=elm;var tag=vnode.tag;var data=vnode.data;var children=vnode.children;if(isDef(data)){if(isDef(i=data.hook)&&isDef(i=i.init))i(vnode,true/* hydrating */);if(isDef(i=vnode.child)){// child component. it should have hydrated its own tree.\n\tinvokeCreateHooks(vnode,insertedVnodeQueue);return true;}}if(isDef(tag)){if(isDef(children)){var childNodes=nodeOps.childNodes(elm);for(var _i3=0;_i3<children.length;_i3++){var success=hydrate(childNodes[_i3],children[_i3],insertedVnodeQueue);if(!success){return false;}}}if(isDef(data)){invokeCreateHooks(vnode,insertedVnodeQueue);}}return true;}function assertNodeMatch(node,vnode){if(vnode.tag){if(vnode.tag.indexOf('vue-component')===0){return true;}else{var childNodes=nodeOps.childNodes(node);return vnode.tag===nodeOps.tagName(node).toLowerCase()&&(vnode.children?vnode.children.length===childNodes.length:childNodes.length===0);}}else{return _toString(vnode.text)===node.data;}}return function patch(oldVnode,vnode,hydrating){var elm=void 0,parent=void 0;var insertedVnodeQueue=[];if(!oldVnode){// empty mount, create new root element\n\tcreateElm(vnode,insertedVnodeQueue);}else{var isRealElement=isDef(oldVnode.nodeType);if(!isRealElement&&sameVnode(oldVnode,vnode)){patchVnode(oldVnode,vnode,insertedVnodeQueue);}else{if(isRealElement){// mounting to a real element\n\t// check if this is server-rendered content and if we can perform\n\t// a successful hydration.\n\tif(oldVnode.hasAttribute('server-rendered')){oldVnode.removeAttribute('server-rendered');hydrating=true;}if(hydrating){if(hydrate(oldVnode,vnode,insertedVnodeQueue)){invokeInsertHook(insertedVnodeQueue);return oldVnode;}else if(true){warn('The client-side rendered virtual DOM tree is not matching '+'server-rendered content. Bailing hydration and performing '+'full client-side render.');}}// either not server-rendered, or hydration failed.\n\t// create an empty node and replace it\n\toldVnode=emptyNodeAt(oldVnode);}elm=oldVnode.elm;parent=nodeOps.parentNode(elm);createElm(vnode,insertedVnodeQueue);if(parent!==null){nodeOps.insertBefore(parent,vnode.elm,nodeOps.nextSibling(elm));removeVnodes(parent,[oldVnode],0,0);}else if(isDef(oldVnode.tag)){invokeDestroyHook(oldVnode);}}}invokeInsertHook(insertedVnodeQueue);return vnode.elm;};}var directives={create:function bindDirectives(oldVnode,vnode){applyDirectives(oldVnode,vnode,'bind');},update:function updateDirectives(oldVnode,vnode){applyDirectives(oldVnode,vnode,'update');},postpatch:function postupdateDirectives(oldVnode,vnode){applyDirectives(oldVnode,vnode,'postupdate');},destroy:function unbindDirectives(vnode){applyDirectives(vnode,vnode,'unbind');}};function applyDirectives(oldVnode,vnode,hook){var dirs=vnode.data.directives;if(dirs){var oldDirs=oldVnode.data.directives;var isUpdate=hook==='update';for(var i=0;i<dirs.length;i++){var dir=dirs[i];var def=resolveAsset(vnode.context.$options,'directives',dir.name,true);var fn=def&&def[hook];if(fn){// only call update if value has changed\n\tif(isUpdate&&oldDirs){var oldValue=dir.oldValue=oldDirs[i].value;if(oldValue===dir.value){continue;}}fn(vnode.elm,dir,vnode,oldVnode);}}}}var ref={create:function create(_,vnode){registerRef(vnode);},update:function update(oldVnode,vnode){if(oldVnode.data.ref!==vnode.data.ref){registerRef(oldVnode,true);registerRef(vnode);}},destroy:function destroy(vnode){registerRef(vnode,true);}};function registerRef(vnode,isRemoval){var key=vnode.data.ref;if(!key)return;var vm=vnode.context;var ref=vnode.child||vnode.elm;var refs=vm.$refs;if(isRemoval){if(Array.isArray(refs[key])){remove(refs[key],ref);}else if(refs[key]===ref){refs[key]=undefined;}}else{if(vnode.data.refInFor){if(Array.isArray(refs[key])){refs[key].push(ref);}else{refs[key]=[ref];}}else{refs[key]=ref;}}}var baseModules=[ref,directives];function updateAttrs(oldVnode,vnode){if(!oldVnode.data.attrs&&!vnode.data.attrs){return;}var key=void 0,cur=void 0,old=void 0;var elm=vnode.elm;var oldAttrs=oldVnode.data.attrs||{};var attrs=vnode.data.attrs||{};for(key in attrs){cur=attrs[key];old=oldAttrs[key];if(old!==cur){setAttr(elm,key,cur);}}for(key in oldAttrs){if(attrs[key]==null){if(isXlink(key)){elm.removeAttributeNS(xlinkNS,getXlinkProp(key));}else if(!isEnumeratedAttr(key)){elm.removeAttribute(key);}}}}function setAttr(el,key,value){if(isBooleanAttr(key)){// set attribute for blank value\n\t// e.g. <option disabled>Select one</option>\n\tif(isFalsyAttrValue(value)){el.removeAttribute(key);}else{el.setAttribute(key,key);}}else if(isEnumeratedAttr(key)){el.setAttribute(key,isFalsyAttrValue(value)||value==='false'?'false':'true');}else if(isXlink(key)){if(isFalsyAttrValue(value)){el.removeAttributeNS(xlinkNS,getXlinkProp(key));}else{el.setAttributeNS(xlinkNS,key,value);}}else{if(isFalsyAttrValue(value)){el.removeAttribute(key);}else{el.setAttribute(key,value);}}}var attrs={create:function create(_,vnode){var attrs=vnode.data.staticAttrs;if(attrs){for(var key in attrs){setAttr(vnode.elm,key,attrs[key]);}}updateAttrs(_,vnode);},update:updateAttrs};function updateClass(oldVnode,vnode){var el=vnode.elm;var data=vnode.data;if(!data.staticClass&&!data.class){return;}var cls=genClassForVnode(vnode);// handle transition classes\n\tvar transitionClass=el._transitionClasses;if(transitionClass){cls=concat(cls,stringifyClass(transitionClass));}// set the class\n\tif(cls!==el._prevClass){el.setAttribute('class',cls);el._prevClass=cls;}}var klass={create:updateClass,update:updateClass};function updateDOMListeners(oldVnode,vnode){if(!oldVnode.data.on&&!vnode.data.on){return;}var on=vnode.data.on||{};var oldOn=oldVnode.data.on||{};var add=vnode.elm._v_add||(vnode.elm._v_add=function(event,handler,capture){vnode.elm.addEventListener(event,handler,capture);});var remove=vnode.elm._v_remove||(vnode.elm._v_remove=function(event,handler){vnode.elm.removeEventListener(event,handler);});updateListeners(on,oldOn,add,remove);}var events={create:updateDOMListeners,update:updateDOMListeners};function updateProps(oldVnode,vnode){if(!oldVnode.data.props&&!vnode.data.props){return;}var key=void 0,cur=void 0;var elm=vnode.elm;var oldProps=oldVnode.data.props||{};var props=vnode.data.props||{};for(key in oldProps){if(props[key]==null){elm[key]=undefined;}}for(key in props){cur=props[key];if(key==='value'){// store value as _value as well since\n\t// non-string values will be stringified\n\telm._value=cur;// avoid resetting cursor position when value is the same\n\tif(elm.value!=cur){// eslint-disable-line\n\telm.value=cur;}}else{elm[key]=cur;}}}var props={create:updateProps,update:updateProps};var prefixes=['Webkit','Moz','ms'];var testEl=void 0;var normalize=cached(function(prop){testEl=testEl||document.createElement('div');prop=camelize(prop);if(prop!=='filter'&&prop in testEl.style){return prop;}var upper=prop.charAt(0).toUpperCase()+prop.slice(1);for(var i=0;i<prefixes.length;i++){var prefixed=prefixes[i]+upper;if(prefixed in testEl.style){return prefixed;}}});function updateStyle(oldVnode,vnode){if(!oldVnode.data.style&&!vnode.data.style){return;}var cur=void 0,name=void 0;var elm=vnode.elm;var oldStyle=oldVnode.data.style||{};var style=vnode.data.style||{};// handle array syntax\n\tif(Array.isArray(style)){style=vnode.data.style=toObject(style);}for(name in oldStyle){if(!style[name]){elm.style[normalize(name)]='';}}for(name in style){cur=style[name];if(cur!==oldStyle[name]){// ie9 setting to null has no effect, must use empty string\n\telm.style[normalize(name)]=cur||'';}}// clone the style for future updates,\n\t// in case the user mutates the style object in-place.\n\tvnode.data.style=extend({},style);}var style={create:updateStyle,update:updateStyle};/**\n\t * Add class with compatibility for SVG since classList is not supported on\n\t * SVG elements in IE\n\t */function addClass(el,cls){/* istanbul ignore else */if(el.classList){if(cls.indexOf(' ')>-1){cls.split(/\\s+/).forEach(function(c){return el.classList.add(c);});}else{el.classList.add(cls);}}else{var cur=' '+el.getAttribute('class')+' ';if(cur.indexOf(' '+cls+' ')<0){el.setAttribute('class',(cur+cls).trim());}}}/**\n\t * Remove class with compatibility for SVG since classList is not supported on\n\t * SVG elements in IE\n\t */function removeClass(el,cls){/* istanbul ignore else */if(el.classList){if(cls.indexOf(' ')>-1){cls.split(/\\s+/).forEach(function(c){return el.classList.remove(c);});}else{el.classList.remove(cls);}}else{var cur=' '+el.getAttribute('class')+' ';var tar=' '+cls+' ';while(cur.indexOf(tar)>=0){cur=cur.replace(tar,' ');}el.setAttribute('class',cur.trim());}}var hasTransition=inBrowser&&!isIE9;var TRANSITION='transition';var ANIMATION='animation';// Transition property/event sniffing\n\tvar transitionProp='transition';var transitionEndEvent='transitionend';var animationProp='animation';var animationEndEvent='animationend';if(hasTransition){/* istanbul ignore if */if(window.ontransitionend===undefined&&window.onwebkittransitionend!==undefined){transitionProp='WebkitTransition';transitionEndEvent='webkitTransitionEnd';}if(window.onanimationend===undefined&&window.onwebkitanimationend!==undefined){animationProp='WebkitAnimation';animationEndEvent='webkitAnimationEnd';}}var raf=inBrowser&&window.requestAnimationFrame||setTimeout;function nextFrame(fn){raf(function(){raf(fn);});}function enter(vnode){var el=vnode.elm;var vm=vnode.context;// call leave callback now\n\tif(el._leaveCb){el._leaveCb.cancelled=true;el._leaveCb();}var data=vnode.data.transition;if(!data){return;}var _resolveTransition=resolveTransition(data,vnode.context);var css=_resolveTransition.css;var appear=_resolveTransition.appear;var enterClass=_resolveTransition.enterClass;var enterActiveClass=_resolveTransition.enterActiveClass;var appearClass=_resolveTransition.appearClass;var appearActiveClass=_resolveTransition.appearActiveClass;var beforeEnter=_resolveTransition.beforeEnter;var onEnter=_resolveTransition.onEnter;var afterEnter=_resolveTransition.afterEnter;var enterCancelled=_resolveTransition.enterCancelled;var beforeAppear=_resolveTransition.beforeAppear;var onAppear=_resolveTransition.onAppear;var afterAppear=_resolveTransition.afterAppear;var appearCancelled=_resolveTransition.appearCancelled;var isAppear=!vnode.context.$root._isMounted;if(isAppear&&!appear&&appear!==''){return;}var startClass=isAppear?appearClass:enterClass;var activeClass=isAppear?appearActiveClass:enterActiveClass;var beforeEnterHook=isAppear?beforeAppear||beforeEnter:beforeEnter;var enterHook=isAppear?onAppear||onEnter:onEnter;var afterEnterHook=isAppear?afterAppear||afterEnter:afterEnter;var enterCancelledHook=isAppear?appearCancelled||enterCancelled:enterCancelled;var expectsCSS=css!==false;var userWantsControl=enterHook&&enterHook.length>2;var cb=el._enterCb=once(function(){if(expectsCSS){removeTransitionClass(el,activeClass);}if(cb.cancelled){if(expectsCSS){removeTransitionClass(el,startClass);}enterCancelledHook&&enterCancelledHook(el,vm);}else{afterEnterHook&&afterEnterHook(el,vm);}el._enterCb=null;});beforeEnterHook&&beforeEnterHook(el,vm);if(expectsCSS){addTransitionClass(el,startClass);addTransitionClass(el,activeClass);nextFrame(function(){removeTransitionClass(el,startClass);if(!cb.cancelled&&!userWantsControl){whenTransitionEnds(el,cb);}});}enterHook&&enterHook(el,vm,cb);if(!expectsCSS&&!userWantsControl){cb();}}function leave(vnode,rm){var el=vnode.elm;var vm=vnode.context;// call enter callback now\n\tif(el._enterCb){el._enterCb.cancelled=true;el._enterCb();}var data=vnode.data.transition;if(!data){return rm();}var _resolveTransition2=resolveTransition(data,vnode.context);var css=_resolveTransition2.css;var leaveClass=_resolveTransition2.leaveClass;var leaveActiveClass=_resolveTransition2.leaveActiveClass;var beforeLeave=_resolveTransition2.beforeLeave;var onLeave=_resolveTransition2.onLeave;var afterLeave=_resolveTransition2.afterLeave;var leaveCancelled=_resolveTransition2.leaveCancelled;var delayLeave=_resolveTransition2.delayLeave;var expectsCSS=css!==false;var userWantsControl=onLeave&&onLeave.length>2;var cb=el._leaveCb=once(function(){if(expectsCSS){removeTransitionClass(el,leaveActiveClass);}if(cb.cancelled){if(expectsCSS){removeTransitionClass(el,leaveClass);}leaveCancelled&&leaveCancelled(el,vm);}else{rm();afterLeave&&afterLeave(el,vm);}el._leaveCb=null;});if(delayLeave){delayLeave(performLeave);}else{performLeave();}function performLeave(){beforeLeave&&beforeLeave(el,vm);if(expectsCSS){addTransitionClass(el,leaveClass);addTransitionClass(el,leaveActiveClass);nextFrame(function(){removeTransitionClass(el,leaveClass);if(!cb.cancelled&&!userWantsControl){whenTransitionEnds(el,cb);}});}onLeave&&onLeave(el,vm,cb);if(!expectsCSS&&!userWantsControl){cb();}}}function resolveTransition(id,context){var def=void 0;if(id&&typeof id==='string'){def=resolveAsset(context.$options,'transitions',id);return def?ensureTransitionClasses(def.name||id,def):autoCssTransition(id);}else if((typeof id==='undefined'?'undefined':_typeof(id))==='object'){// inline transition object\n\tif(id.name){def=resolveAsset(context.$options,'transitions',id.name);}def=def?extend(ensureTransitionClasses(id.name,def),id):ensureTransitionClasses(id.name,id);// extra hooks to be merged\n\t// added by <transition-control>\n\tif(id.hooks){for(var key in id.hooks){mergeHook$2(def,key,id.hooks[key]);}}return def;}else{return autoCssTransition('v');}}function ensureTransitionClasses(name,def){name=name||'v';var res={};if(def.css!==false){extend(res,autoCssTransition(name));}extend(res,def);return res;}var autoCssTransition=cached(function(name){return{enterClass:name+'-enter',leaveClass:name+'-leave',appearClass:name+'-enter',enterActiveClass:name+'-enter-active',leaveActiveClass:name+'-leave-active',appearActiveClass:name+'-enter-active'};});function mergeHook$2(def,key,hook){var oldHook=def[key];if(oldHook){def[key]=function(){oldHook.apply(this,arguments);hook();};}else{def[key]=hook;}}function addTransitionClass(el,cls){(el._transitionClasses||(el._transitionClasses=[])).push(cls);addClass(el,cls);}function removeTransitionClass(el,cls){remove(el._transitionClasses,cls);removeClass(el,cls);}function whenTransitionEnds(el,cb){var _getTransitionInfo=getTransitionInfo(el);var type=_getTransitionInfo.type;var timeout=_getTransitionInfo.timeout;var propCount=_getTransitionInfo.propCount;if(!type)return cb();var event=type===TRANSITION?transitionEndEvent:animationEndEvent;var ended=0;var end=function end(){el.removeEventListener(event,onEnd);cb();};var onEnd=function onEnd(){if(++ended>=propCount){end();}};setTimeout(function(){if(ended<propCount){end();}},timeout+1);el.addEventListener(event,onEnd);}function getTransitionInfo(el){var styles=window.getComputedStyle(el);// 1. determine the maximum duration (timeout)\n\tvar transitioneDelays=styles[transitionProp+'Delay'].split(', ');var transitionDurations=styles[transitionProp+'Duration'].split(', ');var animationDelays=styles[animationProp+'Delay'].split(', ');var animationDurations=styles[animationProp+'Duration'].split(', ');var transitionTimeout=getTimeout(transitioneDelays,transitionDurations);var animationTimeout=getTimeout(animationDelays,animationDurations);var timeout=Math.max(transitionTimeout,animationTimeout);var type=timeout>0?transitionTimeout>animationTimeout?TRANSITION:ANIMATION:null;var propCount=type?type===TRANSITION?transitionDurations.length:animationDurations.length:0;return{type:type,timeout:timeout,propCount:propCount};}function getTimeout(delays,durations){return Math.max.apply(null,durations.map(function(d,i){return toMs(d)+toMs(delays[i]);}));}function toMs(s){return Number(s.slice(0,-1))*1000;}function once(fn){var called=false;return function(){if(!called){called=true;fn();}};}function shouldSkipTransition(vnode){return!!(// if this is a component root node and the compoennt's\n\t// parent container node also has transition, skip.\n\tvnode.parent&&vnode.parent.data.transition||// if the element has v-show, let the runtime directive\n\t// call the hooks instead\n\tvnode.data.show);}var transition=hasTransition?{create:function create(_,vnode){if(!shouldSkipTransition(vnode)){enter(vnode);}},remove:function remove(vnode,rm){if(!shouldSkipTransition(vnode)){leave(vnode,rm);}else{rm();}}}:{};var platformModules=[attrs,klass,events,props,style,transition];// the directive module should be applied last, after all\n\t// built-in modules have been applied.\n\tvar modules=platformModules.concat(baseModules);var patch=createPatchFunction({nodeOps:nodeOps,modules:modules});var modelableTagRE=/^input|select|textarea|vue-component-[0-9]+(-[0-9a-zA-Z_\\-]*)?$/;/* istanbul ignore if */if(isIE9){// http://www.matts411.com/post/internet-explorer-9-oninput/\n\tdocument.addEventListener('selectionchange',function(){var el=document.activeElement;if(el&&el.vmodel){trigger(el,'input');}});}var model={bind:function bind(el,binding,vnode){if(true){if(!modelableTagRE.test(vnode.tag)){warn('v-model is not supported on element type: <'+vnode.tag+'>. '+'If you are working with contenteditable, it\\'s recommended to '+'wrap a library dedicated for that purpose inside a custom component.',vnode.context);}}if(vnode.tag==='select'){setSelected(el,binding.value);}else{if(!isAndroid){el.addEventListener('compositionstart',onCompositionStart);el.addEventListener('compositionend',onCompositionEnd);}/* istanbul ignore if */if(isIE9){el.vmodel=true;}}},postupdate:function postupdate(el,binding,vnode){var val=binding.value;if(vnode.tag==='select'){setSelected(el,val);// in case the options rendered by v-for have changed,\n\t// it's possible that the value is out-of-sync with the rendered options.\n\t// detect such cases and filter out values that no longer has a matchig\n\t// option in the DOM.\n\tvar needReset=el.multiple?val.some(function(v){return hasNoMatchingOption(v,el.options);}):hasNoMatchingOption(val,el.options);if(needReset){trigger(el,'change');}}}};function setSelected(el,value){var isMultiple=el.multiple;if(!isMultiple){el.selectedIndex=-1;}for(var i=0,l=el.options.length;i<l;i++){var option=el.options[i];if(isMultiple){option.selected=value.indexOf(getValue(option))>-1;}else{if(getValue(option)===value){el.selectedIndex=i;break;}}}}function hasNoMatchingOption(value,options){for(var i=0,l=options.length;i<l;i++){if(getValue(options[i])===value){return false;}}return true;}function getValue(option){return'_value'in option?option._value:option.value||option.text;}function onCompositionStart(e){e.target.composing=true;}function onCompositionEnd(e){e.target.composing=false;trigger(e.target,'input');}function trigger(el,type){var e=document.createEvent('HTMLEvents');e.initEvent(type,true,true);el.dispatchEvent(e);}var show={bind:function bind(el,_ref,vnode){var value=_ref.value;var transition=getTransition(vnode);if(value&&transition&&transition.appear&&!isIE9){enter(vnode);}el.style.display=value?'':'none';},update:function update(el,_ref2,vnode){var value=_ref2.value;var transition=getTransition(vnode);if(transition&&!isIE9){if(value){enter(vnode);el.style.display='';}else{leave(vnode,function(){el.style.display='none';});}}else{el.style.display=value?'':'none';}}};function getTransition(vnode){var parent=vnode.parent;return parent&&parent.data.transition!=null?parent.data.transition:vnode.data.transition;}var platformDirectives={model:model,show:show};var TransitionControl={name:'transition-control',_abstract:true,props:{child:Object,mode:{validator:function validator(val){/* istanbul ignore if */if(val&&val!=='out-in'&&val!=='in-out'){warn('transition-mode must be either \"out-in\" or \"in-out\".');return false;}return true;}}},render:function render(){var _this=this;var oldChild=this._vnode;var newChild=this.child;if(oldChild&&oldChild.data&&(oldChild.tag!==newChild.tag||oldChild.key!==newChild.key)){if(this.mode==='out-in'){// return empty node\n\t// and queue an update when the leave finishes\n\treturn addHook(oldChild,{afterLeave:function afterLeave(){_this.$forceUpdate();}});}else if(this.mode==='in-out'){(function(){var delayedLeave=void 0;var performLeave=function performLeave(){delayedLeave();};addHook(newChild,{afterEnter:performLeave,enterCancelled:performLeave});addHook(oldChild,{delayLeave:function delayLeave(leave){delayedLeave=leave;}});})();}}return newChild;}};function addHook(vnode,hooks){/* istanbul ignore if */if(!vnode.data||!vnode.data.transition){return;}var trans=vnode.data.transition;/* istanbul ignore else */if(typeof trans==='string'){trans=vnode.data.transition={name:trans};}else if((typeof trans==='undefined'?'undefined':_typeof(trans))!=='object'){trans=vnode.data.transition={name:'v'};}trans.hooks=hooks;}var platformComponents={TransitionControl:TransitionControl};// install platform specific utils\n\tVue.config.isUnknownElement=isUnknownElement;Vue.config.isReservedTag=isReservedTag;Vue.config.getTagNamespace=getTagNamespace;Vue.config.mustUseProp=mustUseProp;// install platform runtime directives & components\n\textend(Vue.options.directives,platformDirectives);extend(Vue.options.components,platformComponents);// install platform patch function\n\tVue.prototype.__patch__=config._isServer?noop:patch;// wrap mount\n\tVue.prototype.$mount=function(el,hydrating){el=el&&!config._isServer?query(el):undefined;return this._mount(el,hydrating);};// devtools global hook\n\t/* istanbul ignore next */setTimeout(function(){if(config.devtools){if(devtools){devtools.emit('init',Vue);}else if(\"development\"!=='production'&&inBrowser&&/Chrome\\/\\d+/.test(window.navigator.userAgent)){console.log('Download the Vue Devtools for a better development experience:\\n'+'https://github.com/vuejs/vue-devtools');}}},0);var decoder=document.createElement('div');function decodeHTML(html){decoder.innerHTML=html;return decoder.textContent;}// Regular Expressions for parsing tags and attributes\n\tvar singleAttrIdentifier=/([^\\s\"'<>\\/=]+)/;var singleAttrAssign=/=/;var singleAttrAssigns=[singleAttrAssign];var singleAttrValues=[// attr value double quotes\n\t/\"([^\"]*)\"+/.source,// attr value, single quotes\n\t/'([^']*)'+/.source,// attr value, no quotes\n\t/([^\\s\"'=<>`]+)/.source];// could use https://www.w3.org/TR/1999/REC-xml-names-19990114/#NT-QName\n\t// but for Vue templates we can enforce a simple charset\n\tvar ncname='[a-zA-Z_][\\\\w\\\\-\\\\.]*';var qnameCapture='((?:'+ncname+'\\\\:)?'+ncname+')';var startTagOpen=new RegExp('^<'+qnameCapture);var startTagClose=/^\\s*(\\/?)>/;var endTag=new RegExp('^<\\\\/'+qnameCapture+'[^>]*>');var doctype=/^<!DOCTYPE [^>]+>/i;var IS_REGEX_CAPTURING_BROKEN=false;'x'.replace(/x(.)?/g,function(m,g){IS_REGEX_CAPTURING_BROKEN=g==='';});// Special Elements (can contain anything)\n\tvar isSpecialTag=makeMap('script,style',true);var reCache={};function attrForHandler(handler){var pattern=singleAttrIdentifier.source+'(?:\\\\s*('+joinSingleAttrAssigns(handler)+')'+'\\\\s*(?:'+singleAttrValues.join('|')+'))?';return new RegExp('^\\\\s*'+pattern);}function joinSingleAttrAssigns(handler){return singleAttrAssigns.map(function(assign){return'(?:'+assign.source+')';}).join('|');}function parseHTML(html,handler){var stack=[];var attribute=attrForHandler(handler);var expectHTML=handler.expectHTML;var isUnaryTag=handler.isUnaryTag||no;var index=0;var last=void 0,lastTag=void 0;while(html){last=html;// Make sure we're not in a script or style element\n\tif(!lastTag||!isSpecialTag(lastTag)){var textEnd=html.indexOf('<');if(textEnd===0){// Comment:\n\tif(/^<!--/.test(html)){var commentEnd=html.indexOf('-->');if(commentEnd>=0){advance(commentEnd+3);continue;}}// http://en.wikipedia.org/wiki/Conditional_comment#Downlevel-revealed_conditional_comment\n\tif(/^<!\\[/.test(html)){var conditionalEnd=html.indexOf(']>');if(conditionalEnd>=0){advance(conditionalEnd+2);continue;}}// Doctype:\n\tvar doctypeMatch=html.match(doctype);if(doctypeMatch){if(handler.doctype){handler.doctype(doctypeMatch[0]);}advance(doctypeMatch[0].length);continue;}// End tag:\n\tvar endTagMatch=html.match(endTag);if(endTagMatch){var curIndex=index;advance(endTagMatch[0].length);parseEndTag(endTagMatch[0],endTagMatch[1],curIndex,index);continue;}// Start tag:\n\tvar startTagMatch=parseStartTag();if(startTagMatch){handleStartTag(startTagMatch);continue;}}var text=void 0;if(textEnd>=0){text=html.substring(0,textEnd);advance(textEnd);}else{text=html;html='';}if(handler.chars){handler.chars(text);}}else{(function(){var stackedTag=lastTag.toLowerCase();var reStackedTag=reCache[stackedTag]||(reCache[stackedTag]=new RegExp('([\\\\s\\\\S]*?)(</'+stackedTag+'[^>]*>)','i'));var endTagLength=0;var rest=html.replace(reStackedTag,function(all,text,endTag){endTagLength=endTag.length;if(stackedTag!=='script'&&stackedTag!=='style'&&stackedTag!=='noscript'){text=text.replace(/<!--([\\s\\S]*?)-->/g,'$1').replace(/<!\\[CDATA\\[([\\s\\S]*?)\\]\\]>/g,'$1');}if(handler.chars){handler.chars(text);}return'';});index+=html.length-rest.length;html=rest;parseEndTag('</'+stackedTag+'>',stackedTag,index-endTagLength,index);})();}if(html===last){throw new Error('Error parsing template:\\n\\n'+html);}}// Clean up any remaining tags\n\tparseEndTag();function advance(n){index+=n;html=html.substring(n);}function parseStartTag(){var start=html.match(startTagOpen);if(start){var match={tagName:start[1],attrs:[],start:index};advance(start[0].length);var end=void 0,attr=void 0;while(!(end=html.match(startTagClose))&&(attr=html.match(attribute))){advance(attr[0].length);match.attrs.push(attr);}if(end){match.unarySlash=end[1];advance(end[0].length);match.end=index;return match;}}}function handleStartTag(match){var tagName=match.tagName;var unarySlash=match.unarySlash;if(expectHTML){if(lastTag==='p'&&isNonPhrasingTag(tagName)){parseEndTag('',lastTag);}if(canBeLeftOpenTag(tagName)&&lastTag===tagName){parseEndTag('',tagName);}}var unary=isUnaryTag(tagName)||tagName==='html'&&lastTag==='head'||!!unarySlash;var l=match.attrs.length;var attrs=new Array(l);for(var i=0;i<l;i++){var args=match.attrs[i];// hackish work around FF bug https://bugzilla.mozilla.org/show_bug.cgi?id=369778\n\tif(IS_REGEX_CAPTURING_BROKEN&&args[0].indexOf('\"\"')===-1){if(args[3]===''){delete args[3];}if(args[4]===''){delete args[4];}if(args[5]===''){delete args[5];}}attrs[i]={name:args[1],value:decodeHTML(args[3]||args[4]||args[5]||'')};}if(!unary){stack.push({tag:tagName,attrs:attrs});lastTag=tagName;unarySlash='';}if(handler.start){handler.start(tagName,attrs,unary,match.start,match.end);}}function parseEndTag(tag,tagName,start,end){var pos=void 0;if(start==null)start=index;if(end==null)end=index;// Find the closest opened tag of the same type\n\tif(tagName){var needle=tagName.toLowerCase();for(pos=stack.length-1;pos>=0;pos--){if(stack[pos].tag.toLowerCase()===needle){break;}}}else{// If no tag name is provided, clean shop\n\tpos=0;}if(pos>=0){// Close all the open elements, up the stack\n\tfor(var i=stack.length-1;i>=pos;i--){if(handler.end){handler.end(stack[i].tag,start,end);}}// Remove the open elements from the stack\n\tstack.length=pos;lastTag=pos&&stack[pos-1].tag;}else if(tagName.toLowerCase()==='br'){if(handler.start){handler.start(tagName,[],true,start,end);}}else if(tagName.toLowerCase()==='p'){if(handler.start){handler.start(tagName,[],false,start,end);}if(handler.end){handler.end(tagName,start,end);}}}}function parseFilters(exp){var inSingle=false;var inDouble=false;var curly=0;var square=0;var paren=0;var lastFilterIndex=0;var c=void 0,prev=void 0,i=void 0,expression=void 0,filters=void 0;for(i=0;i<exp.length;i++){prev=c;c=exp.charCodeAt(i);if(inSingle){// check single quote\n\tif(c===0x27&&prev!==0x5C)inSingle=!inSingle;}else if(inDouble){// check double quote\n\tif(c===0x22&&prev!==0x5C)inDouble=!inDouble;}else if(c===0x7C&&// pipe\n\texp.charCodeAt(i+1)!==0x7C&&exp.charCodeAt(i-1)!==0x7C&&!curly&&!square&&!paren){if(expression===undefined){// first filter, end of expression\n\tlastFilterIndex=i+1;expression=exp.slice(0,i).trim();}else{pushFilter();}}else{switch(c){case 0x22:inDouble=true;break;// \"\n\tcase 0x27:inSingle=true;break;// '\n\tcase 0x28:paren++;break;// (\n\tcase 0x29:paren--;break;// )\n\tcase 0x5B:square++;break;// [\n\tcase 0x5D:square--;break;// ]\n\tcase 0x7B:curly++;break;// {\n\tcase 0x7D:curly--;break;// }\n\t}}}if(expression===undefined){expression=exp.slice(0,i).trim();}else if(lastFilterIndex!==0){pushFilter();}function pushFilter(){(filters||(filters=[])).push(exp.slice(lastFilterIndex,i).trim());lastFilterIndex=i+1;}if(filters){for(i=0;i<filters.length;i++){expression=wrapFilter(expression,filters[i]);}}return expression;}function wrapFilter(exp,filter){var i=filter.indexOf('(');if(i<0){// _f: resolveFilter\n\treturn'_f(\"'+filter+'\")('+exp+')';}else{var name=filter.slice(0,i);var args=filter.slice(i+1);return'_f(\"'+name+'\")('+exp+','+args;}}var defaultTagRE=/\\{\\{((?:.|\\\\n)+?)\\}\\}/g;var regexEscapeRE=/[-.*+?^${}()|[\\]\\/\\\\]/g;var buildRegex=cached(function(delimiters){var open=delimiters[0].replace(regexEscapeRE,'\\\\$&');var close=delimiters[1].replace(regexEscapeRE,'\\\\$&');return new RegExp(open+'((?:.|\\\\n)+?)'+close,'g');});function parseText(text,delimiters){var tagRE=delimiters?buildRegex(delimiters):defaultTagRE;if(!tagRE.test(text)){return;}var tokens=[];var lastIndex=tagRE.lastIndex=0;var match=void 0,index=void 0;while(match=tagRE.exec(text)){index=match.index;// push text token\n\tif(index>lastIndex){tokens.push(JSON.stringify(text.slice(lastIndex,index)));}// tag token\n\tvar exp=parseFilters(match[1].trim());tokens.push('_s('+exp+')');lastIndex=index+match[0].length;}if(lastIndex<text.length){tokens.push(JSON.stringify(text.slice(lastIndex)));}return tokens.join('+');}function baseWarn(msg){console.error('[Vue parser]: '+msg);}function pluckModuleFunction(modules,key){return modules?modules.map(function(m){return m[key];}).filter(function(_){return _;}):[];}function addProp(el,name,value){(el.props||(el.props=[])).push({name:name,value:value});}function addAttr(el,name,value){(el.attrs||(el.attrs=[])).push({name:name,value:value});}function addStaticAttr(el,name,value){(el.staticAttrs||(el.staticAttrs=[])).push({name:name,value:value});}function addDirective(el,name,value,arg,modifiers){(el.directives||(el.directives=[])).push({name:name,value:value,arg:arg,modifiers:modifiers});}function addHook$1(el,name,code){var hooks=el.hooks||(el.hooks={});var hook=hooks[name];/* istanbul ignore if */if(hook){hook.push(code);}else{hooks[name]=[code];}}function addHandler(el,name,value,modifiers){var events=el.events||(el.events={});// check capture modifier\n\tif(modifiers&&modifiers.capture){delete modifiers.capture;name='!'+name;// mark the event as captured\n\t}var newHandler={value:value,modifiers:modifiers};var handlers=events[name];/* istanbul ignore if */if(Array.isArray(handlers)){handlers.push(newHandler);}else if(handlers){events[name]=[handlers,newHandler];}else{events[name]=newHandler;}}function getBindingAttr(el,name,getStatic){var dynamicValue=getAndRemoveAttr(el,':'+name)||getAndRemoveAttr(el,'v-bind:'+name);if(dynamicValue!=null){return dynamicValue;}else if(getStatic!==false){var staticValue=getAndRemoveAttr(el,name);if(staticValue!=null){return JSON.stringify(staticValue);}}}function getAndRemoveAttr(el,name){var val=void 0;if((val=el.attrsMap[name])!=null){var list=el.attrsList;for(var i=0,l=list.length;i<l;i++){if(list[i].name===name){list.splice(i,1);break;}}}return val;}var dirRE=/^v-|^@|^:/;var forAliasRE=/(.*)\\s+(?:in|of)\\s+(.*)/;var forIteratorRE=/\\(([^,]*),([^,]*)(?:,([^,]*))?\\)/;var bindRE=/^:|^v-bind:/;var onRE=/^@|^v-on:/;var argRE=/:(.*)$/;var modifierRE=/\\.[^\\.]+/g;var camelRE=/[a-z\\d][A-Z]/;var decodeHTMLCached=cached(decodeHTML);// configurable state\n\tvar warn$1=void 0;var platformGetTagNamespace=void 0;var platformMustUseProp=void 0;var preTransforms=void 0;var transforms=void 0;var postTransforms=void 0;var delimiters=void 0;/**\n\t * Convert HTML string to AST.\n\t */function parse(template,options){warn$1=options.warn||baseWarn;platformGetTagNamespace=options.getTagNamespace||no;platformMustUseProp=options.mustUseProp||no;preTransforms=pluckModuleFunction(options.modules,'preTransformNode');transforms=pluckModuleFunction(options.modules,'transformNode');postTransforms=pluckModuleFunction(options.modules,'postTransformNode');delimiters=options.delimiters;var stack=[];var preserveWhitespace=options.preserveWhitespace!==false;var root=void 0;var currentParent=void 0;var inPre=false;var warned=false;parseHTML(template,{expectHTML:options.expectHTML,isUnaryTag:options.isUnaryTag,start:function start(tag,attrs,unary){// check camelCase tag\n\tif(camelRE.test(tag)){\"development\"!=='production'&&warn$1('Found camelCase tag in template: <'+tag+'>. '+('I\\'ve converted it to <'+hyphenate(tag)+'> for you.'));tag=hyphenate(tag);}tag=tag.toLowerCase();// check namespace.\n\t// inherit parent ns if there is one\n\tvar ns=currentParent&¤tParent.ns||platformGetTagNamespace(tag);// handle IE svg bug\n\t/* istanbul ignore if */if(options.isIE&&ns==='svg'){attrs=guardIESVGBug(attrs);}var element={type:1,tag:tag,attrsList:attrs,attrsMap:makeAttrsMap(attrs),parent:currentParent,children:[]};if(ns){element.ns=ns;}if(isForbiddenTag(element)){element.forbidden=true;\"development\"!=='production'&&warn$1('Templates should only be responsbile for mapping the state to the '+'UI. Avoid placing tags with side-effects in your templates, such as '+('<'+tag+'>.'));}// apply pre-transforms\n\tfor(var i=0;i<preTransforms.length;i++){preTransforms[i](element,options);}if(!inPre){processPre(element);if(element.pre){inPre=true;}}if(inPre){processRawAttrs(element);}else{processFor(element);processIf(element);processOnce(element);// determine whether this is a plain element after\n\t// removing structural attributes\n\telement.plain=!element.key&&!attrs.length;processKey(element);processRef(element);processSlot(element);processComponent(element);for(var _i=0;_i<transforms.length;_i++){transforms[_i](element,options);}processAttrs(element);}// tree management\n\tif(!root){root=element;// check root element constraints\n\tif(true){if(tag==='slot'||tag==='template'){warn$1('Cannot use <'+tag+'> as component root element because it may '+'contain multiple nodes:\\n'+template);}if(element.attrsMap.hasOwnProperty('v-for')){warn$1('Cannot use v-for on stateful component root element because '+'it renders multiple elements:\\n'+template);}}}else if(\"development\"!=='production'&&!stack.length&&!warned){warned=true;warn$1('Component template should contain exactly one root element:\\n\\n'+template);}if(currentParent&&!element.forbidden){if(element.else){processElse(element,currentParent);}else{currentParent.children.push(element);element.parent=currentParent;}}if(!unary){currentParent=element;stack.push(element);}// apply post-transforms\n\tfor(var _i2=0;_i2<postTransforms.length;_i2++){postTransforms[_i2](element,options);}},end:function end(){// remove trailing whitespace\n\tvar element=stack[stack.length-1];var lastNode=element.children[element.children.length-1];if(lastNode&&lastNode.type===3&&lastNode.text===' '){element.children.pop();}// pop stack\n\tstack.length-=1;currentParent=stack[stack.length-1];// check pre state\n\tif(element.pre){inPre=false;}},chars:function chars(text){if(!currentParent){if(\"development\"!=='production'&&!warned){warned=true;warn$1('Component template should contain exactly one root element:\\n\\n'+template);}return;}text=currentParent.tag==='pre'||text.trim()?decodeHTMLCached(text)// only preserve whitespace if its not right after a starting tag\n\t:preserveWhitespace&¤tParent.children.length?' ':'';if(text){var expression=void 0;if(!inPre&&text!==' '&&(expression=parseText(text,delimiters))){currentParent.children.push({type:2,expression:expression,text:text});}else{currentParent.children.push({type:3,text:text});}}}});return root;}function processPre(el){if(getAndRemoveAttr(el,'v-pre')!=null){el.pre=true;}}function processRawAttrs(el){var l=el.attrsList.length;if(l){var attrs=el.staticAttrs=new Array(l);for(var i=0;i<l;i++){attrs[i]={name:el.attrsList[i].name,value:JSON.stringify(el.attrsList[i].value)};}}else if(!el.pre){// non root node in pre blocks with no attributes\n\tel.plain=true;}}function processKey(el){var exp=getBindingAttr(el,'key');if(exp){el.key=exp;}}function processRef(el){var ref=getBindingAttr(el,'ref');if(ref){el.ref=ref;var parent=el;while(parent){if(parent.for!==undefined){el.refInFor=true;break;}parent=parent.parent;}}}function processFor(el){var exp=void 0;if(exp=getAndRemoveAttr(el,'v-for')){var inMatch=exp.match(forAliasRE);if(!inMatch){\"development\"!=='production'&&warn$1('Invalid v-for expression: '+exp);return;}el.for=inMatch[2].trim();var alias=inMatch[1].trim();var iteratorMatch=alias.match(forIteratorRE);if(iteratorMatch){el.alias=iteratorMatch[1].trim();el.iterator1=iteratorMatch[2].trim();if(iteratorMatch[3]){el.iterator2=iteratorMatch[3].trim();}}else{el.alias=alias;}}}function processIf(el){var exp=getAndRemoveAttr(el,'v-if');if(exp){el.if=exp;}if(getAndRemoveAttr(el,'v-else')!=null){el.else=true;}}function processElse(el,parent){var prev=findPrevElement(parent.children);if(prev&&prev.if){prev.elseBlock=el;}else if(true){warn$1('v-else used on element <'+el.tag+'> without corresponding v-if.');}}function processOnce(el){var once=getAndRemoveAttr(el,'v-once');if(once!=null){el.once=true;}}function processSlot(el){if(el.tag==='slot'){el.slotName=getBindingAttr(el,'name');}else{var slotTarget=getBindingAttr(el,'slot');if(slotTarget){el.slotTarget=slotTarget;}}}function processComponent(el){var binding=void 0;if(binding=getBindingAttr(el,'is')){el.component=binding;}if(getAndRemoveAttr(el,'keep-alive')!=null){el.keepAlive=true;}if(getAndRemoveAttr(el,'inline-template')!=null){el.inlineTemplate=true;}}function processAttrs(el){var list=el.attrsList;var i=void 0,l=void 0,name=void 0,value=void 0,arg=void 0,modifiers=void 0;for(i=0,l=list.length;i<l;i++){name=list[i].name;value=list[i].value;if(dirRE.test(name)){// modifiers\n\tmodifiers=parseModifiers(name);if(modifiers){name=name.replace(modifierRE,'');}if(bindRE.test(name)){// v-bind\n\tname=name.replace(bindRE,'');if(platformMustUseProp(name)){addProp(el,name,value);}else{addAttr(el,name,value);}}else if(onRE.test(name)){// v-on\n\tname=name.replace(onRE,'');addHandler(el,name,value,modifiers);}else{// normal directives\n\tname=name.replace(dirRE,'');// parse arg\n\tvar argMatch=name.match(argRE);if(argMatch&&(arg=argMatch[1])){name=name.slice(0,-(arg.length+1));}addDirective(el,name,value,arg,modifiers);}}else{// literal attribute\n\tif(true){var expression=parseText(value,delimiters);if(expression){warn$1(name+'=\"'+value+'\": '+'Interpolation inside attributes has been deprecated. '+'Use v-bind or the colon shorthand instead.');}}addStaticAttr(el,name,JSON.stringify(value));}}}function parseModifiers(name){var match=name.match(modifierRE);if(match){var _ret=function(){var ret={};match.forEach(function(m){ret[m.slice(1)]=true;});return{v:ret};}();if((typeof _ret==='undefined'?'undefined':_typeof(_ret))===\"object\")return _ret.v;}}function makeAttrsMap(attrs){var map={};for(var i=0,l=attrs.length;i<l;i++){if(\"development\"!=='production'&&map[attrs[i].name]){warn$1('duplicate attribute: '+attrs[i].name);}map[attrs[i].name]=attrs[i].value;}return map;}function findPrevElement(children){var i=children.length;while(i--){if(children[i].tag)return children[i];}}function isForbiddenTag(el){return el.tag==='style'||el.tag==='script'&&(!el.attrsMap.type||el.attrsMap.type==='text/javascript');}var ieNSBug=/^xmlns:NS\\d+/;var ieNSPrefix=/^NS\\d+:/;/* istanbul ignore next */function guardIESVGBug(attrs){var res=[];for(var i=0;i<attrs.length;i++){var attr=attrs[i];if(!ieNSBug.test(attr.name)){attr.name=attr.name.replace(ieNSPrefix,'');res.push(attr);}}return res;}var isStaticKey=void 0;var isPlatformReservedTag=void 0;var genStaticKeysCached=cached(genStaticKeys$1);/**\n\t * Goal of the optimizier: walk the generated template AST tree\n\t * and detect sub-trees that are purely static, i.e. parts of\n\t * the DOM that never needs to change.\n\t *\n\t * Once we detect these sub-trees, we can:\n\t *\n\t * 1. Hoist them into constants, so that we no longer need to\n\t * create fresh nodes for them on each re-render;\n\t * 2. Completely skip them in the patching process.\n\t */function optimize(root,options){if(!root)return;isStaticKey=genStaticKeysCached(options.staticKeys||'');isPlatformReservedTag=options.isReservedTag||function(){return false;};// first pass: mark all non-static nodes.\n\tmarkStatic(root);// second pass: mark static roots.\n\tmarkStaticRoots(root);}function genStaticKeys$1(keys){return makeMap('type,tag,attrsList,attrsMap,plain,parent,children,staticAttrs'+(keys?','+keys:''));}function markStatic(node){node.static=isStatic(node);if(node.type===1){for(var i=0,l=node.children.length;i<l;i++){var child=node.children[i];markStatic(child);if(!child.static){node.static=false;}}}}function markStaticRoots(node){if(node.type===1&&(node.once||node.static)){node.staticRoot=true;return;}if(node.children){for(var i=0,l=node.children.length;i<l;i++){markStaticRoots(node.children[i]);}}}function isStatic(node){if(node.type===2){// expression\n\treturn false;}if(node.type===3){// text\n\treturn true;}return!!(node.pre||!node.if&&!node.for&&// not v-if or v-for or v-else\n\t!isBuiltInTag(node.tag)&&// not a built-in\n\tisPlatformReservedTag(node.tag)&&(// not a component\n\tnode.plain||Object.keys(node).every(isStaticKey))// no dynamic bindings\n\t);}var simplePathRE=/^[A-Za-z_$][\\w$]*(?:\\.[A-Za-z_$][\\w$]*|\\['.*?'\\]|\\[\".*?\"\\]|\\[\\d+\\]|\\[[A-Za-z_$][\\w$]*\\])*$/;// keyCode aliases\n\tvar keyCodes={esc:27,tab:9,enter:13,space:32,up:38,left:37,right:39,down:40,'delete':[8,46]};var modifierCode={stop:'$event.stopPropagation();',prevent:'$event.preventDefault();',self:'if($event.target !== $event.currentTarget)return;'};function genHandlers(events){var res='on:{';for(var name in events){res+='\"'+name+'\":'+genHandler(events[name])+',';}return res.slice(0,-1)+'}';}function genHandler(handler){if(!handler){return'function(){}';}else if(Array.isArray(handler)){return'['+handler.map(genHandler).join(',')+']';}else if(!handler.modifiers){return simplePathRE.test(handler.value)?handler.value:'function($event){'+handler.value+'}';}else{var code='function($event){';for(var key in handler.modifiers){code+=modifierCode[key]||genKeyFilter(key);}var handlerCode=simplePathRE.test(handler.value)?handler.value+'($event)':handler.value;return code+handlerCode+'}';}}function genKeyFilter(key){var code=parseInt(key,10)||// number keyCode\n\tkeyCodes[key]||// built-in alias\n\t'_k('+JSON.stringify(key)+')';// custom alias\n\tif(Array.isArray(code)){return'if('+code.map(function(c){return'$event.keyCode!=='+c;}).join('&&')+')return;';}else{return'if($event.keyCode!=='+code+')return;';}}function bind$1(el,dir){addHook$1(el,'construct','_b(n1,'+dir.value+')');}var baseDirectives={bind:bind$1,cloak:noop};// configurable state\n\tvar warn$2=void 0;var transforms$1=void 0;var dataGenFns=void 0;var platformDirectives$1=void 0;var isPlatformReservedTag$1=void 0;var staticRenderFns=void 0;var currentOptions=void 0;function generate(ast,options){// save previous staticRenderFns so generate calls can be nested\n\tvar prevStaticRenderFns=staticRenderFns;var currentStaticRenderFns=staticRenderFns=[];currentOptions=options;warn$2=options.warn||baseWarn;transforms$1=pluckModuleFunction(options.modules,'transformCode');dataGenFns=pluckModuleFunction(options.modules,'genData');platformDirectives$1=options.directives||{};isPlatformReservedTag$1=options.isReservedTag||no;var code=ast?genElement(ast):'_h(\"div\")';staticRenderFns=prevStaticRenderFns;return{render:'with(this){return '+code+'}',staticRenderFns:currentStaticRenderFns};}function genElement(el){if(el.staticRoot&&!el.staticProcessed){// hoist static sub-trees out\n\tel.staticProcessed=true;staticRenderFns.push('with(this){return '+genElement(el)+'}');return'_m('+(staticRenderFns.length-1)+')';}else if(el.for&&!el.forProcessed){return genFor(el);}else if(el.if&&!el.ifProcessed){return genIf(el);}else if(el.tag==='template'&&!el.slotTarget){return genChildren(el)||'void 0';}else if(el.tag==='slot'){return genSlot(el);}else{// component or element\n\tvar code=void 0;if(el.component){code=genComponent(el);}else{var data=genData(el);// if the element is potentially a component,\n\t// wrap its children as a thunk.\n\tvar children=!el.inlineTemplate?genChildren(el,!el.ns&&!isPlatformReservedTag$1(el.tag)/* asThunk */):null;code='_h(\\''+el.tag+'\\''+(data?','+data:''// data\n\t)+(children?','+children:''// children\n\t)+')';}// module transforms\n\tfor(var i=0;i<transforms$1.length;i++){code=transforms$1[i](el,code);}// check keep-alive\n\tif(el.component&&el.keepAlive){code='_h(\"KeepAlive\",{props:{child:'+code+'}})';}return code;}}function genIf(el){var exp=el.if;el.ifProcessed=true;// avoid recursion\n\treturn'('+exp+')?'+genElement(el)+':'+genElse(el);}function genElse(el){return el.elseBlock?genElement(el.elseBlock):'void 0';}function genFor(el){var exp=el.for;var alias=el.alias;var iterator1=el.iterator1?','+el.iterator1:'';var iterator2=el.iterator2?','+el.iterator2:'';el.forProcessed=true;// avoid recursion\n\treturn'('+exp+')&&_l(('+exp+'),'+('function('+alias+iterator1+iterator2+'){')+('return '+genElement(el))+'})';}function genData(el){if(el.plain){return;}var data='{';// directives first.\n\t// directives may mutate the el's other properties before they are generated.\n\tvar dirs=genDirectives(el);if(dirs)data+=dirs+',';// key\n\tif(el.key){data+='key:'+el.key+',';}// ref\n\tif(el.ref){data+='ref:'+el.ref+',';}if(el.refInFor){data+='refInFor:true,';}// record original tag name for components using \"is\" attribute\n\tif(el.component){data+='tag:\"'+el.tag+'\",';}// slot target\n\tif(el.slotTarget){data+='slot:'+el.slotTarget+',';}// module data generation functions\n\tfor(var i=0;i<dataGenFns.length;i++){data+=dataGenFns[i](el);}// v-show, used to avoid transition being applied\n\t// since v-show takes it over\n\tif(el.attrsMap['v-show']){data+='show:true,';}// props\n\tif(el.props){data+='props:{'+genProps(el.props)+'},';}// attributes\n\tif(el.attrs){data+='attrs:{'+genProps(el.attrs)+'},';}// static attributes\n\tif(el.staticAttrs){data+='staticAttrs:{'+genProps(el.staticAttrs)+'},';}// hooks\n\tif(el.hooks){data+='hook:{'+genHooks(el.hooks)+'},';}// event handlers\n\tif(el.events){data+=genHandlers(el.events)+',';}// inline-template\n\tif(el.inlineTemplate){var ast=el.children[0];if(\"development\"!=='production'&&(el.children.length>1||ast.type!==1)){warn$2('Inline-template components must have exactly one child element.');}if(ast.type===1){var inlineRenderFns=generate(ast,currentOptions);data+='inlineTemplate:{render:function(){'+inlineRenderFns.render+'},staticRenderFns:['+inlineRenderFns.staticRenderFns.map(function(code){return'function(){'+code+'}';}).join(',')+']}';}}return data.replace(/,$/,'')+'}';}function genDirectives(el){var dirs=el.directives;if(!dirs)return;var res='directives:[';var hasRuntime=false;var i=void 0,l=void 0,dir=void 0,needRuntime=void 0;for(i=0,l=dirs.length;i<l;i++){dir=dirs[i];needRuntime=true;var gen=platformDirectives$1[dir.name]||baseDirectives[dir.name];if(gen){// compile-time directive that manipulates AST.\n\t// returns true if it also needs a runtime counterpart.\n\tneedRuntime=!!gen(el,dir,warn$2);}if(needRuntime){hasRuntime=true;res+='{name:\"'+dir.name+'\"'+(dir.value?',value:('+dir.value+'),expression:'+JSON.stringify(dir.value):'')+(dir.arg?',arg:\"'+dir.arg+'\"':'')+(dir.modifiers?',modifiers:'+JSON.stringify(dir.modifiers):'')+'},';}}if(hasRuntime){return res.slice(0,-1)+']';}}function genChildren(el,asThunk){if(!el.children.length){return;}var code='['+el.children.map(genNode).join(',')+']';return asThunk?'function(){return '+code+'}':code;}function genNode(node){if(node.type===1){return genElement(node);}else{return genText(node);}}function genText(text){return text.type===2?text.expression// no need for () because already wrapped in _s()\n\t:JSON.stringify(text.text);}function genSlot(el){var slot='$slots['+(el.slotName||'\"default\"')+']';var children=genChildren(el);return children?'('+slot+'||'+children+')':slot;}function genComponent(el){var children=genChildren(el,true);return'_h('+el.component+','+genData(el)+(children?','+children:'')+')';}function genProps(props){var res='';for(var i=0;i<props.length;i++){var prop=props[i];res+='\"'+prop.name+'\":'+prop.value+',';}return res.slice(0,-1);}function genHooks(hooks){var res='';for(var _key in hooks){res+='\"'+_key+'\":function(n1,n2){'+hooks[_key].join(';')+'},';}return res.slice(0,-1);}/**\n\t * Compile a template.\n\t */function compile$1(template,options){var ast=parse(template.trim(),options);optimize(ast,options);var code=generate(ast,options);return{ast:ast,render:code.render,staticRenderFns:code.staticRenderFns};}// operators like typeof, instanceof and in are allowed\n\tvar prohibitedKeywordRE=new RegExp('\\\\b'+('do,if,for,let,new,try,var,case,else,with,await,break,catch,class,const,'+'super,throw,while,yield,delete,export,import,return,switch,default,'+'extends,finally,continue,debugger,function,arguments').split(',').join('\\\\b|\\\\b')+'\\\\b');// check valid identifier for v-for\n\tvar identRE=/[A-Za-z_$][\\w$]*/;// strip strings in expressions\n\tvar stripStringRE=/'(?:[^'\\\\]|\\\\.)*'|\"(?:[^\"\\\\]|\\\\.)*\"|`(?:[^`\\\\]|\\\\.)*\\$\\{|\\}(?:[^`\\\\]|\\\\.)*`|`(?:[^`\\\\]|\\\\.)*`/g;// detect problematic expressions in a template\n\tfunction detectErrors(ast){var errors=[];if(ast){checkNode(ast,errors);}return errors;}function checkNode(node,errors){if(node.type===1){for(var name in node.attrsMap){if(dirRE.test(name)){var value=node.attrsMap[name];if(value){if(name==='v-for'){checkFor(node,'v-for=\"'+value+'\"',errors);}else{checkExpression(value,name+'=\"'+value+'\"',errors);}}}}if(node.children){for(var i=0;i<node.children.length;i++){checkNode(node.children[i],errors);}}}else if(node.type===2){checkExpression(node.expression,node.text,errors);}}function checkFor(node,text,errors){checkExpression(node.for||'',text,errors);checkIdentifier(node.alias,'v-for alias',text,errors);checkIdentifier(node.iterator1,'v-for iterator',text,errors);checkIdentifier(node.iterator2,'v-for iterator',text,errors);}function checkIdentifier(ident,type,text,errors){if(typeof ident==='string'&&!identRE.test(ident)){errors.push('- invalid '+type+' \"'+ident+'\" in expression: '+text);}}function checkExpression(exp,text,errors){try{new Function('return '+exp);}catch(e){var keywordMatch=exp.replace(stripStringRE,'').match(prohibitedKeywordRE);if(keywordMatch){errors.push('- avoid using JavaScript keyword as property name: '+('\"'+keywordMatch[0]+'\" in expression '+text));}else{errors.push('- invalid expression: '+text);}}}function transformNode(el,options){var warn=options.warn||baseWarn;var staticClass=getAndRemoveAttr(el,'class');if(\"development\"!=='production'&&staticClass){var expression=parseText(staticClass,options.delimiters);if(expression){warn('class=\"'+staticClass+'\": '+'Interpolation inside attributes has been deprecated. '+'Use v-bind or the colon shorthand instead.');}}el.staticClass=JSON.stringify(staticClass);var classBinding=getBindingAttr(el,'class',false/* getStatic */);if(classBinding){el.classBinding=classBinding;}}function genData$1(el){var data='';if(el.staticClass){data+='staticClass:'+el.staticClass+',';}if(el.classBinding){data+='class:'+el.classBinding+',';}return data;}var klass$1={staticKeys:['staticClass'],transformNode:transformNode,genData:genData$1};function transformNode$1(el){var styleBinding=getBindingAttr(el,'style',false/* getStatic */);if(styleBinding){el.styleBinding=styleBinding;}}function genData$2(el){return el.styleBinding?'style:('+el.styleBinding+'),':'';}var style$1={transformNode:transformNode$1,genData:genData$2};function transformNode$2(el){var transition=getBindingAttr(el,'transition');if(transition==='\"\"'){transition=true;}if(transition){el.transition=transition;}var mode=getBindingAttr(el,'transition-mode');if(mode){el.transitionMode=mode;}}function genData$3(el){return el.transition?'transition:'+el.transition+',':'';}function transformCode(el,code){return el.transitionMode?'_h(\\'TransitionControl\\',{props:{mode:'+el.transitionMode+',child:'+code+'}})':code;}var transition$1={transformNode:transformNode$2,genData:genData$3,transformCode:transformCode};var modules$1=[klass$1,style$1,transition$1];var warn$3=void 0;function model$1(el,dir,_warn){warn$3=_warn;var value=dir.value;var modifiers=dir.modifiers;if(el.tag==='select'){return genSelect(el,value);}else{switch(el.attrsMap.type){case'checkbox':genCheckboxModel(el,value);break;case'radio':genRadioModel(el,value);break;default:return genDefaultModel(el,value,modifiers);}}}function genCheckboxModel(el,value){if(\"development\"!=='production'&&el.attrsMap.checked!=null){warn$3('<'+el.tag+' v-model=\"'+value+'\" checked>:\\n'+'inline checked attributes will be ignored when using v-model. '+'Declare initial values in the component\\'s data option instead.');}var valueBinding=getBindingAttr(el,'value');var trueValueBinding=getBindingAttr(el,'true-value')||'true';var falseValueBinding=getBindingAttr(el,'false-value')||'false';addProp(el,'checked','Array.isArray('+value+')'+('?('+value+').indexOf('+valueBinding+')>-1')+(':('+value+')===('+trueValueBinding+')'));addHandler(el,'change','var $$a='+value+','+'$$el=$event.target,'+('$$c=$$el.checked?('+trueValueBinding+'):('+falseValueBinding+');')+'if(Array.isArray($$a)){'+('var $$v='+valueBinding+',')+'$$i=$$a.indexOf($$v);'+'if($$c){$$i<0&&$$a.push($$v)}'+'else{$$i>-1&&$$a.splice($$i,1)}'+('}else{'+value+'=$$c}'));}function genRadioModel(el,value){if(\"development\"!=='production'&&el.attrsMap.checked!=null){warn$3('<'+el.tag+' v-model=\"'+value+'\" checked>:\\n'+'inline checked attributes will be ignored when using v-model. '+'Declare initial values in the component\\'s data option instead.');}var valueBinding=getBindingAttr(el,'value');addProp(el,'checked','('+value+')===('+valueBinding+')');addHandler(el,'change',value+'='+valueBinding);}function genDefaultModel(el,value,modifiers){if(true){if(el.tag==='input'&&el.attrsMap.value){warn$3('<'+el.tag+' v-model=\"'+value+'\" value=\"'+el.attrsMap.value+'\">:\\n'+'inline value attributes will be ignored when using v-model. '+'Declare initial values in the component\\'s data option instead.');}if(el.tag==='textarea'&&el.children.length){warn$3('<textarea v-model=\"'+value+'\">:\\n'+'inline content inside <textarea> will be ignored when using v-model. '+'Declare initial values in the component\\'s data option instead.');}}var type=el.attrsMap.type;var _ref=modifiers||{};var lazy=_ref.lazy;var number=_ref.number;var trim=_ref.trim;var event=lazy?'change':'input';var needCompositionGuard=!lazy&&type!=='range';var valueExpression='$event.target.value'+(trim?'.trim()':'');var code=number||type==='number'?value+'=_n('+valueExpression+')':value+'='+valueExpression;if(needCompositionGuard){code='if($event.target.composing)return;'+code;}addProp(el,'value','_s('+value+')');addHandler(el,event,code);if(needCompositionGuard){// need runtime directive code to help with composition events\n\treturn true;}}function genSelect(el,value){if(true){el.children.some(checkOptionWarning);}var code=value+'=Array.prototype.filter'+'.call($event.target.options,function(o){return o.selected})'+'.map(function(o){return \"_value\" in o ? o._value : o.value})'+(el.attrsMap.multiple==null?'[0]':'');addHandler(el,'change',code);// need runtime to help with possible dynamically generated options\n\treturn true;}function checkOptionWarning(option){if(option.type===1&&option.tag==='option'&&option.attrsMap.selected!=null){var parentModel=option.parent&&option.parent.type===1&&option.parent.attrsMap['v-model'];warn$3('<select v-model=\"'+parentModel+'\">:\\n'+'inline selected attributes on <option> will be ignored when using v-model. '+'Declare initial values in the component\\'s data option instead.');return true;}}function text(el,dir){if(dir.value){addProp(el,'textContent','_s('+dir.value+')');}}function html(el,dir){if(dir.value){addProp(el,'innerHTML','_s('+dir.value+')');}}var directives$1={model:model$1,text:text,html:html};var cache=Object.create(null);var baseOptions={isIE:isIE,expectHTML:true,modules:modules$1,staticKeys:genStaticKeys(modules$1),directives:directives$1,isReservedTag:isReservedTag,isUnaryTag:isUnaryTag,mustUseProp:mustUseProp,getTagNamespace:getTagNamespace};function compile(template,options){options=options?extend(extend({},baseOptions),options):baseOptions;return compile$1(template,options);}function compileToFunctions(template,options,vm){var _warn=options&&options.warn||warn;// detect possible CSP restriction\n\t/* istanbul ignore if */if(true){try{new Function('return 1');}catch(e){if(e.toString().match(/unsafe-eval|CSP/)){_warn('It seems you are using the standalone build of Vue.js in an '+'environment with Content Security Policy that prohibits unsafe-eval. '+'The template compiler cannot work in this environment. Consider '+'relaxing the policy to allow unsafe-eval or pre-compiling your '+'templates into render functions.');}}}var key=options&&options.delimiters?String(options.delimiters)+template:template;if(cache[key]){return cache[key];}var res={};var compiled=compile(template,options);res.render=makeFunction(compiled.render);var l=compiled.staticRenderFns.length;res.staticRenderFns=new Array(l);for(var i=0;i<l;i++){res.staticRenderFns[i]=makeFunction(compiled.staticRenderFns[i]);}if(true){if(res.render===noop||res.staticRenderFns.some(function(fn){return fn===noop;})){_warn('failed to compile template:\\n\\n'+template+'\\n\\n'+detectErrors(compiled.ast).join('\\n')+'\\n\\n',vm);}}return cache[key]=res;}function makeFunction(code){try{return new Function(code);}catch(e){return noop;}}var idToTemplate=cached(function(id){var el=query(id);return el&&el.innerHTML;});var mount=Vue.prototype.$mount;Vue.prototype.$mount=function(el,hydrating){el=el&&query(el);var options=this.$options;// resolve template/el and convert to render function\n\tif(!options.render){var template=options.template;if(template){if(typeof template==='string'){if(template.charAt(0)==='#'){template=idToTemplate(template);}}else if(template.nodeType){template=template.innerHTML;}else{if(true){warn('invalid template option:'+template,this);}return this;}}else if(el){template=getOuterHTML(el);}if(template){var _compileToFunctions=compileToFunctions(template,{delimiters:options.delimiters,warn:warn},this);var render=_compileToFunctions.render;var staticRenderFns=_compileToFunctions.staticRenderFns;options.render=render;options.staticRenderFns=staticRenderFns;}}return mount.call(this,el,hydrating);};/**\n\t * Get outerHTML of elements, taking care\n\t * of SVG elements in IE as well.\n\t */function getOuterHTML(el){if(el.outerHTML){return el.outerHTML;}else{var container=document.createElement('div');container.appendChild(el.cloneNode(true));return container.innerHTML;}}Vue.compile=compileToFunctions;return Vue;});\n\t/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))\n\n/***/ },\n/* 32 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\t\n\tmodule.exports = function (module) {\n\t\tif (!module.webpackPolyfill) {\n\t\t\tmodule.deprecate = function () {};\n\t\t\tmodule.paths = [];\n\t\t\t// module.parent = undefined by default\n\t\t\tmodule.children = [];\n\t\t\tmodule.webpackPolyfill = 1;\n\t\t}\n\t\treturn module;\n\t};\n\n/***/ },\n/* 33 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\t\n\tvar _Cutout = __webpack_require__(40);\n\t\n\tvar _Cutout2 = _interopRequireDefault(_Cutout);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\texports.default = {\n\t\n\t\tinit: function init() {\n\t\t\tnew Vue(_Cutout2.default);\n\t\t}\n\t};\n\n/***/ },\n/* 34 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\t\n\tvar _utils = __webpack_require__(1);\n\t\n\tvar ShapeResizer = function ShapeResizer(paper, shape, vp, vb) {\n\t\tthis.paper = paper;\n\t\tthis.shape = shape;\n\t\tthis.handlers = [];\n\t\tthis.viewPort = vp;\n\t\tthis.viewBox = vb;\n\t\tthis.isResizing = false;\n\t\tthis.currentPosition = {};\n\t\tthis.HANDLER_SIZE = 8;\n\t\tthis.SHAPE_MIN_SIZE = 20;\n\t\tthis.states = {};\n\t\tthis.noop = function () {};\n\t\tthis.init();\n\t}; /* Enabling us to resize a shape width a handler \n\t \t#http://stackoverflow.com/questions/32390028/how-to-drag-and-resize-svg-rectangle-using-cursor-types\n\t */\n\t\n\t\n\tvar api = ShapeResizer.prototype = {\n\t\n\t\tinit: function init() {\n\t\t\tthis.showHandlers();\n\t\t},\n\t\n\t\tcomputeHandlerSize: function computeHandlerSize() {\n\t\t\treturn this.HANDLER_SIZE * Math.min(this.viewBox[2], this.viewBox[3]) / this.viewPort.width; //w==h\n\t\t},\n\t\n\t\tshowHandlers: function showHandlers() {\n\t\t\t/* show handler here */\n\t\t\tvar bbox = this.shape.getBBox();\n\t\t\tvar handleX = bbox.x - this.computeHandlerSize() / 2;\n\t\t\tvar handleY = bbox.y - this.computeHandlerSize() / 2;\n\t\t\tvar handler = this.paper.rect(handleX, handleY, this.computeHandlerSize(), this.computeHandlerSize()).attr({ fill: 'red' });\n\t\t\thandler.addClass(\"drawingHandler\");\n\t\t\tthis.shape.addClass(\"drawingHandler\");\n\t\t\tvar handlerInfos = { position: \"t_r\", handler: handler };\n\t\t\tthis.handlers.push(handlerInfos);\n\t\t\tthis.shapesGroup = this.paper.g(this.shape, handler);\n\t\t\tthis.attachEvents();\n\t\t},\n\t\n\t\t/*one handlers */\n\t\tupdateShapePositions: function updateShapePositions(handlerData, dx, dy) {\n\t\t\t//start\n\t\t\tvar handlerBBox = handlerData.handler.getBBox();\n\t\t\tvar shapeBBox = this.shape.data(\"origBbox\");\n\t\t\tvar newX = handlerBBox.x + this.computeHandlerSize() / 2;\n\t\t\tvar newY = handlerBBox.y + this.computeHandlerSize() / 2;\n\t\n\t\t\t/*to the right => reduce the size */\n\t\t\tvar newWidth = dx > 0 ? shapeBBox.width - dx : shapeBBox.width + Math.abs(dx);\n\t\t\tvar newHeight = dy > 0 ? shapeBBox.height - dy : shapeBBox.height + Math.abs(dy);\n\t\n\t\t\tvar transformValue = this.shape.data('origTransform') + (this.shape.data('origTransform') ? \"T\" : \"t\") + [dx, dy];\n\t\t\tthis.shape.attr({ 'transform': transformValue, width: newWidth, height: newHeight });\n\t\t},\n\t\n\t\tdragEvents: {\n\t\t\tonStart: function onStart(handlerData, dx, dy, e) {\n\t\t\t\tthis.startPosition = { x: e.clientX, y: e.clientY };\n\t\t\t\tthis.isResizing = true;\n\t\t\t\tthis.currentPosition = {};\n\t\t\t\thandlerData.handler.data(\"origTransform\", handlerData.handler.transform().local);\n\t\t\t\tthis.shape.data(\"origBbox\", this.shape.getBBox());\n\t\t\t\tthis.shape.data(\"origBounding\", this.shape.node.getBoundingClientRect());\n\t\t\t\tthis.shape.data(\"origTransform\", this.shape.transform().local);\n\t\t\t},\n\t\n\t\t\tonMove: function onMove(handlerData, dx, dy, x, y, e) {\n\t\n\t\t\t\tvar tdx, tdy;\n\t\t\t\tvar snapInvMatrix = handlerData.handler.transform().diffMatrix.invert();\n\t\t\t\tsnapInvMatrix.e = snapInvMatrix.f = 0;\n\t\t\t\ttdx = snapInvMatrix.x(dx, dy);\n\t\t\t\ttdy = snapInvMatrix.y(dx, dy);\n\t\n\t\t\t\tthis.currentPosition.x = e.clientX;\n\t\t\t\tthis.currentPosition.y = e.clientY;\n\t\t\t\tif (!this.checkBondaries(dx, dy)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\n\t\t\t\thandlerData.handler.transform(\"t\" + [tdx, tdy] + handlerData.handler.data(\"origTransform\"));\n\t\t\t\tthis.updateShapePositions(handlerData, tdx, tdy);\n\t\t\t},\n\t\n\t\t\tonStop: function onStop() {\n\t\t\t\tthis.isResizing = false;\n\t\t\t\tthis.startPosition = {};\n\t\t\t\tthis.currentPosition = {};\n\t\t\t}\n\t\t},\n\t\n\t\tcheckBondaries: function checkBondaries(dx, dy) {\n\t\t\tvar result = true;\n\t\t\tvar origBounding = this.shape.data(\"origBounding\");\n\t\t\tvar getBoundingClientRect = this.shape.node.getBoundingClientRect();\n\t\n\t\t\tif (origBounding.width - dx <= this.SHAPE_MIN_SIZE) {\n\t\t\t\tresult = false;\n\t\t\t}\n\t\n\t\t\tif (origBounding.height - dy <= this.SHAPE_MIN_SIZE) {\n\t\t\t\tresult = false;\n\t\t\t}\n\t\n\t\t\treturn result;\n\t\t},\n\t\n\t\tdestroy: function destroy() {\n\t\t\tthis.handlers.map(function (handlerData) {\n\t\t\t\thandlerData.handler.remove();\n\t\t\t});\n\t\t\tdelete this;\n\t\t},\n\t\n\t\tgetZoomFactor: function getZoomFactor() {\n\t\t\treturn {\n\t\t\t\tx: this.viewPort.width / this.viewBox[2],\n\t\t\t\ty: this.viewPort.height / this.viewBox[3]\n\t\t\t};\n\t\t},\n\t\n\t\tattachEvents: function attachEvents() {\n\t\t\tvar self = this;\n\t\t\tthis.handlers.map(function (handlerData) {\n\t\t\t\thandlerData.handler.drag(self.dragEvents.onMove.bind(self, handlerData), self.dragEvents.onStart.bind(self, handlerData), self.dragEvents.onStop.bind(self, handlerData));\n\t\t\t});\n\t\n\t\t\t_utils.eventEmitter.on(\"cutout:clear\", function () {\n\t\t\t\tself.destroy();\n\t\t\t});\n\t\n\t\t\tthis.shapesGroup.drag(function (dx, dy) {\n\t\t\t\tif (self.isResizing) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tvar snapInvMatrix = this.transform().diffMatrix.invert();\n\t\t\t\tsnapInvMatrix.e = snapInvMatrix.f = 0;\n\t\t\t\tvar tdx = snapInvMatrix.x(dx, dy);\n\t\t\t\tvar tdy = snapInvMatrix.y(dx, dy);\n\t\n\t\t\t\tvar transformValue = this.data('origTransform') + (this.data('origTransform') ? \"T\" : \"t\") + [tdx, tdy];\n\t\t\t\tthis.transform(transformValue);\n\t\t\t}, function () {\n\t\t\t\tthis.data('origTransform', this.transform().local);\n\t\t\t}, this.noop);\n\t\t}\n\t};\n\t\n\texports.default = {\n\t\n\t\tenable_resizer: function enable_resizer(paper, rect, viewPort, cViewbox) {\n\t\t\tnew ShapeResizer(paper, rect, viewPort, cViewbox);\n\t\t}\n\t};\n\n/***/ },\n/* 35 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\t\n\tvar _snapsvg = __webpack_require__(3);\n\t\n\tvar _snapsvg2 = _interopRequireDefault(_snapsvg);\n\t\n\tvar _shapeResizer = __webpack_require__(34);\n\t\n\tvar _shapeResizer2 = _interopRequireDefault(_shapeResizer);\n\t\n\tvar _utils = __webpack_require__(1);\n\t\n\tvar _snapsvgZoom = __webpack_require__(5);\n\t\n\tvar _snapsvgZoom2 = _interopRequireDefault(_snapsvgZoom);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\t/* custom plugins */\n\t_snapsvg2.default.plugin(function (Snap, Element, Paper, glob) {\n\t\tvar elproto = Element.prototype;\n\t\n\t\telproto.toBack = function () {\n\t\t\tthis.prependTo(this.paper);\n\t\t};\n\t\n\t\telproto.toFront = function () {\n\t\t\tthis.appendTo(this.paper);\n\t\t};\n\t});\n\t\n\tElement.prototype.getTransformedXY = function (x, y) {\n\t\tvar m = this.transform().globalMatrix;\n\t\treturn { x: m.x(x, y), y: m.y(x, y) };\n\t};\n\t\n\tvar paper = null;\n\tvar mainImage = null;\n\tvar pointData = [];\n\tvar viewBoxBounds = { X: 100, Y: 100 };\n\tvar zoomFactor = { x: 1, y: 1 };\n\tvar viewPort = { width: 850, height: 850 };\n\tvar currentViewBox = [];\n\tvar config = null;\n\tvar readOnly = false;\n\tvar startPoint = null;\n\tvar drawing_path = null;\n\tvar canDraw = false;\n\tvar rectZone = null;\n\tvar PATH_COLOR = \"#ff00ff\";\n\tvar STROKE_COLOR = \"red\";\n\tvar FILL_COLOR = \"orange\";\n\t\n\tvar SELECTED_COLOR = \"#ffff00\";\n\tvar FIRST_NODE_COLOR = \"#FF0000\";\n\tvar HANDLE_SIZE = 8;\n\tvar isDragged = false;\n\tvar enablePoint = true;\n\tvar pathIsClosed = false;\n\tvar ENABLE_NEW_NODE = true;\n\tvar RECT_MODE = 'RECT';\n\tvar drawingMode = RECT_MODE; //free\n\tvar FREE_MODE = 'FREE';\n\tvar availableModes = [RECT_MODE, FREE_MODE];\n\tvar onChangeCallback = null;\n\t\n\tvar getId = function () {\n\t\tvar cpt = 0;\n\t\tvar defautPrefix = \"item_\";\n\t\treturn function (prefix) {\n\t\t\tprefix = typeof prefix === 'string' ? prefix : defautPrefix;\n\t\t\tcpt = cpt + 1;\n\t\t\treturn prefix + cpt;\n\t\t};\n\t}();\n\t\n\tvar handleRectPath = function handleRectPath(path) {\n\t\tif (readOnly) {\n\t\t\tpaper.path(path).attr({ stroke: 'red', opacity: 0.6 });\n\t\t\treturn;\n\t\t}\n\t\n\t\tvar bbBox = _snapsvg2.default.path.getBBox(path);\n\t\trectZone = paper.rect(bbBox.x, bbBox.y, bbBox.width, bbBox.height);\n\t\trectZone.attr({ fill: FILL_COLOR, stroke: STROKE_COLOR, opacity: 0.6 });\n\t\tdrawing_path = rectZone;\n\t\tcanDraw = false;\n\t\tpathIsClosed = true;\n\t\t_shapeResizer2.default.enable_resizer(paper, drawing_path, viewPort, currentViewBox);\n\t};\n\t\n\tvar handleFreePath = function handleFreePath(path) {\n\t\n\t\tif (readOnly) {\n\t\n\t\t\tpaper.path(path).attr({\n\t\t\t\tstroke: 'orange',\n\t\t\t\tfill: 'orange',\n\t\t\t\topacity: 0.5\n\t\t\t});\n\t\n\t\t\treturn;\n\t\t}\n\t\n\t\tvar pathInfos = _snapsvg2.default.parsePathString(path);\n\t\tpathInfos.map(function (pathData) {\n\t\t\tif (pathData[0] !== 'Z') {\n\t\t\t\tcreatePoint(paper, pathData[1], pathData[2], pointData);\n\t\t\t} else {\n\t\t\t\tpathIsClosed = true;\n\t\t\t\tupdatePath(paper, onClosePath);\n\t\t\t}\n\t\t});\n\t\n\t\t/* replay the path here */\n\t};\n\t//transform point to path\n\tvar updatePath = function updatePath(paper, updateCallback) {\n\t\tvar path = \"M\";\n\t\n\t\tif (pointData.length <= 1) {\n\t\t\treturn;\n\t\t}\n\t\n\t\tpath += pointData[0].x + ',' + pointData[0].y;\n\t\n\t\tfor (var i = 0; i < pointData.length; i++) {\n\t\t\tif (i == 0) continue;\n\t\n\t\t\tvar pointInfos = pointData[i];\n\t\t\tvar lPath = \"L\" + pointInfos.x + \",\" + pointInfos.y;\n\t\t\tpath += \" \" + lPath;\n\t\t}\n\t\n\t\tpath += pathIsClosed ? \" Z\" : \"\";\n\t\n\t\t/* remove prev path */\n\t\tif (drawing_path) {\n\t\t\tdrawing_path.remove();\n\t\t}\n\t\n\t\tdrawing_path = paper.path(path);\n\t\n\t\tdrawing_path.attr({\n\t\t\tstroke: STROKE_COLOR,\n\t\t\t\"vector-effect\": \"non-scaling-stroke\", //prevent line to be zoom in\n\t\t\t\"stroke-width\": 3,\n\t\t\tfill: \"white\",\n\t\t\topacity: 0.1\n\t\t});\n\t\n\t\t/* bring all handler to front */\n\t\tpointData.map(function (point) {\n\t\n\t\t\t/*deal with handler size */\n\t\t\tvar handleSize = computeHandleSize();\n\t\t\tif (point.handler) {\n\t\t\t\tpoint.handler.toFront();\n\t\t\t}\n\t\t});\n\t\n\t\tif (typeof updateCallback === 'function' && pathIsClosed) {\n\t\t\tupdateCallback();\n\t\t}\n\t\n\t\tif (!updateCallback && pathIsClosed) {\n\t\t\tapplyClosedStyle();\n\t\t}\n\t};\n\t\n\tvar applyClosedStyle = function applyClosedStyle() {\n\t\tdrawing_path.attr({ fill: FILL_COLOR, strokeWidth: 1, opacity: .6 });\n\t};\n\t\n\tvar onClosePath = function onClosePath() {\n\t\tENABLE_NEW_NODE = false;\n\t\tapplyClosedStyle();\n\t};\n\t\n\tvar onClickOnHandler = function onClickOnHandler(point, p, e) {\n\t\t//close path\n\t\tif (point.isFirst && pointData.length > 2) {\n\t\t\tpathIsClosed = true;\n\t\t}\n\t};\n\t\n\tvar updatePointPosition = function updatePointPosition(newPoint, x, y) {\n\t\tvar index = pointData.indexOf(newPoint);\n\t\tif (index !== -1) {\n\t\t\tpointData[index].x = x;\n\t\t\tpointData[index].y = y;\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t};\n\t\n\tvar clearPreviousPath = function clearPreviousPath() {\n\t\tdrawing_path.remove();\n\t};\n\t\n\tvar computeHandleSize = function computeHandleSize() {\n\t\n\t\tif (!currentViewBox.length) {\n\t\t\tcurrentViewBox = [0, 0, parseInt(mainImage.width()), parseInt(mainImage.height())];\n\t\t}\n\t\tvar currentHandleSize = HANDLE_SIZE * Math.min(currentViewBox[2], currentViewBox[3]) / 850;\n\t\treturn currentHandleSize;\n\t};\n\t\n\tvar onMoveHandler = function onMoveHandler(dx, dy, posX, posY, e) {\n\t\tisDragged = true;\n\t\tvar tdx, tdy;\n\t\tvar snapInvMatrix = this.transform().diffMatrix.invert();\n\t\tsnapInvMatrix.e = snapInvMatrix.f = 0;\n\t\ttdx = snapInvMatrix.x(dx, dy);\n\t\ttdy = snapInvMatrix.y(dx, dy);\n\t\tvar transformValue = this.data('origTransform') + (this.data('origTransform') ? \"T\" : \"t\") + [tdx, tdy];\n\t\tthis.attr({ transform: transformValue });\n\t\tvar boxSize = this.getBBox();\n\t\n\t\tvar wasUpdated = updatePointPosition(this.data('point'), boxSize.x + computeHandleSize() / 2, boxSize.y + computeHandleSize() / 2);\n\t\n\t\tif (wasUpdated) {\n\t\t\tupdatePath(this.paper);\n\t\t}\n\t};\n\t\n\tvar bindHandlerEvent = function bindHandlerEvent(point, p) {\n\t\tpoint.handler.click(onClickOnHandler.bind(this, point, p));\n\t\t/* -- handler -- */\n\t\tpoint.handler.hover(function () {\n\t\t\tpoint.handler.attr({ fill: 'yellow' });\n\t\t}, function () {\n\t\t\tvar fillColor = point.isFirst ? FIRST_NODE_COLOR : \"\";\n\t\t\tpoint.handler.attr({ fill: fillColor });\n\t\t});\n\t\n\t\tpoint.handler.drag(onMoveHandler, function () {\n\t\t\tthis.data('origTransform', this.transform().local);\n\t\t}, function () {\n\t\t\tif (!isDragged) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tisDragged = false;\n\t\t\tenablePoint = false;\n\t\t});\n\t};\n\t\n\tvar createPointHandler = function createPointHandler(p, point) {\n\t\tvar handler;\n\t\tvar handleSize = computeHandleSize();\n\t\tvar handleX = point.x - handleSize / 2;\n\t\tvar handleY = point.y - handleSize / 2;\n\t\n\t\t/* preserve initial size of 5px a quoi correspond 5 deal with current vp */\n\t\thandler = p.rect(handleX, handleY, handleSize, handleSize);\n\t\n\t\thandler.addClass(\"drawingHandler\");\n\t\tpoint.handler = handler;\n\t\tpoint.handler.data('point', point);\n\t\tif (pointData.length === 0) {\n\t\t\tpoint.isFirst = true;\n\t\t}\n\t\n\t\tbindHandlerEvent(point, p);\n\t\tpoint.handler.attr({\n\t\t\tfill: pointData.length === 0 ? FIRST_NODE_COLOR : \"\",\n\t\t\topacity: 0.9,\n\t\t\tstroke: PATH_COLOR\n\t\t});\n\t\n\t\treturn point;\n\t};\n\t\n\t//create paper\n\tvar createPoint = function createPoint(paper, x, y, pointData) {\n\t\n\t\tvar point = { x: x, y: y, id: getId() };\n\t\n\t\tif (pathIsClosed) {\n\t\t\tupdatePath(paper, onClosePath);\n\t\t\treturn;\n\t\t}\n\t\n\t\tif (!enablePoint) {\n\t\t\tenablePoint = true;\n\t\t\treturn false;\n\t\t}\n\t\n\t\tpoint = createPointHandler(paper, point);\n\t\tpointData.push(point);\n\t\tupdatePath(paper);\n\t};\n\t\n\tvar attachRectEvents = function attachRectEvents(paper) {\n\t\tif (readOnly) {\n\t\t\treturn false;\n\t\t}\n\t\n\t\tvar startPosition = {};\n\t\tvar currentPosition = {};\n\t\t/* add resizer */\n\t\n\t\tpaper.mousedown(function (e) {\n\t\n\t\t\tif (drawingMode === FREE_MODE || pathIsClosed) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tstartPosition.x = e.offsetX;\n\t\t\tstartPosition.y = e.offsetY;\n\t\t\tcanDraw = true;\n\t\t});\n\t\n\t\tpaper.mousemove(function (e) {\n\t\t\tif (drawingMode === FREE_MODE) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (!canDraw) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar x, y;\n\t\t\tcurrentPosition.x = e.offsetX;\n\t\t\tcurrentPosition.y = e.offsetY;\n\t\n\t\t\tif (rectZone) {\n\t\t\t\trectZone.remove();\n\t\t\t}\n\t\n\t\t\t/* bas -> droite */\n\t\t\tvar width = Math.abs(currentPosition.x - startPosition.x);\n\t\t\tvar height = Math.abs(startPosition.y - currentPosition.y);\n\t\n\t\t\tif (currentPosition.y > startPosition.y && currentPosition.x > startPosition.x) {\n\t\t\t\tx = startPosition.x;\n\t\t\t\ty = startPosition.y;\n\t\t\t}\n\t\n\t\t\t/* haut -> droite */\n\t\t\tif (currentPosition.y < startPosition.y && currentPosition.x > startPosition.x) {\n\t\t\t\tx = currentPosition.x - width;\n\t\t\t\ty = currentPosition.y;\n\t\t\t}\n\t\n\t\t\t/* haut -> gauche */\n\t\t\tif (currentPosition.y < startPosition.y && currentPosition.x < startPosition.x) {\n\t\t\t\tx = currentPosition.x;\n\t\t\t\ty = currentPosition.y;\n\t\t\t}\n\t\n\t\t\t/* bas -> gauche */\n\t\t\tif (currentPosition.y > startPosition.y && currentPosition.x < startPosition.x) {\n\t\t\t\tx = currentPosition.x;\n\t\t\t\ty = currentPosition.y - height;\n\t\t\t}\n\t\t\tif (!x || !y) {\n\t\t\t\treturn;\n\t\t\t}\n\t\n\t\t\trectZone = paper.rect(x, y, width, height);\n\t\t\trectZone.attr({ fill: FILL_COLOR, stroke: STROKE_COLOR, opacity: 0.6 });\n\t\t});\n\t\n\t\tpaper.mouseup(function () {\n\t\t\tif (drawingMode === FREE_MODE || pathIsClosed || !rectZone) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tdrawing_path = rectZone;\n\t\t\t_shapeResizer2.default.enable_resizer(paper, rectZone, viewPort, currentViewBox);\n\t\t\tcanDraw = false;\n\t\t\tpathIsClosed = true;\n\t\t});\n\t};\n\tvar attachPointEvents = function attachPointEvents(paper) {\n\t\tif (readOnly) {\n\t\t\treturn;\n\t\t}\n\t\tpaper.click(function (e) {\n\t\t\tif (drawingMode === RECT_MODE) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\n\t\t\tif (!ENABLE_NEW_NODE) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tcreatePoint(paper, e.offsetX, e.offsetY, pointData);\n\t\t});\n\t};\n\t\n\tvar attachZoomEvents = function attachZoomEvents() {\n\t\n\t\t_utils.eventEmitter.on(\"zoomChanged\", function (zoomInfos) {\n\t\t\tzoomFactor = zoomInfos.zoomFactor;\n\t\t\tcurrentViewBox = zoomInfos.currentViewBox;\n\t\t\tvar previousPath = API.getPath();\n\t\t\tAPI.clear();\n\t\t\tAPI.setPath(previousPath);\n\t\t});\n\t};\n\t\n\tvar API = {\n\t\n\t\tgetPaper: function getPaper() {\n\t\t\treturn paper;\n\t\t},\n\t\n\t\tsetPath: function setPath(pathString) {\n\t\t\t/* redraw the path */\n\t\t\tvar pathInfos = pathString.split(';');\n\t\t\tif (availableModes.indexOf(pathInfos[1]) === -1) {\n\t\t\t\t/* We assume then it is a free path */\n\t\t\t\tpathInfos[1] = \"FREE\";\n\t\t\t}\n\t\n\t\t\tthis.setDrawingMode(pathInfos[1]);\n\t\t\tvar pathData = pathInfos[0];\n\t\n\t\t\tif (!pathData.length) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t/* deal with path nomalization x = ImageWith/MaxXBound */\n\t\t\tvar xRatio = mainImage.attr(\"width\") / viewBoxBounds.X;\n\t\t\tvar yRatio = mainImage.attr(\"height\") / viewBoxBounds.Y;\n\t\n\t\t\tif (isNaN(xRatio) || isNaN(yRatio)) {\n\t\t\t\tnew Error('Ratio should be a number.');\n\t\t\t}\n\t\n\t\t\tvar transformMatrix = _snapsvg2.default.matrix(xRatio, 0, 0, yRatio, 0, 0);\n\t\t\tvar path = _snapsvg2.default.path.map(pathData, transformMatrix).toString();\n\t\n\t\t\t/* always close path */\n\t\t\tif (path.search(/[z|Z]/gi) === -1) {\n\t\t\t\tpath += \"Z\";\n\t\t\t}\n\t\t\tif (pathInfos.length >= 2) {\n\t\t\t\tif (pathInfos[1] === RECT_MODE) {\n\t\t\t\t\thandleRectPath(path);\n\t\t\t\t}\n\t\n\t\t\t\tif (pathInfos[1] === FREE_MODE) {\n\t\t\t\t\thandleFreePath(path);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\n\t\tsetDrawingMode: function setDrawingMode(mode) {\n\t\n\t\t\tif (availableModes.indexOf(mode) !== -1) {\n\t\t\t\tdrawingMode = mode;\n\t\t\t}\n\t\t\tif (typeof onChangeCallback === \"function\") {\n\t\t\t\tonChangeCallback(drawingMode);\n\t\t\t}\n\t\n\t\t\tthis.clear();\n\t\t},\n\t\n\t\tclear: function clear() {\n\t\t\t/* clear previous path, point, handler */\n\t\t\tpointData.map(function (point) {\n\t\t\t\tif (point.handler) {\n\t\t\t\t\tpoint.handler.remove();\n\t\t\t\t}\n\t\t\t});\n\t\n\t\t\t/*clear path is exists*/\n\t\t\tif (drawing_path) {\n\t\t\t\tdrawing_path.remove();\n\t\t\t}\n\t\t\t_utils.eventEmitter.emit(\"cutout:clear\");\n\t\t\tpointData = [];\n\t\t\tstartPoint = null;\n\t\t\tdrawing_path = null;\n\t\t\tisDragged = false;\n\t\t\tenablePoint = true;\n\t\t\tpathIsClosed = false;\n\t\t\tENABLE_NEW_NODE = true;\n\t\t},\n\t\n\t\tgetShapeBBox: function getShapeBBox() {\n\t\t\tvar currentPath = this.getPath();\n\t\t\treturn _snapsvg2.default.path.getBBox(currentPath);\n\t\t},\n\t\n\t\tgetShape: function getShape() {\n\t\t\treturn this.getPath();\n\t\t},\n\t\n\t\tgetPath: function getPath() {\n\t\t\t/* retourne le chemin */\n\t\t\t/* send path and BBox | implement edit and load path */\n\t\t\tvar path = \"\";\n\t\t\tif (drawing_path) {\n\t\t\t\tif (drawingMode === RECT_MODE) {\n\t\t\t\t\tvar bBox = drawing_path.getBBox();\n\t\t\t\t\tvar transform = drawing_path.transform();\n\t\n\t\t\t\t\tif (!transform.global.length) {\n\t\t\t\t\t\tvar shapePath = drawing_path.getBBox().path;\n\t\t\t\t\t} else {\n\t\n\t\t\t\t\t\tvar shapeX = drawing_path.node.getAttribute('x');\n\t\t\t\t\t\tvar shapeY = drawing_path.node.getAttribute('y');\n\t\t\t\t\t\tvar transformMatrix = transform.totalMatrix;\n\t\t\t\t\t\tvar fakeShape = paper.rect(transformMatrix.x(shapeX, shapeY), transformMatrix.y(shapeX, shapeY), bBox.width, bBox.height);\n\t\t\t\t\t\tshapePath = fakeShape.getBBox().path;\n\t\t\t\t\t\tfakeShape.remove();\n\t\t\t\t\t}\n\t\n\t\t\t\t\tpath = _snapsvg2.default.path.toAbsolute(shapePath).toString();\n\t\t\t\t} else {\n\t\t\t\t\tpath = drawing_path.attr('d');\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\tvar xRatio = viewBoxBounds.X / mainImage.attr(\"width\");\n\t\t\tvar yRatio = viewBoxBounds.Y / mainImage.attr(\"height\");\n\t\n\t\t\tif (isNaN(xRatio) || isNaN(yRatio)) {\n\t\t\t\tnew Error('ratio should be a number.');\n\t\t\t}\n\t\n\t\t\tif (!path.length) {\n\t\t\t\tpath = drawingMode === RECT_MODE ? \";RECT\" : \";FREE\";\n\t\t\t\treturn path;\n\t\t\t}\n\t\t\tvar normalizeMatrix = _snapsvg2.default.matrix(xRatio, 0, 0, yRatio, 0, 0);\n\t\n\t\t\tpath = _snapsvg2.default.path.map(path, normalizeMatrix).toString();\n\t\n\t\t\t/* save the type */\n\t\t\tvar type = drawingMode === RECT_MODE ? \";RECT\" : \";FREE\";\n\t\t\tif (path.search(/[z|Z]/gi) === -1) {\n\t\t\t\tpath += \" Z\";\n\t\t\t}\n\t\n\t\t\tpath += type;\n\t\n\t\t\treturn path;\n\t\t}\n\t};\n\t\n\t/* change to a component */\n\texports.default = {\n\t\n\t\tinit: function init(config) {\n\t\t\tmainImage = jQuery(config.wrapperId).find('.main-image').eq(0);\n\t\t\tvar cutCanvas = jQuery(config.wrapperId).find('.cut-canvas').eq(0);\n\t\t\tvar path = jQuery(config.wrapperId).find('.image-path').eq(0);\n\t\n\t\t\tif (typeof config.onDrawingModeChange === 'function') {\n\t\t\t\tonChangeCallback = config.onDrawingModeChange;\n\t\t\t}\n\t\n\t\t\tif (!mainImage.length) {\n\t\t\t\tthrow new Error(\"The main image Can't be found ...\");\n\t\t\t}\n\t\n\t\t\tif (!cutCanvas.length) {\n\t\t\t\tvar cutCanvas = jQuery('<svg version=\"1.1\"></svg>').addClass('cut-canvas');\n\t\t\t\tjQuery(config.wrapperId).append(cutCanvas);\n\t\t\t\tcutCanvas.append(mainImage);\n\t\t\t}\n\t\n\t\t\tcutCanvas.css({\n\t\t\t\tmarginLeft: 'auto',\n\t\t\t\tmarginRight: 'auto',\n\t\t\t\twidth: viewPort.width,\n\t\t\t\theight: viewPort.height\n\t\t\t});\n\t\t\tif (typeof config.readOnly === 'boolean' && config.readOnly === true) {\n\t\t\t\treadOnly = true;\n\t\t\t}\n\t\n\t\t\tpaper = new _snapsvg2.default(cutCanvas.get(0));\n\t\n\t\t\tif (path.length) {\n\t\t\t\tjQuery(cutCanvas).append(path);\n\t\t\t\tvar pathData = path.attr(\"d\");\n\t\t\t\tAPI.setPath(pathData);\n\t\t\t\tpath.remove();\n\t\t\t}\n\t\t\t/* enable zoom */\n\t\t\tattachZoomEvents();\n\t\t\tattachPointEvents(paper);\n\t\t\tattachRectEvents(paper);\n\t\n\t\t\treturn API;\n\t\t}\n\t};\n\n/***/ },\n/* 36 */\n/***/ function(module, exports, __webpack_require__) {\n\n\texports = module.exports = __webpack_require__(12)();\n\t// imports\n\t\n\t\n\t// module\n\texports.push([module.id, \"Typeahead[data-v-1]{position:relative}.selected-tags[data-v-1]{border:1px solid red;width:200px!important}.selected-tags select[data-v-1]{display:inline-block}.Typeahead__input[data-v-1]{width:100%;font-size:14px;color:#2c3e50;line-height:1.42857143;box-shadow:inset 0 1px 4px rgba(0,0,0,.4);-webkit-transition:border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;font-weight:300;padding:12px 26px;border:none;border-radius:22px;letter-spacing:1px;box-sizing:border-box}.Typeahead__input[data-v-1]:focus{border-color:#4fc08d;outline:0;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px #4fc08d}.tag-item[data-v-1]{border:1px solid red}.fa-times[data-v-1]{cursor:pointer}ul[data-v-1]{padding:0;margin-top:8px;min-width:100%;background-color:#fff;list-style:none;border-radius:4px;box-shadow:0 0 10px rgba(0,0,0,.25);z-index:1000}li[data-v-1]{padding:10px 16px;border-bottom:1px solid #ccc;cursor:pointer}li[data-v-1]:first-child{border-radius:4px 4px 0 0}li[data-v-1]:last-child{border-radius:0 0 4px 4px;border-bottom:0}span[data-v-1]{display:block;color:#2c3e50}.active[data-v-1]{background-color:#3aa373}.active span[data-v-1]{color:#fff}.name[data-v-1]{font-weight:700;font-size:18px}.screen-name[data-v-1]{font-style:italic}\", \"\"]);\n\t\n\t// exports\n\n\n/***/ },\n/* 37 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(global) {module.exports = global[\"$\"] = __webpack_require__(4);\n\t/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))\n\n/***/ },\n/* 38 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(global) {module.exports = global[\"Vue\"] = __webpack_require__(31);\n\t/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))\n\n/***/ },\n/* 39 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(global) {module.exports = global[\"jQuery\"] = __webpack_require__(4);\n\t/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))\n\n/***/ },\n/* 40 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __vue_exports__, __vue_options__\n\t\n\t/* script */\n\t__vue_exports__ = __webpack_require__(7)\n\t__vue_options__ = __vue_exports__ || {}\n\tif (__vue_options__.__esModule) __vue_options__ = __vue_options__.default\n\tif (typeof __vue_options__ === \"function\") __vue_options__ = __vue_options__.options\n\t\n\tmodule.exports = __vue_exports__ || __vue_options__\n\n\n/***/ },\n/* 41 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __vue_exports__, __vue_options__\n\t\n\t/* script */\n\t__vue_exports__ = __webpack_require__(8)\n\t__vue_options__ = __vue_exports__ || {}\n\tif (__vue_options__.__esModule) __vue_options__ = __vue_options__.default\n\tif (typeof __vue_options__ === \"function\") __vue_options__ = __vue_options__.options\n\t\n\tmodule.exports = __vue_exports__ || __vue_options__\n\n\n/***/ },\n/* 42 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __vue_exports__, __vue_options__\n\t\n\t/* script */\n\t__vue_exports__ = __webpack_require__(9)\n\t\n\t/* template */\n\tvar __vue_template__ = __webpack_require__(45)\n\t__vue_options__ = __vue_exports__ || {}\n\tif (__vue_options__.__esModule) __vue_options__ = __vue_options__.default\n\tif (typeof __vue_options__ === \"function\") __vue_options__ = __vue_options__.options\n\t__vue_options__.render = __vue_template__.render\n\t__vue_options__.staticRenderFns = __vue_template__.staticRenderFns\n\t\n\tmodule.exports = __vue_exports__ || __vue_options__\n\n\n/***/ },\n/* 43 */\n/***/ function(module, exports) {\n\n\tmodule.exports={render:function(){with(this){return _h('div',[_h('taglist',{ref:\"taglist\"}),\" \",\" \",_h('input',{directives:[{name:\"show\",value:(!readOnly),expression:\"!readOnly\"},{name:\"model\",value:(query),expression:\"query\"}],show:true,props:{\"value\":_s(query)},staticAttrs:{\"type\":\"text\",\"placeholder\":\"...\",\"autocomplete\":\"off\"},on:{\"keyup\":[function($event){if($event.keyCode!==8)return;checkQuery($event)},update],\"keydown\":[function($event){if($event.keyCode!==40)return;down($event)},function($event){if($event.keyCode!==38)return;up($event)},function($event){if($event.keyCode!==13)return;hit($event)},function($event){if($event.keyCode!==27)return;reset($event)}],\"input\":function($event){if($event.target.composing)return;query=$event.target.value}}}),\" \",_h('a',{directives:[{name:\"show\",value:(showAddButton),expression:\"showAddButton\"}],show:true,on:{\"click\":addTag}},[_m(0),\" Créer ce tag\"]),\" \",\" \",_h('ul',{directives:[{name:\"show\",value:(hasItems || !readOnly),expression:\"hasItems || !readOnly\"}],show:true},[(items)&&_l((items),function(item,index){return _h('li',{class:activeClass(index),on:{\"mousedown\":hit,\"mousemove\":function($event){setActive(index)}}},[_h('span',{props:{\"textContent\":_s(item.tag_label)}})])})]),\" \",_h('input',{directives:[{name:\"model\",value:(selectedTags),expression:\"selectedTags\"}],props:{\"value\":_s(selectedTags)},staticAttrs:{\"name\":\"tags\",\"type\":\"hidden\"},on:{\"input\":function($event){if($event.target.composing)return;selectedTags=$event.target.value}}})])}},staticRenderFns: [function(){with(this){return _h('i',{staticClass:\"fa fa-plus\"})}}]}\n\n/***/ },\n/* 44 */\n/***/ function(module, exports) {\n\n\tmodule.exports={render:function(){with(this){return _h('div',{staticClass:\"zoomview-wrapper\"},[_m(0),\" \",_h('svg',{ref:\"root-svg\"},[_h('image',{attrs:{\"xlink:href\":imageUrl,\"width\":imageWidth,\"height\":imageHeight},staticAttrs:{\"id\":\"small-image\",\"x\":\"0\",\"y\":\"0\",\"xmlns:xlink\":\"http://www.w3.org/1999/xlink\"}}),\" \",_h('rect',{directives:[{name:\"show\",value:(showHandler),expression:\"showHandler\"}],ref:\"handler\",show:true,staticAttrs:{\"id\":\"zoom-handler\",\"x\":\"0\",\"y\":\"0\",\"style\":\"fill:black; opacity:0.4\"}})]),\" \",_h('ul',{staticClass:\"form-drawing-wrapper zoom-action-list list-inline\"},[_h('li',{staticClass:\"small showPointer\",on:{\"click\":incraseDrawingZoom}},[_m(1)]),\" \",_h('li',{staticClass:\"small showPointer\",on:{\"click\":resetDrawingZoom}},[_m(2)]),\" \",_h('li',{staticClass:\"small showPointer\",on:{\"click\":decreaseDrawingZoom}},[_m(3)])])])}},staticRenderFns: [function(){with(this){return _h('p',{staticClass:\"form-drawing pullright\"},[_h('strong',[\"Zoom\"])])}},function(){with(this){return _h('i',{staticClass:\"fa fa-search-plus\"})}},function(){with(this){return _h('i',{staticClass:\"fa fa-square\"})}},function(){with(this){return _h('i',{staticClass:\"fa fa-search-minus\"})}}]}\n\n/***/ },\n/* 45 */\n/***/ function(module, exports) {\n\n\tmodule.exports={render:function(){with(this){return _h('div',[_h('ul',{directives:[{name:\"show\",value:(!readOnly),expression:\"!readOnly\"}],staticClass:\"tags-wrapper list-unstyled\",show:true},[(tags)&&_l((tags),function(tag,index){return _h('li',{ref:tag.id,refInFor:true,staticClass:\"tag-item\"},[_m(0),\" \",_h('strong',[_h('span',{props:{\"textContent\":_s(tag.tag_label)}})]),\"\\n\\n\\t\\t\\tPrécision: \\t\",_h('select',{on:{\"change\":function($event){updateAccuracy($event, tag)}}},[([1,2,3,4,5])&&_l(([1,2,3,4,5]),function(no,index){return _h('option',{props:{\"selected\":tag.accuracy == no,\"value\":no}},[_s(no)])})]),\"\\n\\n\\t\\t\\tPertinence: \",_h('select',{on:{\"change\":function($event){updatePertinence($event, tag)}}},[([1,2,3,4,5])&&_l(([1,2,3,4,5]),function(no,index){return _h('option',{props:{\"selected\":tag.relevancy == no,\"value\":no}},[_s(no)])})]),\" \",_h('a',{on:{\"click\":function($event){removeTag(tag)}}},[_m(1)])])})]),\" \",_h('ul',{directives:[{name:\"show\",value:(readOnly),expression:\"readOnly\"}],staticClass:\"list-inline\",show:true},[(tags)&&_l((tags),function(tag,index){return _h('li',[_m(2),\" \",_h('span',{staticClass:\"label label-info\"},[_s(tag.tag_label)]),\"\\n\\t\\t\\t | précision \",_h('span',{staticClass:\"badge\"},[_s(tag.accuracy)]),\"\\n\\t\\t\\t | pertinence \",_h('span',{staticClass:\"badge\"},[_s(tag.relevancy)])])})])])}},staticRenderFns: [function(){with(this){return _h('i',{staticClass:\"fa fa-tag\"})}},function(){with(this){return _h('i',{staticClass:\"fa fa-trash\"})}},function(){with(this){return _h('i',{staticClass:\"fa fa-tag\"})}}]}\n\n/***/ },\n/* 46 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/*\n\t\tMIT License http://www.opensource.org/licenses/mit-license.php\n\t\tAuthor Tobias Koppers @sokra\n\t*/\n\tvar stylesInDom = {},\n\t\tmemoize = function(fn) {\n\t\t\tvar memo;\n\t\t\treturn function () {\n\t\t\t\tif (typeof memo === \"undefined\") memo = fn.apply(this, arguments);\n\t\t\t\treturn memo;\n\t\t\t};\n\t\t},\n\t\tisOldIE = memoize(function() {\n\t\t\treturn /msie [6-9]\\b/.test(window.navigator.userAgent.toLowerCase());\n\t\t}),\n\t\tgetHeadElement = memoize(function () {\n\t\t\treturn document.head || document.getElementsByTagName(\"head\")[0];\n\t\t}),\n\t\tsingletonElement = null,\n\t\tsingletonCounter = 0,\n\t\tstyleElementsInsertedAtTop = [];\n\t\n\tmodule.exports = function(list, options) {\n\t\tif(false) {\n\t\t\tif(typeof document !== \"object\") throw new Error(\"The style-loader cannot be used in a non-browser environment\");\n\t\t}\n\t\n\t\toptions = options || {};\n\t\t// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n\t\t// tags it will allow on a page\n\t\tif (typeof options.singleton === \"undefined\") options.singleton = isOldIE();\n\t\n\t\t// By default, add <style> tags to the bottom of <head>.\n\t\tif (typeof options.insertAt === \"undefined\") options.insertAt = \"bottom\";\n\t\n\t\tvar styles = listToStyles(list);\n\t\taddStylesToDom(styles, options);\n\t\n\t\treturn function update(newList) {\n\t\t\tvar mayRemove = [];\n\t\t\tfor(var i = 0; i < styles.length; i++) {\n\t\t\t\tvar item = styles[i];\n\t\t\t\tvar domStyle = stylesInDom[item.id];\n\t\t\t\tdomStyle.refs--;\n\t\t\t\tmayRemove.push(domStyle);\n\t\t\t}\n\t\t\tif(newList) {\n\t\t\t\tvar newStyles = listToStyles(newList);\n\t\t\t\taddStylesToDom(newStyles, options);\n\t\t\t}\n\t\t\tfor(var i = 0; i < mayRemove.length; i++) {\n\t\t\t\tvar domStyle = mayRemove[i];\n\t\t\t\tif(domStyle.refs === 0) {\n\t\t\t\t\tfor(var j = 0; j < domStyle.parts.length; j++)\n\t\t\t\t\t\tdomStyle.parts[j]();\n\t\t\t\t\tdelete stylesInDom[domStyle.id];\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n\t\n\tfunction addStylesToDom(styles, options) {\n\t\tfor(var i = 0; i < styles.length; i++) {\n\t\t\tvar item = styles[i];\n\t\t\tvar domStyle = stylesInDom[item.id];\n\t\t\tif(domStyle) {\n\t\t\t\tdomStyle.refs++;\n\t\t\t\tfor(var j = 0; j < domStyle.parts.length; j++) {\n\t\t\t\t\tdomStyle.parts[j](item.parts[j]);\n\t\t\t\t}\n\t\t\t\tfor(; j < item.parts.length; j++) {\n\t\t\t\t\tdomStyle.parts.push(addStyle(item.parts[j], options));\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tvar parts = [];\n\t\t\t\tfor(var j = 0; j < item.parts.length; j++) {\n\t\t\t\t\tparts.push(addStyle(item.parts[j], options));\n\t\t\t\t}\n\t\t\t\tstylesInDom[item.id] = {id: item.id, refs: 1, parts: parts};\n\t\t\t}\n\t\t}\n\t}\n\t\n\tfunction listToStyles(list) {\n\t\tvar styles = [];\n\t\tvar newStyles = {};\n\t\tfor(var i = 0; i < list.length; i++) {\n\t\t\tvar item = list[i];\n\t\t\tvar id = item[0];\n\t\t\tvar css = item[1];\n\t\t\tvar media = item[2];\n\t\t\tvar sourceMap = item[3];\n\t\t\tvar part = {css: css, media: media, sourceMap: sourceMap};\n\t\t\tif(!newStyles[id])\n\t\t\t\tstyles.push(newStyles[id] = {id: id, parts: [part]});\n\t\t\telse\n\t\t\t\tnewStyles[id].parts.push(part);\n\t\t}\n\t\treturn styles;\n\t}\n\t\n\tfunction insertStyleElement(options, styleElement) {\n\t\tvar head = getHeadElement();\n\t\tvar lastStyleElementInsertedAtTop = styleElementsInsertedAtTop[styleElementsInsertedAtTop.length - 1];\n\t\tif (options.insertAt === \"top\") {\n\t\t\tif(!lastStyleElementInsertedAtTop) {\n\t\t\t\thead.insertBefore(styleElement, head.firstChild);\n\t\t\t} else if(lastStyleElementInsertedAtTop.nextSibling) {\n\t\t\t\thead.insertBefore(styleElement, lastStyleElementInsertedAtTop.nextSibling);\n\t\t\t} else {\n\t\t\t\thead.appendChild(styleElement);\n\t\t\t}\n\t\t\tstyleElementsInsertedAtTop.push(styleElement);\n\t\t} else if (options.insertAt === \"bottom\") {\n\t\t\thead.appendChild(styleElement);\n\t\t} else {\n\t\t\tthrow new Error(\"Invalid value for parameter 'insertAt'. Must be 'top' or 'bottom'.\");\n\t\t}\n\t}\n\t\n\tfunction removeStyleElement(styleElement) {\n\t\tstyleElement.parentNode.removeChild(styleElement);\n\t\tvar idx = styleElementsInsertedAtTop.indexOf(styleElement);\n\t\tif(idx >= 0) {\n\t\t\tstyleElementsInsertedAtTop.splice(idx, 1);\n\t\t}\n\t}\n\t\n\tfunction createStyleElement(options) {\n\t\tvar styleElement = document.createElement(\"style\");\n\t\tstyleElement.type = \"text/css\";\n\t\tinsertStyleElement(options, styleElement);\n\t\treturn styleElement;\n\t}\n\t\n\tfunction addStyle(obj, options) {\n\t\tvar styleElement, update, remove;\n\t\n\t\tif (options.singleton) {\n\t\t\tvar styleIndex = singletonCounter++;\n\t\t\tstyleElement = singletonElement || (singletonElement = createStyleElement(options));\n\t\t\tupdate = applyToSingletonTag.bind(null, styleElement, styleIndex, false);\n\t\t\tremove = applyToSingletonTag.bind(null, styleElement, styleIndex, true);\n\t\t} else {\n\t\t\tstyleElement = createStyleElement(options);\n\t\t\tupdate = applyToTag.bind(null, styleElement);\n\t\t\tremove = function() {\n\t\t\t\tremoveStyleElement(styleElement);\n\t\t\t};\n\t\t}\n\t\n\t\tupdate(obj);\n\t\n\t\treturn function updateStyle(newObj) {\n\t\t\tif(newObj) {\n\t\t\t\tif(newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap)\n\t\t\t\t\treturn;\n\t\t\t\tupdate(obj = newObj);\n\t\t\t} else {\n\t\t\t\tremove();\n\t\t\t}\n\t\t};\n\t}\n\t\n\tvar replaceText = (function () {\n\t\tvar textStore = [];\n\t\n\t\treturn function (index, replacement) {\n\t\t\ttextStore[index] = replacement;\n\t\t\treturn textStore.filter(Boolean).join('\\n');\n\t\t};\n\t})();\n\t\n\tfunction applyToSingletonTag(styleElement, index, remove, obj) {\n\t\tvar css = remove ? \"\" : obj.css;\n\t\n\t\tif (styleElement.styleSheet) {\n\t\t\tstyleElement.styleSheet.cssText = replaceText(index, css);\n\t\t} else {\n\t\t\tvar cssNode = document.createTextNode(css);\n\t\t\tvar childNodes = styleElement.childNodes;\n\t\t\tif (childNodes[index]) styleElement.removeChild(childNodes[index]);\n\t\t\tif (childNodes.length) {\n\t\t\t\tstyleElement.insertBefore(cssNode, childNodes[index]);\n\t\t\t} else {\n\t\t\t\tstyleElement.appendChild(cssNode);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tfunction applyToTag(styleElement, obj) {\n\t\tvar css = obj.css;\n\t\tvar media = obj.media;\n\t\tvar sourceMap = obj.sourceMap;\n\t\n\t\tif (media) {\n\t\t\tstyleElement.setAttribute(\"media\", media);\n\t\t}\n\t\n\t\tif (sourceMap) {\n\t\t\t// https://developer.chrome.com/devtools/docs/javascript-debugging\n\t\t\t// this makes source maps inside style tags work properly in Chrome\n\t\t\tcss += '\\n/*# sourceURL=' + sourceMap.sources[0] + ' */';\n\t\t\t// http://stackoverflow.com/a/26603875\n\t\t\tcss += \"\\n/*# sourceMappingURL=data:application/json;base64,\" + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + \" */\";\n\t\t}\n\t\n\t\tif (styleElement.styleSheet) {\n\t\t\tstyleElement.styleSheet.cssText = css;\n\t\t} else {\n\t\t\twhile(styleElement.firstChild) {\n\t\t\t\tstyleElement.removeChild(styleElement.firstChild);\n\t\t\t}\n\t\t\tstyleElement.appendChild(document.createTextNode(css));\n\t\t}\n\t}\n\n\n/***/ },\n/* 47 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// style-loader: Adds some css to the DOM by adding a <style> tag\n\t\n\t// load the styles\n\tvar content = __webpack_require__(36);\n\tif(typeof content === 'string') content = [[module.id, content, '']];\n\t// add the styles to the DOM\n\tvar update = __webpack_require__(46)(content, {});\n\tif(content.locals) module.exports = content.locals;\n\t// Hot Module Replacement\n\tif(false) {\n\t\t// When the styles change, update the <style> tags\n\t\tif(!content.locals) {\n\t\t\tmodule.hot.accept(\"!!./../../../node_modules/css-loader/index.js!./../../../node_modules/vue-loader/lib/style-rewriter.js?id=data-v-1&scoped=true!./style.css\", function() {\n\t\t\t\tvar newContent = require(\"!!./../../../node_modules/css-loader/index.js!./../../../node_modules/vue-loader/lib/style-rewriter.js?id=data-v-1&scoped=true!./style.css\");\n\t\t\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\t\t\t\tupdate(newContent);\n\t\t\t});\n\t\t}\n\t\t// When the module is disposed, remove the <style> tags\n\t\tmodule.hot.dispose(function() { update(); });\n\t}\n\n/***/ }\n/******/ ]);\n\n\n/** WEBPACK FOOTER **\n ** build.js\n **/"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/dist/\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap a880aadc8beb018d0b8b\n **/","import 'expose?Vue!vue/dist/vue'\nimport \"expose?jQuery!jquery\"\nimport \"expose?$!jquery\"\n\nimport VueResource from 'vue-resource'\nimport Typeahead from './components/typeahead/Typeahead.vue'\nimport Cutout from './components/cutout'\nimport Zoomview from './components/zoomview/Zoomview.vue'\nimport MergeTool from './components/mergetool/MergeTool.vue'\n\nvar iconolab = {\n\tCutout : Cutout,\n\tVueComponents : {\n\t\tTypeahead: Typeahead,\n\t\tMergeTool: MergeTool,\n\t\tZoomview: Zoomview\n\t}\n};\n\nif (!window.iconolab) {\n\twindow.iconolab = iconolab;\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/main.js\n **/","import EventEmitter from 'event-emitter' \nvar eventEmitter = EventEmitter({});\n\n\nvar generateId = (function () {\n\t\tvar cpt = 0;\n\t\tvar defautPrefix = \"item_\"; \n\t\treturn function (prefix) {\n\t\t\tprefix = (typeof prefix === \"string\") ? prefix : defautPrefix;\n\t\t\tcpt = cpt + 1;\n\t\t\treturn prefix + cpt; \n\t\t}\n\t}());\n\nexport { generateId , eventEmitter }\n\n\n/** WEBPACK FOOTER **\n ** ./src/components/utils/index.js\n **/","var __vue_exports__, __vue_options__\n\n/* styles */\nrequire(\"!!vue-style-loader!css-loader!vue-loader/lib/style-rewriter?id=data-v-1&scoped=true!./style.css\")\n\n/* script */\n__vue_exports__ = require(\"!!babel-loader!vue-loader/lib/selector?type=script&index=0!./Typeahead.vue\")\n\n/* template */\nvar __vue_template__ = require(\"!!vue-loader/lib/template-compiler?id=data-v-1!./template.html\")\n__vue_options__ = __vue_exports__ || {}\nif (__vue_options__.__esModule) __vue_options__ = __vue_options__.default\nif (typeof __vue_options__ === \"function\") __vue_options__ = __vue_options__.options\n__vue_options__.render = __vue_template__.render\n__vue_options__.staticRenderFns = __vue_template__.staticRenderFns\n__vue_options__._scopeId = \"data-v-1\"\n\nmodule.exports = __vue_exports__ || __vue_options__\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/typeahead/Typeahead.vue\n ** module id = 2\n ** module chunks = 0\n **/","/*** IMPORTS FROM imports-loader ***/\n(function() {\nvar fix = module.exports=0;\n\n// Snap.svg 0.4.0\n// \n// Copyright (c) 2013 – 2015 Adobe Systems Incorporated. All rights reserved.\n// \n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n// \n// http://www.apache.org/licenses/LICENSE-2.0\n// \n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n// \n// build: 2015-04-07\n\n// Copyright (c) 2013 Adobe Systems Incorporated. All rights reserved.\n// \n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n// \n// http://www.apache.org/licenses/LICENSE-2.0\n// \n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n// ┌────────────────────────────────────────────────────────────┐ \\\\\n// │ Eve 0.4.2 - JavaScript Events Library │ \\\\\n// ├────────────────────────────────────────────────────────────┤ \\\\\n// │ Author Dmitry Baranovskiy (http://dmitry.baranovskiy.com/) │ \\\\\n// └────────────────────────────────────────────────────────────┘ \\\\\n\n(function (glob) {\n var version = \"0.4.2\",\n has = \"hasOwnProperty\",\n separator = /[\\.\\/]/,\n comaseparator = /\\s*,\\s*/,\n wildcard = \"*\",\n fun = function () {},\n numsort = function (a, b) {\n return a - b;\n },\n current_event,\n stop,\n events = {n: {}},\n firstDefined = function () {\n for (var i = 0, ii = this.length; i < ii; i++) {\n if (typeof this[i] != \"undefined\") {\n return this[i];\n }\n }\n },\n lastDefined = function () {\n var i = this.length;\n while (--i) {\n if (typeof this[i] != \"undefined\") {\n return this[i];\n }\n }\n },\n /*\\\n * eve\n [ method ]\n\n * Fires event with given `name`, given scope and other parameters.\n\n > Arguments\n\n - name (string) name of the *event*, dot (`.`) or slash (`/`) separated\n - scope (object) context for the event handlers\n - varargs (...) the rest of arguments will be sent to event handlers\n\n = (object) array of returned values from the listeners. Array has two methods `.firstDefined()` and `.lastDefined()` to get first or last not `undefined` value.\n \\*/\n eve = function (name, scope) {\n name = String(name);\n var e = events,\n oldstop = stop,\n args = Array.prototype.slice.call(arguments, 2),\n listeners = eve.listeners(name),\n z = 0,\n f = false,\n l,\n indexed = [],\n queue = {},\n out = [],\n ce = current_event,\n errors = [];\n out.firstDefined = firstDefined;\n out.lastDefined = lastDefined;\n current_event = name;\n stop = 0;\n for (var i = 0, ii = listeners.length; i < ii; i++) if (\"zIndex\" in listeners[i]) {\n indexed.push(listeners[i].zIndex);\n if (listeners[i].zIndex < 0) {\n queue[listeners[i].zIndex] = listeners[i];\n }\n }\n indexed.sort(numsort);\n while (indexed[z] < 0) {\n l = queue[indexed[z++]];\n out.push(l.apply(scope, args));\n if (stop) {\n stop = oldstop;\n return out;\n }\n }\n for (i = 0; i < ii; i++) {\n l = listeners[i];\n if (\"zIndex\" in l) {\n if (l.zIndex == indexed[z]) {\n out.push(l.apply(scope, args));\n if (stop) {\n break;\n }\n do {\n z++;\n l = queue[indexed[z]];\n l && out.push(l.apply(scope, args));\n if (stop) {\n break;\n }\n } while (l)\n } else {\n queue[l.zIndex] = l;\n }\n } else {\n out.push(l.apply(scope, args));\n if (stop) {\n break;\n }\n }\n }\n stop = oldstop;\n current_event = ce;\n return out;\n };\n // Undocumented. Debug only.\n eve._events = events;\n /*\\\n * eve.listeners\n [ method ]\n\n * Internal method which gives you array of all event handlers that will be triggered by the given `name`.\n\n > Arguments\n\n - name (string) name of the event, dot (`.`) or slash (`/`) separated\n\n = (array) array of event handlers\n \\*/\n eve.listeners = function (name) {\n var names = name.split(separator),\n e = events,\n item,\n items,\n k,\n i,\n ii,\n j,\n jj,\n nes,\n es = [e],\n out = [];\n for (i = 0, ii = names.length; i < ii; i++) {\n nes = [];\n for (j = 0, jj = es.length; j < jj; j++) {\n e = es[j].n;\n items = [e[names[i]], e[wildcard]];\n k = 2;\n while (k--) {\n item = items[k];\n if (item) {\n nes.push(item);\n out = out.concat(item.f || []);\n }\n }\n }\n es = nes;\n }\n return out;\n };\n \n /*\\\n * eve.on\n [ method ]\n **\n * Binds given event handler with a given name. You can use wildcards “`*`” for the names:\n | eve.on(\"*.under.*\", f);\n | eve(\"mouse.under.floor\"); // triggers f\n * Use @eve to trigger the listener.\n **\n > Arguments\n **\n - name (string) name of the event, dot (`.`) or slash (`/`) separated, with optional wildcards\n - f (function) event handler function\n **\n = (function) returned function accepts a single numeric parameter that represents z-index of the handler. It is an optional feature and only used when you need to ensure that some subset of handlers will be invoked in a given order, despite of the order of assignment. \n > Example:\n | eve.on(\"mouse\", eatIt)(2);\n | eve.on(\"mouse\", scream);\n | eve.on(\"mouse\", catchIt)(1);\n * This will ensure that `catchIt` function will be called before `eatIt`.\n *\n * If you want to put your handler before non-indexed handlers, specify a negative value.\n * Note: I assume most of the time you don’t need to worry about z-index, but it’s nice to have this feature “just in case”.\n \\*/\n eve.on = function (name, f) {\n name = String(name);\n if (typeof f != \"function\") {\n return function () {};\n }\n var names = name.split(comaseparator);\n for (var i = 0, ii = names.length; i < ii; i++) {\n (function (name) {\n var names = name.split(separator),\n e = events,\n exist;\n for (var i = 0, ii = names.length; i < ii; i++) {\n e = e.n;\n e = e.hasOwnProperty(names[i]) && e[names[i]] || (e[names[i]] = {n: {}});\n }\n e.f = e.f || [];\n for (i = 0, ii = e.f.length; i < ii; i++) if (e.f[i] == f) {\n exist = true;\n break;\n }\n !exist && e.f.push(f);\n }(names[i]));\n }\n return function (zIndex) {\n if (+zIndex == +zIndex) {\n f.zIndex = +zIndex;\n }\n };\n };\n /*\\\n * eve.f\n [ method ]\n **\n * Returns function that will fire given event with optional arguments.\n * Arguments that will be passed to the result function will be also\n * concated to the list of final arguments.\n | el.onclick = eve.f(\"click\", 1, 2);\n | eve.on(\"click\", function (a, b, c) {\n | console.log(a, b, c); // 1, 2, [event object]\n | });\n > Arguments\n - event (string) event name\n - varargs (…) and any other arguments\n = (function) possible event handler function\n \\*/\n eve.f = function (event) {\n var attrs = [].slice.call(arguments, 1);\n return function () {\n eve.apply(null, [event, null].concat(attrs).concat([].slice.call(arguments, 0)));\n };\n };\n /*\\\n * eve.stop\n [ method ]\n **\n * Is used inside an event handler to stop the event, preventing any subsequent listeners from firing.\n \\*/\n eve.stop = function () {\n stop = 1;\n };\n /*\\\n * eve.nt\n [ method ]\n **\n * Could be used inside event handler to figure out actual name of the event.\n **\n > Arguments\n **\n - subname (string) #optional subname of the event\n **\n = (string) name of the event, if `subname` is not specified\n * or\n = (boolean) `true`, if current event’s name contains `subname`\n \\*/\n eve.nt = function (subname) {\n if (subname) {\n return new RegExp(\"(?:\\\\.|\\\\/|^)\" + subname + \"(?:\\\\.|\\\\/|$)\").test(current_event);\n }\n return current_event;\n };\n /*\\\n * eve.nts\n [ method ]\n **\n * Could be used inside event handler to figure out actual name of the event.\n **\n **\n = (array) names of the event\n \\*/\n eve.nts = function () {\n return current_event.split(separator);\n };\n /*\\\n * eve.off\n [ method ]\n **\n * Removes given function from the list of event listeners assigned to given name.\n * If no arguments specified all the events will be cleared.\n **\n > Arguments\n **\n - name (string) name of the event, dot (`.`) or slash (`/`) separated, with optional wildcards\n - f (function) event handler function\n \\*/\n /*\\\n * eve.unbind\n [ method ]\n **\n * See @eve.off\n \\*/\n eve.off = eve.unbind = function (name, f) {\n if (!name) {\n eve._events = events = {n: {}};\n return;\n }\n var names = name.split(comaseparator);\n if (names.length > 1) {\n for (var i = 0, ii = names.length; i < ii; i++) {\n eve.off(names[i], f);\n }\n return;\n }\n names = name.split(separator);\n var e,\n key,\n splice,\n i, ii, j, jj,\n cur = [events];\n for (i = 0, ii = names.length; i < ii; i++) {\n for (j = 0; j < cur.length; j += splice.length - 2) {\n splice = [j, 1];\n e = cur[j].n;\n if (names[i] != wildcard) {\n if (e[names[i]]) {\n splice.push(e[names[i]]);\n }\n } else {\n for (key in e) if (e[has](key)) {\n splice.push(e[key]);\n }\n }\n cur.splice.apply(cur, splice);\n }\n }\n for (i = 0, ii = cur.length; i < ii; i++) {\n e = cur[i];\n while (e.n) {\n if (f) {\n if (e.f) {\n for (j = 0, jj = e.f.length; j < jj; j++) if (e.f[j] == f) {\n e.f.splice(j, 1);\n break;\n }\n !e.f.length && delete e.f;\n }\n for (key in e.n) if (e.n[has](key) && e.n[key].f) {\n var funcs = e.n[key].f;\n for (j = 0, jj = funcs.length; j < jj; j++) if (funcs[j] == f) {\n funcs.splice(j, 1);\n break;\n }\n !funcs.length && delete e.n[key].f;\n }\n } else {\n delete e.f;\n for (key in e.n) if (e.n[has](key) && e.n[key].f) {\n delete e.n[key].f;\n }\n }\n e = e.n;\n }\n }\n };\n /*\\\n * eve.once\n [ method ]\n **\n * Binds given event handler with a given name to only run once then unbind itself.\n | eve.once(\"login\", f);\n | eve(\"login\"); // triggers f\n | eve(\"login\"); // no listeners\n * Use @eve to trigger the listener.\n **\n > Arguments\n **\n - name (string) name of the event, dot (`.`) or slash (`/`) separated, with optional wildcards\n - f (function) event handler function\n **\n = (function) same return function as @eve.on\n \\*/\n eve.once = function (name, f) {\n var f2 = function () {\n eve.unbind(name, f2);\n return f.apply(this, arguments);\n };\n return eve.on(name, f2);\n };\n /*\\\n * eve.version\n [ property (string) ]\n **\n * Current version of the library.\n \\*/\n eve.version = version;\n eve.toString = function () {\n return \"You are running Eve \" + version;\n };\n (typeof module != \"undefined\" && module.exports) ? (module.exports = eve) : (typeof define === \"function\" && define.amd ? (define(\"eve\", [], function() { return eve; })) : (glob.eve = eve));\n})(this);\n\n(function (glob, factory) {\n // AMD support\n if (typeof define == \"function\" && define.amd) {\n // Define as an anonymous module\n define([\"eve\"], function (eve) {\n return factory(glob, eve);\n });\n } else if (typeof exports != 'undefined') {\n // Next for Node.js or CommonJS\n var eve = require('eve');\n module.exports = factory(glob, eve);\n } else {\n // Browser globals (glob is window)\n // Snap adds itself to window\n factory(glob, glob.eve);\n }\n}(window || this, function (window, eve) {\n\n// Copyright (c) 2013 Adobe Systems Incorporated. All rights reserved.\n// \n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n// \n// http://www.apache.org/licenses/LICENSE-2.0\n// \n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nvar mina = (function (eve) {\n var animations = {},\n requestAnimFrame = window.requestAnimationFrame ||\n window.webkitRequestAnimationFrame ||\n window.mozRequestAnimationFrame ||\n window.oRequestAnimationFrame ||\n window.msRequestAnimationFrame ||\n function (callback) {\n setTimeout(callback, 16);\n },\n isArray = Array.isArray || function (a) {\n return a instanceof Array ||\n Object.prototype.toString.call(a) == \"[object Array]\";\n },\n idgen = 0,\n idprefix = \"M\" + (+new Date).toString(36),\n ID = function () {\n return idprefix + (idgen++).toString(36);\n },\n diff = function (a, b, A, B) {\n if (isArray(a)) {\n res = [];\n for (var i = 0, ii = a.length; i < ii; i++) {\n res[i] = diff(a[i], b, A[i], B);\n }\n return res;\n }\n var dif = (A - a) / (B - b);\n return function (bb) {\n return a + dif * (bb - b);\n };\n },\n timer = Date.now || function () {\n return +new Date;\n },\n sta = function (val) {\n var a = this;\n if (val == null) {\n return a.s;\n }\n var ds = a.s - val;\n a.b += a.dur * ds;\n a.B += a.dur * ds;\n a.s = val;\n },\n speed = function (val) {\n var a = this;\n if (val == null) {\n return a.spd;\n }\n a.spd = val;\n },\n duration = function (val) {\n var a = this;\n if (val == null) {\n return a.dur;\n }\n a.s = a.s * val / a.dur;\n a.dur = val;\n },\n stopit = function () {\n var a = this;\n delete animations[a.id];\n a.update();\n eve(\"mina.stop.\" + a.id, a);\n },\n pause = function () {\n var a = this;\n if (a.pdif) {\n return;\n }\n delete animations[a.id];\n a.update();\n a.pdif = a.get() - a.b;\n },\n resume = function () {\n var a = this;\n if (!a.pdif) {\n return;\n }\n a.b = a.get() - a.pdif;\n delete a.pdif;\n animations[a.id] = a;\n },\n update = function () {\n var a = this,\n res;\n if (isArray(a.start)) {\n res = [];\n for (var j = 0, jj = a.start.length; j < jj; j++) {\n res[j] = +a.start[j] +\n (a.end[j] - a.start[j]) * a.easing(a.s);\n }\n } else {\n res = +a.start + (a.end - a.start) * a.easing(a.s);\n }\n a.set(res);\n },\n frame = function () {\n var len = 0;\n for (var i in animations) if (animations.hasOwnProperty(i)) {\n var a = animations[i],\n b = a.get(),\n res;\n len++;\n a.s = (b - a.b) / (a.dur / a.spd);\n if (a.s >= 1) {\n delete animations[i];\n a.s = 1;\n len--;\n (function (a) {\n setTimeout(function () {\n eve(\"mina.finish.\" + a.id, a);\n });\n }(a));\n }\n a.update();\n }\n len && requestAnimFrame(frame);\n },\n /*\\\n * mina\n [ method ]\n **\n * Generic animation of numbers\n **\n - a (number) start _slave_ number\n - A (number) end _slave_ number\n - b (number) start _master_ number (start time in general case)\n - B (number) end _master_ number (end time in gereal case)\n - get (function) getter of _master_ number (see @mina.time)\n - set (function) setter of _slave_ number\n - easing (function) #optional easing function, default is @mina.linear\n = (object) animation descriptor\n o {\n o id (string) animation id,\n o start (number) start _slave_ number,\n o end (number) end _slave_ number,\n o b (number) start _master_ number,\n o s (number) animation status (0..1),\n o dur (number) animation duration,\n o spd (number) animation speed,\n o get (function) getter of _master_ number (see @mina.time),\n o set (function) setter of _slave_ number,\n o easing (function) easing function, default is @mina.linear,\n o status (function) status getter/setter,\n o speed (function) speed getter/setter,\n o duration (function) duration getter/setter,\n o stop (function) animation stopper\n o pause (function) pauses the animation\n o resume (function) resumes the animation\n o update (function) calles setter with the right value of the animation\n o }\n \\*/\n mina = function (a, A, b, B, get, set, easing) {\n var anim = {\n id: ID(),\n start: a,\n end: A,\n b: b,\n s: 0,\n dur: B - b,\n spd: 1,\n get: get,\n set: set,\n easing: easing || mina.linear,\n status: sta,\n speed: speed,\n duration: duration,\n stop: stopit,\n pause: pause,\n resume: resume,\n update: update\n };\n animations[anim.id] = anim;\n var len = 0, i;\n for (i in animations) if (animations.hasOwnProperty(i)) {\n len++;\n if (len == 2) {\n break;\n }\n }\n len == 1 && requestAnimFrame(frame);\n return anim;\n };\n /*\\\n * mina.time\n [ method ]\n **\n * Returns the current time. Equivalent to:\n | function () {\n | return (new Date).getTime();\n | }\n \\*/\n mina.time = timer;\n /*\\\n * mina.getById\n [ method ]\n **\n * Returns an animation by its id\n - id (string) animation's id\n = (object) See @mina\n \\*/\n mina.getById = function (id) {\n return animations[id] || null;\n };\n\n /*\\\n * mina.linear\n [ method ]\n **\n * Default linear easing\n - n (number) input 0..1\n = (number) output 0..1\n \\*/\n mina.linear = function (n) {\n return n;\n };\n /*\\\n * mina.easeout\n [ method ]\n **\n * Easeout easing\n - n (number) input 0..1\n = (number) output 0..1\n \\*/\n mina.easeout = function (n) {\n return Math.pow(n, 1.7);\n };\n /*\\\n * mina.easein\n [ method ]\n **\n * Easein easing\n - n (number) input 0..1\n = (number) output 0..1\n \\*/\n mina.easein = function (n) {\n return Math.pow(n, .48);\n };\n /*\\\n * mina.easeinout\n [ method ]\n **\n * Easeinout easing\n - n (number) input 0..1\n = (number) output 0..1\n \\*/\n mina.easeinout = function (n) {\n if (n == 1) {\n return 1;\n }\n if (n == 0) {\n return 0;\n }\n var q = .48 - n / 1.04,\n Q = Math.sqrt(.1734 + q * q),\n x = Q - q,\n X = Math.pow(Math.abs(x), 1 / 3) * (x < 0 ? -1 : 1),\n y = -Q - q,\n Y = Math.pow(Math.abs(y), 1 / 3) * (y < 0 ? -1 : 1),\n t = X + Y + .5;\n return (1 - t) * 3 * t * t + t * t * t;\n };\n /*\\\n * mina.backin\n [ method ]\n **\n * Backin easing\n - n (number) input 0..1\n = (number) output 0..1\n \\*/\n mina.backin = function (n) {\n if (n == 1) {\n return 1;\n }\n var s = 1.70158;\n return n * n * ((s + 1) * n - s);\n };\n /*\\\n * mina.backout\n [ method ]\n **\n * Backout easing\n - n (number) input 0..1\n = (number) output 0..1\n \\*/\n mina.backout = function (n) {\n if (n == 0) {\n return 0;\n }\n n = n - 1;\n var s = 1.70158;\n return n * n * ((s + 1) * n + s) + 1;\n };\n /*\\\n * mina.elastic\n [ method ]\n **\n * Elastic easing\n - n (number) input 0..1\n = (number) output 0..1\n \\*/\n mina.elastic = function (n) {\n if (n == !!n) {\n return n;\n }\n return Math.pow(2, -10 * n) * Math.sin((n - .075) *\n (2 * Math.PI) / .3) + 1;\n };\n /*\\\n * mina.bounce\n [ method ]\n **\n * Bounce easing\n - n (number) input 0..1\n = (number) output 0..1\n \\*/\n mina.bounce = function (n) {\n var s = 7.5625,\n p = 2.75,\n l;\n if (n < (1 / p)) {\n l = s * n * n;\n } else {\n if (n < (2 / p)) {\n n -= (1.5 / p);\n l = s * n * n + .75;\n } else {\n if (n < (2.5 / p)) {\n n -= (2.25 / p);\n l = s * n * n + .9375;\n } else {\n n -= (2.625 / p);\n l = s * n * n + .984375;\n }\n }\n }\n return l;\n };\n window.mina = mina;\n return mina;\n})(typeof eve == \"undefined\" ? function () {} : eve);\n// Copyright (c) 2013 - 2015 Adobe Systems Incorporated. All rights reserved.\n// \n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n// \n// http://www.apache.org/licenses/LICENSE-2.0\n// \n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nvar Snap = (function(root) {\nSnap.version = \"0.4.0\";\n/*\\\n * Snap\n [ method ]\n **\n * Creates a drawing surface or wraps existing SVG element.\n **\n - width (number|string) width of surface\n - height (number|string) height of surface\n * or\n - DOM (SVGElement) element to be wrapped into Snap structure\n * or\n - array (array) array of elements (will return set of elements)\n * or\n - query (string) CSS query selector\n = (object) @Element\n\\*/\nfunction Snap(w, h) {\n if (w) {\n if (w.nodeType) {\n return wrap(w);\n }\n if (is(w, \"array\") && Snap.set) {\n return Snap.set.apply(Snap, w);\n }\n if (w instanceof Element) {\n return w;\n }\n if (h == null) {\n w = glob.doc.querySelector(String(w));\n return wrap(w);\n }\n }\n w = w == null ? \"100%\" : w;\n h = h == null ? \"100%\" : h;\n return new Paper(w, h);\n}\nSnap.toString = function () {\n return \"Snap v\" + this.version;\n};\nSnap._ = {};\nvar glob = {\n win: root.window,\n doc: root.window.document\n};\nSnap._.glob = glob;\nvar has = \"hasOwnProperty\",\n Str = String,\n toFloat = parseFloat,\n toInt = parseInt,\n math = Math,\n mmax = math.max,\n mmin = math.min,\n abs = math.abs,\n pow = math.pow,\n PI = math.PI,\n round = math.round,\n E = \"\",\n S = \" \",\n objectToString = Object.prototype.toString,\n ISURL = /^url\\(['\"]?([^\\)]+?)['\"]?\\)$/i,\n colourRegExp = /^\\s*((#[a-f\\d]{6})|(#[a-f\\d]{3})|rgba?\\(\\s*([\\d\\.]+%?\\s*,\\s*[\\d\\.]+%?\\s*,\\s*[\\d\\.]+%?(?:\\s*,\\s*[\\d\\.]+%?)?)\\s*\\)|hsba?\\(\\s*([\\d\\.]+(?:deg|\\xb0|%)?\\s*,\\s*[\\d\\.]+%?\\s*,\\s*[\\d\\.]+(?:%?\\s*,\\s*[\\d\\.]+)?%?)\\s*\\)|hsla?\\(\\s*([\\d\\.]+(?:deg|\\xb0|%)?\\s*,\\s*[\\d\\.]+%?\\s*,\\s*[\\d\\.]+(?:%?\\s*,\\s*[\\d\\.]+)?%?)\\s*\\))\\s*$/i,\n bezierrg = /^(?:cubic-)?bezier\\(([^,]+),([^,]+),([^,]+),([^\\)]+)\\)/,\n reURLValue = /^url\\(#?([^)]+)\\)$/,\n separator = Snap._.separator = /[,\\s]+/,\n whitespace = /[\\s]/g,\n commaSpaces = /[\\s]*,[\\s]*/,\n hsrg = {hs: 1, rg: 1},\n pathCommand = /([a-z])[\\s,]*((-?\\d*\\.?\\d*(?:e[\\-+]?\\d+)?[\\s]*,?[\\s]*)+)/ig,\n tCommand = /([rstm])[\\s,]*((-?\\d*\\.?\\d*(?:e[\\-+]?\\d+)?[\\s]*,?[\\s]*)+)/ig,\n pathValues = /(-?\\d*\\.?\\d*(?:e[\\-+]?\\\\d+)?)[\\s]*,?[\\s]*/ig,\n idgen = 0,\n idprefix = \"S\" + (+new Date).toString(36),\n ID = function (el) {\n return (el && el.type ? el.type : E) + idprefix + (idgen++).toString(36);\n },\n xlink = \"http://www.w3.org/1999/xlink\",\n xmlns = \"http://www.w3.org/2000/svg\",\n hub = {},\n URL = Snap.url = function (url) {\n return \"url('#\" + url + \"')\";\n };\n\nfunction $(el, attr) {\n if (attr) {\n if (el == \"#text\") {\n el = glob.doc.createTextNode(attr.text || attr[\"#text\"] || \"\");\n }\n if (el == \"#comment\") {\n el = glob.doc.createComment(attr.text || attr[\"#text\"] || \"\");\n }\n if (typeof el == \"string\") {\n el = $(el);\n }\n if (typeof attr == \"string\") {\n if (el.nodeType == 1) {\n if (attr.substring(0, 6) == \"xlink:\") {\n return el.getAttributeNS(xlink, attr.substring(6));\n }\n if (attr.substring(0, 4) == \"xml:\") {\n return el.getAttributeNS(xmlns, attr.substring(4));\n }\n return el.getAttribute(attr);\n } else if (attr == \"text\") {\n return el.nodeValue;\n } else {\n return null;\n }\n }\n if (el.nodeType == 1) {\n for (var key in attr) if (attr[has](key)) {\n var val = Str(attr[key]);\n if (val) {\n if (key.substring(0, 6) == \"xlink:\") {\n el.setAttributeNS(xlink, key.substring(6), val);\n } else if (key.substring(0, 4) == \"xml:\") {\n el.setAttributeNS(xmlns, key.substring(4), val);\n } else {\n el.setAttribute(key, val);\n }\n } else {\n el.removeAttribute(key);\n }\n }\n } else if (\"text\" in attr) {\n el.nodeValue = attr.text;\n }\n } else {\n el = glob.doc.createElementNS(xmlns, el);\n }\n return el;\n}\nSnap._.$ = $;\nSnap._.id = ID;\nfunction getAttrs(el) {\n var attrs = el.attributes,\n name,\n out = {};\n for (var i = 0; i < attrs.length; i++) {\n if (attrs[i].namespaceURI == xlink) {\n name = \"xlink:\";\n } else {\n name = \"\";\n }\n name += attrs[i].name;\n out[name] = attrs[i].textContent;\n }\n return out;\n}\nfunction is(o, type) {\n type = Str.prototype.toLowerCase.call(type);\n if (type == \"finite\") {\n return isFinite(o);\n }\n if (type == \"array\" &&\n (o instanceof Array || Array.isArray && Array.isArray(o))) {\n return true;\n }\n return (type == \"null\" && o === null) ||\n (type == typeof o && o !== null) ||\n (type == \"object\" && o === Object(o)) ||\n objectToString.call(o).slice(8, -1).toLowerCase() == type;\n}\n/*\\\n * Snap.format\n [ method ]\n **\n * Replaces construction of type `{<name>}` to the corresponding argument\n **\n - token (string) string to format\n - json (object) object which properties are used as a replacement\n = (string) formatted string\n > Usage\n | // this draws a rectangular shape equivalent to \"M10,20h40v50h-40z\"\n | paper.path(Snap.format(\"M{x},{y}h{dim.width}v{dim.height}h{dim['negative width']}z\", {\n | x: 10,\n | y: 20,\n | dim: {\n | width: 40,\n | height: 50,\n | \"negative width\": -40\n | }\n | }));\n\\*/\nSnap.format = (function () {\n var tokenRegex = /\\{([^\\}]+)\\}/g,\n objNotationRegex = /(?:(?:^|\\.)(.+?)(?=\\[|\\.|$|\\()|\\[('|\")(.+?)\\2\\])(\\(\\))?/g, // matches .xxxxx or [\"xxxxx\"] to run over object properties\n replacer = function (all, key, obj) {\n var res = obj;\n key.replace(objNotationRegex, function (all, name, quote, quotedName, isFunc) {\n name = name || quotedName;\n if (res) {\n if (name in res) {\n res = res[name];\n }\n typeof res == \"function\" && isFunc && (res = res());\n }\n });\n res = (res == null || res == obj ? all : res) + \"\";\n return res;\n };\n return function (str, obj) {\n return Str(str).replace(tokenRegex, function (all, key) {\n return replacer(all, key, obj);\n });\n };\n})();\nfunction clone(obj) {\n if (typeof obj == \"function\" || Object(obj) !== obj) {\n return obj;\n }\n var res = new obj.constructor;\n for (var key in obj) if (obj[has](key)) {\n res[key] = clone(obj[key]);\n }\n return res;\n}\nSnap._.clone = clone;\nfunction repush(array, item) {\n for (var i = 0, ii = array.length; i < ii; i++) if (array[i] === item) {\n return array.push(array.splice(i, 1)[0]);\n }\n}\nfunction cacher(f, scope, postprocessor) {\n function newf() {\n var arg = Array.prototype.slice.call(arguments, 0),\n args = arg.join(\"\\u2400\"),\n cache = newf.cache = newf.cache || {},\n count = newf.count = newf.count || [];\n if (cache[has](args)) {\n repush(count, args);\n return postprocessor ? postprocessor(cache[args]) : cache[args];\n }\n count.length >= 1e3 && delete cache[count.shift()];\n count.push(args);\n cache[args] = f.apply(scope, arg);\n return postprocessor ? postprocessor(cache[args]) : cache[args];\n }\n return newf;\n}\nSnap._.cacher = cacher;\nfunction angle(x1, y1, x2, y2, x3, y3) {\n if (x3 == null) {\n var x = x1 - x2,\n y = y1 - y2;\n if (!x && !y) {\n return 0;\n }\n return (180 + math.atan2(-y, -x) * 180 / PI + 360) % 360;\n } else {\n return angle(x1, y1, x3, y3) - angle(x2, y2, x3, y3);\n }\n}\nfunction rad(deg) {\n return deg % 360 * PI / 180;\n}\nfunction deg(rad) {\n return rad * 180 / PI % 360;\n}\nfunction x_y() {\n return this.x + S + this.y;\n}\nfunction x_y_w_h() {\n return this.x + S + this.y + S + this.width + \" \\xd7 \" + this.height;\n}\n\n/*\\\n * Snap.rad\n [ method ]\n **\n * Transform angle to radians\n - deg (number) angle in degrees\n = (number) angle in radians\n\\*/\nSnap.rad = rad;\n/*\\\n * Snap.deg\n [ method ]\n **\n * Transform angle to degrees\n - rad (number) angle in radians\n = (number) angle in degrees\n\\*/\nSnap.deg = deg;\n/*\\\n * Snap.sin\n [ method ]\n **\n * Equivalent to `Math.sin()` only works with degrees, not radians.\n - angle (number) angle in degrees\n = (number) sin\n\\*/\nSnap.sin = function (angle) {\n return math.sin(Snap.rad(angle));\n};\n/*\\\n * Snap.tan\n [ method ]\n **\n * Equivalent to `Math.tan()` only works with degrees, not radians.\n - angle (number) angle in degrees\n = (number) tan\n\\*/\nSnap.tan = function (angle) {\n return math.tan(Snap.rad(angle));\n};\n/*\\\n * Snap.cos\n [ method ]\n **\n * Equivalent to `Math.cos()` only works with degrees, not radians.\n - angle (number) angle in degrees\n = (number) cos\n\\*/\nSnap.cos = function (angle) {\n return math.cos(Snap.rad(angle));\n};\n/*\\\n * Snap.asin\n [ method ]\n **\n * Equivalent to `Math.asin()` only works with degrees, not radians.\n - num (number) value\n = (number) asin in degrees\n\\*/\nSnap.asin = function (num) {\n return Snap.deg(math.asin(num));\n};\n/*\\\n * Snap.acos\n [ method ]\n **\n * Equivalent to `Math.acos()` only works with degrees, not radians.\n - num (number) value\n = (number) acos in degrees\n\\*/\nSnap.acos = function (num) {\n return Snap.deg(math.acos(num));\n};\n/*\\\n * Snap.atan\n [ method ]\n **\n * Equivalent to `Math.atan()` only works with degrees, not radians.\n - num (number) value\n = (number) atan in degrees\n\\*/\nSnap.atan = function (num) {\n return Snap.deg(math.atan(num));\n};\n/*\\\n * Snap.atan2\n [ method ]\n **\n * Equivalent to `Math.atan2()` only works with degrees, not radians.\n - num (number) value\n = (number) atan2 in degrees\n\\*/\nSnap.atan2 = function (num) {\n return Snap.deg(math.atan2(num));\n};\n/*\\\n * Snap.angle\n [ method ]\n **\n * Returns an angle between two or three points\n > Parameters\n - x1 (number) x coord of first point\n - y1 (number) y coord of first point\n - x2 (number) x coord of second point\n - y2 (number) y coord of second point\n - x3 (number) #optional x coord of third point\n - y3 (number) #optional y coord of third point\n = (number) angle in degrees\n\\*/\nSnap.angle = angle;\n/*\\\n * Snap.len\n [ method ]\n **\n * Returns distance between two points\n > Parameters\n - x1 (number) x coord of first point\n - y1 (number) y coord of first point\n - x2 (number) x coord of second point\n - y2 (number) y coord of second point\n = (number) distance\n\\*/\nSnap.len = function (x1, y1, x2, y2) {\n return Math.sqrt(Snap.len2(x1, y1, x2, y2));\n};\n/*\\\n * Snap.len2\n [ method ]\n **\n * Returns squared distance between two points\n > Parameters\n - x1 (number) x coord of first point\n - y1 (number) y coord of first point\n - x2 (number) x coord of second point\n - y2 (number) y coord of second point\n = (number) distance\n\\*/\nSnap.len2 = function (x1, y1, x2, y2) {\n return (x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2);\n};\n/*\\\n * Snap.closestPoint\n [ method ]\n **\n * Returns closest point to a given one on a given path.\n > Parameters\n - path (Element) path element\n - x (number) x coord of a point\n - y (number) y coord of a point\n = (object) in format\n {\n x (number) x coord of the point on the path\n y (number) y coord of the point on the path\n length (number) length of the path to the point\n distance (number) distance from the given point to the path\n }\n\\*/\n// Copied from http://bl.ocks.org/mbostock/8027637\nSnap.closestPoint = function (path, x, y) {\n function distance2(p) {\n var dx = p.x - x,\n dy = p.y - y;\n return dx * dx + dy * dy;\n }\n var pathNode = path.node,\n pathLength = pathNode.getTotalLength(),\n precision = pathLength / pathNode.pathSegList.numberOfItems * .125,\n best,\n bestLength,\n bestDistance = Infinity;\n\n // linear scan for coarse approximation\n for (var scan, scanLength = 0, scanDistance; scanLength <= pathLength; scanLength += precision) {\n if ((scanDistance = distance2(scan = pathNode.getPointAtLength(scanLength))) < bestDistance) {\n best = scan, bestLength = scanLength, bestDistance = scanDistance;\n }\n }\n\n // binary search for precise estimate\n precision *= .5;\n while (precision > .5) {\n var before,\n after,\n beforeLength,\n afterLength,\n beforeDistance,\n afterDistance;\n if ((beforeLength = bestLength - precision) >= 0 && (beforeDistance = distance2(before = pathNode.getPointAtLength(beforeLength))) < bestDistance) {\n best = before, bestLength = beforeLength, bestDistance = beforeDistance;\n } else if ((afterLength = bestLength + precision) <= pathLength && (afterDistance = distance2(after = pathNode.getPointAtLength(afterLength))) < bestDistance) {\n best = after, bestLength = afterLength, bestDistance = afterDistance;\n } else {\n precision *= .5;\n }\n }\n\n best = {\n x: best.x,\n y: best.y,\n length: bestLength,\n distance: Math.sqrt(bestDistance)\n };\n return best;\n}\n/*\\\n * Snap.is\n [ method ]\n **\n * Handy replacement for the `typeof` operator\n - o (…) any object or primitive\n - type (string) name of the type, e.g., `string`, `function`, `number`, etc.\n = (boolean) `true` if given value is of given type\n\\*/\nSnap.is = is;\n/*\\\n * Snap.snapTo\n [ method ]\n **\n * Snaps given value to given grid\n - values (array|number) given array of values or step of the grid\n - value (number) value to adjust\n - tolerance (number) #optional maximum distance to the target value that would trigger the snap. Default is `10`.\n = (number) adjusted value\n\\*/\nSnap.snapTo = function (values, value, tolerance) {\n tolerance = is(tolerance, \"finite\") ? tolerance : 10;\n if (is(values, \"array\")) {\n var i = values.length;\n while (i--) if (abs(values[i] - value) <= tolerance) {\n return values[i];\n }\n } else {\n values = +values;\n var rem = value % values;\n if (rem < tolerance) {\n return value - rem;\n }\n if (rem > values - tolerance) {\n return value - rem + values;\n }\n }\n return value;\n};\n// Colour\n/*\\\n * Snap.getRGB\n [ method ]\n **\n * Parses color string as RGB object\n - color (string) color string in one of the following formats:\n # <ul>\n # <li>Color name (<code>red</code>, <code>green</code>, <code>cornflowerblue</code>, etc)</li>\n # <li>#••• — shortened HTML color: (<code>#000</code>, <code>#fc0</code>, etc.)</li>\n # <li>#•••••• — full length HTML color: (<code>#000000</code>, <code>#bd2300</code>)</li>\n # <li>rgb(•••, •••, •••) — red, green and blue channels values: (<code>rgb(200, 100, 0)</code>)</li>\n # <li>rgba(•••, •••, •••, •••) — also with opacity</li>\n # <li>rgb(•••%, •••%, •••%) — same as above, but in %: (<code>rgb(100%, 175%, 0%)</code>)</li>\n # <li>rgba(•••%, •••%, •••%, •••%) — also with opacity</li>\n # <li>hsb(•••, •••, •••) — hue, saturation and brightness values: (<code>hsb(0.5, 0.25, 1)</code>)</li>\n # <li>hsba(•••, •••, •••, •••) — also with opacity</li>\n # <li>hsb(•••%, •••%, •••%) — same as above, but in %</li>\n # <li>hsba(•••%, •••%, •••%, •••%) — also with opacity</li>\n # <li>hsl(•••, •••, •••) — hue, saturation and luminosity values: (<code>hsb(0.5, 0.25, 0.5)</code>)</li>\n # <li>hsla(•••, •••, •••, •••) — also with opacity</li>\n # <li>hsl(•••%, •••%, •••%) — same as above, but in %</li>\n # <li>hsla(•••%, •••%, •••%, •••%) — also with opacity</li>\n # </ul>\n * Note that `%` can be used any time: `rgb(20%, 255, 50%)`.\n = (object) RGB object in the following format:\n o {\n o r (number) red,\n o g (number) green,\n o b (number) blue,\n o hex (string) color in HTML/CSS format: #••••••,\n o error (boolean) true if string can't be parsed\n o }\n\\*/\nSnap.getRGB = cacher(function (colour) {\n if (!colour || !!((colour = Str(colour)).indexOf(\"-\") + 1)) {\n return {r: -1, g: -1, b: -1, hex: \"none\", error: 1, toString: rgbtoString};\n }\n if (colour == \"none\") {\n return {r: -1, g: -1, b: -1, hex: \"none\", toString: rgbtoString};\n }\n !(hsrg[has](colour.toLowerCase().substring(0, 2)) || colour.charAt() == \"#\") && (colour = toHex(colour));\n if (!colour) {\n return {r: -1, g: -1, b: -1, hex: \"none\", error: 1, toString: rgbtoString};\n }\n var res,\n red,\n green,\n blue,\n opacity,\n t,\n values,\n rgb = colour.match(colourRegExp);\n if (rgb) {\n if (rgb[2]) {\n blue = toInt(rgb[2].substring(5), 16);\n green = toInt(rgb[2].substring(3, 5), 16);\n red = toInt(rgb[2].substring(1, 3), 16);\n }\n if (rgb[3]) {\n blue = toInt((t = rgb[3].charAt(3)) + t, 16);\n green = toInt((t = rgb[3].charAt(2)) + t, 16);\n red = toInt((t = rgb[3].charAt(1)) + t, 16);\n }\n if (rgb[4]) {\n values = rgb[4].split(commaSpaces);\n red = toFloat(values[0]);\n values[0].slice(-1) == \"%\" && (red *= 2.55);\n green = toFloat(values[1]);\n values[1].slice(-1) == \"%\" && (green *= 2.55);\n blue = toFloat(values[2]);\n values[2].slice(-1) == \"%\" && (blue *= 2.55);\n rgb[1].toLowerCase().slice(0, 4) == \"rgba\" && (opacity = toFloat(values[3]));\n values[3] && values[3].slice(-1) == \"%\" && (opacity /= 100);\n }\n if (rgb[5]) {\n values = rgb[5].split(commaSpaces);\n red = toFloat(values[0]);\n values[0].slice(-1) == \"%\" && (red /= 100);\n green = toFloat(values[1]);\n values[1].slice(-1) == \"%\" && (green /= 100);\n blue = toFloat(values[2]);\n values[2].slice(-1) == \"%\" && (blue /= 100);\n (values[0].slice(-3) == \"deg\" || values[0].slice(-1) == \"\\xb0\") && (red /= 360);\n rgb[1].toLowerCase().slice(0, 4) == \"hsba\" && (opacity = toFloat(values[3]));\n values[3] && values[3].slice(-1) == \"%\" && (opacity /= 100);\n return Snap.hsb2rgb(red, green, blue, opacity);\n }\n if (rgb[6]) {\n values = rgb[6].split(commaSpaces);\n red = toFloat(values[0]);\n values[0].slice(-1) == \"%\" && (red /= 100);\n green = toFloat(values[1]);\n values[1].slice(-1) == \"%\" && (green /= 100);\n blue = toFloat(values[2]);\n values[2].slice(-1) == \"%\" && (blue /= 100);\n (values[0].slice(-3) == \"deg\" || values[0].slice(-1) == \"\\xb0\") && (red /= 360);\n rgb[1].toLowerCase().slice(0, 4) == \"hsla\" && (opacity = toFloat(values[3]));\n values[3] && values[3].slice(-1) == \"%\" && (opacity /= 100);\n return Snap.hsl2rgb(red, green, blue, opacity);\n }\n red = mmin(math.round(red), 255);\n green = mmin(math.round(green), 255);\n blue = mmin(math.round(blue), 255);\n opacity = mmin(mmax(opacity, 0), 1);\n rgb = {r: red, g: green, b: blue, toString: rgbtoString};\n rgb.hex = \"#\" + (16777216 | blue | (green << 8) | (red << 16)).toString(16).slice(1);\n rgb.opacity = is(opacity, \"finite\") ? opacity : 1;\n return rgb;\n }\n return {r: -1, g: -1, b: -1, hex: \"none\", error: 1, toString: rgbtoString};\n}, Snap);\n/*\\\n * Snap.hsb\n [ method ]\n **\n * Converts HSB values to a hex representation of the color\n - h (number) hue\n - s (number) saturation\n - b (number) value or brightness\n = (string) hex representation of the color\n\\*/\nSnap.hsb = cacher(function (h, s, b) {\n return Snap.hsb2rgb(h, s, b).hex;\n});\n/*\\\n * Snap.hsl\n [ method ]\n **\n * Converts HSL values to a hex representation of the color\n - h (number) hue\n - s (number) saturation\n - l (number) luminosity\n = (string) hex representation of the color\n\\*/\nSnap.hsl = cacher(function (h, s, l) {\n return Snap.hsl2rgb(h, s, l).hex;\n});\n/*\\\n * Snap.rgb\n [ method ]\n **\n * Converts RGB values to a hex representation of the color\n - r (number) red\n - g (number) green\n - b (number) blue\n = (string) hex representation of the color\n\\*/\nSnap.rgb = cacher(function (r, g, b, o) {\n if (is(o, \"finite\")) {\n var round = math.round;\n return \"rgba(\" + [round(r), round(g), round(b), +o.toFixed(2)] + \")\";\n }\n return \"#\" + (16777216 | b | (g << 8) | (r << 16)).toString(16).slice(1);\n});\nvar toHex = function (color) {\n var i = glob.doc.getElementsByTagName(\"head\")[0] || glob.doc.getElementsByTagName(\"svg\")[0],\n red = \"rgb(255, 0, 0)\";\n toHex = cacher(function (color) {\n if (color.toLowerCase() == \"red\") {\n return red;\n }\n i.style.color = red;\n i.style.color = color;\n var out = glob.doc.defaultView.getComputedStyle(i, E).getPropertyValue(\"color\");\n return out == red ? null : out;\n });\n return toHex(color);\n},\nhsbtoString = function () {\n return \"hsb(\" + [this.h, this.s, this.b] + \")\";\n},\nhsltoString = function () {\n return \"hsl(\" + [this.h, this.s, this.l] + \")\";\n},\nrgbtoString = function () {\n return this.opacity == 1 || this.opacity == null ?\n this.hex :\n \"rgba(\" + [this.r, this.g, this.b, this.opacity] + \")\";\n},\nprepareRGB = function (r, g, b) {\n if (g == null && is(r, \"object\") && \"r\" in r && \"g\" in r && \"b\" in r) {\n b = r.b;\n g = r.g;\n r = r.r;\n }\n if (g == null && is(r, string)) {\n var clr = Snap.getRGB(r);\n r = clr.r;\n g = clr.g;\n b = clr.b;\n }\n if (r > 1 || g > 1 || b > 1) {\n r /= 255;\n g /= 255;\n b /= 255;\n }\n \n return [r, g, b];\n},\npackageRGB = function (r, g, b, o) {\n r = math.round(r * 255);\n g = math.round(g * 255);\n b = math.round(b * 255);\n var rgb = {\n r: r,\n g: g,\n b: b,\n opacity: is(o, \"finite\") ? o : 1,\n hex: Snap.rgb(r, g, b),\n toString: rgbtoString\n };\n is(o, \"finite\") && (rgb.opacity = o);\n return rgb;\n};\n/*\\\n * Snap.color\n [ method ]\n **\n * Parses the color string and returns an object featuring the color's component values\n - clr (string) color string in one of the supported formats (see @Snap.getRGB)\n = (object) Combined RGB/HSB object in the following format:\n o {\n o r (number) red,\n o g (number) green,\n o b (number) blue,\n o hex (string) color in HTML/CSS format: #••••••,\n o error (boolean) `true` if string can't be parsed,\n o h (number) hue,\n o s (number) saturation,\n o v (number) value (brightness),\n o l (number) lightness\n o }\n\\*/\nSnap.color = function (clr) {\n var rgb;\n if (is(clr, \"object\") && \"h\" in clr && \"s\" in clr && \"b\" in clr) {\n rgb = Snap.hsb2rgb(clr);\n clr.r = rgb.r;\n clr.g = rgb.g;\n clr.b = rgb.b;\n clr.opacity = 1;\n clr.hex = rgb.hex;\n } else if (is(clr, \"object\") && \"h\" in clr && \"s\" in clr && \"l\" in clr) {\n rgb = Snap.hsl2rgb(clr);\n clr.r = rgb.r;\n clr.g = rgb.g;\n clr.b = rgb.b;\n clr.opacity = 1;\n clr.hex = rgb.hex;\n } else {\n if (is(clr, \"string\")) {\n clr = Snap.getRGB(clr);\n }\n if (is(clr, \"object\") && \"r\" in clr && \"g\" in clr && \"b\" in clr && !(\"error\" in clr)) {\n rgb = Snap.rgb2hsl(clr);\n clr.h = rgb.h;\n clr.s = rgb.s;\n clr.l = rgb.l;\n rgb = Snap.rgb2hsb(clr);\n clr.v = rgb.b;\n } else {\n clr = {hex: \"none\"};\n clr.r = clr.g = clr.b = clr.h = clr.s = clr.v = clr.l = -1;\n clr.error = 1;\n }\n }\n clr.toString = rgbtoString;\n return clr;\n};\n/*\\\n * Snap.hsb2rgb\n [ method ]\n **\n * Converts HSB values to an RGB object\n - h (number) hue\n - s (number) saturation\n - v (number) value or brightness\n = (object) RGB object in the following format:\n o {\n o r (number) red,\n o g (number) green,\n o b (number) blue,\n o hex (string) color in HTML/CSS format: #••••••\n o }\n\\*/\nSnap.hsb2rgb = function (h, s, v, o) {\n if (is(h, \"object\") && \"h\" in h && \"s\" in h && \"b\" in h) {\n v = h.b;\n s = h.s;\n o = h.o;\n h = h.h;\n }\n h *= 360;\n var R, G, B, X, C;\n h = (h % 360) / 60;\n C = v * s;\n X = C * (1 - abs(h % 2 - 1));\n R = G = B = v - C;\n\n h = ~~h;\n R += [C, X, 0, 0, X, C][h];\n G += [X, C, C, X, 0, 0][h];\n B += [0, 0, X, C, C, X][h];\n return packageRGB(R, G, B, o);\n};\n/*\\\n * Snap.hsl2rgb\n [ method ]\n **\n * Converts HSL values to an RGB object\n - h (number) hue\n - s (number) saturation\n - l (number) luminosity\n = (object) RGB object in the following format:\n o {\n o r (number) red,\n o g (number) green,\n o b (number) blue,\n o hex (string) color in HTML/CSS format: #••••••\n o }\n\\*/\nSnap.hsl2rgb = function (h, s, l, o) {\n if (is(h, \"object\") && \"h\" in h && \"s\" in h && \"l\" in h) {\n l = h.l;\n s = h.s;\n h = h.h;\n }\n if (h > 1 || s > 1 || l > 1) {\n h /= 360;\n s /= 100;\n l /= 100;\n }\n h *= 360;\n var R, G, B, X, C;\n h = (h % 360) / 60;\n C = 2 * s * (l < .5 ? l : 1 - l);\n X = C * (1 - abs(h % 2 - 1));\n R = G = B = l - C / 2;\n\n h = ~~h;\n R += [C, X, 0, 0, X, C][h];\n G += [X, C, C, X, 0, 0][h];\n B += [0, 0, X, C, C, X][h];\n return packageRGB(R, G, B, o);\n};\n/*\\\n * Snap.rgb2hsb\n [ method ]\n **\n * Converts RGB values to an HSB object\n - r (number) red\n - g (number) green\n - b (number) blue\n = (object) HSB object in the following format:\n o {\n o h (number) hue,\n o s (number) saturation,\n o b (number) brightness\n o }\n\\*/\nSnap.rgb2hsb = function (r, g, b) {\n b = prepareRGB(r, g, b);\n r = b[0];\n g = b[1];\n b = b[2];\n\n var H, S, V, C;\n V = mmax(r, g, b);\n C = V - mmin(r, g, b);\n H = (C == 0 ? null :\n V == r ? (g - b) / C :\n V == g ? (b - r) / C + 2 :\n (r - g) / C + 4\n );\n H = ((H + 360) % 6) * 60 / 360;\n S = C == 0 ? 0 : C / V;\n return {h: H, s: S, b: V, toString: hsbtoString};\n};\n/*\\\n * Snap.rgb2hsl\n [ method ]\n **\n * Converts RGB values to an HSL object\n - r (number) red\n - g (number) green\n - b (number) blue\n = (object) HSL object in the following format:\n o {\n o h (number) hue,\n o s (number) saturation,\n o l (number) luminosity\n o }\n\\*/\nSnap.rgb2hsl = function (r, g, b) {\n b = prepareRGB(r, g, b);\n r = b[0];\n g = b[1];\n b = b[2];\n\n var H, S, L, M, m, C;\n M = mmax(r, g, b);\n m = mmin(r, g, b);\n C = M - m;\n H = (C == 0 ? null :\n M == r ? (g - b) / C :\n M == g ? (b - r) / C + 2 :\n (r - g) / C + 4);\n H = ((H + 360) % 6) * 60 / 360;\n L = (M + m) / 2;\n S = (C == 0 ? 0 :\n L < .5 ? C / (2 * L) :\n C / (2 - 2 * L));\n return {h: H, s: S, l: L, toString: hsltoString};\n};\n\n// Transformations\n/*\\\n * Snap.parsePathString\n [ method ]\n **\n * Utility method\n **\n * Parses given path string into an array of arrays of path segments\n - pathString (string|array) path string or array of segments (in the last case it is returned straight away)\n = (array) array of segments\n\\*/\nSnap.parsePathString = function (pathString) {\n if (!pathString) {\n return null;\n }\n var pth = Snap.path(pathString);\n if (pth.arr) {\n return Snap.path.clone(pth.arr);\n }\n \n var paramCounts = {a: 7, c: 6, o: 2, h: 1, l: 2, m: 2, r: 4, q: 4, s: 4, t: 2, v: 1, u: 3, z: 0},\n data = [];\n if (is(pathString, \"array\") && is(pathString[0], \"array\")) { // rough assumption\n data = Snap.path.clone(pathString);\n }\n if (!data.length) {\n Str(pathString).replace(pathCommand, function (a, b, c) {\n var params = [],\n name = b.toLowerCase();\n c.replace(pathValues, function (a, b) {\n b && params.push(+b);\n });\n if (name == \"m\" && params.length > 2) {\n data.push([b].concat(params.splice(0, 2)));\n name = \"l\";\n b = b == \"m\" ? \"l\" : \"L\";\n }\n if (name == \"o\" && params.length == 1) {\n data.push([b, params[0]]);\n }\n if (name == \"r\") {\n data.push([b].concat(params));\n } else while (params.length >= paramCounts[name]) {\n data.push([b].concat(params.splice(0, paramCounts[name])));\n if (!paramCounts[name]) {\n break;\n }\n }\n });\n }\n data.toString = Snap.path.toString;\n pth.arr = Snap.path.clone(data);\n return data;\n};\n/*\\\n * Snap.parseTransformString\n [ method ]\n **\n * Utility method\n **\n * Parses given transform string into an array of transformations\n - TString (string|array) transform string or array of transformations (in the last case it is returned straight away)\n = (array) array of transformations\n\\*/\nvar parseTransformString = Snap.parseTransformString = function (TString) {\n if (!TString) {\n return null;\n }\n var paramCounts = {r: 3, s: 4, t: 2, m: 6},\n data = [];\n if (is(TString, \"array\") && is(TString[0], \"array\")) { // rough assumption\n data = Snap.path.clone(TString);\n }\n if (!data.length) {\n Str(TString).replace(tCommand, function (a, b, c) {\n var params = [],\n name = b.toLowerCase();\n c.replace(pathValues, function (a, b) {\n b && params.push(+b);\n });\n data.push([b].concat(params));\n });\n }\n data.toString = Snap.path.toString;\n return data;\n};\nfunction svgTransform2string(tstr) {\n var res = [];\n tstr = tstr.replace(/(?:^|\\s)(\\w+)\\(([^)]+)\\)/g, function (all, name, params) {\n params = params.split(/\\s*,\\s*|\\s+/);\n if (name == \"rotate\" && params.length == 1) {\n params.push(0, 0);\n }\n if (name == \"scale\") {\n if (params.length > 2) {\n params = params.slice(0, 2);\n } else if (params.length == 2) {\n params.push(0, 0);\n }\n if (params.length == 1) {\n params.push(params[0], 0, 0);\n }\n }\n if (name == \"skewX\") {\n res.push([\"m\", 1, 0, math.tan(rad(params[0])), 1, 0, 0]);\n } else if (name == \"skewY\") {\n res.push([\"m\", 1, math.tan(rad(params[0])), 0, 1, 0, 0]);\n } else {\n res.push([name.charAt(0)].concat(params));\n }\n return all;\n });\n return res;\n}\nSnap._.svgTransform2string = svgTransform2string;\nSnap._.rgTransform = /^[a-z][\\s]*-?\\.?\\d/i;\nfunction transform2matrix(tstr, bbox) {\n var tdata = parseTransformString(tstr),\n m = new Snap.Matrix;\n if (tdata) {\n for (var i = 0, ii = tdata.length; i < ii; i++) {\n var t = tdata[i],\n tlen = t.length,\n command = Str(t[0]).toLowerCase(),\n absolute = t[0] != command,\n inver = absolute ? m.invert() : 0,\n x1,\n y1,\n x2,\n y2,\n bb;\n if (command == \"t\" && tlen == 2){\n m.translate(t[1], 0);\n } else if (command == \"t\" && tlen == 3) {\n if (absolute) {\n x1 = inver.x(0, 0);\n y1 = inver.y(0, 0);\n x2 = inver.x(t[1], t[2]);\n y2 = inver.y(t[1], t[2]);\n m.translate(x2 - x1, y2 - y1);\n } else {\n m.translate(t[1], t[2]);\n }\n } else if (command == \"r\") {\n if (tlen == 2) {\n bb = bb || bbox;\n m.rotate(t[1], bb.x + bb.width / 2, bb.y + bb.height / 2);\n } else if (tlen == 4) {\n if (absolute) {\n x2 = inver.x(t[2], t[3]);\n y2 = inver.y(t[2], t[3]);\n m.rotate(t[1], x2, y2);\n } else {\n m.rotate(t[1], t[2], t[3]);\n }\n }\n } else if (command == \"s\") {\n if (tlen == 2 || tlen == 3) {\n bb = bb || bbox;\n m.scale(t[1], t[tlen - 1], bb.x + bb.width / 2, bb.y + bb.height / 2);\n } else if (tlen == 4) {\n if (absolute) {\n x2 = inver.x(t[2], t[3]);\n y2 = inver.y(t[2], t[3]);\n m.scale(t[1], t[1], x2, y2);\n } else {\n m.scale(t[1], t[1], t[2], t[3]);\n }\n } else if (tlen == 5) {\n if (absolute) {\n x2 = inver.x(t[3], t[4]);\n y2 = inver.y(t[3], t[4]);\n m.scale(t[1], t[2], x2, y2);\n } else {\n m.scale(t[1], t[2], t[3], t[4]);\n }\n }\n } else if (command == \"m\" && tlen == 7) {\n m.add(t[1], t[2], t[3], t[4], t[5], t[6]);\n }\n }\n }\n return m;\n}\nSnap._.transform2matrix = transform2matrix;\nSnap._unit2px = unit2px;\nvar contains = glob.doc.contains || glob.doc.compareDocumentPosition ?\n function (a, b) {\n var adown = a.nodeType == 9 ? a.documentElement : a,\n bup = b && b.parentNode;\n return a == bup || !!(bup && bup.nodeType == 1 && (\n adown.contains ?\n adown.contains(bup) :\n a.compareDocumentPosition && a.compareDocumentPosition(bup) & 16\n ));\n } :\n function (a, b) {\n if (b) {\n while (b) {\n b = b.parentNode;\n if (b == a) {\n return true;\n }\n }\n }\n return false;\n };\nfunction getSomeDefs(el) {\n var p = (el.node.ownerSVGElement && wrap(el.node.ownerSVGElement)) ||\n (el.node.parentNode && wrap(el.node.parentNode)) ||\n Snap.select(\"svg\") ||\n Snap(0, 0),\n pdefs = p.select(\"defs\"),\n defs = pdefs == null ? false : pdefs.node;\n if (!defs) {\n defs = make(\"defs\", p.node).node;\n }\n return defs;\n}\nfunction getSomeSVG(el) {\n return el.node.ownerSVGElement && wrap(el.node.ownerSVGElement) || Snap.select(\"svg\");\n}\nSnap._.getSomeDefs = getSomeDefs;\nSnap._.getSomeSVG = getSomeSVG;\nfunction unit2px(el, name, value) {\n var svg = getSomeSVG(el).node,\n out = {},\n mgr = svg.querySelector(\".svg---mgr\");\n if (!mgr) {\n mgr = $(\"rect\");\n $(mgr, {x: -9e9, y: -9e9, width: 10, height: 10, \"class\": \"svg---mgr\", fill: \"none\"});\n svg.appendChild(mgr);\n }\n function getW(val) {\n if (val == null) {\n return E;\n }\n if (val == +val) {\n return val;\n }\n $(mgr, {width: val});\n try {\n return mgr.getBBox().width;\n } catch (e) {\n return 0;\n }\n }\n function getH(val) {\n if (val == null) {\n return E;\n }\n if (val == +val) {\n return val;\n }\n $(mgr, {height: val});\n try {\n return mgr.getBBox().height;\n } catch (e) {\n return 0;\n }\n }\n function set(nam, f) {\n if (name == null) {\n out[nam] = f(el.attr(nam) || 0);\n } else if (nam == name) {\n out = f(value == null ? el.attr(nam) || 0 : value);\n }\n }\n switch (el.type) {\n case \"rect\":\n set(\"rx\", getW);\n set(\"ry\", getH);\n case \"image\":\n set(\"width\", getW);\n set(\"height\", getH);\n case \"text\":\n set(\"x\", getW);\n set(\"y\", getH);\n break;\n case \"circle\":\n set(\"cx\", getW);\n set(\"cy\", getH);\n set(\"r\", getW);\n break;\n case \"ellipse\":\n set(\"cx\", getW);\n set(\"cy\", getH);\n set(\"rx\", getW);\n set(\"ry\", getH);\n break;\n case \"line\":\n set(\"x1\", getW);\n set(\"x2\", getW);\n set(\"y1\", getH);\n set(\"y2\", getH);\n break;\n case \"marker\":\n set(\"refX\", getW);\n set(\"markerWidth\", getW);\n set(\"refY\", getH);\n set(\"markerHeight\", getH);\n break;\n case \"radialGradient\":\n set(\"fx\", getW);\n set(\"fy\", getH);\n break;\n case \"tspan\":\n set(\"dx\", getW);\n set(\"dy\", getH);\n break;\n default:\n set(name, getW);\n }\n svg.removeChild(mgr);\n return out;\n}\n/*\\\n * Snap.select\n [ method ]\n **\n * Wraps a DOM element specified by CSS selector as @Element\n - query (string) CSS selector of the element\n = (Element) the current element\n\\*/\nSnap.select = function (query) {\n query = Str(query).replace(/([^\\\\]):/g, \"$1\\\\:\");\n return wrap(glob.doc.querySelector(query));\n};\n/*\\\n * Snap.selectAll\n [ method ]\n **\n * Wraps DOM elements specified by CSS selector as set or array of @Element\n - query (string) CSS selector of the element\n = (Element) the current element\n\\*/\nSnap.selectAll = function (query) {\n var nodelist = glob.doc.querySelectorAll(query),\n set = (Snap.set || Array)();\n for (var i = 0; i < nodelist.length; i++) {\n set.push(wrap(nodelist[i]));\n }\n return set;\n};\n\nfunction add2group(list) {\n if (!is(list, \"array\")) {\n list = Array.prototype.slice.call(arguments, 0);\n }\n var i = 0,\n j = 0,\n node = this.node;\n while (this[i]) delete this[i++];\n for (i = 0; i < list.length; i++) {\n if (list[i].type == \"set\") {\n list[i].forEach(function (el) {\n node.appendChild(el.node);\n });\n } else {\n node.appendChild(list[i].node);\n }\n }\n var children = node.childNodes;\n for (i = 0; i < children.length; i++) {\n this[j++] = wrap(children[i]);\n }\n return this;\n}\n// Hub garbage collector every 10s\nsetInterval(function () {\n for (var key in hub) if (hub[has](key)) {\n var el = hub[key],\n node = el.node;\n if (el.type != \"svg\" && !node.ownerSVGElement || el.type == \"svg\" && (!node.parentNode || \"ownerSVGElement\" in node.parentNode && !node.ownerSVGElement)) {\n delete hub[key];\n }\n }\n}, 1e4);\nfunction Element(el) {\n if (el.snap in hub) {\n return hub[el.snap];\n }\n var svg;\n try {\n svg = el.ownerSVGElement;\n } catch(e) {}\n /*\\\n * Element.node\n [ property (object) ]\n **\n * Gives you a reference to the DOM object, so you can assign event handlers or just mess around.\n > Usage\n | // draw a circle at coordinate 10,10 with radius of 10\n | var c = paper.circle(10, 10, 10);\n | c.node.onclick = function () {\n | c.attr(\"fill\", \"red\");\n | };\n \\*/\n this.node = el;\n if (svg) {\n this.paper = new Paper(svg);\n }\n /*\\\n * Element.type\n [ property (string) ]\n **\n * SVG tag name of the given element.\n \\*/\n this.type = el.tagName || el.nodeName;\n var id = this.id = ID(this);\n this.anims = {};\n this._ = {\n transform: []\n };\n el.snap = id;\n hub[id] = this;\n if (this.type == \"g\") {\n this.add = add2group;\n }\n if (this.type in {g: 1, mask: 1, pattern: 1, symbol: 1}) {\n for (var method in Paper.prototype) if (Paper.prototype[has](method)) {\n this[method] = Paper.prototype[method];\n }\n }\n}\n /*\\\n * Element.attr\n [ method ]\n **\n * Gets or sets given attributes of the element.\n **\n - params (object) contains key-value pairs of attributes you want to set\n * or\n - param (string) name of the attribute\n = (Element) the current element\n * or\n = (string) value of attribute\n > Usage\n | el.attr({\n | fill: \"#fc0\",\n | stroke: \"#000\",\n | strokeWidth: 2, // CamelCase...\n | \"fill-opacity\": 0.5, // or dash-separated names\n | width: \"*=2\" // prefixed values\n | });\n | console.log(el.attr(\"fill\")); // #fc0\n * Prefixed values in format `\"+=10\"` supported. All four operations\n * (`+`, `-`, `*` and `/`) could be used. Optionally you can use units for `+`\n * and `-`: `\"+=2em\"`.\n \\*/\n Element.prototype.attr = function (params, value) {\n var el = this,\n node = el.node;\n if (!params) {\n if (node.nodeType != 1) {\n return {\n text: node.nodeValue\n };\n }\n var attr = node.attributes,\n out = {};\n for (var i = 0, ii = attr.length; i < ii; i++) {\n out[attr[i].nodeName] = attr[i].nodeValue;\n }\n return out;\n }\n if (is(params, \"string\")) {\n if (arguments.length > 1) {\n var json = {};\n json[params] = value;\n params = json;\n } else {\n return eve(\"snap.util.getattr.\" + params, el).firstDefined();\n }\n }\n for (var att in params) {\n if (params[has](att)) {\n eve(\"snap.util.attr.\" + att, el, params[att]);\n }\n }\n return el;\n };\n/*\\\n * Snap.parse\n [ method ]\n **\n * Parses SVG fragment and converts it into a @Fragment\n **\n - svg (string) SVG string\n = (Fragment) the @Fragment\n\\*/\nSnap.parse = function (svg) {\n var f = glob.doc.createDocumentFragment(),\n full = true,\n div = glob.doc.createElement(\"div\");\n svg = Str(svg);\n if (!svg.match(/^\\s*<\\s*svg(?:\\s|>)/)) {\n svg = \"<svg>\" + svg + \"</svg>\";\n full = false;\n }\n div.innerHTML = svg;\n svg = div.getElementsByTagName(\"svg\")[0];\n if (svg) {\n if (full) {\n f = svg;\n } else {\n while (svg.firstChild) {\n f.appendChild(svg.firstChild);\n }\n }\n }\n return new Fragment(f);\n};\nfunction Fragment(frag) {\n this.node = frag;\n}\n/*\\\n * Snap.fragment\n [ method ]\n **\n * Creates a DOM fragment from a given list of elements or strings\n **\n - varargs (…) SVG string\n = (Fragment) the @Fragment\n\\*/\nSnap.fragment = function () {\n var args = Array.prototype.slice.call(arguments, 0),\n f = glob.doc.createDocumentFragment();\n for (var i = 0, ii = args.length; i < ii; i++) {\n var item = args[i];\n if (item.node && item.node.nodeType) {\n f.appendChild(item.node);\n }\n if (item.nodeType) {\n f.appendChild(item);\n }\n if (typeof item == \"string\") {\n f.appendChild(Snap.parse(item).node);\n }\n }\n return new Fragment(f);\n};\n\nfunction make(name, parent) {\n var res = $(name);\n parent.appendChild(res);\n var el = wrap(res);\n return el;\n}\nfunction Paper(w, h) {\n var res,\n desc,\n defs,\n proto = Paper.prototype;\n if (w && w.tagName == \"svg\") {\n if (w.snap in hub) {\n return hub[w.snap];\n }\n var doc = w.ownerDocument;\n res = new Element(w);\n desc = w.getElementsByTagName(\"desc\")[0];\n defs = w.getElementsByTagName(\"defs\")[0];\n if (!desc) {\n desc = $(\"desc\");\n desc.appendChild(doc.createTextNode(\"Created with Snap\"));\n res.node.appendChild(desc);\n }\n if (!defs) {\n defs = $(\"defs\");\n res.node.appendChild(defs);\n }\n res.defs = defs;\n for (var key in proto) if (proto[has](key)) {\n res[key] = proto[key];\n }\n res.paper = res.root = res;\n } else {\n res = make(\"svg\", glob.doc.body);\n $(res.node, {\n height: h,\n version: 1.1,\n width: w,\n xmlns: xmlns\n });\n }\n return res;\n}\nfunction wrap(dom) {\n if (!dom) {\n return dom;\n }\n if (dom instanceof Element || dom instanceof Fragment) {\n return dom;\n }\n if (dom.tagName && dom.tagName.toLowerCase() == \"svg\") {\n return new Paper(dom);\n }\n if (dom.tagName && dom.tagName.toLowerCase() == \"object\" && dom.type == \"image/svg+xml\") {\n return new Paper(dom.contentDocument.getElementsByTagName(\"svg\")[0]);\n }\n return new Element(dom);\n}\n\nSnap._.make = make;\nSnap._.wrap = wrap;\n/*\\\n * Paper.el\n [ method ]\n **\n * Creates an element on paper with a given name and no attributes\n **\n - name (string) tag name\n - attr (object) attributes\n = (Element) the current element\n > Usage\n | var c = paper.circle(10, 10, 10); // is the same as...\n | var c = paper.el(\"circle\").attr({\n | cx: 10,\n | cy: 10,\n | r: 10\n | });\n | // and the same as\n | var c = paper.el(\"circle\", {\n | cx: 10,\n | cy: 10,\n | r: 10\n | });\n\\*/\nPaper.prototype.el = function (name, attr) {\n var el = make(name, this.node);\n attr && el.attr(attr);\n return el;\n};\n/*\\\n * Element.children\n [ method ]\n **\n * Returns array of all the children of the element.\n = (array) array of Elements\n\\*/\nElement.prototype.children = function () {\n var out = [],\n ch = this.node.childNodes;\n for (var i = 0, ii = ch.length; i < ii; i++) {\n out[i] = Snap(ch[i]);\n }\n return out;\n};\nfunction jsonFiller(root, o) {\n for (var i = 0, ii = root.length; i < ii; i++) {\n var item = {\n type: root[i].type,\n attr: root[i].attr()\n },\n children = root[i].children();\n o.push(item);\n if (children.length) {\n jsonFiller(children, item.childNodes = []);\n }\n }\n}\n/*\\\n * Element.toJSON\n [ method ]\n **\n * Returns object representation of the given element and all its children.\n = (object) in format\n o {\n o type (string) this.type,\n o attr (object) attributes map,\n o childNodes (array) optional array of children in the same format\n o }\n\\*/\nElement.prototype.toJSON = function () {\n var out = [];\n jsonFiller([this], out);\n return out[0];\n};\n// default\neve.on(\"snap.util.getattr\", function () {\n var att = eve.nt();\n att = att.substring(att.lastIndexOf(\".\") + 1);\n var css = att.replace(/[A-Z]/g, function (letter) {\n return \"-\" + letter.toLowerCase();\n });\n if (cssAttr[has](css)) {\n return this.node.ownerDocument.defaultView.getComputedStyle(this.node, null).getPropertyValue(css);\n } else {\n return $(this.node, att);\n }\n});\nvar cssAttr = {\n \"alignment-baseline\": 0,\n \"baseline-shift\": 0,\n \"clip\": 0,\n \"clip-path\": 0,\n \"clip-rule\": 0,\n \"color\": 0,\n \"color-interpolation\": 0,\n \"color-interpolation-filters\": 0,\n \"color-profile\": 0,\n \"color-rendering\": 0,\n \"cursor\": 0,\n \"direction\": 0,\n \"display\": 0,\n \"dominant-baseline\": 0,\n \"enable-background\": 0,\n \"fill\": 0,\n \"fill-opacity\": 0,\n \"fill-rule\": 0,\n \"filter\": 0,\n \"flood-color\": 0,\n \"flood-opacity\": 0,\n \"font\": 0,\n \"font-family\": 0,\n \"font-size\": 0,\n \"font-size-adjust\": 0,\n \"font-stretch\": 0,\n \"font-style\": 0,\n \"font-variant\": 0,\n \"font-weight\": 0,\n \"glyph-orientation-horizontal\": 0,\n \"glyph-orientation-vertical\": 0,\n \"image-rendering\": 0,\n \"kerning\": 0,\n \"letter-spacing\": 0,\n \"lighting-color\": 0,\n \"marker\": 0,\n \"marker-end\": 0,\n \"marker-mid\": 0,\n \"marker-start\": 0,\n \"mask\": 0,\n \"opacity\": 0,\n \"overflow\": 0,\n \"pointer-events\": 0,\n \"shape-rendering\": 0,\n \"stop-color\": 0,\n \"stop-opacity\": 0,\n \"stroke\": 0,\n \"stroke-dasharray\": 0,\n \"stroke-dashoffset\": 0,\n \"stroke-linecap\": 0,\n \"stroke-linejoin\": 0,\n \"stroke-miterlimit\": 0,\n \"stroke-opacity\": 0,\n \"stroke-width\": 0,\n \"text-anchor\": 0,\n \"text-decoration\": 0,\n \"text-rendering\": 0,\n \"unicode-bidi\": 0,\n \"visibility\": 0,\n \"word-spacing\": 0,\n \"writing-mode\": 0\n};\n\neve.on(\"snap.util.attr\", function (value) {\n var att = eve.nt(),\n attr = {};\n att = att.substring(att.lastIndexOf(\".\") + 1);\n attr[att] = value;\n var style = att.replace(/-(\\w)/gi, function (all, letter) {\n return letter.toUpperCase();\n }),\n css = att.replace(/[A-Z]/g, function (letter) {\n return \"-\" + letter.toLowerCase();\n });\n if (cssAttr[has](css)) {\n this.node.style[style] = value == null ? E : value;\n } else {\n $(this.node, attr);\n }\n});\n(function (proto) {}(Paper.prototype));\n\n// simple ajax\n/*\\\n * Snap.ajax\n [ method ]\n **\n * Simple implementation of Ajax\n **\n - url (string) URL\n - postData (object|string) data for post request\n - callback (function) callback\n - scope (object) #optional scope of callback\n * or\n - url (string) URL\n - callback (function) callback\n - scope (object) #optional scope of callback\n = (XMLHttpRequest) the XMLHttpRequest object, just in case\n\\*/\nSnap.ajax = function (url, postData, callback, scope){\n var req = new XMLHttpRequest,\n id = ID();\n if (req) {\n if (is(postData, \"function\")) {\n scope = callback;\n callback = postData;\n postData = null;\n } else if (is(postData, \"object\")) {\n var pd = [];\n for (var key in postData) if (postData.hasOwnProperty(key)) {\n pd.push(encodeURIComponent(key) + \"=\" + encodeURIComponent(postData[key]));\n }\n postData = pd.join(\"&\");\n }\n req.open((postData ? \"POST\" : \"GET\"), url, true);\n if (postData) {\n req.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n req.setRequestHeader(\"Content-type\", \"application/x-www-form-urlencoded\");\n }\n if (callback) {\n eve.once(\"snap.ajax.\" + id + \".0\", callback);\n eve.once(\"snap.ajax.\" + id + \".200\", callback);\n eve.once(\"snap.ajax.\" + id + \".304\", callback);\n }\n req.onreadystatechange = function() {\n if (req.readyState != 4) return;\n eve(\"snap.ajax.\" + id + \".\" + req.status, scope, req);\n };\n if (req.readyState == 4) {\n return req;\n }\n req.send(postData);\n return req;\n }\n};\n/*\\\n * Snap.load\n [ method ]\n **\n * Loads external SVG file as a @Fragment (see @Snap.ajax for more advanced AJAX)\n **\n - url (string) URL\n - callback (function) callback\n - scope (object) #optional scope of callback\n\\*/\nSnap.load = function (url, callback, scope) {\n Snap.ajax(url, function (req) {\n var f = Snap.parse(req.responseText);\n scope ? callback.call(scope, f) : callback(f);\n });\n};\nvar getOffset = function (elem) {\n var box = elem.getBoundingClientRect(),\n doc = elem.ownerDocument,\n body = doc.body,\n docElem = doc.documentElement,\n clientTop = docElem.clientTop || body.clientTop || 0, clientLeft = docElem.clientLeft || body.clientLeft || 0,\n top = box.top + (g.win.pageYOffset || docElem.scrollTop || body.scrollTop ) - clientTop,\n left = box.left + (g.win.pageXOffset || docElem.scrollLeft || body.scrollLeft) - clientLeft;\n return {\n y: top,\n x: left\n };\n};\n/*\\\n * Snap.getElementByPoint\n [ method ]\n **\n * Returns you topmost element under given point.\n **\n = (object) Snap element object\n - x (number) x coordinate from the top left corner of the window\n - y (number) y coordinate from the top left corner of the window\n > Usage\n | Snap.getElementByPoint(mouseX, mouseY).attr({stroke: \"#f00\"});\n\\*/\nSnap.getElementByPoint = function (x, y) {\n var paper = this,\n svg = paper.canvas,\n target = glob.doc.elementFromPoint(x, y);\n if (glob.win.opera && target.tagName == \"svg\") {\n var so = getOffset(target),\n sr = target.createSVGRect();\n sr.x = x - so.x;\n sr.y = y - so.y;\n sr.width = sr.height = 1;\n var hits = target.getIntersectionList(sr, null);\n if (hits.length) {\n target = hits[hits.length - 1];\n }\n }\n if (!target) {\n return null;\n }\n return wrap(target);\n};\n/*\\\n * Snap.plugin\n [ method ]\n **\n * Let you write plugins. You pass in a function with five arguments, like this:\n | Snap.plugin(function (Snap, Element, Paper, global, Fragment) {\n | Snap.newmethod = function () {};\n | Element.prototype.newmethod = function () {};\n | Paper.prototype.newmethod = function () {};\n | });\n * Inside the function you have access to all main objects (and their\n * prototypes). This allow you to extend anything you want.\n **\n - f (function) your plugin body\n\\*/\nSnap.plugin = function (f) {\n f(Snap, Element, Paper, glob, Fragment);\n};\nglob.win.Snap = Snap;\nreturn Snap;\n}(window || this));\n\n// Copyright (c) 2013 Adobe Systems Incorporated. All rights reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nSnap.plugin(function (Snap, Element, Paper, glob, Fragment) {\n var elproto = Element.prototype,\n is = Snap.is,\n Str = String,\n unit2px = Snap._unit2px,\n $ = Snap._.$,\n make = Snap._.make,\n getSomeDefs = Snap._.getSomeDefs,\n has = \"hasOwnProperty\",\n wrap = Snap._.wrap;\n /*\\\n * Element.getBBox\n [ method ]\n **\n * Returns the bounding box descriptor for the given element\n **\n = (object) bounding box descriptor:\n o {\n o cx: (number) x of the center,\n o cy: (number) x of the center,\n o h: (number) height,\n o height: (number) height,\n o path: (string) path command for the box,\n o r0: (number) radius of a circle that fully encloses the box,\n o r1: (number) radius of the smallest circle that can be enclosed,\n o r2: (number) radius of the largest circle that can be enclosed,\n o vb: (string) box as a viewbox command,\n o w: (number) width,\n o width: (number) width,\n o x2: (number) x of the right side,\n o x: (number) x of the left side,\n o y2: (number) y of the bottom edge,\n o y: (number) y of the top edge\n o }\n \\*/\n elproto.getBBox = function (isWithoutTransform) {\n if (!Snap.Matrix || !Snap.path) {\n return this.node.getBBox();\n }\n var el = this,\n m = new Snap.Matrix;\n if (el.removed) {\n return Snap._.box();\n }\n while (el.type == \"use\") {\n if (!isWithoutTransform) {\n m = m.add(el.transform().localMatrix.translate(el.attr(\"x\") || 0, el.attr(\"y\") || 0));\n }\n if (el.original) {\n el = el.original;\n } else {\n var href = el.attr(\"xlink:href\");\n el = el.original = el.node.ownerDocument.getElementById(href.substring(href.indexOf(\"#\") + 1));\n }\n }\n var _ = el._,\n pathfinder = Snap.path.get[el.type] || Snap.path.get.deflt;\n try {\n if (isWithoutTransform) {\n _.bboxwt = pathfinder ? Snap.path.getBBox(el.realPath = pathfinder(el)) : Snap._.box(el.node.getBBox());\n return Snap._.box(_.bboxwt);\n } else {\n el.realPath = pathfinder(el);\n el.matrix = el.transform().localMatrix;\n _.bbox = Snap.path.getBBox(Snap.path.map(el.realPath, m.add(el.matrix)));\n return Snap._.box(_.bbox);\n }\n } catch (e) {\n // Firefox doesn’t give you bbox of hidden element\n return Snap._.box();\n }\n };\n var propString = function () {\n return this.string;\n };\n function extractTransform(el, tstr) {\n if (tstr == null) {\n var doReturn = true;\n if (el.type == \"linearGradient\" || el.type == \"radialGradient\") {\n tstr = el.node.getAttribute(\"gradientTransform\");\n } else if (el.type == \"pattern\") {\n tstr = el.node.getAttribute(\"patternTransform\");\n } else {\n tstr = el.node.getAttribute(\"transform\");\n }\n if (!tstr) {\n return new Snap.Matrix;\n }\n tstr = Snap._.svgTransform2string(tstr);\n } else {\n if (!Snap._.rgTransform.test(tstr)) {\n tstr = Snap._.svgTransform2string(tstr);\n } else {\n tstr = Str(tstr).replace(/\\.{3}|\\u2026/g, el._.transform || E);\n }\n if (is(tstr, \"array\")) {\n tstr = Snap.path ? Snap.path.toString.call(tstr) : Str(tstr);\n }\n el._.transform = tstr;\n }\n var m = Snap._.transform2matrix(tstr, el.getBBox(1));\n if (doReturn) {\n return m;\n } else {\n el.matrix = m;\n }\n }\n /*\\\n * Element.transform\n [ method ]\n **\n * Gets or sets transformation of the element\n **\n - tstr (string) transform string in Snap or SVG format\n = (Element) the current element\n * or\n = (object) transformation descriptor:\n o {\n o string (string) transform string,\n o globalMatrix (Matrix) matrix of all transformations applied to element or its parents,\n o localMatrix (Matrix) matrix of transformations applied only to the element,\n o diffMatrix (Matrix) matrix of difference between global and local transformations,\n o global (string) global transformation as string,\n o local (string) local transformation as string,\n o toString (function) returns `string` property\n o }\n \\*/\n elproto.transform = function (tstr) {\n var _ = this._;\n if (tstr == null) {\n var papa = this,\n global = new Snap.Matrix(this.node.getCTM()),\n local = extractTransform(this),\n ms = [local],\n m = new Snap.Matrix,\n i,\n localString = local.toTransformString(),\n string = Str(local) == Str(this.matrix) ?\n Str(_.transform) : localString;\n while (papa.type != \"svg\" && (papa = papa.parent())) {\n ms.push(extractTransform(papa));\n }\n i = ms.length;\n while (i--) {\n m.add(ms[i]);\n }\n return {\n string: string,\n globalMatrix: global,\n totalMatrix: m,\n localMatrix: local,\n diffMatrix: global.clone().add(local.invert()),\n global: global.toTransformString(),\n total: m.toTransformString(),\n local: localString,\n toString: propString\n };\n }\n if (tstr instanceof Snap.Matrix) {\n this.matrix = tstr;\n this._.transform = tstr.toTransformString();\n } else {\n extractTransform(this, tstr);\n }\n\n if (this.node) {\n if (this.type == \"linearGradient\" || this.type == \"radialGradient\") {\n $(this.node, {gradientTransform: this.matrix});\n } else if (this.type == \"pattern\") {\n $(this.node, {patternTransform: this.matrix});\n } else {\n $(this.node, {transform: this.matrix});\n }\n }\n\n return this;\n };\n /*\\\n * Element.parent\n [ method ]\n **\n * Returns the element's parent\n **\n = (Element) the parent element\n \\*/\n elproto.parent = function () {\n return wrap(this.node.parentNode);\n };\n /*\\\n * Element.append\n [ method ]\n **\n * Appends the given element to current one\n **\n - el (Element|Set) element to append\n = (Element) the parent element\n \\*/\n /*\\\n * Element.add\n [ method ]\n **\n * See @Element.append\n \\*/\n elproto.append = elproto.add = function (el) {\n if (el) {\n if (el.type == \"set\") {\n var it = this;\n el.forEach(function (el) {\n it.add(el);\n });\n return this;\n }\n el = wrap(el);\n this.node.appendChild(el.node);\n el.paper = this.paper;\n }\n return this;\n };\n /*\\\n * Element.appendTo\n [ method ]\n **\n * Appends the current element to the given one\n **\n - el (Element) parent element to append to\n = (Element) the child element\n \\*/\n elproto.appendTo = function (el) {\n if (el) {\n el = wrap(el);\n el.append(this);\n }\n return this;\n };\n /*\\\n * Element.prepend\n [ method ]\n **\n * Prepends the given element to the current one\n **\n - el (Element) element to prepend\n = (Element) the parent element\n \\*/\n elproto.prepend = function (el) {\n if (el) {\n if (el.type == \"set\") {\n var it = this,\n first;\n el.forEach(function (el) {\n if (first) {\n first.after(el);\n } else {\n it.prepend(el);\n }\n first = el;\n });\n return this;\n }\n el = wrap(el);\n var parent = el.parent();\n this.node.insertBefore(el.node, this.node.firstChild);\n this.add && this.add();\n el.paper = this.paper;\n this.parent() && this.parent().add();\n parent && parent.add();\n }\n return this;\n };\n /*\\\n * Element.prependTo\n [ method ]\n **\n * Prepends the current element to the given one\n **\n - el (Element) parent element to prepend to\n = (Element) the child element\n \\*/\n elproto.prependTo = function (el) {\n el = wrap(el);\n el.prepend(this);\n return this;\n };\n /*\\\n * Element.before\n [ method ]\n **\n * Inserts given element before the current one\n **\n - el (Element) element to insert\n = (Element) the parent element\n \\*/\n elproto.before = function (el) {\n if (el.type == \"set\") {\n var it = this;\n el.forEach(function (el) {\n var parent = el.parent();\n it.node.parentNode.insertBefore(el.node, it.node);\n parent && parent.add();\n });\n this.parent().add();\n return this;\n }\n el = wrap(el);\n var parent = el.parent();\n this.node.parentNode.insertBefore(el.node, this.node);\n this.parent() && this.parent().add();\n parent && parent.add();\n el.paper = this.paper;\n return this;\n };\n /*\\\n * Element.after\n [ method ]\n **\n * Inserts given element after the current one\n **\n - el (Element) element to insert\n = (Element) the parent element\n \\*/\n elproto.after = function (el) {\n el = wrap(el);\n var parent = el.parent();\n if (this.node.nextSibling) {\n this.node.parentNode.insertBefore(el.node, this.node.nextSibling);\n } else {\n this.node.parentNode.appendChild(el.node);\n }\n this.parent() && this.parent().add();\n parent && parent.add();\n el.paper = this.paper;\n return this;\n };\n /*\\\n * Element.insertBefore\n [ method ]\n **\n * Inserts the element after the given one\n **\n - el (Element) element next to whom insert to\n = (Element) the parent element\n \\*/\n elproto.insertBefore = function (el) {\n el = wrap(el);\n var parent = this.parent();\n el.node.parentNode.insertBefore(this.node, el.node);\n this.paper = el.paper;\n parent && parent.add();\n el.parent() && el.parent().add();\n return this;\n };\n /*\\\n * Element.insertAfter\n [ method ]\n **\n * Inserts the element after the given one\n **\n - el (Element) element next to whom insert to\n = (Element) the parent element\n \\*/\n elproto.insertAfter = function (el) {\n el = wrap(el);\n var parent = this.parent();\n el.node.parentNode.insertBefore(this.node, el.node.nextSibling);\n this.paper = el.paper;\n parent && parent.add();\n el.parent() && el.parent().add();\n return this;\n };\n /*\\\n * Element.remove\n [ method ]\n **\n * Removes element from the DOM\n = (Element) the detached element\n \\*/\n elproto.remove = function () {\n var parent = this.parent();\n this.node.parentNode && this.node.parentNode.removeChild(this.node);\n delete this.paper;\n this.removed = true;\n parent && parent.add();\n return this;\n };\n /*\\\n * Element.select\n [ method ]\n **\n * Gathers the nested @Element matching the given set of CSS selectors\n **\n - query (string) CSS selector\n = (Element) result of query selection\n \\*/\n elproto.select = function (query) {\n query = Str(query).replace(/([^\\\\]):/g, \"$1\\\\:\");\n return wrap(this.node.querySelector(query));\n };\n /*\\\n * Element.selectAll\n [ method ]\n **\n * Gathers nested @Element objects matching the given set of CSS selectors\n **\n - query (string) CSS selector\n = (Set|array) result of query selection\n \\*/\n elproto.selectAll = function (query) {\n var nodelist = this.node.querySelectorAll(query),\n set = (Snap.set || Array)();\n for (var i = 0; i < nodelist.length; i++) {\n set.push(wrap(nodelist[i]));\n }\n return set;\n };\n /*\\\n * Element.asPX\n [ method ]\n **\n * Returns given attribute of the element as a `px` value (not %, em, etc.)\n **\n - attr (string) attribute name\n - value (string) #optional attribute value\n = (Element) result of query selection\n \\*/\n elproto.asPX = function (attr, value) {\n if (value == null) {\n value = this.attr(attr);\n }\n return +unit2px(this, attr, value);\n };\n // SIERRA Element.use(): I suggest adding a note about how to access the original element the returned <use> instantiates. It's a part of SVG with which ordinary web developers may be least familiar.\n /*\\\n * Element.use\n [ method ]\n **\n * Creates a `<use>` element linked to the current element\n **\n = (Element) the `<use>` element\n \\*/\n elproto.use = function () {\n var use,\n id = this.node.id;\n if (!id) {\n id = this.id;\n $(this.node, {\n id: id\n });\n }\n if (this.type == \"linearGradient\" || this.type == \"radialGradient\" ||\n this.type == \"pattern\") {\n use = make(this.type, this.node.parentNode);\n } else {\n use = make(\"use\", this.node.parentNode);\n }\n $(use.node, {\n \"xlink:href\": \"#\" + id\n });\n use.original = this;\n return use;\n };\n function fixids(el) {\n var els = el.selectAll(\"*\"),\n it,\n url = /^\\s*url\\((\"|'|)(.*)\\1\\)\\s*$/,\n ids = [],\n uses = {};\n function urltest(it, name) {\n var val = $(it.node, name);\n val = val && val.match(url);\n val = val && val[2];\n if (val && val.charAt() == \"#\") {\n val = val.substring(1);\n } else {\n return;\n }\n if (val) {\n uses[val] = (uses[val] || []).concat(function (id) {\n var attr = {};\n attr[name] = URL(id);\n $(it.node, attr);\n });\n }\n }\n function linktest(it) {\n var val = $(it.node, \"xlink:href\");\n if (val && val.charAt() == \"#\") {\n val = val.substring(1);\n } else {\n return;\n }\n if (val) {\n uses[val] = (uses[val] || []).concat(function (id) {\n it.attr(\"xlink:href\", \"#\" + id);\n });\n }\n }\n for (var i = 0, ii = els.length; i < ii; i++) {\n it = els[i];\n urltest(it, \"fill\");\n urltest(it, \"stroke\");\n urltest(it, \"filter\");\n urltest(it, \"mask\");\n urltest(it, \"clip-path\");\n linktest(it);\n var oldid = $(it.node, \"id\");\n if (oldid) {\n $(it.node, {id: it.id});\n ids.push({\n old: oldid,\n id: it.id\n });\n }\n }\n for (i = 0, ii = ids.length; i < ii; i++) {\n var fs = uses[ids[i].old];\n if (fs) {\n for (var j = 0, jj = fs.length; j < jj; j++) {\n fs[j](ids[i].id);\n }\n }\n }\n }\n /*\\\n * Element.clone\n [ method ]\n **\n * Creates a clone of the element and inserts it after the element\n **\n = (Element) the clone\n \\*/\n elproto.clone = function () {\n var clone = wrap(this.node.cloneNode(true));\n if ($(clone.node, \"id\")) {\n $(clone.node, {id: clone.id});\n }\n fixids(clone);\n clone.insertAfter(this);\n return clone;\n };\n /*\\\n * Element.toDefs\n [ method ]\n **\n * Moves element to the shared `<defs>` area\n **\n = (Element) the element\n \\*/\n elproto.toDefs = function () {\n var defs = getSomeDefs(this);\n defs.appendChild(this.node);\n return this;\n };\n /*\\\n * Element.toPattern\n [ method ]\n **\n * Creates a `<pattern>` element from the current element\n **\n * To create a pattern you have to specify the pattern rect:\n - x (string|number)\n - y (string|number)\n - width (string|number)\n - height (string|number)\n = (Element) the `<pattern>` element\n * You can use pattern later on as an argument for `fill` attribute:\n | var p = paper.path(\"M10-5-10,15M15,0,0,15M0-5-20,15\").attr({\n | fill: \"none\",\n | stroke: \"#bada55\",\n | strokeWidth: 5\n | }).pattern(0, 0, 10, 10),\n | c = paper.circle(200, 200, 100);\n | c.attr({\n | fill: p\n | });\n \\*/\n elproto.pattern = elproto.toPattern = function (x, y, width, height) {\n var p = make(\"pattern\", getSomeDefs(this));\n if (x == null) {\n x = this.getBBox();\n }\n if (is(x, \"object\") && \"x\" in x) {\n y = x.y;\n width = x.width;\n height = x.height;\n x = x.x;\n }\n $(p.node, {\n x: x,\n y: y,\n width: width,\n height: height,\n patternUnits: \"userSpaceOnUse\",\n id: p.id,\n viewBox: [x, y, width, height].join(\" \")\n });\n p.node.appendChild(this.node);\n return p;\n };\n// SIERRA Element.marker(): clarify what a reference point is. E.g., helps you offset the object from its edge such as when centering it over a path.\n// SIERRA Element.marker(): I suggest the method should accept default reference point values. Perhaps centered with (refX = width/2) and (refY = height/2)? Also, couldn't it assume the element's current _width_ and _height_? And please specify what _x_ and _y_ mean: offsets? If so, from where? Couldn't they also be assigned default values?\n /*\\\n * Element.marker\n [ method ]\n **\n * Creates a `<marker>` element from the current element\n **\n * To create a marker you have to specify the bounding rect and reference point:\n - x (number)\n - y (number)\n - width (number)\n - height (number)\n - refX (number)\n - refY (number)\n = (Element) the `<marker>` element\n * You can specify the marker later as an argument for `marker-start`, `marker-end`, `marker-mid`, and `marker` attributes. The `marker` attribute places the marker at every point along the path, and `marker-mid` places them at every point except the start and end.\n \\*/\n // TODO add usage for markers\n elproto.marker = function (x, y, width, height, refX, refY) {\n var p = make(\"marker\", getSomeDefs(this));\n if (x == null) {\n x = this.getBBox();\n }\n if (is(x, \"object\") && \"x\" in x) {\n y = x.y;\n width = x.width;\n height = x.height;\n refX = x.refX || x.cx;\n refY = x.refY || x.cy;\n x = x.x;\n }\n $(p.node, {\n viewBox: [x, y, width, height].join(\" \"),\n markerWidth: width,\n markerHeight: height,\n orient: \"auto\",\n refX: refX || 0,\n refY: refY || 0,\n id: p.id\n });\n p.node.appendChild(this.node);\n return p;\n };\n // animation\n function slice(from, to, f) {\n return function (arr) {\n var res = arr.slice(from, to);\n if (res.length == 1) {\n res = res[0];\n }\n return f ? f(res) : res;\n };\n }\n var Animation = function (attr, ms, easing, callback) {\n if (typeof easing == \"function\" && !easing.length) {\n callback = easing;\n easing = mina.linear;\n }\n this.attr = attr;\n this.dur = ms;\n easing && (this.easing = easing);\n callback && (this.callback = callback);\n };\n Snap._.Animation = Animation;\n /*\\\n * Snap.animation\n [ method ]\n **\n * Creates an animation object\n **\n - attr (object) attributes of final destination\n - duration (number) duration of the animation, in milliseconds\n - easing (function) #optional one of easing functions of @mina or custom one\n - callback (function) #optional callback function that fires when animation ends\n = (object) animation object\n \\*/\n Snap.animation = function (attr, ms, easing, callback) {\n return new Animation(attr, ms, easing, callback);\n };\n /*\\\n * Element.inAnim\n [ method ]\n **\n * Returns a set of animations that may be able to manipulate the current element\n **\n = (object) in format:\n o {\n o anim (object) animation object,\n o mina (object) @mina object,\n o curStatus (number) 0..1 — status of the animation: 0 — just started, 1 — just finished,\n o status (function) gets or sets the status of the animation,\n o stop (function) stops the animation\n o }\n \\*/\n elproto.inAnim = function () {\n var el = this,\n res = [];\n for (var id in el.anims) if (el.anims[has](id)) {\n (function (a) {\n res.push({\n anim: new Animation(a._attrs, a.dur, a.easing, a._callback),\n mina: a,\n curStatus: a.status(),\n status: function (val) {\n return a.status(val);\n },\n stop: function () {\n a.stop();\n }\n });\n }(el.anims[id]));\n }\n return res;\n };\n /*\\\n * Snap.animate\n [ method ]\n **\n * Runs generic animation of one number into another with a caring function\n **\n - from (number|array) number or array of numbers\n - to (number|array) number or array of numbers\n - setter (function) caring function that accepts one number argument\n - duration (number) duration, in milliseconds\n - easing (function) #optional easing function from @mina or custom\n - callback (function) #optional callback function to execute when animation ends\n = (object) animation object in @mina format\n o {\n o id (string) animation id, consider it read-only,\n o duration (function) gets or sets the duration of the animation,\n o easing (function) easing,\n o speed (function) gets or sets the speed of the animation,\n o status (function) gets or sets the status of the animation,\n o stop (function) stops the animation\n o }\n | var rect = Snap().rect(0, 0, 10, 10);\n | Snap.animate(0, 10, function (val) {\n | rect.attr({\n | x: val\n | });\n | }, 1000);\n | // in given context is equivalent to\n | rect.animate({x: 10}, 1000);\n \\*/\n Snap.animate = function (from, to, setter, ms, easing, callback) {\n if (typeof easing == \"function\" && !easing.length) {\n callback = easing;\n easing = mina.linear;\n }\n var now = mina.time(),\n anim = mina(from, to, now, now + ms, mina.time, setter, easing);\n callback && eve.once(\"mina.finish.\" + anim.id, callback);\n return anim;\n };\n /*\\\n * Element.stop\n [ method ]\n **\n * Stops all the animations for the current element\n **\n = (Element) the current element\n \\*/\n elproto.stop = function () {\n var anims = this.inAnim();\n for (var i = 0, ii = anims.length; i < ii; i++) {\n anims[i].stop();\n }\n return this;\n };\n /*\\\n * Element.animate\n [ method ]\n **\n * Animates the given attributes of the element\n **\n - attrs (object) key-value pairs of destination attributes\n - duration (number) duration of the animation in milliseconds\n - easing (function) #optional easing function from @mina or custom\n - callback (function) #optional callback function that executes when the animation ends\n = (Element) the current element\n \\*/\n elproto.animate = function (attrs, ms, easing, callback) {\n if (typeof easing == \"function\" && !easing.length) {\n callback = easing;\n easing = mina.linear;\n }\n if (attrs instanceof Animation) {\n callback = attrs.callback;\n easing = attrs.easing;\n ms = easing.dur;\n attrs = attrs.attr;\n }\n var fkeys = [], tkeys = [], keys = {}, from, to, f, eq,\n el = this;\n for (var key in attrs) if (attrs[has](key)) {\n if (el.equal) {\n eq = el.equal(key, Str(attrs[key]));\n from = eq.from;\n to = eq.to;\n f = eq.f;\n } else {\n from = +el.attr(key);\n to = +attrs[key];\n }\n var len = is(from, \"array\") ? from.length : 1;\n keys[key] = slice(fkeys.length, fkeys.length + len, f);\n fkeys = fkeys.concat(from);\n tkeys = tkeys.concat(to);\n }\n var now = mina.time(),\n anim = mina(fkeys, tkeys, now, now + ms, mina.time, function (val) {\n var attr = {};\n for (var key in keys) if (keys[has](key)) {\n attr[key] = keys[key](val);\n }\n el.attr(attr);\n }, easing);\n el.anims[anim.id] = anim;\n anim._attrs = attrs;\n anim._callback = callback;\n eve(\"snap.animcreated.\" + el.id, anim);\n eve.once(\"mina.finish.\" + anim.id, function () {\n delete el.anims[anim.id];\n callback && callback.call(el);\n });\n eve.once(\"mina.stop.\" + anim.id, function () {\n delete el.anims[anim.id];\n });\n return el;\n };\n var eldata = {};\n /*\\\n * Element.data\n [ method ]\n **\n * Adds or retrieves given value associated with given key. (Don’t confuse\n * with `data-` attributes)\n *\n * See also @Element.removeData\n - key (string) key to store data\n - value (any) #optional value to store\n = (object) @Element\n * or, if value is not specified:\n = (any) value\n > Usage\n | for (var i = 0, i < 5, i++) {\n | paper.circle(10 + 15 * i, 10, 10)\n | .attr({fill: \"#000\"})\n | .data(\"i\", i)\n | .click(function () {\n | alert(this.data(\"i\"));\n | });\n | }\n \\*/\n elproto.data = function (key, value) {\n var data = eldata[this.id] = eldata[this.id] || {};\n if (arguments.length == 0){\n eve(\"snap.data.get.\" + this.id, this, data, null);\n return data;\n }\n if (arguments.length == 1) {\n if (Snap.is(key, \"object\")) {\n for (var i in key) if (key[has](i)) {\n this.data(i, key[i]);\n }\n return this;\n }\n eve(\"snap.data.get.\" + this.id, this, data[key], key);\n return data[key];\n }\n data[key] = value;\n eve(\"snap.data.set.\" + this.id, this, value, key);\n return this;\n };\n /*\\\n * Element.removeData\n [ method ]\n **\n * Removes value associated with an element by given key.\n * If key is not provided, removes all the data of the element.\n - key (string) #optional key\n = (object) @Element\n \\*/\n elproto.removeData = function (key) {\n if (key == null) {\n eldata[this.id] = {};\n } else {\n eldata[this.id] && delete eldata[this.id][key];\n }\n return this;\n };\n /*\\\n * Element.outerSVG\n [ method ]\n **\n * Returns SVG code for the element, equivalent to HTML's `outerHTML`.\n *\n * See also @Element.innerSVG\n = (string) SVG code for the element\n \\*/\n /*\\\n * Element.toString\n [ method ]\n **\n * See @Element.outerSVG\n \\*/\n elproto.outerSVG = elproto.toString = toString(1);\n /*\\\n * Element.innerSVG\n [ method ]\n **\n * Returns SVG code for the element's contents, equivalent to HTML's `innerHTML`\n = (string) SVG code for the element\n \\*/\n elproto.innerSVG = toString();\n function toString(type) {\n return function () {\n var res = type ? \"<\" + this.type : \"\",\n attr = this.node.attributes,\n chld = this.node.childNodes;\n if (type) {\n for (var i = 0, ii = attr.length; i < ii; i++) {\n res += \" \" + attr[i].name + '=\"' +\n attr[i].value.replace(/\"/g, '\\\\\"') + '\"';\n }\n }\n if (chld.length) {\n type && (res += \">\");\n for (i = 0, ii = chld.length; i < ii; i++) {\n if (chld[i].nodeType == 3) {\n res += chld[i].nodeValue;\n } else if (chld[i].nodeType == 1) {\n res += wrap(chld[i]).toString();\n }\n }\n type && (res += \"</\" + this.type + \">\");\n } else {\n type && (res += \"/>\");\n }\n return res;\n };\n }\n elproto.toDataURL = function () {\n if (window && window.btoa) {\n var bb = this.getBBox(),\n svg = Snap.format('<svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"{width}\" height=\"{height}\" viewBox=\"{x} {y} {width} {height}\">{contents}</svg>', {\n x: +bb.x.toFixed(3),\n y: +bb.y.toFixed(3),\n width: +bb.width.toFixed(3),\n height: +bb.height.toFixed(3),\n contents: this.outerSVG()\n });\n return \"data:image/svg+xml;base64,\" + btoa(unescape(encodeURIComponent(svg)));\n }\n };\n /*\\\n * Fragment.select\n [ method ]\n **\n * See @Element.select\n \\*/\n Fragment.prototype.select = elproto.select;\n /*\\\n * Fragment.selectAll\n [ method ]\n **\n * See @Element.selectAll\n \\*/\n Fragment.prototype.selectAll = elproto.selectAll;\n});\n\n// Copyright (c) 2013 Adobe Systems Incorporated. All rights reserved.\n// \n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n// \n// http://www.apache.org/licenses/LICENSE-2.0\n// \n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nSnap.plugin(function (Snap, Element, Paper, glob, Fragment) {\n var objectToString = Object.prototype.toString,\n Str = String,\n math = Math,\n E = \"\";\n function Matrix(a, b, c, d, e, f) {\n if (b == null && objectToString.call(a) == \"[object SVGMatrix]\") {\n this.a = a.a;\n this.b = a.b;\n this.c = a.c;\n this.d = a.d;\n this.e = a.e;\n this.f = a.f;\n return;\n }\n if (a != null) {\n this.a = +a;\n this.b = +b;\n this.c = +c;\n this.d = +d;\n this.e = +e;\n this.f = +f;\n } else {\n this.a = 1;\n this.b = 0;\n this.c = 0;\n this.d = 1;\n this.e = 0;\n this.f = 0;\n }\n }\n (function (matrixproto) {\n /*\\\n * Matrix.add\n [ method ]\n **\n * Adds the given matrix to existing one\n - a (number)\n - b (number)\n - c (number)\n - d (number)\n - e (number)\n - f (number)\n * or\n - matrix (object) @Matrix\n \\*/\n matrixproto.add = function (a, b, c, d, e, f) {\n var out = [[], [], []],\n m = [[this.a, this.c, this.e], [this.b, this.d, this.f], [0, 0, 1]],\n matrix = [[a, c, e], [b, d, f], [0, 0, 1]],\n x, y, z, res;\n\n if (a && a instanceof Matrix) {\n matrix = [[a.a, a.c, a.e], [a.b, a.d, a.f], [0, 0, 1]];\n }\n\n for (x = 0; x < 3; x++) {\n for (y = 0; y < 3; y++) {\n res = 0;\n for (z = 0; z < 3; z++) {\n res += m[x][z] * matrix[z][y];\n }\n out[x][y] = res;\n }\n }\n this.a = out[0][0];\n this.b = out[1][0];\n this.c = out[0][1];\n this.d = out[1][1];\n this.e = out[0][2];\n this.f = out[1][2];\n return this;\n };\n /*\\\n * Matrix.invert\n [ method ]\n **\n * Returns an inverted version of the matrix\n = (object) @Matrix\n \\*/\n matrixproto.invert = function () {\n var me = this,\n x = me.a * me.d - me.b * me.c;\n return new Matrix(me.d / x, -me.b / x, -me.c / x, me.a / x, (me.c * me.f - me.d * me.e) / x, (me.b * me.e - me.a * me.f) / x);\n };\n /*\\\n * Matrix.clone\n [ method ]\n **\n * Returns a copy of the matrix\n = (object) @Matrix\n \\*/\n matrixproto.clone = function () {\n return new Matrix(this.a, this.b, this.c, this.d, this.e, this.f);\n };\n /*\\\n * Matrix.translate\n [ method ]\n **\n * Translate the matrix\n - x (number) horizontal offset distance\n - y (number) vertical offset distance\n \\*/\n matrixproto.translate = function (x, y) {\n return this.add(1, 0, 0, 1, x, y);\n };\n /*\\\n * Matrix.scale\n [ method ]\n **\n * Scales the matrix\n - x (number) amount to be scaled, with `1` resulting in no change\n - y (number) #optional amount to scale along the vertical axis. (Otherwise `x` applies to both axes.)\n - cx (number) #optional horizontal origin point from which to scale\n - cy (number) #optional vertical origin point from which to scale\n * Default cx, cy is the middle point of the element.\n \\*/\n matrixproto.scale = function (x, y, cx, cy) {\n y == null && (y = x);\n (cx || cy) && this.add(1, 0, 0, 1, cx, cy);\n this.add(x, 0, 0, y, 0, 0);\n (cx || cy) && this.add(1, 0, 0, 1, -cx, -cy);\n return this;\n };\n /*\\\n * Matrix.rotate\n [ method ]\n **\n * Rotates the matrix\n - a (number) angle of rotation, in degrees\n - x (number) horizontal origin point from which to rotate\n - y (number) vertical origin point from which to rotate\n \\*/\n matrixproto.rotate = function (a, x, y) {\n a = Snap.rad(a);\n x = x || 0;\n y = y || 0;\n var cos = +math.cos(a).toFixed(9),\n sin = +math.sin(a).toFixed(9);\n this.add(cos, sin, -sin, cos, x, y);\n return this.add(1, 0, 0, 1, -x, -y);\n };\n /*\\\n * Matrix.x\n [ method ]\n **\n * Returns x coordinate for given point after transformation described by the matrix. See also @Matrix.y\n - x (number)\n - y (number)\n = (number) x\n \\*/\n matrixproto.x = function (x, y) {\n return x * this.a + y * this.c + this.e;\n };\n /*\\\n * Matrix.y\n [ method ]\n **\n * Returns y coordinate for given point after transformation described by the matrix. See also @Matrix.x\n - x (number)\n - y (number)\n = (number) y\n \\*/\n matrixproto.y = function (x, y) {\n return x * this.b + y * this.d + this.f;\n };\n matrixproto.get = function (i) {\n return +this[Str.fromCharCode(97 + i)].toFixed(4);\n };\n matrixproto.toString = function () {\n return \"matrix(\" + [this.get(0), this.get(1), this.get(2), this.get(3), this.get(4), this.get(5)].join() + \")\";\n };\n matrixproto.offset = function () {\n return [this.e.toFixed(4), this.f.toFixed(4)];\n };\n function norm(a) {\n return a[0] * a[0] + a[1] * a[1];\n }\n function normalize(a) {\n var mag = math.sqrt(norm(a));\n a[0] && (a[0] /= mag);\n a[1] && (a[1] /= mag);\n }\n /*\\\n * Matrix.determinant\n [ method ]\n **\n * Finds determinant of the given matrix.\n = (number) determinant\n \\*/\n matrixproto.determinant = function () {\n return this.a * this.d - this.b * this.c;\n };\n /*\\\n * Matrix.split\n [ method ]\n **\n * Splits matrix into primitive transformations\n = (object) in format:\n o dx (number) translation by x\n o dy (number) translation by y\n o scalex (number) scale by x\n o scaley (number) scale by y\n o shear (number) shear\n o rotate (number) rotation in deg\n o isSimple (boolean) could it be represented via simple transformations\n \\*/\n matrixproto.split = function () {\n var out = {};\n // translation\n out.dx = this.e;\n out.dy = this.f;\n\n // scale and shear\n var row = [[this.a, this.c], [this.b, this.d]];\n out.scalex = math.sqrt(norm(row[0]));\n normalize(row[0]);\n\n out.shear = row[0][0] * row[1][0] + row[0][1] * row[1][1];\n row[1] = [row[1][0] - row[0][0] * out.shear, row[1][1] - row[0][1] * out.shear];\n\n out.scaley = math.sqrt(norm(row[1]));\n normalize(row[1]);\n out.shear /= out.scaley;\n\n if (this.determinant() < 0) {\n out.scalex = -out.scalex;\n }\n\n // rotation\n var sin = -row[0][1],\n cos = row[1][1];\n if (cos < 0) {\n out.rotate = Snap.deg(math.acos(cos));\n if (sin < 0) {\n out.rotate = 360 - out.rotate;\n }\n } else {\n out.rotate = Snap.deg(math.asin(sin));\n }\n\n out.isSimple = !+out.shear.toFixed(9) && (out.scalex.toFixed(9) == out.scaley.toFixed(9) || !out.rotate);\n out.isSuperSimple = !+out.shear.toFixed(9) && out.scalex.toFixed(9) == out.scaley.toFixed(9) && !out.rotate;\n out.noRotation = !+out.shear.toFixed(9) && !out.rotate;\n return out;\n };\n /*\\\n * Matrix.toTransformString\n [ method ]\n **\n * Returns transform string that represents given matrix\n = (string) transform string\n \\*/\n matrixproto.toTransformString = function (shorter) {\n var s = shorter || this.split();\n if (!+s.shear.toFixed(9)) {\n s.scalex = +s.scalex.toFixed(4);\n s.scaley = +s.scaley.toFixed(4);\n s.rotate = +s.rotate.toFixed(4);\n return (s.dx || s.dy ? \"t\" + [+s.dx.toFixed(4), +s.dy.toFixed(4)] : E) + \n (s.scalex != 1 || s.scaley != 1 ? \"s\" + [s.scalex, s.scaley, 0, 0] : E) +\n (s.rotate ? \"r\" + [+s.rotate.toFixed(4), 0, 0] : E);\n } else {\n return \"m\" + [this.get(0), this.get(1), this.get(2), this.get(3), this.get(4), this.get(5)];\n }\n };\n })(Matrix.prototype);\n /*\\\n * Snap.Matrix\n [ method ]\n **\n * Matrix constructor, extend on your own risk.\n * To create matrices use @Snap.matrix.\n \\*/\n Snap.Matrix = Matrix;\n /*\\\n * Snap.matrix\n [ method ]\n **\n * Utility method\n **\n * Returns a matrix based on the given parameters\n - a (number)\n - b (number)\n - c (number)\n - d (number)\n - e (number)\n - f (number)\n * or\n - svgMatrix (SVGMatrix)\n = (object) @Matrix\n \\*/\n Snap.matrix = function (a, b, c, d, e, f) {\n return new Matrix(a, b, c, d, e, f);\n };\n});\n// Copyright (c) 2013 Adobe Systems Incorporated. All rights reserved.\n// \n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n// \n// http://www.apache.org/licenses/LICENSE-2.0\n// \n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nSnap.plugin(function (Snap, Element, Paper, glob, Fragment) {\n var has = \"hasOwnProperty\",\n make = Snap._.make,\n wrap = Snap._.wrap,\n is = Snap.is,\n getSomeDefs = Snap._.getSomeDefs,\n reURLValue = /^url\\(#?([^)]+)\\)$/,\n $ = Snap._.$,\n URL = Snap.url,\n Str = String,\n separator = Snap._.separator,\n E = \"\";\n // Attributes event handlers\n eve.on(\"snap.util.attr.mask\", function (value) {\n if (value instanceof Element || value instanceof Fragment) {\n eve.stop();\n if (value instanceof Fragment && value.node.childNodes.length == 1) {\n value = value.node.firstChild;\n getSomeDefs(this).appendChild(value);\n value = wrap(value);\n }\n if (value.type == \"mask\") {\n var mask = value;\n } else {\n mask = make(\"mask\", getSomeDefs(this));\n mask.node.appendChild(value.node);\n }\n !mask.node.id && $(mask.node, {\n id: mask.id\n });\n $(this.node, {\n mask: URL(mask.id)\n });\n }\n });\n (function (clipIt) {\n eve.on(\"snap.util.attr.clip\", clipIt);\n eve.on(\"snap.util.attr.clip-path\", clipIt);\n eve.on(\"snap.util.attr.clipPath\", clipIt);\n }(function (value) {\n if (value instanceof Element || value instanceof Fragment) {\n eve.stop();\n if (value.type == \"clipPath\") {\n var clip = value;\n } else {\n clip = make(\"clipPath\", getSomeDefs(this));\n clip.node.appendChild(value.node);\n !clip.node.id && $(clip.node, {\n id: clip.id\n });\n }\n $(this.node, {\n \"clip-path\": URL(clip.node.id || clip.id)\n });\n }\n }));\n function fillStroke(name) {\n return function (value) {\n eve.stop();\n if (value instanceof Fragment && value.node.childNodes.length == 1 &&\n (value.node.firstChild.tagName == \"radialGradient\" ||\n value.node.firstChild.tagName == \"linearGradient\" ||\n value.node.firstChild.tagName == \"pattern\")) {\n value = value.node.firstChild;\n getSomeDefs(this).appendChild(value);\n value = wrap(value);\n }\n if (value instanceof Element) {\n if (value.type == \"radialGradient\" || value.type == \"linearGradient\"\n || value.type == \"pattern\") {\n if (!value.node.id) {\n $(value.node, {\n id: value.id\n });\n }\n var fill = URL(value.node.id);\n } else {\n fill = value.attr(name);\n }\n } else {\n fill = Snap.color(value);\n if (fill.error) {\n var grad = Snap(getSomeDefs(this).ownerSVGElement).gradient(value);\n if (grad) {\n if (!grad.node.id) {\n $(grad.node, {\n id: grad.id\n });\n }\n fill = URL(grad.node.id);\n } else {\n fill = value;\n }\n } else {\n fill = Str(fill);\n }\n }\n var attrs = {};\n attrs[name] = fill;\n $(this.node, attrs);\n this.node.style[name] = E;\n };\n }\n eve.on(\"snap.util.attr.fill\", fillStroke(\"fill\"));\n eve.on(\"snap.util.attr.stroke\", fillStroke(\"stroke\"));\n var gradrg = /^([lr])(?:\\(([^)]*)\\))?(.*)$/i;\n eve.on(\"snap.util.grad.parse\", function parseGrad(string) {\n string = Str(string);\n var tokens = string.match(gradrg);\n if (!tokens) {\n return null;\n }\n var type = tokens[1],\n params = tokens[2],\n stops = tokens[3];\n params = params.split(/\\s*,\\s*/).map(function (el) {\n return +el == el ? +el : el;\n });\n if (params.length == 1 && params[0] == 0) {\n params = [];\n }\n stops = stops.split(\"-\");\n stops = stops.map(function (el) {\n el = el.split(\":\");\n var out = {\n color: el[0]\n };\n if (el[1]) {\n out.offset = parseFloat(el[1]);\n }\n return out;\n });\n return {\n type: type,\n params: params,\n stops: stops\n };\n });\n\n eve.on(\"snap.util.attr.d\", function (value) {\n eve.stop();\n if (is(value, \"array\") && is(value[0], \"array\")) {\n value = Snap.path.toString.call(value);\n }\n value = Str(value);\n if (value.match(/[ruo]/i)) {\n value = Snap.path.toAbsolute(value);\n }\n $(this.node, {d: value});\n })(-1);\n eve.on(\"snap.util.attr.#text\", function (value) {\n eve.stop();\n value = Str(value);\n var txt = glob.doc.createTextNode(value);\n while (this.node.firstChild) {\n this.node.removeChild(this.node.firstChild);\n }\n this.node.appendChild(txt);\n })(-1);\n eve.on(\"snap.util.attr.path\", function (value) {\n eve.stop();\n this.attr({d: value});\n })(-1);\n eve.on(\"snap.util.attr.class\", function (value) {\n eve.stop();\n this.node.className.baseVal = value;\n })(-1);\n eve.on(\"snap.util.attr.viewBox\", function (value) {\n var vb;\n if (is(value, \"object\") && \"x\" in value) {\n vb = [value.x, value.y, value.width, value.height].join(\" \");\n } else if (is(value, \"array\")) {\n vb = value.join(\" \");\n } else {\n vb = value;\n }\n $(this.node, {\n viewBox: vb\n });\n eve.stop();\n })(-1);\n eve.on(\"snap.util.attr.transform\", function (value) {\n this.transform(value);\n eve.stop();\n })(-1);\n eve.on(\"snap.util.attr.r\", function (value) {\n if (this.type == \"rect\") {\n eve.stop();\n $(this.node, {\n rx: value,\n ry: value\n });\n }\n })(-1);\n eve.on(\"snap.util.attr.textpath\", function (value) {\n eve.stop();\n if (this.type == \"text\") {\n var id, tp, node;\n if (!value && this.textPath) {\n tp = this.textPath;\n while (tp.node.firstChild) {\n this.node.appendChild(tp.node.firstChild);\n }\n tp.remove();\n delete this.textPath;\n return;\n }\n if (is(value, \"string\")) {\n var defs = getSomeDefs(this),\n path = wrap(defs.parentNode).path(value);\n defs.appendChild(path.node);\n id = path.id;\n path.attr({id: id});\n } else {\n value = wrap(value);\n if (value instanceof Element) {\n id = value.attr(\"id\");\n if (!id) {\n id = value.id;\n value.attr({id: id});\n }\n }\n }\n if (id) {\n tp = this.textPath;\n node = this.node;\n if (tp) {\n tp.attr({\"xlink:href\": \"#\" + id});\n } else {\n tp = $(\"textPath\", {\n \"xlink:href\": \"#\" + id\n });\n while (node.firstChild) {\n tp.appendChild(node.firstChild);\n }\n node.appendChild(tp);\n this.textPath = wrap(tp);\n }\n }\n }\n })(-1);\n eve.on(\"snap.util.attr.text\", function (value) {\n if (this.type == \"text\") {\n var i = 0,\n node = this.node,\n tuner = function (chunk) {\n var out = $(\"tspan\");\n if (is(chunk, \"array\")) {\n for (var i = 0; i < chunk.length; i++) {\n out.appendChild(tuner(chunk[i]));\n }\n } else {\n out.appendChild(glob.doc.createTextNode(chunk));\n }\n out.normalize && out.normalize();\n return out;\n };\n while (node.firstChild) {\n node.removeChild(node.firstChild);\n }\n var tuned = tuner(value);\n while (tuned.firstChild) {\n node.appendChild(tuned.firstChild);\n }\n }\n eve.stop();\n })(-1);\n function setFontSize(value) {\n eve.stop();\n if (value == +value) {\n value += \"px\";\n }\n this.node.style.fontSize = value;\n }\n eve.on(\"snap.util.attr.fontSize\", setFontSize)(-1);\n eve.on(\"snap.util.attr.font-size\", setFontSize)(-1);\n\n\n eve.on(\"snap.util.getattr.transform\", function () {\n eve.stop();\n return this.transform();\n })(-1);\n eve.on(\"snap.util.getattr.textpath\", function () {\n eve.stop();\n return this.textPath;\n })(-1);\n // Markers\n (function () {\n function getter(end) {\n return function () {\n eve.stop();\n var style = glob.doc.defaultView.getComputedStyle(this.node, null).getPropertyValue(\"marker-\" + end);\n if (style == \"none\") {\n return style;\n } else {\n return Snap(glob.doc.getElementById(style.match(reURLValue)[1]));\n }\n };\n }\n function setter(end) {\n return function (value) {\n eve.stop();\n var name = \"marker\" + end.charAt(0).toUpperCase() + end.substring(1);\n if (value == \"\" || !value) {\n this.node.style[name] = \"none\";\n return;\n }\n if (value.type == \"marker\") {\n var id = value.node.id;\n if (!id) {\n $(value.node, {id: value.id});\n }\n this.node.style[name] = URL(id);\n return;\n }\n };\n }\n eve.on(\"snap.util.getattr.marker-end\", getter(\"end\"))(-1);\n eve.on(\"snap.util.getattr.markerEnd\", getter(\"end\"))(-1);\n eve.on(\"snap.util.getattr.marker-start\", getter(\"start\"))(-1);\n eve.on(\"snap.util.getattr.markerStart\", getter(\"start\"))(-1);\n eve.on(\"snap.util.getattr.marker-mid\", getter(\"mid\"))(-1);\n eve.on(\"snap.util.getattr.markerMid\", getter(\"mid\"))(-1);\n eve.on(\"snap.util.attr.marker-end\", setter(\"end\"))(-1);\n eve.on(\"snap.util.attr.markerEnd\", setter(\"end\"))(-1);\n eve.on(\"snap.util.attr.marker-start\", setter(\"start\"))(-1);\n eve.on(\"snap.util.attr.markerStart\", setter(\"start\"))(-1);\n eve.on(\"snap.util.attr.marker-mid\", setter(\"mid\"))(-1);\n eve.on(\"snap.util.attr.markerMid\", setter(\"mid\"))(-1);\n }());\n eve.on(\"snap.util.getattr.r\", function () {\n if (this.type == \"rect\" && $(this.node, \"rx\") == $(this.node, \"ry\")) {\n eve.stop();\n return $(this.node, \"rx\");\n }\n })(-1);\n function textExtract(node) {\n var out = [];\n var children = node.childNodes;\n for (var i = 0, ii = children.length; i < ii; i++) {\n var chi = children[i];\n if (chi.nodeType == 3) {\n out.push(chi.nodeValue);\n }\n if (chi.tagName == \"tspan\") {\n if (chi.childNodes.length == 1 && chi.firstChild.nodeType == 3) {\n out.push(chi.firstChild.nodeValue);\n } else {\n out.push(textExtract(chi));\n }\n }\n }\n return out;\n }\n eve.on(\"snap.util.getattr.text\", function () {\n if (this.type == \"text\" || this.type == \"tspan\") {\n eve.stop();\n var out = textExtract(this.node);\n return out.length == 1 ? out[0] : out;\n }\n })(-1);\n eve.on(\"snap.util.getattr.#text\", function () {\n return this.node.textContent;\n })(-1);\n eve.on(\"snap.util.getattr.viewBox\", function () {\n eve.stop();\n var vb = $(this.node, \"viewBox\");\n if (vb) {\n vb = vb.split(separator);\n return Snap._.box(+vb[0], +vb[1], +vb[2], +vb[3]);\n } else {\n return;\n }\n })(-1);\n eve.on(\"snap.util.getattr.points\", function () {\n var p = $(this.node, \"points\");\n eve.stop();\n if (p) {\n return p.split(separator);\n } else {\n return;\n }\n })(-1);\n eve.on(\"snap.util.getattr.path\", function () {\n var p = $(this.node, \"d\");\n eve.stop();\n return p;\n })(-1);\n eve.on(\"snap.util.getattr.class\", function () {\n return this.node.className.baseVal;\n })(-1);\n function getFontSize() {\n eve.stop();\n return this.node.style.fontSize;\n }\n eve.on(\"snap.util.getattr.fontSize\", getFontSize)(-1);\n eve.on(\"snap.util.getattr.font-size\", getFontSize)(-1);\n});\n\n// Copyright (c) 2014 Adobe Systems Incorporated. All rights reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nSnap.plugin(function (Snap, Element, Paper, glob, Fragment) {\n var rgNotSpace = /\\S+/g,\n rgBadSpace = /[\\t\\r\\n\\f]/g,\n rgTrim = /(^\\s+|\\s+$)/g,\n Str = String,\n elproto = Element.prototype;\n /*\\\n * Element.addClass\n [ method ]\n **\n * Adds given class name or list of class names to the element.\n - value (string) class name or space separated list of class names\n **\n = (Element) original element.\n \\*/\n elproto.addClass = function (value) {\n var classes = Str(value || \"\").match(rgNotSpace) || [],\n elem = this.node,\n className = elem.className.baseVal,\n curClasses = className.match(rgNotSpace) || [],\n j,\n pos,\n clazz,\n finalValue;\n\n if (classes.length) {\n j = 0;\n while ((clazz = classes[j++])) {\n pos = curClasses.indexOf(clazz);\n if (!~pos) {\n curClasses.push(clazz);\n }\n }\n\n finalValue = curClasses.join(\" \");\n if (className != finalValue) {\n elem.className.baseVal = finalValue;\n }\n }\n return this;\n };\n /*\\\n * Element.removeClass\n [ method ]\n **\n * Removes given class name or list of class names from the element.\n - value (string) class name or space separated list of class names\n **\n = (Element) original element.\n \\*/\n elproto.removeClass = function (value) {\n var classes = Str(value || \"\").match(rgNotSpace) || [],\n elem = this.node,\n className = elem.className.baseVal,\n curClasses = className.match(rgNotSpace) || [],\n j,\n pos,\n clazz,\n finalValue;\n if (curClasses.length) {\n j = 0;\n while ((clazz = classes[j++])) {\n pos = curClasses.indexOf(clazz);\n if (~pos) {\n curClasses.splice(pos, 1);\n }\n }\n\n finalValue = curClasses.join(\" \");\n if (className != finalValue) {\n elem.className.baseVal = finalValue;\n }\n }\n return this;\n };\n /*\\\n * Element.hasClass\n [ method ]\n **\n * Checks if the element has a given class name in the list of class names applied to it.\n - value (string) class name\n **\n = (boolean) `true` if the element has given class\n \\*/\n elproto.hasClass = function (value) {\n var elem = this.node,\n className = elem.className.baseVal,\n curClasses = className.match(rgNotSpace) || [];\n return !!~curClasses.indexOf(value);\n };\n /*\\\n * Element.toggleClass\n [ method ]\n **\n * Add or remove one or more classes from the element, depending on either\n * the class’s presence or the value of the `flag` argument.\n - value (string) class name or space separated list of class names\n - flag (boolean) value to determine whether the class should be added or removed\n **\n = (Element) original element.\n \\*/\n elproto.toggleClass = function (value, flag) {\n if (flag != null) {\n if (flag) {\n return this.addClass(value);\n } else {\n return this.removeClass(value);\n }\n }\n var classes = (value || \"\").match(rgNotSpace) || [],\n elem = this.node,\n className = elem.className.baseVal,\n curClasses = className.match(rgNotSpace) || [],\n j,\n pos,\n clazz,\n finalValue;\n j = 0;\n while ((clazz = classes[j++])) {\n pos = curClasses.indexOf(clazz);\n if (~pos) {\n curClasses.splice(pos, 1);\n } else {\n curClasses.push(clazz);\n }\n }\n\n finalValue = curClasses.join(\" \");\n if (className != finalValue) {\n elem.className.baseVal = finalValue;\n }\n return this;\n };\n});\n\n// Copyright (c) 2013 Adobe Systems Incorporated. All rights reserved.\n// \n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n// \n// http://www.apache.org/licenses/LICENSE-2.0\n// \n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nSnap.plugin(function (Snap, Element, Paper, glob, Fragment) {\n var operators = {\n \"+\": function (x, y) {\n return x + y;\n },\n \"-\": function (x, y) {\n return x - y;\n },\n \"/\": function (x, y) {\n return x / y;\n },\n \"*\": function (x, y) {\n return x * y;\n }\n },\n Str = String,\n reUnit = /[a-z]+$/i,\n reAddon = /^\\s*([+\\-\\/*])\\s*=\\s*([\\d.eE+\\-]+)\\s*([^\\d\\s]+)?\\s*$/;\n function getNumber(val) {\n return val;\n }\n function getUnit(unit) {\n return function (val) {\n return +val.toFixed(3) + unit;\n };\n }\n eve.on(\"snap.util.attr\", function (val) {\n var plus = Str(val).match(reAddon);\n if (plus) {\n var evnt = eve.nt(),\n name = evnt.substring(evnt.lastIndexOf(\".\") + 1),\n a = this.attr(name),\n atr = {};\n eve.stop();\n var unit = plus[3] || \"\",\n aUnit = a.match(reUnit),\n op = operators[plus[1]];\n if (aUnit && aUnit == unit) {\n val = op(parseFloat(a), +plus[2]);\n } else {\n a = this.asPX(name);\n val = op(this.asPX(name), this.asPX(name, plus[2] + unit));\n }\n if (isNaN(a) || isNaN(val)) {\n return;\n }\n atr[name] = val;\n this.attr(atr);\n }\n })(-10);\n eve.on(\"snap.util.equal\", function (name, b) {\n var A, B, a = Str(this.attr(name) || \"\"),\n el = this,\n bplus = Str(b).match(reAddon);\n if (bplus) {\n eve.stop();\n var unit = bplus[3] || \"\",\n aUnit = a.match(reUnit),\n op = operators[bplus[1]];\n if (aUnit && aUnit == unit) {\n return {\n from: parseFloat(a),\n to: op(parseFloat(a), +bplus[2]),\n f: getUnit(aUnit)\n };\n } else {\n a = this.asPX(name);\n return {\n from: a,\n to: op(a, this.asPX(name, bplus[2] + unit)),\n f: getNumber\n };\n }\n }\n })(-10);\n});\n// Copyright (c) 2013 Adobe Systems Incorporated. All rights reserved.\n// \n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n// \n// http://www.apache.org/licenses/LICENSE-2.0\n// \n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nSnap.plugin(function (Snap, Element, Paper, glob, Fragment) {\n var proto = Paper.prototype,\n is = Snap.is;\n /*\\\n * Paper.rect\n [ method ]\n *\n * Draws a rectangle\n **\n - x (number) x coordinate of the top left corner\n - y (number) y coordinate of the top left corner\n - width (number) width\n - height (number) height\n - rx (number) #optional horizontal radius for rounded corners, default is 0\n - ry (number) #optional vertical radius for rounded corners, default is rx or 0\n = (object) the `rect` element\n **\n > Usage\n | // regular rectangle\n | var c = paper.rect(10, 10, 50, 50);\n | // rectangle with rounded corners\n | var c = paper.rect(40, 40, 50, 50, 10);\n \\*/\n proto.rect = function (x, y, w, h, rx, ry) {\n var attr;\n if (ry == null) {\n ry = rx;\n }\n if (is(x, \"object\") && x == \"[object Object]\") {\n attr = x;\n } else if (x != null) {\n attr = {\n x: x,\n y: y,\n width: w,\n height: h\n };\n if (rx != null) {\n attr.rx = rx;\n attr.ry = ry;\n }\n }\n return this.el(\"rect\", attr);\n };\n /*\\\n * Paper.circle\n [ method ]\n **\n * Draws a circle\n **\n - x (number) x coordinate of the centre\n - y (number) y coordinate of the centre\n - r (number) radius\n = (object) the `circle` element\n **\n > Usage\n | var c = paper.circle(50, 50, 40);\n \\*/\n proto.circle = function (cx, cy, r) {\n var attr;\n if (is(cx, \"object\") && cx == \"[object Object]\") {\n attr = cx;\n } else if (cx != null) {\n attr = {\n cx: cx,\n cy: cy,\n r: r\n };\n }\n return this.el(\"circle\", attr);\n };\n\n var preload = (function () {\n function onerror() {\n this.parentNode.removeChild(this);\n }\n return function (src, f) {\n var img = glob.doc.createElement(\"img\"),\n body = glob.doc.body;\n img.style.cssText = \"position:absolute;left:-9999em;top:-9999em\";\n img.onload = function () {\n f.call(img);\n img.onload = img.onerror = null;\n body.removeChild(img);\n };\n img.onerror = onerror;\n body.appendChild(img);\n img.src = src;\n };\n }());\n\n /*\\\n * Paper.image\n [ method ]\n **\n * Places an image on the surface\n **\n - src (string) URI of the source image\n - x (number) x offset position\n - y (number) y offset position\n - width (number) width of the image\n - height (number) height of the image\n = (object) the `image` element\n * or\n = (object) Snap element object with type `image`\n **\n > Usage\n | var c = paper.image(\"apple.png\", 10, 10, 80, 80);\n \\*/\n proto.image = function (src, x, y, width, height) {\n var el = this.el(\"image\");\n if (is(src, \"object\") && \"src\" in src) {\n el.attr(src);\n } else if (src != null) {\n var set = {\n \"xlink:href\": src,\n preserveAspectRatio: \"none\"\n };\n if (x != null && y != null) {\n set.x = x;\n set.y = y;\n }\n if (width != null && height != null) {\n set.width = width;\n set.height = height;\n } else {\n preload(src, function () {\n Snap._.$(el.node, {\n width: this.offsetWidth,\n height: this.offsetHeight\n });\n });\n }\n Snap._.$(el.node, set);\n }\n return el;\n };\n /*\\\n * Paper.ellipse\n [ method ]\n **\n * Draws an ellipse\n **\n - x (number) x coordinate of the centre\n - y (number) y coordinate of the centre\n - rx (number) horizontal radius\n - ry (number) vertical radius\n = (object) the `ellipse` element\n **\n > Usage\n | var c = paper.ellipse(50, 50, 40, 20);\n \\*/\n proto.ellipse = function (cx, cy, rx, ry) {\n var attr;\n if (is(cx, \"object\") && cx == \"[object Object]\") {\n attr = cx;\n } else if (cx != null) {\n attr ={\n cx: cx,\n cy: cy,\n rx: rx,\n ry: ry\n };\n }\n return this.el(\"ellipse\", attr);\n };\n // SIERRA Paper.path(): Unclear from the link what a Catmull-Rom curveto is, and why it would make life any easier.\n /*\\\n * Paper.path\n [ method ]\n **\n * Creates a `<path>` element using the given string as the path's definition\n - pathString (string) #optional path string in SVG format\n * Path string consists of one-letter commands, followed by comma seprarated arguments in numerical form. Example:\n | \"M10,20L30,40\"\n * This example features two commands: `M`, with arguments `(10, 20)` and `L` with arguments `(30, 40)`. Uppercase letter commands express coordinates in absolute terms, while lowercase commands express them in relative terms from the most recently declared coordinates.\n *\n # <p>Here is short list of commands available, for more details see <a href=\"http://www.w3.org/TR/SVG/paths.html#PathData\" title=\"Details of a path's data attribute's format are described in the SVG specification.\">SVG path string format</a> or <a href=\"https://developer.mozilla.org/en/SVG/Tutorial/Paths\">article about path strings at MDN</a>.</p>\n # <table><thead><tr><th>Command</th><th>Name</th><th>Parameters</th></tr></thead><tbody>\n # <tr><td>M</td><td>moveto</td><td>(x y)+</td></tr>\n # <tr><td>Z</td><td>closepath</td><td>(none)</td></tr>\n # <tr><td>L</td><td>lineto</td><td>(x y)+</td></tr>\n # <tr><td>H</td><td>horizontal lineto</td><td>x+</td></tr>\n # <tr><td>V</td><td>vertical lineto</td><td>y+</td></tr>\n # <tr><td>C</td><td>curveto</td><td>(x1 y1 x2 y2 x y)+</td></tr>\n # <tr><td>S</td><td>smooth curveto</td><td>(x2 y2 x y)+</td></tr>\n # <tr><td>Q</td><td>quadratic Bézier curveto</td><td>(x1 y1 x y)+</td></tr>\n # <tr><td>T</td><td>smooth quadratic Bézier curveto</td><td>(x y)+</td></tr>\n # <tr><td>A</td><td>elliptical arc</td><td>(rx ry x-axis-rotation large-arc-flag sweep-flag x y)+</td></tr>\n # <tr><td>R</td><td><a href=\"http://en.wikipedia.org/wiki/Catmull–Rom_spline#Catmull.E2.80.93Rom_spline\">Catmull-Rom curveto</a>*</td><td>x1 y1 (x y)+</td></tr></tbody></table>\n * * _Catmull-Rom curveto_ is a not standard SVG command and added to make life easier.\n * Note: there is a special case when a path consists of only three commands: `M10,10R…z`. In this case the path connects back to its starting point.\n > Usage\n | var c = paper.path(\"M10 10L90 90\");\n | // draw a diagonal line:\n | // move to 10,10, line to 90,90\n \\*/\n proto.path = function (d) {\n var attr;\n if (is(d, \"object\") && !is(d, \"array\")) {\n attr = d;\n } else if (d) {\n attr = {d: d};\n }\n return this.el(\"path\", attr);\n };\n /*\\\n * Paper.g\n [ method ]\n **\n * Creates a group element\n **\n - varargs (…) #optional elements to nest within the group\n = (object) the `g` element\n **\n > Usage\n | var c1 = paper.circle(),\n | c2 = paper.rect(),\n | g = paper.g(c2, c1); // note that the order of elements is different\n * or\n | var c1 = paper.circle(),\n | c2 = paper.rect(),\n | g = paper.g();\n | g.add(c2, c1);\n \\*/\n /*\\\n * Paper.group\n [ method ]\n **\n * See @Paper.g\n \\*/\n proto.group = proto.g = function (first) {\n var attr,\n el = this.el(\"g\");\n if (arguments.length == 1 && first && !first.type) {\n el.attr(first);\n } else if (arguments.length) {\n el.add(Array.prototype.slice.call(arguments, 0));\n }\n return el;\n };\n /*\\\n * Paper.svg\n [ method ]\n **\n * Creates a nested SVG element.\n - x (number) @optional X of the element\n - y (number) @optional Y of the element\n - width (number) @optional width of the element\n - height (number) @optional height of the element\n - vbx (number) @optional viewbox X\n - vby (number) @optional viewbox Y\n - vbw (number) @optional viewbox width\n - vbh (number) @optional viewbox height\n **\n = (object) the `svg` element\n **\n \\*/\n proto.svg = function (x, y, width, height, vbx, vby, vbw, vbh) {\n var attrs = {};\n if (is(x, \"object\") && y == null) {\n attrs = x;\n } else {\n if (x != null) {\n attrs.x = x;\n }\n if (y != null) {\n attrs.y = y;\n }\n if (width != null) {\n attrs.width = width;\n }\n if (height != null) {\n attrs.height = height;\n }\n if (vbx != null && vby != null && vbw != null && vbh != null) {\n attrs.viewBox = [vbx, vby, vbw, vbh];\n }\n }\n return this.el(\"svg\", attrs);\n };\n /*\\\n * Paper.mask\n [ method ]\n **\n * Equivalent in behaviour to @Paper.g, except it’s a mask.\n **\n = (object) the `mask` element\n **\n \\*/\n proto.mask = function (first) {\n var attr,\n el = this.el(\"mask\");\n if (arguments.length == 1 && first && !first.type) {\n el.attr(first);\n } else if (arguments.length) {\n el.add(Array.prototype.slice.call(arguments, 0));\n }\n return el;\n };\n /*\\\n * Paper.ptrn\n [ method ]\n **\n * Equivalent in behaviour to @Paper.g, except it’s a pattern.\n - x (number) @optional X of the element\n - y (number) @optional Y of the element\n - width (number) @optional width of the element\n - height (number) @optional height of the element\n - vbx (number) @optional viewbox X\n - vby (number) @optional viewbox Y\n - vbw (number) @optional viewbox width\n - vbh (number) @optional viewbox height\n **\n = (object) the `pattern` element\n **\n \\*/\n proto.ptrn = function (x, y, width, height, vx, vy, vw, vh) {\n if (is(x, \"object\")) {\n var attr = x;\n } else {\n attr = {patternUnits: \"userSpaceOnUse\"};\n if (x) {\n attr.x = x;\n }\n if (y) {\n attr.y = y;\n }\n if (width != null) {\n attr.width = width;\n }\n if (height != null) {\n attr.height = height;\n }\n if (vx != null && vy != null && vw != null && vh != null) {\n attr.viewBox = [vx, vy, vw, vh];\n } else {\n attr.viewBox = [x || 0, y || 0, width || 0, height || 0];\n }\n }\n return this.el(\"pattern\", attr);\n };\n /*\\\n * Paper.use\n [ method ]\n **\n * Creates a <use> element.\n - id (string) @optional id of element to link\n * or\n - id (Element) @optional element to link\n **\n = (object) the `use` element\n **\n \\*/\n proto.use = function (id) {\n if (id != null) {\n if (id instanceof Element) {\n if (!id.attr(\"id\")) {\n id.attr({id: Snap._.id(id)});\n }\n id = id.attr(\"id\");\n }\n if (String(id).charAt() == \"#\") {\n id = id.substring(1);\n }\n return this.el(\"use\", {\"xlink:href\": \"#\" + id});\n } else {\n return Element.prototype.use.call(this);\n }\n };\n /*\\\n * Paper.symbol\n [ method ]\n **\n * Creates a <symbol> element.\n - vbx (number) @optional viewbox X\n - vby (number) @optional viewbox Y\n - vbw (number) @optional viewbox width\n - vbh (number) @optional viewbox height\n = (object) the `symbol` element\n **\n \\*/\n proto.symbol = function (vx, vy, vw, vh) {\n var attr = {};\n if (vx != null && vy != null && vw != null && vh != null) {\n attr.viewBox = [vx, vy, vw, vh];\n }\n\n return this.el(\"symbol\", attr);\n };\n /*\\\n * Paper.text\n [ method ]\n **\n * Draws a text string\n **\n - x (number) x coordinate position\n - y (number) y coordinate position\n - text (string|array) The text string to draw or array of strings to nest within separate `<tspan>` elements\n = (object) the `text` element\n **\n > Usage\n | var t1 = paper.text(50, 50, \"Snap\");\n | var t2 = paper.text(50, 50, [\"S\",\"n\",\"a\",\"p\"]);\n | // Text path usage\n | t1.attr({textpath: \"M10,10L100,100\"});\n | // or\n | var pth = paper.path(\"M10,10L100,100\");\n | t1.attr({textpath: pth});\n \\*/\n proto.text = function (x, y, text) {\n var attr = {};\n if (is(x, \"object\")) {\n attr = x;\n } else if (x != null) {\n attr = {\n x: x,\n y: y,\n text: text || \"\"\n };\n }\n return this.el(\"text\", attr);\n };\n /*\\\n * Paper.line\n [ method ]\n **\n * Draws a line\n **\n - x1 (number) x coordinate position of the start\n - y1 (number) y coordinate position of the start\n - x2 (number) x coordinate position of the end\n - y2 (number) y coordinate position of the end\n = (object) the `line` element\n **\n > Usage\n | var t1 = paper.line(50, 50, 100, 100);\n \\*/\n proto.line = function (x1, y1, x2, y2) {\n var attr = {};\n if (is(x1, \"object\")) {\n attr = x1;\n } else if (x1 != null) {\n attr = {\n x1: x1,\n x2: x2,\n y1: y1,\n y2: y2\n };\n }\n return this.el(\"line\", attr);\n };\n /*\\\n * Paper.polyline\n [ method ]\n **\n * Draws a polyline\n **\n - points (array) array of points\n * or\n - varargs (…) points\n = (object) the `polyline` element\n **\n > Usage\n | var p1 = paper.polyline([10, 10, 100, 100]);\n | var p2 = paper.polyline(10, 10, 100, 100);\n \\*/\n proto.polyline = function (points) {\n if (arguments.length > 1) {\n points = Array.prototype.slice.call(arguments, 0);\n }\n var attr = {};\n if (is(points, \"object\") && !is(points, \"array\")) {\n attr = points;\n } else if (points != null) {\n attr = {points: points};\n }\n return this.el(\"polyline\", attr);\n };\n /*\\\n * Paper.polygon\n [ method ]\n **\n * Draws a polygon. See @Paper.polyline\n \\*/\n proto.polygon = function (points) {\n if (arguments.length > 1) {\n points = Array.prototype.slice.call(arguments, 0);\n }\n var attr = {};\n if (is(points, \"object\") && !is(points, \"array\")) {\n attr = points;\n } else if (points != null) {\n attr = {points: points};\n }\n return this.el(\"polygon\", attr);\n };\n // gradients\n (function () {\n var $ = Snap._.$;\n // gradients' helpers\n function Gstops() {\n return this.selectAll(\"stop\");\n }\n function GaddStop(color, offset) {\n var stop = $(\"stop\"),\n attr = {\n offset: +offset + \"%\"\n };\n color = Snap.color(color);\n attr[\"stop-color\"] = color.hex;\n if (color.opacity < 1) {\n attr[\"stop-opacity\"] = color.opacity;\n }\n $(stop, attr);\n this.node.appendChild(stop);\n return this;\n }\n function GgetBBox() {\n if (this.type == \"linearGradient\") {\n var x1 = $(this.node, \"x1\") || 0,\n x2 = $(this.node, \"x2\") || 1,\n y1 = $(this.node, \"y1\") || 0,\n y2 = $(this.node, \"y2\") || 0;\n return Snap._.box(x1, y1, math.abs(x2 - x1), math.abs(y2 - y1));\n } else {\n var cx = this.node.cx || .5,\n cy = this.node.cy || .5,\n r = this.node.r || 0;\n return Snap._.box(cx - r, cy - r, r * 2, r * 2);\n }\n }\n function gradient(defs, str) {\n var grad = eve(\"snap.util.grad.parse\", null, str).firstDefined(),\n el;\n if (!grad) {\n return null;\n }\n grad.params.unshift(defs);\n if (grad.type.toLowerCase() == \"l\") {\n el = gradientLinear.apply(0, grad.params);\n } else {\n el = gradientRadial.apply(0, grad.params);\n }\n if (grad.type != grad.type.toLowerCase()) {\n $(el.node, {\n gradientUnits: \"userSpaceOnUse\"\n });\n }\n var stops = grad.stops,\n len = stops.length,\n start = 0,\n j = 0;\n function seed(i, end) {\n var step = (end - start) / (i - j);\n for (var k = j; k < i; k++) {\n stops[k].offset = +(+start + step * (k - j)).toFixed(2);\n }\n j = i;\n start = end;\n }\n len--;\n for (var i = 0; i < len; i++) if (\"offset\" in stops[i]) {\n seed(i, stops[i].offset);\n }\n stops[len].offset = stops[len].offset || 100;\n seed(len, stops[len].offset);\n for (i = 0; i <= len; i++) {\n var stop = stops[i];\n el.addStop(stop.color, stop.offset);\n }\n return el;\n }\n function gradientLinear(defs, x1, y1, x2, y2) {\n var el = Snap._.make(\"linearGradient\", defs);\n el.stops = Gstops;\n el.addStop = GaddStop;\n el.getBBox = GgetBBox;\n if (x1 != null) {\n $(el.node, {\n x1: x1,\n y1: y1,\n x2: x2,\n y2: y2\n });\n }\n return el;\n }\n function gradientRadial(defs, cx, cy, r, fx, fy) {\n var el = Snap._.make(\"radialGradient\", defs);\n el.stops = Gstops;\n el.addStop = GaddStop;\n el.getBBox = GgetBBox;\n if (cx != null) {\n $(el.node, {\n cx: cx,\n cy: cy,\n r: r\n });\n }\n if (fx != null && fy != null) {\n $(el.node, {\n fx: fx,\n fy: fy\n });\n }\n return el;\n }\n /*\\\n * Paper.gradient\n [ method ]\n **\n * Creates a gradient element\n **\n - gradient (string) gradient descriptor\n > Gradient Descriptor\n * The gradient descriptor is an expression formatted as\n * follows: `<type>(<coords>)<colors>`. The `<type>` can be\n * either linear or radial. The uppercase `L` or `R` letters\n * indicate absolute coordinates offset from the SVG surface.\n * Lowercase `l` or `r` letters indicate coordinates\n * calculated relative to the element to which the gradient is\n * applied. Coordinates specify a linear gradient vector as\n * `x1`, `y1`, `x2`, `y2`, or a radial gradient as `cx`, `cy`,\n * `r` and optional `fx`, `fy` specifying a focal point away\n * from the center of the circle. Specify `<colors>` as a list\n * of dash-separated CSS color values. Each color may be\n * followed by a custom offset value, separated with a colon\n * character.\n > Examples\n * Linear gradient, relative from top-left corner to bottom-right\n * corner, from black through red to white:\n | var g = paper.gradient(\"l(0, 0, 1, 1)#000-#f00-#fff\");\n * Linear gradient, absolute from (0, 0) to (100, 100), from black\n * through red at 25% to white:\n | var g = paper.gradient(\"L(0, 0, 100, 100)#000-#f00:25-#fff\");\n * Radial gradient, relative from the center of the element with radius\n * half the width, from black to white:\n | var g = paper.gradient(\"r(0.5, 0.5, 0.5)#000-#fff\");\n * To apply the gradient:\n | paper.circle(50, 50, 40).attr({\n | fill: g\n | });\n = (object) the `gradient` element\n \\*/\n proto.gradient = function (str) {\n return gradient(this.defs, str);\n };\n proto.gradientLinear = function (x1, y1, x2, y2) {\n return gradientLinear(this.defs, x1, y1, x2, y2);\n };\n proto.gradientRadial = function (cx, cy, r, fx, fy) {\n return gradientRadial(this.defs, cx, cy, r, fx, fy);\n };\n /*\\\n * Paper.toString\n [ method ]\n **\n * Returns SVG code for the @Paper\n = (string) SVG code for the @Paper\n \\*/\n proto.toString = function () {\n var doc = this.node.ownerDocument,\n f = doc.createDocumentFragment(),\n d = doc.createElement(\"div\"),\n svg = this.node.cloneNode(true),\n res;\n f.appendChild(d);\n d.appendChild(svg);\n Snap._.$(svg, {xmlns: \"http://www.w3.org/2000/svg\"});\n res = d.innerHTML;\n f.removeChild(f.firstChild);\n return res;\n };\n /*\\\n * Paper.toDataURL\n [ method ]\n **\n * Returns SVG code for the @Paper as Data URI string.\n = (string) Data URI string\n \\*/\n proto.toDataURL = function () {\n if (window && window.btoa) {\n return \"data:image/svg+xml;base64,\" + btoa(unescape(encodeURIComponent(this)));\n }\n };\n /*\\\n * Paper.clear\n [ method ]\n **\n * Removes all child nodes of the paper, except <defs>.\n \\*/\n proto.clear = function () {\n var node = this.node.firstChild,\n next;\n while (node) {\n next = node.nextSibling;\n if (node.tagName != \"defs\") {\n node.parentNode.removeChild(node);\n } else {\n proto.clear.call({node: node});\n }\n node = next;\n }\n };\n }());\n});\n\n// Copyright (c) 2013 Adobe Systems Incorporated. All rights reserved.\n// \n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n// \n// http://www.apache.org/licenses/LICENSE-2.0\n// \n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nSnap.plugin(function (Snap, Element, Paper, glob) {\n var elproto = Element.prototype,\n is = Snap.is,\n clone = Snap._.clone,\n has = \"hasOwnProperty\",\n p2s = /,?([a-z]),?/gi,\n toFloat = parseFloat,\n math = Math,\n PI = math.PI,\n mmin = math.min,\n mmax = math.max,\n pow = math.pow,\n abs = math.abs;\n function paths(ps) {\n var p = paths.ps = paths.ps || {};\n if (p[ps]) {\n p[ps].sleep = 100;\n } else {\n p[ps] = {\n sleep: 100\n };\n }\n setTimeout(function () {\n for (var key in p) if (p[has](key) && key != ps) {\n p[key].sleep--;\n !p[key].sleep && delete p[key];\n }\n });\n return p[ps];\n }\n function box(x, y, width, height) {\n if (x == null) {\n x = y = width = height = 0;\n }\n if (y == null) {\n y = x.y;\n width = x.width;\n height = x.height;\n x = x.x;\n }\n return {\n x: x,\n y: y,\n width: width,\n w: width,\n height: height,\n h: height,\n x2: x + width,\n y2: y + height,\n cx: x + width / 2,\n cy: y + height / 2,\n r1: math.min(width, height) / 2,\n r2: math.max(width, height) / 2,\n r0: math.sqrt(width * width + height * height) / 2,\n path: rectPath(x, y, width, height),\n vb: [x, y, width, height].join(\" \")\n };\n }\n function toString() {\n return this.join(\",\").replace(p2s, \"$1\");\n }\n function pathClone(pathArray) {\n var res = clone(pathArray);\n res.toString = toString;\n return res;\n }\n function getPointAtSegmentLength(p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y, length) {\n if (length == null) {\n return bezlen(p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y);\n } else {\n return findDotsAtSegment(p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y,\n getTotLen(p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y, length));\n }\n }\n function getLengthFactory(istotal, subpath) {\n function O(val) {\n return +(+val).toFixed(3);\n }\n return Snap._.cacher(function (path, length, onlystart) {\n if (path instanceof Element) {\n path = path.attr(\"d\");\n }\n path = path2curve(path);\n var x, y, p, l, sp = \"\", subpaths = {}, point,\n len = 0;\n for (var i = 0, ii = path.length; i < ii; i++) {\n p = path[i];\n if (p[0] == \"M\") {\n x = +p[1];\n y = +p[2];\n } else {\n l = getPointAtSegmentLength(x, y, p[1], p[2], p[3], p[4], p[5], p[6]);\n if (len + l > length) {\n if (subpath && !subpaths.start) {\n point = getPointAtSegmentLength(x, y, p[1], p[2], p[3], p[4], p[5], p[6], length - len);\n sp += [\n \"C\" + O(point.start.x),\n O(point.start.y),\n O(point.m.x),\n O(point.m.y),\n O(point.x),\n O(point.y)\n ];\n if (onlystart) {return sp;}\n subpaths.start = sp;\n sp = [\n \"M\" + O(point.x),\n O(point.y) + \"C\" + O(point.n.x),\n O(point.n.y),\n O(point.end.x),\n O(point.end.y),\n O(p[5]),\n O(p[6])\n ].join();\n len += l;\n x = +p[5];\n y = +p[6];\n continue;\n }\n if (!istotal && !subpath) {\n point = getPointAtSegmentLength(x, y, p[1], p[2], p[3], p[4], p[5], p[6], length - len);\n return point;\n }\n }\n len += l;\n x = +p[5];\n y = +p[6];\n }\n sp += p.shift() + p;\n }\n subpaths.end = sp;\n point = istotal ? len : subpath ? subpaths : findDotsAtSegment(x, y, p[0], p[1], p[2], p[3], p[4], p[5], 1);\n return point;\n }, null, Snap._.clone);\n }\n var getTotalLength = getLengthFactory(1),\n getPointAtLength = getLengthFactory(),\n getSubpathsAtLength = getLengthFactory(0, 1);\n function findDotsAtSegment(p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y, t) {\n var t1 = 1 - t,\n t13 = pow(t1, 3),\n t12 = pow(t1, 2),\n t2 = t * t,\n t3 = t2 * t,\n x = t13 * p1x + t12 * 3 * t * c1x + t1 * 3 * t * t * c2x + t3 * p2x,\n y = t13 * p1y + t12 * 3 * t * c1y + t1 * 3 * t * t * c2y + t3 * p2y,\n mx = p1x + 2 * t * (c1x - p1x) + t2 * (c2x - 2 * c1x + p1x),\n my = p1y + 2 * t * (c1y - p1y) + t2 * (c2y - 2 * c1y + p1y),\n nx = c1x + 2 * t * (c2x - c1x) + t2 * (p2x - 2 * c2x + c1x),\n ny = c1y + 2 * t * (c2y - c1y) + t2 * (p2y - 2 * c2y + c1y),\n ax = t1 * p1x + t * c1x,\n ay = t1 * p1y + t * c1y,\n cx = t1 * c2x + t * p2x,\n cy = t1 * c2y + t * p2y,\n alpha = (90 - math.atan2(mx - nx, my - ny) * 180 / PI);\n // (mx > nx || my < ny) && (alpha += 180);\n return {\n x: x,\n y: y,\n m: {x: mx, y: my},\n n: {x: nx, y: ny},\n start: {x: ax, y: ay},\n end: {x: cx, y: cy},\n alpha: alpha\n };\n }\n function bezierBBox(p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y) {\n if (!Snap.is(p1x, \"array\")) {\n p1x = [p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y];\n }\n var bbox = curveDim.apply(null, p1x);\n return box(\n bbox.min.x,\n bbox.min.y,\n bbox.max.x - bbox.min.x,\n bbox.max.y - bbox.min.y\n );\n }\n function isPointInsideBBox(bbox, x, y) {\n return x >= bbox.x &&\n x <= bbox.x + bbox.width &&\n y >= bbox.y &&\n y <= bbox.y + bbox.height;\n }\n function isBBoxIntersect(bbox1, bbox2) {\n bbox1 = box(bbox1);\n bbox2 = box(bbox2);\n return isPointInsideBBox(bbox2, bbox1.x, bbox1.y)\n || isPointInsideBBox(bbox2, bbox1.x2, bbox1.y)\n || isPointInsideBBox(bbox2, bbox1.x, bbox1.y2)\n || isPointInsideBBox(bbox2, bbox1.x2, bbox1.y2)\n || isPointInsideBBox(bbox1, bbox2.x, bbox2.y)\n || isPointInsideBBox(bbox1, bbox2.x2, bbox2.y)\n || isPointInsideBBox(bbox1, bbox2.x, bbox2.y2)\n || isPointInsideBBox(bbox1, bbox2.x2, bbox2.y2)\n || (bbox1.x < bbox2.x2 && bbox1.x > bbox2.x\n || bbox2.x < bbox1.x2 && bbox2.x > bbox1.x)\n && (bbox1.y < bbox2.y2 && bbox1.y > bbox2.y\n || bbox2.y < bbox1.y2 && bbox2.y > bbox1.y);\n }\n function base3(t, p1, p2, p3, p4) {\n var t1 = -3 * p1 + 9 * p2 - 9 * p3 + 3 * p4,\n t2 = t * t1 + 6 * p1 - 12 * p2 + 6 * p3;\n return t * t2 - 3 * p1 + 3 * p2;\n }\n function bezlen(x1, y1, x2, y2, x3, y3, x4, y4, z) {\n if (z == null) {\n z = 1;\n }\n z = z > 1 ? 1 : z < 0 ? 0 : z;\n var z2 = z / 2,\n n = 12,\n Tvalues = [-.1252,.1252,-.3678,.3678,-.5873,.5873,-.7699,.7699,-.9041,.9041,-.9816,.9816],\n Cvalues = [0.2491,0.2491,0.2335,0.2335,0.2032,0.2032,0.1601,0.1601,0.1069,0.1069,0.0472,0.0472],\n sum = 0;\n for (var i = 0; i < n; i++) {\n var ct = z2 * Tvalues[i] + z2,\n xbase = base3(ct, x1, x2, x3, x4),\n ybase = base3(ct, y1, y2, y3, y4),\n comb = xbase * xbase + ybase * ybase;\n sum += Cvalues[i] * math.sqrt(comb);\n }\n return z2 * sum;\n }\n function getTotLen(x1, y1, x2, y2, x3, y3, x4, y4, ll) {\n if (ll < 0 || bezlen(x1, y1, x2, y2, x3, y3, x4, y4) < ll) {\n return;\n }\n var t = 1,\n step = t / 2,\n t2 = t - step,\n l,\n e = .01;\n l = bezlen(x1, y1, x2, y2, x3, y3, x4, y4, t2);\n while (abs(l - ll) > e) {\n step /= 2;\n t2 += (l < ll ? 1 : -1) * step;\n l = bezlen(x1, y1, x2, y2, x3, y3, x4, y4, t2);\n }\n return t2;\n }\n function intersect(x1, y1, x2, y2, x3, y3, x4, y4) {\n if (\n mmax(x1, x2) < mmin(x3, x4) ||\n mmin(x1, x2) > mmax(x3, x4) ||\n mmax(y1, y2) < mmin(y3, y4) ||\n mmin(y1, y2) > mmax(y3, y4)\n ) {\n return;\n }\n var nx = (x1 * y2 - y1 * x2) * (x3 - x4) - (x1 - x2) * (x3 * y4 - y3 * x4),\n ny = (x1 * y2 - y1 * x2) * (y3 - y4) - (y1 - y2) * (x3 * y4 - y3 * x4),\n denominator = (x1 - x2) * (y3 - y4) - (y1 - y2) * (x3 - x4);\n\n if (!denominator) {\n return;\n }\n var px = nx / denominator,\n py = ny / denominator,\n px2 = +px.toFixed(2),\n py2 = +py.toFixed(2);\n if (\n px2 < +mmin(x1, x2).toFixed(2) ||\n px2 > +mmax(x1, x2).toFixed(2) ||\n px2 < +mmin(x3, x4).toFixed(2) ||\n px2 > +mmax(x3, x4).toFixed(2) ||\n py2 < +mmin(y1, y2).toFixed(2) ||\n py2 > +mmax(y1, y2).toFixed(2) ||\n py2 < +mmin(y3, y4).toFixed(2) ||\n py2 > +mmax(y3, y4).toFixed(2)\n ) {\n return;\n }\n return {x: px, y: py};\n }\n function inter(bez1, bez2) {\n return interHelper(bez1, bez2);\n }\n function interCount(bez1, bez2) {\n return interHelper(bez1, bez2, 1);\n }\n function interHelper(bez1, bez2, justCount) {\n var bbox1 = bezierBBox(bez1),\n bbox2 = bezierBBox(bez2);\n if (!isBBoxIntersect(bbox1, bbox2)) {\n return justCount ? 0 : [];\n }\n var l1 = bezlen.apply(0, bez1),\n l2 = bezlen.apply(0, bez2),\n n1 = ~~(l1 / 8),\n n2 = ~~(l2 / 8),\n dots1 = [],\n dots2 = [],\n xy = {},\n res = justCount ? 0 : [];\n for (var i = 0; i < n1 + 1; i++) {\n var p = findDotsAtSegment.apply(0, bez1.concat(i / n1));\n dots1.push({x: p.x, y: p.y, t: i / n1});\n }\n for (i = 0; i < n2 + 1; i++) {\n p = findDotsAtSegment.apply(0, bez2.concat(i / n2));\n dots2.push({x: p.x, y: p.y, t: i / n2});\n }\n for (i = 0; i < n1; i++) {\n for (var j = 0; j < n2; j++) {\n var di = dots1[i],\n di1 = dots1[i + 1],\n dj = dots2[j],\n dj1 = dots2[j + 1],\n ci = abs(di1.x - di.x) < .001 ? \"y\" : \"x\",\n cj = abs(dj1.x - dj.x) < .001 ? \"y\" : \"x\",\n is = intersect(di.x, di.y, di1.x, di1.y, dj.x, dj.y, dj1.x, dj1.y);\n if (is) {\n if (xy[is.x.toFixed(4)] == is.y.toFixed(4)) {\n continue;\n }\n xy[is.x.toFixed(4)] = is.y.toFixed(4);\n var t1 = di.t + abs((is[ci] - di[ci]) / (di1[ci] - di[ci])) * (di1.t - di.t),\n t2 = dj.t + abs((is[cj] - dj[cj]) / (dj1[cj] - dj[cj])) * (dj1.t - dj.t);\n if (t1 >= 0 && t1 <= 1 && t2 >= 0 && t2 <= 1) {\n if (justCount) {\n res++;\n } else {\n res.push({\n x: is.x,\n y: is.y,\n t1: t1,\n t2: t2\n });\n }\n }\n }\n }\n }\n return res;\n }\n function pathIntersection(path1, path2) {\n return interPathHelper(path1, path2);\n }\n function pathIntersectionNumber(path1, path2) {\n return interPathHelper(path1, path2, 1);\n }\n function interPathHelper(path1, path2, justCount) {\n path1 = path2curve(path1);\n path2 = path2curve(path2);\n var x1, y1, x2, y2, x1m, y1m, x2m, y2m, bez1, bez2,\n res = justCount ? 0 : [];\n for (var i = 0, ii = path1.length; i < ii; i++) {\n var pi = path1[i];\n if (pi[0] == \"M\") {\n x1 = x1m = pi[1];\n y1 = y1m = pi[2];\n } else {\n if (pi[0] == \"C\") {\n bez1 = [x1, y1].concat(pi.slice(1));\n x1 = bez1[6];\n y1 = bez1[7];\n } else {\n bez1 = [x1, y1, x1, y1, x1m, y1m, x1m, y1m];\n x1 = x1m;\n y1 = y1m;\n }\n for (var j = 0, jj = path2.length; j < jj; j++) {\n var pj = path2[j];\n if (pj[0] == \"M\") {\n x2 = x2m = pj[1];\n y2 = y2m = pj[2];\n } else {\n if (pj[0] == \"C\") {\n bez2 = [x2, y2].concat(pj.slice(1));\n x2 = bez2[6];\n y2 = bez2[7];\n } else {\n bez2 = [x2, y2, x2, y2, x2m, y2m, x2m, y2m];\n x2 = x2m;\n y2 = y2m;\n }\n var intr = interHelper(bez1, bez2, justCount);\n if (justCount) {\n res += intr;\n } else {\n for (var k = 0, kk = intr.length; k < kk; k++) {\n intr[k].segment1 = i;\n intr[k].segment2 = j;\n intr[k].bez1 = bez1;\n intr[k].bez2 = bez2;\n }\n res = res.concat(intr);\n }\n }\n }\n }\n }\n return res;\n }\n function isPointInsidePath(path, x, y) {\n var bbox = pathBBox(path);\n return isPointInsideBBox(bbox, x, y) &&\n interPathHelper(path, [[\"M\", x, y], [\"H\", bbox.x2 + 10]], 1) % 2 == 1;\n }\n function pathBBox(path) {\n var pth = paths(path);\n if (pth.bbox) {\n return clone(pth.bbox);\n }\n if (!path) {\n return box();\n }\n path = path2curve(path);\n var x = 0, \n y = 0,\n X = [],\n Y = [],\n p;\n for (var i = 0, ii = path.length; i < ii; i++) {\n p = path[i];\n if (p[0] == \"M\") {\n x = p[1];\n y = p[2];\n X.push(x);\n Y.push(y);\n } else {\n var dim = curveDim(x, y, p[1], p[2], p[3], p[4], p[5], p[6]);\n X = X.concat(dim.min.x, dim.max.x);\n Y = Y.concat(dim.min.y, dim.max.y);\n x = p[5];\n y = p[6];\n }\n }\n var xmin = mmin.apply(0, X),\n ymin = mmin.apply(0, Y),\n xmax = mmax.apply(0, X),\n ymax = mmax.apply(0, Y),\n bb = box(xmin, ymin, xmax - xmin, ymax - ymin);\n pth.bbox = clone(bb);\n return bb;\n }\n function rectPath(x, y, w, h, r) {\n if (r) {\n return [\n [\"M\", +x + (+r), y],\n [\"l\", w - r * 2, 0],\n [\"a\", r, r, 0, 0, 1, r, r],\n [\"l\", 0, h - r * 2],\n [\"a\", r, r, 0, 0, 1, -r, r],\n [\"l\", r * 2 - w, 0],\n [\"a\", r, r, 0, 0, 1, -r, -r],\n [\"l\", 0, r * 2 - h],\n [\"a\", r, r, 0, 0, 1, r, -r],\n [\"z\"]\n ];\n }\n var res = [[\"M\", x, y], [\"l\", w, 0], [\"l\", 0, h], [\"l\", -w, 0], [\"z\"]];\n res.toString = toString;\n return res;\n }\n function ellipsePath(x, y, rx, ry, a) {\n if (a == null && ry == null) {\n ry = rx;\n }\n x = +x;\n y = +y;\n rx = +rx;\n ry = +ry;\n if (a != null) {\n var rad = Math.PI / 180,\n x1 = x + rx * Math.cos(-ry * rad),\n x2 = x + rx * Math.cos(-a * rad),\n y1 = y + rx * Math.sin(-ry * rad),\n y2 = y + rx * Math.sin(-a * rad),\n res = [[\"M\", x1, y1], [\"A\", rx, rx, 0, +(a - ry > 180), 0, x2, y2]];\n } else {\n res = [\n [\"M\", x, y],\n [\"m\", 0, -ry],\n [\"a\", rx, ry, 0, 1, 1, 0, 2 * ry],\n [\"a\", rx, ry, 0, 1, 1, 0, -2 * ry],\n [\"z\"]\n ];\n }\n res.toString = toString;\n return res;\n }\n var unit2px = Snap._unit2px,\n getPath = {\n path: function (el) {\n return el.attr(\"path\");\n },\n circle: function (el) {\n var attr = unit2px(el);\n return ellipsePath(attr.cx, attr.cy, attr.r);\n },\n ellipse: function (el) {\n var attr = unit2px(el);\n return ellipsePath(attr.cx || 0, attr.cy || 0, attr.rx, attr.ry);\n },\n rect: function (el) {\n var attr = unit2px(el);\n return rectPath(attr.x || 0, attr.y || 0, attr.width, attr.height, attr.rx, attr.ry);\n },\n image: function (el) {\n var attr = unit2px(el);\n return rectPath(attr.x || 0, attr.y || 0, attr.width, attr.height);\n },\n line: function (el) {\n return \"M\" + [el.attr(\"x1\") || 0, el.attr(\"y1\") || 0, el.attr(\"x2\"), el.attr(\"y2\")];\n },\n polyline: function (el) {\n return \"M\" + el.attr(\"points\");\n },\n polygon: function (el) {\n return \"M\" + el.attr(\"points\") + \"z\";\n },\n deflt: function (el) {\n var bbox = el.node.getBBox();\n return rectPath(bbox.x, bbox.y, bbox.width, bbox.height);\n }\n };\n function pathToRelative(pathArray) {\n var pth = paths(pathArray),\n lowerCase = String.prototype.toLowerCase;\n if (pth.rel) {\n return pathClone(pth.rel);\n }\n if (!Snap.is(pathArray, \"array\") || !Snap.is(pathArray && pathArray[0], \"array\")) {\n pathArray = Snap.parsePathString(pathArray);\n }\n var res = [],\n x = 0,\n y = 0,\n mx = 0,\n my = 0,\n start = 0;\n if (pathArray[0][0] == \"M\") {\n x = pathArray[0][1];\n y = pathArray[0][2];\n mx = x;\n my = y;\n start++;\n res.push([\"M\", x, y]);\n }\n for (var i = start, ii = pathArray.length; i < ii; i++) {\n var r = res[i] = [],\n pa = pathArray[i];\n if (pa[0] != lowerCase.call(pa[0])) {\n r[0] = lowerCase.call(pa[0]);\n switch (r[0]) {\n case \"a\":\n r[1] = pa[1];\n r[2] = pa[2];\n r[3] = pa[3];\n r[4] = pa[4];\n r[5] = pa[5];\n r[6] = +(pa[6] - x).toFixed(3);\n r[7] = +(pa[7] - y).toFixed(3);\n break;\n case \"v\":\n r[1] = +(pa[1] - y).toFixed(3);\n break;\n case \"m\":\n mx = pa[1];\n my = pa[2];\n default:\n for (var j = 1, jj = pa.length; j < jj; j++) {\n r[j] = +(pa[j] - ((j % 2) ? x : y)).toFixed(3);\n }\n }\n } else {\n r = res[i] = [];\n if (pa[0] == \"m\") {\n mx = pa[1] + x;\n my = pa[2] + y;\n }\n for (var k = 0, kk = pa.length; k < kk; k++) {\n res[i][k] = pa[k];\n }\n }\n var len = res[i].length;\n switch (res[i][0]) {\n case \"z\":\n x = mx;\n y = my;\n break;\n case \"h\":\n x += +res[i][len - 1];\n break;\n case \"v\":\n y += +res[i][len - 1];\n break;\n default:\n x += +res[i][len - 2];\n y += +res[i][len - 1];\n }\n }\n res.toString = toString;\n pth.rel = pathClone(res);\n return res;\n }\n function pathToAbsolute(pathArray) {\n var pth = paths(pathArray);\n if (pth.abs) {\n return pathClone(pth.abs);\n }\n if (!is(pathArray, \"array\") || !is(pathArray && pathArray[0], \"array\")) { // rough assumption\n pathArray = Snap.parsePathString(pathArray);\n }\n if (!pathArray || !pathArray.length) {\n return [[\"M\", 0, 0]];\n }\n var res = [],\n x = 0,\n y = 0,\n mx = 0,\n my = 0,\n start = 0,\n pa0;\n if (pathArray[0][0] == \"M\") {\n x = +pathArray[0][1];\n y = +pathArray[0][2];\n mx = x;\n my = y;\n start++;\n res[0] = [\"M\", x, y];\n }\n var crz = pathArray.length == 3 &&\n pathArray[0][0] == \"M\" &&\n pathArray[1][0].toUpperCase() == \"R\" &&\n pathArray[2][0].toUpperCase() == \"Z\";\n for (var r, pa, i = start, ii = pathArray.length; i < ii; i++) {\n res.push(r = []);\n pa = pathArray[i];\n pa0 = pa[0];\n if (pa0 != pa0.toUpperCase()) {\n r[0] = pa0.toUpperCase();\n switch (r[0]) {\n case \"A\":\n r[1] = pa[1];\n r[2] = pa[2];\n r[3] = pa[3];\n r[4] = pa[4];\n r[5] = pa[5];\n r[6] = +pa[6] + x;\n r[7] = +pa[7] + y;\n break;\n case \"V\":\n r[1] = +pa[1] + y;\n break;\n case \"H\":\n r[1] = +pa[1] + x;\n break;\n case \"R\":\n var dots = [x, y].concat(pa.slice(1));\n for (var j = 2, jj = dots.length; j < jj; j++) {\n dots[j] = +dots[j] + x;\n dots[++j] = +dots[j] + y;\n }\n res.pop();\n res = res.concat(catmullRom2bezier(dots, crz));\n break;\n case \"O\":\n res.pop();\n dots = ellipsePath(x, y, pa[1], pa[2]);\n dots.push(dots[0]);\n res = res.concat(dots);\n break;\n case \"U\":\n res.pop();\n res = res.concat(ellipsePath(x, y, pa[1], pa[2], pa[3]));\n r = [\"U\"].concat(res[res.length - 1].slice(-2));\n break;\n case \"M\":\n mx = +pa[1] + x;\n my = +pa[2] + y;\n default:\n for (j = 1, jj = pa.length; j < jj; j++) {\n r[j] = +pa[j] + ((j % 2) ? x : y);\n }\n }\n } else if (pa0 == \"R\") {\n dots = [x, y].concat(pa.slice(1));\n res.pop();\n res = res.concat(catmullRom2bezier(dots, crz));\n r = [\"R\"].concat(pa.slice(-2));\n } else if (pa0 == \"O\") {\n res.pop();\n dots = ellipsePath(x, y, pa[1], pa[2]);\n dots.push(dots[0]);\n res = res.concat(dots);\n } else if (pa0 == \"U\") {\n res.pop();\n res = res.concat(ellipsePath(x, y, pa[1], pa[2], pa[3]));\n r = [\"U\"].concat(res[res.length - 1].slice(-2));\n } else {\n for (var k = 0, kk = pa.length; k < kk; k++) {\n r[k] = pa[k];\n }\n }\n pa0 = pa0.toUpperCase();\n if (pa0 != \"O\") {\n switch (r[0]) {\n case \"Z\":\n x = +mx;\n y = +my;\n break;\n case \"H\":\n x = r[1];\n break;\n case \"V\":\n y = r[1];\n break;\n case \"M\":\n mx = r[r.length - 2];\n my = r[r.length - 1];\n default:\n x = r[r.length - 2];\n y = r[r.length - 1];\n }\n }\n }\n res.toString = toString;\n pth.abs = pathClone(res);\n return res;\n }\n function l2c(x1, y1, x2, y2) {\n return [x1, y1, x2, y2, x2, y2];\n }\n function q2c(x1, y1, ax, ay, x2, y2) {\n var _13 = 1 / 3,\n _23 = 2 / 3;\n return [\n _13 * x1 + _23 * ax,\n _13 * y1 + _23 * ay,\n _13 * x2 + _23 * ax,\n _13 * y2 + _23 * ay,\n x2,\n y2\n ];\n }\n function a2c(x1, y1, rx, ry, angle, large_arc_flag, sweep_flag, x2, y2, recursive) {\n // for more information of where this math came from visit:\n // http://www.w3.org/TR/SVG11/implnote.html#ArcImplementationNotes\n var _120 = PI * 120 / 180,\n rad = PI / 180 * (+angle || 0),\n res = [],\n xy,\n rotate = Snap._.cacher(function (x, y, rad) {\n var X = x * math.cos(rad) - y * math.sin(rad),\n Y = x * math.sin(rad) + y * math.cos(rad);\n return {x: X, y: Y};\n });\n if (!recursive) {\n xy = rotate(x1, y1, -rad);\n x1 = xy.x;\n y1 = xy.y;\n xy = rotate(x2, y2, -rad);\n x2 = xy.x;\n y2 = xy.y;\n var cos = math.cos(PI / 180 * angle),\n sin = math.sin(PI / 180 * angle),\n x = (x1 - x2) / 2,\n y = (y1 - y2) / 2;\n var h = (x * x) / (rx * rx) + (y * y) / (ry * ry);\n if (h > 1) {\n h = math.sqrt(h);\n rx = h * rx;\n ry = h * ry;\n }\n var rx2 = rx * rx,\n ry2 = ry * ry,\n k = (large_arc_flag == sweep_flag ? -1 : 1) *\n math.sqrt(abs((rx2 * ry2 - rx2 * y * y - ry2 * x * x) / (rx2 * y * y + ry2 * x * x))),\n cx = k * rx * y / ry + (x1 + x2) / 2,\n cy = k * -ry * x / rx + (y1 + y2) / 2,\n f1 = math.asin(((y1 - cy) / ry).toFixed(9)),\n f2 = math.asin(((y2 - cy) / ry).toFixed(9));\n\n f1 = x1 < cx ? PI - f1 : f1;\n f2 = x2 < cx ? PI - f2 : f2;\n f1 < 0 && (f1 = PI * 2 + f1);\n f2 < 0 && (f2 = PI * 2 + f2);\n if (sweep_flag && f1 > f2) {\n f1 = f1 - PI * 2;\n }\n if (!sweep_flag && f2 > f1) {\n f2 = f2 - PI * 2;\n }\n } else {\n f1 = recursive[0];\n f2 = recursive[1];\n cx = recursive[2];\n cy = recursive[3];\n }\n var df = f2 - f1;\n if (abs(df) > _120) {\n var f2old = f2,\n x2old = x2,\n y2old = y2;\n f2 = f1 + _120 * (sweep_flag && f2 > f1 ? 1 : -1);\n x2 = cx + rx * math.cos(f2);\n y2 = cy + ry * math.sin(f2);\n res = a2c(x2, y2, rx, ry, angle, 0, sweep_flag, x2old, y2old, [f2, f2old, cx, cy]);\n }\n df = f2 - f1;\n var c1 = math.cos(f1),\n s1 = math.sin(f1),\n c2 = math.cos(f2),\n s2 = math.sin(f2),\n t = math.tan(df / 4),\n hx = 4 / 3 * rx * t,\n hy = 4 / 3 * ry * t,\n m1 = [x1, y1],\n m2 = [x1 + hx * s1, y1 - hy * c1],\n m3 = [x2 + hx * s2, y2 - hy * c2],\n m4 = [x2, y2];\n m2[0] = 2 * m1[0] - m2[0];\n m2[1] = 2 * m1[1] - m2[1];\n if (recursive) {\n return [m2, m3, m4].concat(res);\n } else {\n res = [m2, m3, m4].concat(res).join().split(\",\");\n var newres = [];\n for (var i = 0, ii = res.length; i < ii; i++) {\n newres[i] = i % 2 ? rotate(res[i - 1], res[i], rad).y : rotate(res[i], res[i + 1], rad).x;\n }\n return newres;\n }\n }\n function findDotAtSegment(p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y, t) {\n var t1 = 1 - t;\n return {\n x: pow(t1, 3) * p1x + pow(t1, 2) * 3 * t * c1x + t1 * 3 * t * t * c2x + pow(t, 3) * p2x,\n y: pow(t1, 3) * p1y + pow(t1, 2) * 3 * t * c1y + t1 * 3 * t * t * c2y + pow(t, 3) * p2y\n };\n }\n \n // Returns bounding box of cubic bezier curve.\n // Source: http://blog.hackers-cafe.net/2009/06/how-to-calculate-bezier-curves-bounding.html\n // Original version: NISHIO Hirokazu\n // Modifications: https://github.com/timo22345\n function curveDim(x0, y0, x1, y1, x2, y2, x3, y3) {\n var tvalues = [],\n bounds = [[], []],\n a, b, c, t, t1, t2, b2ac, sqrtb2ac;\n for (var i = 0; i < 2; ++i) {\n if (i == 0) {\n b = 6 * x0 - 12 * x1 + 6 * x2;\n a = -3 * x0 + 9 * x1 - 9 * x2 + 3 * x3;\n c = 3 * x1 - 3 * x0;\n } else {\n b = 6 * y0 - 12 * y1 + 6 * y2;\n a = -3 * y0 + 9 * y1 - 9 * y2 + 3 * y3;\n c = 3 * y1 - 3 * y0;\n }\n if (abs(a) < 1e-12) {\n if (abs(b) < 1e-12) {\n continue;\n }\n t = -c / b;\n if (0 < t && t < 1) {\n tvalues.push(t);\n }\n continue;\n }\n b2ac = b * b - 4 * c * a;\n sqrtb2ac = math.sqrt(b2ac);\n if (b2ac < 0) {\n continue;\n }\n t1 = (-b + sqrtb2ac) / (2 * a);\n if (0 < t1 && t1 < 1) {\n tvalues.push(t1);\n }\n t2 = (-b - sqrtb2ac) / (2 * a);\n if (0 < t2 && t2 < 1) {\n tvalues.push(t2);\n }\n }\n\n var x, y, j = tvalues.length,\n jlen = j,\n mt;\n while (j--) {\n t = tvalues[j];\n mt = 1 - t;\n bounds[0][j] = (mt * mt * mt * x0) + (3 * mt * mt * t * x1) + (3 * mt * t * t * x2) + (t * t * t * x3);\n bounds[1][j] = (mt * mt * mt * y0) + (3 * mt * mt * t * y1) + (3 * mt * t * t * y2) + (t * t * t * y3);\n }\n\n bounds[0][jlen] = x0;\n bounds[1][jlen] = y0;\n bounds[0][jlen + 1] = x3;\n bounds[1][jlen + 1] = y3;\n bounds[0].length = bounds[1].length = jlen + 2;\n\n\n return {\n min: {x: mmin.apply(0, bounds[0]), y: mmin.apply(0, bounds[1])},\n max: {x: mmax.apply(0, bounds[0]), y: mmax.apply(0, bounds[1])}\n };\n }\n\n function path2curve(path, path2) {\n var pth = !path2 && paths(path);\n if (!path2 && pth.curve) {\n return pathClone(pth.curve);\n }\n var p = pathToAbsolute(path),\n p2 = path2 && pathToAbsolute(path2),\n attrs = {x: 0, y: 0, bx: 0, by: 0, X: 0, Y: 0, qx: null, qy: null},\n attrs2 = {x: 0, y: 0, bx: 0, by: 0, X: 0, Y: 0, qx: null, qy: null},\n processPath = function (path, d, pcom) {\n var nx, ny;\n if (!path) {\n return [\"C\", d.x, d.y, d.x, d.y, d.x, d.y];\n }\n !(path[0] in {T: 1, Q: 1}) && (d.qx = d.qy = null);\n switch (path[0]) {\n case \"M\":\n d.X = path[1];\n d.Y = path[2];\n break;\n case \"A\":\n path = [\"C\"].concat(a2c.apply(0, [d.x, d.y].concat(path.slice(1))));\n break;\n case \"S\":\n if (pcom == \"C\" || pcom == \"S\") { // In \"S\" case we have to take into account, if the previous command is C/S.\n nx = d.x * 2 - d.bx; // And reflect the previous\n ny = d.y * 2 - d.by; // command's control point relative to the current point.\n }\n else { // or some else or nothing\n nx = d.x;\n ny = d.y;\n }\n path = [\"C\", nx, ny].concat(path.slice(1));\n break;\n case \"T\":\n if (pcom == \"Q\" || pcom == \"T\") { // In \"T\" case we have to take into account, if the previous command is Q/T.\n d.qx = d.x * 2 - d.qx; // And make a reflection similar\n d.qy = d.y * 2 - d.qy; // to case \"S\".\n }\n else { // or something else or nothing\n d.qx = d.x;\n d.qy = d.y;\n }\n path = [\"C\"].concat(q2c(d.x, d.y, d.qx, d.qy, path[1], path[2]));\n break;\n case \"Q\":\n d.qx = path[1];\n d.qy = path[2];\n path = [\"C\"].concat(q2c(d.x, d.y, path[1], path[2], path[3], path[4]));\n break;\n case \"L\":\n path = [\"C\"].concat(l2c(d.x, d.y, path[1], path[2]));\n break;\n case \"H\":\n path = [\"C\"].concat(l2c(d.x, d.y, path[1], d.y));\n break;\n case \"V\":\n path = [\"C\"].concat(l2c(d.x, d.y, d.x, path[1]));\n break;\n case \"Z\":\n path = [\"C\"].concat(l2c(d.x, d.y, d.X, d.Y));\n break;\n }\n return path;\n },\n fixArc = function (pp, i) {\n if (pp[i].length > 7) {\n pp[i].shift();\n var pi = pp[i];\n while (pi.length) {\n pcoms1[i] = \"A\"; // if created multiple C:s, their original seg is saved\n p2 && (pcoms2[i] = \"A\"); // the same as above\n pp.splice(i++, 0, [\"C\"].concat(pi.splice(0, 6)));\n }\n pp.splice(i, 1);\n ii = mmax(p.length, p2 && p2.length || 0);\n }\n },\n fixM = function (path1, path2, a1, a2, i) {\n if (path1 && path2 && path1[i][0] == \"M\" && path2[i][0] != \"M\") {\n path2.splice(i, 0, [\"M\", a2.x, a2.y]);\n a1.bx = 0;\n a1.by = 0;\n a1.x = path1[i][1];\n a1.y = path1[i][2];\n ii = mmax(p.length, p2 && p2.length || 0);\n }\n },\n pcoms1 = [], // path commands of original path p\n pcoms2 = [], // path commands of original path p2\n pfirst = \"\", // temporary holder for original path command\n pcom = \"\"; // holder for previous path command of original path\n for (var i = 0, ii = mmax(p.length, p2 && p2.length || 0); i < ii; i++) {\n p[i] && (pfirst = p[i][0]); // save current path command\n\n if (pfirst != \"C\") // C is not saved yet, because it may be result of conversion\n {\n pcoms1[i] = pfirst; // Save current path command\n i && ( pcom = pcoms1[i - 1]); // Get previous path command pcom\n }\n p[i] = processPath(p[i], attrs, pcom); // Previous path command is inputted to processPath\n\n if (pcoms1[i] != \"A\" && pfirst == \"C\") pcoms1[i] = \"C\"; // A is the only command\n // which may produce multiple C:s\n // so we have to make sure that C is also C in original path\n\n fixArc(p, i); // fixArc adds also the right amount of A:s to pcoms1\n\n if (p2) { // the same procedures is done to p2\n p2[i] && (pfirst = p2[i][0]);\n if (pfirst != \"C\") {\n pcoms2[i] = pfirst;\n i && (pcom = pcoms2[i - 1]);\n }\n p2[i] = processPath(p2[i], attrs2, pcom);\n\n if (pcoms2[i] != \"A\" && pfirst == \"C\") {\n pcoms2[i] = \"C\";\n }\n\n fixArc(p2, i);\n }\n fixM(p, p2, attrs, attrs2, i);\n fixM(p2, p, attrs2, attrs, i);\n var seg = p[i],\n seg2 = p2 && p2[i],\n seglen = seg.length,\n seg2len = p2 && seg2.length;\n attrs.x = seg[seglen - 2];\n attrs.y = seg[seglen - 1];\n attrs.bx = toFloat(seg[seglen - 4]) || attrs.x;\n attrs.by = toFloat(seg[seglen - 3]) || attrs.y;\n attrs2.bx = p2 && (toFloat(seg2[seg2len - 4]) || attrs2.x);\n attrs2.by = p2 && (toFloat(seg2[seg2len - 3]) || attrs2.y);\n attrs2.x = p2 && seg2[seg2len - 2];\n attrs2.y = p2 && seg2[seg2len - 1];\n }\n if (!p2) {\n pth.curve = pathClone(p);\n }\n return p2 ? [p, p2] : p;\n }\n function mapPath(path, matrix) {\n if (!matrix) {\n return path;\n }\n var x, y, i, j, ii, jj, pathi;\n path = path2curve(path);\n for (i = 0, ii = path.length; i < ii; i++) {\n pathi = path[i];\n for (j = 1, jj = pathi.length; j < jj; j += 2) {\n x = matrix.x(pathi[j], pathi[j + 1]);\n y = matrix.y(pathi[j], pathi[j + 1]);\n pathi[j] = x;\n pathi[j + 1] = y;\n }\n }\n return path;\n }\n\n // http://schepers.cc/getting-to-the-point\n function catmullRom2bezier(crp, z) {\n var d = [];\n for (var i = 0, iLen = crp.length; iLen - 2 * !z > i; i += 2) {\n var p = [\n {x: +crp[i - 2], y: +crp[i - 1]},\n {x: +crp[i], y: +crp[i + 1]},\n {x: +crp[i + 2], y: +crp[i + 3]},\n {x: +crp[i + 4], y: +crp[i + 5]}\n ];\n if (z) {\n if (!i) {\n p[0] = {x: +crp[iLen - 2], y: +crp[iLen - 1]};\n } else if (iLen - 4 == i) {\n p[3] = {x: +crp[0], y: +crp[1]};\n } else if (iLen - 2 == i) {\n p[2] = {x: +crp[0], y: +crp[1]};\n p[3] = {x: +crp[2], y: +crp[3]};\n }\n } else {\n if (iLen - 4 == i) {\n p[3] = p[2];\n } else if (!i) {\n p[0] = {x: +crp[i], y: +crp[i + 1]};\n }\n }\n d.push([\"C\",\n (-p[0].x + 6 * p[1].x + p[2].x) / 6,\n (-p[0].y + 6 * p[1].y + p[2].y) / 6,\n (p[1].x + 6 * p[2].x - p[3].x) / 6,\n (p[1].y + 6*p[2].y - p[3].y) / 6,\n p[2].x,\n p[2].y\n ]);\n }\n\n return d;\n }\n\n // export\n Snap.path = paths;\n\n /*\\\n * Snap.path.getTotalLength\n [ method ]\n **\n * Returns the length of the given path in pixels\n **\n - path (string) SVG path string\n **\n = (number) length\n \\*/\n Snap.path.getTotalLength = getTotalLength;\n /*\\\n * Snap.path.getPointAtLength\n [ method ]\n **\n * Returns the coordinates of the point located at the given length along the given path\n **\n - path (string) SVG path string\n - length (number) length, in pixels, from the start of the path, excluding non-rendering jumps\n **\n = (object) representation of the point:\n o {\n o x: (number) x coordinate,\n o y: (number) y coordinate,\n o alpha: (number) angle of derivative\n o }\n \\*/\n Snap.path.getPointAtLength = getPointAtLength;\n /*\\\n * Snap.path.getSubpath\n [ method ]\n **\n * Returns the subpath of a given path between given start and end lengths\n **\n - path (string) SVG path string\n - from (number) length, in pixels, from the start of the path to the start of the segment\n - to (number) length, in pixels, from the start of the path to the end of the segment\n **\n = (string) path string definition for the segment\n \\*/\n Snap.path.getSubpath = function (path, from, to) {\n if (this.getTotalLength(path) - to < 1e-6) {\n return getSubpathsAtLength(path, from).end;\n }\n var a = getSubpathsAtLength(path, to, 1);\n return from ? getSubpathsAtLength(a, from).end : a;\n };\n /*\\\n * Element.getTotalLength\n [ method ]\n **\n * Returns the length of the path in pixels (only works for `path` elements)\n = (number) length\n \\*/\n elproto.getTotalLength = function () {\n if (this.node.getTotalLength) {\n return this.node.getTotalLength();\n }\n };\n // SIERRA Element.getPointAtLength()/Element.getTotalLength(): If a <path> is broken into different segments, is the jump distance to the new coordinates set by the _M_ or _m_ commands calculated as part of the path's total length?\n /*\\\n * Element.getPointAtLength\n [ method ]\n **\n * Returns coordinates of the point located at the given length on the given path (only works for `path` elements)\n **\n - length (number) length, in pixels, from the start of the path, excluding non-rendering jumps\n **\n = (object) representation of the point:\n o {\n o x: (number) x coordinate,\n o y: (number) y coordinate,\n o alpha: (number) angle of derivative\n o }\n \\*/\n elproto.getPointAtLength = function (length) {\n return getPointAtLength(this.attr(\"d\"), length);\n };\n // SIERRA Element.getSubpath(): Similar to the problem for Element.getPointAtLength(). Unclear how this would work for a segmented path. Overall, the concept of _subpath_ and what I'm calling a _segment_ (series of non-_M_ or _Z_ commands) is unclear.\n /*\\\n * Element.getSubpath\n [ method ]\n **\n * Returns subpath of a given element from given start and end lengths (only works for `path` elements)\n **\n - from (number) length, in pixels, from the start of the path to the start of the segment\n - to (number) length, in pixels, from the start of the path to the end of the segment\n **\n = (string) path string definition for the segment\n \\*/\n elproto.getSubpath = function (from, to) {\n return Snap.path.getSubpath(this.attr(\"d\"), from, to);\n };\n Snap._.box = box;\n /*\\\n * Snap.path.findDotsAtSegment\n [ method ]\n **\n * Utility method\n **\n * Finds dot coordinates on the given cubic beziér curve at the given t\n - p1x (number) x of the first point of the curve\n - p1y (number) y of the first point of the curve\n - c1x (number) x of the first anchor of the curve\n - c1y (number) y of the first anchor of the curve\n - c2x (number) x of the second anchor of the curve\n - c2y (number) y of the second anchor of the curve\n - p2x (number) x of the second point of the curve\n - p2y (number) y of the second point of the curve\n - t (number) position on the curve (0..1)\n = (object) point information in format:\n o {\n o x: (number) x coordinate of the point,\n o y: (number) y coordinate of the point,\n o m: {\n o x: (number) x coordinate of the left anchor,\n o y: (number) y coordinate of the left anchor\n o },\n o n: {\n o x: (number) x coordinate of the right anchor,\n o y: (number) y coordinate of the right anchor\n o },\n o start: {\n o x: (number) x coordinate of the start of the curve,\n o y: (number) y coordinate of the start of the curve\n o },\n o end: {\n o x: (number) x coordinate of the end of the curve,\n o y: (number) y coordinate of the end of the curve\n o },\n o alpha: (number) angle of the curve derivative at the point\n o }\n \\*/\n Snap.path.findDotsAtSegment = findDotsAtSegment;\n /*\\\n * Snap.path.bezierBBox\n [ method ]\n **\n * Utility method\n **\n * Returns the bounding box of a given cubic beziér curve\n - p1x (number) x of the first point of the curve\n - p1y (number) y of the first point of the curve\n - c1x (number) x of the first anchor of the curve\n - c1y (number) y of the first anchor of the curve\n - c2x (number) x of the second anchor of the curve\n - c2y (number) y of the second anchor of the curve\n - p2x (number) x of the second point of the curve\n - p2y (number) y of the second point of the curve\n * or\n - bez (array) array of six points for beziér curve\n = (object) bounding box\n o {\n o x: (number) x coordinate of the left top point of the box,\n o y: (number) y coordinate of the left top point of the box,\n o x2: (number) x coordinate of the right bottom point of the box,\n o y2: (number) y coordinate of the right bottom point of the box,\n o width: (number) width of the box,\n o height: (number) height of the box\n o }\n \\*/\n Snap.path.bezierBBox = bezierBBox;\n /*\\\n * Snap.path.isPointInsideBBox\n [ method ]\n **\n * Utility method\n **\n * Returns `true` if given point is inside bounding box\n - bbox (string) bounding box\n - x (string) x coordinate of the point\n - y (string) y coordinate of the point\n = (boolean) `true` if point is inside\n \\*/\n Snap.path.isPointInsideBBox = isPointInsideBBox;\n Snap.closest = function (x, y, X, Y) {\n var r = 100,\n b = box(x - r / 2, y - r / 2, r, r),\n inside = [],\n getter = X[0].hasOwnProperty(\"x\") ? function (i) {\n return {\n x: X[i].x,\n y: X[i].y\n };\n } : function (i) {\n return {\n x: X[i],\n y: Y[i]\n };\n },\n found = 0;\n while (r <= 1e6 && !found) {\n for (var i = 0, ii = X.length; i < ii; i++) {\n var xy = getter(i);\n if (isPointInsideBBox(b, xy.x, xy.y)) {\n found++;\n inside.push(xy);\n break;\n }\n }\n if (!found) {\n r *= 2;\n b = box(x - r / 2, y - r / 2, r, r)\n }\n }\n if (r == 1e6) {\n return;\n }\n var len = Infinity,\n res;\n for (i = 0, ii = inside.length; i < ii; i++) {\n var l = Snap.len(x, y, inside[i].x, inside[i].y);\n if (len > l) {\n len = l;\n inside[i].len = l;\n res = inside[i];\n }\n }\n return res;\n };\n /*\\\n * Snap.path.isBBoxIntersect\n [ method ]\n **\n * Utility method\n **\n * Returns `true` if two bounding boxes intersect\n - bbox1 (string) first bounding box\n - bbox2 (string) second bounding box\n = (boolean) `true` if bounding boxes intersect\n \\*/\n Snap.path.isBBoxIntersect = isBBoxIntersect;\n /*\\\n * Snap.path.intersection\n [ method ]\n **\n * Utility method\n **\n * Finds intersections of two paths\n - path1 (string) path string\n - path2 (string) path string\n = (array) dots of intersection\n o [\n o {\n o x: (number) x coordinate of the point,\n o y: (number) y coordinate of the point,\n o t1: (number) t value for segment of path1,\n o t2: (number) t value for segment of path2,\n o segment1: (number) order number for segment of path1,\n o segment2: (number) order number for segment of path2,\n o bez1: (array) eight coordinates representing beziér curve for the segment of path1,\n o bez2: (array) eight coordinates representing beziér curve for the segment of path2\n o }\n o ]\n \\*/\n Snap.path.intersection = pathIntersection;\n Snap.path.intersectionNumber = pathIntersectionNumber;\n /*\\\n * Snap.path.isPointInside\n [ method ]\n **\n * Utility method\n **\n * Returns `true` if given point is inside a given closed path.\n *\n * Note: fill mode doesn’t affect the result of this method.\n - path (string) path string\n - x (number) x of the point\n - y (number) y of the point\n = (boolean) `true` if point is inside the path\n \\*/\n Snap.path.isPointInside = isPointInsidePath;\n /*\\\n * Snap.path.getBBox\n [ method ]\n **\n * Utility method\n **\n * Returns the bounding box of a given path\n - path (string) path string\n = (object) bounding box\n o {\n o x: (number) x coordinate of the left top point of the box,\n o y: (number) y coordinate of the left top point of the box,\n o x2: (number) x coordinate of the right bottom point of the box,\n o y2: (number) y coordinate of the right bottom point of the box,\n o width: (number) width of the box,\n o height: (number) height of the box\n o }\n \\*/\n Snap.path.getBBox = pathBBox;\n Snap.path.get = getPath;\n /*\\\n * Snap.path.toRelative\n [ method ]\n **\n * Utility method\n **\n * Converts path coordinates into relative values\n - path (string) path string\n = (array) path string\n \\*/\n Snap.path.toRelative = pathToRelative;\n /*\\\n * Snap.path.toAbsolute\n [ method ]\n **\n * Utility method\n **\n * Converts path coordinates into absolute values\n - path (string) path string\n = (array) path string\n \\*/\n Snap.path.toAbsolute = pathToAbsolute;\n /*\\\n * Snap.path.toCubic\n [ method ]\n **\n * Utility method\n **\n * Converts path to a new path where all segments are cubic beziér curves\n - pathString (string|array) path string or array of segments\n = (array) array of segments\n \\*/\n Snap.path.toCubic = path2curve;\n /*\\\n * Snap.path.map\n [ method ]\n **\n * Transform the path string with the given matrix\n - path (string) path string\n - matrix (object) see @Matrix\n = (string) transformed path string\n \\*/\n Snap.path.map = mapPath;\n Snap.path.toString = toString;\n Snap.path.clone = pathClone;\n});\n\n// Copyright (c) 2013 Adobe Systems Incorporated. All rights reserved.\n// \n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n// \n// http://www.apache.org/licenses/LICENSE-2.0\n// \n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nSnap.plugin(function (Snap, Element, Paper, glob) {\n var mmax = Math.max,\n mmin = Math.min;\n\n // Set\n var Set = function (items) {\n this.items = [];\n\tthis.bindings = {};\n this.length = 0;\n this.type = \"set\";\n if (items) {\n for (var i = 0, ii = items.length; i < ii; i++) {\n if (items[i]) {\n this[this.items.length] = this.items[this.items.length] = items[i];\n this.length++;\n }\n }\n }\n },\n setproto = Set.prototype;\n /*\\\n * Set.push\n [ method ]\n **\n * Adds each argument to the current set\n = (object) original element\n \\*/\n setproto.push = function () {\n var item,\n len;\n for (var i = 0, ii = arguments.length; i < ii; i++) {\n item = arguments[i];\n if (item) {\n len = this.items.length;\n this[len] = this.items[len] = item;\n this.length++;\n }\n }\n return this;\n };\n /*\\\n * Set.pop\n [ method ]\n **\n * Removes last element and returns it\n = (object) element\n \\*/\n setproto.pop = function () {\n this.length && delete this[this.length--];\n return this.items.pop();\n };\n /*\\\n * Set.forEach\n [ method ]\n **\n * Executes given function for each element in the set\n *\n * If the function returns `false`, the loop stops running.\n **\n - callback (function) function to run\n - thisArg (object) context object for the callback\n = (object) Set object\n \\*/\n setproto.forEach = function (callback, thisArg) {\n for (var i = 0, ii = this.items.length; i < ii; i++) {\n if (callback.call(thisArg, this.items[i], i) === false) {\n return this;\n }\n }\n return this;\n };\n /*\\\n * Set.animate\n [ method ]\n **\n * Animates each element in set in sync.\n *\n **\n - attrs (object) key-value pairs of destination attributes\n - duration (number) duration of the animation in milliseconds\n - easing (function) #optional easing function from @mina or custom\n - callback (function) #optional callback function that executes when the animation ends\n * or\n - animation (array) array of animation parameter for each element in set in format `[attrs, duration, easing, callback]`\n > Usage\n | // animate all elements in set to radius 10\n | set.animate({r: 10}, 500, mina.easein);\n | // or\n | // animate first element to radius 10, but second to radius 20 and in different time\n | set.animate([{r: 10}, 500, mina.easein], [{r: 20}, 1500, mina.easein]);\n = (Element) the current element\n \\*/\n setproto.animate = function (attrs, ms, easing, callback) {\n if (typeof easing == \"function\" && !easing.length) {\n callback = easing;\n easing = mina.linear;\n }\n if (attrs instanceof Snap._.Animation) {\n callback = attrs.callback;\n easing = attrs.easing;\n ms = easing.dur;\n attrs = attrs.attr;\n }\n var args = arguments;\n if (Snap.is(attrs, \"array\") && Snap.is(args[args.length - 1], \"array\")) {\n var each = true;\n }\n var begin,\n handler = function () {\n if (begin) {\n this.b = begin;\n } else {\n begin = this.b;\n }\n },\n cb = 0,\n set = this,\n callbacker = callback && function () {\n if (++cb == set.length) {\n callback.call(this);\n }\n };\n return this.forEach(function (el, i) {\n eve.once(\"snap.animcreated.\" + el.id, handler);\n if (each) {\n args[i] && el.animate.apply(el, args[i]);\n } else {\n el.animate(attrs, ms, easing, callbacker);\n }\n });\n };\n setproto.remove = function () {\n while (this.length) {\n this.pop().remove();\n }\n return this;\n };\n /*\\\n * Set.bind\n [ method ]\n **\n * Specifies how to handle a specific attribute when applied\n * to a set.\n *\n **\n - attr (string) attribute name\n - callback (function) function to run\n * or\n - attr (string) attribute name\n - element (Element) specific element in the set to apply the attribute to\n * or\n - attr (string) attribute name\n - element (Element) specific element in the set to apply the attribute to\n - eattr (string) attribute on the element to bind the attribute to\n = (object) Set object\n \\*/\n setproto.bind = function (attr, a, b) {\n var data = {};\n if (typeof a == \"function\") {\n this.bindings[attr] = a;\n } else {\n var aname = b || attr;\n this.bindings[attr] = function (v) {\n data[aname] = v;\n a.attr(data);\n };\n }\n return this;\n };\n setproto.attr = function (value) {\n var unbound = {};\n for (var k in value) {\n if (this.bindings[k]) {\n this.bindings[k](value[k]);\n } else {\n unbound[k] = value[k];\n }\n }\n for (var i = 0, ii = this.items.length; i < ii; i++) {\n this.items[i].attr(unbound);\n }\n return this;\n };\n /*\\\n * Set.clear\n [ method ]\n **\n * Removes all elements from the set\n \\*/\n setproto.clear = function () {\n while (this.length) {\n this.pop();\n }\n };\n /*\\\n * Set.splice\n [ method ]\n **\n * Removes range of elements from the set\n **\n - index (number) position of the deletion\n - count (number) number of element to remove\n - insertion… (object) #optional elements to insert\n = (object) set elements that were deleted\n \\*/\n setproto.splice = function (index, count, insertion) {\n index = index < 0 ? mmax(this.length + index, 0) : index;\n count = mmax(0, mmin(this.length - index, count));\n var tail = [],\n todel = [],\n args = [],\n i;\n for (i = 2; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n for (i = 0; i < count; i++) {\n todel.push(this[index + i]);\n }\n for (; i < this.length - index; i++) {\n tail.push(this[index + i]);\n }\n var arglen = args.length;\n for (i = 0; i < arglen + tail.length; i++) {\n this.items[index + i] = this[index + i] = i < arglen ? args[i] : tail[i - arglen];\n }\n i = this.items.length = this.length -= count - arglen;\n while (this[i]) {\n delete this[i++];\n }\n return new Set(todel);\n };\n /*\\\n * Set.exclude\n [ method ]\n **\n * Removes given element from the set\n **\n - element (object) element to remove\n = (boolean) `true` if object was found and removed from the set\n \\*/\n setproto.exclude = function (el) {\n for (var i = 0, ii = this.length; i < ii; i++) if (this[i] == el) {\n this.splice(i, 1);\n return true;\n }\n return false;\n };\n setproto.insertAfter = function (el) {\n var i = this.items.length;\n while (i--) {\n this.items[i].insertAfter(el);\n }\n return this;\n };\n setproto.getBBox = function () {\n var x = [],\n y = [],\n x2 = [],\n y2 = [];\n for (var i = this.items.length; i--;) if (!this.items[i].removed) {\n var box = this.items[i].getBBox();\n x.push(box.x);\n y.push(box.y);\n x2.push(box.x + box.width);\n y2.push(box.y + box.height);\n }\n x = mmin.apply(0, x);\n y = mmin.apply(0, y);\n x2 = mmax.apply(0, x2);\n y2 = mmax.apply(0, y2);\n return {\n x: x,\n y: y,\n x2: x2,\n y2: y2,\n width: x2 - x,\n height: y2 - y,\n cx: x + (x2 - x) / 2,\n cy: y + (y2 - y) / 2\n };\n };\n setproto.clone = function (s) {\n s = new Set;\n for (var i = 0, ii = this.items.length; i < ii; i++) {\n s.push(this.items[i].clone());\n }\n return s;\n };\n setproto.toString = function () {\n return \"Snap\\u2018s set\";\n };\n setproto.type = \"set\";\n // export\n Snap.Set = Set;\n Snap.set = function () {\n var set = new Set;\n if (arguments.length) {\n set.push.apply(set, Array.prototype.slice.call(arguments, 0));\n }\n return set;\n };\n});\n\n// Copyright (c) 2013 Adobe Systems Incorporated. All rights reserved.\n// \n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n// \n// http://www.apache.org/licenses/LICENSE-2.0\n// \n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nSnap.plugin(function (Snap, Element, Paper, glob) {\n var names = {},\n reUnit = /[a-z]+$/i,\n Str = String;\n names.stroke = names.fill = \"colour\";\n function getEmpty(item) {\n var l = item[0];\n switch (l.toLowerCase()) {\n case \"t\": return [l, 0, 0];\n case \"m\": return [l, 1, 0, 0, 1, 0, 0];\n case \"r\": if (item.length == 4) {\n return [l, 0, item[2], item[3]];\n } else {\n return [l, 0];\n }\n case \"s\": if (item.length == 5) {\n return [l, 1, 1, item[3], item[4]];\n } else if (item.length == 3) {\n return [l, 1, 1];\n } else {\n return [l, 1];\n }\n }\n }\n function equaliseTransform(t1, t2, getBBox) {\n t2 = Str(t2).replace(/\\.{3}|\\u2026/g, t1);\n t1 = Snap.parseTransformString(t1) || [];\n t2 = Snap.parseTransformString(t2) || [];\n var maxlength = Math.max(t1.length, t2.length),\n from = [],\n to = [],\n i = 0, j, jj,\n tt1, tt2;\n for (; i < maxlength; i++) {\n tt1 = t1[i] || getEmpty(t2[i]);\n tt2 = t2[i] || getEmpty(tt1);\n if ((tt1[0] != tt2[0]) ||\n (tt1[0].toLowerCase() == \"r\" && (tt1[2] != tt2[2] || tt1[3] != tt2[3])) ||\n (tt1[0].toLowerCase() == \"s\" && (tt1[3] != tt2[3] || tt1[4] != tt2[4]))\n ) {\n t1 = Snap._.transform2matrix(t1, getBBox());\n t2 = Snap._.transform2matrix(t2, getBBox());\n from = [[\"m\", t1.a, t1.b, t1.c, t1.d, t1.e, t1.f]];\n to = [[\"m\", t2.a, t2.b, t2.c, t2.d, t2.e, t2.f]];\n break;\n }\n from[i] = [];\n to[i] = [];\n for (j = 0, jj = Math.max(tt1.length, tt2.length); j < jj; j++) {\n j in tt1 && (from[i][j] = tt1[j]);\n j in tt2 && (to[i][j] = tt2[j]);\n }\n }\n return {\n from: path2array(from),\n to: path2array(to),\n f: getPath(from)\n };\n }\n function getNumber(val) {\n return val;\n }\n function getUnit(unit) {\n return function (val) {\n return +val.toFixed(3) + unit;\n };\n }\n function getViewBox(val) {\n return val.join(\" \");\n }\n function getColour(clr) {\n return Snap.rgb(clr[0], clr[1], clr[2]);\n }\n function getPath(path) {\n var k = 0, i, ii, j, jj, out, a, b = [];\n for (i = 0, ii = path.length; i < ii; i++) {\n out = \"[\";\n a = ['\"' + path[i][0] + '\"'];\n for (j = 1, jj = path[i].length; j < jj; j++) {\n a[j] = \"val[\" + (k++) + \"]\";\n }\n out += a + \"]\";\n b[i] = out;\n }\n return Function(\"val\", \"return Snap.path.toString.call([\" + b + \"])\");\n }\n function path2array(path) {\n var out = [];\n for (var i = 0, ii = path.length; i < ii; i++) {\n for (var j = 1, jj = path[i].length; j < jj; j++) {\n out.push(path[i][j]);\n }\n }\n return out;\n }\n function isNumeric(obj) {\n return isFinite(parseFloat(obj));\n }\n function arrayEqual(arr1, arr2) {\n if (!Snap.is(arr1, \"array\") || !Snap.is(arr2, \"array\")) {\n return false;\n }\n return arr1.toString() == arr2.toString();\n }\n Element.prototype.equal = function (name, b) {\n return eve(\"snap.util.equal\", this, name, b).firstDefined();\n };\n eve.on(\"snap.util.equal\", function (name, b) {\n var A, B, a = Str(this.attr(name) || \"\"),\n el = this;\n if (isNumeric(a) && isNumeric(b)) {\n return {\n from: parseFloat(a),\n to: parseFloat(b),\n f: getNumber\n };\n }\n if (names[name] == \"colour\") {\n A = Snap.color(a);\n B = Snap.color(b);\n return {\n from: [A.r, A.g, A.b, A.opacity],\n to: [B.r, B.g, B.b, B.opacity],\n f: getColour\n };\n }\n if (name == \"viewBox\") {\n A = this.attr(name).vb.split(\" \").map(Number);\n B = b.split(\" \").map(Number);\n return {\n from: A,\n to: B,\n f: getViewBox\n };\n }\n if (name == \"transform\" || name == \"gradientTransform\" || name == \"patternTransform\") {\n if (b instanceof Snap.Matrix) {\n b = b.toTransformString();\n }\n if (!Snap._.rgTransform.test(b)) {\n b = Snap._.svgTransform2string(b);\n }\n return equaliseTransform(a, b, function () {\n return el.getBBox(1);\n });\n }\n if (name == \"d\" || name == \"path\") {\n A = Snap.path.toCubic(a, b);\n return {\n from: path2array(A[0]),\n to: path2array(A[1]),\n f: getPath(A[0])\n };\n }\n if (name == \"points\") {\n A = Str(a).split(Snap._.separator);\n B = Str(b).split(Snap._.separator);\n return {\n from: A,\n to: B,\n f: function (val) { return val; }\n };\n }\n var aUnit = a.match(reUnit),\n bUnit = Str(b).match(reUnit);\n if (aUnit && arrayEqual(aUnit, bUnit)) {\n return {\n from: parseFloat(a),\n to: parseFloat(b),\n f: getUnit(aUnit)\n };\n } else {\n return {\n from: this.asPX(name),\n to: this.asPX(name, b),\n f: getNumber\n };\n }\n });\n});\n\n// Copyright (c) 2013 Adobe Systems Incorporated. All rights reserved.\n// \n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n// \n// http://www.apache.org/licenses/LICENSE-2.0\n// \n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nSnap.plugin(function (Snap, Element, Paper, glob) {\n var elproto = Element.prototype,\n has = \"hasOwnProperty\",\n supportsTouch = \"createTouch\" in glob.doc,\n events = [\n \"click\", \"dblclick\", \"mousedown\", \"mousemove\", \"mouseout\",\n \"mouseover\", \"mouseup\", \"touchstart\", \"touchmove\", \"touchend\",\n \"touchcancel\"\n ],\n touchMap = {\n mousedown: \"touchstart\",\n mousemove: \"touchmove\",\n mouseup: \"touchend\"\n },\n getScroll = function (xy, el) {\n var name = xy == \"y\" ? \"scrollTop\" : \"scrollLeft\",\n doc = el && el.node ? el.node.ownerDocument : glob.doc;\n return doc[name in doc.documentElement ? \"documentElement\" : \"body\"][name];\n },\n preventDefault = function () {\n this.returnValue = false;\n },\n preventTouch = function () {\n return this.originalEvent.preventDefault();\n },\n stopPropagation = function () {\n this.cancelBubble = true;\n },\n stopTouch = function () {\n return this.originalEvent.stopPropagation();\n },\n addEvent = function (obj, type, fn, element) {\n var realName = supportsTouch && touchMap[type] ? touchMap[type] : type,\n f = function (e) {\n var scrollY = getScroll(\"y\", element),\n scrollX = getScroll(\"x\", element);\n if (supportsTouch && touchMap[has](type)) {\n for (var i = 0, ii = e.targetTouches && e.targetTouches.length; i < ii; i++) {\n if (e.targetTouches[i].target == obj || obj.contains(e.targetTouches[i].target)) {\n var olde = e;\n e = e.targetTouches[i];\n e.originalEvent = olde;\n e.preventDefault = preventTouch;\n e.stopPropagation = stopTouch;\n break;\n }\n }\n }\n var x = e.clientX + scrollX,\n y = e.clientY + scrollY;\n return fn.call(element, e, x, y);\n };\n\n if (type !== realName) {\n obj.addEventListener(type, f, false);\n }\n\n obj.addEventListener(realName, f, false);\n\n return function () {\n if (type !== realName) {\n obj.removeEventListener(type, f, false);\n }\n\n obj.removeEventListener(realName, f, false);\n return true;\n };\n },\n drag = [],\n dragMove = function (e) {\n var x = e.clientX,\n y = e.clientY,\n scrollY = getScroll(\"y\"),\n scrollX = getScroll(\"x\"),\n dragi,\n j = drag.length;\n while (j--) {\n dragi = drag[j];\n if (supportsTouch) {\n var i = e.touches && e.touches.length,\n touch;\n while (i--) {\n touch = e.touches[i];\n if (touch.identifier == dragi.el._drag.id || dragi.el.node.contains(touch.target)) {\n x = touch.clientX;\n y = touch.clientY;\n (e.originalEvent ? e.originalEvent : e).preventDefault();\n break;\n }\n }\n } else {\n e.preventDefault();\n }\n var node = dragi.el.node,\n o,\n next = node.nextSibling,\n parent = node.parentNode,\n display = node.style.display;\n // glob.win.opera && parent.removeChild(node);\n // node.style.display = \"none\";\n // o = dragi.el.paper.getElementByPoint(x, y);\n // node.style.display = display;\n // glob.win.opera && (next ? parent.insertBefore(node, next) : parent.appendChild(node));\n // o && eve(\"snap.drag.over.\" + dragi.el.id, dragi.el, o);\n x += scrollX;\n y += scrollY;\n eve(\"snap.drag.move.\" + dragi.el.id, dragi.move_scope || dragi.el, x - dragi.el._drag.x, y - dragi.el._drag.y, x, y, e);\n }\n },\n dragUp = function (e) {\n Snap.unmousemove(dragMove).unmouseup(dragUp);\n var i = drag.length,\n dragi;\n while (i--) {\n dragi = drag[i];\n dragi.el._drag = {};\n eve(\"snap.drag.end.\" + dragi.el.id, dragi.end_scope || dragi.start_scope || dragi.move_scope || dragi.el, e);\n eve.off(\"snap.drag.*.\" + dragi.el.id);\n }\n drag = [];\n };\n /*\\\n * Element.click\n [ method ]\n **\n * Adds a click event handler to the element\n - handler (function) handler for the event\n = (object) @Element\n \\*/\n /*\\\n * Element.unclick\n [ method ]\n **\n * Removes a click event handler from the element\n - handler (function) handler for the event\n = (object) @Element\n \\*/\n \n /*\\\n * Element.dblclick\n [ method ]\n **\n * Adds a double click event handler to the element\n - handler (function) handler for the event\n = (object) @Element\n \\*/\n /*\\\n * Element.undblclick\n [ method ]\n **\n * Removes a double click event handler from the element\n - handler (function) handler for the event\n = (object) @Element\n \\*/\n \n /*\\\n * Element.mousedown\n [ method ]\n **\n * Adds a mousedown event handler to the element\n - handler (function) handler for the event\n = (object) @Element\n \\*/\n /*\\\n * Element.unmousedown\n [ method ]\n **\n * Removes a mousedown event handler from the element\n - handler (function) handler for the event\n = (object) @Element\n \\*/\n \n /*\\\n * Element.mousemove\n [ method ]\n **\n * Adds a mousemove event handler to the element\n - handler (function) handler for the event\n = (object) @Element\n \\*/\n /*\\\n * Element.unmousemove\n [ method ]\n **\n * Removes a mousemove event handler from the element\n - handler (function) handler for the event\n = (object) @Element\n \\*/\n \n /*\\\n * Element.mouseout\n [ method ]\n **\n * Adds a mouseout event handler to the element\n - handler (function) handler for the event\n = (object) @Element\n \\*/\n /*\\\n * Element.unmouseout\n [ method ]\n **\n * Removes a mouseout event handler from the element\n - handler (function) handler for the event\n = (object) @Element\n \\*/\n \n /*\\\n * Element.mouseover\n [ method ]\n **\n * Adds a mouseover event handler to the element\n - handler (function) handler for the event\n = (object) @Element\n \\*/\n /*\\\n * Element.unmouseover\n [ method ]\n **\n * Removes a mouseover event handler from the element\n - handler (function) handler for the event\n = (object) @Element\n \\*/\n \n /*\\\n * Element.mouseup\n [ method ]\n **\n * Adds a mouseup event handler to the element\n - handler (function) handler for the event\n = (object) @Element\n \\*/\n /*\\\n * Element.unmouseup\n [ method ]\n **\n * Removes a mouseup event handler from the element\n - handler (function) handler for the event\n = (object) @Element\n \\*/\n \n /*\\\n * Element.touchstart\n [ method ]\n **\n * Adds a touchstart event handler to the element\n - handler (function) handler for the event\n = (object) @Element\n \\*/\n /*\\\n * Element.untouchstart\n [ method ]\n **\n * Removes a touchstart event handler from the element\n - handler (function) handler for the event\n = (object) @Element\n \\*/\n \n /*\\\n * Element.touchmove\n [ method ]\n **\n * Adds a touchmove event handler to the element\n - handler (function) handler for the event\n = (object) @Element\n \\*/\n /*\\\n * Element.untouchmove\n [ method ]\n **\n * Removes a touchmove event handler from the element\n - handler (function) handler for the event\n = (object) @Element\n \\*/\n \n /*\\\n * Element.touchend\n [ method ]\n **\n * Adds a touchend event handler to the element\n - handler (function) handler for the event\n = (object) @Element\n \\*/\n /*\\\n * Element.untouchend\n [ method ]\n **\n * Removes a touchend event handler from the element\n - handler (function) handler for the event\n = (object) @Element\n \\*/\n \n /*\\\n * Element.touchcancel\n [ method ]\n **\n * Adds a touchcancel event handler to the element\n - handler (function) handler for the event\n = (object) @Element\n \\*/\n /*\\\n * Element.untouchcancel\n [ method ]\n **\n * Removes a touchcancel event handler from the element\n - handler (function) handler for the event\n = (object) @Element\n \\*/\n for (var i = events.length; i--;) {\n (function (eventName) {\n Snap[eventName] = elproto[eventName] = function (fn, scope) {\n if (Snap.is(fn, \"function\")) {\n this.events = this.events || [];\n this.events.push({\n name: eventName,\n f: fn,\n unbind: addEvent(this.node || document, eventName, fn, scope || this)\n });\n } else {\n for (var i = 0, ii = this.events.length; i < ii; i++) if (this.events[i].name == eventName) {\n try {\n this.events[i].f.call(this);\n } catch (e) {}\n }\n }\n return this;\n };\n Snap[\"un\" + eventName] =\n elproto[\"un\" + eventName] = function (fn) {\n var events = this.events || [],\n l = events.length;\n while (l--) if (events[l].name == eventName &&\n (events[l].f == fn || !fn)) {\n events[l].unbind();\n events.splice(l, 1);\n !events.length && delete this.events;\n return this;\n }\n return this;\n };\n })(events[i]);\n }\n /*\\\n * Element.hover\n [ method ]\n **\n * Adds hover event handlers to the element\n - f_in (function) handler for hover in\n - f_out (function) handler for hover out\n - icontext (object) #optional context for hover in handler\n - ocontext (object) #optional context for hover out handler\n = (object) @Element\n \\*/\n elproto.hover = function (f_in, f_out, scope_in, scope_out) {\n return this.mouseover(f_in, scope_in).mouseout(f_out, scope_out || scope_in);\n };\n /*\\\n * Element.unhover\n [ method ]\n **\n * Removes hover event handlers from the element\n - f_in (function) handler for hover in\n - f_out (function) handler for hover out\n = (object) @Element\n \\*/\n elproto.unhover = function (f_in, f_out) {\n return this.unmouseover(f_in).unmouseout(f_out);\n };\n var draggable = [];\n // SIERRA unclear what _context_ refers to for starting, ending, moving the drag gesture.\n // SIERRA Element.drag(): _x position of the mouse_: Where are the x/y values offset from?\n // SIERRA Element.drag(): much of this member's doc appears to be duplicated for some reason.\n // SIERRA Unclear about this sentence: _Additionally following drag events will be triggered: drag.start.<id> on start, drag.end.<id> on end and drag.move.<id> on every move._ Is there a global _drag_ object to which you can assign handlers keyed by an element's ID?\n /*\\\n * Element.drag\n [ method ]\n **\n * Adds event handlers for an element's drag gesture\n **\n - onmove (function) handler for moving\n - onstart (function) handler for drag start\n - onend (function) handler for drag end\n - mcontext (object) #optional context for moving handler\n - scontext (object) #optional context for drag start handler\n - econtext (object) #optional context for drag end handler\n * Additionaly following `drag` events are triggered: `drag.start.<id>` on start, \n * `drag.end.<id>` on end and `drag.move.<id>` on every move. When element is dragged over another element \n * `drag.over.<id>` fires as well.\n *\n * Start event and start handler are called in specified context or in context of the element with following parameters:\n o x (number) x position of the mouse\n o y (number) y position of the mouse\n o event (object) DOM event object\n * Move event and move handler are called in specified context or in context of the element with following parameters:\n o dx (number) shift by x from the start point\n o dy (number) shift by y from the start point\n o x (number) x position of the mouse\n o y (number) y position of the mouse\n o event (object) DOM event object\n * End event and end handler are called in specified context or in context of the element with following parameters:\n o event (object) DOM event object\n = (object) @Element\n \\*/\n elproto.drag = function (onmove, onstart, onend, move_scope, start_scope, end_scope) {\n var el = this;\n if (!arguments.length) {\n var origTransform;\n return el.drag(function (dx, dy) {\n this.attr({\n transform: origTransform + (origTransform ? \"T\" : \"t\") + [dx, dy]\n });\n }, function () {\n origTransform = this.transform().local;\n });\n }\n function start(e, x, y) {\n (e.originalEvent || e).preventDefault();\n el._drag.x = x;\n el._drag.y = y;\n el._drag.id = e.identifier;\n !drag.length && Snap.mousemove(dragMove).mouseup(dragUp);\n drag.push({el: el, move_scope: move_scope, start_scope: start_scope, end_scope: end_scope});\n onstart && eve.on(\"snap.drag.start.\" + el.id, onstart);\n onmove && eve.on(\"snap.drag.move.\" + el.id, onmove);\n onend && eve.on(\"snap.drag.end.\" + el.id, onend);\n eve(\"snap.drag.start.\" + el.id, start_scope || move_scope || el, x, y, e);\n }\n function init(e, x, y) {\n eve(\"snap.draginit.\" + el.id, el, e, x, y);\n }\n eve.on(\"snap.draginit.\" + el.id, start);\n el._drag = {};\n draggable.push({el: el, start: start, init: init});\n el.mousedown(init);\n return el;\n };\n /*\n * Element.onDragOver\n [ method ]\n **\n * Shortcut to assign event handler for `drag.over.<id>` event, where `id` is the element's `id` (see @Element.id)\n - f (function) handler for event, first argument would be the element you are dragging over\n \\*/\n // elproto.onDragOver = function (f) {\n // f ? eve.on(\"snap.drag.over.\" + this.id, f) : eve.unbind(\"snap.drag.over.\" + this.id);\n // };\n /*\\\n * Element.undrag\n [ method ]\n **\n * Removes all drag event handlers from the given element\n \\*/\n elproto.undrag = function () {\n var i = draggable.length;\n while (i--) if (draggable[i].el == this) {\n this.unmousedown(draggable[i].init);\n draggable.splice(i, 1);\n eve.unbind(\"snap.drag.*.\" + this.id);\n eve.unbind(\"snap.draginit.\" + this.id);\n }\n !draggable.length && Snap.unmousemove(dragMove).unmouseup(dragUp);\n return this;\n };\n});\n\n// Copyright (c) 2013 Adobe Systems Incorporated. All rights reserved.\n// \n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n// \n// http://www.apache.org/licenses/LICENSE-2.0\n// \n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nSnap.plugin(function (Snap, Element, Paper, glob) {\n var elproto = Element.prototype,\n pproto = Paper.prototype,\n rgurl = /^\\s*url\\((.+)\\)/,\n Str = String,\n $ = Snap._.$;\n Snap.filter = {};\n /*\\\n * Paper.filter\n [ method ]\n **\n * Creates a `<filter>` element\n **\n - filstr (string) SVG fragment of filter provided as a string\n = (object) @Element\n * Note: It is recommended to use filters embedded into the page inside an empty SVG element.\n > Usage\n | var f = paper.filter('<feGaussianBlur stdDeviation=\"2\"/>'),\n | c = paper.circle(10, 10, 10).attr({\n | filter: f\n | });\n \\*/\n pproto.filter = function (filstr) {\n var paper = this;\n if (paper.type != \"svg\") {\n paper = paper.paper;\n }\n var f = Snap.parse(Str(filstr)),\n id = Snap._.id(),\n width = paper.node.offsetWidth,\n height = paper.node.offsetHeight,\n filter = $(\"filter\");\n $(filter, {\n id: id,\n filterUnits: \"userSpaceOnUse\"\n });\n filter.appendChild(f.node);\n paper.defs.appendChild(filter);\n return new Element(filter);\n };\n \n eve.on(\"snap.util.getattr.filter\", function () {\n eve.stop();\n var p = $(this.node, \"filter\");\n if (p) {\n var match = Str(p).match(rgurl);\n return match && Snap.select(match[1]);\n }\n });\n eve.on(\"snap.util.attr.filter\", function (value) {\n if (value instanceof Element && value.type == \"filter\") {\n eve.stop();\n var id = value.node.id;\n if (!id) {\n $(value.node, {id: value.id});\n id = value.id;\n }\n $(this.node, {\n filter: Snap.url(id)\n });\n }\n if (!value || value == \"none\") {\n eve.stop();\n this.node.removeAttribute(\"filter\");\n }\n });\n /*\\\n * Snap.filter.blur\n [ method ]\n **\n * Returns an SVG markup string for the blur filter\n **\n - x (number) amount of horizontal blur, in pixels\n - y (number) #optional amount of vertical blur, in pixels\n = (string) filter representation\n > Usage\n | var f = paper.filter(Snap.filter.blur(5, 10)),\n | c = paper.circle(10, 10, 10).attr({\n | filter: f\n | });\n \\*/\n Snap.filter.blur = function (x, y) {\n if (x == null) {\n x = 2;\n }\n var def = y == null ? x : [x, y];\n return Snap.format('\\<feGaussianBlur stdDeviation=\"{def}\"/>', {\n def: def\n });\n };\n Snap.filter.blur.toString = function () {\n return this();\n };\n /*\\\n * Snap.filter.shadow\n [ method ]\n **\n * Returns an SVG markup string for the shadow filter\n **\n - dx (number) #optional horizontal shift of the shadow, in pixels\n - dy (number) #optional vertical shift of the shadow, in pixels\n - blur (number) #optional amount of blur\n - color (string) #optional color of the shadow\n - opacity (number) #optional `0..1` opacity of the shadow\n * or\n - dx (number) #optional horizontal shift of the shadow, in pixels\n - dy (number) #optional vertical shift of the shadow, in pixels\n - color (string) #optional color of the shadow\n - opacity (number) #optional `0..1` opacity of the shadow\n * which makes blur default to `4`. Or\n - dx (number) #optional horizontal shift of the shadow, in pixels\n - dy (number) #optional vertical shift of the shadow, in pixels\n - opacity (number) #optional `0..1` opacity of the shadow\n = (string) filter representation\n > Usage\n | var f = paper.filter(Snap.filter.shadow(0, 2, 3)),\n | c = paper.circle(10, 10, 10).attr({\n | filter: f\n | });\n \\*/\n Snap.filter.shadow = function (dx, dy, blur, color, opacity) {\n if (typeof blur == \"string\") {\n color = blur;\n opacity = color;\n blur = 4;\n }\n if (typeof color != \"string\") {\n opacity = color;\n color = \"#000\";\n }\n color = color || \"#000\";\n if (blur == null) {\n blur = 4;\n }\n if (opacity == null) {\n opacity = 1;\n }\n if (dx == null) {\n dx = 0;\n dy = 2;\n }\n if (dy == null) {\n dy = dx;\n }\n color = Snap.color(color);\n return Snap.format('<feGaussianBlur in=\"SourceAlpha\" stdDeviation=\"{blur}\"/><feOffset dx=\"{dx}\" dy=\"{dy}\" result=\"offsetblur\"/><feFlood flood-color=\"{color}\"/><feComposite in2=\"offsetblur\" operator=\"in\"/><feComponentTransfer><feFuncA type=\"linear\" slope=\"{opacity}\"/></feComponentTransfer><feMerge><feMergeNode/><feMergeNode in=\"SourceGraphic\"/></feMerge>', {\n color: color,\n dx: dx,\n dy: dy,\n blur: blur,\n opacity: opacity\n });\n };\n Snap.filter.shadow.toString = function () {\n return this();\n };\n /*\\\n * Snap.filter.grayscale\n [ method ]\n **\n * Returns an SVG markup string for the grayscale filter\n **\n - amount (number) amount of filter (`0..1`)\n = (string) filter representation\n \\*/\n Snap.filter.grayscale = function (amount) {\n if (amount == null) {\n amount = 1;\n }\n return Snap.format('<feColorMatrix type=\"matrix\" values=\"{a} {b} {c} 0 0 {d} {e} {f} 0 0 {g} {b} {h} 0 0 0 0 0 1 0\"/>', {\n a: 0.2126 + 0.7874 * (1 - amount),\n b: 0.7152 - 0.7152 * (1 - amount),\n c: 0.0722 - 0.0722 * (1 - amount),\n d: 0.2126 - 0.2126 * (1 - amount),\n e: 0.7152 + 0.2848 * (1 - amount),\n f: 0.0722 - 0.0722 * (1 - amount),\n g: 0.2126 - 0.2126 * (1 - amount),\n h: 0.0722 + 0.9278 * (1 - amount)\n });\n };\n Snap.filter.grayscale.toString = function () {\n return this();\n };\n /*\\\n * Snap.filter.sepia\n [ method ]\n **\n * Returns an SVG markup string for the sepia filter\n **\n - amount (number) amount of filter (`0..1`)\n = (string) filter representation\n \\*/\n Snap.filter.sepia = function (amount) {\n if (amount == null) {\n amount = 1;\n }\n return Snap.format('<feColorMatrix type=\"matrix\" values=\"{a} {b} {c} 0 0 {d} {e} {f} 0 0 {g} {h} {i} 0 0 0 0 0 1 0\"/>', {\n a: 0.393 + 0.607 * (1 - amount),\n b: 0.769 - 0.769 * (1 - amount),\n c: 0.189 - 0.189 * (1 - amount),\n d: 0.349 - 0.349 * (1 - amount),\n e: 0.686 + 0.314 * (1 - amount),\n f: 0.168 - 0.168 * (1 - amount),\n g: 0.272 - 0.272 * (1 - amount),\n h: 0.534 - 0.534 * (1 - amount),\n i: 0.131 + 0.869 * (1 - amount)\n });\n };\n Snap.filter.sepia.toString = function () {\n return this();\n };\n /*\\\n * Snap.filter.saturate\n [ method ]\n **\n * Returns an SVG markup string for the saturate filter\n **\n - amount (number) amount of filter (`0..1`)\n = (string) filter representation\n \\*/\n Snap.filter.saturate = function (amount) {\n if (amount == null) {\n amount = 1;\n }\n return Snap.format('<feColorMatrix type=\"saturate\" values=\"{amount}\"/>', {\n amount: 1 - amount\n });\n };\n Snap.filter.saturate.toString = function () {\n return this();\n };\n /*\\\n * Snap.filter.hueRotate\n [ method ]\n **\n * Returns an SVG markup string for the hue-rotate filter\n **\n - angle (number) angle of rotation\n = (string) filter representation\n \\*/\n Snap.filter.hueRotate = function (angle) {\n angle = angle || 0;\n return Snap.format('<feColorMatrix type=\"hueRotate\" values=\"{angle}\"/>', {\n angle: angle\n });\n };\n Snap.filter.hueRotate.toString = function () {\n return this();\n };\n /*\\\n * Snap.filter.invert\n [ method ]\n **\n * Returns an SVG markup string for the invert filter\n **\n - amount (number) amount of filter (`0..1`)\n = (string) filter representation\n \\*/\n Snap.filter.invert = function (amount) {\n if (amount == null) {\n amount = 1;\n }\n// <feColorMatrix type=\"matrix\" values=\"-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0\" color-interpolation-filters=\"sRGB\"/>\n return Snap.format('<feComponentTransfer><feFuncR type=\"table\" tableValues=\"{amount} {amount2}\"/><feFuncG type=\"table\" tableValues=\"{amount} {amount2}\"/><feFuncB type=\"table\" tableValues=\"{amount} {amount2}\"/></feComponentTransfer>', {\n amount: amount,\n amount2: 1 - amount\n });\n };\n Snap.filter.invert.toString = function () {\n return this();\n };\n /*\\\n * Snap.filter.brightness\n [ method ]\n **\n * Returns an SVG markup string for the brightness filter\n **\n - amount (number) amount of filter (`0..1`)\n = (string) filter representation\n \\*/\n Snap.filter.brightness = function (amount) {\n if (amount == null) {\n amount = 1;\n }\n return Snap.format('<feComponentTransfer><feFuncR type=\"linear\" slope=\"{amount}\"/><feFuncG type=\"linear\" slope=\"{amount}\"/><feFuncB type=\"linear\" slope=\"{amount}\"/></feComponentTransfer>', {\n amount: amount\n });\n };\n Snap.filter.brightness.toString = function () {\n return this();\n };\n /*\\\n * Snap.filter.contrast\n [ method ]\n **\n * Returns an SVG markup string for the contrast filter\n **\n - amount (number) amount of filter (`0..1`)\n = (string) filter representation\n \\*/\n Snap.filter.contrast = function (amount) {\n if (amount == null) {\n amount = 1;\n }\n return Snap.format('<feComponentTransfer><feFuncR type=\"linear\" slope=\"{amount}\" intercept=\"{amount2}\"/><feFuncG type=\"linear\" slope=\"{amount}\" intercept=\"{amount2}\"/><feFuncB type=\"linear\" slope=\"{amount}\" intercept=\"{amount2}\"/></feComponentTransfer>', {\n amount: amount,\n amount2: .5 - amount / 2\n });\n };\n Snap.filter.contrast.toString = function () {\n return this();\n };\n});\n\n// Copyright (c) 2014 Adobe Systems Incorporated. All rights reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nSnap.plugin(function (Snap, Element, Paper, glob, Fragment) {\n var box = Snap._.box,\n is = Snap.is,\n firstLetter = /^[^a-z]*([tbmlrc])/i,\n toString = function () {\n return \"T\" + this.dx + \",\" + this.dy;\n };\n /*\\\n * Element.getAlign\n [ method ]\n **\n * Returns shift needed to align the element relatively to given element.\n * If no elements specified, parent `<svg>` container will be used.\n - el (object) @optional alignment element\n - way (string) one of six values: `\"top\"`, `\"middle\"`, `\"bottom\"`, `\"left\"`, `\"center\"`, `\"right\"`\n = (object|string) Object in format `{dx: , dy: }` also has a string representation as a transformation string\n > Usage\n | el.transform(el.getAlign(el2, \"top\"));\n * or\n | var dy = el.getAlign(el2, \"top\").dy;\n \\*/\n Element.prototype.getAlign = function (el, way) {\n if (way == null && is(el, \"string\")) {\n way = el;\n el = null;\n }\n el = el || this.paper;\n var bx = el.getBBox ? el.getBBox() : box(el),\n bb = this.getBBox(),\n out = {};\n way = way && way.match(firstLetter);\n way = way ? way[1].toLowerCase() : \"c\";\n switch (way) {\n case \"t\":\n out.dx = 0;\n out.dy = bx.y - bb.y;\n break;\n case \"b\":\n out.dx = 0;\n out.dy = bx.y2 - bb.y2;\n break;\n case \"m\":\n out.dx = 0;\n out.dy = bx.cy - bb.cy;\n break;\n case \"l\":\n out.dx = bx.x - bb.x;\n out.dy = 0;\n break;\n case \"r\":\n out.dx = bx.x2 - bb.x2;\n out.dy = 0;\n break;\n default:\n out.dx = bx.cx - bb.cx;\n out.dy = 0;\n break;\n }\n out.toString = toString;\n return out;\n };\n /*\\\n * Element.align\n [ method ]\n **\n * Aligns the element relatively to given one via transformation.\n * If no elements specified, parent `<svg>` container will be used.\n - el (object) @optional alignment element\n - way (string) one of six values: `\"top\"`, `\"middle\"`, `\"bottom\"`, `\"left\"`, `\"center\"`, `\"right\"`\n = (object) this element\n > Usage\n | el.align(el2, \"top\");\n * or\n | el.align(\"middle\");\n \\*/\n Element.prototype.align = function (el, way) {\n return this.transform(\"...\" + this.getAlign(el, way));\n };\n});\n\nreturn Snap;\n}));\n}.call(window));\n\n\n/** WEBPACK FOOTER **\n ** ./~/snapsvg/dist/snap.svg.js\n **/","/*!\n * jQuery JavaScript Library v3.0.0\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2016-06-09T18:02Z\n */\n( function( global, factory ) {\n\n\t\"use strict\";\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket #14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n}( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n// enough that all such attempts are guarded in a try block.\n\"use strict\";\n\nvar arr = [];\n\nvar document = window.document;\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar concat = arr.concat;\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\nvar support = {};\n\n\n\n\tfunction DOMEval( code, doc ) {\n\t\tdoc = doc || document;\n\n\t\tvar script = doc.createElement( \"script\" );\n\n\t\tscript.text = code;\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n\n\nvar\n\tversion = \"3.0.0\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t},\n\n\t// Support: Android <=4.0 only\n\t// Make sure we trim BOM and NBSP\n\trtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g,\n\n\t// Matches dashed string for camelizing\n\trmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g,\n\n\t// Used by jQuery.camelCase as callback to replace()\n\tfcamelCase = function( all, letter ) {\n\t\treturn letter.toUpperCase();\n\t};\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\t\treturn num != null ?\n\n\t\t\t// Return just the one element from the set\n\t\t\t( num < 0 ? this[ num + this.length ] : this[ num ] ) :\n\n\t\t\t// Return all the elements in a clean array\n\t\t\tslice.call( this );\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !jQuery.isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tsrc = target[ name ];\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = jQuery.isArray( copy ) ) ) ) {\n\n\t\t\t\t\tif ( copyIsArray ) {\n\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\tclone = src && jQuery.isArray( src ) ? src : [];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src && jQuery.isPlainObject( src ) ? src : {};\n\t\t\t\t\t}\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisFunction: function( obj ) {\n\t\treturn jQuery.type( obj ) === \"function\";\n\t},\n\n\tisArray: Array.isArray,\n\n\tisWindow: function( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t},\n\n\tisNumeric: function( obj ) {\n\n\t\t// As of jQuery 3.0, isNumeric is limited to\n\t\t// strings and numbers (primitives or objects)\n\t\t// that can be coerced to finite numbers (gh-2662)\n\t\tvar type = jQuery.type( obj );\n\t\treturn ( type === \"number\" || type === \"string\" ) &&\n\n\t\t\t// parseFloat NaNs numeric-cast false positives (\"\")\n\t\t\t// ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n\t\t\t// subtraction forces infinities to NaN\n\t\t\t!isNaN( obj - parseFloat( obj ) );\n\t},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\ttype: function( obj ) {\n\t\tif ( obj == null ) {\n\t\t\treturn obj + \"\";\n\t\t}\n\n\t\t// Support: Android <=2.3 only (functionish RegExp)\n\t\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\t\ttypeof obj;\n\t},\n\n\t// Evaluates a script in a global context\n\tglobalEval: function( code ) {\n\t\tDOMEval( code );\n\t},\n\n\t// Convert dashed to camelCase; used by the css and data modules\n\t// Support: IE <=9 - 11, Edge 12 - 13\n\t// Microsoft forgot to hump their vendor prefix (#9572)\n\tcamelCase: function( string ) {\n\t\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n\t},\n\n\tnodeName: function( elem, name ) {\n\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// Support: Android <=4.0 only\n\ttrim: function( text ) {\n\t\treturn text == null ?\n\t\t\t\"\" :\n\t\t\t( text + \"\" ).replace( rtrim, \"\" );\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// Bind a function to a context, optionally partially applying any\n\t// arguments.\n\tproxy: function( fn, context ) {\n\t\tvar tmp, args, proxy;\n\n\t\tif ( typeof context === \"string\" ) {\n\t\t\ttmp = fn[ context ];\n\t\t\tcontext = fn;\n\t\t\tfn = tmp;\n\t\t}\n\n\t\t// Quick check to determine if target is callable, in the spec\n\t\t// this throws a TypeError, but we will just return undefined.\n\t\tif ( !jQuery.isFunction( fn ) ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\t// Simulated bind\n\t\targs = slice.call( arguments, 2 );\n\t\tproxy = function() {\n\t\t\treturn fn.apply( context || this, args.concat( slice.call( arguments ) ) );\n\t\t};\n\n\t\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\t\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n\n\t\treturn proxy;\n\t},\n\n\tnow: Date.now,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\n// JSHint would error on this code due to the Symbol not being defined in ES5.\n// Defining this global in .jshintrc would create a danger of using the global\n// unguarded in another place, it seems safer to just disable JSHint for these\n// three lines.\n/* jshint ignore: start */\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n/* jshint ignore: end */\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\nfunction( i, name ) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = jQuery.type( obj );\n\n\tif ( type === \"function\" || jQuery.isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\nvar Sizzle =\n/*!\n * Sizzle CSS Selector Engine v2.3.0\n * https://sizzlejs.com/\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: 2016-01-04\n */\n(function( window ) {\n\nvar i,\n\tsupport,\n\tExpr,\n\tgetText,\n\tisXML,\n\ttokenize,\n\tcompile,\n\tselect,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + 1 * new Date(),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// Instance methods\n\thasOwn = ({}).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpush_native = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\t// Use a stripped-down indexOf as it's faster than native\n\t// https://jsperf.com/thor-indexof-vs-for/5\n\tindexOf = function( list, elem ) {\n\t\tvar i = 0,\n\t\t\tlen = list.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( list[i] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\n\t// http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier\n\tidentifier = \"(?:\\\\\\\\.|[\\\\w-]|[^\\0-\\\\xa0])+\",\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\t\t// \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" + whitespace +\n\t\t\"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace + \"*\" ),\n\n\trattributeQuotes = new RegExp( \"=\" + whitespace + \"*([^\\\\]'\\\"]*?)\" + whitespace + \"*\\\\]\", \"g\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + identifier + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" + whitespace +\n\t\t\t\"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" + whitespace +\n\t\t\t\"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace + \"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" +\n\t\t\twhitespace + \"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\n\t// CSS escapes\n\t// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\([\\\\da-f]{1,6}\" + whitespace + \"?|(\" + whitespace + \")|.)\", \"ig\" ),\n\tfunescape = function( _, escaped, escapedWhitespace ) {\n\t\tvar high = \"0x\" + escaped - 0x10000;\n\t\t// NaN means non-codepoint\n\t\t// Support: Firefox<24\n\t\t// Workaround erroneous numeric interpretation of +\"0x\"\n\t\treturn high !== high || escapedWhitespace ?\n\t\t\tescaped :\n\t\t\thigh < 0 ?\n\t\t\t\t// BMP codepoint\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\t// Supplemental Plane codepoint (surrogate pair)\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// CSS string/identifier serialization\n\t// https://drafts.csswg.org/cssom/#common-serializing-idioms\n\trcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\x80-\\uFFFF\\w-]/g,\n\tfcssescape = function( ch, asCodePoint ) {\n\t\tif ( asCodePoint ) {\n\n\t\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\t\tif ( ch === \"\\0\" ) {\n\t\t\t\treturn \"\\uFFFD\";\n\t\t\t}\n\n\t\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\t\treturn ch.slice( 0, -1 ) + \"\\\\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t\t}\n\n\t\t// Other potentially-special ASCII characters get backslash-escaped\n\t\treturn \"\\\\\" + ch;\n\t},\n\n\t// Used for iframes\n\t// See setDocument()\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tdisabledAncestor = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true;\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t(arr = slice.call( preferredDoc.childNodes )),\n\t\tpreferredDoc.childNodes\n\t);\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpush_native.apply( target, slice.call(els) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( (target[j++] = els[i++]) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\n\t\tif ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {\n\t\t\tsetDocument( context );\n\t\t}\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( (m = match[1]) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( (elem = context.getElementById( m )) ) {\n\n\t\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && (elem = newContext.getElementById( m )) &&\n\t\t\t\t\t\t\tcontains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[2] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( (m = match[3]) && support.getElementsByClassName &&\n\t\t\t\t\tcontext.getElementsByClassName ) {\n\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( support.qsa &&\n\t\t\t\t!compilerCache[ selector + \" \" ] &&\n\t\t\t\t(!rbuggyQSA || !rbuggyQSA.test( selector )) ) {\n\n\t\t\t\tif ( nodeType !== 1 ) {\n\t\t\t\t\tnewContext = context;\n\t\t\t\t\tnewSelector = selector;\n\n\t\t\t\t// qSA looks outside Element context, which is not what we want\n\t\t\t\t// Thanks to Andrew Dupont for this workaround technique\n\t\t\t\t// Support: IE <=8\n\t\t\t\t// Exclude object elements\n\t\t\t\t} else if ( context.nodeName.toLowerCase() !== \"object\" ) {\n\n\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\tif ( (nid = context.getAttribute( \"id\" )) ) {\n\t\t\t\t\t\tnid = nid.replace( rcssescape, fcssescape );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcontext.setAttribute( \"id\", (nid = expando) );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[i] = \"#\" + nid + \" \" + toSelector( groups[i] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\t\t\t\t}\n\n\t\t\t\tif ( newSelector ) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn (cache[ key + \" \" ] = value);\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\nfunction assert( fn ) {\n\tvar el = document.createElement(\"fieldset\");\n\n\ttry {\n\t\treturn !!fn( el );\n\t} catch (e) {\n\t\treturn false;\n\t} finally {\n\t\t// Remove from its parent by default\n\t\tif ( el.parentNode ) {\n\t\t\tel.parentNode.removeChild( el );\n\t\t}\n\t\t// release memory in IE\n\t\tel = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split(\"|\"),\n\t\ti = arr.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[i] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\ta.sourceIndex - b.sourceIndex;\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( (cur = cur.nextSibling) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn (name === \"input\" || name === \"button\") && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\nfunction createDisabledPseudo( disabled ) {\n\t// Known :disabled false positives:\n\t// IE: *[disabled]:not(button, input, select, textarea, optgroup, option, menuitem, fieldset)\n\t// not IE: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Check form elements and option elements for explicit disabling\n\t\treturn \"label\" in elem && elem.disabled === disabled ||\n\t\t\t\"form\" in elem && elem.disabled === disabled ||\n\n\t\t\t// Check non-disabled form elements for fieldset[disabled] ancestors\n\t\t\t\"form\" in elem && elem.disabled === false && (\n\t\t\t\t// Support: IE6-11+\n\t\t\t\t// Ancestry is covered for us\n\t\t\t\telem.isDisabled === disabled ||\n\n\t\t\t\t// Otherwise, assume any non-<option> under fieldset[disabled] is disabled\n\t\t\t\t/* jshint -W018 */\n\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\t(\"label\" in elem || !disabledAncestor( elem )) !== disabled\n\t\t\t);\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction(function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction(function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ (j = matchIndexes[i]) ] ) {\n\t\t\t\t\tseed[j] = !(matches[j] = seed[j]);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\nisXML = Sizzle.isXML = function( elem ) {\n\t// documentElement is verified for cases where it doesn't yet exist\n\t// (such as loading iframes in IE - #4833)\n\tvar documentElement = elem && (elem.ownerDocument || elem).documentElement;\n\treturn documentElement ? documentElement.nodeName !== \"HTML\" : false;\n};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar hasCompare, subWindow,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\tif ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocElem = document.documentElement;\n\tdocumentIsHTML = !isXML( document );\n\n\t// Support: IE 9-11, Edge\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\n\tif ( preferredDoc !== document &&\n\t\t(subWindow = document.defaultView) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 11, Edge\n\t\tif ( subWindow.addEventListener ) {\n\t\t\tsubWindow.addEventListener( \"unload\", unloadHandler, false );\n\n\t\t// Support: IE 9 - 10 only\n\t\t} else if ( subWindow.attachEvent ) {\n\t\t\tsubWindow.attachEvent( \"onunload\", unloadHandler );\n\t\t}\n\t}\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties\n\t// (excepting IE8 booleans)\n\tsupport.attributes = assert(function( el ) {\n\t\tel.className = \"i\";\n\t\treturn !el.getAttribute(\"className\");\n\t});\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert(function( el ) {\n\t\tel.appendChild( document.createComment(\"\") );\n\t\treturn !el.getElementsByTagName(\"*\").length;\n\t});\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( document.getElementsByClassName );\n\n\t// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programmatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert(function( el ) {\n\t\tdocElem.appendChild( el ).id = expando;\n\t\treturn !document.getElementsByName || !document.getElementsByName( expando ).length;\n\t});\n\n\t// ID find and filter\n\tif ( support.getById ) {\n\t\tExpr.find[\"ID\"] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar m = context.getElementById( id );\n\t\t\t\treturn m ? [ m ] : [];\n\t\t\t}\n\t\t};\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute(\"id\") === attrId;\n\t\t\t};\n\t\t};\n\t} else {\n\t\t// Support: IE6/7\n\t\t// getElementById is not reliable as a find shortcut\n\t\tdelete Expr.find[\"ID\"];\n\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode(\"id\");\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find[\"TAG\"] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t// DocumentFragment nodes don't have gEBTN\n\t\t\t} else if ( support.qsa ) {\n\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t}\n\t\t} :\n\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( (elem = results[i++]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find[\"CLASS\"] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See https://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( (support.qsa = rnative.test( document.querySelectorAll )) ) {\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert(function( el ) {\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// https://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( el ).innerHTML = \"<a id='\" + expando + \"'></a>\" +\n\t\t\t\t\"<select id='\" + expando + \"-\\r\\\\' msallowcapture=''>\" +\n\t\t\t\t\"<option selected=''></option></select>\";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t\t\t// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( el.querySelectorAll(\"[msallowcapture^='']\").length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !el.querySelectorAll(\"[selected]\").length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n\t\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push(\"~=\");\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !el.querySelectorAll(\":checked\").length ) {\n\t\t\t\trbuggyQSA.push(\":checked\");\n\t\t\t}\n\n\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push(\".#.+[+~]\");\n\t\t\t}\n\t\t});\n\n\t\tassert(function( el ) {\n\t\t\tel.innerHTML = \"<a href='' disabled='disabled'></a>\" +\n\t\t\t\t\"<select disabled='disabled'><option/></select>\";\n\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = document.createElement(\"input\");\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( el.querySelectorAll(\"[name=d]\").length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( el.querySelectorAll(\":enabled\").length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: IE9-11+\n\t\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t\tdocElem.appendChild( el ).disabled = true;\n\t\t\tif ( el.querySelectorAll(\":disabled\").length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tel.querySelectorAll(\"*,:x\");\n\t\t\trbuggyQSA.push(\",.*:\");\n\t\t});\n\t}\n\n\tif ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector) )) ) {\n\n\t\tassert(function( el ) {\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( el, \"*\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( el, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t});\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join(\"|\") );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join(\"|\") );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully self-exclusive\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t));\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( (b = b.parentNode) ) {\n\t\t\t\t\tif ( b === a ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\tcompare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\tif ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tif ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\n\t\t\treturn a === document ? -1 :\n\t\t\t\tb === document ? 1 :\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[i] === bp[i] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[i], bp[i] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\tap[i] === preferredDoc ? -1 :\n\t\t\tbp[i] === preferredDoc ? 1 :\n\t\t\t0;\n\t};\n\n\treturn document;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\t// Make sure that attribute selectors are quoted\n\texpr = expr.replace( rattributeQuotes, \"='$1']\" );\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t!compilerCache[ expr + \" \" ] &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t// fragment in IE 9\n\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch (e) {}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\t// Set document vars if needed\n\tif ( ( context.ownerDocument || context ) !== document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t(val = elem.getAttributeNode(name)) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.escape = function( sel ) {\n\treturn (sel + \"\").replace( rcssescape, fcssescape );\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( (elem = results[i++]) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( (node = elem[i++]) ) {\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[1] = match[1].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[3] = ( match[3] || match[4] || match[5] || \"\" ).replace( runescape, funescape );\n\n\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\tmatch[3] = \" \" + match[3] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[1] = match[1].toLowerCase();\n\n\t\t\tif ( match[1].slice( 0, 3 ) === \"nth\" ) {\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[3] ) {\n\t\t\t\t\tSizzle.error( match[0] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === \"even\" || match[3] === \"odd\" ) );\n\t\t\t\tmatch[5] = +( ( match[7] + match[8] ) || match[3] === \"odd\" );\n\n\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[3] ) {\n\t\t\t\tSizzle.error( match[0] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[6] && match[2];\n\n\t\t\tif ( matchExpr[\"CHILD\"].test( match[0] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[3] ) {\n\t\t\t\tmatch[2] = match[4] || match[5] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t(excess = tokenize( unquoted, true )) &&\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t(excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[0] = match[0].slice( 0, excess );\n\t\t\t\tmatch[2] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() { return true; } :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t(pattern = new RegExp( \"(^|\" + whitespace + \")\" + className + \"(\" + whitespace + \"|$)\" )) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test( typeof elem.className === \"string\" && elem.className || typeof elem.getAttribute !== \"undefined\" && elem.getAttribute(\"class\") || \"\" );\n\t\t\t\t});\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, what, argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tvar cache, uniqueCache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( (node = node[ dir ]) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\n\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\tnode = parent;\n\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction(function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf( seed, matched[i] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[i] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction(function( selector ) {\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction(function( seed, matches, context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = unmatched[i]) ) {\n\t\t\t\t\t\t\tseed[i] = !(matches[i] = elem);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}) :\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tinput[0] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\t\t\t\t\t// Don't keep the element (issue #299)\n\t\t\t\t\tinput[0] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t}),\n\n\t\t\"has\": markFunction(function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t}),\n\n\t\t\"contains\": markFunction(function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t}),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": markFunction( function( lang ) {\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test(lang || \"\") ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( (elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute(\"xml:lang\") || elem.getAttribute(\"lang\")) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( (elem = elem.parentNode) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t}),\n\n\t\t// Miscellaneous\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": createDisabledPseudo( false ),\n\t\t\"disabled\": createDisabledPseudo( true ),\n\n\t\t\"checked\": function( elem ) {\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn (nodeName === \"input\" && !!elem.checked) || (nodeName === \"option\" && !!elem.selected);\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\t\"empty\": function( elem ) {\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[\"empty\"]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t// Support: IE<8\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n\t\t\t\t( (attr = elem.getAttribute(\"type\")) == null || attr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\t\"first\": createPositionalPseudo(function() {\n\t\t\treturn [ 0 ];\n\t\t}),\n\n\t\t\"last\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t}),\n\n\t\t\"eq\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t}),\n\n\t\t\"even\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"odd\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"lt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"gt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t})\n\t}\n};\n\nExpr.pseudos[\"nth\"] = Expr.pseudos[\"eq\"];\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || (match = rcomma.exec( soFar )) ) {\n\t\t\tif ( match ) {\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[0].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( (tokens = []) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( (match = rcombinators.exec( soFar )) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push({\n\t\t\t\tvalue: matched,\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[0].replace( rtrim, \" \" )\n\t\t\t});\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||\n\t\t\t\t(match = preFilters[ type ]( match ))) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push({\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t});\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n};\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[i].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, uniqueCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || (elem[ expando ] = {});\n\n\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\tuniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {});\n\n\t\t\t\t\t\tif ( skip && skip === elem.nodeName.toLowerCase() ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( (oldCache = uniqueCache[ key ]) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn (newCache[ 2 ] = oldCache[ 2 ]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\tuniqueCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[i]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[0];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[i], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (elem = unmatched[i]) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction(function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts( selector || \"*\", context.nodeType ? [ context ] : context, [] ),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( (elem = temp[i]) ) {\n\t\t\t\t\tmatcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = matcherOut[i]) ) {\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( (matcherIn[i] = elem) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, (matcherOut = []), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( (elem = matcherOut[i]) &&\n\t\t\t\t\t\t(temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {\n\n\t\t\t\t\t\tseed[temp] = !(results[temp] = elem);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[0].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[\" \"],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t(checkContext = context).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\t\t\t// Avoid hanging onto element (issue #299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (matcher = Expr.relative[ tokens[i].type ]) ) {\n\t\t\tmatchers = [ addCombinator(elementMatcher( matchers ), matcher) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[j].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\t\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\t\ttokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" })\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( (tokens = tokens.slice( j )) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find[\"TAG\"]( \"*\", outermost ),\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\t\t\t\toutermostContext = context === document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: <number>) matching elements by id\n\t\t\tfor ( ; i !== len && (elem = elems[i]) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\tif ( !context && elem.ownerDocument !== document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( (matcher = elementMatchers[j++]) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( (elem = !matcher && elem) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( (matcher = setMatchers[j++]) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !(unmatched[i] || setMatched[i]) ) {\n\t\t\t\t\t\t\t\tsetMatched[i] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[i] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with Sizzle's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( (selector = compiled.selector || selector) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[0] = match[0].slice( 0 );\n\t\tif ( tokens.length > 2 && (token = tokens[0]).type === \"ID\" &&\n\t\t\t\tsupport.getById && context.nodeType === 9 && documentIsHTML &&\n\t\t\t\tExpr.relative[ tokens[1].type ] ) {\n\n\t\t\tcontext = ( Expr.find[\"ID\"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr[\"needsContext\"].test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[i];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ (type = token.type) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( (find = Expr.find[ type ]) ) {\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( (seed = find(\n\t\t\t\t\ttoken.matches[0].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context\n\t\t\t\t)) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n};\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split(\"\").sort( sortOrder ).join(\"\") === expando;\n\n// Support: Chrome 14-35+\n// Always assume duplicates if they aren't passed to the comparison function\nsupport.detectDuplicates = !!hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert(function( el ) {\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement(\"fieldset\") ) & 1;\n});\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert(function( el ) {\n\tel.innerHTML = \"<a href='#'></a>\";\n\treturn el.firstChild.getAttribute(\"href\") === \"#\" ;\n}) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute(\"value\")\nif ( !support.attributes || !assert(function( el ) {\n\tel.innerHTML = \"<input/>\";\n\tel.firstChild.setAttribute( \"value\", \"\" );\n\treturn el.firstChild.getAttribute( \"value\" ) === \"\";\n}) ) {\n\taddHandle( \"value\", function( elem, name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert(function( el ) {\n\treturn el.getAttribute(\"disabled\") == null;\n}) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t\t(val = elem.getAttributeNode( name )) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\tnull;\n\t\t}\n\t});\n}\n\nreturn Sizzle;\n\n})( window );\n\n\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\njQuery.escapeSelector = Sizzle.escape;\n\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\nvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n\n\n\nvar risSimple = /^.[^:#\\[\\.,]*$/;\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( jQuery.isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\t/* jshint -W018 */\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\n\t}\n\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\n\t}\n\n\tif ( typeof qualifier === \"string\" ) {\n\t\tif ( risSimple.test( qualifier ) ) {\n\t\t\treturn jQuery.filter( qualifier, elements, not );\n\t\t}\n\n\t\tqualifier = jQuery.filter( qualifier, elements );\n\t}\n\n\treturn jQuery.grep( elements, function( elem ) {\n\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not && elem.nodeType === 1;\n\t} );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\treturn elems.length === 1 && elem.nodeType === 1 ?\n\t\tjQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] :\n\t\tjQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\t\treturn elem.nodeType === 1;\n\t\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)\n\t// Strict HTML recognition (#11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( jQuery.isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( jQuery.isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\treturn elem.contentDocument || jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnotwhite = ( /\\S+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnotwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( jQuery.isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && jQuery.type( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && jQuery.isFunction( ( method = value.promise ) ) ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && jQuery.isFunction( ( method = value.then ) ) ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Support: Android 4.0 only\n\t\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\t\tresolve.call( undefined, value );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( /*jshint -W002 */ value ) {\n\n\t\t// Support: Android 4.0 only\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\treject.call( undefined, value );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\t\"catch\": function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = jQuery.isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && jQuery.isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( jQuery.isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.stackTrace );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the stack, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.stackTrace = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tjQuery.isFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tjQuery.isFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tjQuery.isFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the master Deferred\n\t\t\tmaster = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tmaster.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( master.state() === \"pending\" ||\n\t\t\t\tjQuery.isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn master.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), master.reject );\n\t\t}\n\n\t\treturn master.promise();\n\t}\n} );\n\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\njQuery.Deferred.exceptionHook = function( error, stack ) {\n\n\t// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message, error.stack, stack );\n\t}\n};\n\n\n\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList.then( fn );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Hold (or release) the ready event\n\tholdReady: function( hold ) {\n\t\tif ( hold ) {\n\t\t\tjQuery.readyWait++;\n\t\t} else {\n\t\t\tjQuery.ready( true );\n\t\t}\n\t},\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\n// Support: IE <=9 - 10 only\n// Older IE sometimes signals \"interactive\" too soon\nif ( document.readyState === \"complete\" ||\n\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( jQuery.type( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !jQuery.isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\tvalue :\n\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn chainable ?\n\t\telems :\n\n\t\t// Gets\n\t\tbulk ?\n\t\t\tfn.call( elems ) :\n\t\t\tlen ? fn( elems[ 0 ], key ) : emptyGet;\n};\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t// - Node\n\t// - Node.ELEMENT_NODE\n\t// - Node.DOCUMENT_NODE\n\t// - Object\n\t// - Any\n\t/* jshint -W018 */\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see #8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ jQuery.camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ jQuery.camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ jQuery.camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t// 1. No key was specified\n\t\t// 2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t// 1. The entire cache object\n\t\t// 2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t// 1. An object of properties\n\t\t// 2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( jQuery.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( jQuery.camelCase );\n\t\t\t} else {\n\t\t\t\tkey = jQuery.camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnotwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = data === \"true\" ? true :\n\t\t\t\t\tdata === \"false\" ? false :\n\t\t\t\t\tdata === \"null\" ? null :\n\n\t\t\t\t\t// Only convert to a number if it doesn't change the string\n\t\t\t\t\t+data + \"\" === data ? +data :\n\t\t\t\t\trbrace.test( data ) ? JSON.parse( data ) :\n\t\t\t\t\tdata;\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11 only\n\t\t\t\t\t\t// The attrs elements can be null (#14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = jQuery.camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || jQuery.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar isHiddenWithinTree = function( elem, el ) {\n\n\t\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\n\t\t// Inline style trumps all\n\t\treturn elem.style.display === \"none\" ||\n\t\t\telem.style.display === \"\" &&\n\n\t\t\t// Otherwise, check computed style\n\t\t\t// Support: Firefox <=43 - 45\n\t\t\t// Disconnected elements can have computed display: none, so first confirm that elem is\n\t\t\t// in the document.\n\t\t\tjQuery.contains( elem.ownerDocument, elem ) &&\n\n\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\n\t};\n\nvar swap = function( elem, options, callback, args ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.apply( elem, args || [] );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted,\n\t\tscale = 1,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() { return tween.cur(); } :\n\t\t\tfunction() { return jQuery.css( elem, prop, \"\" ); },\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = ( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\tdo {\n\n\t\t\t// If previous iteration zeroed out, double until we get *something*.\n\t\t\t// Use string for doubling so we don't accidentally see scale as unchanged below\n\t\t\tscale = scale || \".5\";\n\n\t\t\t// Adjust and apply\n\t\t\tinitialInUnit = initialInUnit / scale;\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Update scale, tolerating zero or NaN from tween.cur()\n\t\t// Break the loop if scale is unchanged or perfect, or if we've just had enough.\n\t\t} while (\n\t\t\tscale !== ( scale = currentValue() / initial ) && scale !== 1 && --maxIterations\n\t\t);\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) ),\n\tdisplay = jQuery.css( temp, \"display\" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === \"none\" ) {\n\t\tdisplay = \"block\";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== \"none\" ) {\n\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t// Remember what we're overwriting\n\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]+)/i );\n\nvar rscriptType = ( /^$|\\/(?:java|ecma)script/i );\n\n\n\n// We have to close these tags to support XHTML (#13200)\nvar wrapMap = {\n\n\t// Support: IE <=9 only\n\toption: [ 1, \"<select multiple='multiple'>\", \"</select>\" ],\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting <tbody> or other required elements.\n\tthead: [ 1, \"<table>\", \"</table>\" ],\n\tcol: [ 2, \"<table><colgroup>\", \"</colgroup></table>\" ],\n\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\n// Support: IE <=9 only\nwrapMap.optgroup = wrapMap.option;\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (#15151)\n\tvar ret = typeof context.getElementsByTagName !== \"undefined\" ?\n\t\t\tcontext.getElementsByTagName( tag || \"*\" ) :\n\t\t\ttypeof context.querySelectorAll !== \"undefined\" ?\n\t\t\t\tcontext.querySelectorAll( tag || \"*\" ) :\n\t\t\t[];\n\n\treturn tag === undefined || tag && jQuery.nodeName( context, tag ) ?\n\t\tjQuery.merge( [ context ], ret ) :\n\t\tret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, contains, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( jQuery.type( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (#12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tcontains = jQuery.contains( elem.ownerDocument, elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( contains ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0 - 4.3 only\n\t// Check state lost if the name is set (#11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (#14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Android <=4.1 only\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE <=11 only\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"<textarea>x</textarea>\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n} )();\nvar documentElement = document.documentElement;\n\n\n\nvar\n\trkeyEvent = /^key/,\n\trmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,\n\trtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\n// Support: IE <=9 only\n// See #13393 for more info\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Don't attach events to noData or text/comment nodes (but allow plain objects)\n\t\tif ( !elemData ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = {};\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnotwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnotwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\t// Make a writable jQuery.Event from the native event object\n\t\tvar event = jQuery.event.fix( nativeEvent );\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\t\t\thandlers = ( dataPriv.get( this, \"events\" ) || {} )[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// Triggered event must either 1) have no namespace, or 2) have namespace(s)\n\t\t\t\t// a subset or equal to those in the bound event (both can have no namespace).\n\t\t\t\tif ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, matches, sel, handleObj,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Support: IE <=9\n\t\t// Find delegate handlers\n\t\t// Black-hole SVG <use> instance trees (#13180)\n\t\t//\n\t\t// Support: Firefox <=42\n\t\t// Avoid non-left-click in FF but don't block IE radio events (#3861, gh-2343)\n\t\tif ( delegateCount && cur.nodeType &&\n\t\t\t( event.type !== \"click\" || isNaN( event.button ) || event.button < 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (#13208)\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.nodeType === 1 && ( cur.disabled !== true || event.type !== \"click\" ) ) {\n\t\t\t\t\tmatches = [];\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matches[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatches[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matches[ sel ] ) {\n\t\t\t\t\t\t\tmatches.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matches.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matches } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: this, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: jQuery.isFunction( hook ) ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tfocus: {\n\n\t\t\t// Fire native event if possible so blur/focus sequence is correct\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this !== safeActiveElement() && this.focus ) {\n\t\t\t\t\tthis.focus();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: \"focusin\"\n\t\t},\n\t\tblur: {\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this === safeActiveElement() && this.blur ) {\n\t\t\t\t\tthis.blur();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: \"focusout\"\n\t\t},\n\t\tclick: {\n\n\t\t\t// For checkbox, fire native event so checked state will be right\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this.type === \"checkbox\" && this.click && jQuery.nodeName( this, \"input\" ) ) {\n\t\t\t\t\tthis.click();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, don't fire native .click() on links\n\t\t\t_default: function( event ) {\n\t\t\t\treturn jQuery.nodeName( event.target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (#504, #13143)\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\tsrc.target.parentNode :\n\t\t\tsrc.target;\n\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || jQuery.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\n\twhich: function( event ) {\n\t\tvar button = event.button;\n\n\t\t// Add which for key events\n\t\tif ( event.which == null && rkeyEvent.test( event.type ) ) {\n\t\t\treturn event.charCode != null ? event.charCode : event.keyCode;\n\t\t}\n\n\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\tif ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) {\n\t\t\treturn ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );\n\t\t}\n\n\t\treturn event.which;\n\t}\n}, jQuery.event.addProp );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event ) dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)[^>]*)\\/>/gi,\n\n\t// Support: IE <=10 - 11, Edge 12 - 13\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /<script|<style|<link/i,\n\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\trscriptTypeMasked = /^true\\/(.*)/,\n\trcleanScript = /^\\s*<!(?:\\[CDATA\\[|--)|(?:\\]\\]|--)>\\s*$/g;\n\nfunction manipulationTarget( elem, content ) {\n\tif ( jQuery.nodeName( elem, \"table\" ) &&\n\t\tjQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\treturn elem.getElementsByTagName( \"tbody\" )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tvar match = rscriptTypeMasked.exec( elem.type );\n\n\tif ( match ) {\n\t\telem.type = match[ 1 ];\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.access( src );\n\t\tpdataCur = dataPriv.set( dest, pdataOld );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdelete pdataCur.handle;\n\t\t\tpdataCur.events = {};\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = concat.apply( [], args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tisFunction = jQuery.isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( isFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( isFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Reenable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, \"\" ), doc );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && jQuery.contains( node.ownerDocument, node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html.replace( rxhtmlTag, \"<$1></$2>\" );\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = jQuery.contains( elem.ownerDocument, elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rmargin = ( /^margin/ );\n\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (#15098, #14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n\n\n\n( function() {\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computeStyleTests() {\n\n\t\t// This is a singleton, we need to execute it only once\n\t\tif ( !div ) {\n\t\t\treturn;\n\t\t}\n\n\t\tdiv.style.cssText =\n\t\t\t\"box-sizing:border-box;\" +\n\t\t\t\"position:relative;display:block;\" +\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\"top:1%;width:50%\";\n\t\tdiv.innerHTML = \"\";\n\t\tdocumentElement.appendChild( container );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\n\t\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\t\treliableMarginLeftVal = divStyle.marginLeft === \"2px\";\n\t\tboxSizingReliableVal = divStyle.width === \"4px\";\n\n\t\t// Support: Android 4.0 - 4.3 only\n\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\tdiv.style.marginRight = \"50%\";\n\t\tpixelMarginRightVal = divStyle.marginRight === \"4px\";\n\n\t\tdocumentElement.removeChild( container );\n\n\t\t// Nullify the div so it wouldn't be stored in the memory and\n\t\t// it will also be a sign that checks already performed\n\t\tdiv = null;\n\t}\n\n\tvar pixelPositionVal, boxSizingReliableVal, pixelMarginRightVal, reliableMarginLeftVal,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE <=9 - 11 only\n\t// Style of cloned element affects source element cloned (#8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tcontainer.style.cssText = \"border:0;width:8px;height:0;top:0;left:-9999px;\" +\n\t\t\"padding:0;margin-top:1px;position:absolute\";\n\tcontainer.appendChild( div );\n\n\tjQuery.extend( support, {\n\t\tpixelPosition: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\tboxSizingReliable: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelMarginRight: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelMarginRightVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn reliableMarginLeftVal;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\n\t// Support: IE <=9 only\n\t// getPropertyValue is only needed for .css('filter') (#12537)\n\tif ( computed ) {\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\tif ( ret === \"\" && !jQuery.contains( elem.ownerDocument, elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// Android Browser returns percentage for some values,\n\t\t// but width seems to be reliably pixels.\n\t\t// This is against the CSSOM draft spec:\n\t\t// https://drafts.csswg.org/cssom/#resolved-values\n\t\tif ( !support.pixelMarginRight() && rnumnonpx.test( ret ) && rmargin.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11 only\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\nvar\n\n\t// Swappable if display is none or starts with table\n\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t},\n\n\tcssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style;\n\n// Return a css property mapped to a potentially vendor prefixed property\nfunction vendorPropName( name ) {\n\n\t// Shortcut for names that are not vendor prefixed\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\nfunction setPositiveNumber( elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {\n\tvar i = extra === ( isBorderBox ? \"border\" : \"content\" ) ?\n\n\t\t// If we already have the right measurement, avoid augmentation\n\t\t4 :\n\n\t\t// Otherwise initialize for horizontal or vertical properties\n\t\tname === \"width\" ? 1 : 0,\n\n\t\tval = 0;\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin, so add it if we want it\n\t\tif ( extra === \"margin\" ) {\n\t\t\tval += jQuery.css( elem, extra + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\tif ( isBorderBox ) {\n\n\t\t\t// border-box includes padding, so remove it if we want content\n\t\t\tif ( extra === \"content\" ) {\n\t\t\t\tval -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// At this point, extra isn't border nor margin, so remove border\n\t\t\tif ( extra !== \"margin\" ) {\n\t\t\t\tval -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t} else {\n\n\t\t\t// At this point, extra isn't content, so add padding\n\t\t\tval += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// At this point, extra isn't content nor padding, so add border\n\t\t\tif ( extra !== \"padding\" ) {\n\t\t\t\tval += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\treturn val;\n}\n\nfunction getWidthOrHeight( elem, name, extra ) {\n\n\t// Start with offset property, which is equivalent to the border-box value\n\tvar val,\n\t\tvalueIsBorderBox = true,\n\t\tstyles = getStyles( elem ),\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t// Support: IE <=11 only\n\t// Running getBoundingClientRect on a disconnected node\n\t// in IE throws an error.\n\tif ( elem.getClientRects().length ) {\n\t\tval = elem.getBoundingClientRect()[ name ];\n\t}\n\n\t// Some non-html elements return undefined for offsetWidth, so check for null/undefined\n\t// svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285\n\t// MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668\n\tif ( val <= 0 || val == null ) {\n\n\t\t// Fall back to computed then uncomputed css if necessary\n\t\tval = curCSS( elem, name, styles );\n\t\tif ( val < 0 || val == null ) {\n\t\t\tval = elem.style[ name ];\n\t\t}\n\n\t\t// Computed unit is not pixels. Stop here and return.\n\t\tif ( rnumnonpx.test( val ) ) {\n\t\t\treturn val;\n\t\t}\n\n\t\t// Check for style in case a browser which returns unreliable values\n\t\t// for getComputedStyle silently falls back to the reliable elem.style\n\t\tvalueIsBorderBox = isBorderBox &&\n\t\t\t( support.boxSizingReliable() || val === elem.style[ name ] );\n\n\t\t// Normalize \"\", auto, and prepare for extra\n\t\tval = parseFloat( val ) || 0;\n\t}\n\n\t// Use the active box-sizing model to add/subtract irrelevant styles\n\treturn ( val +\n\t\taugmentWidthOrHeight(\n\t\t\telem,\n\t\t\tname,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\t\"animationIterationCount\": true,\n\t\t\"columnCount\": true,\n\t\t\"fillOpacity\": true,\n\t\t\"flexGrow\": true,\n\t\t\"flexShrink\": true,\n\t\t\"fontWeight\": true,\n\t\t\"lineHeight\": true,\n\t\t\"opacity\": true,\n\t\t\"order\": true,\n\t\t\"orphans\": true,\n\t\t\"widows\": true,\n\t\t\"zIndex\": true,\n\t\t\"zoom\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {\n\t\t\"float\": \"cssFloat\"\n\t},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = jQuery.camelCase( name ),\n\t\t\tstyle = elem.style;\n\n\t\tname = jQuery.cssProps[ origName ] ||\n\t\t\t( jQuery.cssProps[ origName ] = vendorPropName( origName ) || origName );\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (#7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug #9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (#7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\tif ( type === \"number\" ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t}\n\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tstyle[ name ] = value;\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = jQuery.camelCase( name );\n\n\t\t// Make sure that we're working with the right name\n\t\tname = jQuery.cssProps[ origName ] ||\n\t\t\t( jQuery.cssProps[ origName ] = vendorPropName( origName ) || origName );\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( i, name ) {\n\tjQuery.cssHooks[ name ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\n\n\t\t\t\t\t// Support: Safari 8+\n\t\t\t\t\t// Table columns in Safari have non-zero offsetWidth & zero\n\t\t\t\t\t// getBoundingClientRect().width unless display is changed.\n\t\t\t\t\t// Support: IE <=11 only\n\t\t\t\t\t// Running getBoundingClientRect on a disconnected node\n\t\t\t\t\t// in IE throws an error.\n\t\t\t\t\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\n\t\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\t\treturn getWidthOrHeight( elem, name, extra );\n\t\t\t\t\t\t} ) :\n\t\t\t\t\t\tgetWidthOrHeight( elem, name, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = extra && getStyles( elem ),\n\t\t\t\tsubtract = extra && augmentWidthOrHeight(\n\t\t\t\t\telem,\n\t\t\t\t\tname,\n\t\t\t\t\textra,\n\t\t\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\t\tstyles\n\t\t\t\t);\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ name ] = value;\n\t\t\t\tvalue = jQuery.css( elem, name );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t\t) + \"px\";\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( !rmargin.test( prefix ) ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( jQuery.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 &&\n\t\t\t\t( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null ||\n\t\t\t\t\tjQuery.cssHooks[ tween.prop ] ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9 only\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, timerId,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction raf() {\n\tif ( timerId ) {\n\t\twindow.requestAnimationFrame( raf );\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = jQuery.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4 ; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\t/* jshint validthis: true */\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = \"width\" in props || \"height\" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict \"overflow\" and \"display\" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11, Edge 12 - 13\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\tif ( display === \"none\" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t/* jshint -W083 */\n\t\t\tanim.done( function() {\n\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = jQuery.camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( jQuery.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t// Support: Android 2.3 only\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length ; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t} else {\n\t\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length ; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length ; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( jQuery.isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tjQuery.proxy( result.stop, result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( jQuery.isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\t// attach callbacks from options\n\treturn animation.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( jQuery.isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnotwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length ; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tjQuery.isFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !jQuery.isFunction( easing ) && easing\n\t};\n\n\t// Go to the end state if fx are off or if document is hidden\n\tif ( jQuery.fx.off || document.hidden ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\topt.duration = typeof opt.duration === \"number\" ?\n\t\t\topt.duration : opt.duration in jQuery.fx.speeds ?\n\t\t\t\tjQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( jQuery.isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\t\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue && type !== false ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = jQuery.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Checks the timer has not already been removed\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tif ( timer() ) {\n\t\tjQuery.fx.start();\n\t} else {\n\t\tjQuery.timers.pop();\n\t}\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( !timerId ) {\n\t\ttimerId = window.requestAnimationFrame ?\n\t\t\twindow.requestAnimationFrame( raf ) :\n\t\t\twindow.setInterval( jQuery.fx.tick, jQuery.fx.interval );\n\t}\n};\n\njQuery.fx.stop = function() {\n\tif ( window.cancelAnimationFrame ) {\n\t\twindow.cancelAnimationFrame( timerId );\n\t} else {\n\t\twindow.clearInterval( timerId );\n\t}\n\n\ttimerId = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\n// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\n\n( function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: Android <=4.3 only\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE <=11 only\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: IE <=11 only\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( \"input\" );\n\tinput.value = \"t\";\n\tinput.type = \"radio\";\n\tsupport.radioValue = input.value === \"t\";\n} )();\n\n\nvar boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// Attribute hooks are determined by the lowercase version\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = jQuery.find.attr( elem, name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\tjQuery.nodeName( elem, \"input\" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name,\n\t\t\ti = 0,\n\t\t\tattrNames = value && value.match( rnotwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\n\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle,\n\t\t\tlowercaseName = name.toLowerCase();\n\n\t\tif ( !isXML ) {\n\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ lowercaseName ];\n\t\t\tattrHandle[ lowercaseName ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tlowercaseName :\n\t\t\t\tnull;\n\t\t\tattrHandle[ lowercaseName ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n} );\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// Support: IE <=9 - 11 only\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\t// Use proper attribute retrieval(#12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\treturn tabindex ?\n\t\t\t\t\tparseInt( tabindex, 10 ) :\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\t\trclickable.test( elem.nodeName ) && elem.href ?\n\t\t\t\t\t\t\t0 :\n\t\t\t\t\t\t\t-1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\n} );\n\n// Support: IE <=11 only\n// Accessing the selectedIndex property\n// forces the browser to respect setting selected\n// on the option\n// The getter ensures a default option is selected\n// when in an optgroup\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n\n\n\nvar rclass = /[\\t\\r\\n\\f]/g;\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( typeof value === \"string\" && value ) {\n\t\t\tclasses = value.match( rnotwhite ) || [];\n\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\t\t\t\tcur = elem.nodeType === 1 &&\n\t\t\t\t\t( \" \" + curValue + \" \" ).replace( rclass, \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + clazz + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += clazz + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = jQuery.trim( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tif ( typeof value === \"string\" && value ) {\n\t\t\tclasses = value.match( rnotwhite ) || [];\n\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = elem.nodeType === 1 &&\n\t\t\t\t\t( \" \" + curValue + \" \" ).replace( rclass, \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + clazz + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + clazz + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = jQuery.trim( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value;\n\n\t\tif ( typeof stateVal === \"boolean\" && type === \"string\" ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar className, i, self, classNames;\n\n\t\t\tif ( type === \"string\" ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\ti = 0;\n\t\t\t\tself = jQuery( this );\n\t\t\t\tclassNames = value.match( rnotwhite ) || [];\n\n\t\t\t\twhile ( ( className = classNames[ i++ ] ) ) {\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\"\" :\n\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + getClass( elem ) + \" \" ).replace( rclass, \" \" )\n\t\t\t\t\t.indexOf( className ) > -1\n\t\t\t) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n\n\n\nvar rreturn = /\\r/g,\n\trspaces = /[\\x20\\t\\r\\n\\f]+/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, isFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\treturn typeof ret === \"string\" ?\n\n\t\t\t\t\t// Handle most common string cases\n\t\t\t\t\tret.replace( rreturn, \"\" ) :\n\n\t\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\t\tret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tisFunction = jQuery.isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( isFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( jQuery.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE <=10 - 11 only\n\t\t\t\t\t// option.text throws exceptions (#14686, #14858)\n\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\tjQuery.trim( jQuery.text( elem ) ).replace( rspaces, \" \" );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\",\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length,\n\t\t\t\t\ti = index < 0 ?\n\t\t\t\t\t\tmax :\n\t\t\t\t\t\tone ? index : 0;\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t// IE8-9 doesn't update selected after form reset (#2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!jQuery.nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\t\t\t\t\tif ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( jQuery.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute( \"value\" ) === null ? \"on\" : elem.value;\n\t\t};\n\t}\n} );\n\n\n\n\n// Return jQuery for attributes-only inclusion\n\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/;\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( dataPriv.get( cur, \"events\" ) || {} )[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\tif ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\t\t\t\t\telem[ type ]();\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\njQuery.each( ( \"blur focus focusin focusout resize scroll click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup contextmenu\" ).split( \" \" ),\n\tfunction( i, name ) {\n\n\t// Handle event binding\n\tjQuery.fn[ name ] = function( data, fn ) {\n\t\treturn arguments.length > 0 ?\n\t\t\tthis.on( name, null, data, fn ) :\n\t\t\tthis.trigger( name );\n\t};\n} );\n\njQuery.fn.extend( {\n\thover: function( fnOver, fnOut ) {\n\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n\t}\n} );\n\n\n\n\nsupport.focusin = \"onfocusin\" in window;\n\n\n// Support: Firefox <=44\n// Firefox doesn't have focus(in | out) events\n// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n//\n// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n// focus(in | out) events fire after focus & blur events,\n// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\nif ( !support.focusin ) {\n\tjQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\n\t\tvar handler = function( event ) {\n\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );\n\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix );\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.access( doc, fix, ( attaches || 0 ) + 1 );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix ) - 1;\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\n\t\t\t\t\tdataPriv.remove( doc, fix );\n\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.access( doc, fix, attaches );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t} );\n}\nvar location = window.location;\n\nvar nonce = jQuery.now();\n\nvar rquery = ( /\\?/ );\n\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {\n\t\txml = undefined;\n\t}\n\n\tif ( !xml || xml.getElementsByTagName( \"parsererror\" ).length ) {\n\t\tjQuery.error( \"Invalid XML: \" + data );\n\t}\n\treturn xml;\n};\n\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( jQuery.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && jQuery.type( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = jQuery.isFunction( valueOrFunction ) ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} )\n\t\t.filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} )\n\t\t.map( function( i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\treturn val == null ?\n\t\t\t\tnull :\n\t\t\t\tjQuery.isArray( val ) ?\n\t\t\t\t\tjQuery.map( val, function( val ) {\n\t\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t\t} ) :\n\t\t\t\t\t{ name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trts = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t * - BEFORE asking for a transport\n\t * - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document.createElement( \"a\" );\n\toriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnotwhite ) || [];\n\n\t\tif ( jQuery.isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes #9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() ] = match[ 2 ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match;\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (#10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket #12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = ( s.dataType || \"*\" ).toLowerCase().match( rnotwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document.createElement( \"a\" );\n\n\t\t\t// Support: IE <=8 - 11, Edge 12 - 13\n\t\t\t// IE throws exception on accessing the href property if url is malformed,\n\t\t\t// e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE <=8 - 11 only\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( completed ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\t// Remove hash to simplify url manipulation\n\t\tcacheURL = s.url.replace( rhash, \"\" );\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// Remember the hash so we can put it back\n\t\t\tuncached = s.url.slice( cacheURL.length );\n\n\t\t\t// If data is available, append data to url\n\t\t\tif ( s.data ) {\n\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data;\n\n\t\t\t\t// #9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add anti-cache in uncached url if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\tcacheURL = cacheURL.replace( rts, \"\" );\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ( nonce++ ) + uncached;\n\t\t\t}\n\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\ts.url = cacheURL + uncached;\n\n\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t\t} else if ( s.data && s.processData &&\n\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\n\t\t\ts.data = s.data.replace( r20, \"+\" );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tcompleteDeferred.add( s.complete );\n\t\tjqXHR.done( s.success );\n\t\tjqXHR.fail( s.error );\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcompleted = false;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\tif ( completed ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\t// Propagate others as results\n\t\t\t\tdone( -1, e );\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Ignore repeat invocations\n\t\t\tif ( completed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcompleted = true;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\n\njQuery._evalUrl = function( url ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (#11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tcache: true,\n\t\tasync: false,\n\t\tglobal: false,\n\t\t\"throws\": true\n\t} );\n};\n\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( this[ 0 ] ) {\n\t\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t}\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar isFunction = jQuery.isFunction( html );\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( isFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function( selector ) {\n\t\tthis.parent( selector ).not( \"body\" ).each( function() {\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\n\njQuery.expr.pseudos.hidden = function( elem ) {\n\treturn !jQuery.expr.pseudos.visible( elem );\n};\njQuery.expr.pseudos.visible = function( elem ) {\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n};\n\n\n\n\njQuery.ajaxSettings.xhr = function() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch ( e ) {}\n};\n\nvar xhrSuccessStatus = {\n\n\t\t// File protocol always yields status code 0, assume 200\n\t\t0: 200,\n\n\t\t// Support: IE <=9 only\n\t\t// #1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback, errorCallback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr();\n\n\t\t\t\txhr.open(\n\t\t\t\t\toptions.type,\n\t\t\t\t\toptions.url,\n\t\t\t\t\toptions.async,\n\t\t\t\t\toptions.username,\n\t\t\t\t\toptions.password\n\t\t\t\t);\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\n\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.onreadystatechange = null;\n\n\t\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\n\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\n\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\n\t\t\t\t\t\t\t\tif ( typeof xhr.status !== \"number\" ) {\n\t\t\t\t\t\t\t\t\tcomplete( 0, \"error\" );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see #8605, #14207\n\t\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t\t// IE9 has no XHR2 but throws on binary (trac-11426)\n\t\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) !== \"text\" ||\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText !== \"string\" ?\n\t\t\t\t\t\t\t\t\t\t{ binary: xhr.response } :\n\t\t\t\t\t\t\t\t\t\t{ text: xhr.responseText },\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t\t// Listen to events\n\t\t\t\txhr.onload = callback();\n\t\t\t\terrorCallback = xhr.onerror = callback( \"error\" );\n\n\t\t\t\t// Support: IE 9 only\n\t\t\t\t// Use onreadystatechange to replace onabort\n\t\t\t\t// to handle uncaught aborts\n\t\t\t\tif ( xhr.onabort !== undefined ) {\n\t\t\t\t\txhr.onabort = errorCallback;\n\t\t\t\t} else {\n\t\t\t\t\txhr.onreadystatechange = function() {\n\n\t\t\t\t\t\t// Check readyState before timeout as it changes\n\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\n\n\t\t\t\t\t\t\t// Allow onerror to be called first,\n\t\t\t\t\t\t\t// but that will not handle a native abort\n\t\t\t\t\t\t\t// Also, save errorCallback to a variable\n\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\n\t\t\t\t\t\t\twindow.setTimeout( function() {\n\t\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\t\terrorCallback();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Create the abort callback\n\t\t\t\tcallback = callback( \"abort\" );\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// #14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\n// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\njQuery.ajaxPrefilter( function( s ) {\n\tif ( s.crossDomain ) {\n\t\ts.contents.script = false;\n\t}\n} );\n\n// Install script dataType\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /\\b(?:java|ecma)script\\b/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\n\t// This transport only deals with cross domain requests\n\tif ( s.crossDomain ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \"<script>\" ).prop( {\n\t\t\t\t\tcharset: s.scriptCharset,\n\t\t\t\t\tsrc: s.url\n\t\t\t\t} ).on(\n\t\t\t\t\t\"load error\",\n\t\t\t\t\tcallback = function( evt ) {\n\t\t\t\t\t\tscript.remove();\n\t\t\t\t\t\tcallback = null;\n\t\t\t\t\t\tif ( evt ) {\n\t\t\t\t\t\t\tcomplete( evt.type === \"error\" ? 404 : 200, evt.type );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\t// Use native DOM manipulation to avoid our domManip AJAX trickery\n\t\t\t\tdocument.head.appendChild( script[ 0 ] );\n\t\t\t},\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\nvar oldCallbacks = [],\n\trjsonp = /(=)\\?(?=&|$)|\\?\\?/;\n\n// Default jsonp settings\njQuery.ajaxSetup( {\n\tjsonp: \"callback\",\n\tjsonpCallback: function() {\n\t\tvar callback = oldCallbacks.pop() || ( jQuery.expando + \"_\" + ( nonce++ ) );\n\t\tthis[ callback ] = true;\n\t\treturn callback;\n\t}\n} );\n\n// Detect, normalize options and install callbacks for jsonp requests\njQuery.ajaxPrefilter( \"json jsonp\", function( s, originalSettings, jqXHR ) {\n\n\tvar callbackName, overwritten, responseContainer,\n\t\tjsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?\n\t\t\t\"url\" :\n\t\t\ttypeof s.data === \"string\" &&\n\t\t\t\t( s.contentType || \"\" )\n\t\t\t\t\t.indexOf( \"application/x-www-form-urlencoded\" ) === 0 &&\n\t\t\t\trjsonp.test( s.data ) && \"data\"\n\t\t);\n\n\t// Handle iff the expected data type is \"jsonp\" or we have a parameter to set\n\tif ( jsonProp || s.dataTypes[ 0 ] === \"jsonp\" ) {\n\n\t\t// Get callback name, remembering preexisting value associated with it\n\t\tcallbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ?\n\t\t\ts.jsonpCallback() :\n\t\t\ts.jsonpCallback;\n\n\t\t// Insert callback into url or form data\n\t\tif ( jsonProp ) {\n\t\t\ts[ jsonProp ] = s[ jsonProp ].replace( rjsonp, \"$1\" + callbackName );\n\t\t} else if ( s.jsonp !== false ) {\n\t\t\ts.url += ( rquery.test( s.url ) ? \"&\" : \"?\" ) + s.jsonp + \"=\" + callbackName;\n\t\t}\n\n\t\t// Use data converter to retrieve json after script execution\n\t\ts.converters[ \"script json\" ] = function() {\n\t\t\tif ( !responseContainer ) {\n\t\t\t\tjQuery.error( callbackName + \" was not called\" );\n\t\t\t}\n\t\t\treturn responseContainer[ 0 ];\n\t\t};\n\n\t\t// Force json dataType\n\t\ts.dataTypes[ 0 ] = \"json\";\n\n\t\t// Install callback\n\t\toverwritten = window[ callbackName ];\n\t\twindow[ callbackName ] = function() {\n\t\t\tresponseContainer = arguments;\n\t\t};\n\n\t\t// Clean-up function (fires after converters)\n\t\tjqXHR.always( function() {\n\n\t\t\t// If previous value didn't exist - remove it\n\t\t\tif ( overwritten === undefined ) {\n\t\t\t\tjQuery( window ).removeProp( callbackName );\n\n\t\t\t// Otherwise restore preexisting value\n\t\t\t} else {\n\t\t\t\twindow[ callbackName ] = overwritten;\n\t\t\t}\n\n\t\t\t// Save back as free\n\t\t\tif ( s[ callbackName ] ) {\n\n\t\t\t\t// Make sure that re-using the options doesn't screw things around\n\t\t\t\ts.jsonpCallback = originalSettings.jsonpCallback;\n\n\t\t\t\t// Save the callback name for future use\n\t\t\t\toldCallbacks.push( callbackName );\n\t\t\t}\n\n\t\t\t// Call if it was a function and we have a response\n\t\t\tif ( responseContainer && jQuery.isFunction( overwritten ) ) {\n\t\t\t\toverwritten( responseContainer[ 0 ] );\n\t\t\t}\n\n\t\t\tresponseContainer = overwritten = undefined;\n\t\t} );\n\n\t\t// Delegate to script\n\t\treturn \"script\";\n\t}\n} );\n\n\n\n\n// Support: Safari 8 only\n// In Safari 8 documents created via document.implementation.createHTMLDocument\n// collapse sibling forms: the second one becomes a child of the first one.\n// Because of that, this security measure has to be disabled in Safari 8.\n// https://bugs.webkit.org/show_bug.cgi?id=137337\nsupport.createHTMLDocument = ( function() {\n\tvar body = document.implementation.createHTMLDocument( \"\" ).body;\n\tbody.innerHTML = \"<form></form><form></form>\";\n\treturn body.childNodes.length === 2;\n} )();\n\n\n// Argument \"data\" should be string of html\n// context (optional): If specified, the fragment will be created in this context,\n// defaults to document\n// keepScripts (optional): If true, will include scripts passed in the html string\njQuery.parseHTML = function( data, context, keepScripts ) {\n\tif ( typeof data !== \"string\" ) {\n\t\treturn [];\n\t}\n\tif ( typeof context === \"boolean\" ) {\n\t\tkeepScripts = context;\n\t\tcontext = false;\n\t}\n\n\tvar base, parsed, scripts;\n\n\tif ( !context ) {\n\n\t\t// Stop scripts or inline event handlers from being executed immediately\n\t\t// by using document.implementation\n\t\tif ( support.createHTMLDocument ) {\n\t\t\tcontext = document.implementation.createHTMLDocument( \"\" );\n\n\t\t\t// Set the base href for the created document\n\t\t\t// so any parsed elements with URLs\n\t\t\t// are based on the document's URL (gh-2965)\n\t\t\tbase = context.createElement( \"base\" );\n\t\t\tbase.href = document.location.href;\n\t\t\tcontext.head.appendChild( base );\n\t\t} else {\n\t\t\tcontext = document;\n\t\t}\n\t}\n\n\tparsed = rsingleTag.exec( data );\n\tscripts = !keepScripts && [];\n\n\t// Single tag\n\tif ( parsed ) {\n\t\treturn [ context.createElement( parsed[ 1 ] ) ];\n\t}\n\n\tparsed = buildFragment( [ data ], context, scripts );\n\n\tif ( scripts && scripts.length ) {\n\t\tjQuery( scripts ).remove();\n\t}\n\n\treturn jQuery.merge( [], parsed.childNodes );\n};\n\n\n/**\n * Load a url into a page\n */\njQuery.fn.load = function( url, params, callback ) {\n\tvar selector, type, response,\n\t\tself = this,\n\t\toff = url.indexOf( \" \" );\n\n\tif ( off > -1 ) {\n\t\tselector = jQuery.trim( url.slice( off ) );\n\t\turl = url.slice( 0, off );\n\t}\n\n\t// If it's a function\n\tif ( jQuery.isFunction( params ) ) {\n\n\t\t// We assume that it's the callback\n\t\tcallback = params;\n\t\tparams = undefined;\n\n\t// Otherwise, build a param string\n\t} else if ( params && typeof params === \"object\" ) {\n\t\ttype = \"POST\";\n\t}\n\n\t// If we have elements to modify, make the request\n\tif ( self.length > 0 ) {\n\t\tjQuery.ajax( {\n\t\t\turl: url,\n\n\t\t\t// If \"type\" variable is undefined, then \"GET\" method will be used.\n\t\t\t// Make value of this field explicit since\n\t\t\t// user can override it through ajaxSetup method\n\t\t\ttype: type || \"GET\",\n\t\t\tdataType: \"html\",\n\t\t\tdata: params\n\t\t} ).done( function( responseText ) {\n\n\t\t\t// Save response for use in complete callback\n\t\t\tresponse = arguments;\n\n\t\t\tself.html( selector ?\n\n\t\t\t\t// If a selector was specified, locate the right elements in a dummy div\n\t\t\t\t// Exclude scripts to avoid IE 'Permission Denied' errors\n\t\t\t\tjQuery( \"<div>\" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :\n\n\t\t\t\t// Otherwise use the full result\n\t\t\t\tresponseText );\n\n\t\t// If the request succeeds, this function gets \"data\", \"status\", \"jqXHR\"\n\t\t// but they are ignored because response was set above.\n\t\t// If it fails, this function gets \"jqXHR\", \"status\", \"error\"\n\t\t} ).always( callback && function( jqXHR, status ) {\n\t\t\tself.each( function() {\n\t\t\t\tcallback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] );\n\t\t\t} );\n\t\t} );\n\t}\n\n\treturn this;\n};\n\n\n\n\n// Attach a bunch of functions for handling common AJAX events\njQuery.each( [\n\t\"ajaxStart\",\n\t\"ajaxStop\",\n\t\"ajaxComplete\",\n\t\"ajaxError\",\n\t\"ajaxSuccess\",\n\t\"ajaxSend\"\n], function( i, type ) {\n\tjQuery.fn[ type ] = function( fn ) {\n\t\treturn this.on( type, fn );\n\t};\n} );\n\n\n\n\njQuery.expr.pseudos.animated = function( elem ) {\n\treturn jQuery.grep( jQuery.timers, function( fn ) {\n\t\treturn elem === fn.elem;\n\t} ).length;\n};\n\n\n\n\n/**\n * Gets a window from an element\n */\nfunction getWindow( elem ) {\n\treturn jQuery.isWindow( elem ) ? elem : elem.nodeType === 9 && elem.defaultView;\n}\n\njQuery.offset = {\n\tsetOffset: function( elem, options, i ) {\n\t\tvar curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,\n\t\t\tposition = jQuery.css( elem, \"position\" ),\n\t\t\tcurElem = jQuery( elem ),\n\t\t\tprops = {};\n\n\t\t// Set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tcurOffset = curElem.offset();\n\t\tcurCSSTop = jQuery.css( elem, \"top\" );\n\t\tcurCSSLeft = jQuery.css( elem, \"left\" );\n\t\tcalculatePosition = ( position === \"absolute\" || position === \"fixed\" ) &&\n\t\t\t( curCSSTop + curCSSLeft ).indexOf( \"auto\" ) > -1;\n\n\t\t// Need to be able to calculate position if either\n\t\t// top or left is auto and position is either absolute or fixed\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t\tcurTop = curPosition.top;\n\t\t\tcurLeft = curPosition.left;\n\n\t\t} else {\n\t\t\tcurTop = parseFloat( curCSSTop ) || 0;\n\t\t\tcurLeft = parseFloat( curCSSLeft ) || 0;\n\t\t}\n\n\t\tif ( jQuery.isFunction( options ) ) {\n\n\t\t\t// Use jQuery.extend here to allow modification of coordinates argument (gh-1848)\n\t\t\toptions = options.call( elem, i, jQuery.extend( {}, curOffset ) );\n\t\t}\n\n\t\tif ( options.top != null ) {\n\t\t\tprops.top = ( options.top - curOffset.top ) + curTop;\n\t\t}\n\t\tif ( options.left != null ) {\n\t\t\tprops.left = ( options.left - curOffset.left ) + curLeft;\n\t\t}\n\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\njQuery.fn.extend( {\n\toffset: function( options ) {\n\n\t\t// Preserve chaining for setter\n\t\tif ( arguments.length ) {\n\t\t\treturn options === undefined ?\n\t\t\t\tthis :\n\t\t\t\tthis.each( function( i ) {\n\t\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t\t} );\n\t\t}\n\n\t\tvar docElem, win, rect, doc,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !elem ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Support: IE <=11 only\n\t\t// Running getBoundingClientRect on a\n\t\t// disconnected node in IE throws an error\n\t\tif ( !elem.getClientRects().length ) {\n\t\t\treturn { top: 0, left: 0 };\n\t\t}\n\n\t\trect = elem.getBoundingClientRect();\n\n\t\t// Make sure element is not hidden (display: none)\n\t\tif ( rect.width || rect.height ) {\n\t\t\tdoc = elem.ownerDocument;\n\t\t\twin = getWindow( doc );\n\t\t\tdocElem = doc.documentElement;\n\n\t\t\treturn {\n\t\t\t\ttop: rect.top + win.pageYOffset - docElem.clientTop,\n\t\t\t\tleft: rect.left + win.pageXOffset - docElem.clientLeft\n\t\t\t};\n\t\t}\n\n\t\t// Return zeros for disconnected and hidden elements (gh-2310)\n\t\treturn rect;\n\t},\n\n\tposition: function() {\n\t\tif ( !this[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar offsetParent, offset,\n\t\t\telem = this[ 0 ],\n\t\t\tparentOffset = { top: 0, left: 0 };\n\n\t\t// Fixed elements are offset from window (parentOffset = {top:0, left: 0},\n\t\t// because it is its only offset parent\n\t\tif ( jQuery.css( elem, \"position\" ) === \"fixed\" ) {\n\n\t\t\t// Assume getBoundingClientRect is there when computed position is fixed\n\t\t\toffset = elem.getBoundingClientRect();\n\n\t\t} else {\n\n\t\t\t// Get *real* offsetParent\n\t\t\toffsetParent = this.offsetParent();\n\n\t\t\t// Get correct offsets\n\t\t\toffset = this.offset();\n\t\t\tif ( !jQuery.nodeName( offsetParent[ 0 ], \"html\" ) ) {\n\t\t\t\tparentOffset = offsetParent.offset();\n\t\t\t}\n\n\t\t\t// Add offsetParent borders\n\t\t\tparentOffset = {\n\t\t\t\ttop: parentOffset.top + jQuery.css( offsetParent[ 0 ], \"borderTopWidth\", true ),\n\t\t\t\tleft: parentOffset.left + jQuery.css( offsetParent[ 0 ], \"borderLeftWidth\", true )\n\t\t\t};\n\t\t}\n\n\t\t// Subtract parent offsets and element margins\n\t\treturn {\n\t\t\ttop: offset.top - parentOffset.top - jQuery.css( elem, \"marginTop\", true ),\n\t\t\tleft: offset.left - parentOffset.left - jQuery.css( elem, \"marginLeft\", true )\n\t\t};\n\t},\n\n\t// This method will return documentElement in the following cases:\n\t// 1) For the element inside the iframe without offsetParent, this method will return\n\t// documentElement of the parent window\n\t// 2) For the hidden or detached element\n\t// 3) For body or html element, i.e. in case of the html node - it will return itself\n\t//\n\t// but those exceptions were never presented as a real life use-cases\n\t// and might be considered as more preferable results.\n\t//\n\t// This logic, however, is not guaranteed and can change at any point in the future\n\toffsetParent: function() {\n\t\treturn this.map( function() {\n\t\t\tvar offsetParent = this.offsetParent;\n\n\t\t\twhile ( offsetParent && jQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\n\t\t\treturn offsetParent || documentElement;\n\t\t} );\n\t}\n} );\n\n// Create scrollLeft and scrollTop methods\njQuery.each( { scrollLeft: \"pageXOffset\", scrollTop: \"pageYOffset\" }, function( method, prop ) {\n\tvar top = \"pageYOffset\" === prop;\n\n\tjQuery.fn[ method ] = function( val ) {\n\t\treturn access( this, function( elem, method, val ) {\n\t\t\tvar win = getWindow( elem );\n\n\t\t\tif ( val === undefined ) {\n\t\t\t\treturn win ? win[ prop ] : elem[ method ];\n\t\t\t}\n\n\t\t\tif ( win ) {\n\t\t\t\twin.scrollTo(\n\t\t\t\t\t!top ? val : win.pageXOffset,\n\t\t\t\t\ttop ? val : win.pageYOffset\n\t\t\t\t);\n\n\t\t\t} else {\n\t\t\t\telem[ method ] = val;\n\t\t\t}\n\t\t}, method, val, arguments.length );\n\t};\n} );\n\n// Support: Safari <=7 - 9.1, Chrome <=37 - 49\n// Add the top/left cssHooks using jQuery.fn.position\n// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084\n// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347\n// getComputedStyle returns percent when specified for top/left/bottom/right;\n// rather than make the css module depend on the offset module, just check for it here\njQuery.each( [ \"top\", \"left\" ], function( i, prop ) {\n\tjQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,\n\t\tfunction( elem, computed ) {\n\t\t\tif ( computed ) {\n\t\t\t\tcomputed = curCSS( elem, prop );\n\n\t\t\t\t// If curCSS returns percentage, fallback to offset\n\t\t\t\treturn rnumnonpx.test( computed ) ?\n\t\t\t\t\tjQuery( elem ).position()[ prop ] + \"px\" :\n\t\t\t\t\tcomputed;\n\t\t\t}\n\t\t}\n\t);\n} );\n\n\n// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods\njQuery.each( { Height: \"height\", Width: \"width\" }, function( name, type ) {\n\tjQuery.each( { padding: \"inner\" + name, content: type, \"\": \"outer\" + name },\n\t\tfunction( defaultExtra, funcName ) {\n\n\t\t// Margin is only for outerHeight, outerWidth\n\t\tjQuery.fn[ funcName ] = function( margin, value ) {\n\t\t\tvar chainable = arguments.length && ( defaultExtra || typeof margin !== \"boolean\" ),\n\t\t\t\textra = defaultExtra || ( margin === true || value === true ? \"margin\" : \"border\" );\n\n\t\t\treturn access( this, function( elem, type, value ) {\n\t\t\t\tvar doc;\n\n\t\t\t\tif ( jQuery.isWindow( elem ) ) {\n\n\t\t\t\t\t// $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)\n\t\t\t\t\treturn funcName.indexOf( \"outer\" ) === 0 ?\n\t\t\t\t\t\telem[ \"inner\" + name ] :\n\t\t\t\t\t\telem.document.documentElement[ \"client\" + name ];\n\t\t\t\t}\n\n\t\t\t\t// Get document width or height\n\t\t\t\tif ( elem.nodeType === 9 ) {\n\t\t\t\t\tdoc = elem.documentElement;\n\n\t\t\t\t\t// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],\n\t\t\t\t\t// whichever is greatest\n\t\t\t\t\treturn Math.max(\n\t\t\t\t\t\telem.body[ \"scroll\" + name ], doc[ \"scroll\" + name ],\n\t\t\t\t\t\telem.body[ \"offset\" + name ], doc[ \"offset\" + name ],\n\t\t\t\t\t\tdoc[ \"client\" + name ]\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn value === undefined ?\n\n\t\t\t\t\t// Get width or height on the element, requesting but not forcing parseFloat\n\t\t\t\t\tjQuery.css( elem, type, extra ) :\n\n\t\t\t\t\t// Set width or height on the element\n\t\t\t\t\tjQuery.style( elem, type, value, extra );\n\t\t\t}, type, chainable ? margin : undefined, chainable );\n\t\t};\n\t} );\n} );\n\n\njQuery.fn.extend( {\n\n\tbind: function( types, data, fn ) {\n\t\treturn this.on( types, null, data, fn );\n\t},\n\tunbind: function( types, fn ) {\n\t\treturn this.off( types, null, fn );\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.on( types, selector, data, fn );\n\t},\n\tundelegate: function( selector, types, fn ) {\n\n\t\t// ( namespace ) or ( selector, types [, fn] )\n\t\treturn arguments.length === 1 ?\n\t\t\tthis.off( selector, \"**\" ) :\n\t\t\tthis.off( types, selector || \"**\", fn );\n\t}\n} );\n\njQuery.parseJSON = JSON.parse;\n\n\n\n\n// Register as a named AMD module, since jQuery can be concatenated with other\n// files that may use define, but not via a proper concatenation script that\n// understands anonymous AMD modules. A named AMD is safest and most robust\n// way to register. Lowercase jquery is used because AMD module names are\n// derived from file names, and jQuery is normally delivered in a lowercase\n// file name. Do this after creating the global so that if an AMD module wants\n// to call noConflict to hide this version of jQuery, it will work.\n\n// Note that for maximum portability, libraries that are not jQuery should\n// declare themselves as anonymous modules, and avoid setting a global if an\n// AMD loader is present. jQuery is a special case. For more information, see\n// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon\n\nif ( typeof define === \"function\" && define.amd ) {\n\tdefine( \"jquery\", [], function() {\n\t\treturn jQuery;\n\t} );\n}\n\n\n\n\n\nvar\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$;\n\njQuery.noConflict = function( deep ) {\n\tif ( window.$ === jQuery ) {\n\t\twindow.$ = _$;\n\t}\n\n\tif ( deep && window.jQuery === jQuery ) {\n\t\twindow.jQuery = _jQuery;\n\t}\n\n\treturn jQuery;\n};\n\n// Expose jQuery and $ identifiers, even in AMD\n// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)\n// and CommonJS for browser emulators (#13566)\nif ( !noGlobal ) {\n\twindow.jQuery = window.$ = jQuery;\n}\n\n\nreturn jQuery;\n} ) );\n\n\n\n/** WEBPACK FOOTER **\n ** ./~/jquery/dist/jquery.js\n **/","/* enable zoom */\nimport { eventEmitter } from '../utils'\n\nclass ZoomHandler {\n\n\tconstructor (params) {\n\t\tthis.zoomFactor = 0.1 || params.zoomFactor;\n\t\tthis.paper = params.paper;\n\t\tthis.MIN_SIZE = 40;\n\t\tthis.imageWidth = parseInt(this.paper.select(\".main-image\").attr(\"width\"));\n\t\tthis.imageHeight = parseInt(this.paper.select(\".main-image\").attr(\"height\"));\n\t\t\n\t\tthis.viewport = {\n\t\t\twidth: parseInt(this.paper.attr(\"width\")),\n\t\t\theight: parseInt(this.paper.attr(\"height\"))\n\t\t};\n\n\t\tthis.scale = 1;\n\t\tthis.paper.attr({stroke: 2, \"fill\": \"blue\" });\n\t\tthis.disableDrag = false;\n\t\tthis.imgMinSize = Math.min(this.imageWidth, this.imageHeight);\n\t\tthis.lastPosition = []; \n\t\tthis.updateViewBox([0 , 0, this.imageWidth, this.imageHeight]);\n\t}\n\n\ttestShowCenter (cx, cy) {\n\t\n\t\tif (this.center) {\n\t\t\tthis.center.remove();\n\t\t}\n\t\tthis.center = this.paper.rect(cx - 3, cy - 3, 20, 20);\n\t\tthis.center.attr({\"fill\" : \"red\"});\n\t}\n\t\n\tdrawTestRectangle (cx, cy, w, h) {\n\t\tvar x = cx - w / 2;\n\t\tvar y = cy - h / 2;\n\t\tthis.paper.rect(x, y, w, h);\n\t}\n\n\tzoomIn () {\n\n\t\t/* current center */\n\t\tif ( this.scale === 9) { this.scale--; return; }\n\t\tvar currentCenterX = this.currentViewBox[0] + (this.currentViewBox[2] / 2);\n\t\tvar currentCenterY = this.currentViewBox[1] + (this.currentViewBox[3] / 2);\n\t\tvar scaleFactor = this.zoomFactor * this.scale;\n\t\tvar viewBoxW = this.imgMinSize - (this.imgMinSize * scaleFactor); \n\t\tvar viewBoxH = viewBoxW;\n\t\t\n\t\tthis.currentViewBox[0] = currentCenterX - viewBoxW / 2;\n\t\tthis.currentViewBox[1] = currentCenterY - viewBoxH / 2;\n\n\t\tthis.currentViewBox[2] = viewBoxW;\n\t\tthis.currentViewBox[3] = viewBoxH;\n\t\tthis.scale ++;\n\t\tthis.updateViewBox();\n\t}\n\t\n\tupdateViewBox (currentViewBox, notify) {\n\t\tnotify = (typeof notify === \"boolean\") ? notify : true;\n\n\t\tif (currentViewBox && currentViewBox.length != 4) { throw new Error(\"Provided currentViewBox is not valid!\"); }\n\t\tif (currentViewBox) {\n\t\t\tthis.currentViewBox = currentViewBox;\n\t\t}\n\t\t\n\t\tthis.paper.attr({\"viewBox\": this.currentViewBox});\n\n\t\tif (!notify) { return false; }\n\n\t\tvar self = this;\t\t\n\t\teventEmitter.emit(\"zoomChanged\", {\n\t\t\tupdateFunction: function (updatedViewBox) {\n\t\t\t\tself.updateViewBox(updatedViewBox, false);\n\t\t\t},\n\t\t\t\"zoomFactor\": this.getZoomFactor(),\n\t\t\t\"viewport\": this.viewport,\n\t\t\t\"currentScale\": this.scale,\n\t\t\t\"imageSize\": {width: this.imageWidth, height: this.imageHeight}, \n\t\t\t\"minSize\": Math.min(this.imageWidth, this.imageHeight),\n\t\t\t\"currentViewBox\": this.currentViewBox.slice()\n\t\t});\n\t}\n\t\n\tgetZoomFactor () {\n\t\treturn {\n\t\t\tx: this.viewport.width / this.currentViewBox[2],\n\t\t\ty: this.viewport.height / this.currentViewBox[3]\t\n\t\t};\n\t}\n\n\tonStart (x, y, e) {\n\t\t\n\t\tthis.lastPosition[0] = this.currentViewBox[0];\n\t\tthis.lastPosition[1] = this.currentViewBox[1];\n\n\t\tif (e.target.className.baseVal === \"drawingHandler\") {\n\t\t\tthis.disableDrag = true;\n\t\t}\n\t}\n\n\tcanDrag () {\n\t\treturn !this.disableDrag;\n\t}\n\n\tonStop () {\n\t\tthis.disableDrag = false;\n\t}\n\n\tonDrag (dx, dy, x, y, event) {\n\n\t\tif (!this.canDrag()) { return true; }\n\n\t\tvar newX = this.lastPosition[0] - dx;\n\t\tvar newY = this.lastPosition[1] - dy;\n\n\t\t/* maxX bound */\n\t\tif (newX + this.currentViewBox[2] >= this.viewport.width) {\n\t\t\tnewX = this.viewport.width - this.currentViewBox[2];\n\t\t}\n\n\t\t/* maxY bound */\n\t\tif (newY + this.currentViewBox[3] >= this.viewport.height) {\n\t\t\tnewY = this.viewport.height - this.currentViewBox[3];\n\t\t}\n\n\t\tif (newX <= 0) { newX = 0; }\n\n\t\tif(newY <= 0) { newY = 0; }\n\n\t\tthis.currentViewBox[0] = newX;\n\t\tthis.currentViewBox[1] = newY;\n\n\t\tthis.updateViewBox();\n\t}\n\n\treset () {\n\t\tthis.scale = 1;\n\t\tthis.currentViewBox = [0, 0, this.imageWidth, this.imageHeight];\n\t\tthis.updateViewBox();\n\t}\n\n\tzoomOut () {\n\t\tif (this.scale == 1) { \n\t\t\treturn false; \n\t\t}\n\n\t\tvar currentCenterX = this.currentViewBox[0] + (this.currentViewBox[2] / 2);\n\t\tvar currentCenterY = this.currentViewBox[1] + (this.currentViewBox[3] / 2);\n\t\tvar scaleFactor = this.zoomFactor * (this.scale - 1);\n\n\t\tvar viewBoxW = this.imgMinSize - (this.imgMinSize * scaleFactor);\n\t\tvar viewBoxH = viewBoxW;\n\n\t\tvar topX = currentCenterX - viewBoxW / 2;\n\t\tvar topY = currentCenterY - viewBoxH / 2;\n\n\t\tthis.currentViewBox[0] = topX; //deal with X and Y\n\t\tthis.currentViewBox[1] = topY; \n\t\tthis.currentViewBox[2] = viewBoxW;\n\t\tthis.currentViewBox[3] = viewBoxH;\n\t\tthis.updateViewBox();\n\t\tthis.scale--;\n\t}\n}\n\nexport default {\n\n\tenable_zoom: function (params) {\n\t\treturn new ZoomHandler(params);\n\t}\n}\n\n\n/** WEBPACK FOOTER **\n ** ./src/components/cutout/snapsvg-zoom.js\n **/","var __vue_exports__, __vue_options__\n\n/* script */\n__vue_exports__ = require(\"!!babel-loader!vue-loader/lib/selector?type=script&index=0!./Zoomview.vue\")\n\n/* template */\nvar __vue_template__ = require(\"!!vue-loader/lib/template-compiler?id=data-v-2!./template.html\")\n__vue_options__ = __vue_exports__ || {}\nif (__vue_options__.__esModule) __vue_options__ = __vue_options__.default\nif (typeof __vue_options__ === \"function\") __vue_options__ = __vue_options__.options\n__vue_options__.render = __vue_template__.render\n__vue_options__.staticRenderFns = __vue_template__.staticRenderFns\n\nmodule.exports = __vue_exports__ || __vue_options__\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/zoomview/Zoomview.vue\n ** module id = 6\n ** module chunks = 0\n **/","<script>\n\n\timport svgboard from './svgboard'\n\timport Typeahead from '../typeahead/Typeahead.vue'\n\timport Zoomview from '../zoomview/Zoomview.vue'\n\n\texport default {\n\n\t\tel: '#drawing-zone',\n\t\tMODE_RECT: 'RECT',\n\t\tMODE_FREE: 'FREE',\n\t\tZOOM_IN: 'in',\n\t\tZOOM_OUT: 'out',\n\n\t\tcomponents: {typeahead: Typeahead, zoomview: Zoomview},\n\t\tdata: { \n\t\t\tmode:\"\",\n\t\t\tisRect: true,\n\t\t\tnormalizePath: \"\",\n\t\t\treadOnly: false,\n\t\t\tformView: true,\n\t\t\tuseClipPath: false,\n\t\t\ttransformMatrix: \"\",\n\t\t\tfragmentPath: \"\",\n\t\t\tcanZoom: true,\n\t\t\tdisplayMask: false\n\t\t},\n\n\t\tmounted () {\n\t\t\tvar self = this;\n\t\t\tthis.initialDrawingMode = null;\n\t\t\tthis.drawingComponent = svgboard.init({ \n\t\t\t\twrapperId: '#iconolab-image-wrapper',\n\t\t\t\t\tactionWrapper: '#action-wrapper',\n\t\t\t\t\treadOnly: false,\n\t\t\t\t\tonDrawingModeChange: function (mode) {\n\t\t\t\t\t\tself.setDrawingMode(mode, false);\n\t\t\t\t\t}\n\t\t\t});\n\t\t\tthis.$refs.zoomview.setZoomTarget(this.drawingComponent.getPaper());\n\t\t\tthis.showEditor();\n\t\t\tthis.drawingComponent.createTestHandler(10,20, 50);\n\t\t},\n\n\t\tmethods: {\n\n\t\t\tcomputeCentreredViewBox: function () {\n\t\t\t\tvar zoomSvg = this.$refs.zoomSvg;\n\t\t\t\tvar viewBox = [];\n\t\t\t\tvar imageWidth = zoomSvg.getAttribute(\"width\"); \n\t\t\t\tvar imageHeight = zoomSvg.getAttribute(\"height\");\n\n\t\t\t\t/* normalize */\n\t\t\t\tvar xRatio = imageWidth / 100 ;\n\t\t\t\tvar yRatio = imageHeight / 100;\n\n\t\t\t\tvar zTarget = this.drawingComponent.getShapeBBox(); \n\t\t\t\tviewBox = [(zTarget.x - 1) * xRatio, (zTarget.y - 1) * yRatio, (zTarget.w + 2) * xRatio, (zTarget.h + 2) * yRatio];\n\t\t\t\treturn viewBox.join(\" \");\n\n\t\t\t},\n\n\t\t\tcomputeZoomedViewBox: function () {\n\t\t\t\tvar viewBoxArray = [];\n\t\t\t\tvar zoomSvg = this.$refs.zoomSvg;\n\t\t\t\tvar shapeBBox = this.drawingComponent.getShapeBBox();\n\t\t\t\tvar imageWidth = zoomSvg.getAttribute(\"width\");\n\t\t\t\tvar imageHeight = zoomSvg.getAttribute(\"height\");\n\t\t\t\tvar xRatio = imageWidth / 100;\n\t\t\t\tvar yRatio = imageHeight / 100;\n\t\t\t\t/* denormalize coordonate, max is imageX * 100x = imageHeigth*/\n\t\t\t\tshapeBBox.x = shapeBBox.x * xRatio;\n\t\t\t\tshapeBBox.y = shapeBBox.y * yRatio;\n\n\t\t\t\tshapeBBox.w = shapeBBox.w * xRatio;\n\t\t\t\tshapeBBox.h = shapeBBox.h * yRatio;\n\n\t \tvar imgRatio = imageWidth / imageHeight;\n\t\t if (shapeBBox.w > shapeBBox.h) {\n\t\t shapeBBox.y = Math.max(0, shapeBBox.y - (((shapeBBox.w * imgRatio) - shapeBBox.h) / 2));\n\t\t shapeBBox.h = shapeBBox.w * imgRatio;\n\t\t }\n\t\t \telse {\n\t\t \t\tshapeBBox.x = Math.max(0, shapeBBox.x - (((shapeBBox.h / imgRatio) - shapeBBox.w) / 2));\n\t\t shapeBBox.w = shapeBBox.h / imgRatio;\n\t\t \t}\n\t\t \tviewBoxArray = [shapeBBox.x, shapeBBox.y, shapeBBox.w, shapeBBox.h];\n\n\t\t\t\tif (!shapeBBox) { return false; }\n\t\t\t\n\t\t\t\treturn viewBoxArray.join(\" \");\n\t\t\t},\n\n\t\t\tzoom: function (direction) {\n\n\t\t\t\tvar mainSvgWrapper = this.$refs.smallSvgWrapper;\n\t\t\t\tif (this.$options.ZOOM_OUT === direction) {\n\t\t\t\t\tvar defaultViewBox = [0, 0, mainSvgWrapper.getAttribute(\"width\"), mainSvgWrapper.getAttribute(\"height\")];\n\t\t\t\t\tmainSvgWrapper.setAttribute(\"viewBox\", defaultViewBox.join(\" \"));\n\t\t\t\t\tthis.canZoom = true;\n\t\t\t\t}\n\n\t\t\t\tif (this.$options.ZOOM_IN === direction) { \n\t\t\t\t\tmainSvgWrapper.setAttribute(\"viewBox\", this.computeCentreredViewBox());//this.computeZoomedViewBox());//\n\t\t\t\t\tthis.canZoom = false; \n\t\t\t\t}\n\t\t\t},\n\n\t\t\tsetDrawingMode: function (mode, updateComponent) {\n\t\t\t\tif (!this.initialDrawingMode) {\n\t\t\t\t\tthis.initialDrawingMode = mode;//useful for cancel\n\t\t\t\t}\n\t\t\t\tvar updateComponent = (typeof updateComponent === \"boolean\") ? updateComponent: true;\n\t\t\t\tthis.mode = this.$options['MODE_' + mode];\n\t\t\t\tthis.isRect = (this.mode === this.$options.MODE_RECT) ? true: false;\n\t\t\t\tif (updateComponent) {\n\t\t\t\t\tthis.drawingComponent.setDrawingMode(this.mode);\n\t\t\t\t}\n\t\t\t},\n\t\t\t\n\t\t\tcancel: function () {\n\t\t\t\tthis.formView = true;\n\t\t\t\tvar currentPath = this.$refs.currentPath.getAttribute(\"d\");\n\t\t\t\tif (!currentPath.length || !this.initialDrawingMode) { return; } {\n\t\t\t\t\tcurrentPath += \";\" + this.initialDrawingMode; \n\t\t\t\t\tthis.drawingComponent.setPath(currentPath);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\thighLightZone: function () {\n\t\t\t\tif (!this.displayMask) {\n\t\t\t\t\tthis.displayMask = true;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthis.displayMask = false;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tdisplayEditedPath: function () {\n\t\t\t\tvar normalizePath = this.drawingComponent.getPath();\n\t\t\t},\n\t\t\t\n\t\t\tresetZoom: function () {\n\t\t\t\tthis.zoom(this.$options.ZOOM_OUT);\n\t\t\t},\n\n\t\t\tshowEditor: function () {\n\t\t\t\tthis.formView = true;\n\t\t\t\tthis.resetZoom();\n\t\t\t\t/* on edit mode reset*/\n\t\t\t},\n\n\t\t\tshowForm: function () {\n\t\t\t\tthis.normalizePath = this.drawingComponent.getPath();\n\t\t\t\tvar smallImage = this.$refs.smallImage;\n\t\t\t\tthis.formView = true;\n\t\t\t\tvar xRatio = smallImage.getAttribute(\"width\") / 100;\n\t\t\t\tvar yRatio = smallImage.getAttribute(\"height\") / 100;\n\t\t\t\tvar transformMatrix = [xRatio, 0, 0, yRatio, 0, 0].join(',');\n\t\t\t\tthis.transformMatrix =\"matrix(\" + transformMatrix + \")\";\n\t\t\t\tthis.fragmentPath = this.normalizePath.split(';')[0];\n\t\t\t},\n\n\t\t\tclear: function () {\n\t\t\t\tthis.drawingComponent.clear();\n\t\t\t}\n\t\t}\n\t}\n</script>\n\n\n\n\n/** WEBPACK FOOTER **\n ** Cutout.vue?abd5db1a\n **/","<script>\n\nimport Typeahead from '../typeahead/Typeahead.vue'\n\nexport default {\n\n\tdata () {\n\t\treturn {}\n\t},\n\t\n\tcomponents: {\n\t\tTypeahead: Typeahead\n\t},\n\n\tmounted () {\n\n\t\tthis.targetKeyMap = {\n\t\t\ttitle: \"proposal-title\", \n\t\t\tdesc: \"proposal-description\",\n\t\t\tfrag: \"proposal-fragment\"\n\t\t};\n\n\t\tthis.targetFieldTypeMap = {\n\t\t\ttitle: \"input\", \n\t\t\tdesc: \"input\",\n\t\t\tfrag: \"frag\"\n\t\t};\n\n\t\tthis.originalValues = {\n\t\t\ttitle: \"\",\n\t\t\tdesc: \"\",\n\t\t\tfrag: \"\"\n\t\t}\n\n\t},\n\n\tmethods: {\n\n\t\tpickProposition: function (event, sourceId, targetKey) {\n\t\t\tvar value = \"\";\n\t\t\tvar source = document.getElementById(sourceId);\n\t\t\tvar targetField = this.$refs[this.targetKeyMap[targetKey]];\n\t\t\tvar targetType = this.targetFieldTypeMap[targetKey];\n\t\t\tif (!targetType) { throw new Error(\"A target type must be provided...\"); }\n\t\t\t\n\t\t\tif (targetType === \"input\") {\n\t\t\t\tvalue = targetField.value; \n\t\t\t\ttargetField.value = source.value;\n\t\t\t}\n\n\t\t\t if (targetType === \"frag\") {\n\t\t\t \tvalue = targetField.getAttribute(\"d\");\n\t\t\t \tvar sourceValue = source.getAttribute(\"d\");\n\t\t\t \tvar targetPathType = targetField.getAttribute(\"data-path-type\");\n\t\t\t \ttargetField.setAttribute(\"d\", sourceValue);\n\t\t\t \t\n\t\t\t \tvar pathType = source.getAttribute(\"data-path-type\");\n\t\t\t \tpathType = pathType || \"FREE\";\n\t\t\t \tvar fragmentField = this.$refs[\"fragment-field\"];\n\t\t\t \tfragmentField.value = sourceValue + \";\" + pathType;\n\t\t\t }\n\n\t\t\t this.preserveOriginalValue(targetKey, value);\n\t\t},\n\n\t\tpickTag: function (event, refTag) {\n\t\t\tvar source = this.$refs[refTag];\n\t\t\tvar target = this.$refs['proposal-tags'];\n\t\t\tthis.preserveOriginalValue('proposal-tags', target.tags);\n\t\t\ttarget.setTags(source.tags, true);\n\t\t},\n\n\t\tpreserveOriginalValue: function (key, value) {\n\t\t\tif (!this.originalValues[key]) {\n\t\t\t\tthis.originalValues[key] = value;\n\t\t\t}\n\t\t},\n\n\t\thightlightSource: function (source) {\n\t\t\tsource.className += \"highlight\";\n\t\t},\n\n\t\tsave: function () {\n\t\t\talert(\"this is it ... \");\n\t\t}\n\t}\n}\n\n</script>\n\n\n/** WEBPACK FOOTER **\n ** MergeTool.vue?66eb9b8f\n **/","<template src='./template.html'></template>\n<script>\n\nimport { generateId } from '../utils'\n\nexport default {\n\tdata () {\n\t\treturn {\n\t\t\ttags: [],\n\t\t\treadOnly: false\n\t\t}\n\t},\n\t\n\tmethods: {\n\t\tremoveTag: function (index) {\n\t\t\tthis.tags.$remove(index);\n\t\t\tthis.normalizeSelectedTags();\n\t\t}, \n\t\t\n\t\treset: function () {\n\t\t\tthis.tags = [];\n\t\t\tthis.normalizeSelectedTags(); \n\t\t},\n\n\t\t/* check tag already exists */\n\t\ttagAlreadyExists (tag) {\n\t\t\tvar result = false;\n\t\t\tvar found = this.tags.find(function (userTag) {\n\n\t\t\t\tif (!userTag.tag_link) {\n\n\t\t\t\t\tif (userTag.tag_label === tag.tag_label) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\t\t\t\t\tif (userTag.tag_link === tag.tag_link) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\t\t\t\t\n\t\t\t});\t\n\t\t\tif (found) {\n\t\t\t\tvar tagNode = this.$refs[found.id][0];\n\t\t\t\ttagNode.style.border = \"1px solid red\";\n\t\t\t\tsetTimeout(function () {\n\t\t\t\t\ttagNode.style.border = \"\"; \n\t\t\t\t}, 1000);\n\t\t\t\tresult = true;\n\t\t\t}\n\t\t\treturn result;\n\t\t},\n\n\t\tsetTags (tagArrays){\n\t\t\t\n\t\t\tif (!Array.isArray(tagArrays)) { new Error('setTags expects an array!'); }\n\t\t\tvar self = this;\n\t\t\ttagArrays.map(function (tag) {\n\t\t\t\tself.addTag(tag);\n\t\t\t});\n\t\t},\n\n\t\taddTag (tag) {\n\t\t\t\n\t\t\tif (this.tagAlreadyExists(tag)) { return false; }\n\n\t\t\tif (!tag || !tag.hasOwnProperty('tag_label')) { return; }\n\n\t\t\tif (!tag.id) {\n\t\t\t\ttag.id = generateId('tag_');\n\t\t\t}\n\n\t\t\tthis.tags.push(tag);\n\t\t\tthis.normalizeSelectedTags();\n\t\t},\n\n\t\tnormalizeSelectedTags () {\n\t\t\tvar result = [];\n\t\t\t\n\t\t\tthis.tags.map(function (tag) {\n\t\t\t\tvar tagItem = {};\n\t\t\t\ttagItem.tag_input = (typeof tag.tag_link === \"string\" && tag.tag_link.length) ? tag.tag_link: tag.tag_label;\n\t\t\t\ttagItem.accuracy = tag.accuracy;\n\t\t\t\ttagItem.relevancy = tag.relevancy;\n\t\t\t\tresult.push(tagItem);\n\t\t\t});\n\t\t\tthis.$parent.$data.selectedTags = JSON.stringify(result);\n\t\t},\n\n\t\tupdateAccuracy: function (event, tag) {\n\t\t\ttag.accuracy = event.target.value;\n\t\t\tthis.normalizeSelectedTags();\n\t\n\t\t},\n\n\t\tupdatePertinence: function (event, tag) {\n\t\t\ttag.relevancy = event.target.value;\n\t\t\tthis.normalizeSelectedTags();\n\t\t}\n\t}\n}\n\n</script>\n\n\n/** WEBPACK FOOTER **\n ** Taglist.vue?7f61d5d4\n **/","<template src='./template.html'></template>\n<style scoped src='./style.css'></style>\n\n<script>\n\timport typeahead from 'vue-typeahead'\n\timport Taglist from '../taglist/Taglist.vue'\n\n\tvar autoCompletePath = \"http://lookup.dbpedia.org/api/search/PrefixSearch?MaxHits=5\";\n\tvar wikipediaPath = \"http://fr.wikipedia.org/w/api.php\"\n\tvar parentsMethods = {\n\t\treset: typeahead.methods.reset\n\t};\n\n\n\tvar get = function (url, data) {\n\t\tvar dfd = jQuery.Deferred();\n\t\tvar promise = jQuery.getJSON(url, data).done( function (response) {\n\t\t\tvar envelope = {};\n\t\t\tenvelope.data = response;\n\t\t\tdfd.resolve(envelope);\n\t\t}).fail(dfd.reject);\n\t\treturn dfd.promise();\n\t}\n\t\n\texport default {\n\t\tmixins: [typeahead],\n\t\tcomponents: { 'taglist' : Taglist },\n\t\t\n\t\tprops: ['tags', 'read-only'],\n\n\t\tmounted() {\n\t\t\tthis.taglist = this.$refs.taglist;\n\t\t\tthis.taglist.readOnly = this.readOnly;\n\t\t\tthis.setTags(this.tags);\n\t\t},\n\n\t\tdata() {\n\t\t\treturn {\n\t\t\t\tsrc: autoCompletePath,\n\t\t\t\tlimit: 7,\n\t\t\t\tminChars: 2,\n\t\t\t\tshowAddButton: false,\n\t\t\t\tdatasource: \"wikipedia\",\n\t\t\t\tselectedTags: \"[]\",\n\t\t\t\titems: [],\n\t\t\t\tqueryParamName: \"QueryString\"\n\n\t\t\t}\n\t\t},\n\n\t\tmethods: {\n\t\t\t\n\t\t\tsetTags(tags, reset) {\n\t\t\t\ttags = Array.isArray(tags) ? tags : []; \n\t\t\t\treset = (typeof reset === \"boolean\") ? reset : false;\n\t\t\t\tif (reset) {\n\t\t\t\t\tthis.taglist.reset();\n\t\t\t\t}\n\t\t\t\tthis.taglist.setTags(tags);\n\t\t\t},\n\n \t\tcheckQuery () {\n \t\t\tif (this.query.length === 0) {\n \t\t\t\tthis.reset();\n \t\t\t}\n \t\t},\n \t\t\n \t\tfetch() {\n \t\t\tif (this.datasource === \"wikipedia\") {\n \t\t\t\treturn this.fetchWikiPedia();\n \t\t\t}\n\n \t\t\telse {\n \t\t\t\tvar request = {};\n\t\t\t\t\trequest[this.queryParamName] = this.query;\n\t\t\t\t\treturn get(this.src, query);\t\n \t\t\t}\n\t\t\t},\n\n\t\t\tfetchWikiPedia () {\n\t\t\t\tthis.src = wikipediaPath;\n\t\t\t\tvar self = this;\n\t\t\t\tvar request = {\n\t\t\t\t\t'action': 'opensearch',\n\t\t\t\t\t'format': 'json',\n\t\t\t\t\t'search': this.query\n\t\t\t\t};\n\n\t\t\t\t/* make request */\n\t\t\t\tvar dfd = jQuery.Deferred(); \n\t\t\t\tjQuery.ajax({\n\t\t\t\t\turl: this.src,\n\t\t\t\t \tdata: request,\n\t\t\t\t \tdataType: \"jsonp\",\n\t\t\t\t \tsuccess: function (response) {\n\t\t\t\t \t\tvar envelope = {};\n\t\t\t\t \t\tenvelope.data = response;\n\t\t\t\t \t\tdfd.resolve(envelope);\n\t\t\t\t \t}\n\t\t\t\t});\n\t\t\t\treturn dfd.promise();\n\t\t\t},\n\n \t\treset () {\n \t\t\tthis.showAddButton = false;\n \t\t\tparentsMethods.reset.call(this);\n \t\t},\n\n \t\tprepareWikipediaResponse (data) {\n \t\t\tvar results = [];\n \t\t\tif (data.length !== 4) { return results; }\n \t\t\tvar labelsList = data[1];\n \t\t\tvar urlsList = data[3];\n\n \t\t\tif (labelsList.length !== urlsList.length) {\n \t\t\t\treturn;\n \t\t\t}\n\n \t\t\tlabelsList.map(function(item, index) {\n \t\t\t\tvar tagItem = {};\n \t\t\t\ttagItem.tag_label = item;\n \t\t\t\tvar link = urlsList[index];\n \t\t\t\tlink = link.replace(\"https://fr.wikipedia.org/wiki/\", \"http://fr.dbpedia.org/resource/\");\n \t\t\t\ttagItem.tag_link = decodeURI(link);\n \t\t\t\ttagItem.accuracy = 1;\n \t\t\t\ttagItem.relevancy = 1;\n \t\t\t\tresults.push(tagItem);\n \t\t\t});\n\n \t\t\treturn results;\n \t\t},\n\n \t\tprepareResponseData (data) {\n \t\t\tvar responseData = (typeof data === 'string') ? JSON.parse(data): data;\n \t\t\t\n \t\t\tif(this.datasource === \"wikipedia\") {\n \t\t\t\tresponseData = this.prepareWikipediaResponse(responseData);\n \t\t\t}\n\n \t\t\tif (Array.isArray(responseData) && !responseData.length) {\n \t\t\t\tthis.showAddButton = true; \n \t\t\t}\n \t\t\treturn responseData;\n \t\t},\n\n \t\taddTag () {\n \t\t\tif (this.hasItems) { return false; }\n \t\t\tvar tag = {tag_label: this.query, accuracy: 1, relevancy: 1};\n \t\t\tthis.$refs.taglist.addTag(tag);\n \t\t\tthis.reset();\n \t\t},\n\n\t\t\tonHit (selected) {\n\t\t\t\tthis.$refs.taglist.addTag(selected);\n\t\t\t\tthis.reset();\n\t\t\t}\n\t\t}\n\n\t}\n\n</script> \n\n\n/** WEBPACK FOOTER **\n ** Typeahead.vue?1cba3fba\n **/","\n<template src='./template.html'></template>\n\n<script>\n\nimport {eventEmitter, computeElementSize} from '../utils'\nimport ZoomHandler from '../cutout/snapsvg-zoom'\n\nimport Snap from 'snapsvg'\n\nexport default {\n\n\tprops: ['image-url', 'image-width', 'image-height', 'zoomTarget', 'main-image-id'],\n\t\n\tmounted () {\n\t\tthis.root = new Snap(this.$refs['root-svg']);\n\t\tthis.handler = this.root.select('#zoom-handler');\n\t\tthis.image = this.root.select('#small-image');\n\t\tthis.root.attr({width: 101, height: 101});\n\t\tvar imageWidth = parseInt(this.image.attr(\"width\"));\n\t\tvar imageHeight = parseInt(this.image.attr(\"height\"));\n\t\t/* center image in the viewport */\n\t\tthis.root.attr({viewBox: [0, 0, imageWidth, imageHeight]});\n\t\tthis.imgMinSize = Math.min(imageWidth, imageHeight);\n\n\t\tthis.handlerSize = 20;\n\t\tthis.handler.attr({'width': this.handlerSize, 'height': this.handlerSize});\n\t\tthis.currentViewBox = null;\n\t\tthis.currentViewport = null;\n\t\tthis.updateFunction = null;\n\t\tvar target = document.getElementById('zoomTarget');\n\n\t\tif (target) {\n\t\t\tthis.setZoomTarget(target);\n\t\t}\n\t\tthis.handleEvents();\n\t},\n\n\tdata () {\n\t\treturn {\n\t\t\tshowHandler: false\n\t\t}\n\t},\n\tmethods: {\n\t\t\n\t\tsetZoomTarget: function (zoomtarget) {\n\t\t\t\n\t\t\tif (zoomtarget.hasOwnProperty(\"type\") && zoomtarget.type === 'svg') {\n\t\t\t\tthis.paper = zoomtarget; \t\n\t\t\t} else {\n\n\t\t\t\tthis.paper = new Snap(zoomtarget);\n\t\t\t\tvar mainImage = this.paper.select(\"#\" + this.mainImageId);\n\t\t\t\tif (!mainImage) { throw new Error(\"A main image wasn't found.\"); };\n\t\t\t}\n\n\t\t\tthis.zoomHandler = ZoomHandler.enable_zoom(this.paper);\n\t\t},\n\n\t\tincraseDrawingZoom: function () {\n\t\t\tthis.zoomHandler.zoomIn();\n\t\t},\n\n\t\tresetDrawingZoom: function () {\n\t\t\tthis.zoomHandler.reset();\n\t\t},\n\n\t\tdecreaseDrawingZoom: function () {\n\t\t\tthis.zoomHandler.zoomOut();\n\t\t},\n\t\t\n\t\thandleEvents: function () {\n\t\t\teventEmitter.on('zoomChanged', this.handleZoomChanged.bind(this));\n\t\t\tvar self = this;\n\t\t\t\n\t\t\tthis.handler.drag(function (dx, dy) {\n\t\t\t\tvar bbox = this.getBBox();\n\t\t\t\tvar startX = this.data(\"startPosition\").x;\n\t\t\t\tvar startY = this.data(\"startPosition\").y;\n\t\t\t\tvar imageWidth = parseInt(self.image.attr('width'));\n\t\t\t\tvar imageHeight = parseInt(self.image.attr('height'));\n\n\t\t\t\t/* New X */\n\t\t\t\tvar newX = startX + dx;\n\t\t\t\tvar newY = startY + dy;\n\t\t\t\t\n\t\t\t\t/* XBound */\n\t\t\t\tif (newX + bbox.w >= imageWidth) {\n\t\t\t\t\tnewX = imageWidth - bbox.w; \n\t\t\t\t}\n\t\t\t\t/* YBound */\n\t\t\t\tif (newY + bbox.h >= imageHeight) {\n\t\t\t\t\tnewY = imageHeight - bbox.h;\n\t\t\t\t}\n\n\t\t\t\tnewX = newX < 0 ? 0: newX;\n\t\t\t\tnewY = newY < 0 ? 0: newY;\n\n\t\t\t\tvar transformedValue = \"T\" + [newX, newY];\n\t\t\t\tthis.attr(\"transform\", transformedValue);\n\t\t\t\tself.notifyMove(this.getBBox().x, this.getBBox().y);\n\n\t\t\t}, function () {\n\t\t\t\tthis.data(\"startPosition\", {x: this.getBBox().x, y: this.getBBox().y});\n\t\t\t\tthis.data(\"origTransform\", this.transform().local);\n\t\t\t}, function () {});\n\t\t},\n\n\t\tmoveHandlerToCenter: function (x, c) {\n\t\t\tcx = cx ? cx : this.width / 2;\n\t\t\tcy = cy ? cy : this.height / 2;\n\t\t\tvar moveX = cx - this.handler.getBBox().w / 2;\n\t\t\tvar moveY = cy - this.handler.getBBox().h / 2;\n\t\t\tthis.handler.transform( \"T\" + [moveX, moveY]);\n\t\t},\n\t\t\n\t\tnotifyMove: function (x, y) {\n\t\t\teventEmitter.emit(\"moveZoomHandler\", {\n\t\t\t\tx: x,\n\t\t\t \ty: y, \n\t\t\t viewport: {\n\t\t\t \twidth: this.image.attr(\"width\"),\n\t\t\t \theight: this.image.attr(\"height\")\n\t\t\t }});\n\n\t\t\tif (!this.currentViewBox || !this.currentViewport || typeof this.updateFunction !== 'function') { return false; }\n\n\t\t\t/*longueur image=> longueur viewbox */\n\t\t\tvar xRatio = this.currentImageSize.width / this.image.attr('width');\n\t\t\tvar yRatio = this.currentImageSize.height / this.image.attr('height');\n\t\t\tvar newX = x * xRatio;\n\t\t\tvar newY = y * yRatio;\n\t\t\tthis.currentViewBox[0] = newX;\n\t\t\tthis.currentViewBox[1] = newY;\n\t\t\tthis.updateFunction(this.currentViewBox);\n\t\t},\n\n\t\thandleZoomChanged: function (zoomInfos) {\n\t\t\t\n\t\t\tif (zoomInfos.currentScale === 1) { \n\t\t\t\tthis.showHandler = false;\n\t\t\t\treturn; \n\t\t\t}\n\n\t\t\tthis.showHandler = true;\n\n\t\t\tthis.currentViewport = zoomInfos.viewport;\n\t\t\tthis.currentViewBox = zoomInfos.currentViewBox;\n\t\t\tthis.currentImageSize = zoomInfos.imageSize; \n\t\t\tthis.updateFunction = zoomInfos.updateFunction;\n\t\t\tvar handlerSize = zoomInfos.currentViewBox[2] * this.imgMinSize / zoomInfos.minSize;\n\t\t\t\n\t\t\tthis.handler.attr(\"width\", handlerSize);\n\t\t\tthis.handler.attr(\"height\", handlerSize);\n\n\t\t\t/*compute handler x, y */\n\t\t\tvar x = zoomInfos.currentViewBox[0] * this.image.attr(\"width\") / zoomInfos.imageSize.width;\n\t\t\tvar y = zoomInfos.currentViewBox[1] * this.image.attr(\"height\")/ zoomInfos.imageSize.height;\n\t\t\tthis.handler.transform( \"T\" + [x, y]);\n\t\t} \n\t}\n}\n\n</script>\n\n\n/** WEBPACK FOOTER **\n ** Zoomview.vue?69033152\n **/","/*\r\n\tMIT License http://www.opensource.org/licenses/mit-license.php\r\n\tAuthor Tobias Koppers @sokra\r\n*/\r\n// css base code, injected by the css-loader\r\nmodule.exports = function() {\r\n\tvar list = [];\r\n\r\n\t// return the list of modules as css string\r\n\tlist.toString = function toString() {\r\n\t\tvar result = [];\r\n\t\tfor(var i = 0; i < this.length; i++) {\r\n\t\t\tvar item = this[i];\r\n\t\t\tif(item[2]) {\r\n\t\t\t\tresult.push(\"@media \" + item[2] + \"{\" + item[1] + \"}\");\r\n\t\t\t} else {\r\n\t\t\t\tresult.push(item[1]);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn result.join(\"\");\r\n\t};\r\n\r\n\t// import a list of modules into the list\r\n\tlist.i = function(modules, mediaQuery) {\r\n\t\tif(typeof modules === \"string\")\r\n\t\t\tmodules = [[null, modules, \"\"]];\r\n\t\tvar alreadyImportedModules = {};\r\n\t\tfor(var i = 0; i < this.length; i++) {\r\n\t\t\tvar id = this[i][0];\r\n\t\t\tif(typeof id === \"number\")\r\n\t\t\t\talreadyImportedModules[id] = true;\r\n\t\t}\r\n\t\tfor(i = 0; i < modules.length; i++) {\r\n\t\t\tvar item = modules[i];\r\n\t\t\t// skip already imported module\r\n\t\t\t// this implementation is not 100% perfect for weird media query combinations\r\n\t\t\t// when a module is imported multiple times with different media queries.\r\n\t\t\t// I hope this will never occur (Hey this way we have smaller bundles)\r\n\t\t\tif(typeof item[0] !== \"number\" || !alreadyImportedModules[item[0]]) {\r\n\t\t\t\tif(mediaQuery && !item[2]) {\r\n\t\t\t\t\titem[2] = mediaQuery;\r\n\t\t\t\t} else if(mediaQuery) {\r\n\t\t\t\t\titem[2] = \"(\" + item[2] + \") and (\" + mediaQuery + \")\";\r\n\t\t\t\t}\r\n\t\t\t\tlist.push(item);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\treturn list;\r\n};\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./~/css-loader/lib/css-base.js\n **/","'use strict';\n\nvar assign = require('es5-ext/object/assign')\n , normalizeOpts = require('es5-ext/object/normalize-options')\n , isCallable = require('es5-ext/object/is-callable')\n , contains = require('es5-ext/string/#/contains')\n\n , d;\n\nd = module.exports = function (dscr, value/*, options*/) {\n\tvar c, e, w, options, desc;\n\tif ((arguments.length < 2) || (typeof dscr !== 'string')) {\n\t\toptions = value;\n\t\tvalue = dscr;\n\t\tdscr = null;\n\t} else {\n\t\toptions = arguments[2];\n\t}\n\tif (dscr == null) {\n\t\tc = w = true;\n\t\te = false;\n\t} else {\n\t\tc = contains.call(dscr, 'c');\n\t\te = contains.call(dscr, 'e');\n\t\tw = contains.call(dscr, 'w');\n\t}\n\n\tdesc = { value: value, configurable: c, enumerable: e, writable: w };\n\treturn !options ? desc : assign(normalizeOpts(options), desc);\n};\n\nd.gs = function (dscr, get, set/*, options*/) {\n\tvar c, e, options, desc;\n\tif (typeof dscr !== 'string') {\n\t\toptions = set;\n\t\tset = get;\n\t\tget = dscr;\n\t\tdscr = null;\n\t} else {\n\t\toptions = arguments[3];\n\t}\n\tif (get == null) {\n\t\tget = undefined;\n\t} else if (!isCallable(get)) {\n\t\toptions = get;\n\t\tget = set = undefined;\n\t} else if (set == null) {\n\t\tset = undefined;\n\t} else if (!isCallable(set)) {\n\t\toptions = set;\n\t\tset = undefined;\n\t}\n\tif (dscr == null) {\n\t\tc = true;\n\t\te = false;\n\t} else {\n\t\tc = contains.call(dscr, 'c');\n\t\te = contains.call(dscr, 'e');\n\t}\n\n\tdesc = { get: get, set: set, configurable: c, enumerable: e };\n\treturn !options ? desc : assign(normalizeOpts(options), desc);\n};\n\n\n\n/** WEBPACK FOOTER **\n ** ./~/d/index.js\n **/","'use strict';\n\nmodule.exports = require('./is-implemented')()\n\t? Object.assign\n\t: require('./shim');\n\n\n\n/** WEBPACK FOOTER **\n ** ./~/es5-ext/object/assign/index.js\n **/","'use strict';\n\nmodule.exports = function () {\n\tvar assign = Object.assign, obj;\n\tif (typeof assign !== 'function') return false;\n\tobj = { foo: 'raz' };\n\tassign(obj, { bar: 'dwa' }, { trzy: 'trzy' });\n\treturn (obj.foo + obj.bar + obj.trzy) === 'razdwatrzy';\n};\n\n\n\n/** WEBPACK FOOTER **\n ** ./~/es5-ext/object/assign/is-implemented.js\n **/","'use strict';\n\nvar keys = require('../keys')\n , value = require('../valid-value')\n\n , max = Math.max;\n\nmodule.exports = function (dest, src/*, …srcn*/) {\n\tvar error, i, l = max(arguments.length, 2), assign;\n\tdest = Object(value(dest));\n\tassign = function (key) {\n\t\ttry { dest[key] = src[key]; } catch (e) {\n\t\t\tif (!error) error = e;\n\t\t}\n\t};\n\tfor (i = 1; i < l; ++i) {\n\t\tsrc = arguments[i];\n\t\tkeys(src).forEach(assign);\n\t}\n\tif (error !== undefined) throw error;\n\treturn dest;\n};\n\n\n\n/** WEBPACK FOOTER **\n ** ./~/es5-ext/object/assign/shim.js\n **/","// Deprecated\n\n'use strict';\n\nmodule.exports = function (obj) { return typeof obj === 'function'; };\n\n\n\n/** WEBPACK FOOTER **\n ** ./~/es5-ext/object/is-callable.js\n **/","'use strict';\n\nmodule.exports = require('./is-implemented')()\n\t? Object.keys\n\t: require('./shim');\n\n\n\n/** WEBPACK FOOTER **\n ** ./~/es5-ext/object/keys/index.js\n **/","'use strict';\n\nmodule.exports = function () {\n\ttry {\n\t\tObject.keys('primitive');\n\t\treturn true;\n\t} catch (e) { return false; }\n};\n\n\n\n/** WEBPACK FOOTER **\n ** ./~/es5-ext/object/keys/is-implemented.js\n **/","'use strict';\n\nvar keys = Object.keys;\n\nmodule.exports = function (object) {\n\treturn keys(object == null ? object : Object(object));\n};\n\n\n\n/** WEBPACK FOOTER **\n ** ./~/es5-ext/object/keys/shim.js\n **/","'use strict';\n\nvar forEach = Array.prototype.forEach, create = Object.create;\n\nvar process = function (src, obj) {\n\tvar key;\n\tfor (key in src) obj[key] = src[key];\n};\n\nmodule.exports = function (options/*, …options*/) {\n\tvar result = create(null);\n\tforEach.call(arguments, function (options) {\n\t\tif (options == null) return;\n\t\tprocess(Object(options), result);\n\t});\n\treturn result;\n};\n\n\n\n/** WEBPACK FOOTER **\n ** ./~/es5-ext/object/normalize-options.js\n **/","'use strict';\n\nmodule.exports = function (fn) {\n\tif (typeof fn !== 'function') throw new TypeError(fn + \" is not a function\");\n\treturn fn;\n};\n\n\n\n/** WEBPACK FOOTER **\n ** ./~/es5-ext/object/valid-callable.js\n **/","'use strict';\n\nmodule.exports = function (value) {\n\tif (value == null) throw new TypeError(\"Cannot use null or undefined\");\n\treturn value;\n};\n\n\n\n/** WEBPACK FOOTER **\n ** ./~/es5-ext/object/valid-value.js\n **/","'use strict';\n\nmodule.exports = require('./is-implemented')()\n\t? String.prototype.contains\n\t: require('./shim');\n\n\n\n/** WEBPACK FOOTER **\n ** ./~/es5-ext/string/#/contains/index.js\n **/","'use strict';\n\nvar str = 'razdwatrzy';\n\nmodule.exports = function () {\n\tif (typeof str.contains !== 'function') return false;\n\treturn ((str.contains('dwa') === true) && (str.contains('foo') === false));\n};\n\n\n\n/** WEBPACK FOOTER **\n ** ./~/es5-ext/string/#/contains/is-implemented.js\n **/","'use strict';\n\nvar indexOf = String.prototype.indexOf;\n\nmodule.exports = function (searchString/*, position*/) {\n\treturn indexOf.call(this, searchString, arguments[1]) > -1;\n};\n\n\n\n/** WEBPACK FOOTER **\n ** ./~/es5-ext/string/#/contains/shim.js\n **/","'use strict';\n\nvar d = require('d')\n , callable = require('es5-ext/object/valid-callable')\n\n , apply = Function.prototype.apply, call = Function.prototype.call\n , create = Object.create, defineProperty = Object.defineProperty\n , defineProperties = Object.defineProperties\n , hasOwnProperty = Object.prototype.hasOwnProperty\n , descriptor = { configurable: true, enumerable: false, writable: true }\n\n , on, once, off, emit, methods, descriptors, base;\n\non = function (type, listener) {\n\tvar data;\n\n\tcallable(listener);\n\n\tif (!hasOwnProperty.call(this, '__ee__')) {\n\t\tdata = descriptor.value = create(null);\n\t\tdefineProperty(this, '__ee__', descriptor);\n\t\tdescriptor.value = null;\n\t} else {\n\t\tdata = this.__ee__;\n\t}\n\tif (!data[type]) data[type] = listener;\n\telse if (typeof data[type] === 'object') data[type].push(listener);\n\telse data[type] = [data[type], listener];\n\n\treturn this;\n};\n\nonce = function (type, listener) {\n\tvar once, self;\n\n\tcallable(listener);\n\tself = this;\n\ton.call(this, type, once = function () {\n\t\toff.call(self, type, once);\n\t\tapply.call(listener, this, arguments);\n\t});\n\n\tonce.__eeOnceListener__ = listener;\n\treturn this;\n};\n\noff = function (type, listener) {\n\tvar data, listeners, candidate, i;\n\n\tcallable(listener);\n\n\tif (!hasOwnProperty.call(this, '__ee__')) return this;\n\tdata = this.__ee__;\n\tif (!data[type]) return this;\n\tlisteners = data[type];\n\n\tif (typeof listeners === 'object') {\n\t\tfor (i = 0; (candidate = listeners[i]); ++i) {\n\t\t\tif ((candidate === listener) ||\n\t\t\t\t\t(candidate.__eeOnceListener__ === listener)) {\n\t\t\t\tif (listeners.length === 2) data[type] = listeners[i ? 0 : 1];\n\t\t\t\telse listeners.splice(i, 1);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tif ((listeners === listener) ||\n\t\t\t\t(listeners.__eeOnceListener__ === listener)) {\n\t\t\tdelete data[type];\n\t\t}\n\t}\n\n\treturn this;\n};\n\nemit = function (type) {\n\tvar i, l, listener, listeners, args;\n\n\tif (!hasOwnProperty.call(this, '__ee__')) return;\n\tlisteners = this.__ee__[type];\n\tif (!listeners) return;\n\n\tif (typeof listeners === 'object') {\n\t\tl = arguments.length;\n\t\targs = new Array(l - 1);\n\t\tfor (i = 1; i < l; ++i) args[i - 1] = arguments[i];\n\n\t\tlisteners = listeners.slice();\n\t\tfor (i = 0; (listener = listeners[i]); ++i) {\n\t\t\tapply.call(listener, this, args);\n\t\t}\n\t} else {\n\t\tswitch (arguments.length) {\n\t\tcase 1:\n\t\t\tcall.call(listeners, this);\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\tcall.call(listeners, this, arguments[1]);\n\t\t\tbreak;\n\t\tcase 3:\n\t\t\tcall.call(listeners, this, arguments[1], arguments[2]);\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tl = arguments.length;\n\t\t\targs = new Array(l - 1);\n\t\t\tfor (i = 1; i < l; ++i) {\n\t\t\t\targs[i - 1] = arguments[i];\n\t\t\t}\n\t\t\tapply.call(listeners, this, args);\n\t\t}\n\t}\n};\n\nmethods = {\n\ton: on,\n\tonce: once,\n\toff: off,\n\temit: emit\n};\n\ndescriptors = {\n\ton: d(on),\n\tonce: d(once),\n\toff: d(off),\n\temit: d(emit)\n};\n\nbase = defineProperties({}, descriptors);\n\nmodule.exports = exports = function (o) {\n\treturn (o == null) ? create(base) : defineProperties(Object(o), descriptors);\n};\nexports.methods = methods;\n\n\n\n/** WEBPACK FOOTER **\n ** ./~/event-emitter/index.js\n **/","/*!\n * vue-resource v0.9.1\n * https://github.com/vuejs/vue-resource\n * Released under the MIT License.\n */\n\n'use strict';\n\n/**\n * Promises/A+ polyfill v1.1.4 (https://github.com/bramstein/promis)\n */\n\nvar RESOLVED = 0;\nvar REJECTED = 1;\nvar PENDING = 2;\n\nfunction Promise$2(executor) {\n\n this.state = PENDING;\n this.value = undefined;\n this.deferred = [];\n\n var promise = this;\n\n try {\n executor(function (x) {\n promise.resolve(x);\n }, function (r) {\n promise.reject(r);\n });\n } catch (e) {\n promise.reject(e);\n }\n}\n\nPromise$2.reject = function (r) {\n return new Promise$2(function (resolve, reject) {\n reject(r);\n });\n};\n\nPromise$2.resolve = function (x) {\n return new Promise$2(function (resolve, reject) {\n resolve(x);\n });\n};\n\nPromise$2.all = function all(iterable) {\n return new Promise$2(function (resolve, reject) {\n var count = 0,\n result = [];\n\n if (iterable.length === 0) {\n resolve(result);\n }\n\n function resolver(i) {\n return function (x) {\n result[i] = x;\n count += 1;\n\n if (count === iterable.length) {\n resolve(result);\n }\n };\n }\n\n for (var i = 0; i < iterable.length; i += 1) {\n Promise$2.resolve(iterable[i]).then(resolver(i), reject);\n }\n });\n};\n\nPromise$2.race = function race(iterable) {\n return new Promise$2(function (resolve, reject) {\n for (var i = 0; i < iterable.length; i += 1) {\n Promise$2.resolve(iterable[i]).then(resolve, reject);\n }\n });\n};\n\nvar p$1 = Promise$2.prototype;\n\np$1.resolve = function resolve(x) {\n var promise = this;\n\n if (promise.state === PENDING) {\n if (x === promise) {\n throw new TypeError('Promise settled with itself.');\n }\n\n var called = false;\n\n try {\n var then = x && x['then'];\n\n if (x !== null && typeof x === 'object' && typeof then === 'function') {\n then.call(x, function (x) {\n if (!called) {\n promise.resolve(x);\n }\n called = true;\n }, function (r) {\n if (!called) {\n promise.reject(r);\n }\n called = true;\n });\n return;\n }\n } catch (e) {\n if (!called) {\n promise.reject(e);\n }\n return;\n }\n\n promise.state = RESOLVED;\n promise.value = x;\n promise.notify();\n }\n};\n\np$1.reject = function reject(reason) {\n var promise = this;\n\n if (promise.state === PENDING) {\n if (reason === promise) {\n throw new TypeError('Promise settled with itself.');\n }\n\n promise.state = REJECTED;\n promise.value = reason;\n promise.notify();\n }\n};\n\np$1.notify = function notify() {\n var promise = this;\n\n nextTick(function () {\n if (promise.state !== PENDING) {\n while (promise.deferred.length) {\n var deferred = promise.deferred.shift(),\n onResolved = deferred[0],\n onRejected = deferred[1],\n resolve = deferred[2],\n reject = deferred[3];\n\n try {\n if (promise.state === RESOLVED) {\n if (typeof onResolved === 'function') {\n resolve(onResolved.call(undefined, promise.value));\n } else {\n resolve(promise.value);\n }\n } else if (promise.state === REJECTED) {\n if (typeof onRejected === 'function') {\n resolve(onRejected.call(undefined, promise.value));\n } else {\n reject(promise.value);\n }\n }\n } catch (e) {\n reject(e);\n }\n }\n }\n });\n};\n\np$1.then = function then(onResolved, onRejected) {\n var promise = this;\n\n return new Promise$2(function (resolve, reject) {\n promise.deferred.push([onResolved, onRejected, resolve, reject]);\n promise.notify();\n });\n};\n\np$1.catch = function (onRejected) {\n return this.then(undefined, onRejected);\n};\n\nvar PromiseObj = window.Promise || Promise$2;\n\nfunction Promise$1(executor, context) {\n\n if (executor instanceof PromiseObj) {\n this.promise = executor;\n } else {\n this.promise = new PromiseObj(executor.bind(context));\n }\n\n this.context = context;\n}\n\nPromise$1.all = function (iterable, context) {\n return new Promise$1(PromiseObj.all(iterable), context);\n};\n\nPromise$1.resolve = function (value, context) {\n return new Promise$1(PromiseObj.resolve(value), context);\n};\n\nPromise$1.reject = function (reason, context) {\n return new Promise$1(PromiseObj.reject(reason), context);\n};\n\nPromise$1.race = function (iterable, context) {\n return new Promise$1(PromiseObj.race(iterable), context);\n};\n\nvar p = Promise$1.prototype;\n\np.bind = function (context) {\n this.context = context;\n return this;\n};\n\np.then = function (fulfilled, rejected) {\n\n if (fulfilled && fulfilled.bind && this.context) {\n fulfilled = fulfilled.bind(this.context);\n }\n\n if (rejected && rejected.bind && this.context) {\n rejected = rejected.bind(this.context);\n }\n\n return new Promise$1(this.promise.then(fulfilled, rejected), this.context);\n};\n\np.catch = function (rejected) {\n\n if (rejected && rejected.bind && this.context) {\n rejected = rejected.bind(this.context);\n }\n\n return new Promise$1(this.promise.catch(rejected), this.context);\n};\n\np.finally = function (callback) {\n\n return this.then(function (value) {\n callback.call(this);\n return value;\n }, function (reason) {\n callback.call(this);\n return PromiseObj.reject(reason);\n });\n};\n\nvar debug = false;\nvar util = {};\nvar array = [];\nfunction Util (Vue) {\n util = Vue.util;\n debug = Vue.config.debug || !Vue.config.silent;\n}\n\nfunction warn(msg) {\n if (typeof console !== 'undefined' && debug) {\n console.warn('[VueResource warn]: ' + msg);\n }\n}\n\nfunction error(msg) {\n if (typeof console !== 'undefined') {\n console.error(msg);\n }\n}\n\nfunction nextTick(cb, ctx) {\n return util.nextTick(cb, ctx);\n}\n\nfunction trim(str) {\n return str.replace(/^\\s*|\\s*$/g, '');\n}\n\nvar isArray = Array.isArray;\n\nfunction isString(val) {\n return typeof val === 'string';\n}\n\nfunction isBoolean(val) {\n return val === true || val === false;\n}\n\nfunction isFunction(val) {\n return typeof val === 'function';\n}\n\nfunction isObject(obj) {\n return obj !== null && typeof obj === 'object';\n}\n\nfunction isPlainObject(obj) {\n return isObject(obj) && Object.getPrototypeOf(obj) == Object.prototype;\n}\n\nfunction isFormData(obj) {\n return typeof FormData !== 'undefined' && obj instanceof FormData;\n}\n\nfunction when(value, fulfilled, rejected) {\n\n var promise = Promise$1.resolve(value);\n\n if (arguments.length < 2) {\n return promise;\n }\n\n return promise.then(fulfilled, rejected);\n}\n\nfunction options(fn, obj, opts) {\n\n opts = opts || {};\n\n if (isFunction(opts)) {\n opts = opts.call(obj);\n }\n\n return merge(fn.bind({ $vm: obj, $options: opts }), fn, { $options: opts });\n}\n\nfunction each(obj, iterator) {\n\n var i, key;\n\n if (typeof obj.length == 'number') {\n for (i = 0; i < obj.length; i++) {\n iterator.call(obj[i], obj[i], i);\n }\n } else if (isObject(obj)) {\n for (key in obj) {\n if (obj.hasOwnProperty(key)) {\n iterator.call(obj[key], obj[key], key);\n }\n }\n }\n\n return obj;\n}\n\nvar assign = Object.assign || _assign;\n\nfunction merge(target) {\n\n var args = array.slice.call(arguments, 1);\n\n args.forEach(function (source) {\n _merge(target, source, true);\n });\n\n return target;\n}\n\nfunction defaults(target) {\n\n var args = array.slice.call(arguments, 1);\n\n args.forEach(function (source) {\n\n for (var key in source) {\n if (target[key] === undefined) {\n target[key] = source[key];\n }\n }\n });\n\n return target;\n}\n\nfunction _assign(target) {\n\n var args = array.slice.call(arguments, 1);\n\n args.forEach(function (source) {\n _merge(target, source);\n });\n\n return target;\n}\n\nfunction _merge(target, source, deep) {\n for (var key in source) {\n if (deep && (isPlainObject(source[key]) || isArray(source[key]))) {\n if (isPlainObject(source[key]) && !isPlainObject(target[key])) {\n target[key] = {};\n }\n if (isArray(source[key]) && !isArray(target[key])) {\n target[key] = [];\n }\n _merge(target[key], source[key], deep);\n } else if (source[key] !== undefined) {\n target[key] = source[key];\n }\n }\n}\n\nfunction root (options, next) {\n\n var url = next(options);\n\n if (isString(options.root) && !url.match(/^(https?:)?\\//)) {\n url = options.root + '/' + url;\n }\n\n return url;\n}\n\nfunction query (options, next) {\n\n var urlParams = Object.keys(Url.options.params),\n query = {},\n url = next(options);\n\n each(options.params, function (value, key) {\n if (urlParams.indexOf(key) === -1) {\n query[key] = value;\n }\n });\n\n query = Url.params(query);\n\n if (query) {\n url += (url.indexOf('?') == -1 ? '?' : '&') + query;\n }\n\n return url;\n}\n\n/**\n * URL Template v2.0.6 (https://github.com/bramstein/url-template)\n */\n\nfunction expand(url, params, variables) {\n\n var tmpl = parse(url),\n expanded = tmpl.expand(params);\n\n if (variables) {\n variables.push.apply(variables, tmpl.vars);\n }\n\n return expanded;\n}\n\nfunction parse(template) {\n\n var operators = ['+', '#', '.', '/', ';', '?', '&'],\n variables = [];\n\n return {\n vars: variables,\n expand: function (context) {\n return template.replace(/\\{([^\\{\\}]+)\\}|([^\\{\\}]+)/g, function (_, expression, literal) {\n if (expression) {\n\n var operator = null,\n values = [];\n\n if (operators.indexOf(expression.charAt(0)) !== -1) {\n operator = expression.charAt(0);\n expression = expression.substr(1);\n }\n\n expression.split(/,/g).forEach(function (variable) {\n var tmp = /([^:\\*]*)(?::(\\d+)|(\\*))?/.exec(variable);\n values.push.apply(values, getValues(context, operator, tmp[1], tmp[2] || tmp[3]));\n variables.push(tmp[1]);\n });\n\n if (operator && operator !== '+') {\n\n var separator = ',';\n\n if (operator === '?') {\n separator = '&';\n } else if (operator !== '#') {\n separator = operator;\n }\n\n return (values.length !== 0 ? operator : '') + values.join(separator);\n } else {\n return values.join(',');\n }\n } else {\n return encodeReserved(literal);\n }\n });\n }\n };\n}\n\nfunction getValues(context, operator, key, modifier) {\n\n var value = context[key],\n result = [];\n\n if (isDefined(value) && value !== '') {\n if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n value = value.toString();\n\n if (modifier && modifier !== '*') {\n value = value.substring(0, parseInt(modifier, 10));\n }\n\n result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : null));\n } else {\n if (modifier === '*') {\n if (Array.isArray(value)) {\n value.filter(isDefined).forEach(function (value) {\n result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : null));\n });\n } else {\n Object.keys(value).forEach(function (k) {\n if (isDefined(value[k])) {\n result.push(encodeValue(operator, value[k], k));\n }\n });\n }\n } else {\n var tmp = [];\n\n if (Array.isArray(value)) {\n value.filter(isDefined).forEach(function (value) {\n tmp.push(encodeValue(operator, value));\n });\n } else {\n Object.keys(value).forEach(function (k) {\n if (isDefined(value[k])) {\n tmp.push(encodeURIComponent(k));\n tmp.push(encodeValue(operator, value[k].toString()));\n }\n });\n }\n\n if (isKeyOperator(operator)) {\n result.push(encodeURIComponent(key) + '=' + tmp.join(','));\n } else if (tmp.length !== 0) {\n result.push(tmp.join(','));\n }\n }\n }\n } else {\n if (operator === ';') {\n result.push(encodeURIComponent(key));\n } else if (value === '' && (operator === '&' || operator === '?')) {\n result.push(encodeURIComponent(key) + '=');\n } else if (value === '') {\n result.push('');\n }\n }\n\n return result;\n}\n\nfunction isDefined(value) {\n return value !== undefined && value !== null;\n}\n\nfunction isKeyOperator(operator) {\n return operator === ';' || operator === '&' || operator === '?';\n}\n\nfunction encodeValue(operator, value, key) {\n\n value = operator === '+' || operator === '#' ? encodeReserved(value) : encodeURIComponent(value);\n\n if (key) {\n return encodeURIComponent(key) + '=' + value;\n } else {\n return value;\n }\n}\n\nfunction encodeReserved(str) {\n return str.split(/(%[0-9A-Fa-f]{2})/g).map(function (part) {\n if (!/%[0-9A-Fa-f]/.test(part)) {\n part = encodeURI(part);\n }\n return part;\n }).join('');\n}\n\nfunction template (options) {\n\n var variables = [],\n url = expand(options.url, options.params, variables);\n\n variables.forEach(function (key) {\n delete options.params[key];\n });\n\n return url;\n}\n\n/**\n * Service for URL templating.\n */\n\nvar ie = document.documentMode;\nvar el = document.createElement('a');\n\nfunction Url(url, params) {\n\n var self = this || {},\n options = url,\n transform;\n\n if (isString(url)) {\n options = { url: url, params: params };\n }\n\n options = merge({}, Url.options, self.$options, options);\n\n Url.transforms.forEach(function (handler) {\n transform = factory(handler, transform, self.$vm);\n });\n\n return transform(options);\n}\n\n/**\n * Url options.\n */\n\nUrl.options = {\n url: '',\n root: null,\n params: {}\n};\n\n/**\n * Url transforms.\n */\n\nUrl.transforms = [template, query, root];\n\n/**\n * Encodes a Url parameter string.\n *\n * @param {Object} obj\n */\n\nUrl.params = function (obj) {\n\n var params = [],\n escape = encodeURIComponent;\n\n params.add = function (key, value) {\n\n if (isFunction(value)) {\n value = value();\n }\n\n if (value === null) {\n value = '';\n }\n\n this.push(escape(key) + '=' + escape(value));\n };\n\n serialize(params, obj);\n\n return params.join('&').replace(/%20/g, '+');\n};\n\n/**\n * Parse a URL and return its components.\n *\n * @param {String} url\n */\n\nUrl.parse = function (url) {\n\n if (ie) {\n el.href = url;\n url = el.href;\n }\n\n el.href = url;\n\n return {\n href: el.href,\n protocol: el.protocol ? el.protocol.replace(/:$/, '') : '',\n port: el.port,\n host: el.host,\n hostname: el.hostname,\n pathname: el.pathname.charAt(0) === '/' ? el.pathname : '/' + el.pathname,\n search: el.search ? el.search.replace(/^\\?/, '') : '',\n hash: el.hash ? el.hash.replace(/^#/, '') : ''\n };\n};\n\nfunction factory(handler, next, vm) {\n return function (options) {\n return handler.call(vm, options, next);\n };\n}\n\nfunction serialize(params, obj, scope) {\n\n var array = isArray(obj),\n plain = isPlainObject(obj),\n hash;\n\n each(obj, function (value, key) {\n\n hash = isObject(value) || isArray(value);\n\n if (scope) {\n key = scope + '[' + (plain || hash ? key : '') + ']';\n }\n\n if (!scope && array) {\n params.add(value.name, value.value);\n } else if (hash) {\n serialize(params, value, key);\n } else {\n params.add(key, value);\n }\n });\n}\n\nfunction xdrClient (request) {\n return new Promise$1(function (resolve) {\n\n var xdr = new XDomainRequest(),\n handler = function (event) {\n\n var response = request.respondWith(xdr.responseText, {\n status: xdr.status,\n statusText: xdr.statusText\n });\n\n resolve(response);\n };\n\n request.abort = function () {\n return xdr.abort();\n };\n\n xdr.open(request.method, request.getUrl(), true);\n xdr.timeout = 0;\n xdr.onload = handler;\n xdr.onerror = handler;\n xdr.ontimeout = function () {};\n xdr.onprogress = function () {};\n xdr.send(request.getBody());\n });\n}\n\nvar ORIGIN_URL = Url.parse(location.href);\nvar SUPPORTS_CORS = 'withCredentials' in new XMLHttpRequest();\n\nfunction cors (request, next) {\n\n if (!isBoolean(request.crossOrigin) && crossOrigin(request)) {\n request.crossOrigin = true;\n }\n\n if (request.crossOrigin) {\n\n if (!SUPPORTS_CORS) {\n request.client = xdrClient;\n }\n\n delete request.emulateHTTP;\n }\n\n next();\n}\n\nfunction crossOrigin(request) {\n\n var requestUrl = Url.parse(Url(request));\n\n return requestUrl.protocol !== ORIGIN_URL.protocol || requestUrl.host !== ORIGIN_URL.host;\n}\n\nfunction body (request, next) {\n\n if (request.emulateJSON && isPlainObject(request.body)) {\n request.body = Url.params(request.body);\n request.headers['Content-Type'] = 'application/x-www-form-urlencoded';\n }\n\n if (isFormData(request.body)) {\n delete request.headers['Content-Type'];\n }\n\n if (isPlainObject(request.body)) {\n request.body = JSON.stringify(request.body);\n }\n\n next(function (response) {\n\n var contentType = response.headers['Content-Type'];\n\n if (isString(contentType) && contentType.indexOf('application/json') === 0) {\n\n try {\n response.data = response.json();\n } catch (e) {\n response.data = null;\n }\n } else {\n response.data = response.text();\n }\n });\n}\n\nfunction jsonpClient (request) {\n return new Promise$1(function (resolve) {\n\n var name = request.jsonp || 'callback',\n callback = '_jsonp' + Math.random().toString(36).substr(2),\n body = null,\n handler,\n script;\n\n handler = function (event) {\n\n var status = 0;\n\n if (event.type === 'load' && body !== null) {\n status = 200;\n } else if (event.type === 'error') {\n status = 404;\n }\n\n resolve(request.respondWith(body, { status: status }));\n\n delete window[callback];\n document.body.removeChild(script);\n };\n\n request.params[name] = callback;\n\n window[callback] = function (result) {\n body = JSON.stringify(result);\n };\n\n script = document.createElement('script');\n script.src = request.getUrl();\n script.type = 'text/javascript';\n script.async = true;\n script.onload = handler;\n script.onerror = handler;\n\n document.body.appendChild(script);\n });\n}\n\nfunction jsonp (request, next) {\n\n if (request.method == 'JSONP') {\n request.client = jsonpClient;\n }\n\n next(function (response) {\n\n if (request.method == 'JSONP') {\n response.data = response.json();\n }\n });\n}\n\nfunction before (request, next) {\n\n if (isFunction(request.before)) {\n request.before.call(this, request);\n }\n\n next();\n}\n\n/**\n * HTTP method override Interceptor.\n */\n\nfunction method (request, next) {\n\n if (request.emulateHTTP && /^(PUT|PATCH|DELETE)$/i.test(request.method)) {\n request.headers['X-HTTP-Method-Override'] = request.method;\n request.method = 'POST';\n }\n\n next();\n}\n\nfunction header (request, next) {\n\n request.method = request.method.toUpperCase();\n request.headers = assign({}, Http.headers.common, !request.crossOrigin ? Http.headers.custom : {}, Http.headers[request.method.toLowerCase()], request.headers);\n\n next();\n}\n\n/**\n * Timeout Interceptor.\n */\n\nfunction timeout (request, next) {\n\n var timeout;\n\n if (request.timeout) {\n timeout = setTimeout(function () {\n request.cancel();\n }, request.timeout);\n }\n\n next(function (response) {\n\n clearTimeout(timeout);\n });\n}\n\nfunction xhrClient (request) {\n return new Promise$1(function (resolve) {\n\n var xhr = new XMLHttpRequest(),\n handler = function (event) {\n\n var response = request.respondWith('response' in xhr ? xhr.response : xhr.responseText, {\n status: xhr.status === 1223 ? 204 : xhr.status, // IE9 status bug\n statusText: xhr.status === 1223 ? 'No Content' : trim(xhr.statusText),\n headers: parseHeaders(xhr.getAllResponseHeaders())\n });\n\n resolve(response);\n };\n\n request.abort = function () {\n return xhr.abort();\n };\n\n xhr.open(request.method, request.getUrl(), true);\n xhr.timeout = 0;\n xhr.onload = handler;\n xhr.onerror = handler;\n\n if (request.progress) {\n if (request.method === 'GET') {\n xhr.addEventListener('progress', request.progress);\n } else if (/^(POST|PUT)$/i.test(request.method)) {\n xhr.upload.addEventListener('progress', request.progress);\n }\n }\n\n if (request.credentials === true) {\n xhr.withCredentials = true;\n }\n\n each(request.headers || {}, function (value, header) {\n xhr.setRequestHeader(header, value);\n });\n\n xhr.send(request.getBody());\n });\n}\n\nfunction parseHeaders(str) {\n\n var headers = {},\n value,\n name,\n i;\n\n each(trim(str).split('\\n'), function (row) {\n\n i = row.indexOf(':');\n name = trim(row.slice(0, i));\n value = trim(row.slice(i + 1));\n\n if (headers[name]) {\n\n if (isArray(headers[name])) {\n headers[name].push(value);\n } else {\n headers[name] = [headers[name], value];\n }\n } else {\n\n headers[name] = value;\n }\n });\n\n return headers;\n}\n\nfunction Client (context) {\n\n var reqHandlers = [sendRequest],\n resHandlers = [],\n handler;\n\n if (!isObject(context)) {\n context = null;\n }\n\n function Client(request) {\n return new Promise$1(function (resolve) {\n\n function exec() {\n\n handler = reqHandlers.pop();\n\n if (isFunction(handler)) {\n handler.call(context, request, next);\n } else {\n warn('Invalid interceptor of type ' + typeof handler + ', must be a function');\n next();\n }\n }\n\n function next(response) {\n when(response, function (response) {\n\n if (isFunction(response)) {\n\n resHandlers.unshift(response);\n } else if (isObject(response)) {\n\n resHandlers.forEach(function (handler) {\n handler.call(context, response);\n });\n\n resolve(response);\n\n return;\n }\n\n exec();\n });\n }\n\n exec();\n }, context);\n }\n\n Client.use = function (handler) {\n reqHandlers.push(handler);\n };\n\n return Client;\n}\n\nfunction sendRequest(request, resolve) {\n\n var client = request.client || xhrClient;\n\n resolve(client(request));\n}\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\n/**\n * HTTP Response.\n */\n\nvar Response = function () {\n function Response(body, _ref) {\n var url = _ref.url;\n var headers = _ref.headers;\n var status = _ref.status;\n var statusText = _ref.statusText;\n classCallCheck(this, Response);\n\n\n this.url = url;\n this.body = body;\n this.headers = headers || {};\n this.status = status || 0;\n this.statusText = statusText || '';\n this.ok = status >= 200 && status < 300;\n }\n\n Response.prototype.text = function text() {\n return this.body;\n };\n\n Response.prototype.blob = function blob() {\n return new Blob([this.body]);\n };\n\n Response.prototype.json = function json() {\n return JSON.parse(this.body);\n };\n\n return Response;\n}();\n\nvar Request = function () {\n function Request(options) {\n classCallCheck(this, Request);\n\n\n this.method = 'GET';\n this.body = null;\n this.params = {};\n this.headers = {};\n\n assign(this, options);\n }\n\n Request.prototype.getUrl = function getUrl() {\n return Url(this);\n };\n\n Request.prototype.getBody = function getBody() {\n return this.body;\n };\n\n Request.prototype.respondWith = function respondWith(body, options) {\n return new Response(body, assign(options || {}, { url: this.getUrl() }));\n };\n\n return Request;\n}();\n\n/**\n * Service for sending network requests.\n */\n\nvar CUSTOM_HEADERS = { 'X-Requested-With': 'XMLHttpRequest' };\nvar COMMON_HEADERS = { 'Accept': 'application/json, text/plain, */*' };\nvar JSON_CONTENT_TYPE = { 'Content-Type': 'application/json;charset=utf-8' };\n\nfunction Http(options) {\n\n var self = this || {},\n client = Client(self.$vm);\n\n defaults(options || {}, self.$options, Http.options);\n\n Http.interceptors.forEach(function (handler) {\n client.use(handler);\n });\n\n return client(new Request(options)).then(function (response) {\n\n return response.ok ? response : Promise$1.reject(response);\n }, function (response) {\n\n if (response instanceof Error) {\n error(response);\n }\n\n return Promise$1.reject(response);\n });\n}\n\nHttp.options = {};\n\nHttp.headers = {\n put: JSON_CONTENT_TYPE,\n post: JSON_CONTENT_TYPE,\n patch: JSON_CONTENT_TYPE,\n delete: JSON_CONTENT_TYPE,\n custom: CUSTOM_HEADERS,\n common: COMMON_HEADERS\n};\n\nHttp.interceptors = [before, timeout, method, body, jsonp, header, cors];\n\n['get', 'delete', 'head', 'jsonp'].forEach(function (method) {\n\n Http[method] = function (url, options) {\n return this(assign(options || {}, { url: url, method: method }));\n };\n});\n\n['post', 'put', 'patch'].forEach(function (method) {\n\n Http[method] = function (url, body, options) {\n return this(assign(options || {}, { url: url, method: method, body: body }));\n };\n});\n\nfunction Resource(url, params, actions, options) {\n\n var self = this || {},\n resource = {};\n\n actions = assign({}, Resource.actions, actions);\n\n each(actions, function (action, name) {\n\n action = merge({ url: url, params: params || {} }, options, action);\n\n resource[name] = function () {\n return (self.$http || Http)(opts(action, arguments));\n };\n });\n\n return resource;\n}\n\nfunction opts(action, args) {\n\n var options = assign({}, action),\n params = {},\n body;\n\n switch (args.length) {\n\n case 2:\n\n params = args[0];\n body = args[1];\n\n break;\n\n case 1:\n\n if (/^(POST|PUT|PATCH)$/i.test(options.method)) {\n body = args[0];\n } else {\n params = args[0];\n }\n\n break;\n\n case 0:\n\n break;\n\n default:\n\n throw 'Expected up to 4 arguments [params, body], got ' + args.length + ' arguments';\n }\n\n options.body = body;\n options.params = assign({}, options.params, params);\n\n return options;\n}\n\nResource.actions = {\n\n get: { method: 'GET' },\n save: { method: 'POST' },\n query: { method: 'GET' },\n update: { method: 'PUT' },\n remove: { method: 'DELETE' },\n delete: { method: 'DELETE' }\n\n};\n\nfunction plugin(Vue) {\n\n if (plugin.installed) {\n return;\n }\n\n Util(Vue);\n\n Vue.url = Url;\n Vue.http = Http;\n Vue.resource = Resource;\n Vue.Promise = Promise$1;\n\n Object.defineProperties(Vue.prototype, {\n\n $url: {\n get: function () {\n return options(Vue.url, this, this.$options.url);\n }\n },\n\n $http: {\n get: function () {\n return options(Vue.http, this, this.$options.http);\n }\n },\n\n $resource: {\n get: function () {\n return Vue.resource.bind(this);\n }\n },\n\n $promise: {\n get: function () {\n var _this = this;\n\n return function (executor) {\n return new Vue.Promise(executor, _this);\n };\n }\n }\n\n });\n}\n\nif (typeof window !== 'undefined' && window.Vue) {\n window.Vue.use(plugin);\n}\n\nmodule.exports = plugin;\n\n\n/** WEBPACK FOOTER **\n ** ./~/vue-resource/dist/vue-resource.common.js\n **/","'use strict';\n\nvar vue = require('vue');\n\nvar main = {\n data () {\n return {\n items: [],\n query: '',\n current: -1,\n loading: false,\n queryParamName: 'q'\n }\n },\n\n computed: {\n hasItems () {\n return this.items.length > 0\n },\n\n isEmpty () {\n return !this.query\n },\n\n isDirty () {\n return !!this.query\n }\n },\n\n methods: {\n update () {\n if (!this.query) {\n return this.reset()\n }\n\n if (this.minChars && this.query.length < this.minChars) {\n return\n }\n\n this.loading = true\n\n this.fetch().then((response) => {\n if (this.query) {\n let data = response.data\n data = this.prepareResponseData ? this.prepareResponseData(data) : data\n this.items = this.limit ? data.slice(0, this.limit) : data\n this.current = -1\n this.loading = false\n }\n })\n },\n\n fetch () {\n if (!this.$http) {\n return vue.util.warn('You need to install the `vue-resource` plugin', this)\n }\n\n if (!this.src) {\n return vue.util.warn('You need to set the `src` property', this)\n }\n\n let queryParam = {\n [this.queryParamName]: this.query\n }\n\n return this.$http.get(this.src, Object.assign(queryParam, this.data))\n },\n\n reset () {\n this.items = []\n this.query = ''\n this.loading = false\n },\n\n setActive (index) {\n this.current = index\n },\n\n activeClass (index) {\n return {\n active: this.current == index\n }\n },\n\n hit () {\n if (this.current !== -1) {\n this.onHit(this.items[this.current])\n }\n },\n\n up () {\n if (this.current > 0) {\n this.current--\n } else if (this.current == -1) {\n this.current = this.items.length - 1\n } else {\n this.current = -1\n }\n },\n\n down () {\n if (this.current < this.items.length-1) {\n this.current++\n } else {\n this.current = -1\n }\n },\n\n onHit () {\n vue.util.warn('You need to implement the `onHit` method', this)\n }\n }\n}\n\nmodule.exports = main;\n\n\n/** WEBPACK FOOTER **\n ** ./~/vue-typeahead/dist/vue-typeahead.js\n **/","/*!\n * Vue.js v1.0.25\n * (c) 2016 Evan You\n * Released under the MIT License.\n */\n'use strict';\n\nfunction set(obj, key, val) {\n if (hasOwn(obj, key)) {\n obj[key] = val;\n return;\n }\n if (obj._isVue) {\n set(obj._data, key, val);\n return;\n }\n var ob = obj.__ob__;\n if (!ob) {\n obj[key] = val;\n return;\n }\n ob.convert(key, val);\n ob.dep.notify();\n if (ob.vms) {\n var i = ob.vms.length;\n while (i--) {\n var vm = ob.vms[i];\n vm._proxy(key);\n vm._digest();\n }\n }\n return val;\n}\n\n/**\n * Delete a property and trigger change if necessary.\n *\n * @param {Object} obj\n * @param {String} key\n */\n\nfunction del(obj, key) {\n if (!hasOwn(obj, key)) {\n return;\n }\n delete obj[key];\n var ob = obj.__ob__;\n if (!ob) {\n if (obj._isVue) {\n delete obj._data[key];\n obj._digest();\n }\n return;\n }\n ob.dep.notify();\n if (ob.vms) {\n var i = ob.vms.length;\n while (i--) {\n var vm = ob.vms[i];\n vm._unproxy(key);\n vm._digest();\n }\n }\n}\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n/**\n * Check whether the object has the property.\n *\n * @param {Object} obj\n * @param {String} key\n * @return {Boolean}\n */\n\nfunction hasOwn(obj, key) {\n return hasOwnProperty.call(obj, key);\n}\n\n/**\n * Check if an expression is a literal value.\n *\n * @param {String} exp\n * @return {Boolean}\n */\n\nvar literalValueRE = /^\\s?(true|false|-?[\\d\\.]+|'[^']*'|\"[^\"]*\")\\s?$/;\n\nfunction isLiteral(exp) {\n return literalValueRE.test(exp);\n}\n\n/**\n * Check if a string starts with $ or _\n *\n * @param {String} str\n * @return {Boolean}\n */\n\nfunction isReserved(str) {\n var c = (str + '').charCodeAt(0);\n return c === 0x24 || c === 0x5F;\n}\n\n/**\n * Guard text output, make sure undefined outputs\n * empty string\n *\n * @param {*} value\n * @return {String}\n */\n\nfunction _toString(value) {\n return value == null ? '' : value.toString();\n}\n\n/**\n * Check and convert possible numeric strings to numbers\n * before setting back to data\n *\n * @param {*} value\n * @return {*|Number}\n */\n\nfunction toNumber(value) {\n if (typeof value !== 'string') {\n return value;\n } else {\n var parsed = Number(value);\n return isNaN(parsed) ? value : parsed;\n }\n}\n\n/**\n * Convert string boolean literals into real booleans.\n *\n * @param {*} value\n * @return {*|Boolean}\n */\n\nfunction toBoolean(value) {\n return value === 'true' ? true : value === 'false' ? false : value;\n}\n\n/**\n * Strip quotes from a string\n *\n * @param {String} str\n * @return {String | false}\n */\n\nfunction stripQuotes(str) {\n var a = str.charCodeAt(0);\n var b = str.charCodeAt(str.length - 1);\n return a === b && (a === 0x22 || a === 0x27) ? str.slice(1, -1) : str;\n}\n\n/**\n * Camelize a hyphen-delmited string.\n *\n * @param {String} str\n * @return {String}\n */\n\nvar camelizeRE = /-(\\w)/g;\n\nfunction camelize(str) {\n return str.replace(camelizeRE, toUpper);\n}\n\nfunction toUpper(_, c) {\n return c ? c.toUpperCase() : '';\n}\n\n/**\n * Hyphenate a camelCase string.\n *\n * @param {String} str\n * @return {String}\n */\n\nvar hyphenateRE = /([a-z\\d])([A-Z])/g;\n\nfunction hyphenate(str) {\n return str.replace(hyphenateRE, '$1-$2').toLowerCase();\n}\n\n/**\n * Converts hyphen/underscore/slash delimitered names into\n * camelized classNames.\n *\n * e.g. my-component => MyComponent\n * some_else => SomeElse\n * some/comp => SomeComp\n *\n * @param {String} str\n * @return {String}\n */\n\nvar classifyRE = /(?:^|[-_\\/])(\\w)/g;\n\nfunction classify(str) {\n return str.replace(classifyRE, toUpper);\n}\n\n/**\n * Simple bind, faster than native\n *\n * @param {Function} fn\n * @param {Object} ctx\n * @return {Function}\n */\n\nfunction bind(fn, ctx) {\n return function (a) {\n var l = arguments.length;\n return l ? l > 1 ? fn.apply(ctx, arguments) : fn.call(ctx, a) : fn.call(ctx);\n };\n}\n\n/**\n * Convert an Array-like object to a real Array.\n *\n * @param {Array-like} list\n * @param {Number} [start] - start index\n * @return {Array}\n */\n\nfunction toArray(list, start) {\n start = start || 0;\n var i = list.length - start;\n var ret = new Array(i);\n while (i--) {\n ret[i] = list[i + start];\n }\n return ret;\n}\n\n/**\n * Mix properties into target object.\n *\n * @param {Object} to\n * @param {Object} from\n */\n\nfunction extend(to, from) {\n var keys = Object.keys(from);\n var i = keys.length;\n while (i--) {\n to[keys[i]] = from[keys[i]];\n }\n return to;\n}\n\n/**\n * Quick object check - this is primarily used to tell\n * Objects from primitive values when we know the value\n * is a JSON-compliant type.\n *\n * @param {*} obj\n * @return {Boolean}\n */\n\nfunction isObject(obj) {\n return obj !== null && typeof obj === 'object';\n}\n\n/**\n * Strict object type check. Only returns true\n * for plain JavaScript objects.\n *\n * @param {*} obj\n * @return {Boolean}\n */\n\nvar toString = Object.prototype.toString;\nvar OBJECT_STRING = '[object Object]';\n\nfunction isPlainObject(obj) {\n return toString.call(obj) === OBJECT_STRING;\n}\n\n/**\n * Array type check.\n *\n * @param {*} obj\n * @return {Boolean}\n */\n\nvar isArray = Array.isArray;\n\n/**\n * Define a property.\n *\n * @param {Object} obj\n * @param {String} key\n * @param {*} val\n * @param {Boolean} [enumerable]\n */\n\nfunction def(obj, key, val, enumerable) {\n Object.defineProperty(obj, key, {\n value: val,\n enumerable: !!enumerable,\n writable: true,\n configurable: true\n });\n}\n\n/**\n * Debounce a function so it only gets called after the\n * input stops arriving after the given wait period.\n *\n * @param {Function} func\n * @param {Number} wait\n * @return {Function} - the debounced function\n */\n\nfunction _debounce(func, wait) {\n var timeout, args, context, timestamp, result;\n var later = function later() {\n var last = Date.now() - timestamp;\n if (last < wait && last >= 0) {\n timeout = setTimeout(later, wait - last);\n } else {\n timeout = null;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n }\n };\n return function () {\n context = this;\n args = arguments;\n timestamp = Date.now();\n if (!timeout) {\n timeout = setTimeout(later, wait);\n }\n return result;\n };\n}\n\n/**\n * Manual indexOf because it's slightly faster than\n * native.\n *\n * @param {Array} arr\n * @param {*} obj\n */\n\nfunction indexOf(arr, obj) {\n var i = arr.length;\n while (i--) {\n if (arr[i] === obj) return i;\n }\n return -1;\n}\n\n/**\n * Make a cancellable version of an async callback.\n *\n * @param {Function} fn\n * @return {Function}\n */\n\nfunction cancellable(fn) {\n var cb = function cb() {\n if (!cb.cancelled) {\n return fn.apply(this, arguments);\n }\n };\n cb.cancel = function () {\n cb.cancelled = true;\n };\n return cb;\n}\n\n/**\n * Check if two values are loosely equal - that is,\n * if they are plain objects, do they have the same shape?\n *\n * @param {*} a\n * @param {*} b\n * @return {Boolean}\n */\n\nfunction looseEqual(a, b) {\n /* eslint-disable eqeqeq */\n return a == b || (isObject(a) && isObject(b) ? JSON.stringify(a) === JSON.stringify(b) : false);\n /* eslint-enable eqeqeq */\n}\n\nvar hasProto = ('__proto__' in {});\n\n// Browser environment sniffing\nvar inBrowser = typeof window !== 'undefined' && Object.prototype.toString.call(window) !== '[object Object]';\n\n// detect devtools\nvar devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__;\n\n// UA sniffing for working around browser-specific quirks\nvar UA = inBrowser && window.navigator.userAgent.toLowerCase();\nvar isIE = UA && UA.indexOf('trident') > 0;\nvar isIE9 = UA && UA.indexOf('msie 9.0') > 0;\nvar isAndroid = UA && UA.indexOf('android') > 0;\nvar isIos = UA && /(iphone|ipad|ipod|ios)/i.test(UA);\nvar iosVersionMatch = isIos && UA.match(/os ([\\d_]+)/);\nvar iosVersion = iosVersionMatch && iosVersionMatch[1].split('_');\n\n// detecting iOS UIWebView by indexedDB\nvar hasMutationObserverBug = iosVersion && Number(iosVersion[0]) >= 9 && Number(iosVersion[1]) >= 3 && !window.indexedDB;\n\nvar transitionProp = undefined;\nvar transitionEndEvent = undefined;\nvar animationProp = undefined;\nvar animationEndEvent = undefined;\n\n// Transition property/event sniffing\nif (inBrowser && !isIE9) {\n var isWebkitTrans = window.ontransitionend === undefined && window.onwebkittransitionend !== undefined;\n var isWebkitAnim = window.onanimationend === undefined && window.onwebkitanimationend !== undefined;\n transitionProp = isWebkitTrans ? 'WebkitTransition' : 'transition';\n transitionEndEvent = isWebkitTrans ? 'webkitTransitionEnd' : 'transitionend';\n animationProp = isWebkitAnim ? 'WebkitAnimation' : 'animation';\n animationEndEvent = isWebkitAnim ? 'webkitAnimationEnd' : 'animationend';\n}\n\n/**\n * Defer a task to execute it asynchronously. Ideally this\n * should be executed as a microtask, so we leverage\n * MutationObserver if it's available, and fallback to\n * setTimeout(0).\n *\n * @param {Function} cb\n * @param {Object} ctx\n */\n\nvar nextTick = (function () {\n var callbacks = [];\n var pending = false;\n var timerFunc;\n function nextTickHandler() {\n pending = false;\n var copies = callbacks.slice(0);\n callbacks = [];\n for (var i = 0; i < copies.length; i++) {\n copies[i]();\n }\n }\n\n /* istanbul ignore if */\n if (typeof MutationObserver !== 'undefined' && !hasMutationObserverBug) {\n var counter = 1;\n var observer = new MutationObserver(nextTickHandler);\n var textNode = document.createTextNode(counter);\n observer.observe(textNode, {\n characterData: true\n });\n timerFunc = function () {\n counter = (counter + 1) % 2;\n textNode.data = counter;\n };\n } else {\n // webpack attempts to inject a shim for setImmediate\n // if it is used as a global, so we have to work around that to\n // avoid bundling unnecessary code.\n var context = inBrowser ? window : typeof global !== 'undefined' ? global : {};\n timerFunc = context.setImmediate || setTimeout;\n }\n return function (cb, ctx) {\n var func = ctx ? function () {\n cb.call(ctx);\n } : cb;\n callbacks.push(func);\n if (pending) return;\n pending = true;\n timerFunc(nextTickHandler, 0);\n };\n})();\n\nvar _Set = undefined;\n/* istanbul ignore if */\nif (typeof Set !== 'undefined' && Set.toString().match(/native code/)) {\n // use native Set when available.\n _Set = Set;\n} else {\n // a non-standard Set polyfill that only works with primitive keys.\n _Set = function () {\n this.set = Object.create(null);\n };\n _Set.prototype.has = function (key) {\n return this.set[key] !== undefined;\n };\n _Set.prototype.add = function (key) {\n this.set[key] = 1;\n };\n _Set.prototype.clear = function () {\n this.set = Object.create(null);\n };\n}\n\nfunction Cache(limit) {\n this.size = 0;\n this.limit = limit;\n this.head = this.tail = undefined;\n this._keymap = Object.create(null);\n}\n\nvar p = Cache.prototype;\n\n/**\n * Put <value> into the cache associated with <key>.\n * Returns the entry which was removed to make room for\n * the new entry. Otherwise undefined is returned.\n * (i.e. if there was enough room already).\n *\n * @param {String} key\n * @param {*} value\n * @return {Entry|undefined}\n */\n\np.put = function (key, value) {\n var removed;\n\n var entry = this.get(key, true);\n if (!entry) {\n if (this.size === this.limit) {\n removed = this.shift();\n }\n entry = {\n key: key\n };\n this._keymap[key] = entry;\n if (this.tail) {\n this.tail.newer = entry;\n entry.older = this.tail;\n } else {\n this.head = entry;\n }\n this.tail = entry;\n this.size++;\n }\n entry.value = value;\n\n return removed;\n};\n\n/**\n * Purge the least recently used (oldest) entry from the\n * cache. Returns the removed entry or undefined if the\n * cache was empty.\n */\n\np.shift = function () {\n var entry = this.head;\n if (entry) {\n this.head = this.head.newer;\n this.head.older = undefined;\n entry.newer = entry.older = undefined;\n this._keymap[entry.key] = undefined;\n this.size--;\n }\n return entry;\n};\n\n/**\n * Get and register recent use of <key>. Returns the value\n * associated with <key> or undefined if not in cache.\n *\n * @param {String} key\n * @param {Boolean} returnEntry\n * @return {Entry|*}\n */\n\np.get = function (key, returnEntry) {\n var entry = this._keymap[key];\n if (entry === undefined) return;\n if (entry === this.tail) {\n return returnEntry ? entry : entry.value;\n }\n // HEAD--------------TAIL\n // <.older .newer>\n // <--- add direction --\n // A B C <D> E\n if (entry.newer) {\n if (entry === this.head) {\n this.head = entry.newer;\n }\n entry.newer.older = entry.older; // C <-- E.\n }\n if (entry.older) {\n entry.older.newer = entry.newer; // C. --> E\n }\n entry.newer = undefined; // D --x\n entry.older = this.tail; // D. --> E\n if (this.tail) {\n this.tail.newer = entry; // E. <-- D\n }\n this.tail = entry;\n return returnEntry ? entry : entry.value;\n};\n\nvar cache$1 = new Cache(1000);\nvar filterTokenRE = /[^\\s'\"]+|'[^']*'|\"[^\"]*\"/g;\nvar reservedArgRE = /^in$|^-?\\d+/;\n\n/**\n * Parser state\n */\n\nvar str;\nvar dir;\nvar c;\nvar prev;\nvar i;\nvar l;\nvar lastFilterIndex;\nvar inSingle;\nvar inDouble;\nvar curly;\nvar square;\nvar paren;\n/**\n * Push a filter to the current directive object\n */\n\nfunction pushFilter() {\n var exp = str.slice(lastFilterIndex, i).trim();\n var filter;\n if (exp) {\n filter = {};\n var tokens = exp.match(filterTokenRE);\n filter.name = tokens[0];\n if (tokens.length > 1) {\n filter.args = tokens.slice(1).map(processFilterArg);\n }\n }\n if (filter) {\n (dir.filters = dir.filters || []).push(filter);\n }\n lastFilterIndex = i + 1;\n}\n\n/**\n * Check if an argument is dynamic and strip quotes.\n *\n * @param {String} arg\n * @return {Object}\n */\n\nfunction processFilterArg(arg) {\n if (reservedArgRE.test(arg)) {\n return {\n value: toNumber(arg),\n dynamic: false\n };\n } else {\n var stripped = stripQuotes(arg);\n var dynamic = stripped === arg;\n return {\n value: dynamic ? arg : stripped,\n dynamic: dynamic\n };\n }\n}\n\n/**\n * Parse a directive value and extract the expression\n * and its filters into a descriptor.\n *\n * Example:\n *\n * \"a + 1 | uppercase\" will yield:\n * {\n * expression: 'a + 1',\n * filters: [\n * { name: 'uppercase', args: null }\n * ]\n * }\n *\n * @param {String} s\n * @return {Object}\n */\n\nfunction parseDirective(s) {\n var hit = cache$1.get(s);\n if (hit) {\n return hit;\n }\n\n // reset parser state\n str = s;\n inSingle = inDouble = false;\n curly = square = paren = 0;\n lastFilterIndex = 0;\n dir = {};\n\n for (i = 0, l = str.length; i < l; i++) {\n prev = c;\n c = str.charCodeAt(i);\n if (inSingle) {\n // check single quote\n if (c === 0x27 && prev !== 0x5C) inSingle = !inSingle;\n } else if (inDouble) {\n // check double quote\n if (c === 0x22 && prev !== 0x5C) inDouble = !inDouble;\n } else if (c === 0x7C && // pipe\n str.charCodeAt(i + 1) !== 0x7C && str.charCodeAt(i - 1) !== 0x7C) {\n if (dir.expression == null) {\n // first filter, end of expression\n lastFilterIndex = i + 1;\n dir.expression = str.slice(0, i).trim();\n } else {\n // already has filter\n pushFilter();\n }\n } else {\n switch (c) {\n case 0x22:\n inDouble = true;break; // \"\n case 0x27:\n inSingle = true;break; // '\n case 0x28:\n paren++;break; // (\n case 0x29:\n paren--;break; // )\n case 0x5B:\n square++;break; // [\n case 0x5D:\n square--;break; // ]\n case 0x7B:\n curly++;break; // {\n case 0x7D:\n curly--;break; // }\n }\n }\n }\n\n if (dir.expression == null) {\n dir.expression = str.slice(0, i).trim();\n } else if (lastFilterIndex !== 0) {\n pushFilter();\n }\n\n cache$1.put(s, dir);\n return dir;\n}\n\nvar directive = Object.freeze({\n parseDirective: parseDirective\n});\n\nvar regexEscapeRE = /[-.*+?^${}()|[\\]\\/\\\\]/g;\nvar cache = undefined;\nvar tagRE = undefined;\nvar htmlRE = undefined;\n/**\n * Escape a string so it can be used in a RegExp\n * constructor.\n *\n * @param {String} str\n */\n\nfunction escapeRegex(str) {\n return str.replace(regexEscapeRE, '\\\\$&');\n}\n\nfunction compileRegex() {\n var open = escapeRegex(config.delimiters[0]);\n var close = escapeRegex(config.delimiters[1]);\n var unsafeOpen = escapeRegex(config.unsafeDelimiters[0]);\n var unsafeClose = escapeRegex(config.unsafeDelimiters[1]);\n tagRE = new RegExp(unsafeOpen + '((?:.|\\\\n)+?)' + unsafeClose + '|' + open + '((?:.|\\\\n)+?)' + close, 'g');\n htmlRE = new RegExp('^' + unsafeOpen + '((?:.|\\\\n)+?)' + unsafeClose + '$');\n // reset cache\n cache = new Cache(1000);\n}\n\n/**\n * Parse a template text string into an array of tokens.\n *\n * @param {String} text\n * @return {Array<Object> | null}\n * - {String} type\n * - {String} value\n * - {Boolean} [html]\n * - {Boolean} [oneTime]\n */\n\nfunction parseText(text) {\n if (!cache) {\n compileRegex();\n }\n var hit = cache.get(text);\n if (hit) {\n return hit;\n }\n if (!tagRE.test(text)) {\n return null;\n }\n var tokens = [];\n var lastIndex = tagRE.lastIndex = 0;\n var match, index, html, value, first, oneTime;\n /* eslint-disable no-cond-assign */\n while (match = tagRE.exec(text)) {\n /* eslint-enable no-cond-assign */\n index = match.index;\n // push text token\n if (index > lastIndex) {\n tokens.push({\n value: text.slice(lastIndex, index)\n });\n }\n // tag token\n html = htmlRE.test(match[0]);\n value = html ? match[1] : match[2];\n first = value.charCodeAt(0);\n oneTime = first === 42; // *\n value = oneTime ? value.slice(1) : value;\n tokens.push({\n tag: true,\n value: value.trim(),\n html: html,\n oneTime: oneTime\n });\n lastIndex = index + match[0].length;\n }\n if (lastIndex < text.length) {\n tokens.push({\n value: text.slice(lastIndex)\n });\n }\n cache.put(text, tokens);\n return tokens;\n}\n\n/**\n * Format a list of tokens into an expression.\n * e.g. tokens parsed from 'a {{b}} c' can be serialized\n * into one single expression as '\"a \" + b + \" c\"'.\n *\n * @param {Array} tokens\n * @param {Vue} [vm]\n * @return {String}\n */\n\nfunction tokensToExp(tokens, vm) {\n if (tokens.length > 1) {\n return tokens.map(function (token) {\n return formatToken(token, vm);\n }).join('+');\n } else {\n return formatToken(tokens[0], vm, true);\n }\n}\n\n/**\n * Format a single token.\n *\n * @param {Object} token\n * @param {Vue} [vm]\n * @param {Boolean} [single]\n * @return {String}\n */\n\nfunction formatToken(token, vm, single) {\n return token.tag ? token.oneTime && vm ? '\"' + vm.$eval(token.value) + '\"' : inlineFilters(token.value, single) : '\"' + token.value + '\"';\n}\n\n/**\n * For an attribute with multiple interpolation tags,\n * e.g. attr=\"some-{{thing | filter}}\", in order to combine\n * the whole thing into a single watchable expression, we\n * have to inline those filters. This function does exactly\n * that. This is a bit hacky but it avoids heavy changes\n * to directive parser and watcher mechanism.\n *\n * @param {String} exp\n * @param {Boolean} single\n * @return {String}\n */\n\nvar filterRE = /[^|]\\|[^|]/;\nfunction inlineFilters(exp, single) {\n if (!filterRE.test(exp)) {\n return single ? exp : '(' + exp + ')';\n } else {\n var dir = parseDirective(exp);\n if (!dir.filters) {\n return '(' + exp + ')';\n } else {\n return 'this._applyFilters(' + dir.expression + // value\n ',null,' + // oldValue (null for read)\n JSON.stringify(dir.filters) + // filter descriptors\n ',false)'; // write?\n }\n }\n}\n\nvar text = Object.freeze({\n compileRegex: compileRegex,\n parseText: parseText,\n tokensToExp: tokensToExp\n});\n\nvar delimiters = ['{{', '}}'];\nvar unsafeDelimiters = ['{{{', '}}}'];\n\nvar config = Object.defineProperties({\n\n /**\n * Whether to print debug messages.\n * Also enables stack trace for warnings.\n *\n * @type {Boolean}\n */\n\n debug: false,\n\n /**\n * Whether to suppress warnings.\n *\n * @type {Boolean}\n */\n\n silent: false,\n\n /**\n * Whether to use async rendering.\n */\n\n async: true,\n\n /**\n * Whether to warn against errors caught when evaluating\n * expressions.\n */\n\n warnExpressionErrors: true,\n\n /**\n * Whether to allow devtools inspection.\n * Disabled by default in production builds.\n */\n\n devtools: process.env.NODE_ENV !== 'production',\n\n /**\n * Internal flag to indicate the delimiters have been\n * changed.\n *\n * @type {Boolean}\n */\n\n _delimitersChanged: true,\n\n /**\n * List of asset types that a component can own.\n *\n * @type {Array}\n */\n\n _assetTypes: ['component', 'directive', 'elementDirective', 'filter', 'transition', 'partial'],\n\n /**\n * prop binding modes\n */\n\n _propBindingModes: {\n ONE_WAY: 0,\n TWO_WAY: 1,\n ONE_TIME: 2\n },\n\n /**\n * Max circular updates allowed in a batcher flush cycle.\n */\n\n _maxUpdateCount: 100\n\n}, {\n delimiters: { /**\n * Interpolation delimiters. Changing these would trigger\n * the text parser to re-compile the regular expressions.\n *\n * @type {Array<String>}\n */\n\n get: function get() {\n return delimiters;\n },\n set: function set(val) {\n delimiters = val;\n compileRegex();\n },\n configurable: true,\n enumerable: true\n },\n unsafeDelimiters: {\n get: function get() {\n return unsafeDelimiters;\n },\n set: function set(val) {\n unsafeDelimiters = val;\n compileRegex();\n },\n configurable: true,\n enumerable: true\n }\n});\n\nvar warn = undefined;\nvar formatComponentName = undefined;\n\nif (process.env.NODE_ENV !== 'production') {\n (function () {\n var hasConsole = typeof console !== 'undefined';\n\n warn = function (msg, vm) {\n if (hasConsole && !config.silent) {\n console.error('[Vue warn]: ' + msg + (vm ? formatComponentName(vm) : ''));\n }\n };\n\n formatComponentName = function (vm) {\n var name = vm._isVue ? vm.$options.name : vm.name;\n return name ? ' (found in component: <' + hyphenate(name) + '>)' : '';\n };\n })();\n}\n\n/**\n * Append with transition.\n *\n * @param {Element} el\n * @param {Element} target\n * @param {Vue} vm\n * @param {Function} [cb]\n */\n\nfunction appendWithTransition(el, target, vm, cb) {\n applyTransition(el, 1, function () {\n target.appendChild(el);\n }, vm, cb);\n}\n\n/**\n * InsertBefore with transition.\n *\n * @param {Element} el\n * @param {Element} target\n * @param {Vue} vm\n * @param {Function} [cb]\n */\n\nfunction beforeWithTransition(el, target, vm, cb) {\n applyTransition(el, 1, function () {\n before(el, target);\n }, vm, cb);\n}\n\n/**\n * Remove with transition.\n *\n * @param {Element} el\n * @param {Vue} vm\n * @param {Function} [cb]\n */\n\nfunction removeWithTransition(el, vm, cb) {\n applyTransition(el, -1, function () {\n remove(el);\n }, vm, cb);\n}\n\n/**\n * Apply transitions with an operation callback.\n *\n * @param {Element} el\n * @param {Number} direction\n * 1: enter\n * -1: leave\n * @param {Function} op - the actual DOM operation\n * @param {Vue} vm\n * @param {Function} [cb]\n */\n\nfunction applyTransition(el, direction, op, vm, cb) {\n var transition = el.__v_trans;\n if (!transition ||\n // skip if there are no js hooks and CSS transition is\n // not supported\n !transition.hooks && !transitionEndEvent ||\n // skip transitions for initial compile\n !vm._isCompiled ||\n // if the vm is being manipulated by a parent directive\n // during the parent's compilation phase, skip the\n // animation.\n vm.$parent && !vm.$parent._isCompiled) {\n op();\n if (cb) cb();\n return;\n }\n var action = direction > 0 ? 'enter' : 'leave';\n transition[action](op, cb);\n}\n\nvar transition = Object.freeze({\n appendWithTransition: appendWithTransition,\n beforeWithTransition: beforeWithTransition,\n removeWithTransition: removeWithTransition,\n applyTransition: applyTransition\n});\n\n/**\n * Query an element selector if it's not an element already.\n *\n * @param {String|Element} el\n * @return {Element}\n */\n\nfunction query(el) {\n if (typeof el === 'string') {\n var selector = el;\n el = document.querySelector(el);\n if (!el) {\n process.env.NODE_ENV !== 'production' && warn('Cannot find element: ' + selector);\n }\n }\n return el;\n}\n\n/**\n * Check if a node is in the document.\n * Note: document.documentElement.contains should work here\n * but always returns false for comment nodes in phantomjs,\n * making unit tests difficult. This is fixed by doing the\n * contains() check on the node's parentNode instead of\n * the node itself.\n *\n * @param {Node} node\n * @return {Boolean}\n */\n\nfunction inDoc(node) {\n if (!node) return false;\n var doc = node.ownerDocument.documentElement;\n var parent = node.parentNode;\n return doc === node || doc === parent || !!(parent && parent.nodeType === 1 && doc.contains(parent));\n}\n\n/**\n * Get and remove an attribute from a node.\n *\n * @param {Node} node\n * @param {String} _attr\n */\n\nfunction getAttr(node, _attr) {\n var val = node.getAttribute(_attr);\n if (val !== null) {\n node.removeAttribute(_attr);\n }\n return val;\n}\n\n/**\n * Get an attribute with colon or v-bind: prefix.\n *\n * @param {Node} node\n * @param {String} name\n * @return {String|null}\n */\n\nfunction getBindAttr(node, name) {\n var val = getAttr(node, ':' + name);\n if (val === null) {\n val = getAttr(node, 'v-bind:' + name);\n }\n return val;\n}\n\n/**\n * Check the presence of a bind attribute.\n *\n * @param {Node} node\n * @param {String} name\n * @return {Boolean}\n */\n\nfunction hasBindAttr(node, name) {\n return node.hasAttribute(name) || node.hasAttribute(':' + name) || node.hasAttribute('v-bind:' + name);\n}\n\n/**\n * Insert el before target\n *\n * @param {Element} el\n * @param {Element} target\n */\n\nfunction before(el, target) {\n target.parentNode.insertBefore(el, target);\n}\n\n/**\n * Insert el after target\n *\n * @param {Element} el\n * @param {Element} target\n */\n\nfunction after(el, target) {\n if (target.nextSibling) {\n before(el, target.nextSibling);\n } else {\n target.parentNode.appendChild(el);\n }\n}\n\n/**\n * Remove el from DOM\n *\n * @param {Element} el\n */\n\nfunction remove(el) {\n el.parentNode.removeChild(el);\n}\n\n/**\n * Prepend el to target\n *\n * @param {Element} el\n * @param {Element} target\n */\n\nfunction prepend(el, target) {\n if (target.firstChild) {\n before(el, target.firstChild);\n } else {\n target.appendChild(el);\n }\n}\n\n/**\n * Replace target with el\n *\n * @param {Element} target\n * @param {Element} el\n */\n\nfunction replace(target, el) {\n var parent = target.parentNode;\n if (parent) {\n parent.replaceChild(el, target);\n }\n}\n\n/**\n * Add event listener shorthand.\n *\n * @param {Element} el\n * @param {String} event\n * @param {Function} cb\n * @param {Boolean} [useCapture]\n */\n\nfunction on(el, event, cb, useCapture) {\n el.addEventListener(event, cb, useCapture);\n}\n\n/**\n * Remove event listener shorthand.\n *\n * @param {Element} el\n * @param {String} event\n * @param {Function} cb\n */\n\nfunction off(el, event, cb) {\n el.removeEventListener(event, cb);\n}\n\n/**\n * For IE9 compat: when both class and :class are present\n * getAttribute('class') returns wrong value...\n *\n * @param {Element} el\n * @return {String}\n */\n\nfunction getClass(el) {\n var classname = el.className;\n if (typeof classname === 'object') {\n classname = classname.baseVal || '';\n }\n return classname;\n}\n\n/**\n * In IE9, setAttribute('class') will result in empty class\n * if the element also has the :class attribute; However in\n * PhantomJS, setting `className` does not work on SVG elements...\n * So we have to do a conditional check here.\n *\n * @param {Element} el\n * @param {String} cls\n */\n\nfunction setClass(el, cls) {\n /* istanbul ignore if */\n if (isIE9 && !/svg$/.test(el.namespaceURI)) {\n el.className = cls;\n } else {\n el.setAttribute('class', cls);\n }\n}\n\n/**\n * Add class with compatibility for IE & SVG\n *\n * @param {Element} el\n * @param {String} cls\n */\n\nfunction addClass(el, cls) {\n if (el.classList) {\n el.classList.add(cls);\n } else {\n var cur = ' ' + getClass(el) + ' ';\n if (cur.indexOf(' ' + cls + ' ') < 0) {\n setClass(el, (cur + cls).trim());\n }\n }\n}\n\n/**\n * Remove class with compatibility for IE & SVG\n *\n * @param {Element} el\n * @param {String} cls\n */\n\nfunction removeClass(el, cls) {\n if (el.classList) {\n el.classList.remove(cls);\n } else {\n var cur = ' ' + getClass(el) + ' ';\n var tar = ' ' + cls + ' ';\n while (cur.indexOf(tar) >= 0) {\n cur = cur.replace(tar, ' ');\n }\n setClass(el, cur.trim());\n }\n if (!el.className) {\n el.removeAttribute('class');\n }\n}\n\n/**\n * Extract raw content inside an element into a temporary\n * container div\n *\n * @param {Element} el\n * @param {Boolean} asFragment\n * @return {Element|DocumentFragment}\n */\n\nfunction extractContent(el, asFragment) {\n var child;\n var rawContent;\n /* istanbul ignore if */\n if (isTemplate(el) && isFragment(el.content)) {\n el = el.content;\n }\n if (el.hasChildNodes()) {\n trimNode(el);\n rawContent = asFragment ? document.createDocumentFragment() : document.createElement('div');\n /* eslint-disable no-cond-assign */\n while (child = el.firstChild) {\n /* eslint-enable no-cond-assign */\n rawContent.appendChild(child);\n }\n }\n return rawContent;\n}\n\n/**\n * Trim possible empty head/tail text and comment\n * nodes inside a parent.\n *\n * @param {Node} node\n */\n\nfunction trimNode(node) {\n var child;\n /* eslint-disable no-sequences */\n while ((child = node.firstChild, isTrimmable(child))) {\n node.removeChild(child);\n }\n while ((child = node.lastChild, isTrimmable(child))) {\n node.removeChild(child);\n }\n /* eslint-enable no-sequences */\n}\n\nfunction isTrimmable(node) {\n return node && (node.nodeType === 3 && !node.data.trim() || node.nodeType === 8);\n}\n\n/**\n * Check if an element is a template tag.\n * Note if the template appears inside an SVG its tagName\n * will be in lowercase.\n *\n * @param {Element} el\n */\n\nfunction isTemplate(el) {\n return el.tagName && el.tagName.toLowerCase() === 'template';\n}\n\n/**\n * Create an \"anchor\" for performing dom insertion/removals.\n * This is used in a number of scenarios:\n * - fragment instance\n * - v-html\n * - v-if\n * - v-for\n * - component\n *\n * @param {String} content\n * @param {Boolean} persist - IE trashes empty textNodes on\n * cloneNode(true), so in certain\n * cases the anchor needs to be\n * non-empty to be persisted in\n * templates.\n * @return {Comment|Text}\n */\n\nfunction createAnchor(content, persist) {\n var anchor = config.debug ? document.createComment(content) : document.createTextNode(persist ? ' ' : '');\n anchor.__v_anchor = true;\n return anchor;\n}\n\n/**\n * Find a component ref attribute that starts with $.\n *\n * @param {Element} node\n * @return {String|undefined}\n */\n\nvar refRE = /^v-ref:/;\n\nfunction findRef(node) {\n if (node.hasAttributes()) {\n var attrs = node.attributes;\n for (var i = 0, l = attrs.length; i < l; i++) {\n var name = attrs[i].name;\n if (refRE.test(name)) {\n return camelize(name.replace(refRE, ''));\n }\n }\n }\n}\n\n/**\n * Map a function to a range of nodes .\n *\n * @param {Node} node\n * @param {Node} end\n * @param {Function} op\n */\n\nfunction mapNodeRange(node, end, op) {\n var next;\n while (node !== end) {\n next = node.nextSibling;\n op(node);\n node = next;\n }\n op(end);\n}\n\n/**\n * Remove a range of nodes with transition, store\n * the nodes in a fragment with correct ordering,\n * and call callback when done.\n *\n * @param {Node} start\n * @param {Node} end\n * @param {Vue} vm\n * @param {DocumentFragment} frag\n * @param {Function} cb\n */\n\nfunction removeNodeRange(start, end, vm, frag, cb) {\n var done = false;\n var removed = 0;\n var nodes = [];\n mapNodeRange(start, end, function (node) {\n if (node === end) done = true;\n nodes.push(node);\n removeWithTransition(node, vm, onRemoved);\n });\n function onRemoved() {\n removed++;\n if (done && removed >= nodes.length) {\n for (var i = 0; i < nodes.length; i++) {\n frag.appendChild(nodes[i]);\n }\n cb && cb();\n }\n }\n}\n\n/**\n * Check if a node is a DocumentFragment.\n *\n * @param {Node} node\n * @return {Boolean}\n */\n\nfunction isFragment(node) {\n return node && node.nodeType === 11;\n}\n\n/**\n * Get outerHTML of elements, taking care\n * of SVG elements in IE as well.\n *\n * @param {Element} el\n * @return {String}\n */\n\nfunction getOuterHTML(el) {\n if (el.outerHTML) {\n return el.outerHTML;\n } else {\n var container = document.createElement('div');\n container.appendChild(el.cloneNode(true));\n return container.innerHTML;\n }\n}\n\nvar commonTagRE = /^(div|p|span|img|a|b|i|br|ul|ol|li|h1|h2|h3|h4|h5|h6|code|pre|table|th|td|tr|form|label|input|select|option|nav|article|section|header|footer)$/i;\nvar reservedTagRE = /^(slot|partial|component)$/i;\n\nvar isUnknownElement = undefined;\nif (process.env.NODE_ENV !== 'production') {\n isUnknownElement = function (el, tag) {\n if (tag.indexOf('-') > -1) {\n // http://stackoverflow.com/a/28210364/1070244\n return el.constructor === window.HTMLUnknownElement || el.constructor === window.HTMLElement;\n } else {\n return (/HTMLUnknownElement/.test(el.toString()) &&\n // Chrome returns unknown for several HTML5 elements.\n // https://code.google.com/p/chromium/issues/detail?id=540526\n // Firefox returns unknown for some \"Interactive elements.\"\n !/^(data|time|rtc|rb|details|dialog|summary)$/.test(tag)\n );\n }\n };\n}\n\n/**\n * Check if an element is a component, if yes return its\n * component id.\n *\n * @param {Element} el\n * @param {Object} options\n * @return {Object|undefined}\n */\n\nfunction checkComponentAttr(el, options) {\n var tag = el.tagName.toLowerCase();\n var hasAttrs = el.hasAttributes();\n if (!commonTagRE.test(tag) && !reservedTagRE.test(tag)) {\n if (resolveAsset(options, 'components', tag)) {\n return { id: tag };\n } else {\n var is = hasAttrs && getIsBinding(el, options);\n if (is) {\n return is;\n } else if (process.env.NODE_ENV !== 'production') {\n var expectedTag = options._componentNameMap && options._componentNameMap[tag];\n if (expectedTag) {\n warn('Unknown custom element: <' + tag + '> - ' + 'did you mean <' + expectedTag + '>? ' + 'HTML is case-insensitive, remember to use kebab-case in templates.');\n } else if (isUnknownElement(el, tag)) {\n warn('Unknown custom element: <' + tag + '> - did you ' + 'register the component correctly? For recursive components, ' + 'make sure to provide the \"name\" option.');\n }\n }\n }\n } else if (hasAttrs) {\n return getIsBinding(el, options);\n }\n}\n\n/**\n * Get \"is\" binding from an element.\n *\n * @param {Element} el\n * @param {Object} options\n * @return {Object|undefined}\n */\n\nfunction getIsBinding(el, options) {\n // dynamic syntax\n var exp = el.getAttribute('is');\n if (exp != null) {\n if (resolveAsset(options, 'components', exp)) {\n el.removeAttribute('is');\n return { id: exp };\n }\n } else {\n exp = getBindAttr(el, 'is');\n if (exp != null) {\n return { id: exp, dynamic: true };\n }\n }\n}\n\n/**\n * Option overwriting strategies are functions that handle\n * how to merge a parent option value and a child option\n * value into the final value.\n *\n * All strategy functions follow the same signature:\n *\n * @param {*} parentVal\n * @param {*} childVal\n * @param {Vue} [vm]\n */\n\nvar strats = config.optionMergeStrategies = Object.create(null);\n\n/**\n * Helper that recursively merges two data objects together.\n */\n\nfunction mergeData(to, from) {\n var key, toVal, fromVal;\n for (key in from) {\n toVal = to[key];\n fromVal = from[key];\n if (!hasOwn(to, key)) {\n set(to, key, fromVal);\n } else if (isObject(toVal) && isObject(fromVal)) {\n mergeData(toVal, fromVal);\n }\n }\n return to;\n}\n\n/**\n * Data\n */\n\nstrats.data = function (parentVal, childVal, vm) {\n if (!vm) {\n // in a Vue.extend merge, both should be functions\n if (!childVal) {\n return parentVal;\n }\n if (typeof childVal !== 'function') {\n process.env.NODE_ENV !== 'production' && warn('The \"data\" option should be a function ' + 'that returns a per-instance value in component ' + 'definitions.', vm);\n return parentVal;\n }\n if (!parentVal) {\n return childVal;\n }\n // when parentVal & childVal are both present,\n // we need to return a function that returns the\n // merged result of both functions... no need to\n // check if parentVal is a function here because\n // it has to be a function to pass previous merges.\n return function mergedDataFn() {\n return mergeData(childVal.call(this), parentVal.call(this));\n };\n } else if (parentVal || childVal) {\n return function mergedInstanceDataFn() {\n // instance merge\n var instanceData = typeof childVal === 'function' ? childVal.call(vm) : childVal;\n var defaultData = typeof parentVal === 'function' ? parentVal.call(vm) : undefined;\n if (instanceData) {\n return mergeData(instanceData, defaultData);\n } else {\n return defaultData;\n }\n };\n }\n};\n\n/**\n * El\n */\n\nstrats.el = function (parentVal, childVal, vm) {\n if (!vm && childVal && typeof childVal !== 'function') {\n process.env.NODE_ENV !== 'production' && warn('The \"el\" option should be a function ' + 'that returns a per-instance value in component ' + 'definitions.', vm);\n return;\n }\n var ret = childVal || parentVal;\n // invoke the element factory if this is instance merge\n return vm && typeof ret === 'function' ? ret.call(vm) : ret;\n};\n\n/**\n * Hooks and param attributes are merged as arrays.\n */\n\nstrats.init = strats.created = strats.ready = strats.attached = strats.detached = strats.beforeCompile = strats.compiled = strats.beforeDestroy = strats.destroyed = strats.activate = function (parentVal, childVal) {\n return childVal ? parentVal ? parentVal.concat(childVal) : isArray(childVal) ? childVal : [childVal] : parentVal;\n};\n\n/**\n * Assets\n *\n * When a vm is present (instance creation), we need to do\n * a three-way merge between constructor options, instance\n * options and parent options.\n */\n\nfunction mergeAssets(parentVal, childVal) {\n var res = Object.create(parentVal || null);\n return childVal ? extend(res, guardArrayAssets(childVal)) : res;\n}\n\nconfig._assetTypes.forEach(function (type) {\n strats[type + 's'] = mergeAssets;\n});\n\n/**\n * Events & Watchers.\n *\n * Events & watchers hashes should not overwrite one\n * another, so we merge them as arrays.\n */\n\nstrats.watch = strats.events = function (parentVal, childVal) {\n if (!childVal) return parentVal;\n if (!parentVal) return childVal;\n var ret = {};\n extend(ret, parentVal);\n for (var key in childVal) {\n var parent = ret[key];\n var child = childVal[key];\n if (parent && !isArray(parent)) {\n parent = [parent];\n }\n ret[key] = parent ? parent.concat(child) : [child];\n }\n return ret;\n};\n\n/**\n * Other object hashes.\n */\n\nstrats.props = strats.methods = strats.computed = function (parentVal, childVal) {\n if (!childVal) return parentVal;\n if (!parentVal) return childVal;\n var ret = Object.create(null);\n extend(ret, parentVal);\n extend(ret, childVal);\n return ret;\n};\n\n/**\n * Default strategy.\n */\n\nvar defaultStrat = function defaultStrat(parentVal, childVal) {\n return childVal === undefined ? parentVal : childVal;\n};\n\n/**\n * Make sure component options get converted to actual\n * constructors.\n *\n * @param {Object} options\n */\n\nfunction guardComponents(options) {\n if (options.components) {\n var components = options.components = guardArrayAssets(options.components);\n var ids = Object.keys(components);\n var def;\n if (process.env.NODE_ENV !== 'production') {\n var map = options._componentNameMap = {};\n }\n for (var i = 0, l = ids.length; i < l; i++) {\n var key = ids[i];\n if (commonTagRE.test(key) || reservedTagRE.test(key)) {\n process.env.NODE_ENV !== 'production' && warn('Do not use built-in or reserved HTML elements as component ' + 'id: ' + key);\n continue;\n }\n // record a all lowercase <-> kebab-case mapping for\n // possible custom element case error warning\n if (process.env.NODE_ENV !== 'production') {\n map[key.replace(/-/g, '').toLowerCase()] = hyphenate(key);\n }\n def = components[key];\n if (isPlainObject(def)) {\n components[key] = Vue.extend(def);\n }\n }\n }\n}\n\n/**\n * Ensure all props option syntax are normalized into the\n * Object-based format.\n *\n * @param {Object} options\n */\n\nfunction guardProps(options) {\n var props = options.props;\n var i, val;\n if (isArray(props)) {\n options.props = {};\n i = props.length;\n while (i--) {\n val = props[i];\n if (typeof val === 'string') {\n options.props[val] = null;\n } else if (val.name) {\n options.props[val.name] = val;\n }\n }\n } else if (isPlainObject(props)) {\n var keys = Object.keys(props);\n i = keys.length;\n while (i--) {\n val = props[keys[i]];\n if (typeof val === 'function') {\n props[keys[i]] = { type: val };\n }\n }\n }\n}\n\n/**\n * Guard an Array-format assets option and converted it\n * into the key-value Object format.\n *\n * @param {Object|Array} assets\n * @return {Object}\n */\n\nfunction guardArrayAssets(assets) {\n if (isArray(assets)) {\n var res = {};\n var i = assets.length;\n var asset;\n while (i--) {\n asset = assets[i];\n var id = typeof asset === 'function' ? asset.options && asset.options.name || asset.id : asset.name || asset.id;\n if (!id) {\n process.env.NODE_ENV !== 'production' && warn('Array-syntax assets must provide a \"name\" or \"id\" field.');\n } else {\n res[id] = asset;\n }\n }\n return res;\n }\n return assets;\n}\n\n/**\n * Merge two option objects into a new one.\n * Core utility used in both instantiation and inheritance.\n *\n * @param {Object} parent\n * @param {Object} child\n * @param {Vue} [vm] - if vm is present, indicates this is\n * an instantiation merge.\n */\n\nfunction mergeOptions(parent, child, vm) {\n guardComponents(child);\n guardProps(child);\n if (process.env.NODE_ENV !== 'production') {\n if (child.propsData && !vm) {\n warn('propsData can only be used as an instantiation option.');\n }\n }\n var options = {};\n var key;\n if (child['extends']) {\n parent = typeof child['extends'] === 'function' ? mergeOptions(parent, child['extends'].options, vm) : mergeOptions(parent, child['extends'], vm);\n }\n if (child.mixins) {\n for (var i = 0, l = child.mixins.length; i < l; i++) {\n var mixin = child.mixins[i];\n var mixinOptions = mixin.prototype instanceof Vue ? mixin.options : mixin;\n parent = mergeOptions(parent, mixinOptions, vm);\n }\n }\n for (key in parent) {\n mergeField(key);\n }\n for (key in child) {\n if (!hasOwn(parent, key)) {\n mergeField(key);\n }\n }\n function mergeField(key) {\n var strat = strats[key] || defaultStrat;\n options[key] = strat(parent[key], child[key], vm, key);\n }\n return options;\n}\n\n/**\n * Resolve an asset.\n * This function is used because child instances need access\n * to assets defined in its ancestor chain.\n *\n * @param {Object} options\n * @param {String} type\n * @param {String} id\n * @param {Boolean} warnMissing\n * @return {Object|Function}\n */\n\nfunction resolveAsset(options, type, id, warnMissing) {\n /* istanbul ignore if */\n if (typeof id !== 'string') {\n return;\n }\n var assets = options[type];\n var camelizedId;\n var res = assets[id] ||\n // camelCase ID\n assets[camelizedId = camelize(id)] ||\n // Pascal Case ID\n assets[camelizedId.charAt(0).toUpperCase() + camelizedId.slice(1)];\n if (process.env.NODE_ENV !== 'production' && warnMissing && !res) {\n warn('Failed to resolve ' + type.slice(0, -1) + ': ' + id, options);\n }\n return res;\n}\n\nvar uid$1 = 0;\n\n/**\n * A dep is an observable that can have multiple\n * directives subscribing to it.\n *\n * @constructor\n */\nfunction Dep() {\n this.id = uid$1++;\n this.subs = [];\n}\n\n// the current target watcher being evaluated.\n// this is globally unique because there could be only one\n// watcher being evaluated at any time.\nDep.target = null;\n\n/**\n * Add a directive subscriber.\n *\n * @param {Directive} sub\n */\n\nDep.prototype.addSub = function (sub) {\n this.subs.push(sub);\n};\n\n/**\n * Remove a directive subscriber.\n *\n * @param {Directive} sub\n */\n\nDep.prototype.removeSub = function (sub) {\n this.subs.$remove(sub);\n};\n\n/**\n * Add self as a dependency to the target watcher.\n */\n\nDep.prototype.depend = function () {\n Dep.target.addDep(this);\n};\n\n/**\n * Notify all subscribers of a new value.\n */\n\nDep.prototype.notify = function () {\n // stablize the subscriber list first\n var subs = toArray(this.subs);\n for (var i = 0, l = subs.length; i < l; i++) {\n subs[i].update();\n }\n};\n\nvar arrayProto = Array.prototype;\nvar arrayMethods = Object.create(arrayProto)\n\n/**\n * Intercept mutating methods and emit events\n */\n\n;['push', 'pop', 'shift', 'unshift', 'splice', 'sort', 'reverse'].forEach(function (method) {\n // cache original method\n var original = arrayProto[method];\n def(arrayMethods, method, function mutator() {\n // avoid leaking arguments:\n // http://jsperf.com/closure-with-arguments\n var i = arguments.length;\n var args = new Array(i);\n while (i--) {\n args[i] = arguments[i];\n }\n var result = original.apply(this, args);\n var ob = this.__ob__;\n var inserted;\n switch (method) {\n case 'push':\n inserted = args;\n break;\n case 'unshift':\n inserted = args;\n break;\n case 'splice':\n inserted = args.slice(2);\n break;\n }\n if (inserted) ob.observeArray(inserted);\n // notify change\n ob.dep.notify();\n return result;\n });\n});\n\n/**\n * Swap the element at the given index with a new value\n * and emits corresponding event.\n *\n * @param {Number} index\n * @param {*} val\n * @return {*} - replaced element\n */\n\ndef(arrayProto, '$set', function $set(index, val) {\n if (index >= this.length) {\n this.length = Number(index) + 1;\n }\n return this.splice(index, 1, val)[0];\n});\n\n/**\n * Convenience method to remove the element at given index or target element reference.\n *\n * @param {*} item\n */\n\ndef(arrayProto, '$remove', function $remove(item) {\n /* istanbul ignore if */\n if (!this.length) return;\n var index = indexOf(this, item);\n if (index > -1) {\n return this.splice(index, 1);\n }\n});\n\nvar arrayKeys = Object.getOwnPropertyNames(arrayMethods);\n\n/**\n * By default, when a reactive property is set, the new value is\n * also converted to become reactive. However in certain cases, e.g.\n * v-for scope alias and props, we don't want to force conversion\n * because the value may be a nested value under a frozen data structure.\n *\n * So whenever we want to set a reactive property without forcing\n * conversion on the new value, we wrap that call inside this function.\n */\n\nvar shouldConvert = true;\n\nfunction withoutConversion(fn) {\n shouldConvert = false;\n fn();\n shouldConvert = true;\n}\n\n/**\n * Observer class that are attached to each observed\n * object. Once attached, the observer converts target\n * object's property keys into getter/setters that\n * collect dependencies and dispatches updates.\n *\n * @param {Array|Object} value\n * @constructor\n */\n\nfunction Observer(value) {\n this.value = value;\n this.dep = new Dep();\n def(value, '__ob__', this);\n if (isArray(value)) {\n var augment = hasProto ? protoAugment : copyAugment;\n augment(value, arrayMethods, arrayKeys);\n this.observeArray(value);\n } else {\n this.walk(value);\n }\n}\n\n// Instance methods\n\n/**\n * Walk through each property and convert them into\n * getter/setters. This method should only be called when\n * value type is Object.\n *\n * @param {Object} obj\n */\n\nObserver.prototype.walk = function (obj) {\n var keys = Object.keys(obj);\n for (var i = 0, l = keys.length; i < l; i++) {\n this.convert(keys[i], obj[keys[i]]);\n }\n};\n\n/**\n * Observe a list of Array items.\n *\n * @param {Array} items\n */\n\nObserver.prototype.observeArray = function (items) {\n for (var i = 0, l = items.length; i < l; i++) {\n observe(items[i]);\n }\n};\n\n/**\n * Convert a property into getter/setter so we can emit\n * the events when the property is accessed/changed.\n *\n * @param {String} key\n * @param {*} val\n */\n\nObserver.prototype.convert = function (key, val) {\n defineReactive(this.value, key, val);\n};\n\n/**\n * Add an owner vm, so that when $set/$delete mutations\n * happen we can notify owner vms to proxy the keys and\n * digest the watchers. This is only called when the object\n * is observed as an instance's root $data.\n *\n * @param {Vue} vm\n */\n\nObserver.prototype.addVm = function (vm) {\n (this.vms || (this.vms = [])).push(vm);\n};\n\n/**\n * Remove an owner vm. This is called when the object is\n * swapped out as an instance's $data object.\n *\n * @param {Vue} vm\n */\n\nObserver.prototype.removeVm = function (vm) {\n this.vms.$remove(vm);\n};\n\n// helpers\n\n/**\n * Augment an target Object or Array by intercepting\n * the prototype chain using __proto__\n *\n * @param {Object|Array} target\n * @param {Object} src\n */\n\nfunction protoAugment(target, src) {\n /* eslint-disable no-proto */\n target.__proto__ = src;\n /* eslint-enable no-proto */\n}\n\n/**\n * Augment an target Object or Array by defining\n * hidden properties.\n *\n * @param {Object|Array} target\n * @param {Object} proto\n */\n\nfunction copyAugment(target, src, keys) {\n for (var i = 0, l = keys.length; i < l; i++) {\n var key = keys[i];\n def(target, key, src[key]);\n }\n}\n\n/**\n * Attempt to create an observer instance for a value,\n * returns the new observer if successfully observed,\n * or the existing observer if the value already has one.\n *\n * @param {*} value\n * @param {Vue} [vm]\n * @return {Observer|undefined}\n * @static\n */\n\nfunction observe(value, vm) {\n if (!value || typeof value !== 'object') {\n return;\n }\n var ob;\n if (hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) {\n ob = value.__ob__;\n } else if (shouldConvert && (isArray(value) || isPlainObject(value)) && Object.isExtensible(value) && !value._isVue) {\n ob = new Observer(value);\n }\n if (ob && vm) {\n ob.addVm(vm);\n }\n return ob;\n}\n\n/**\n * Define a reactive property on an Object.\n *\n * @param {Object} obj\n * @param {String} key\n * @param {*} val\n */\n\nfunction defineReactive(obj, key, val) {\n var dep = new Dep();\n\n var property = Object.getOwnPropertyDescriptor(obj, key);\n if (property && property.configurable === false) {\n return;\n }\n\n // cater for pre-defined getter/setters\n var getter = property && property.get;\n var setter = property && property.set;\n\n var childOb = observe(val);\n Object.defineProperty(obj, key, {\n enumerable: true,\n configurable: true,\n get: function reactiveGetter() {\n var value = getter ? getter.call(obj) : val;\n if (Dep.target) {\n dep.depend();\n if (childOb) {\n childOb.dep.depend();\n }\n if (isArray(value)) {\n for (var e, i = 0, l = value.length; i < l; i++) {\n e = value[i];\n e && e.__ob__ && e.__ob__.dep.depend();\n }\n }\n }\n return value;\n },\n set: function reactiveSetter(newVal) {\n var value = getter ? getter.call(obj) : val;\n if (newVal === value) {\n return;\n }\n if (setter) {\n setter.call(obj, newVal);\n } else {\n val = newVal;\n }\n childOb = observe(newVal);\n dep.notify();\n }\n });\n}\n\n\n\nvar util = Object.freeze({\n\tdefineReactive: defineReactive,\n\tset: set,\n\tdel: del,\n\thasOwn: hasOwn,\n\tisLiteral: isLiteral,\n\tisReserved: isReserved,\n\t_toString: _toString,\n\ttoNumber: toNumber,\n\ttoBoolean: toBoolean,\n\tstripQuotes: stripQuotes,\n\tcamelize: camelize,\n\thyphenate: hyphenate,\n\tclassify: classify,\n\tbind: bind,\n\ttoArray: toArray,\n\textend: extend,\n\tisObject: isObject,\n\tisPlainObject: isPlainObject,\n\tdef: def,\n\tdebounce: _debounce,\n\tindexOf: indexOf,\n\tcancellable: cancellable,\n\tlooseEqual: looseEqual,\n\tisArray: isArray,\n\thasProto: hasProto,\n\tinBrowser: inBrowser,\n\tdevtools: devtools,\n\tisIE: isIE,\n\tisIE9: isIE9,\n\tisAndroid: isAndroid,\n\tisIos: isIos,\n\tiosVersionMatch: iosVersionMatch,\n\tiosVersion: iosVersion,\n\thasMutationObserverBug: hasMutationObserverBug,\n\tget transitionProp () { return transitionProp; },\n\tget transitionEndEvent () { return transitionEndEvent; },\n\tget animationProp () { return animationProp; },\n\tget animationEndEvent () { return animationEndEvent; },\n\tnextTick: nextTick,\n\tget _Set () { return _Set; },\n\tquery: query,\n\tinDoc: inDoc,\n\tgetAttr: getAttr,\n\tgetBindAttr: getBindAttr,\n\thasBindAttr: hasBindAttr,\n\tbefore: before,\n\tafter: after,\n\tremove: remove,\n\tprepend: prepend,\n\treplace: replace,\n\ton: on,\n\toff: off,\n\tsetClass: setClass,\n\taddClass: addClass,\n\tremoveClass: removeClass,\n\textractContent: extractContent,\n\ttrimNode: trimNode,\n\tisTemplate: isTemplate,\n\tcreateAnchor: createAnchor,\n\tfindRef: findRef,\n\tmapNodeRange: mapNodeRange,\n\tremoveNodeRange: removeNodeRange,\n\tisFragment: isFragment,\n\tgetOuterHTML: getOuterHTML,\n\tmergeOptions: mergeOptions,\n\tresolveAsset: resolveAsset,\n\tcheckComponentAttr: checkComponentAttr,\n\tcommonTagRE: commonTagRE,\n\treservedTagRE: reservedTagRE,\n\tget warn () { return warn; }\n});\n\nvar uid = 0;\n\nfunction initMixin (Vue) {\n /**\n * The main init sequence. This is called for every\n * instance, including ones that are created from extended\n * constructors.\n *\n * @param {Object} options - this options object should be\n * the result of merging class\n * options and the options passed\n * in to the constructor.\n */\n\n Vue.prototype._init = function (options) {\n options = options || {};\n\n this.$el = null;\n this.$parent = options.parent;\n this.$root = this.$parent ? this.$parent.$root : this;\n this.$children = [];\n this.$refs = {}; // child vm references\n this.$els = {}; // element references\n this._watchers = []; // all watchers as an array\n this._directives = []; // all directives\n\n // a uid\n this._uid = uid++;\n\n // a flag to avoid this being observed\n this._isVue = true;\n\n // events bookkeeping\n this._events = {}; // registered callbacks\n this._eventsCount = {}; // for $broadcast optimization\n\n // fragment instance properties\n this._isFragment = false;\n this._fragment = // @type {DocumentFragment}\n this._fragmentStart = // @type {Text|Comment}\n this._fragmentEnd = null; // @type {Text|Comment}\n\n // lifecycle state\n this._isCompiled = this._isDestroyed = this._isReady = this._isAttached = this._isBeingDestroyed = this._vForRemoving = false;\n this._unlinkFn = null;\n\n // context:\n // if this is a transcluded component, context\n // will be the common parent vm of this instance\n // and its host.\n this._context = options._context || this.$parent;\n\n // scope:\n // if this is inside an inline v-for, the scope\n // will be the intermediate scope created for this\n // repeat fragment. this is used for linking props\n // and container directives.\n this._scope = options._scope;\n\n // fragment:\n // if this instance is compiled inside a Fragment, it\n // needs to reigster itself as a child of that fragment\n // for attach/detach to work properly.\n this._frag = options._frag;\n if (this._frag) {\n this._frag.children.push(this);\n }\n\n // push self into parent / transclusion host\n if (this.$parent) {\n this.$parent.$children.push(this);\n }\n\n // merge options.\n options = this.$options = mergeOptions(this.constructor.options, options, this);\n\n // set ref\n this._updateRef();\n\n // initialize data as empty object.\n // it will be filled up in _initData().\n this._data = {};\n\n // call init hook\n this._callHook('init');\n\n // initialize data observation and scope inheritance.\n this._initState();\n\n // setup event system and option events.\n this._initEvents();\n\n // call created hook\n this._callHook('created');\n\n // if `el` option is passed, start compilation.\n if (options.el) {\n this.$mount(options.el);\n }\n };\n}\n\nvar pathCache = new Cache(1000);\n\n// actions\nvar APPEND = 0;\nvar PUSH = 1;\nvar INC_SUB_PATH_DEPTH = 2;\nvar PUSH_SUB_PATH = 3;\n\n// states\nvar BEFORE_PATH = 0;\nvar IN_PATH = 1;\nvar BEFORE_IDENT = 2;\nvar IN_IDENT = 3;\nvar IN_SUB_PATH = 4;\nvar IN_SINGLE_QUOTE = 5;\nvar IN_DOUBLE_QUOTE = 6;\nvar AFTER_PATH = 7;\nvar ERROR = 8;\n\nvar pathStateMachine = [];\n\npathStateMachine[BEFORE_PATH] = {\n 'ws': [BEFORE_PATH],\n 'ident': [IN_IDENT, APPEND],\n '[': [IN_SUB_PATH],\n 'eof': [AFTER_PATH]\n};\n\npathStateMachine[IN_PATH] = {\n 'ws': [IN_PATH],\n '.': [BEFORE_IDENT],\n '[': [IN_SUB_PATH],\n 'eof': [AFTER_PATH]\n};\n\npathStateMachine[BEFORE_IDENT] = {\n 'ws': [BEFORE_IDENT],\n 'ident': [IN_IDENT, APPEND]\n};\n\npathStateMachine[IN_IDENT] = {\n 'ident': [IN_IDENT, APPEND],\n '0': [IN_IDENT, APPEND],\n 'number': [IN_IDENT, APPEND],\n 'ws': [IN_PATH, PUSH],\n '.': [BEFORE_IDENT, PUSH],\n '[': [IN_SUB_PATH, PUSH],\n 'eof': [AFTER_PATH, PUSH]\n};\n\npathStateMachine[IN_SUB_PATH] = {\n \"'\": [IN_SINGLE_QUOTE, APPEND],\n '\"': [IN_DOUBLE_QUOTE, APPEND],\n '[': [IN_SUB_PATH, INC_SUB_PATH_DEPTH],\n ']': [IN_PATH, PUSH_SUB_PATH],\n 'eof': ERROR,\n 'else': [IN_SUB_PATH, APPEND]\n};\n\npathStateMachine[IN_SINGLE_QUOTE] = {\n \"'\": [IN_SUB_PATH, APPEND],\n 'eof': ERROR,\n 'else': [IN_SINGLE_QUOTE, APPEND]\n};\n\npathStateMachine[IN_DOUBLE_QUOTE] = {\n '\"': [IN_SUB_PATH, APPEND],\n 'eof': ERROR,\n 'else': [IN_DOUBLE_QUOTE, APPEND]\n};\n\n/**\n * Determine the type of a character in a keypath.\n *\n * @param {Char} ch\n * @return {String} type\n */\n\nfunction getPathCharType(ch) {\n if (ch === undefined) {\n return 'eof';\n }\n\n var code = ch.charCodeAt(0);\n\n switch (code) {\n case 0x5B: // [\n case 0x5D: // ]\n case 0x2E: // .\n case 0x22: // \"\n case 0x27: // '\n case 0x30:\n // 0\n return ch;\n\n case 0x5F: // _\n case 0x24:\n // $\n return 'ident';\n\n case 0x20: // Space\n case 0x09: // Tab\n case 0x0A: // Newline\n case 0x0D: // Return\n case 0xA0: // No-break space\n case 0xFEFF: // Byte Order Mark\n case 0x2028: // Line Separator\n case 0x2029:\n // Paragraph Separator\n return 'ws';\n }\n\n // a-z, A-Z\n if (code >= 0x61 && code <= 0x7A || code >= 0x41 && code <= 0x5A) {\n return 'ident';\n }\n\n // 1-9\n if (code >= 0x31 && code <= 0x39) {\n return 'number';\n }\n\n return 'else';\n}\n\n/**\n * Format a subPath, return its plain form if it is\n * a literal string or number. Otherwise prepend the\n * dynamic indicator (*).\n *\n * @param {String} path\n * @return {String}\n */\n\nfunction formatSubPath(path) {\n var trimmed = path.trim();\n // invalid leading 0\n if (path.charAt(0) === '0' && isNaN(path)) {\n return false;\n }\n return isLiteral(trimmed) ? stripQuotes(trimmed) : '*' + trimmed;\n}\n\n/**\n * Parse a string path into an array of segments\n *\n * @param {String} path\n * @return {Array|undefined}\n */\n\nfunction parse(path) {\n var keys = [];\n var index = -1;\n var mode = BEFORE_PATH;\n var subPathDepth = 0;\n var c, newChar, key, type, transition, action, typeMap;\n\n var actions = [];\n\n actions[PUSH] = function () {\n if (key !== undefined) {\n keys.push(key);\n key = undefined;\n }\n };\n\n actions[APPEND] = function () {\n if (key === undefined) {\n key = newChar;\n } else {\n key += newChar;\n }\n };\n\n actions[INC_SUB_PATH_DEPTH] = function () {\n actions[APPEND]();\n subPathDepth++;\n };\n\n actions[PUSH_SUB_PATH] = function () {\n if (subPathDepth > 0) {\n subPathDepth--;\n mode = IN_SUB_PATH;\n actions[APPEND]();\n } else {\n subPathDepth = 0;\n key = formatSubPath(key);\n if (key === false) {\n return false;\n } else {\n actions[PUSH]();\n }\n }\n };\n\n function maybeUnescapeQuote() {\n var nextChar = path[index + 1];\n if (mode === IN_SINGLE_QUOTE && nextChar === \"'\" || mode === IN_DOUBLE_QUOTE && nextChar === '\"') {\n index++;\n newChar = '\\\\' + nextChar;\n actions[APPEND]();\n return true;\n }\n }\n\n while (mode != null) {\n index++;\n c = path[index];\n\n if (c === '\\\\' && maybeUnescapeQuote()) {\n continue;\n }\n\n type = getPathCharType(c);\n typeMap = pathStateMachine[mode];\n transition = typeMap[type] || typeMap['else'] || ERROR;\n\n if (transition === ERROR) {\n return; // parse error\n }\n\n mode = transition[0];\n action = actions[transition[1]];\n if (action) {\n newChar = transition[2];\n newChar = newChar === undefined ? c : newChar;\n if (action() === false) {\n return;\n }\n }\n\n if (mode === AFTER_PATH) {\n keys.raw = path;\n return keys;\n }\n }\n}\n\n/**\n * External parse that check for a cache hit first\n *\n * @param {String} path\n * @return {Array|undefined}\n */\n\nfunction parsePath(path) {\n var hit = pathCache.get(path);\n if (!hit) {\n hit = parse(path);\n if (hit) {\n pathCache.put(path, hit);\n }\n }\n return hit;\n}\n\n/**\n * Get from an object from a path string\n *\n * @param {Object} obj\n * @param {String} path\n */\n\nfunction getPath(obj, path) {\n return parseExpression(path).get(obj);\n}\n\n/**\n * Warn against setting non-existent root path on a vm.\n */\n\nvar warnNonExistent;\nif (process.env.NODE_ENV !== 'production') {\n warnNonExistent = function (path, vm) {\n warn('You are setting a non-existent path \"' + path.raw + '\" ' + 'on a vm instance. Consider pre-initializing the property ' + 'with the \"data\" option for more reliable reactivity ' + 'and better performance.', vm);\n };\n}\n\n/**\n * Set on an object from a path\n *\n * @param {Object} obj\n * @param {String | Array} path\n * @param {*} val\n */\n\nfunction setPath(obj, path, val) {\n var original = obj;\n if (typeof path === 'string') {\n path = parse(path);\n }\n if (!path || !isObject(obj)) {\n return false;\n }\n var last, key;\n for (var i = 0, l = path.length; i < l; i++) {\n last = obj;\n key = path[i];\n if (key.charAt(0) === '*') {\n key = parseExpression(key.slice(1)).get.call(original, original);\n }\n if (i < l - 1) {\n obj = obj[key];\n if (!isObject(obj)) {\n obj = {};\n if (process.env.NODE_ENV !== 'production' && last._isVue) {\n warnNonExistent(path, last);\n }\n set(last, key, obj);\n }\n } else {\n if (isArray(obj)) {\n obj.$set(key, val);\n } else if (key in obj) {\n obj[key] = val;\n } else {\n if (process.env.NODE_ENV !== 'production' && obj._isVue) {\n warnNonExistent(path, obj);\n }\n set(obj, key, val);\n }\n }\n }\n return true;\n}\n\nvar path = Object.freeze({\n parsePath: parsePath,\n getPath: getPath,\n setPath: setPath\n});\n\nvar expressionCache = new Cache(1000);\n\nvar allowedKeywords = 'Math,Date,this,true,false,null,undefined,Infinity,NaN,' + 'isNaN,isFinite,decodeURI,decodeURIComponent,encodeURI,' + 'encodeURIComponent,parseInt,parseFloat';\nvar allowedKeywordsRE = new RegExp('^(' + allowedKeywords.replace(/,/g, '\\\\b|') + '\\\\b)');\n\n// keywords that don't make sense inside expressions\nvar improperKeywords = 'break,case,class,catch,const,continue,debugger,default,' + 'delete,do,else,export,extends,finally,for,function,if,' + 'import,in,instanceof,let,return,super,switch,throw,try,' + 'var,while,with,yield,enum,await,implements,package,' + 'protected,static,interface,private,public';\nvar improperKeywordsRE = new RegExp('^(' + improperKeywords.replace(/,/g, '\\\\b|') + '\\\\b)');\n\nvar wsRE = /\\s/g;\nvar newlineRE = /\\n/g;\nvar saveRE = /[\\{,]\\s*[\\w\\$_]+\\s*:|('(?:[^'\\\\]|\\\\.)*'|\"(?:[^\"\\\\]|\\\\.)*\"|`(?:[^`\\\\]|\\\\.)*\\$\\{|\\}(?:[^`\\\\]|\\\\.)*`|`(?:[^`\\\\]|\\\\.)*`)|new |typeof |void /g;\nvar restoreRE = /\"(\\d+)\"/g;\nvar pathTestRE = /^[A-Za-z_$][\\w$]*(?:\\.[A-Za-z_$][\\w$]*|\\['.*?'\\]|\\[\".*?\"\\]|\\[\\d+\\]|\\[[A-Za-z_$][\\w$]*\\])*$/;\nvar identRE = /[^\\w$\\.](?:[A-Za-z_$][\\w$]*)/g;\nvar literalValueRE$1 = /^(?:true|false|null|undefined|Infinity|NaN)$/;\n\nfunction noop() {}\n\n/**\n * Save / Rewrite / Restore\n *\n * When rewriting paths found in an expression, it is\n * possible for the same letter sequences to be found in\n * strings and Object literal property keys. Therefore we\n * remove and store these parts in a temporary array, and\n * restore them after the path rewrite.\n */\n\nvar saved = [];\n\n/**\n * Save replacer\n *\n * The save regex can match two possible cases:\n * 1. An opening object literal\n * 2. A string\n * If matched as a plain string, we need to escape its\n * newlines, since the string needs to be preserved when\n * generating the function body.\n *\n * @param {String} str\n * @param {String} isString - str if matched as a string\n * @return {String} - placeholder with index\n */\n\nfunction save(str, isString) {\n var i = saved.length;\n saved[i] = isString ? str.replace(newlineRE, '\\\\n') : str;\n return '\"' + i + '\"';\n}\n\n/**\n * Path rewrite replacer\n *\n * @param {String} raw\n * @return {String}\n */\n\nfunction rewrite(raw) {\n var c = raw.charAt(0);\n var path = raw.slice(1);\n if (allowedKeywordsRE.test(path)) {\n return raw;\n } else {\n path = path.indexOf('\"') > -1 ? path.replace(restoreRE, restore) : path;\n return c + 'scope.' + path;\n }\n}\n\n/**\n * Restore replacer\n *\n * @param {String} str\n * @param {String} i - matched save index\n * @return {String}\n */\n\nfunction restore(str, i) {\n return saved[i];\n}\n\n/**\n * Rewrite an expression, prefixing all path accessors with\n * `scope.` and generate getter/setter functions.\n *\n * @param {String} exp\n * @return {Function}\n */\n\nfunction compileGetter(exp) {\n if (improperKeywordsRE.test(exp)) {\n process.env.NODE_ENV !== 'production' && warn('Avoid using reserved keywords in expression: ' + exp);\n }\n // reset state\n saved.length = 0;\n // save strings and object literal keys\n var body = exp.replace(saveRE, save).replace(wsRE, '');\n // rewrite all paths\n // pad 1 space here because the regex matches 1 extra char\n body = (' ' + body).replace(identRE, rewrite).replace(restoreRE, restore);\n return makeGetterFn(body);\n}\n\n/**\n * Build a getter function. Requires eval.\n *\n * We isolate the try/catch so it doesn't affect the\n * optimization of the parse function when it is not called.\n *\n * @param {String} body\n * @return {Function|undefined}\n */\n\nfunction makeGetterFn(body) {\n try {\n /* eslint-disable no-new-func */\n return new Function('scope', 'return ' + body + ';');\n /* eslint-enable no-new-func */\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n /* istanbul ignore if */\n if (e.toString().match(/unsafe-eval|CSP/)) {\n warn('It seems you are using the default build of Vue.js in an environment ' + 'with Content Security Policy that prohibits unsafe-eval. ' + 'Use the CSP-compliant build instead: ' + 'http://vuejs.org/guide/installation.html#CSP-compliant-build');\n } else {\n warn('Invalid expression. ' + 'Generated function body: ' + body);\n }\n }\n return noop;\n }\n}\n\n/**\n * Compile a setter function for the expression.\n *\n * @param {String} exp\n * @return {Function|undefined}\n */\n\nfunction compileSetter(exp) {\n var path = parsePath(exp);\n if (path) {\n return function (scope, val) {\n setPath(scope, path, val);\n };\n } else {\n process.env.NODE_ENV !== 'production' && warn('Invalid setter expression: ' + exp);\n }\n}\n\n/**\n * Parse an expression into re-written getter/setters.\n *\n * @param {String} exp\n * @param {Boolean} needSet\n * @return {Function}\n */\n\nfunction parseExpression(exp, needSet) {\n exp = exp.trim();\n // try cache\n var hit = expressionCache.get(exp);\n if (hit) {\n if (needSet && !hit.set) {\n hit.set = compileSetter(hit.exp);\n }\n return hit;\n }\n var res = { exp: exp };\n res.get = isSimplePath(exp) && exp.indexOf('[') < 0\n // optimized super simple getter\n ? makeGetterFn('scope.' + exp)\n // dynamic getter\n : compileGetter(exp);\n if (needSet) {\n res.set = compileSetter(exp);\n }\n expressionCache.put(exp, res);\n return res;\n}\n\n/**\n * Check if an expression is a simple path.\n *\n * @param {String} exp\n * @return {Boolean}\n */\n\nfunction isSimplePath(exp) {\n return pathTestRE.test(exp) &&\n // don't treat literal values as paths\n !literalValueRE$1.test(exp) &&\n // Math constants e.g. Math.PI, Math.E etc.\n exp.slice(0, 5) !== 'Math.';\n}\n\nvar expression = Object.freeze({\n parseExpression: parseExpression,\n isSimplePath: isSimplePath\n});\n\n// we have two separate queues: one for directive updates\n// and one for user watcher registered via $watch().\n// we want to guarantee directive updates to be called\n// before user watchers so that when user watchers are\n// triggered, the DOM would have already been in updated\n// state.\n\nvar queue = [];\nvar userQueue = [];\nvar has = {};\nvar circular = {};\nvar waiting = false;\n\n/**\n * Reset the batcher's state.\n */\n\nfunction resetBatcherState() {\n queue.length = 0;\n userQueue.length = 0;\n has = {};\n circular = {};\n waiting = false;\n}\n\n/**\n * Flush both queues and run the watchers.\n */\n\nfunction flushBatcherQueue() {\n var _again = true;\n\n _function: while (_again) {\n _again = false;\n\n runBatcherQueue(queue);\n runBatcherQueue(userQueue);\n // user watchers triggered more watchers,\n // keep flushing until it depletes\n if (queue.length) {\n _again = true;\n continue _function;\n }\n // dev tool hook\n /* istanbul ignore if */\n if (devtools && config.devtools) {\n devtools.emit('flush');\n }\n resetBatcherState();\n }\n}\n\n/**\n * Run the watchers in a single queue.\n *\n * @param {Array} queue\n */\n\nfunction runBatcherQueue(queue) {\n // do not cache length because more watchers might be pushed\n // as we run existing watchers\n for (var i = 0; i < queue.length; i++) {\n var watcher = queue[i];\n var id = watcher.id;\n has[id] = null;\n watcher.run();\n // in dev build, check and stop circular updates.\n if (process.env.NODE_ENV !== 'production' && has[id] != null) {\n circular[id] = (circular[id] || 0) + 1;\n if (circular[id] > config._maxUpdateCount) {\n warn('You may have an infinite update loop for watcher ' + 'with expression \"' + watcher.expression + '\"', watcher.vm);\n break;\n }\n }\n }\n queue.length = 0;\n}\n\n/**\n * Push a watcher into the watcher queue.\n * Jobs with duplicate IDs will be skipped unless it's\n * pushed when the queue is being flushed.\n *\n * @param {Watcher} watcher\n * properties:\n * - {Number} id\n * - {Function} run\n */\n\nfunction pushWatcher(watcher) {\n var id = watcher.id;\n if (has[id] == null) {\n // push watcher into appropriate queue\n var q = watcher.user ? userQueue : queue;\n has[id] = q.length;\n q.push(watcher);\n // queue the flush\n if (!waiting) {\n waiting = true;\n nextTick(flushBatcherQueue);\n }\n }\n}\n\nvar uid$2 = 0;\n\n/**\n * A watcher parses an expression, collects dependencies,\n * and fires callback when the expression value changes.\n * This is used for both the $watch() api and directives.\n *\n * @param {Vue} vm\n * @param {String|Function} expOrFn\n * @param {Function} cb\n * @param {Object} options\n * - {Array} filters\n * - {Boolean} twoWay\n * - {Boolean} deep\n * - {Boolean} user\n * - {Boolean} sync\n * - {Boolean} lazy\n * - {Function} [preProcess]\n * - {Function} [postProcess]\n * @constructor\n */\nfunction Watcher(vm, expOrFn, cb, options) {\n // mix in options\n if (options) {\n extend(this, options);\n }\n var isFn = typeof expOrFn === 'function';\n this.vm = vm;\n vm._watchers.push(this);\n this.expression = expOrFn;\n this.cb = cb;\n this.id = ++uid$2; // uid for batching\n this.active = true;\n this.dirty = this.lazy; // for lazy watchers\n this.deps = [];\n this.newDeps = [];\n this.depIds = new _Set();\n this.newDepIds = new _Set();\n this.prevError = null; // for async error stacks\n // parse expression for getter/setter\n if (isFn) {\n this.getter = expOrFn;\n this.setter = undefined;\n } else {\n var res = parseExpression(expOrFn, this.twoWay);\n this.getter = res.get;\n this.setter = res.set;\n }\n this.value = this.lazy ? undefined : this.get();\n // state for avoiding false triggers for deep and Array\n // watchers during vm._digest()\n this.queued = this.shallow = false;\n}\n\n/**\n * Evaluate the getter, and re-collect dependencies.\n */\n\nWatcher.prototype.get = function () {\n this.beforeGet();\n var scope = this.scope || this.vm;\n var value;\n try {\n value = this.getter.call(scope, scope);\n } catch (e) {\n if (process.env.NODE_ENV !== 'production' && config.warnExpressionErrors) {\n warn('Error when evaluating expression ' + '\"' + this.expression + '\": ' + e.toString(), this.vm);\n }\n }\n // \"touch\" every property so they are all tracked as\n // dependencies for deep watching\n if (this.deep) {\n traverse(value);\n }\n if (this.preProcess) {\n value = this.preProcess(value);\n }\n if (this.filters) {\n value = scope._applyFilters(value, null, this.filters, false);\n }\n if (this.postProcess) {\n value = this.postProcess(value);\n }\n this.afterGet();\n return value;\n};\n\n/**\n * Set the corresponding value with the setter.\n *\n * @param {*} value\n */\n\nWatcher.prototype.set = function (value) {\n var scope = this.scope || this.vm;\n if (this.filters) {\n value = scope._applyFilters(value, this.value, this.filters, true);\n }\n try {\n this.setter.call(scope, scope, value);\n } catch (e) {\n if (process.env.NODE_ENV !== 'production' && config.warnExpressionErrors) {\n warn('Error when evaluating setter ' + '\"' + this.expression + '\": ' + e.toString(), this.vm);\n }\n }\n // two-way sync for v-for alias\n var forContext = scope.$forContext;\n if (forContext && forContext.alias === this.expression) {\n if (forContext.filters) {\n process.env.NODE_ENV !== 'production' && warn('It seems you are using two-way binding on ' + 'a v-for alias (' + this.expression + '), and the ' + 'v-for has filters. This will not work properly. ' + 'Either remove the filters or use an array of ' + 'objects and bind to object properties instead.', this.vm);\n return;\n }\n forContext._withLock(function () {\n if (scope.$key) {\n // original is an object\n forContext.rawValue[scope.$key] = value;\n } else {\n forContext.rawValue.$set(scope.$index, value);\n }\n });\n }\n};\n\n/**\n * Prepare for dependency collection.\n */\n\nWatcher.prototype.beforeGet = function () {\n Dep.target = this;\n};\n\n/**\n * Add a dependency to this directive.\n *\n * @param {Dep} dep\n */\n\nWatcher.prototype.addDep = function (dep) {\n var id = dep.id;\n if (!this.newDepIds.has(id)) {\n this.newDepIds.add(id);\n this.newDeps.push(dep);\n if (!this.depIds.has(id)) {\n dep.addSub(this);\n }\n }\n};\n\n/**\n * Clean up for dependency collection.\n */\n\nWatcher.prototype.afterGet = function () {\n Dep.target = null;\n var i = this.deps.length;\n while (i--) {\n var dep = this.deps[i];\n if (!this.newDepIds.has(dep.id)) {\n dep.removeSub(this);\n }\n }\n var tmp = this.depIds;\n this.depIds = this.newDepIds;\n this.newDepIds = tmp;\n this.newDepIds.clear();\n tmp = this.deps;\n this.deps = this.newDeps;\n this.newDeps = tmp;\n this.newDeps.length = 0;\n};\n\n/**\n * Subscriber interface.\n * Will be called when a dependency changes.\n *\n * @param {Boolean} shallow\n */\n\nWatcher.prototype.update = function (shallow) {\n if (this.lazy) {\n this.dirty = true;\n } else if (this.sync || !config.async) {\n this.run();\n } else {\n // if queued, only overwrite shallow with non-shallow,\n // but not the other way around.\n this.shallow = this.queued ? shallow ? this.shallow : false : !!shallow;\n this.queued = true;\n // record before-push error stack in debug mode\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && config.debug) {\n this.prevError = new Error('[vue] async stack trace');\n }\n pushWatcher(this);\n }\n};\n\n/**\n * Batcher job interface.\n * Will be called by the batcher.\n */\n\nWatcher.prototype.run = function () {\n if (this.active) {\n var value = this.get();\n if (value !== this.value ||\n // Deep watchers and watchers on Object/Arrays should fire even\n // when the value is the same, because the value may\n // have mutated; but only do so if this is a\n // non-shallow update (caused by a vm digest).\n (isObject(value) || this.deep) && !this.shallow) {\n // set new value\n var oldValue = this.value;\n this.value = value;\n // in debug + async mode, when a watcher callbacks\n // throws, we also throw the saved before-push error\n // so the full cross-tick stack trace is available.\n var prevError = this.prevError;\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && config.debug && prevError) {\n this.prevError = null;\n try {\n this.cb.call(this.vm, value, oldValue);\n } catch (e) {\n nextTick(function () {\n throw prevError;\n }, 0);\n throw e;\n }\n } else {\n this.cb.call(this.vm, value, oldValue);\n }\n }\n this.queued = this.shallow = false;\n }\n};\n\n/**\n * Evaluate the value of the watcher.\n * This only gets called for lazy watchers.\n */\n\nWatcher.prototype.evaluate = function () {\n // avoid overwriting another watcher that is being\n // collected.\n var current = Dep.target;\n this.value = this.get();\n this.dirty = false;\n Dep.target = current;\n};\n\n/**\n * Depend on all deps collected by this watcher.\n */\n\nWatcher.prototype.depend = function () {\n var i = this.deps.length;\n while (i--) {\n this.deps[i].depend();\n }\n};\n\n/**\n * Remove self from all dependencies' subcriber list.\n */\n\nWatcher.prototype.teardown = function () {\n if (this.active) {\n // remove self from vm's watcher list\n // this is a somewhat expensive operation so we skip it\n // if the vm is being destroyed or is performing a v-for\n // re-render (the watcher list is then filtered by v-for).\n if (!this.vm._isBeingDestroyed && !this.vm._vForRemoving) {\n this.vm._watchers.$remove(this);\n }\n var i = this.deps.length;\n while (i--) {\n this.deps[i].removeSub(this);\n }\n this.active = false;\n this.vm = this.cb = this.value = null;\n }\n};\n\n/**\n * Recrusively traverse an object to evoke all converted\n * getters, so that every nested property inside the object\n * is collected as a \"deep\" dependency.\n *\n * @param {*} val\n */\n\nvar seenObjects = new _Set();\nfunction traverse(val, seen) {\n var i = undefined,\n keys = undefined;\n if (!seen) {\n seen = seenObjects;\n seen.clear();\n }\n var isA = isArray(val);\n var isO = isObject(val);\n if (isA || isO) {\n if (val.__ob__) {\n var depId = val.__ob__.dep.id;\n if (seen.has(depId)) {\n return;\n } else {\n seen.add(depId);\n }\n }\n if (isA) {\n i = val.length;\n while (i--) traverse(val[i], seen);\n } else if (isO) {\n keys = Object.keys(val);\n i = keys.length;\n while (i--) traverse(val[keys[i]], seen);\n }\n }\n}\n\nvar text$1 = {\n\n bind: function bind() {\n this.attr = this.el.nodeType === 3 ? 'data' : 'textContent';\n },\n\n update: function update(value) {\n this.el[this.attr] = _toString(value);\n }\n};\n\nvar templateCache = new Cache(1000);\nvar idSelectorCache = new Cache(1000);\n\nvar map = {\n efault: [0, '', ''],\n legend: [1, '<fieldset>', '</fieldset>'],\n tr: [2, '<table><tbody>', '</tbody></table>'],\n col: [2, '<table><tbody></tbody><colgroup>', '</colgroup></table>']\n};\n\nmap.td = map.th = [3, '<table><tbody><tr>', '</tr></tbody></table>'];\n\nmap.option = map.optgroup = [1, '<select multiple=\"multiple\">', '</select>'];\n\nmap.thead = map.tbody = map.colgroup = map.caption = map.tfoot = [1, '<table>', '</table>'];\n\nmap.g = map.defs = map.symbol = map.use = map.image = map.text = map.circle = map.ellipse = map.line = map.path = map.polygon = map.polyline = map.rect = [1, '<svg ' + 'xmlns=\"http://www.w3.org/2000/svg\" ' + 'xmlns:xlink=\"http://www.w3.org/1999/xlink\" ' + 'xmlns:ev=\"http://www.w3.org/2001/xml-events\"' + 'version=\"1.1\">', '</svg>'];\n\n/**\n * Check if a node is a supported template node with a\n * DocumentFragment content.\n *\n * @param {Node} node\n * @return {Boolean}\n */\n\nfunction isRealTemplate(node) {\n return isTemplate(node) && isFragment(node.content);\n}\n\nvar tagRE$1 = /<([\\w:-]+)/;\nvar entityRE = /&#?\\w+?;/;\nvar commentRE = /<!--/;\n\n/**\n * Convert a string template to a DocumentFragment.\n * Determines correct wrapping by tag types. Wrapping\n * strategy found in jQuery & component/domify.\n *\n * @param {String} templateString\n * @param {Boolean} raw\n * @return {DocumentFragment}\n */\n\nfunction stringToFragment(templateString, raw) {\n // try a cache hit first\n var cacheKey = raw ? templateString : templateString.trim();\n var hit = templateCache.get(cacheKey);\n if (hit) {\n return hit;\n }\n\n var frag = document.createDocumentFragment();\n var tagMatch = templateString.match(tagRE$1);\n var entityMatch = entityRE.test(templateString);\n var commentMatch = commentRE.test(templateString);\n\n if (!tagMatch && !entityMatch && !commentMatch) {\n // text only, return a single text node.\n frag.appendChild(document.createTextNode(templateString));\n } else {\n var tag = tagMatch && tagMatch[1];\n var wrap = map[tag] || map.efault;\n var depth = wrap[0];\n var prefix = wrap[1];\n var suffix = wrap[2];\n var node = document.createElement('div');\n\n node.innerHTML = prefix + templateString + suffix;\n while (depth--) {\n node = node.lastChild;\n }\n\n var child;\n /* eslint-disable no-cond-assign */\n while (child = node.firstChild) {\n /* eslint-enable no-cond-assign */\n frag.appendChild(child);\n }\n }\n if (!raw) {\n trimNode(frag);\n }\n templateCache.put(cacheKey, frag);\n return frag;\n}\n\n/**\n * Convert a template node to a DocumentFragment.\n *\n * @param {Node} node\n * @return {DocumentFragment}\n */\n\nfunction nodeToFragment(node) {\n // if its a template tag and the browser supports it,\n // its content is already a document fragment. However, iOS Safari has\n // bug when using directly cloned template content with touch\n // events and can cause crashes when the nodes are removed from DOM, so we\n // have to treat template elements as string templates. (#2805)\n /* istanbul ignore if */\n if (isRealTemplate(node)) {\n return stringToFragment(node.innerHTML);\n }\n // script template\n if (node.tagName === 'SCRIPT') {\n return stringToFragment(node.textContent);\n }\n // normal node, clone it to avoid mutating the original\n var clonedNode = cloneNode(node);\n var frag = document.createDocumentFragment();\n var child;\n /* eslint-disable no-cond-assign */\n while (child = clonedNode.firstChild) {\n /* eslint-enable no-cond-assign */\n frag.appendChild(child);\n }\n trimNode(frag);\n return frag;\n}\n\n// Test for the presence of the Safari template cloning bug\n// https://bugs.webkit.org/showug.cgi?id=137755\nvar hasBrokenTemplate = (function () {\n /* istanbul ignore else */\n if (inBrowser) {\n var a = document.createElement('div');\n a.innerHTML = '<template>1</template>';\n return !a.cloneNode(true).firstChild.innerHTML;\n } else {\n return false;\n }\n})();\n\n// Test for IE10/11 textarea placeholder clone bug\nvar hasTextareaCloneBug = (function () {\n /* istanbul ignore else */\n if (inBrowser) {\n var t = document.createElement('textarea');\n t.placeholder = 't';\n return t.cloneNode(true).value === 't';\n } else {\n return false;\n }\n})();\n\n/**\n * 1. Deal with Safari cloning nested <template> bug by\n * manually cloning all template instances.\n * 2. Deal with IE10/11 textarea placeholder bug by setting\n * the correct value after cloning.\n *\n * @param {Element|DocumentFragment} node\n * @return {Element|DocumentFragment}\n */\n\nfunction cloneNode(node) {\n /* istanbul ignore if */\n if (!node.querySelectorAll) {\n return node.cloneNode();\n }\n var res = node.cloneNode(true);\n var i, original, cloned;\n /* istanbul ignore if */\n if (hasBrokenTemplate) {\n var tempClone = res;\n if (isRealTemplate(node)) {\n node = node.content;\n tempClone = res.content;\n }\n original = node.querySelectorAll('template');\n if (original.length) {\n cloned = tempClone.querySelectorAll('template');\n i = cloned.length;\n while (i--) {\n cloned[i].parentNode.replaceChild(cloneNode(original[i]), cloned[i]);\n }\n }\n }\n /* istanbul ignore if */\n if (hasTextareaCloneBug) {\n if (node.tagName === 'TEXTAREA') {\n res.value = node.value;\n } else {\n original = node.querySelectorAll('textarea');\n if (original.length) {\n cloned = res.querySelectorAll('textarea');\n i = cloned.length;\n while (i--) {\n cloned[i].value = original[i].value;\n }\n }\n }\n }\n return res;\n}\n\n/**\n * Process the template option and normalizes it into a\n * a DocumentFragment that can be used as a partial or a\n * instance template.\n *\n * @param {*} template\n * Possible values include:\n * - DocumentFragment object\n * - Node object of type Template\n * - id selector: '#some-template-id'\n * - template string: '<div><span>{{msg}}</span></div>'\n * @param {Boolean} shouldClone\n * @param {Boolean} raw\n * inline HTML interpolation. Do not check for id\n * selector and keep whitespace in the string.\n * @return {DocumentFragment|undefined}\n */\n\nfunction parseTemplate(template, shouldClone, raw) {\n var node, frag;\n\n // if the template is already a document fragment,\n // do nothing\n if (isFragment(template)) {\n trimNode(template);\n return shouldClone ? cloneNode(template) : template;\n }\n\n if (typeof template === 'string') {\n // id selector\n if (!raw && template.charAt(0) === '#') {\n // id selector can be cached too\n frag = idSelectorCache.get(template);\n if (!frag) {\n node = document.getElementById(template.slice(1));\n if (node) {\n frag = nodeToFragment(node);\n // save selector to cache\n idSelectorCache.put(template, frag);\n }\n }\n } else {\n // normal string template\n frag = stringToFragment(template, raw);\n }\n } else if (template.nodeType) {\n // a direct node\n frag = nodeToFragment(template);\n }\n\n return frag && shouldClone ? cloneNode(frag) : frag;\n}\n\nvar template = Object.freeze({\n cloneNode: cloneNode,\n parseTemplate: parseTemplate\n});\n\nvar html = {\n\n bind: function bind() {\n // a comment node means this is a binding for\n // {{{ inline unescaped html }}}\n if (this.el.nodeType === 8) {\n // hold nodes\n this.nodes = [];\n // replace the placeholder with proper anchor\n this.anchor = createAnchor('v-html');\n replace(this.el, this.anchor);\n }\n },\n\n update: function update(value) {\n value = _toString(value);\n if (this.nodes) {\n this.swap(value);\n } else {\n this.el.innerHTML = value;\n }\n },\n\n swap: function swap(value) {\n // remove old nodes\n var i = this.nodes.length;\n while (i--) {\n remove(this.nodes[i]);\n }\n // convert new value to a fragment\n // do not attempt to retrieve from id selector\n var frag = parseTemplate(value, true, true);\n // save a reference to these nodes so we can remove later\n this.nodes = toArray(frag.childNodes);\n before(frag, this.anchor);\n }\n};\n\n/**\n * Abstraction for a partially-compiled fragment.\n * Can optionally compile content with a child scope.\n *\n * @param {Function} linker\n * @param {Vue} vm\n * @param {DocumentFragment} frag\n * @param {Vue} [host]\n * @param {Object} [scope]\n * @param {Fragment} [parentFrag]\n */\nfunction Fragment(linker, vm, frag, host, scope, parentFrag) {\n this.children = [];\n this.childFrags = [];\n this.vm = vm;\n this.scope = scope;\n this.inserted = false;\n this.parentFrag = parentFrag;\n if (parentFrag) {\n parentFrag.childFrags.push(this);\n }\n this.unlink = linker(vm, frag, host, scope, this);\n var single = this.single = frag.childNodes.length === 1 &&\n // do not go single mode if the only node is an anchor\n !frag.childNodes[0].__v_anchor;\n if (single) {\n this.node = frag.childNodes[0];\n this.before = singleBefore;\n this.remove = singleRemove;\n } else {\n this.node = createAnchor('fragment-start');\n this.end = createAnchor('fragment-end');\n this.frag = frag;\n prepend(this.node, frag);\n frag.appendChild(this.end);\n this.before = multiBefore;\n this.remove = multiRemove;\n }\n this.node.__v_frag = this;\n}\n\n/**\n * Call attach/detach for all components contained within\n * this fragment. Also do so recursively for all child\n * fragments.\n *\n * @param {Function} hook\n */\n\nFragment.prototype.callHook = function (hook) {\n var i, l;\n for (i = 0, l = this.childFrags.length; i < l; i++) {\n this.childFrags[i].callHook(hook);\n }\n for (i = 0, l = this.children.length; i < l; i++) {\n hook(this.children[i]);\n }\n};\n\n/**\n * Insert fragment before target, single node version\n *\n * @param {Node} target\n * @param {Boolean} withTransition\n */\n\nfunction singleBefore(target, withTransition) {\n this.inserted = true;\n var method = withTransition !== false ? beforeWithTransition : before;\n method(this.node, target, this.vm);\n if (inDoc(this.node)) {\n this.callHook(attach);\n }\n}\n\n/**\n * Remove fragment, single node version\n */\n\nfunction singleRemove() {\n this.inserted = false;\n var shouldCallRemove = inDoc(this.node);\n var self = this;\n this.beforeRemove();\n removeWithTransition(this.node, this.vm, function () {\n if (shouldCallRemove) {\n self.callHook(detach);\n }\n self.destroy();\n });\n}\n\n/**\n * Insert fragment before target, multi-nodes version\n *\n * @param {Node} target\n * @param {Boolean} withTransition\n */\n\nfunction multiBefore(target, withTransition) {\n this.inserted = true;\n var vm = this.vm;\n var method = withTransition !== false ? beforeWithTransition : before;\n mapNodeRange(this.node, this.end, function (node) {\n method(node, target, vm);\n });\n if (inDoc(this.node)) {\n this.callHook(attach);\n }\n}\n\n/**\n * Remove fragment, multi-nodes version\n */\n\nfunction multiRemove() {\n this.inserted = false;\n var self = this;\n var shouldCallRemove = inDoc(this.node);\n this.beforeRemove();\n removeNodeRange(this.node, this.end, this.vm, this.frag, function () {\n if (shouldCallRemove) {\n self.callHook(detach);\n }\n self.destroy();\n });\n}\n\n/**\n * Prepare the fragment for removal.\n */\n\nFragment.prototype.beforeRemove = function () {\n var i, l;\n for (i = 0, l = this.childFrags.length; i < l; i++) {\n // call the same method recursively on child\n // fragments, depth-first\n this.childFrags[i].beforeRemove(false);\n }\n for (i = 0, l = this.children.length; i < l; i++) {\n // Call destroy for all contained instances,\n // with remove:false and defer:true.\n // Defer is necessary because we need to\n // keep the children to call detach hooks\n // on them.\n this.children[i].$destroy(false, true);\n }\n var dirs = this.unlink.dirs;\n for (i = 0, l = dirs.length; i < l; i++) {\n // disable the watchers on all the directives\n // so that the rendered content stays the same\n // during removal.\n dirs[i]._watcher && dirs[i]._watcher.teardown();\n }\n};\n\n/**\n * Destroy the fragment.\n */\n\nFragment.prototype.destroy = function () {\n if (this.parentFrag) {\n this.parentFrag.childFrags.$remove(this);\n }\n this.node.__v_frag = null;\n this.unlink();\n};\n\n/**\n * Call attach hook for a Vue instance.\n *\n * @param {Vue} child\n */\n\nfunction attach(child) {\n if (!child._isAttached && inDoc(child.$el)) {\n child._callHook('attached');\n }\n}\n\n/**\n * Call detach hook for a Vue instance.\n *\n * @param {Vue} child\n */\n\nfunction detach(child) {\n if (child._isAttached && !inDoc(child.$el)) {\n child._callHook('detached');\n }\n}\n\nvar linkerCache = new Cache(5000);\n\n/**\n * A factory that can be used to create instances of a\n * fragment. Caches the compiled linker if possible.\n *\n * @param {Vue} vm\n * @param {Element|String} el\n */\nfunction FragmentFactory(vm, el) {\n this.vm = vm;\n var template;\n var isString = typeof el === 'string';\n if (isString || isTemplate(el) && !el.hasAttribute('v-if')) {\n template = parseTemplate(el, true);\n } else {\n template = document.createDocumentFragment();\n template.appendChild(el);\n }\n this.template = template;\n // linker can be cached, but only for components\n var linker;\n var cid = vm.constructor.cid;\n if (cid > 0) {\n var cacheId = cid + (isString ? el : getOuterHTML(el));\n linker = linkerCache.get(cacheId);\n if (!linker) {\n linker = compile(template, vm.$options, true);\n linkerCache.put(cacheId, linker);\n }\n } else {\n linker = compile(template, vm.$options, true);\n }\n this.linker = linker;\n}\n\n/**\n * Create a fragment instance with given host and scope.\n *\n * @param {Vue} host\n * @param {Object} scope\n * @param {Fragment} parentFrag\n */\n\nFragmentFactory.prototype.create = function (host, scope, parentFrag) {\n var frag = cloneNode(this.template);\n return new Fragment(this.linker, this.vm, frag, host, scope, parentFrag);\n};\n\nvar ON = 700;\nvar MODEL = 800;\nvar BIND = 850;\nvar TRANSITION = 1100;\nvar EL = 1500;\nvar COMPONENT = 1500;\nvar PARTIAL = 1750;\nvar IF = 2100;\nvar FOR = 2200;\nvar SLOT = 2300;\n\nvar uid$3 = 0;\n\nvar vFor = {\n\n priority: FOR,\n terminal: true,\n\n params: ['track-by', 'stagger', 'enter-stagger', 'leave-stagger'],\n\n bind: function bind() {\n // support \"item in/of items\" syntax\n var inMatch = this.expression.match(/(.*) (?:in|of) (.*)/);\n if (inMatch) {\n var itMatch = inMatch[1].match(/\\((.*),(.*)\\)/);\n if (itMatch) {\n this.iterator = itMatch[1].trim();\n this.alias = itMatch[2].trim();\n } else {\n this.alias = inMatch[1].trim();\n }\n this.expression = inMatch[2];\n }\n\n if (!this.alias) {\n process.env.NODE_ENV !== 'production' && warn('Invalid v-for expression \"' + this.descriptor.raw + '\": ' + 'alias is required.', this.vm);\n return;\n }\n\n // uid as a cache identifier\n this.id = '__v-for__' + ++uid$3;\n\n // check if this is an option list,\n // so that we know if we need to update the <select>'s\n // v-model when the option list has changed.\n // because v-model has a lower priority than v-for,\n // the v-model is not bound here yet, so we have to\n // retrive it in the actual updateModel() function.\n var tag = this.el.tagName;\n this.isOption = (tag === 'OPTION' || tag === 'OPTGROUP') && this.el.parentNode.tagName === 'SELECT';\n\n // setup anchor nodes\n this.start = createAnchor('v-for-start');\n this.end = createAnchor('v-for-end');\n replace(this.el, this.end);\n before(this.start, this.end);\n\n // cache\n this.cache = Object.create(null);\n\n // fragment factory\n this.factory = new FragmentFactory(this.vm, this.el);\n },\n\n update: function update(data) {\n this.diff(data);\n this.updateRef();\n this.updateModel();\n },\n\n /**\n * Diff, based on new data and old data, determine the\n * minimum amount of DOM manipulations needed to make the\n * DOM reflect the new data Array.\n *\n * The algorithm diffs the new data Array by storing a\n * hidden reference to an owner vm instance on previously\n * seen data. This allows us to achieve O(n) which is\n * better than a levenshtein distance based algorithm,\n * which is O(m * n).\n *\n * @param {Array} data\n */\n\n diff: function diff(data) {\n // check if the Array was converted from an Object\n var item = data[0];\n var convertedFromObject = this.fromObject = isObject(item) && hasOwn(item, '$key') && hasOwn(item, '$value');\n\n var trackByKey = this.params.trackBy;\n var oldFrags = this.frags;\n var frags = this.frags = new Array(data.length);\n var alias = this.alias;\n var iterator = this.iterator;\n var start = this.start;\n var end = this.end;\n var inDocument = inDoc(start);\n var init = !oldFrags;\n var i, l, frag, key, value, primitive;\n\n // First pass, go through the new Array and fill up\n // the new frags array. If a piece of data has a cached\n // instance for it, we reuse it. Otherwise build a new\n // instance.\n for (i = 0, l = data.length; i < l; i++) {\n item = data[i];\n key = convertedFromObject ? item.$key : null;\n value = convertedFromObject ? item.$value : item;\n primitive = !isObject(value);\n frag = !init && this.getCachedFrag(value, i, key);\n if (frag) {\n // reusable fragment\n frag.reused = true;\n // update $index\n frag.scope.$index = i;\n // update $key\n if (key) {\n frag.scope.$key = key;\n }\n // update iterator\n if (iterator) {\n frag.scope[iterator] = key !== null ? key : i;\n }\n // update data for track-by, object repeat &\n // primitive values.\n if (trackByKey || convertedFromObject || primitive) {\n withoutConversion(function () {\n frag.scope[alias] = value;\n });\n }\n } else {\n // new isntance\n frag = this.create(value, alias, i, key);\n frag.fresh = !init;\n }\n frags[i] = frag;\n if (init) {\n frag.before(end);\n }\n }\n\n // we're done for the initial render.\n if (init) {\n return;\n }\n\n // Second pass, go through the old fragments and\n // destroy those who are not reused (and remove them\n // from cache)\n var removalIndex = 0;\n var totalRemoved = oldFrags.length - frags.length;\n // when removing a large number of fragments, watcher removal\n // turns out to be a perf bottleneck, so we batch the watcher\n // removals into a single filter call!\n this.vm._vForRemoving = true;\n for (i = 0, l = oldFrags.length; i < l; i++) {\n frag = oldFrags[i];\n if (!frag.reused) {\n this.deleteCachedFrag(frag);\n this.remove(frag, removalIndex++, totalRemoved, inDocument);\n }\n }\n this.vm._vForRemoving = false;\n if (removalIndex) {\n this.vm._watchers = this.vm._watchers.filter(function (w) {\n return w.active;\n });\n }\n\n // Final pass, move/insert new fragments into the\n // right place.\n var targetPrev, prevEl, currentPrev;\n var insertionIndex = 0;\n for (i = 0, l = frags.length; i < l; i++) {\n frag = frags[i];\n // this is the frag that we should be after\n targetPrev = frags[i - 1];\n prevEl = targetPrev ? targetPrev.staggerCb ? targetPrev.staggerAnchor : targetPrev.end || targetPrev.node : start;\n if (frag.reused && !frag.staggerCb) {\n currentPrev = findPrevFrag(frag, start, this.id);\n if (currentPrev !== targetPrev && (!currentPrev ||\n // optimization for moving a single item.\n // thanks to suggestions by @livoras in #1807\n findPrevFrag(currentPrev, start, this.id) !== targetPrev)) {\n this.move(frag, prevEl);\n }\n } else {\n // new instance, or still in stagger.\n // insert with updated stagger index.\n this.insert(frag, insertionIndex++, prevEl, inDocument);\n }\n frag.reused = frag.fresh = false;\n }\n },\n\n /**\n * Create a new fragment instance.\n *\n * @param {*} value\n * @param {String} alias\n * @param {Number} index\n * @param {String} [key]\n * @return {Fragment}\n */\n\n create: function create(value, alias, index, key) {\n var host = this._host;\n // create iteration scope\n var parentScope = this._scope || this.vm;\n var scope = Object.create(parentScope);\n // ref holder for the scope\n scope.$refs = Object.create(parentScope.$refs);\n scope.$els = Object.create(parentScope.$els);\n // make sure point $parent to parent scope\n scope.$parent = parentScope;\n // for two-way binding on alias\n scope.$forContext = this;\n // define scope properties\n // important: define the scope alias without forced conversion\n // so that frozen data structures remain non-reactive.\n withoutConversion(function () {\n defineReactive(scope, alias, value);\n });\n defineReactive(scope, '$index', index);\n if (key) {\n defineReactive(scope, '$key', key);\n } else if (scope.$key) {\n // avoid accidental fallback\n def(scope, '$key', null);\n }\n if (this.iterator) {\n defineReactive(scope, this.iterator, key !== null ? key : index);\n }\n var frag = this.factory.create(host, scope, this._frag);\n frag.forId = this.id;\n this.cacheFrag(value, frag, index, key);\n return frag;\n },\n\n /**\n * Update the v-ref on owner vm.\n */\n\n updateRef: function updateRef() {\n var ref = this.descriptor.ref;\n if (!ref) return;\n var hash = (this._scope || this.vm).$refs;\n var refs;\n if (!this.fromObject) {\n refs = this.frags.map(findVmFromFrag);\n } else {\n refs = {};\n this.frags.forEach(function (frag) {\n refs[frag.scope.$key] = findVmFromFrag(frag);\n });\n }\n hash[ref] = refs;\n },\n\n /**\n * For option lists, update the containing v-model on\n * parent <select>.\n */\n\n updateModel: function updateModel() {\n if (this.isOption) {\n var parent = this.start.parentNode;\n var model = parent && parent.__v_model;\n if (model) {\n model.forceUpdate();\n }\n }\n },\n\n /**\n * Insert a fragment. Handles staggering.\n *\n * @param {Fragment} frag\n * @param {Number} index\n * @param {Node} prevEl\n * @param {Boolean} inDocument\n */\n\n insert: function insert(frag, index, prevEl, inDocument) {\n if (frag.staggerCb) {\n frag.staggerCb.cancel();\n frag.staggerCb = null;\n }\n var staggerAmount = this.getStagger(frag, index, null, 'enter');\n if (inDocument && staggerAmount) {\n // create an anchor and insert it synchronously,\n // so that we can resolve the correct order without\n // worrying about some elements not inserted yet\n var anchor = frag.staggerAnchor;\n if (!anchor) {\n anchor = frag.staggerAnchor = createAnchor('stagger-anchor');\n anchor.__v_frag = frag;\n }\n after(anchor, prevEl);\n var op = frag.staggerCb = cancellable(function () {\n frag.staggerCb = null;\n frag.before(anchor);\n remove(anchor);\n });\n setTimeout(op, staggerAmount);\n } else {\n var target = prevEl.nextSibling;\n /* istanbul ignore if */\n if (!target) {\n // reset end anchor position in case the position was messed up\n // by an external drag-n-drop library.\n after(this.end, prevEl);\n target = this.end;\n }\n frag.before(target);\n }\n },\n\n /**\n * Remove a fragment. Handles staggering.\n *\n * @param {Fragment} frag\n * @param {Number} index\n * @param {Number} total\n * @param {Boolean} inDocument\n */\n\n remove: function remove(frag, index, total, inDocument) {\n if (frag.staggerCb) {\n frag.staggerCb.cancel();\n frag.staggerCb = null;\n // it's not possible for the same frag to be removed\n // twice, so if we have a pending stagger callback,\n // it means this frag is queued for enter but removed\n // before its transition started. Since it is already\n // destroyed, we can just leave it in detached state.\n return;\n }\n var staggerAmount = this.getStagger(frag, index, total, 'leave');\n if (inDocument && staggerAmount) {\n var op = frag.staggerCb = cancellable(function () {\n frag.staggerCb = null;\n frag.remove();\n });\n setTimeout(op, staggerAmount);\n } else {\n frag.remove();\n }\n },\n\n /**\n * Move a fragment to a new position.\n * Force no transition.\n *\n * @param {Fragment} frag\n * @param {Node} prevEl\n */\n\n move: function move(frag, prevEl) {\n // fix a common issue with Sortable:\n // if prevEl doesn't have nextSibling, this means it's\n // been dragged after the end anchor. Just re-position\n // the end anchor to the end of the container.\n /* istanbul ignore if */\n if (!prevEl.nextSibling) {\n this.end.parentNode.appendChild(this.end);\n }\n frag.before(prevEl.nextSibling, false);\n },\n\n /**\n * Cache a fragment using track-by or the object key.\n *\n * @param {*} value\n * @param {Fragment} frag\n * @param {Number} index\n * @param {String} [key]\n */\n\n cacheFrag: function cacheFrag(value, frag, index, key) {\n var trackByKey = this.params.trackBy;\n var cache = this.cache;\n var primitive = !isObject(value);\n var id;\n if (key || trackByKey || primitive) {\n id = getTrackByKey(index, key, value, trackByKey);\n if (!cache[id]) {\n cache[id] = frag;\n } else if (trackByKey !== '$index') {\n process.env.NODE_ENV !== 'production' && this.warnDuplicate(value);\n }\n } else {\n id = this.id;\n if (hasOwn(value, id)) {\n if (value[id] === null) {\n value[id] = frag;\n } else {\n process.env.NODE_ENV !== 'production' && this.warnDuplicate(value);\n }\n } else if (Object.isExtensible(value)) {\n def(value, id, frag);\n } else if (process.env.NODE_ENV !== 'production') {\n warn('Frozen v-for objects cannot be automatically tracked, make sure to ' + 'provide a track-by key.');\n }\n }\n frag.raw = value;\n },\n\n /**\n * Get a cached fragment from the value/index/key\n *\n * @param {*} value\n * @param {Number} index\n * @param {String} key\n * @return {Fragment}\n */\n\n getCachedFrag: function getCachedFrag(value, index, key) {\n var trackByKey = this.params.trackBy;\n var primitive = !isObject(value);\n var frag;\n if (key || trackByKey || primitive) {\n var id = getTrackByKey(index, key, value, trackByKey);\n frag = this.cache[id];\n } else {\n frag = value[this.id];\n }\n if (frag && (frag.reused || frag.fresh)) {\n process.env.NODE_ENV !== 'production' && this.warnDuplicate(value);\n }\n return frag;\n },\n\n /**\n * Delete a fragment from cache.\n *\n * @param {Fragment} frag\n */\n\n deleteCachedFrag: function deleteCachedFrag(frag) {\n var value = frag.raw;\n var trackByKey = this.params.trackBy;\n var scope = frag.scope;\n var index = scope.$index;\n // fix #948: avoid accidentally fall through to\n // a parent repeater which happens to have $key.\n var key = hasOwn(scope, '$key') && scope.$key;\n var primitive = !isObject(value);\n if (trackByKey || key || primitive) {\n var id = getTrackByKey(index, key, value, trackByKey);\n this.cache[id] = null;\n } else {\n value[this.id] = null;\n frag.raw = null;\n }\n },\n\n /**\n * Get the stagger amount for an insertion/removal.\n *\n * @param {Fragment} frag\n * @param {Number} index\n * @param {Number} total\n * @param {String} type\n */\n\n getStagger: function getStagger(frag, index, total, type) {\n type = type + 'Stagger';\n var trans = frag.node.__v_trans;\n var hooks = trans && trans.hooks;\n var hook = hooks && (hooks[type] || hooks.stagger);\n return hook ? hook.call(frag, index, total) : index * parseInt(this.params[type] || this.params.stagger, 10);\n },\n\n /**\n * Pre-process the value before piping it through the\n * filters. This is passed to and called by the watcher.\n */\n\n _preProcess: function _preProcess(value) {\n // regardless of type, store the un-filtered raw value.\n this.rawValue = value;\n return value;\n },\n\n /**\n * Post-process the value after it has been piped through\n * the filters. This is passed to and called by the watcher.\n *\n * It is necessary for this to be called during the\n * watcher's dependency collection phase because we want\n * the v-for to update when the source Object is mutated.\n */\n\n _postProcess: function _postProcess(value) {\n if (isArray(value)) {\n return value;\n } else if (isPlainObject(value)) {\n // convert plain object to array.\n var keys = Object.keys(value);\n var i = keys.length;\n var res = new Array(i);\n var key;\n while (i--) {\n key = keys[i];\n res[i] = {\n $key: key,\n $value: value[key]\n };\n }\n return res;\n } else {\n if (typeof value === 'number' && !isNaN(value)) {\n value = range(value);\n }\n return value || [];\n }\n },\n\n unbind: function unbind() {\n if (this.descriptor.ref) {\n (this._scope || this.vm).$refs[this.descriptor.ref] = null;\n }\n if (this.frags) {\n var i = this.frags.length;\n var frag;\n while (i--) {\n frag = this.frags[i];\n this.deleteCachedFrag(frag);\n frag.destroy();\n }\n }\n }\n};\n\n/**\n * Helper to find the previous element that is a fragment\n * anchor. This is necessary because a destroyed frag's\n * element could still be lingering in the DOM before its\n * leaving transition finishes, but its inserted flag\n * should have been set to false so we can skip them.\n *\n * If this is a block repeat, we want to make sure we only\n * return frag that is bound to this v-for. (see #929)\n *\n * @param {Fragment} frag\n * @param {Comment|Text} anchor\n * @param {String} id\n * @return {Fragment}\n */\n\nfunction findPrevFrag(frag, anchor, id) {\n var el = frag.node.previousSibling;\n /* istanbul ignore if */\n if (!el) return;\n frag = el.__v_frag;\n while ((!frag || frag.forId !== id || !frag.inserted) && el !== anchor) {\n el = el.previousSibling;\n /* istanbul ignore if */\n if (!el) return;\n frag = el.__v_frag;\n }\n return frag;\n}\n\n/**\n * Find a vm from a fragment.\n *\n * @param {Fragment} frag\n * @return {Vue|undefined}\n */\n\nfunction findVmFromFrag(frag) {\n var node = frag.node;\n // handle multi-node frag\n if (frag.end) {\n while (!node.__vue__ && node !== frag.end && node.nextSibling) {\n node = node.nextSibling;\n }\n }\n return node.__vue__;\n}\n\n/**\n * Create a range array from given number.\n *\n * @param {Number} n\n * @return {Array}\n */\n\nfunction range(n) {\n var i = -1;\n var ret = new Array(Math.floor(n));\n while (++i < n) {\n ret[i] = i;\n }\n return ret;\n}\n\n/**\n * Get the track by key for an item.\n *\n * @param {Number} index\n * @param {String} key\n * @param {*} value\n * @param {String} [trackByKey]\n */\n\nfunction getTrackByKey(index, key, value, trackByKey) {\n return trackByKey ? trackByKey === '$index' ? index : trackByKey.charAt(0).match(/\\w/) ? getPath(value, trackByKey) : value[trackByKey] : key || value;\n}\n\nif (process.env.NODE_ENV !== 'production') {\n vFor.warnDuplicate = function (value) {\n warn('Duplicate value found in v-for=\"' + this.descriptor.raw + '\": ' + JSON.stringify(value) + '. Use track-by=\"$index\" if ' + 'you are expecting duplicate values.', this.vm);\n };\n}\n\nvar vIf = {\n\n priority: IF,\n terminal: true,\n\n bind: function bind() {\n var el = this.el;\n if (!el.__vue__) {\n // check else block\n var next = el.nextElementSibling;\n if (next && getAttr(next, 'v-else') !== null) {\n remove(next);\n this.elseEl = next;\n }\n // check main block\n this.anchor = createAnchor('v-if');\n replace(el, this.anchor);\n } else {\n process.env.NODE_ENV !== 'production' && warn('v-if=\"' + this.expression + '\" cannot be ' + 'used on an instance root element.', this.vm);\n this.invalid = true;\n }\n },\n\n update: function update(value) {\n if (this.invalid) return;\n if (value) {\n if (!this.frag) {\n this.insert();\n }\n } else {\n this.remove();\n }\n },\n\n insert: function insert() {\n if (this.elseFrag) {\n this.elseFrag.remove();\n this.elseFrag = null;\n }\n // lazy init factory\n if (!this.factory) {\n this.factory = new FragmentFactory(this.vm, this.el);\n }\n this.frag = this.factory.create(this._host, this._scope, this._frag);\n this.frag.before(this.anchor);\n },\n\n remove: function remove() {\n if (this.frag) {\n this.frag.remove();\n this.frag = null;\n }\n if (this.elseEl && !this.elseFrag) {\n if (!this.elseFactory) {\n this.elseFactory = new FragmentFactory(this.elseEl._context || this.vm, this.elseEl);\n }\n this.elseFrag = this.elseFactory.create(this._host, this._scope, this._frag);\n this.elseFrag.before(this.anchor);\n }\n },\n\n unbind: function unbind() {\n if (this.frag) {\n this.frag.destroy();\n }\n if (this.elseFrag) {\n this.elseFrag.destroy();\n }\n }\n};\n\nvar show = {\n\n bind: function bind() {\n // check else block\n var next = this.el.nextElementSibling;\n if (next && getAttr(next, 'v-else') !== null) {\n this.elseEl = next;\n }\n },\n\n update: function update(value) {\n this.apply(this.el, value);\n if (this.elseEl) {\n this.apply(this.elseEl, !value);\n }\n },\n\n apply: function apply(el, value) {\n if (inDoc(el)) {\n applyTransition(el, value ? 1 : -1, toggle, this.vm);\n } else {\n toggle();\n }\n function toggle() {\n el.style.display = value ? '' : 'none';\n }\n }\n};\n\nvar text$2 = {\n\n bind: function bind() {\n var self = this;\n var el = this.el;\n var isRange = el.type === 'range';\n var lazy = this.params.lazy;\n var number = this.params.number;\n var debounce = this.params.debounce;\n\n // handle composition events.\n // http://blog.evanyou.me/2014/01/03/composition-event/\n // skip this for Android because it handles composition\n // events quite differently. Android doesn't trigger\n // composition events for language input methods e.g.\n // Chinese, but instead triggers them for spelling\n // suggestions... (see Discussion/#162)\n var composing = false;\n if (!isAndroid && !isRange) {\n this.on('compositionstart', function () {\n composing = true;\n });\n this.on('compositionend', function () {\n composing = false;\n // in IE11 the \"compositionend\" event fires AFTER\n // the \"input\" event, so the input handler is blocked\n // at the end... have to call it here.\n //\n // #1327: in lazy mode this is unecessary.\n if (!lazy) {\n self.listener();\n }\n });\n }\n\n // prevent messing with the input when user is typing,\n // and force update on blur.\n this.focused = false;\n if (!isRange && !lazy) {\n this.on('focus', function () {\n self.focused = true;\n });\n this.on('blur', function () {\n self.focused = false;\n // do not sync value after fragment removal (#2017)\n if (!self._frag || self._frag.inserted) {\n self.rawListener();\n }\n });\n }\n\n // Now attach the main listener\n this.listener = this.rawListener = function () {\n if (composing || !self._bound) {\n return;\n }\n var val = number || isRange ? toNumber(el.value) : el.value;\n self.set(val);\n // force update on next tick to avoid lock & same value\n // also only update when user is not typing\n nextTick(function () {\n if (self._bound && !self.focused) {\n self.update(self._watcher.value);\n }\n });\n };\n\n // apply debounce\n if (debounce) {\n this.listener = _debounce(this.listener, debounce);\n }\n\n // Support jQuery events, since jQuery.trigger() doesn't\n // trigger native events in some cases and some plugins\n // rely on $.trigger()\n //\n // We want to make sure if a listener is attached using\n // jQuery, it is also removed with jQuery, that's why\n // we do the check for each directive instance and\n // store that check result on itself. This also allows\n // easier test coverage control by unsetting the global\n // jQuery variable in tests.\n this.hasjQuery = typeof jQuery === 'function';\n if (this.hasjQuery) {\n var method = jQuery.fn.on ? 'on' : 'bind';\n jQuery(el)[method]('change', this.rawListener);\n if (!lazy) {\n jQuery(el)[method]('input', this.listener);\n }\n } else {\n this.on('change', this.rawListener);\n if (!lazy) {\n this.on('input', this.listener);\n }\n }\n\n // IE9 doesn't fire input event on backspace/del/cut\n if (!lazy && isIE9) {\n this.on('cut', function () {\n nextTick(self.listener);\n });\n this.on('keyup', function (e) {\n if (e.keyCode === 46 || e.keyCode === 8) {\n self.listener();\n }\n });\n }\n\n // set initial value if present\n if (el.hasAttribute('value') || el.tagName === 'TEXTAREA' && el.value.trim()) {\n this.afterBind = this.listener;\n }\n },\n\n update: function update(value) {\n // #3029 only update when the value changes. This prevent\n // browsers from overwriting values like selectionStart\n value = _toString(value);\n if (value !== this.el.value) this.el.value = value;\n },\n\n unbind: function unbind() {\n var el = this.el;\n if (this.hasjQuery) {\n var method = jQuery.fn.off ? 'off' : 'unbind';\n jQuery(el)[method]('change', this.listener);\n jQuery(el)[method]('input', this.listener);\n }\n }\n};\n\nvar radio = {\n\n bind: function bind() {\n var self = this;\n var el = this.el;\n\n this.getValue = function () {\n // value overwrite via v-bind:value\n if (el.hasOwnProperty('_value')) {\n return el._value;\n }\n var val = el.value;\n if (self.params.number) {\n val = toNumber(val);\n }\n return val;\n };\n\n this.listener = function () {\n self.set(self.getValue());\n };\n this.on('change', this.listener);\n\n if (el.hasAttribute('checked')) {\n this.afterBind = this.listener;\n }\n },\n\n update: function update(value) {\n this.el.checked = looseEqual(value, this.getValue());\n }\n};\n\nvar select = {\n\n bind: function bind() {\n var _this = this;\n\n var self = this;\n var el = this.el;\n\n // method to force update DOM using latest value.\n this.forceUpdate = function () {\n if (self._watcher) {\n self.update(self._watcher.get());\n }\n };\n\n // check if this is a multiple select\n var multiple = this.multiple = el.hasAttribute('multiple');\n\n // attach listener\n this.listener = function () {\n var value = getValue(el, multiple);\n value = self.params.number ? isArray(value) ? value.map(toNumber) : toNumber(value) : value;\n self.set(value);\n };\n this.on('change', this.listener);\n\n // if has initial value, set afterBind\n var initValue = getValue(el, multiple, true);\n if (multiple && initValue.length || !multiple && initValue !== null) {\n this.afterBind = this.listener;\n }\n\n // All major browsers except Firefox resets\n // selectedIndex with value -1 to 0 when the element\n // is appended to a new parent, therefore we have to\n // force a DOM update whenever that happens...\n this.vm.$on('hook:attached', function () {\n nextTick(_this.forceUpdate);\n });\n },\n\n update: function update(value) {\n var el = this.el;\n if (!inDoc(el)) {\n return nextTick(this.forceUpdate);\n }\n el.selectedIndex = -1;\n var multi = this.multiple && isArray(value);\n var options = el.options;\n var i = options.length;\n var op, val;\n while (i--) {\n op = options[i];\n val = op.hasOwnProperty('_value') ? op._value : op.value;\n /* eslint-disable eqeqeq */\n op.selected = multi ? indexOf$1(value, val) > -1 : looseEqual(value, val);\n /* eslint-enable eqeqeq */\n }\n },\n\n unbind: function unbind() {\n /* istanbul ignore next */\n this.vm.$off('hook:attached', this.forceUpdate);\n }\n};\n\n/**\n * Get select value\n *\n * @param {SelectElement} el\n * @param {Boolean} multi\n * @param {Boolean} init\n * @return {Array|*}\n */\n\nfunction getValue(el, multi, init) {\n var res = multi ? [] : null;\n var op, val, selected;\n for (var i = 0, l = el.options.length; i < l; i++) {\n op = el.options[i];\n selected = init ? op.hasAttribute('selected') : op.selected;\n if (selected) {\n val = op.hasOwnProperty('_value') ? op._value : op.value;\n if (multi) {\n res.push(val);\n } else {\n return val;\n }\n }\n }\n return res;\n}\n\n/**\n * Native Array.indexOf uses strict equal, but in this\n * case we need to match string/numbers with custom equal.\n *\n * @param {Array} arr\n * @param {*} val\n */\n\nfunction indexOf$1(arr, val) {\n var i = arr.length;\n while (i--) {\n if (looseEqual(arr[i], val)) {\n return i;\n }\n }\n return -1;\n}\n\nvar checkbox = {\n\n bind: function bind() {\n var self = this;\n var el = this.el;\n\n this.getValue = function () {\n return el.hasOwnProperty('_value') ? el._value : self.params.number ? toNumber(el.value) : el.value;\n };\n\n function getBooleanValue() {\n var val = el.checked;\n if (val && el.hasOwnProperty('_trueValue')) {\n return el._trueValue;\n }\n if (!val && el.hasOwnProperty('_falseValue')) {\n return el._falseValue;\n }\n return val;\n }\n\n this.listener = function () {\n var model = self._watcher.value;\n if (isArray(model)) {\n var val = self.getValue();\n if (el.checked) {\n if (indexOf(model, val) < 0) {\n model.push(val);\n }\n } else {\n model.$remove(val);\n }\n } else {\n self.set(getBooleanValue());\n }\n };\n\n this.on('change', this.listener);\n if (el.hasAttribute('checked')) {\n this.afterBind = this.listener;\n }\n },\n\n update: function update(value) {\n var el = this.el;\n if (isArray(value)) {\n el.checked = indexOf(value, this.getValue()) > -1;\n } else {\n if (el.hasOwnProperty('_trueValue')) {\n el.checked = looseEqual(value, el._trueValue);\n } else {\n el.checked = !!value;\n }\n }\n }\n};\n\nvar handlers = {\n text: text$2,\n radio: radio,\n select: select,\n checkbox: checkbox\n};\n\nvar model = {\n\n priority: MODEL,\n twoWay: true,\n handlers: handlers,\n params: ['lazy', 'number', 'debounce'],\n\n /**\n * Possible elements:\n * <select>\n * <textarea>\n * <input type=\"*\">\n * - text\n * - checkbox\n * - radio\n * - number\n */\n\n bind: function bind() {\n // friendly warning...\n this.checkFilters();\n if (this.hasRead && !this.hasWrite) {\n process.env.NODE_ENV !== 'production' && warn('It seems you are using a read-only filter with ' + 'v-model=\"' + this.descriptor.raw + '\". ' + 'You might want to use a two-way filter to ensure correct behavior.', this.vm);\n }\n var el = this.el;\n var tag = el.tagName;\n var handler;\n if (tag === 'INPUT') {\n handler = handlers[el.type] || handlers.text;\n } else if (tag === 'SELECT') {\n handler = handlers.select;\n } else if (tag === 'TEXTAREA') {\n handler = handlers.text;\n } else {\n process.env.NODE_ENV !== 'production' && warn('v-model does not support element type: ' + tag, this.vm);\n return;\n }\n el.__v_model = this;\n handler.bind.call(this);\n this.update = handler.update;\n this._unbind = handler.unbind;\n },\n\n /**\n * Check read/write filter stats.\n */\n\n checkFilters: function checkFilters() {\n var filters = this.filters;\n if (!filters) return;\n var i = filters.length;\n while (i--) {\n var filter = resolveAsset(this.vm.$options, 'filters', filters[i].name);\n if (typeof filter === 'function' || filter.read) {\n this.hasRead = true;\n }\n if (filter.write) {\n this.hasWrite = true;\n }\n }\n },\n\n unbind: function unbind() {\n this.el.__v_model = null;\n this._unbind && this._unbind();\n }\n};\n\n// keyCode aliases\nvar keyCodes = {\n esc: 27,\n tab: 9,\n enter: 13,\n space: 32,\n 'delete': [8, 46],\n up: 38,\n left: 37,\n right: 39,\n down: 40\n};\n\nfunction keyFilter(handler, keys) {\n var codes = keys.map(function (key) {\n var charCode = key.charCodeAt(0);\n if (charCode > 47 && charCode < 58) {\n return parseInt(key, 10);\n }\n if (key.length === 1) {\n charCode = key.toUpperCase().charCodeAt(0);\n if (charCode > 64 && charCode < 91) {\n return charCode;\n }\n }\n return keyCodes[key];\n });\n codes = [].concat.apply([], codes);\n return function keyHandler(e) {\n if (codes.indexOf(e.keyCode) > -1) {\n return handler.call(this, e);\n }\n };\n}\n\nfunction stopFilter(handler) {\n return function stopHandler(e) {\n e.stopPropagation();\n return handler.call(this, e);\n };\n}\n\nfunction preventFilter(handler) {\n return function preventHandler(e) {\n e.preventDefault();\n return handler.call(this, e);\n };\n}\n\nfunction selfFilter(handler) {\n return function selfHandler(e) {\n if (e.target === e.currentTarget) {\n return handler.call(this, e);\n }\n };\n}\n\nvar on$1 = {\n\n priority: ON,\n acceptStatement: true,\n keyCodes: keyCodes,\n\n bind: function bind() {\n // deal with iframes\n if (this.el.tagName === 'IFRAME' && this.arg !== 'load') {\n var self = this;\n this.iframeBind = function () {\n on(self.el.contentWindow, self.arg, self.handler, self.modifiers.capture);\n };\n this.on('load', this.iframeBind);\n }\n },\n\n update: function update(handler) {\n // stub a noop for v-on with no value,\n // e.g. @mousedown.prevent\n if (!this.descriptor.raw) {\n handler = function () {};\n }\n\n if (typeof handler !== 'function') {\n process.env.NODE_ENV !== 'production' && warn('v-on:' + this.arg + '=\"' + this.expression + '\" expects a function value, ' + 'got ' + handler, this.vm);\n return;\n }\n\n // apply modifiers\n if (this.modifiers.stop) {\n handler = stopFilter(handler);\n }\n if (this.modifiers.prevent) {\n handler = preventFilter(handler);\n }\n if (this.modifiers.self) {\n handler = selfFilter(handler);\n }\n // key filter\n var keys = Object.keys(this.modifiers).filter(function (key) {\n return key !== 'stop' && key !== 'prevent' && key !== 'self' && key !== 'capture';\n });\n if (keys.length) {\n handler = keyFilter(handler, keys);\n }\n\n this.reset();\n this.handler = handler;\n\n if (this.iframeBind) {\n this.iframeBind();\n } else {\n on(this.el, this.arg, this.handler, this.modifiers.capture);\n }\n },\n\n reset: function reset() {\n var el = this.iframeBind ? this.el.contentWindow : this.el;\n if (this.handler) {\n off(el, this.arg, this.handler);\n }\n },\n\n unbind: function unbind() {\n this.reset();\n }\n};\n\nvar prefixes = ['-webkit-', '-moz-', '-ms-'];\nvar camelPrefixes = ['Webkit', 'Moz', 'ms'];\nvar importantRE = /!important;?$/;\nvar propCache = Object.create(null);\n\nvar testEl = null;\n\nvar style = {\n\n deep: true,\n\n update: function update(value) {\n if (typeof value === 'string') {\n this.el.style.cssText = value;\n } else if (isArray(value)) {\n this.handleObject(value.reduce(extend, {}));\n } else {\n this.handleObject(value || {});\n }\n },\n\n handleObject: function handleObject(value) {\n // cache object styles so that only changed props\n // are actually updated.\n var cache = this.cache || (this.cache = {});\n var name, val;\n for (name in cache) {\n if (!(name in value)) {\n this.handleSingle(name, null);\n delete cache[name];\n }\n }\n for (name in value) {\n val = value[name];\n if (val !== cache[name]) {\n cache[name] = val;\n this.handleSingle(name, val);\n }\n }\n },\n\n handleSingle: function handleSingle(prop, value) {\n prop = normalize(prop);\n if (!prop) return; // unsupported prop\n // cast possible numbers/booleans into strings\n if (value != null) value += '';\n if (value) {\n var isImportant = importantRE.test(value) ? 'important' : '';\n if (isImportant) {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production') {\n warn('It\\'s probably a bad idea to use !important with inline rules. ' + 'This feature will be deprecated in a future version of Vue.');\n }\n value = value.replace(importantRE, '').trim();\n this.el.style.setProperty(prop.kebab, value, isImportant);\n } else {\n this.el.style[prop.camel] = value;\n }\n } else {\n this.el.style[prop.camel] = '';\n }\n }\n\n};\n\n/**\n * Normalize a CSS property name.\n * - cache result\n * - auto prefix\n * - camelCase -> dash-case\n *\n * @param {String} prop\n * @return {String}\n */\n\nfunction normalize(prop) {\n if (propCache[prop]) {\n return propCache[prop];\n }\n var res = prefix(prop);\n propCache[prop] = propCache[res] = res;\n return res;\n}\n\n/**\n * Auto detect the appropriate prefix for a CSS property.\n * https://gist.github.com/paulirish/523692\n *\n * @param {String} prop\n * @return {String}\n */\n\nfunction prefix(prop) {\n prop = hyphenate(prop);\n var camel = camelize(prop);\n var upper = camel.charAt(0).toUpperCase() + camel.slice(1);\n if (!testEl) {\n testEl = document.createElement('div');\n }\n var i = prefixes.length;\n var prefixed;\n if (camel !== 'filter' && camel in testEl.style) {\n return {\n kebab: prop,\n camel: camel\n };\n }\n while (i--) {\n prefixed = camelPrefixes[i] + upper;\n if (prefixed in testEl.style) {\n return {\n kebab: prefixes[i] + prop,\n camel: prefixed\n };\n }\n }\n}\n\n// xlink\nvar xlinkNS = 'http://www.w3.org/1999/xlink';\nvar xlinkRE = /^xlink:/;\n\n// check for attributes that prohibit interpolations\nvar disallowedInterpAttrRE = /^v-|^:|^@|^(?:is|transition|transition-mode|debounce|track-by|stagger|enter-stagger|leave-stagger)$/;\n// these attributes should also set their corresponding properties\n// because they only affect the initial state of the element\nvar attrWithPropsRE = /^(?:value|checked|selected|muted)$/;\n// these attributes expect enumrated values of \"true\" or \"false\"\n// but are not boolean attributes\nvar enumeratedAttrRE = /^(?:draggable|contenteditable|spellcheck)$/;\n\n// these attributes should set a hidden property for\n// binding v-model to object values\nvar modelProps = {\n value: '_value',\n 'true-value': '_trueValue',\n 'false-value': '_falseValue'\n};\n\nvar bind$1 = {\n\n priority: BIND,\n\n bind: function bind() {\n var attr = this.arg;\n var tag = this.el.tagName;\n // should be deep watch on object mode\n if (!attr) {\n this.deep = true;\n }\n // handle interpolation bindings\n var descriptor = this.descriptor;\n var tokens = descriptor.interp;\n if (tokens) {\n // handle interpolations with one-time tokens\n if (descriptor.hasOneTime) {\n this.expression = tokensToExp(tokens, this._scope || this.vm);\n }\n\n // only allow binding on native attributes\n if (disallowedInterpAttrRE.test(attr) || attr === 'name' && (tag === 'PARTIAL' || tag === 'SLOT')) {\n process.env.NODE_ENV !== 'production' && warn(attr + '=\"' + descriptor.raw + '\": ' + 'attribute interpolation is not allowed in Vue.js ' + 'directives and special attributes.', this.vm);\n this.el.removeAttribute(attr);\n this.invalid = true;\n }\n\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production') {\n var raw = attr + '=\"' + descriptor.raw + '\": ';\n // warn src\n if (attr === 'src') {\n warn(raw + 'interpolation in \"src\" attribute will cause ' + 'a 404 request. Use v-bind:src instead.', this.vm);\n }\n\n // warn style\n if (attr === 'style') {\n warn(raw + 'interpolation in \"style\" attribute will cause ' + 'the attribute to be discarded in Internet Explorer. ' + 'Use v-bind:style instead.', this.vm);\n }\n }\n }\n },\n\n update: function update(value) {\n if (this.invalid) {\n return;\n }\n var attr = this.arg;\n if (this.arg) {\n this.handleSingle(attr, value);\n } else {\n this.handleObject(value || {});\n }\n },\n\n // share object handler with v-bind:class\n handleObject: style.handleObject,\n\n handleSingle: function handleSingle(attr, value) {\n var el = this.el;\n var interp = this.descriptor.interp;\n if (this.modifiers.camel) {\n attr = camelize(attr);\n }\n if (!interp && attrWithPropsRE.test(attr) && attr in el) {\n var attrValue = attr === 'value' ? value == null // IE9 will set input.value to \"null\" for null...\n ? '' : value : value;\n\n if (el[attr] !== attrValue) {\n el[attr] = attrValue;\n }\n }\n // set model props\n var modelProp = modelProps[attr];\n if (!interp && modelProp) {\n el[modelProp] = value;\n // update v-model if present\n var model = el.__v_model;\n if (model) {\n model.listener();\n }\n }\n // do not set value attribute for textarea\n if (attr === 'value' && el.tagName === 'TEXTAREA') {\n el.removeAttribute(attr);\n return;\n }\n // update attribute\n if (enumeratedAttrRE.test(attr)) {\n el.setAttribute(attr, value ? 'true' : 'false');\n } else if (value != null && value !== false) {\n if (attr === 'class') {\n // handle edge case #1960:\n // class interpolation should not overwrite Vue transition class\n if (el.__v_trans) {\n value += ' ' + el.__v_trans.id + '-transition';\n }\n setClass(el, value);\n } else if (xlinkRE.test(attr)) {\n el.setAttributeNS(xlinkNS, attr, value === true ? '' : value);\n } else {\n el.setAttribute(attr, value === true ? '' : value);\n }\n } else {\n el.removeAttribute(attr);\n }\n }\n};\n\nvar el = {\n\n priority: EL,\n\n bind: function bind() {\n /* istanbul ignore if */\n if (!this.arg) {\n return;\n }\n var id = this.id = camelize(this.arg);\n var refs = (this._scope || this.vm).$els;\n if (hasOwn(refs, id)) {\n refs[id] = this.el;\n } else {\n defineReactive(refs, id, this.el);\n }\n },\n\n unbind: function unbind() {\n var refs = (this._scope || this.vm).$els;\n if (refs[this.id] === this.el) {\n refs[this.id] = null;\n }\n }\n};\n\nvar ref = {\n bind: function bind() {\n process.env.NODE_ENV !== 'production' && warn('v-ref:' + this.arg + ' must be used on a child ' + 'component. Found on <' + this.el.tagName.toLowerCase() + '>.', this.vm);\n }\n};\n\nvar cloak = {\n bind: function bind() {\n var el = this.el;\n this.vm.$once('pre-hook:compiled', function () {\n el.removeAttribute('v-cloak');\n });\n }\n};\n\n// must export plain object\nvar directives = {\n text: text$1,\n html: html,\n 'for': vFor,\n 'if': vIf,\n show: show,\n model: model,\n on: on$1,\n bind: bind$1,\n el: el,\n ref: ref,\n cloak: cloak\n};\n\nvar vClass = {\n\n deep: true,\n\n update: function update(value) {\n if (!value) {\n this.cleanup();\n } else if (typeof value === 'string') {\n this.setClass(value.trim().split(/\\s+/));\n } else {\n this.setClass(normalize$1(value));\n }\n },\n\n setClass: function setClass(value) {\n this.cleanup(value);\n for (var i = 0, l = value.length; i < l; i++) {\n var val = value[i];\n if (val) {\n apply(this.el, val, addClass);\n }\n }\n this.prevKeys = value;\n },\n\n cleanup: function cleanup(value) {\n var prevKeys = this.prevKeys;\n if (!prevKeys) return;\n var i = prevKeys.length;\n while (i--) {\n var key = prevKeys[i];\n if (!value || value.indexOf(key) < 0) {\n apply(this.el, key, removeClass);\n }\n }\n }\n};\n\n/**\n * Normalize objects and arrays (potentially containing objects)\n * into array of strings.\n *\n * @param {Object|Array<String|Object>} value\n * @return {Array<String>}\n */\n\nfunction normalize$1(value) {\n var res = [];\n if (isArray(value)) {\n for (var i = 0, l = value.length; i < l; i++) {\n var _key = value[i];\n if (_key) {\n if (typeof _key === 'string') {\n res.push(_key);\n } else {\n for (var k in _key) {\n if (_key[k]) res.push(k);\n }\n }\n }\n }\n } else if (isObject(value)) {\n for (var key in value) {\n if (value[key]) res.push(key);\n }\n }\n return res;\n}\n\n/**\n * Add or remove a class/classes on an element\n *\n * @param {Element} el\n * @param {String} key The class name. This may or may not\n * contain a space character, in such a\n * case we'll deal with multiple class\n * names at once.\n * @param {Function} fn\n */\n\nfunction apply(el, key, fn) {\n key = key.trim();\n if (key.indexOf(' ') === -1) {\n fn(el, key);\n return;\n }\n // The key contains one or more space characters.\n // Since a class name doesn't accept such characters, we\n // treat it as multiple classes.\n var keys = key.split(/\\s+/);\n for (var i = 0, l = keys.length; i < l; i++) {\n fn(el, keys[i]);\n }\n}\n\nvar component = {\n\n priority: COMPONENT,\n\n params: ['keep-alive', 'transition-mode', 'inline-template'],\n\n /**\n * Setup. Two possible usages:\n *\n * - static:\n * <comp> or <div v-component=\"comp\">\n *\n * - dynamic:\n * <component :is=\"view\">\n */\n\n bind: function bind() {\n if (!this.el.__vue__) {\n // keep-alive cache\n this.keepAlive = this.params.keepAlive;\n if (this.keepAlive) {\n this.cache = {};\n }\n // check inline-template\n if (this.params.inlineTemplate) {\n // extract inline template as a DocumentFragment\n this.inlineTemplate = extractContent(this.el, true);\n }\n // component resolution related state\n this.pendingComponentCb = this.Component = null;\n // transition related state\n this.pendingRemovals = 0;\n this.pendingRemovalCb = null;\n // create a ref anchor\n this.anchor = createAnchor('v-component');\n replace(this.el, this.anchor);\n // remove is attribute.\n // this is removed during compilation, but because compilation is\n // cached, when the component is used elsewhere this attribute\n // will remain at link time.\n this.el.removeAttribute('is');\n this.el.removeAttribute(':is');\n // remove ref, same as above\n if (this.descriptor.ref) {\n this.el.removeAttribute('v-ref:' + hyphenate(this.descriptor.ref));\n }\n // if static, build right now.\n if (this.literal) {\n this.setComponent(this.expression);\n }\n } else {\n process.env.NODE_ENV !== 'production' && warn('cannot mount component \"' + this.expression + '\" ' + 'on already mounted element: ' + this.el);\n }\n },\n\n /**\n * Public update, called by the watcher in the dynamic\n * literal scenario, e.g. <component :is=\"view\">\n */\n\n update: function update(value) {\n if (!this.literal) {\n this.setComponent(value);\n }\n },\n\n /**\n * Switch dynamic components. May resolve the component\n * asynchronously, and perform transition based on\n * specified transition mode. Accepts a few additional\n * arguments specifically for vue-router.\n *\n * The callback is called when the full transition is\n * finished.\n *\n * @param {String} value\n * @param {Function} [cb]\n */\n\n setComponent: function setComponent(value, cb) {\n this.invalidatePending();\n if (!value) {\n // just remove current\n this.unbuild(true);\n this.remove(this.childVM, cb);\n this.childVM = null;\n } else {\n var self = this;\n this.resolveComponent(value, function () {\n self.mountComponent(cb);\n });\n }\n },\n\n /**\n * Resolve the component constructor to use when creating\n * the child vm.\n *\n * @param {String|Function} value\n * @param {Function} cb\n */\n\n resolveComponent: function resolveComponent(value, cb) {\n var self = this;\n this.pendingComponentCb = cancellable(function (Component) {\n self.ComponentName = Component.options.name || (typeof value === 'string' ? value : null);\n self.Component = Component;\n cb();\n });\n this.vm._resolveComponent(value, this.pendingComponentCb);\n },\n\n /**\n * Create a new instance using the current constructor and\n * replace the existing instance. This method doesn't care\n * whether the new component and the old one are actually\n * the same.\n *\n * @param {Function} [cb]\n */\n\n mountComponent: function mountComponent(cb) {\n // actual mount\n this.unbuild(true);\n var self = this;\n var activateHooks = this.Component.options.activate;\n var cached = this.getCached();\n var newComponent = this.build();\n if (activateHooks && !cached) {\n this.waitingFor = newComponent;\n callActivateHooks(activateHooks, newComponent, function () {\n if (self.waitingFor !== newComponent) {\n return;\n }\n self.waitingFor = null;\n self.transition(newComponent, cb);\n });\n } else {\n // update ref for kept-alive component\n if (cached) {\n newComponent._updateRef();\n }\n this.transition(newComponent, cb);\n }\n },\n\n /**\n * When the component changes or unbinds before an async\n * constructor is resolved, we need to invalidate its\n * pending callback.\n */\n\n invalidatePending: function invalidatePending() {\n if (this.pendingComponentCb) {\n this.pendingComponentCb.cancel();\n this.pendingComponentCb = null;\n }\n },\n\n /**\n * Instantiate/insert a new child vm.\n * If keep alive and has cached instance, insert that\n * instance; otherwise build a new one and cache it.\n *\n * @param {Object} [extraOptions]\n * @return {Vue} - the created instance\n */\n\n build: function build(extraOptions) {\n var cached = this.getCached();\n if (cached) {\n return cached;\n }\n if (this.Component) {\n // default options\n var options = {\n name: this.ComponentName,\n el: cloneNode(this.el),\n template: this.inlineTemplate,\n // make sure to add the child with correct parent\n // if this is a transcluded component, its parent\n // should be the transclusion host.\n parent: this._host || this.vm,\n // if no inline-template, then the compiled\n // linker can be cached for better performance.\n _linkerCachable: !this.inlineTemplate,\n _ref: this.descriptor.ref,\n _asComponent: true,\n _isRouterView: this._isRouterView,\n // if this is a transcluded component, context\n // will be the common parent vm of this instance\n // and its host.\n _context: this.vm,\n // if this is inside an inline v-for, the scope\n // will be the intermediate scope created for this\n // repeat fragment. this is used for linking props\n // and container directives.\n _scope: this._scope,\n // pass in the owner fragment of this component.\n // this is necessary so that the fragment can keep\n // track of its contained components in order to\n // call attach/detach hooks for them.\n _frag: this._frag\n };\n // extra options\n // in 1.0.0 this is used by vue-router only\n /* istanbul ignore if */\n if (extraOptions) {\n extend(options, extraOptions);\n }\n var child = new this.Component(options);\n if (this.keepAlive) {\n this.cache[this.Component.cid] = child;\n }\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && this.el.hasAttribute('transition') && child._isFragment) {\n warn('Transitions will not work on a fragment instance. ' + 'Template: ' + child.$options.template, child);\n }\n return child;\n }\n },\n\n /**\n * Try to get a cached instance of the current component.\n *\n * @return {Vue|undefined}\n */\n\n getCached: function getCached() {\n return this.keepAlive && this.cache[this.Component.cid];\n },\n\n /**\n * Teardown the current child, but defers cleanup so\n * that we can separate the destroy and removal steps.\n *\n * @param {Boolean} defer\n */\n\n unbuild: function unbuild(defer) {\n if (this.waitingFor) {\n if (!this.keepAlive) {\n this.waitingFor.$destroy();\n }\n this.waitingFor = null;\n }\n var child = this.childVM;\n if (!child || this.keepAlive) {\n if (child) {\n // remove ref\n child._inactive = true;\n child._updateRef(true);\n }\n return;\n }\n // the sole purpose of `deferCleanup` is so that we can\n // \"deactivate\" the vm right now and perform DOM removal\n // later.\n child.$destroy(false, defer);\n },\n\n /**\n * Remove current destroyed child and manually do\n * the cleanup after removal.\n *\n * @param {Function} cb\n */\n\n remove: function remove(child, cb) {\n var keepAlive = this.keepAlive;\n if (child) {\n // we may have a component switch when a previous\n // component is still being transitioned out.\n // we want to trigger only one lastest insertion cb\n // when the existing transition finishes. (#1119)\n this.pendingRemovals++;\n this.pendingRemovalCb = cb;\n var self = this;\n child.$remove(function () {\n self.pendingRemovals--;\n if (!keepAlive) child._cleanup();\n if (!self.pendingRemovals && self.pendingRemovalCb) {\n self.pendingRemovalCb();\n self.pendingRemovalCb = null;\n }\n });\n } else if (cb) {\n cb();\n }\n },\n\n /**\n * Actually swap the components, depending on the\n * transition mode. Defaults to simultaneous.\n *\n * @param {Vue} target\n * @param {Function} [cb]\n */\n\n transition: function transition(target, cb) {\n var self = this;\n var current = this.childVM;\n // for devtool inspection\n if (current) current._inactive = true;\n target._inactive = false;\n this.childVM = target;\n switch (self.params.transitionMode) {\n case 'in-out':\n target.$before(self.anchor, function () {\n self.remove(current, cb);\n });\n break;\n case 'out-in':\n self.remove(current, function () {\n target.$before(self.anchor, cb);\n });\n break;\n default:\n self.remove(current);\n target.$before(self.anchor, cb);\n }\n },\n\n /**\n * Unbind.\n */\n\n unbind: function unbind() {\n this.invalidatePending();\n // Do not defer cleanup when unbinding\n this.unbuild();\n // destroy all keep-alive cached instances\n if (this.cache) {\n for (var key in this.cache) {\n this.cache[key].$destroy();\n }\n this.cache = null;\n }\n }\n};\n\n/**\n * Call activate hooks in order (asynchronous)\n *\n * @param {Array} hooks\n * @param {Vue} vm\n * @param {Function} cb\n */\n\nfunction callActivateHooks(hooks, vm, cb) {\n var total = hooks.length;\n var called = 0;\n hooks[0].call(vm, next);\n function next() {\n if (++called >= total) {\n cb();\n } else {\n hooks[called].call(vm, next);\n }\n }\n}\n\nvar propBindingModes = config._propBindingModes;\nvar empty = {};\n\n// regexes\nvar identRE$1 = /^[$_a-zA-Z]+[\\w$]*$/;\nvar settablePathRE = /^[A-Za-z_$][\\w$]*(\\.[A-Za-z_$][\\w$]*|\\[[^\\[\\]]+\\])*$/;\n\n/**\n * Compile props on a root element and return\n * a props link function.\n *\n * @param {Element|DocumentFragment} el\n * @param {Array} propOptions\n * @param {Vue} vm\n * @return {Function} propsLinkFn\n */\n\nfunction compileProps(el, propOptions, vm) {\n var props = [];\n var names = Object.keys(propOptions);\n var i = names.length;\n var options, name, attr, value, path, parsed, prop;\n while (i--) {\n name = names[i];\n options = propOptions[name] || empty;\n\n if (process.env.NODE_ENV !== 'production' && name === '$data') {\n warn('Do not use $data as prop.', vm);\n continue;\n }\n\n // props could contain dashes, which will be\n // interpreted as minus calculations by the parser\n // so we need to camelize the path here\n path = camelize(name);\n if (!identRE$1.test(path)) {\n process.env.NODE_ENV !== 'production' && warn('Invalid prop key: \"' + name + '\". Prop keys ' + 'must be valid identifiers.', vm);\n continue;\n }\n\n prop = {\n name: name,\n path: path,\n options: options,\n mode: propBindingModes.ONE_WAY,\n raw: null\n };\n\n attr = hyphenate(name);\n // first check dynamic version\n if ((value = getBindAttr(el, attr)) === null) {\n if ((value = getBindAttr(el, attr + '.sync')) !== null) {\n prop.mode = propBindingModes.TWO_WAY;\n } else if ((value = getBindAttr(el, attr + '.once')) !== null) {\n prop.mode = propBindingModes.ONE_TIME;\n }\n }\n if (value !== null) {\n // has dynamic binding!\n prop.raw = value;\n parsed = parseDirective(value);\n value = parsed.expression;\n prop.filters = parsed.filters;\n // check binding type\n if (isLiteral(value) && !parsed.filters) {\n // for expressions containing literal numbers and\n // booleans, there's no need to setup a prop binding,\n // so we can optimize them as a one-time set.\n prop.optimizedLiteral = true;\n } else {\n prop.dynamic = true;\n // check non-settable path for two-way bindings\n if (process.env.NODE_ENV !== 'production' && prop.mode === propBindingModes.TWO_WAY && !settablePathRE.test(value)) {\n prop.mode = propBindingModes.ONE_WAY;\n warn('Cannot bind two-way prop with non-settable ' + 'parent path: ' + value, vm);\n }\n }\n prop.parentPath = value;\n\n // warn required two-way\n if (process.env.NODE_ENV !== 'production' && options.twoWay && prop.mode !== propBindingModes.TWO_WAY) {\n warn('Prop \"' + name + '\" expects a two-way binding type.', vm);\n }\n } else if ((value = getAttr(el, attr)) !== null) {\n // has literal binding!\n prop.raw = value;\n } else if (process.env.NODE_ENV !== 'production') {\n // check possible camelCase prop usage\n var lowerCaseName = path.toLowerCase();\n value = /[A-Z\\-]/.test(name) && (el.getAttribute(lowerCaseName) || el.getAttribute(':' + lowerCaseName) || el.getAttribute('v-bind:' + lowerCaseName) || el.getAttribute(':' + lowerCaseName + '.once') || el.getAttribute('v-bind:' + lowerCaseName + '.once') || el.getAttribute(':' + lowerCaseName + '.sync') || el.getAttribute('v-bind:' + lowerCaseName + '.sync'));\n if (value) {\n warn('Possible usage error for prop `' + lowerCaseName + '` - ' + 'did you mean `' + attr + '`? HTML is case-insensitive, remember to use ' + 'kebab-case for props in templates.', vm);\n } else if (options.required) {\n // warn missing required\n warn('Missing required prop: ' + name, vm);\n }\n }\n // push prop\n props.push(prop);\n }\n return makePropsLinkFn(props);\n}\n\n/**\n * Build a function that applies props to a vm.\n *\n * @param {Array} props\n * @return {Function} propsLinkFn\n */\n\nfunction makePropsLinkFn(props) {\n return function propsLinkFn(vm, scope) {\n // store resolved props info\n vm._props = {};\n var inlineProps = vm.$options.propsData;\n var i = props.length;\n var prop, path, options, value, raw;\n while (i--) {\n prop = props[i];\n raw = prop.raw;\n path = prop.path;\n options = prop.options;\n vm._props[path] = prop;\n if (inlineProps && hasOwn(inlineProps, path)) {\n initProp(vm, prop, inlineProps[path]);\n }if (raw === null) {\n // initialize absent prop\n initProp(vm, prop, undefined);\n } else if (prop.dynamic) {\n // dynamic prop\n if (prop.mode === propBindingModes.ONE_TIME) {\n // one time binding\n value = (scope || vm._context || vm).$get(prop.parentPath);\n initProp(vm, prop, value);\n } else {\n if (vm._context) {\n // dynamic binding\n vm._bindDir({\n name: 'prop',\n def: propDef,\n prop: prop\n }, null, null, scope); // el, host, scope\n } else {\n // root instance\n initProp(vm, prop, vm.$get(prop.parentPath));\n }\n }\n } else if (prop.optimizedLiteral) {\n // optimized literal, cast it and just set once\n var stripped = stripQuotes(raw);\n value = stripped === raw ? toBoolean(toNumber(raw)) : stripped;\n initProp(vm, prop, value);\n } else {\n // string literal, but we need to cater for\n // Boolean props with no value, or with same\n // literal value (e.g. disabled=\"disabled\")\n // see https://github.com/vuejs/vue-loader/issues/182\n value = options.type === Boolean && (raw === '' || raw === hyphenate(prop.name)) ? true : raw;\n initProp(vm, prop, value);\n }\n }\n };\n}\n\n/**\n * Process a prop with a rawValue, applying necessary coersions,\n * default values & assertions and call the given callback with\n * processed value.\n *\n * @param {Vue} vm\n * @param {Object} prop\n * @param {*} rawValue\n * @param {Function} fn\n */\n\nfunction processPropValue(vm, prop, rawValue, fn) {\n var isSimple = prop.dynamic && isSimplePath(prop.parentPath);\n var value = rawValue;\n if (value === undefined) {\n value = getPropDefaultValue(vm, prop);\n }\n value = coerceProp(prop, value, vm);\n var coerced = value !== rawValue;\n if (!assertProp(prop, value, vm)) {\n value = undefined;\n }\n if (isSimple && !coerced) {\n withoutConversion(function () {\n fn(value);\n });\n } else {\n fn(value);\n }\n}\n\n/**\n * Set a prop's initial value on a vm and its data object.\n *\n * @param {Vue} vm\n * @param {Object} prop\n * @param {*} value\n */\n\nfunction initProp(vm, prop, value) {\n processPropValue(vm, prop, value, function (value) {\n defineReactive(vm, prop.path, value);\n });\n}\n\n/**\n * Update a prop's value on a vm.\n *\n * @param {Vue} vm\n * @param {Object} prop\n * @param {*} value\n */\n\nfunction updateProp(vm, prop, value) {\n processPropValue(vm, prop, value, function (value) {\n vm[prop.path] = value;\n });\n}\n\n/**\n * Get the default value of a prop.\n *\n * @param {Vue} vm\n * @param {Object} prop\n * @return {*}\n */\n\nfunction getPropDefaultValue(vm, prop) {\n // no default, return undefined\n var options = prop.options;\n if (!hasOwn(options, 'default')) {\n // absent boolean value defaults to false\n return options.type === Boolean ? false : undefined;\n }\n var def = options['default'];\n // warn against non-factory defaults for Object & Array\n if (isObject(def)) {\n process.env.NODE_ENV !== 'production' && warn('Invalid default value for prop \"' + prop.name + '\": ' + 'Props with type Object/Array must use a factory function ' + 'to return the default value.', vm);\n }\n // call factory function for non-Function types\n return typeof def === 'function' && options.type !== Function ? def.call(vm) : def;\n}\n\n/**\n * Assert whether a prop is valid.\n *\n * @param {Object} prop\n * @param {*} value\n * @param {Vue} vm\n */\n\nfunction assertProp(prop, value, vm) {\n if (!prop.options.required && ( // non-required\n prop.raw === null || // abscent\n value == null) // null or undefined\n ) {\n return true;\n }\n var options = prop.options;\n var type = options.type;\n var valid = !type;\n var expectedTypes = [];\n if (type) {\n if (!isArray(type)) {\n type = [type];\n }\n for (var i = 0; i < type.length && !valid; i++) {\n var assertedType = assertType(value, type[i]);\n expectedTypes.push(assertedType.expectedType);\n valid = assertedType.valid;\n }\n }\n if (!valid) {\n if (process.env.NODE_ENV !== 'production') {\n warn('Invalid prop: type check failed for prop \"' + prop.name + '\".' + ' Expected ' + expectedTypes.map(formatType).join(', ') + ', got ' + formatValue(value) + '.', vm);\n }\n return false;\n }\n var validator = options.validator;\n if (validator) {\n if (!validator(value)) {\n process.env.NODE_ENV !== 'production' && warn('Invalid prop: custom validator check failed for prop \"' + prop.name + '\".', vm);\n return false;\n }\n }\n return true;\n}\n\n/**\n * Force parsing value with coerce option.\n *\n * @param {*} value\n * @param {Object} options\n * @return {*}\n */\n\nfunction coerceProp(prop, value, vm) {\n var coerce = prop.options.coerce;\n if (!coerce) {\n return value;\n }\n if (typeof coerce === 'function') {\n return coerce(value);\n } else {\n process.env.NODE_ENV !== 'production' && warn('Invalid coerce for prop \"' + prop.name + '\": expected function, got ' + typeof coerce + '.', vm);\n return value;\n }\n}\n\n/**\n * Assert the type of a value\n *\n * @param {*} value\n * @param {Function} type\n * @return {Object}\n */\n\nfunction assertType(value, type) {\n var valid;\n var expectedType;\n if (type === String) {\n expectedType = 'string';\n valid = typeof value === expectedType;\n } else if (type === Number) {\n expectedType = 'number';\n valid = typeof value === expectedType;\n } else if (type === Boolean) {\n expectedType = 'boolean';\n valid = typeof value === expectedType;\n } else if (type === Function) {\n expectedType = 'function';\n valid = typeof value === expectedType;\n } else if (type === Object) {\n expectedType = 'object';\n valid = isPlainObject(value);\n } else if (type === Array) {\n expectedType = 'array';\n valid = isArray(value);\n } else {\n valid = value instanceof type;\n }\n return {\n valid: valid,\n expectedType: expectedType\n };\n}\n\n/**\n * Format type for output\n *\n * @param {String} type\n * @return {String}\n */\n\nfunction formatType(type) {\n return type ? type.charAt(0).toUpperCase() + type.slice(1) : 'custom type';\n}\n\n/**\n * Format value\n *\n * @param {*} value\n * @return {String}\n */\n\nfunction formatValue(val) {\n return Object.prototype.toString.call(val).slice(8, -1);\n}\n\nvar bindingModes = config._propBindingModes;\n\nvar propDef = {\n\n bind: function bind() {\n var child = this.vm;\n var parent = child._context;\n // passed in from compiler directly\n var prop = this.descriptor.prop;\n var childKey = prop.path;\n var parentKey = prop.parentPath;\n var twoWay = prop.mode === bindingModes.TWO_WAY;\n\n var parentWatcher = this.parentWatcher = new Watcher(parent, parentKey, function (val) {\n updateProp(child, prop, val);\n }, {\n twoWay: twoWay,\n filters: prop.filters,\n // important: props need to be observed on the\n // v-for scope if present\n scope: this._scope\n });\n\n // set the child initial value.\n initProp(child, prop, parentWatcher.value);\n\n // setup two-way binding\n if (twoWay) {\n // important: defer the child watcher creation until\n // the created hook (after data observation)\n var self = this;\n child.$once('pre-hook:created', function () {\n self.childWatcher = new Watcher(child, childKey, function (val) {\n parentWatcher.set(val);\n }, {\n // ensure sync upward before parent sync down.\n // this is necessary in cases e.g. the child\n // mutates a prop array, then replaces it. (#1683)\n sync: true\n });\n });\n }\n },\n\n unbind: function unbind() {\n this.parentWatcher.teardown();\n if (this.childWatcher) {\n this.childWatcher.teardown();\n }\n }\n};\n\nvar queue$1 = [];\nvar queued = false;\n\n/**\n * Push a job into the queue.\n *\n * @param {Function} job\n */\n\nfunction pushJob(job) {\n queue$1.push(job);\n if (!queued) {\n queued = true;\n nextTick(flush);\n }\n}\n\n/**\n * Flush the queue, and do one forced reflow before\n * triggering transitions.\n */\n\nfunction flush() {\n // Force layout\n var f = document.documentElement.offsetHeight;\n for (var i = 0; i < queue$1.length; i++) {\n queue$1[i]();\n }\n queue$1 = [];\n queued = false;\n // dummy return, so js linters don't complain about\n // unused variable f\n return f;\n}\n\nvar TYPE_TRANSITION = 'transition';\nvar TYPE_ANIMATION = 'animation';\nvar transDurationProp = transitionProp + 'Duration';\nvar animDurationProp = animationProp + 'Duration';\n\n/**\n * If a just-entered element is applied the\n * leave class while its enter transition hasn't started yet,\n * and the transitioned property has the same value for both\n * enter/leave, then the leave transition will be skipped and\n * the transitionend event never fires. This function ensures\n * its callback to be called after a transition has started\n * by waiting for double raf.\n *\n * It falls back to setTimeout on devices that support CSS\n * transitions but not raf (e.g. Android 4.2 browser) - since\n * these environments are usually slow, we are giving it a\n * relatively large timeout.\n */\n\nvar raf = inBrowser && window.requestAnimationFrame;\nvar waitForTransitionStart = raf\n/* istanbul ignore next */\n? function (fn) {\n raf(function () {\n raf(fn);\n });\n} : function (fn) {\n setTimeout(fn, 50);\n};\n\n/**\n * A Transition object that encapsulates the state and logic\n * of the transition.\n *\n * @param {Element} el\n * @param {String} id\n * @param {Object} hooks\n * @param {Vue} vm\n */\nfunction Transition(el, id, hooks, vm) {\n this.id = id;\n this.el = el;\n this.enterClass = hooks && hooks.enterClass || id + '-enter';\n this.leaveClass = hooks && hooks.leaveClass || id + '-leave';\n this.hooks = hooks;\n this.vm = vm;\n // async state\n this.pendingCssEvent = this.pendingCssCb = this.cancel = this.pendingJsCb = this.op = this.cb = null;\n this.justEntered = false;\n this.entered = this.left = false;\n this.typeCache = {};\n // check css transition type\n this.type = hooks && hooks.type;\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production') {\n if (this.type && this.type !== TYPE_TRANSITION && this.type !== TYPE_ANIMATION) {\n warn('invalid CSS transition type for transition=\"' + this.id + '\": ' + this.type, vm);\n }\n }\n // bind\n var self = this;['enterNextTick', 'enterDone', 'leaveNextTick', 'leaveDone'].forEach(function (m) {\n self[m] = bind(self[m], self);\n });\n}\n\nvar p$1 = Transition.prototype;\n\n/**\n * Start an entering transition.\n *\n * 1. enter transition triggered\n * 2. call beforeEnter hook\n * 3. add enter class\n * 4. insert/show element\n * 5. call enter hook (with possible explicit js callback)\n * 6. reflow\n * 7. based on transition type:\n * - transition:\n * remove class now, wait for transitionend,\n * then done if there's no explicit js callback.\n * - animation:\n * wait for animationend, remove class,\n * then done if there's no explicit js callback.\n * - no css transition:\n * done now if there's no explicit js callback.\n * 8. wait for either done or js callback, then call\n * afterEnter hook.\n *\n * @param {Function} op - insert/show the element\n * @param {Function} [cb]\n */\n\np$1.enter = function (op, cb) {\n this.cancelPending();\n this.callHook('beforeEnter');\n this.cb = cb;\n addClass(this.el, this.enterClass);\n op();\n this.entered = false;\n this.callHookWithCb('enter');\n if (this.entered) {\n return; // user called done synchronously.\n }\n this.cancel = this.hooks && this.hooks.enterCancelled;\n pushJob(this.enterNextTick);\n};\n\n/**\n * The \"nextTick\" phase of an entering transition, which is\n * to be pushed into a queue and executed after a reflow so\n * that removing the class can trigger a CSS transition.\n */\n\np$1.enterNextTick = function () {\n var _this = this;\n\n // prevent transition skipping\n this.justEntered = true;\n waitForTransitionStart(function () {\n _this.justEntered = false;\n });\n var enterDone = this.enterDone;\n var type = this.getCssTransitionType(this.enterClass);\n if (!this.pendingJsCb) {\n if (type === TYPE_TRANSITION) {\n // trigger transition by removing enter class now\n removeClass(this.el, this.enterClass);\n this.setupCssCb(transitionEndEvent, enterDone);\n } else if (type === TYPE_ANIMATION) {\n this.setupCssCb(animationEndEvent, enterDone);\n } else {\n enterDone();\n }\n } else if (type === TYPE_TRANSITION) {\n removeClass(this.el, this.enterClass);\n }\n};\n\n/**\n * The \"cleanup\" phase of an entering transition.\n */\n\np$1.enterDone = function () {\n this.entered = true;\n this.cancel = this.pendingJsCb = null;\n removeClass(this.el, this.enterClass);\n this.callHook('afterEnter');\n if (this.cb) this.cb();\n};\n\n/**\n * Start a leaving transition.\n *\n * 1. leave transition triggered.\n * 2. call beforeLeave hook\n * 3. add leave class (trigger css transition)\n * 4. call leave hook (with possible explicit js callback)\n * 5. reflow if no explicit js callback is provided\n * 6. based on transition type:\n * - transition or animation:\n * wait for end event, remove class, then done if\n * there's no explicit js callback.\n * - no css transition:\n * done if there's no explicit js callback.\n * 7. wait for either done or js callback, then call\n * afterLeave hook.\n *\n * @param {Function} op - remove/hide the element\n * @param {Function} [cb]\n */\n\np$1.leave = function (op, cb) {\n this.cancelPending();\n this.callHook('beforeLeave');\n this.op = op;\n this.cb = cb;\n addClass(this.el, this.leaveClass);\n this.left = false;\n this.callHookWithCb('leave');\n if (this.left) {\n return; // user called done synchronously.\n }\n this.cancel = this.hooks && this.hooks.leaveCancelled;\n // only need to handle leaveDone if\n // 1. the transition is already done (synchronously called\n // by the user, which causes this.op set to null)\n // 2. there's no explicit js callback\n if (this.op && !this.pendingJsCb) {\n // if a CSS transition leaves immediately after enter,\n // the transitionend event never fires. therefore we\n // detect such cases and end the leave immediately.\n if (this.justEntered) {\n this.leaveDone();\n } else {\n pushJob(this.leaveNextTick);\n }\n }\n};\n\n/**\n * The \"nextTick\" phase of a leaving transition.\n */\n\np$1.leaveNextTick = function () {\n var type = this.getCssTransitionType(this.leaveClass);\n if (type) {\n var event = type === TYPE_TRANSITION ? transitionEndEvent : animationEndEvent;\n this.setupCssCb(event, this.leaveDone);\n } else {\n this.leaveDone();\n }\n};\n\n/**\n * The \"cleanup\" phase of a leaving transition.\n */\n\np$1.leaveDone = function () {\n this.left = true;\n this.cancel = this.pendingJsCb = null;\n this.op();\n removeClass(this.el, this.leaveClass);\n this.callHook('afterLeave');\n if (this.cb) this.cb();\n this.op = null;\n};\n\n/**\n * Cancel any pending callbacks from a previously running\n * but not finished transition.\n */\n\np$1.cancelPending = function () {\n this.op = this.cb = null;\n var hasPending = false;\n if (this.pendingCssCb) {\n hasPending = true;\n off(this.el, this.pendingCssEvent, this.pendingCssCb);\n this.pendingCssEvent = this.pendingCssCb = null;\n }\n if (this.pendingJsCb) {\n hasPending = true;\n this.pendingJsCb.cancel();\n this.pendingJsCb = null;\n }\n if (hasPending) {\n removeClass(this.el, this.enterClass);\n removeClass(this.el, this.leaveClass);\n }\n if (this.cancel) {\n this.cancel.call(this.vm, this.el);\n this.cancel = null;\n }\n};\n\n/**\n * Call a user-provided synchronous hook function.\n *\n * @param {String} type\n */\n\np$1.callHook = function (type) {\n if (this.hooks && this.hooks[type]) {\n this.hooks[type].call(this.vm, this.el);\n }\n};\n\n/**\n * Call a user-provided, potentially-async hook function.\n * We check for the length of arguments to see if the hook\n * expects a `done` callback. If true, the transition's end\n * will be determined by when the user calls that callback;\n * otherwise, the end is determined by the CSS transition or\n * animation.\n *\n * @param {String} type\n */\n\np$1.callHookWithCb = function (type) {\n var hook = this.hooks && this.hooks[type];\n if (hook) {\n if (hook.length > 1) {\n this.pendingJsCb = cancellable(this[type + 'Done']);\n }\n hook.call(this.vm, this.el, this.pendingJsCb);\n }\n};\n\n/**\n * Get an element's transition type based on the\n * calculated styles.\n *\n * @param {String} className\n * @return {Number}\n */\n\np$1.getCssTransitionType = function (className) {\n /* istanbul ignore if */\n if (!transitionEndEvent ||\n // skip CSS transitions if page is not visible -\n // this solves the issue of transitionend events not\n // firing until the page is visible again.\n // pageVisibility API is supported in IE10+, same as\n // CSS transitions.\n document.hidden ||\n // explicit js-only transition\n this.hooks && this.hooks.css === false ||\n // element is hidden\n isHidden(this.el)) {\n return;\n }\n var type = this.type || this.typeCache[className];\n if (type) return type;\n var inlineStyles = this.el.style;\n var computedStyles = window.getComputedStyle(this.el);\n var transDuration = inlineStyles[transDurationProp] || computedStyles[transDurationProp];\n if (transDuration && transDuration !== '0s') {\n type = TYPE_TRANSITION;\n } else {\n var animDuration = inlineStyles[animDurationProp] || computedStyles[animDurationProp];\n if (animDuration && animDuration !== '0s') {\n type = TYPE_ANIMATION;\n }\n }\n if (type) {\n this.typeCache[className] = type;\n }\n return type;\n};\n\n/**\n * Setup a CSS transitionend/animationend callback.\n *\n * @param {String} event\n * @param {Function} cb\n */\n\np$1.setupCssCb = function (event, cb) {\n this.pendingCssEvent = event;\n var self = this;\n var el = this.el;\n var onEnd = this.pendingCssCb = function (e) {\n if (e.target === el) {\n off(el, event, onEnd);\n self.pendingCssEvent = self.pendingCssCb = null;\n if (!self.pendingJsCb && cb) {\n cb();\n }\n }\n };\n on(el, event, onEnd);\n};\n\n/**\n * Check if an element is hidden - in that case we can just\n * skip the transition alltogether.\n *\n * @param {Element} el\n * @return {Boolean}\n */\n\nfunction isHidden(el) {\n if (/svg$/.test(el.namespaceURI)) {\n // SVG elements do not have offset(Width|Height)\n // so we need to check the client rect\n var rect = el.getBoundingClientRect();\n return !(rect.width || rect.height);\n } else {\n return !(el.offsetWidth || el.offsetHeight || el.getClientRects().length);\n }\n}\n\nvar transition$1 = {\n\n priority: TRANSITION,\n\n update: function update(id, oldId) {\n var el = this.el;\n // resolve on owner vm\n var hooks = resolveAsset(this.vm.$options, 'transitions', id);\n id = id || 'v';\n oldId = oldId || 'v';\n el.__v_trans = new Transition(el, id, hooks, this.vm);\n removeClass(el, oldId + '-transition');\n addClass(el, id + '-transition');\n }\n};\n\nvar internalDirectives = {\n style: style,\n 'class': vClass,\n component: component,\n prop: propDef,\n transition: transition$1\n};\n\n// special binding prefixes\nvar bindRE = /^v-bind:|^:/;\nvar onRE = /^v-on:|^@/;\nvar dirAttrRE = /^v-([^:]+)(?:$|:(.*)$)/;\nvar modifierRE = /\\.[^\\.]+/g;\nvar transitionRE = /^(v-bind:|:)?transition$/;\n\n// default directive priority\nvar DEFAULT_PRIORITY = 1000;\nvar DEFAULT_TERMINAL_PRIORITY = 2000;\n\n/**\n * Compile a template and return a reusable composite link\n * function, which recursively contains more link functions\n * inside. This top level compile function would normally\n * be called on instance root nodes, but can also be used\n * for partial compilation if the partial argument is true.\n *\n * The returned composite link function, when called, will\n * return an unlink function that tearsdown all directives\n * created during the linking phase.\n *\n * @param {Element|DocumentFragment} el\n * @param {Object} options\n * @param {Boolean} partial\n * @return {Function}\n */\n\nfunction compile(el, options, partial) {\n // link function for the node itself.\n var nodeLinkFn = partial || !options._asComponent ? compileNode(el, options) : null;\n // link function for the childNodes\n var childLinkFn = !(nodeLinkFn && nodeLinkFn.terminal) && !isScript(el) && el.hasChildNodes() ? compileNodeList(el.childNodes, options) : null;\n\n /**\n * A composite linker function to be called on a already\n * compiled piece of DOM, which instantiates all directive\n * instances.\n *\n * @param {Vue} vm\n * @param {Element|DocumentFragment} el\n * @param {Vue} [host] - host vm of transcluded content\n * @param {Object} [scope] - v-for scope\n * @param {Fragment} [frag] - link context fragment\n * @return {Function|undefined}\n */\n\n return function compositeLinkFn(vm, el, host, scope, frag) {\n // cache childNodes before linking parent, fix #657\n var childNodes = toArray(el.childNodes);\n // link\n var dirs = linkAndCapture(function compositeLinkCapturer() {\n if (nodeLinkFn) nodeLinkFn(vm, el, host, scope, frag);\n if (childLinkFn) childLinkFn(vm, childNodes, host, scope, frag);\n }, vm);\n return makeUnlinkFn(vm, dirs);\n };\n}\n\n/**\n * Apply a linker to a vm/element pair and capture the\n * directives created during the process.\n *\n * @param {Function} linker\n * @param {Vue} vm\n */\n\nfunction linkAndCapture(linker, vm) {\n /* istanbul ignore if */\n if (process.env.NODE_ENV === 'production') {\n // reset directives before every capture in production\n // mode, so that when unlinking we don't need to splice\n // them out (which turns out to be a perf hit).\n // they are kept in development mode because they are\n // useful for Vue's own tests.\n vm._directives = [];\n }\n var originalDirCount = vm._directives.length;\n linker();\n var dirs = vm._directives.slice(originalDirCount);\n dirs.sort(directiveComparator);\n for (var i = 0, l = dirs.length; i < l; i++) {\n dirs[i]._bind();\n }\n return dirs;\n}\n\n/**\n * Directive priority sort comparator\n *\n * @param {Object} a\n * @param {Object} b\n */\n\nfunction directiveComparator(a, b) {\n a = a.descriptor.def.priority || DEFAULT_PRIORITY;\n b = b.descriptor.def.priority || DEFAULT_PRIORITY;\n return a > b ? -1 : a === b ? 0 : 1;\n}\n\n/**\n * Linker functions return an unlink function that\n * tearsdown all directives instances generated during\n * the process.\n *\n * We create unlink functions with only the necessary\n * information to avoid retaining additional closures.\n *\n * @param {Vue} vm\n * @param {Array} dirs\n * @param {Vue} [context]\n * @param {Array} [contextDirs]\n * @return {Function}\n */\n\nfunction makeUnlinkFn(vm, dirs, context, contextDirs) {\n function unlink(destroying) {\n teardownDirs(vm, dirs, destroying);\n if (context && contextDirs) {\n teardownDirs(context, contextDirs);\n }\n }\n // expose linked directives\n unlink.dirs = dirs;\n return unlink;\n}\n\n/**\n * Teardown partial linked directives.\n *\n * @param {Vue} vm\n * @param {Array} dirs\n * @param {Boolean} destroying\n */\n\nfunction teardownDirs(vm, dirs, destroying) {\n var i = dirs.length;\n while (i--) {\n dirs[i]._teardown();\n if (process.env.NODE_ENV !== 'production' && !destroying) {\n vm._directives.$remove(dirs[i]);\n }\n }\n}\n\n/**\n * Compile link props on an instance.\n *\n * @param {Vue} vm\n * @param {Element} el\n * @param {Object} props\n * @param {Object} [scope]\n * @return {Function}\n */\n\nfunction compileAndLinkProps(vm, el, props, scope) {\n var propsLinkFn = compileProps(el, props, vm);\n var propDirs = linkAndCapture(function () {\n propsLinkFn(vm, scope);\n }, vm);\n return makeUnlinkFn(vm, propDirs);\n}\n\n/**\n * Compile the root element of an instance.\n *\n * 1. attrs on context container (context scope)\n * 2. attrs on the component template root node, if\n * replace:true (child scope)\n *\n * If this is a fragment instance, we only need to compile 1.\n *\n * @param {Element} el\n * @param {Object} options\n * @param {Object} contextOptions\n * @return {Function}\n */\n\nfunction compileRoot(el, options, contextOptions) {\n var containerAttrs = options._containerAttrs;\n var replacerAttrs = options._replacerAttrs;\n var contextLinkFn, replacerLinkFn;\n\n // only need to compile other attributes for\n // non-fragment instances\n if (el.nodeType !== 11) {\n // for components, container and replacer need to be\n // compiled separately and linked in different scopes.\n if (options._asComponent) {\n // 2. container attributes\n if (containerAttrs && contextOptions) {\n contextLinkFn = compileDirectives(containerAttrs, contextOptions);\n }\n if (replacerAttrs) {\n // 3. replacer attributes\n replacerLinkFn = compileDirectives(replacerAttrs, options);\n }\n } else {\n // non-component, just compile as a normal element.\n replacerLinkFn = compileDirectives(el.attributes, options);\n }\n } else if (process.env.NODE_ENV !== 'production' && containerAttrs) {\n // warn container directives for fragment instances\n var names = containerAttrs.filter(function (attr) {\n // allow vue-loader/vueify scoped css attributes\n return attr.name.indexOf('_v-') < 0 &&\n // allow event listeners\n !onRE.test(attr.name) &&\n // allow slots\n attr.name !== 'slot';\n }).map(function (attr) {\n return '\"' + attr.name + '\"';\n });\n if (names.length) {\n var plural = names.length > 1;\n warn('Attribute' + (plural ? 's ' : ' ') + names.join(', ') + (plural ? ' are' : ' is') + ' ignored on component ' + '<' + options.el.tagName.toLowerCase() + '> because ' + 'the component is a fragment instance: ' + 'http://vuejs.org/guide/components.html#Fragment-Instance');\n }\n }\n\n options._containerAttrs = options._replacerAttrs = null;\n return function rootLinkFn(vm, el, scope) {\n // link context scope dirs\n var context = vm._context;\n var contextDirs;\n if (context && contextLinkFn) {\n contextDirs = linkAndCapture(function () {\n contextLinkFn(context, el, null, scope);\n }, context);\n }\n\n // link self\n var selfDirs = linkAndCapture(function () {\n if (replacerLinkFn) replacerLinkFn(vm, el);\n }, vm);\n\n // return the unlink function that tearsdown context\n // container directives.\n return makeUnlinkFn(vm, selfDirs, context, contextDirs);\n };\n}\n\n/**\n * Compile a node and return a nodeLinkFn based on the\n * node type.\n *\n * @param {Node} node\n * @param {Object} options\n * @return {Function|null}\n */\n\nfunction compileNode(node, options) {\n var type = node.nodeType;\n if (type === 1 && !isScript(node)) {\n return compileElement(node, options);\n } else if (type === 3 && node.data.trim()) {\n return compileTextNode(node, options);\n } else {\n return null;\n }\n}\n\n/**\n * Compile an element and return a nodeLinkFn.\n *\n * @param {Element} el\n * @param {Object} options\n * @return {Function|null}\n */\n\nfunction compileElement(el, options) {\n // preprocess textareas.\n // textarea treats its text content as the initial value.\n // just bind it as an attr directive for value.\n if (el.tagName === 'TEXTAREA') {\n var tokens = parseText(el.value);\n if (tokens) {\n el.setAttribute(':value', tokensToExp(tokens));\n el.value = '';\n }\n }\n var linkFn;\n var hasAttrs = el.hasAttributes();\n var attrs = hasAttrs && toArray(el.attributes);\n // check terminal directives (for & if)\n if (hasAttrs) {\n linkFn = checkTerminalDirectives(el, attrs, options);\n }\n // check element directives\n if (!linkFn) {\n linkFn = checkElementDirectives(el, options);\n }\n // check component\n if (!linkFn) {\n linkFn = checkComponent(el, options);\n }\n // normal directives\n if (!linkFn && hasAttrs) {\n linkFn = compileDirectives(attrs, options);\n }\n return linkFn;\n}\n\n/**\n * Compile a textNode and return a nodeLinkFn.\n *\n * @param {TextNode} node\n * @param {Object} options\n * @return {Function|null} textNodeLinkFn\n */\n\nfunction compileTextNode(node, options) {\n // skip marked text nodes\n if (node._skip) {\n return removeText;\n }\n\n var tokens = parseText(node.wholeText);\n if (!tokens) {\n return null;\n }\n\n // mark adjacent text nodes as skipped,\n // because we are using node.wholeText to compile\n // all adjacent text nodes together. This fixes\n // issues in IE where sometimes it splits up a single\n // text node into multiple ones.\n var next = node.nextSibling;\n while (next && next.nodeType === 3) {\n next._skip = true;\n next = next.nextSibling;\n }\n\n var frag = document.createDocumentFragment();\n var el, token;\n for (var i = 0, l = tokens.length; i < l; i++) {\n token = tokens[i];\n el = token.tag ? processTextToken(token, options) : document.createTextNode(token.value);\n frag.appendChild(el);\n }\n return makeTextNodeLinkFn(tokens, frag, options);\n}\n\n/**\n * Linker for an skipped text node.\n *\n * @param {Vue} vm\n * @param {Text} node\n */\n\nfunction removeText(vm, node) {\n remove(node);\n}\n\n/**\n * Process a single text token.\n *\n * @param {Object} token\n * @param {Object} options\n * @return {Node}\n */\n\nfunction processTextToken(token, options) {\n var el;\n if (token.oneTime) {\n el = document.createTextNode(token.value);\n } else {\n if (token.html) {\n el = document.createComment('v-html');\n setTokenType('html');\n } else {\n // IE will clean up empty textNodes during\n // frag.cloneNode(true), so we have to give it\n // something here...\n el = document.createTextNode(' ');\n setTokenType('text');\n }\n }\n function setTokenType(type) {\n if (token.descriptor) return;\n var parsed = parseDirective(token.value);\n token.descriptor = {\n name: type,\n def: directives[type],\n expression: parsed.expression,\n filters: parsed.filters\n };\n }\n return el;\n}\n\n/**\n * Build a function that processes a textNode.\n *\n * @param {Array<Object>} tokens\n * @param {DocumentFragment} frag\n */\n\nfunction makeTextNodeLinkFn(tokens, frag) {\n return function textNodeLinkFn(vm, el, host, scope) {\n var fragClone = frag.cloneNode(true);\n var childNodes = toArray(fragClone.childNodes);\n var token, value, node;\n for (var i = 0, l = tokens.length; i < l; i++) {\n token = tokens[i];\n value = token.value;\n if (token.tag) {\n node = childNodes[i];\n if (token.oneTime) {\n value = (scope || vm).$eval(value);\n if (token.html) {\n replace(node, parseTemplate(value, true));\n } else {\n node.data = _toString(value);\n }\n } else {\n vm._bindDir(token.descriptor, node, host, scope);\n }\n }\n }\n replace(el, fragClone);\n };\n}\n\n/**\n * Compile a node list and return a childLinkFn.\n *\n * @param {NodeList} nodeList\n * @param {Object} options\n * @return {Function|undefined}\n */\n\nfunction compileNodeList(nodeList, options) {\n var linkFns = [];\n var nodeLinkFn, childLinkFn, node;\n for (var i = 0, l = nodeList.length; i < l; i++) {\n node = nodeList[i];\n nodeLinkFn = compileNode(node, options);\n childLinkFn = !(nodeLinkFn && nodeLinkFn.terminal) && node.tagName !== 'SCRIPT' && node.hasChildNodes() ? compileNodeList(node.childNodes, options) : null;\n linkFns.push(nodeLinkFn, childLinkFn);\n }\n return linkFns.length ? makeChildLinkFn(linkFns) : null;\n}\n\n/**\n * Make a child link function for a node's childNodes.\n *\n * @param {Array<Function>} linkFns\n * @return {Function} childLinkFn\n */\n\nfunction makeChildLinkFn(linkFns) {\n return function childLinkFn(vm, nodes, host, scope, frag) {\n var node, nodeLinkFn, childrenLinkFn;\n for (var i = 0, n = 0, l = linkFns.length; i < l; n++) {\n node = nodes[n];\n nodeLinkFn = linkFns[i++];\n childrenLinkFn = linkFns[i++];\n // cache childNodes before linking parent, fix #657\n var childNodes = toArray(node.childNodes);\n if (nodeLinkFn) {\n nodeLinkFn(vm, node, host, scope, frag);\n }\n if (childrenLinkFn) {\n childrenLinkFn(vm, childNodes, host, scope, frag);\n }\n }\n };\n}\n\n/**\n * Check for element directives (custom elements that should\n * be resovled as terminal directives).\n *\n * @param {Element} el\n * @param {Object} options\n */\n\nfunction checkElementDirectives(el, options) {\n var tag = el.tagName.toLowerCase();\n if (commonTagRE.test(tag)) {\n return;\n }\n var def = resolveAsset(options, 'elementDirectives', tag);\n if (def) {\n return makeTerminalNodeLinkFn(el, tag, '', options, def);\n }\n}\n\n/**\n * Check if an element is a component. If yes, return\n * a component link function.\n *\n * @param {Element} el\n * @param {Object} options\n * @return {Function|undefined}\n */\n\nfunction checkComponent(el, options) {\n var component = checkComponentAttr(el, options);\n if (component) {\n var ref = findRef(el);\n var descriptor = {\n name: 'component',\n ref: ref,\n expression: component.id,\n def: internalDirectives.component,\n modifiers: {\n literal: !component.dynamic\n }\n };\n var componentLinkFn = function componentLinkFn(vm, el, host, scope, frag) {\n if (ref) {\n defineReactive((scope || vm).$refs, ref, null);\n }\n vm._bindDir(descriptor, el, host, scope, frag);\n };\n componentLinkFn.terminal = true;\n return componentLinkFn;\n }\n}\n\n/**\n * Check an element for terminal directives in fixed order.\n * If it finds one, return a terminal link function.\n *\n * @param {Element} el\n * @param {Array} attrs\n * @param {Object} options\n * @return {Function} terminalLinkFn\n */\n\nfunction checkTerminalDirectives(el, attrs, options) {\n // skip v-pre\n if (getAttr(el, 'v-pre') !== null) {\n return skip;\n }\n // skip v-else block, but only if following v-if\n if (el.hasAttribute('v-else')) {\n var prev = el.previousElementSibling;\n if (prev && prev.hasAttribute('v-if')) {\n return skip;\n }\n }\n\n var attr, name, value, modifiers, matched, dirName, rawName, arg, def, termDef;\n for (var i = 0, j = attrs.length; i < j; i++) {\n attr = attrs[i];\n name = attr.name.replace(modifierRE, '');\n if (matched = name.match(dirAttrRE)) {\n def = resolveAsset(options, 'directives', matched[1]);\n if (def && def.terminal) {\n if (!termDef || (def.priority || DEFAULT_TERMINAL_PRIORITY) > termDef.priority) {\n termDef = def;\n rawName = attr.name;\n modifiers = parseModifiers(attr.name);\n value = attr.value;\n dirName = matched[1];\n arg = matched[2];\n }\n }\n }\n }\n\n if (termDef) {\n return makeTerminalNodeLinkFn(el, dirName, value, options, termDef, rawName, arg, modifiers);\n }\n}\n\nfunction skip() {}\nskip.terminal = true;\n\n/**\n * Build a node link function for a terminal directive.\n * A terminal link function terminates the current\n * compilation recursion and handles compilation of the\n * subtree in the directive.\n *\n * @param {Element} el\n * @param {String} dirName\n * @param {String} value\n * @param {Object} options\n * @param {Object} def\n * @param {String} [rawName]\n * @param {String} [arg]\n * @param {Object} [modifiers]\n * @return {Function} terminalLinkFn\n */\n\nfunction makeTerminalNodeLinkFn(el, dirName, value, options, def, rawName, arg, modifiers) {\n var parsed = parseDirective(value);\n var descriptor = {\n name: dirName,\n arg: arg,\n expression: parsed.expression,\n filters: parsed.filters,\n raw: value,\n attr: rawName,\n modifiers: modifiers,\n def: def\n };\n // check ref for v-for and router-view\n if (dirName === 'for' || dirName === 'router-view') {\n descriptor.ref = findRef(el);\n }\n var fn = function terminalNodeLinkFn(vm, el, host, scope, frag) {\n if (descriptor.ref) {\n defineReactive((scope || vm).$refs, descriptor.ref, null);\n }\n vm._bindDir(descriptor, el, host, scope, frag);\n };\n fn.terminal = true;\n return fn;\n}\n\n/**\n * Compile the directives on an element and return a linker.\n *\n * @param {Array|NamedNodeMap} attrs\n * @param {Object} options\n * @return {Function}\n */\n\nfunction compileDirectives(attrs, options) {\n var i = attrs.length;\n var dirs = [];\n var attr, name, value, rawName, rawValue, dirName, arg, modifiers, dirDef, tokens, matched;\n while (i--) {\n attr = attrs[i];\n name = rawName = attr.name;\n value = rawValue = attr.value;\n tokens = parseText(value);\n // reset arg\n arg = null;\n // check modifiers\n modifiers = parseModifiers(name);\n name = name.replace(modifierRE, '');\n\n // attribute interpolations\n if (tokens) {\n value = tokensToExp(tokens);\n arg = name;\n pushDir('bind', directives.bind, tokens);\n // warn against mixing mustaches with v-bind\n if (process.env.NODE_ENV !== 'production') {\n if (name === 'class' && Array.prototype.some.call(attrs, function (attr) {\n return attr.name === ':class' || attr.name === 'v-bind:class';\n })) {\n warn('class=\"' + rawValue + '\": Do not mix mustache interpolation ' + 'and v-bind for \"class\" on the same element. Use one or the other.', options);\n }\n }\n } else\n\n // special attribute: transition\n if (transitionRE.test(name)) {\n modifiers.literal = !bindRE.test(name);\n pushDir('transition', internalDirectives.transition);\n } else\n\n // event handlers\n if (onRE.test(name)) {\n arg = name.replace(onRE, '');\n pushDir('on', directives.on);\n } else\n\n // attribute bindings\n if (bindRE.test(name)) {\n dirName = name.replace(bindRE, '');\n if (dirName === 'style' || dirName === 'class') {\n pushDir(dirName, internalDirectives[dirName]);\n } else {\n arg = dirName;\n pushDir('bind', directives.bind);\n }\n } else\n\n // normal directives\n if (matched = name.match(dirAttrRE)) {\n dirName = matched[1];\n arg = matched[2];\n\n // skip v-else (when used with v-show)\n if (dirName === 'else') {\n continue;\n }\n\n dirDef = resolveAsset(options, 'directives', dirName, true);\n if (dirDef) {\n pushDir(dirName, dirDef);\n }\n }\n }\n\n /**\n * Push a directive.\n *\n * @param {String} dirName\n * @param {Object|Function} def\n * @param {Array} [interpTokens]\n */\n\n function pushDir(dirName, def, interpTokens) {\n var hasOneTimeToken = interpTokens && hasOneTime(interpTokens);\n var parsed = !hasOneTimeToken && parseDirective(value);\n dirs.push({\n name: dirName,\n attr: rawName,\n raw: rawValue,\n def: def,\n arg: arg,\n modifiers: modifiers,\n // conversion from interpolation strings with one-time token\n // to expression is differed until directive bind time so that we\n // have access to the actual vm context for one-time bindings.\n expression: parsed && parsed.expression,\n filters: parsed && parsed.filters,\n interp: interpTokens,\n hasOneTime: hasOneTimeToken\n });\n }\n\n if (dirs.length) {\n return makeNodeLinkFn(dirs);\n }\n}\n\n/**\n * Parse modifiers from directive attribute name.\n *\n * @param {String} name\n * @return {Object}\n */\n\nfunction parseModifiers(name) {\n var res = Object.create(null);\n var match = name.match(modifierRE);\n if (match) {\n var i = match.length;\n while (i--) {\n res[match[i].slice(1)] = true;\n }\n }\n return res;\n}\n\n/**\n * Build a link function for all directives on a single node.\n *\n * @param {Array} directives\n * @return {Function} directivesLinkFn\n */\n\nfunction makeNodeLinkFn(directives) {\n return function nodeLinkFn(vm, el, host, scope, frag) {\n // reverse apply because it's sorted low to high\n var i = directives.length;\n while (i--) {\n vm._bindDir(directives[i], el, host, scope, frag);\n }\n };\n}\n\n/**\n * Check if an interpolation string contains one-time tokens.\n *\n * @param {Array} tokens\n * @return {Boolean}\n */\n\nfunction hasOneTime(tokens) {\n var i = tokens.length;\n while (i--) {\n if (tokens[i].oneTime) return true;\n }\n}\n\nfunction isScript(el) {\n return el.tagName === 'SCRIPT' && (!el.hasAttribute('type') || el.getAttribute('type') === 'text/javascript');\n}\n\nvar specialCharRE = /[^\\w\\-:\\.]/;\n\n/**\n * Process an element or a DocumentFragment based on a\n * instance option object. This allows us to transclude\n * a template node/fragment before the instance is created,\n * so the processed fragment can then be cloned and reused\n * in v-for.\n *\n * @param {Element} el\n * @param {Object} options\n * @return {Element|DocumentFragment}\n */\n\nfunction transclude(el, options) {\n // extract container attributes to pass them down\n // to compiler, because they need to be compiled in\n // parent scope. we are mutating the options object here\n // assuming the same object will be used for compile\n // right after this.\n if (options) {\n options._containerAttrs = extractAttrs(el);\n }\n // for template tags, what we want is its content as\n // a documentFragment (for fragment instances)\n if (isTemplate(el)) {\n el = parseTemplate(el);\n }\n if (options) {\n if (options._asComponent && !options.template) {\n options.template = '<slot></slot>';\n }\n if (options.template) {\n options._content = extractContent(el);\n el = transcludeTemplate(el, options);\n }\n }\n if (isFragment(el)) {\n // anchors for fragment instance\n // passing in `persist: true` to avoid them being\n // discarded by IE during template cloning\n prepend(createAnchor('v-start', true), el);\n el.appendChild(createAnchor('v-end', true));\n }\n return el;\n}\n\n/**\n * Process the template option.\n * If the replace option is true this will swap the $el.\n *\n * @param {Element} el\n * @param {Object} options\n * @return {Element|DocumentFragment}\n */\n\nfunction transcludeTemplate(el, options) {\n var template = options.template;\n var frag = parseTemplate(template, true);\n if (frag) {\n var replacer = frag.firstChild;\n var tag = replacer.tagName && replacer.tagName.toLowerCase();\n if (options.replace) {\n /* istanbul ignore if */\n if (el === document.body) {\n process.env.NODE_ENV !== 'production' && warn('You are mounting an instance with a template to ' + '<body>. This will replace <body> entirely. You ' + 'should probably use `replace: false` here.');\n }\n // there are many cases where the instance must\n // become a fragment instance: basically anything that\n // can create more than 1 root nodes.\n if (\n // multi-children template\n frag.childNodes.length > 1 ||\n // non-element template\n replacer.nodeType !== 1 ||\n // single nested component\n tag === 'component' || resolveAsset(options, 'components', tag) || hasBindAttr(replacer, 'is') ||\n // element directive\n resolveAsset(options, 'elementDirectives', tag) ||\n // for block\n replacer.hasAttribute('v-for') ||\n // if block\n replacer.hasAttribute('v-if')) {\n return frag;\n } else {\n options._replacerAttrs = extractAttrs(replacer);\n mergeAttrs(el, replacer);\n return replacer;\n }\n } else {\n el.appendChild(frag);\n return el;\n }\n } else {\n process.env.NODE_ENV !== 'production' && warn('Invalid template option: ' + template);\n }\n}\n\n/**\n * Helper to extract a component container's attributes\n * into a plain object array.\n *\n * @param {Element} el\n * @return {Array}\n */\n\nfunction extractAttrs(el) {\n if (el.nodeType === 1 && el.hasAttributes()) {\n return toArray(el.attributes);\n }\n}\n\n/**\n * Merge the attributes of two elements, and make sure\n * the class names are merged properly.\n *\n * @param {Element} from\n * @param {Element} to\n */\n\nfunction mergeAttrs(from, to) {\n var attrs = from.attributes;\n var i = attrs.length;\n var name, value;\n while (i--) {\n name = attrs[i].name;\n value = attrs[i].value;\n if (!to.hasAttribute(name) && !specialCharRE.test(name)) {\n to.setAttribute(name, value);\n } else if (name === 'class' && !parseText(value) && (value = value.trim())) {\n value.split(/\\s+/).forEach(function (cls) {\n addClass(to, cls);\n });\n }\n }\n}\n\n/**\n * Scan and determine slot content distribution.\n * We do this during transclusion instead at compile time so that\n * the distribution is decoupled from the compilation order of\n * the slots.\n *\n * @param {Element|DocumentFragment} template\n * @param {Element} content\n * @param {Vue} vm\n */\n\nfunction resolveSlots(vm, content) {\n if (!content) {\n return;\n }\n var contents = vm._slotContents = Object.create(null);\n var el, name;\n for (var i = 0, l = content.children.length; i < l; i++) {\n el = content.children[i];\n /* eslint-disable no-cond-assign */\n if (name = el.getAttribute('slot')) {\n (contents[name] || (contents[name] = [])).push(el);\n }\n /* eslint-enable no-cond-assign */\n if (process.env.NODE_ENV !== 'production' && getBindAttr(el, 'slot')) {\n warn('The \"slot\" attribute must be static.', vm.$parent);\n }\n }\n for (name in contents) {\n contents[name] = extractFragment(contents[name], content);\n }\n if (content.hasChildNodes()) {\n var nodes = content.childNodes;\n if (nodes.length === 1 && nodes[0].nodeType === 3 && !nodes[0].data.trim()) {\n return;\n }\n contents['default'] = extractFragment(content.childNodes, content);\n }\n}\n\n/**\n * Extract qualified content nodes from a node list.\n *\n * @param {NodeList} nodes\n * @return {DocumentFragment}\n */\n\nfunction extractFragment(nodes, parent) {\n var frag = document.createDocumentFragment();\n nodes = toArray(nodes);\n for (var i = 0, l = nodes.length; i < l; i++) {\n var node = nodes[i];\n if (isTemplate(node) && !node.hasAttribute('v-if') && !node.hasAttribute('v-for')) {\n parent.removeChild(node);\n node = parseTemplate(node, true);\n }\n frag.appendChild(node);\n }\n return frag;\n}\n\n\n\nvar compiler = Object.freeze({\n\tcompile: compile,\n\tcompileAndLinkProps: compileAndLinkProps,\n\tcompileRoot: compileRoot,\n\ttransclude: transclude,\n\tresolveSlots: resolveSlots\n});\n\nfunction stateMixin (Vue) {\n /**\n * Accessor for `$data` property, since setting $data\n * requires observing the new object and updating\n * proxied properties.\n */\n\n Object.defineProperty(Vue.prototype, '$data', {\n get: function get() {\n return this._data;\n },\n set: function set(newData) {\n if (newData !== this._data) {\n this._setData(newData);\n }\n }\n });\n\n /**\n * Setup the scope of an instance, which contains:\n * - observed data\n * - computed properties\n * - user methods\n * - meta properties\n */\n\n Vue.prototype._initState = function () {\n this._initProps();\n this._initMeta();\n this._initMethods();\n this._initData();\n this._initComputed();\n };\n\n /**\n * Initialize props.\n */\n\n Vue.prototype._initProps = function () {\n var options = this.$options;\n var el = options.el;\n var props = options.props;\n if (props && !el) {\n process.env.NODE_ENV !== 'production' && warn('Props will not be compiled if no `el` option is ' + 'provided at instantiation.', this);\n }\n // make sure to convert string selectors into element now\n el = options.el = query(el);\n this._propsUnlinkFn = el && el.nodeType === 1 && props\n // props must be linked in proper scope if inside v-for\n ? compileAndLinkProps(this, el, props, this._scope) : null;\n };\n\n /**\n * Initialize the data.\n */\n\n Vue.prototype._initData = function () {\n var dataFn = this.$options.data;\n var data = this._data = dataFn ? dataFn() : {};\n if (!isPlainObject(data)) {\n data = {};\n process.env.NODE_ENV !== 'production' && warn('data functions should return an object.', this);\n }\n var props = this._props;\n // proxy data on instance\n var keys = Object.keys(data);\n var i, key;\n i = keys.length;\n while (i--) {\n key = keys[i];\n // there are two scenarios where we can proxy a data key:\n // 1. it's not already defined as a prop\n // 2. it's provided via a instantiation option AND there are no\n // template prop present\n if (!props || !hasOwn(props, key)) {\n this._proxy(key);\n } else if (process.env.NODE_ENV !== 'production') {\n warn('Data field \"' + key + '\" is already defined ' + 'as a prop. To provide default value for a prop, use the \"default\" ' + 'prop option; if you want to pass prop values to an instantiation ' + 'call, use the \"propsData\" option.', this);\n }\n }\n // observe data\n observe(data, this);\n };\n\n /**\n * Swap the instance's $data. Called in $data's setter.\n *\n * @param {Object} newData\n */\n\n Vue.prototype._setData = function (newData) {\n newData = newData || {};\n var oldData = this._data;\n this._data = newData;\n var keys, key, i;\n // unproxy keys not present in new data\n keys = Object.keys(oldData);\n i = keys.length;\n while (i--) {\n key = keys[i];\n if (!(key in newData)) {\n this._unproxy(key);\n }\n }\n // proxy keys not already proxied,\n // and trigger change for changed values\n keys = Object.keys(newData);\n i = keys.length;\n while (i--) {\n key = keys[i];\n if (!hasOwn(this, key)) {\n // new property\n this._proxy(key);\n }\n }\n oldData.__ob__.removeVm(this);\n observe(newData, this);\n this._digest();\n };\n\n /**\n * Proxy a property, so that\n * vm.prop === vm._data.prop\n *\n * @param {String} key\n */\n\n Vue.prototype._proxy = function (key) {\n if (!isReserved(key)) {\n // need to store ref to self here\n // because these getter/setters might\n // be called by child scopes via\n // prototype inheritance.\n var self = this;\n Object.defineProperty(self, key, {\n configurable: true,\n enumerable: true,\n get: function proxyGetter() {\n return self._data[key];\n },\n set: function proxySetter(val) {\n self._data[key] = val;\n }\n });\n }\n };\n\n /**\n * Unproxy a property.\n *\n * @param {String} key\n */\n\n Vue.prototype._unproxy = function (key) {\n if (!isReserved(key)) {\n delete this[key];\n }\n };\n\n /**\n * Force update on every watcher in scope.\n */\n\n Vue.prototype._digest = function () {\n for (var i = 0, l = this._watchers.length; i < l; i++) {\n this._watchers[i].update(true); // shallow updates\n }\n };\n\n /**\n * Setup computed properties. They are essentially\n * special getter/setters\n */\n\n function noop() {}\n Vue.prototype._initComputed = function () {\n var computed = this.$options.computed;\n if (computed) {\n for (var key in computed) {\n var userDef = computed[key];\n var def = {\n enumerable: true,\n configurable: true\n };\n if (typeof userDef === 'function') {\n def.get = makeComputedGetter(userDef, this);\n def.set = noop;\n } else {\n def.get = userDef.get ? userDef.cache !== false ? makeComputedGetter(userDef.get, this) : bind(userDef.get, this) : noop;\n def.set = userDef.set ? bind(userDef.set, this) : noop;\n }\n Object.defineProperty(this, key, def);\n }\n }\n };\n\n function makeComputedGetter(getter, owner) {\n var watcher = new Watcher(owner, getter, null, {\n lazy: true\n });\n return function computedGetter() {\n if (watcher.dirty) {\n watcher.evaluate();\n }\n if (Dep.target) {\n watcher.depend();\n }\n return watcher.value;\n };\n }\n\n /**\n * Setup instance methods. Methods must be bound to the\n * instance since they might be passed down as a prop to\n * child components.\n */\n\n Vue.prototype._initMethods = function () {\n var methods = this.$options.methods;\n if (methods) {\n for (var key in methods) {\n this[key] = bind(methods[key], this);\n }\n }\n };\n\n /**\n * Initialize meta information like $index, $key & $value.\n */\n\n Vue.prototype._initMeta = function () {\n var metas = this.$options._meta;\n if (metas) {\n for (var key in metas) {\n defineReactive(this, key, metas[key]);\n }\n }\n };\n}\n\nvar eventRE = /^v-on:|^@/;\n\nfunction eventsMixin (Vue) {\n /**\n * Setup the instance's option events & watchers.\n * If the value is a string, we pull it from the\n * instance's methods by name.\n */\n\n Vue.prototype._initEvents = function () {\n var options = this.$options;\n if (options._asComponent) {\n registerComponentEvents(this, options.el);\n }\n registerCallbacks(this, '$on', options.events);\n registerCallbacks(this, '$watch', options.watch);\n };\n\n /**\n * Register v-on events on a child component\n *\n * @param {Vue} vm\n * @param {Element} el\n */\n\n function registerComponentEvents(vm, el) {\n var attrs = el.attributes;\n var name, value, handler;\n for (var i = 0, l = attrs.length; i < l; i++) {\n name = attrs[i].name;\n if (eventRE.test(name)) {\n name = name.replace(eventRE, '');\n // force the expression into a statement so that\n // it always dynamically resolves the method to call (#2670)\n // kinda ugly hack, but does the job.\n value = attrs[i].value;\n if (isSimplePath(value)) {\n value += '.apply(this, $arguments)';\n }\n handler = (vm._scope || vm._context).$eval(value, true);\n handler._fromParent = true;\n vm.$on(name.replace(eventRE), handler);\n }\n }\n }\n\n /**\n * Register callbacks for option events and watchers.\n *\n * @param {Vue} vm\n * @param {String} action\n * @param {Object} hash\n */\n\n function registerCallbacks(vm, action, hash) {\n if (!hash) return;\n var handlers, key, i, j;\n for (key in hash) {\n handlers = hash[key];\n if (isArray(handlers)) {\n for (i = 0, j = handlers.length; i < j; i++) {\n register(vm, action, key, handlers[i]);\n }\n } else {\n register(vm, action, key, handlers);\n }\n }\n }\n\n /**\n * Helper to register an event/watch callback.\n *\n * @param {Vue} vm\n * @param {String} action\n * @param {String} key\n * @param {Function|String|Object} handler\n * @param {Object} [options]\n */\n\n function register(vm, action, key, handler, options) {\n var type = typeof handler;\n if (type === 'function') {\n vm[action](key, handler, options);\n } else if (type === 'string') {\n var methods = vm.$options.methods;\n var method = methods && methods[handler];\n if (method) {\n vm[action](key, method, options);\n } else {\n process.env.NODE_ENV !== 'production' && warn('Unknown method: \"' + handler + '\" when ' + 'registering callback for ' + action + ': \"' + key + '\".', vm);\n }\n } else if (handler && type === 'object') {\n register(vm, action, key, handler.handler, handler);\n }\n }\n\n /**\n * Setup recursive attached/detached calls\n */\n\n Vue.prototype._initDOMHooks = function () {\n this.$on('hook:attached', onAttached);\n this.$on('hook:detached', onDetached);\n };\n\n /**\n * Callback to recursively call attached hook on children\n */\n\n function onAttached() {\n if (!this._isAttached) {\n this._isAttached = true;\n this.$children.forEach(callAttach);\n }\n }\n\n /**\n * Iterator to call attached hook\n *\n * @param {Vue} child\n */\n\n function callAttach(child) {\n if (!child._isAttached && inDoc(child.$el)) {\n child._callHook('attached');\n }\n }\n\n /**\n * Callback to recursively call detached hook on children\n */\n\n function onDetached() {\n if (this._isAttached) {\n this._isAttached = false;\n this.$children.forEach(callDetach);\n }\n }\n\n /**\n * Iterator to call detached hook\n *\n * @param {Vue} child\n */\n\n function callDetach(child) {\n if (child._isAttached && !inDoc(child.$el)) {\n child._callHook('detached');\n }\n }\n\n /**\n * Trigger all handlers for a hook\n *\n * @param {String} hook\n */\n\n Vue.prototype._callHook = function (hook) {\n this.$emit('pre-hook:' + hook);\n var handlers = this.$options[hook];\n if (handlers) {\n for (var i = 0, j = handlers.length; i < j; i++) {\n handlers[i].call(this);\n }\n }\n this.$emit('hook:' + hook);\n };\n}\n\nfunction noop$1() {}\n\n/**\n * A directive links a DOM element with a piece of data,\n * which is the result of evaluating an expression.\n * It registers a watcher with the expression and calls\n * the DOM update function when a change is triggered.\n *\n * @param {Object} descriptor\n * - {String} name\n * - {Object} def\n * - {String} expression\n * - {Array<Object>} [filters]\n * - {Object} [modifiers]\n * - {Boolean} literal\n * - {String} attr\n * - {String} arg\n * - {String} raw\n * - {String} [ref]\n * - {Array<Object>} [interp]\n * - {Boolean} [hasOneTime]\n * @param {Vue} vm\n * @param {Node} el\n * @param {Vue} [host] - transclusion host component\n * @param {Object} [scope] - v-for scope\n * @param {Fragment} [frag] - owner fragment\n * @constructor\n */\nfunction Directive(descriptor, vm, el, host, scope, frag) {\n this.vm = vm;\n this.el = el;\n // copy descriptor properties\n this.descriptor = descriptor;\n this.name = descriptor.name;\n this.expression = descriptor.expression;\n this.arg = descriptor.arg;\n this.modifiers = descriptor.modifiers;\n this.filters = descriptor.filters;\n this.literal = this.modifiers && this.modifiers.literal;\n // private\n this._locked = false;\n this._bound = false;\n this._listeners = null;\n // link context\n this._host = host;\n this._scope = scope;\n this._frag = frag;\n // store directives on node in dev mode\n if (process.env.NODE_ENV !== 'production' && this.el) {\n this.el._vue_directives = this.el._vue_directives || [];\n this.el._vue_directives.push(this);\n }\n}\n\n/**\n * Initialize the directive, mixin definition properties,\n * setup the watcher, call definition bind() and update()\n * if present.\n */\n\nDirective.prototype._bind = function () {\n var name = this.name;\n var descriptor = this.descriptor;\n\n // remove attribute\n if ((name !== 'cloak' || this.vm._isCompiled) && this.el && this.el.removeAttribute) {\n var attr = descriptor.attr || 'v-' + name;\n this.el.removeAttribute(attr);\n }\n\n // copy def properties\n var def = descriptor.def;\n if (typeof def === 'function') {\n this.update = def;\n } else {\n extend(this, def);\n }\n\n // setup directive params\n this._setupParams();\n\n // initial bind\n if (this.bind) {\n this.bind();\n }\n this._bound = true;\n\n if (this.literal) {\n this.update && this.update(descriptor.raw);\n } else if ((this.expression || this.modifiers) && (this.update || this.twoWay) && !this._checkStatement()) {\n // wrapped updater for context\n var dir = this;\n if (this.update) {\n this._update = function (val, oldVal) {\n if (!dir._locked) {\n dir.update(val, oldVal);\n }\n };\n } else {\n this._update = noop$1;\n }\n var preProcess = this._preProcess ? bind(this._preProcess, this) : null;\n var postProcess = this._postProcess ? bind(this._postProcess, this) : null;\n var watcher = this._watcher = new Watcher(this.vm, this.expression, this._update, // callback\n {\n filters: this.filters,\n twoWay: this.twoWay,\n deep: this.deep,\n preProcess: preProcess,\n postProcess: postProcess,\n scope: this._scope\n });\n // v-model with inital inline value need to sync back to\n // model instead of update to DOM on init. They would\n // set the afterBind hook to indicate that.\n if (this.afterBind) {\n this.afterBind();\n } else if (this.update) {\n this.update(watcher.value);\n }\n }\n};\n\n/**\n * Setup all param attributes, e.g. track-by,\n * transition-mode, etc...\n */\n\nDirective.prototype._setupParams = function () {\n if (!this.params) {\n return;\n }\n var params = this.params;\n // swap the params array with a fresh object.\n this.params = Object.create(null);\n var i = params.length;\n var key, val, mappedKey;\n while (i--) {\n key = hyphenate(params[i]);\n mappedKey = camelize(key);\n val = getBindAttr(this.el, key);\n if (val != null) {\n // dynamic\n this._setupParamWatcher(mappedKey, val);\n } else {\n // static\n val = getAttr(this.el, key);\n if (val != null) {\n this.params[mappedKey] = val === '' ? true : val;\n }\n }\n }\n};\n\n/**\n * Setup a watcher for a dynamic param.\n *\n * @param {String} key\n * @param {String} expression\n */\n\nDirective.prototype._setupParamWatcher = function (key, expression) {\n var self = this;\n var called = false;\n var unwatch = (this._scope || this.vm).$watch(expression, function (val, oldVal) {\n self.params[key] = val;\n // since we are in immediate mode,\n // only call the param change callbacks if this is not the first update.\n if (called) {\n var cb = self.paramWatchers && self.paramWatchers[key];\n if (cb) {\n cb.call(self, val, oldVal);\n }\n } else {\n called = true;\n }\n }, {\n immediate: true,\n user: false\n });(this._paramUnwatchFns || (this._paramUnwatchFns = [])).push(unwatch);\n};\n\n/**\n * Check if the directive is a function caller\n * and if the expression is a callable one. If both true,\n * we wrap up the expression and use it as the event\n * handler.\n *\n * e.g. on-click=\"a++\"\n *\n * @return {Boolean}\n */\n\nDirective.prototype._checkStatement = function () {\n var expression = this.expression;\n if (expression && this.acceptStatement && !isSimplePath(expression)) {\n var fn = parseExpression(expression).get;\n var scope = this._scope || this.vm;\n var handler = function handler(e) {\n scope.$event = e;\n fn.call(scope, scope);\n scope.$event = null;\n };\n if (this.filters) {\n handler = scope._applyFilters(handler, null, this.filters);\n }\n this.update(handler);\n return true;\n }\n};\n\n/**\n * Set the corresponding value with the setter.\n * This should only be used in two-way directives\n * e.g. v-model.\n *\n * @param {*} value\n * @public\n */\n\nDirective.prototype.set = function (value) {\n /* istanbul ignore else */\n if (this.twoWay) {\n this._withLock(function () {\n this._watcher.set(value);\n });\n } else if (process.env.NODE_ENV !== 'production') {\n warn('Directive.set() can only be used inside twoWay' + 'directives.');\n }\n};\n\n/**\n * Execute a function while preventing that function from\n * triggering updates on this directive instance.\n *\n * @param {Function} fn\n */\n\nDirective.prototype._withLock = function (fn) {\n var self = this;\n self._locked = true;\n fn.call(self);\n nextTick(function () {\n self._locked = false;\n });\n};\n\n/**\n * Convenience method that attaches a DOM event listener\n * to the directive element and autometically tears it down\n * during unbind.\n *\n * @param {String} event\n * @param {Function} handler\n * @param {Boolean} [useCapture]\n */\n\nDirective.prototype.on = function (event, handler, useCapture) {\n on(this.el, event, handler, useCapture);(this._listeners || (this._listeners = [])).push([event, handler]);\n};\n\n/**\n * Teardown the watcher and call unbind.\n */\n\nDirective.prototype._teardown = function () {\n if (this._bound) {\n this._bound = false;\n if (this.unbind) {\n this.unbind();\n }\n if (this._watcher) {\n this._watcher.teardown();\n }\n var listeners = this._listeners;\n var i;\n if (listeners) {\n i = listeners.length;\n while (i--) {\n off(this.el, listeners[i][0], listeners[i][1]);\n }\n }\n var unwatchFns = this._paramUnwatchFns;\n if (unwatchFns) {\n i = unwatchFns.length;\n while (i--) {\n unwatchFns[i]();\n }\n }\n if (process.env.NODE_ENV !== 'production' && this.el) {\n this.el._vue_directives.$remove(this);\n }\n this.vm = this.el = this._watcher = this._listeners = null;\n }\n};\n\nfunction lifecycleMixin (Vue) {\n /**\n * Update v-ref for component.\n *\n * @param {Boolean} remove\n */\n\n Vue.prototype._updateRef = function (remove) {\n var ref = this.$options._ref;\n if (ref) {\n var refs = (this._scope || this._context).$refs;\n if (remove) {\n if (refs[ref] === this) {\n refs[ref] = null;\n }\n } else {\n refs[ref] = this;\n }\n }\n };\n\n /**\n * Transclude, compile and link element.\n *\n * If a pre-compiled linker is available, that means the\n * passed in element will be pre-transcluded and compiled\n * as well - all we need to do is to call the linker.\n *\n * Otherwise we need to call transclude/compile/link here.\n *\n * @param {Element} el\n */\n\n Vue.prototype._compile = function (el) {\n var options = this.$options;\n\n // transclude and init element\n // transclude can potentially replace original\n // so we need to keep reference; this step also injects\n // the template and caches the original attributes\n // on the container node and replacer node.\n var original = el;\n el = transclude(el, options);\n this._initElement(el);\n\n // handle v-pre on root node (#2026)\n if (el.nodeType === 1 && getAttr(el, 'v-pre') !== null) {\n return;\n }\n\n // root is always compiled per-instance, because\n // container attrs and props can be different every time.\n var contextOptions = this._context && this._context.$options;\n var rootLinker = compileRoot(el, options, contextOptions);\n\n // resolve slot distribution\n resolveSlots(this, options._content);\n\n // compile and link the rest\n var contentLinkFn;\n var ctor = this.constructor;\n // component compilation can be cached\n // as long as it's not using inline-template\n if (options._linkerCachable) {\n contentLinkFn = ctor.linker;\n if (!contentLinkFn) {\n contentLinkFn = ctor.linker = compile(el, options);\n }\n }\n\n // link phase\n // make sure to link root with prop scope!\n var rootUnlinkFn = rootLinker(this, el, this._scope);\n var contentUnlinkFn = contentLinkFn ? contentLinkFn(this, el) : compile(el, options)(this, el);\n\n // register composite unlink function\n // to be called during instance destruction\n this._unlinkFn = function () {\n rootUnlinkFn();\n // passing destroying: true to avoid searching and\n // splicing the directives\n contentUnlinkFn(true);\n };\n\n // finally replace original\n if (options.replace) {\n replace(original, el);\n }\n\n this._isCompiled = true;\n this._callHook('compiled');\n };\n\n /**\n * Initialize instance element. Called in the public\n * $mount() method.\n *\n * @param {Element} el\n */\n\n Vue.prototype._initElement = function (el) {\n if (isFragment(el)) {\n this._isFragment = true;\n this.$el = this._fragmentStart = el.firstChild;\n this._fragmentEnd = el.lastChild;\n // set persisted text anchors to empty\n if (this._fragmentStart.nodeType === 3) {\n this._fragmentStart.data = this._fragmentEnd.data = '';\n }\n this._fragment = el;\n } else {\n this.$el = el;\n }\n this.$el.__vue__ = this;\n this._callHook('beforeCompile');\n };\n\n /**\n * Create and bind a directive to an element.\n *\n * @param {Object} descriptor - parsed directive descriptor\n * @param {Node} node - target node\n * @param {Vue} [host] - transclusion host component\n * @param {Object} [scope] - v-for scope\n * @param {Fragment} [frag] - owner fragment\n */\n\n Vue.prototype._bindDir = function (descriptor, node, host, scope, frag) {\n this._directives.push(new Directive(descriptor, this, node, host, scope, frag));\n };\n\n /**\n * Teardown an instance, unobserves the data, unbind all the\n * directives, turn off all the event listeners, etc.\n *\n * @param {Boolean} remove - whether to remove the DOM node.\n * @param {Boolean} deferCleanup - if true, defer cleanup to\n * be called later\n */\n\n Vue.prototype._destroy = function (remove, deferCleanup) {\n if (this._isBeingDestroyed) {\n if (!deferCleanup) {\n this._cleanup();\n }\n return;\n }\n\n var destroyReady;\n var pendingRemoval;\n\n var self = this;\n // Cleanup should be called either synchronously or asynchronoysly as\n // callback of this.$remove(), or if remove and deferCleanup are false.\n // In any case it should be called after all other removing, unbinding and\n // turning of is done\n var cleanupIfPossible = function cleanupIfPossible() {\n if (destroyReady && !pendingRemoval && !deferCleanup) {\n self._cleanup();\n }\n };\n\n // remove DOM element\n if (remove && this.$el) {\n pendingRemoval = true;\n this.$remove(function () {\n pendingRemoval = false;\n cleanupIfPossible();\n });\n }\n\n this._callHook('beforeDestroy');\n this._isBeingDestroyed = true;\n var i;\n // remove self from parent. only necessary\n // if parent is not being destroyed as well.\n var parent = this.$parent;\n if (parent && !parent._isBeingDestroyed) {\n parent.$children.$remove(this);\n // unregister ref (remove: true)\n this._updateRef(true);\n }\n // destroy all children.\n i = this.$children.length;\n while (i--) {\n this.$children[i].$destroy();\n }\n // teardown props\n if (this._propsUnlinkFn) {\n this._propsUnlinkFn();\n }\n // teardown all directives. this also tearsdown all\n // directive-owned watchers.\n if (this._unlinkFn) {\n this._unlinkFn();\n }\n i = this._watchers.length;\n while (i--) {\n this._watchers[i].teardown();\n }\n // remove reference to self on $el\n if (this.$el) {\n this.$el.__vue__ = null;\n }\n\n destroyReady = true;\n cleanupIfPossible();\n };\n\n /**\n * Clean up to ensure garbage collection.\n * This is called after the leave transition if there\n * is any.\n */\n\n Vue.prototype._cleanup = function () {\n if (this._isDestroyed) {\n return;\n }\n // remove self from owner fragment\n // do it in cleanup so that we can call $destroy with\n // defer right when a fragment is about to be removed.\n if (this._frag) {\n this._frag.children.$remove(this);\n }\n // remove reference from data ob\n // frozen object may not have observer.\n if (this._data && this._data.__ob__) {\n this._data.__ob__.removeVm(this);\n }\n // Clean up references to private properties and other\n // instances. preserve reference to _data so that proxy\n // accessors still work. The only potential side effect\n // here is that mutating the instance after it's destroyed\n // may affect the state of other components that are still\n // observing the same object, but that seems to be a\n // reasonable responsibility for the user rather than\n // always throwing an error on them.\n this.$el = this.$parent = this.$root = this.$children = this._watchers = this._context = this._scope = this._directives = null;\n // call the last hook...\n this._isDestroyed = true;\n this._callHook('destroyed');\n // turn off all instance listeners.\n this.$off();\n };\n}\n\nfunction miscMixin (Vue) {\n /**\n * Apply a list of filter (descriptors) to a value.\n * Using plain for loops here because this will be called in\n * the getter of any watcher with filters so it is very\n * performance sensitive.\n *\n * @param {*} value\n * @param {*} [oldValue]\n * @param {Array} filters\n * @param {Boolean} write\n * @return {*}\n */\n\n Vue.prototype._applyFilters = function (value, oldValue, filters, write) {\n var filter, fn, args, arg, offset, i, l, j, k;\n for (i = 0, l = filters.length; i < l; i++) {\n filter = filters[write ? l - i - 1 : i];\n fn = resolveAsset(this.$options, 'filters', filter.name, true);\n if (!fn) continue;\n fn = write ? fn.write : fn.read || fn;\n if (typeof fn !== 'function') continue;\n args = write ? [value, oldValue] : [value];\n offset = write ? 2 : 1;\n if (filter.args) {\n for (j = 0, k = filter.args.length; j < k; j++) {\n arg = filter.args[j];\n args[j + offset] = arg.dynamic ? this.$get(arg.value) : arg.value;\n }\n }\n value = fn.apply(this, args);\n }\n return value;\n };\n\n /**\n * Resolve a component, depending on whether the component\n * is defined normally or using an async factory function.\n * Resolves synchronously if already resolved, otherwise\n * resolves asynchronously and caches the resolved\n * constructor on the factory.\n *\n * @param {String|Function} value\n * @param {Function} cb\n */\n\n Vue.prototype._resolveComponent = function (value, cb) {\n var factory;\n if (typeof value === 'function') {\n factory = value;\n } else {\n factory = resolveAsset(this.$options, 'components', value, true);\n }\n /* istanbul ignore if */\n if (!factory) {\n return;\n }\n // async component factory\n if (!factory.options) {\n if (factory.resolved) {\n // cached\n cb(factory.resolved);\n } else if (factory.requested) {\n // pool callbacks\n factory.pendingCallbacks.push(cb);\n } else {\n factory.requested = true;\n var cbs = factory.pendingCallbacks = [cb];\n factory.call(this, function resolve(res) {\n if (isPlainObject(res)) {\n res = Vue.extend(res);\n }\n // cache resolved\n factory.resolved = res;\n // invoke callbacks\n for (var i = 0, l = cbs.length; i < l; i++) {\n cbs[i](res);\n }\n }, function reject(reason) {\n process.env.NODE_ENV !== 'production' && warn('Failed to resolve async component' + (typeof value === 'string' ? ': ' + value : '') + '. ' + (reason ? '\\nReason: ' + reason : ''));\n });\n }\n } else {\n // normal component\n cb(factory);\n }\n };\n}\n\nvar filterRE$1 = /[^|]\\|[^|]/;\n\nfunction dataAPI (Vue) {\n /**\n * Get the value from an expression on this vm.\n *\n * @param {String} exp\n * @param {Boolean} [asStatement]\n * @return {*}\n */\n\n Vue.prototype.$get = function (exp, asStatement) {\n var res = parseExpression(exp);\n if (res) {\n if (asStatement) {\n var self = this;\n return function statementHandler() {\n self.$arguments = toArray(arguments);\n var result = res.get.call(self, self);\n self.$arguments = null;\n return result;\n };\n } else {\n try {\n return res.get.call(this, this);\n } catch (e) {}\n }\n }\n };\n\n /**\n * Set the value from an expression on this vm.\n * The expression must be a valid left-hand\n * expression in an assignment.\n *\n * @param {String} exp\n * @param {*} val\n */\n\n Vue.prototype.$set = function (exp, val) {\n var res = parseExpression(exp, true);\n if (res && res.set) {\n res.set.call(this, this, val);\n }\n };\n\n /**\n * Delete a property on the VM\n *\n * @param {String} key\n */\n\n Vue.prototype.$delete = function (key) {\n del(this._data, key);\n };\n\n /**\n * Watch an expression, trigger callback when its\n * value changes.\n *\n * @param {String|Function} expOrFn\n * @param {Function} cb\n * @param {Object} [options]\n * - {Boolean} deep\n * - {Boolean} immediate\n * @return {Function} - unwatchFn\n */\n\n Vue.prototype.$watch = function (expOrFn, cb, options) {\n var vm = this;\n var parsed;\n if (typeof expOrFn === 'string') {\n parsed = parseDirective(expOrFn);\n expOrFn = parsed.expression;\n }\n var watcher = new Watcher(vm, expOrFn, cb, {\n deep: options && options.deep,\n sync: options && options.sync,\n filters: parsed && parsed.filters,\n user: !options || options.user !== false\n });\n if (options && options.immediate) {\n cb.call(vm, watcher.value);\n }\n return function unwatchFn() {\n watcher.teardown();\n };\n };\n\n /**\n * Evaluate a text directive, including filters.\n *\n * @param {String} text\n * @param {Boolean} [asStatement]\n * @return {String}\n */\n\n Vue.prototype.$eval = function (text, asStatement) {\n // check for filters.\n if (filterRE$1.test(text)) {\n var dir = parseDirective(text);\n // the filter regex check might give false positive\n // for pipes inside strings, so it's possible that\n // we don't get any filters here\n var val = this.$get(dir.expression, asStatement);\n return dir.filters ? this._applyFilters(val, null, dir.filters) : val;\n } else {\n // no filter\n return this.$get(text, asStatement);\n }\n };\n\n /**\n * Interpolate a piece of template text.\n *\n * @param {String} text\n * @return {String}\n */\n\n Vue.prototype.$interpolate = function (text) {\n var tokens = parseText(text);\n var vm = this;\n if (tokens) {\n if (tokens.length === 1) {\n return vm.$eval(tokens[0].value) + '';\n } else {\n return tokens.map(function (token) {\n return token.tag ? vm.$eval(token.value) : token.value;\n }).join('');\n }\n } else {\n return text;\n }\n };\n\n /**\n * Log instance data as a plain JS object\n * so that it is easier to inspect in console.\n * This method assumes console is available.\n *\n * @param {String} [path]\n */\n\n Vue.prototype.$log = function (path) {\n var data = path ? getPath(this._data, path) : this._data;\n if (data) {\n data = clean(data);\n }\n // include computed fields\n if (!path) {\n var key;\n for (key in this.$options.computed) {\n data[key] = clean(this[key]);\n }\n if (this._props) {\n for (key in this._props) {\n data[key] = clean(this[key]);\n }\n }\n }\n console.log(data);\n };\n\n /**\n * \"clean\" a getter/setter converted object into a plain\n * object copy.\n *\n * @param {Object} - obj\n * @return {Object}\n */\n\n function clean(obj) {\n return JSON.parse(JSON.stringify(obj));\n }\n}\n\nfunction domAPI (Vue) {\n /**\n * Convenience on-instance nextTick. The callback is\n * auto-bound to the instance, and this avoids component\n * modules having to rely on the global Vue.\n *\n * @param {Function} fn\n */\n\n Vue.prototype.$nextTick = function (fn) {\n nextTick(fn, this);\n };\n\n /**\n * Append instance to target\n *\n * @param {Node} target\n * @param {Function} [cb]\n * @param {Boolean} [withTransition] - defaults to true\n */\n\n Vue.prototype.$appendTo = function (target, cb, withTransition) {\n return insert(this, target, cb, withTransition, append, appendWithTransition);\n };\n\n /**\n * Prepend instance to target\n *\n * @param {Node} target\n * @param {Function} [cb]\n * @param {Boolean} [withTransition] - defaults to true\n */\n\n Vue.prototype.$prependTo = function (target, cb, withTransition) {\n target = query(target);\n if (target.hasChildNodes()) {\n this.$before(target.firstChild, cb, withTransition);\n } else {\n this.$appendTo(target, cb, withTransition);\n }\n return this;\n };\n\n /**\n * Insert instance before target\n *\n * @param {Node} target\n * @param {Function} [cb]\n * @param {Boolean} [withTransition] - defaults to true\n */\n\n Vue.prototype.$before = function (target, cb, withTransition) {\n return insert(this, target, cb, withTransition, beforeWithCb, beforeWithTransition);\n };\n\n /**\n * Insert instance after target\n *\n * @param {Node} target\n * @param {Function} [cb]\n * @param {Boolean} [withTransition] - defaults to true\n */\n\n Vue.prototype.$after = function (target, cb, withTransition) {\n target = query(target);\n if (target.nextSibling) {\n this.$before(target.nextSibling, cb, withTransition);\n } else {\n this.$appendTo(target.parentNode, cb, withTransition);\n }\n return this;\n };\n\n /**\n * Remove instance from DOM\n *\n * @param {Function} [cb]\n * @param {Boolean} [withTransition] - defaults to true\n */\n\n Vue.prototype.$remove = function (cb, withTransition) {\n if (!this.$el.parentNode) {\n return cb && cb();\n }\n var inDocument = this._isAttached && inDoc(this.$el);\n // if we are not in document, no need to check\n // for transitions\n if (!inDocument) withTransition = false;\n var self = this;\n var realCb = function realCb() {\n if (inDocument) self._callHook('detached');\n if (cb) cb();\n };\n if (this._isFragment) {\n removeNodeRange(this._fragmentStart, this._fragmentEnd, this, this._fragment, realCb);\n } else {\n var op = withTransition === false ? removeWithCb : removeWithTransition;\n op(this.$el, this, realCb);\n }\n return this;\n };\n\n /**\n * Shared DOM insertion function.\n *\n * @param {Vue} vm\n * @param {Element} target\n * @param {Function} [cb]\n * @param {Boolean} [withTransition]\n * @param {Function} op1 - op for non-transition insert\n * @param {Function} op2 - op for transition insert\n * @return vm\n */\n\n function insert(vm, target, cb, withTransition, op1, op2) {\n target = query(target);\n var targetIsDetached = !inDoc(target);\n var op = withTransition === false || targetIsDetached ? op1 : op2;\n var shouldCallHook = !targetIsDetached && !vm._isAttached && !inDoc(vm.$el);\n if (vm._isFragment) {\n mapNodeRange(vm._fragmentStart, vm._fragmentEnd, function (node) {\n op(node, target, vm);\n });\n cb && cb();\n } else {\n op(vm.$el, target, vm, cb);\n }\n if (shouldCallHook) {\n vm._callHook('attached');\n }\n return vm;\n }\n\n /**\n * Check for selectors\n *\n * @param {String|Element} el\n */\n\n function query(el) {\n return typeof el === 'string' ? document.querySelector(el) : el;\n }\n\n /**\n * Append operation that takes a callback.\n *\n * @param {Node} el\n * @param {Node} target\n * @param {Vue} vm - unused\n * @param {Function} [cb]\n */\n\n function append(el, target, vm, cb) {\n target.appendChild(el);\n if (cb) cb();\n }\n\n /**\n * InsertBefore operation that takes a callback.\n *\n * @param {Node} el\n * @param {Node} target\n * @param {Vue} vm - unused\n * @param {Function} [cb]\n */\n\n function beforeWithCb(el, target, vm, cb) {\n before(el, target);\n if (cb) cb();\n }\n\n /**\n * Remove operation that takes a callback.\n *\n * @param {Node} el\n * @param {Vue} vm - unused\n * @param {Function} [cb]\n */\n\n function removeWithCb(el, vm, cb) {\n remove(el);\n if (cb) cb();\n }\n}\n\nfunction eventsAPI (Vue) {\n /**\n * Listen on the given `event` with `fn`.\n *\n * @param {String} event\n * @param {Function} fn\n */\n\n Vue.prototype.$on = function (event, fn) {\n (this._events[event] || (this._events[event] = [])).push(fn);\n modifyListenerCount(this, event, 1);\n return this;\n };\n\n /**\n * Adds an `event` listener that will be invoked a single\n * time then automatically removed.\n *\n * @param {String} event\n * @param {Function} fn\n */\n\n Vue.prototype.$once = function (event, fn) {\n var self = this;\n function on() {\n self.$off(event, on);\n fn.apply(this, arguments);\n }\n on.fn = fn;\n this.$on(event, on);\n return this;\n };\n\n /**\n * Remove the given callback for `event` or all\n * registered callbacks.\n *\n * @param {String} event\n * @param {Function} fn\n */\n\n Vue.prototype.$off = function (event, fn) {\n var cbs;\n // all\n if (!arguments.length) {\n if (this.$parent) {\n for (event in this._events) {\n cbs = this._events[event];\n if (cbs) {\n modifyListenerCount(this, event, -cbs.length);\n }\n }\n }\n this._events = {};\n return this;\n }\n // specific event\n cbs = this._events[event];\n if (!cbs) {\n return this;\n }\n if (arguments.length === 1) {\n modifyListenerCount(this, event, -cbs.length);\n this._events[event] = null;\n return this;\n }\n // specific handler\n var cb;\n var i = cbs.length;\n while (i--) {\n cb = cbs[i];\n if (cb === fn || cb.fn === fn) {\n modifyListenerCount(this, event, -1);\n cbs.splice(i, 1);\n break;\n }\n }\n return this;\n };\n\n /**\n * Trigger an event on self.\n *\n * @param {String|Object} event\n * @return {Boolean} shouldPropagate\n */\n\n Vue.prototype.$emit = function (event) {\n var isSource = typeof event === 'string';\n event = isSource ? event : event.name;\n var cbs = this._events[event];\n var shouldPropagate = isSource || !cbs;\n if (cbs) {\n cbs = cbs.length > 1 ? toArray(cbs) : cbs;\n // this is a somewhat hacky solution to the question raised\n // in #2102: for an inline component listener like <comp @test=\"doThis\">,\n // the propagation handling is somewhat broken. Therefore we\n // need to treat these inline callbacks differently.\n var hasParentCbs = isSource && cbs.some(function (cb) {\n return cb._fromParent;\n });\n if (hasParentCbs) {\n shouldPropagate = false;\n }\n var args = toArray(arguments, 1);\n for (var i = 0, l = cbs.length; i < l; i++) {\n var cb = cbs[i];\n var res = cb.apply(this, args);\n if (res === true && (!hasParentCbs || cb._fromParent)) {\n shouldPropagate = true;\n }\n }\n }\n return shouldPropagate;\n };\n\n /**\n * Recursively broadcast an event to all children instances.\n *\n * @param {String|Object} event\n * @param {...*} additional arguments\n */\n\n Vue.prototype.$broadcast = function (event) {\n var isSource = typeof event === 'string';\n event = isSource ? event : event.name;\n // if no child has registered for this event,\n // then there's no need to broadcast.\n if (!this._eventsCount[event]) return;\n var children = this.$children;\n var args = toArray(arguments);\n if (isSource) {\n // use object event to indicate non-source emit\n // on children\n args[0] = { name: event, source: this };\n }\n for (var i = 0, l = children.length; i < l; i++) {\n var child = children[i];\n var shouldPropagate = child.$emit.apply(child, args);\n if (shouldPropagate) {\n child.$broadcast.apply(child, args);\n }\n }\n return this;\n };\n\n /**\n * Recursively propagate an event up the parent chain.\n *\n * @param {String} event\n * @param {...*} additional arguments\n */\n\n Vue.prototype.$dispatch = function (event) {\n var shouldPropagate = this.$emit.apply(this, arguments);\n if (!shouldPropagate) return;\n var parent = this.$parent;\n var args = toArray(arguments);\n // use object event to indicate non-source emit\n // on parents\n args[0] = { name: event, source: this };\n while (parent) {\n shouldPropagate = parent.$emit.apply(parent, args);\n parent = shouldPropagate ? parent.$parent : null;\n }\n return this;\n };\n\n /**\n * Modify the listener counts on all parents.\n * This bookkeeping allows $broadcast to return early when\n * no child has listened to a certain event.\n *\n * @param {Vue} vm\n * @param {String} event\n * @param {Number} count\n */\n\n var hookRE = /^hook:/;\n function modifyListenerCount(vm, event, count) {\n var parent = vm.$parent;\n // hooks do not get broadcasted so no need\n // to do bookkeeping for them\n if (!parent || !count || hookRE.test(event)) return;\n while (parent) {\n parent._eventsCount[event] = (parent._eventsCount[event] || 0) + count;\n parent = parent.$parent;\n }\n }\n}\n\nfunction lifecycleAPI (Vue) {\n /**\n * Set instance target element and kick off the compilation\n * process. The passed in `el` can be a selector string, an\n * existing Element, or a DocumentFragment (for block\n * instances).\n *\n * @param {Element|DocumentFragment|string} el\n * @public\n */\n\n Vue.prototype.$mount = function (el) {\n if (this._isCompiled) {\n process.env.NODE_ENV !== 'production' && warn('$mount() should be called only once.', this);\n return;\n }\n el = query(el);\n if (!el) {\n el = document.createElement('div');\n }\n this._compile(el);\n this._initDOMHooks();\n if (inDoc(this.$el)) {\n this._callHook('attached');\n ready.call(this);\n } else {\n this.$once('hook:attached', ready);\n }\n return this;\n };\n\n /**\n * Mark an instance as ready.\n */\n\n function ready() {\n this._isAttached = true;\n this._isReady = true;\n this._callHook('ready');\n }\n\n /**\n * Teardown the instance, simply delegate to the internal\n * _destroy.\n *\n * @param {Boolean} remove\n * @param {Boolean} deferCleanup\n */\n\n Vue.prototype.$destroy = function (remove, deferCleanup) {\n this._destroy(remove, deferCleanup);\n };\n\n /**\n * Partially compile a piece of DOM and return a\n * decompile function.\n *\n * @param {Element|DocumentFragment} el\n * @param {Vue} [host]\n * @param {Object} [scope]\n * @param {Fragment} [frag]\n * @return {Function}\n */\n\n Vue.prototype.$compile = function (el, host, scope, frag) {\n return compile(el, this.$options, true)(this, el, host, scope, frag);\n };\n}\n\n/**\n * The exposed Vue constructor.\n *\n * API conventions:\n * - public API methods/properties are prefixed with `$`\n * - internal methods/properties are prefixed with `_`\n * - non-prefixed properties are assumed to be proxied user\n * data.\n *\n * @constructor\n * @param {Object} [options]\n * @public\n */\n\nfunction Vue(options) {\n this._init(options);\n}\n\n// install internals\ninitMixin(Vue);\nstateMixin(Vue);\neventsMixin(Vue);\nlifecycleMixin(Vue);\nmiscMixin(Vue);\n\n// install instance APIs\ndataAPI(Vue);\ndomAPI(Vue);\neventsAPI(Vue);\nlifecycleAPI(Vue);\n\nvar slot = {\n\n priority: SLOT,\n params: ['name'],\n\n bind: function bind() {\n // this was resolved during component transclusion\n var name = this.params.name || 'default';\n var content = this.vm._slotContents && this.vm._slotContents[name];\n if (!content || !content.hasChildNodes()) {\n this.fallback();\n } else {\n this.compile(content.cloneNode(true), this.vm._context, this.vm);\n }\n },\n\n compile: function compile(content, context, host) {\n if (content && context) {\n if (this.el.hasChildNodes() && content.childNodes.length === 1 && content.childNodes[0].nodeType === 1 && content.childNodes[0].hasAttribute('v-if')) {\n // if the inserted slot has v-if\n // inject fallback content as the v-else\n var elseBlock = document.createElement('template');\n elseBlock.setAttribute('v-else', '');\n elseBlock.innerHTML = this.el.innerHTML;\n // the else block should be compiled in child scope\n elseBlock._context = this.vm;\n content.appendChild(elseBlock);\n }\n var scope = host ? host._scope : this._scope;\n this.unlink = context.$compile(content, host, scope, this._frag);\n }\n if (content) {\n replace(this.el, content);\n } else {\n remove(this.el);\n }\n },\n\n fallback: function fallback() {\n this.compile(extractContent(this.el, true), this.vm);\n },\n\n unbind: function unbind() {\n if (this.unlink) {\n this.unlink();\n }\n }\n};\n\nvar partial = {\n\n priority: PARTIAL,\n\n params: ['name'],\n\n // watch changes to name for dynamic partials\n paramWatchers: {\n name: function name(value) {\n vIf.remove.call(this);\n if (value) {\n this.insert(value);\n }\n }\n },\n\n bind: function bind() {\n this.anchor = createAnchor('v-partial');\n replace(this.el, this.anchor);\n this.insert(this.params.name);\n },\n\n insert: function insert(id) {\n var partial = resolveAsset(this.vm.$options, 'partials', id, true);\n if (partial) {\n this.factory = new FragmentFactory(this.vm, partial);\n vIf.insert.call(this);\n }\n },\n\n unbind: function unbind() {\n if (this.frag) {\n this.frag.destroy();\n }\n }\n};\n\nvar elementDirectives = {\n slot: slot,\n partial: partial\n};\n\nvar convertArray = vFor._postProcess;\n\n/**\n * Limit filter for arrays\n *\n * @param {Number} n\n * @param {Number} offset (Decimal expected)\n */\n\nfunction limitBy(arr, n, offset) {\n offset = offset ? parseInt(offset, 10) : 0;\n n = toNumber(n);\n return typeof n === 'number' ? arr.slice(offset, offset + n) : arr;\n}\n\n/**\n * Filter filter for arrays\n *\n * @param {String} search\n * @param {String} [delimiter]\n * @param {String} ...dataKeys\n */\n\nfunction filterBy(arr, search, delimiter) {\n arr = convertArray(arr);\n if (search == null) {\n return arr;\n }\n if (typeof search === 'function') {\n return arr.filter(search);\n }\n // cast to lowercase string\n search = ('' + search).toLowerCase();\n // allow optional `in` delimiter\n // because why not\n var n = delimiter === 'in' ? 3 : 2;\n // extract and flatten keys\n var keys = Array.prototype.concat.apply([], toArray(arguments, n));\n var res = [];\n var item, key, val, j;\n for (var i = 0, l = arr.length; i < l; i++) {\n item = arr[i];\n val = item && item.$value || item;\n j = keys.length;\n if (j) {\n while (j--) {\n key = keys[j];\n if (key === '$key' && contains(item.$key, search) || contains(getPath(val, key), search)) {\n res.push(item);\n break;\n }\n }\n } else if (contains(item, search)) {\n res.push(item);\n }\n }\n return res;\n}\n\n/**\n * Filter filter for arrays\n *\n * @param {String|Array<String>|Function} ...sortKeys\n * @param {Number} [order]\n */\n\nfunction orderBy(arr) {\n var comparator = null;\n var sortKeys = undefined;\n arr = convertArray(arr);\n\n // determine order (last argument)\n var args = toArray(arguments, 1);\n var order = args[args.length - 1];\n if (typeof order === 'number') {\n order = order < 0 ? -1 : 1;\n args = args.length > 1 ? args.slice(0, -1) : args;\n } else {\n order = 1;\n }\n\n // determine sortKeys & comparator\n var firstArg = args[0];\n if (!firstArg) {\n return arr;\n } else if (typeof firstArg === 'function') {\n // custom comparator\n comparator = function (a, b) {\n return firstArg(a, b) * order;\n };\n } else {\n // string keys. flatten first\n sortKeys = Array.prototype.concat.apply([], args);\n comparator = function (a, b, i) {\n i = i || 0;\n return i >= sortKeys.length - 1 ? baseCompare(a, b, i) : baseCompare(a, b, i) || comparator(a, b, i + 1);\n };\n }\n\n function baseCompare(a, b, sortKeyIndex) {\n var sortKey = sortKeys[sortKeyIndex];\n if (sortKey) {\n if (sortKey !== '$key') {\n if (isObject(a) && '$value' in a) a = a.$value;\n if (isObject(b) && '$value' in b) b = b.$value;\n }\n a = isObject(a) ? getPath(a, sortKey) : a;\n b = isObject(b) ? getPath(b, sortKey) : b;\n }\n return a === b ? 0 : a > b ? order : -order;\n }\n\n // sort on a copy to avoid mutating original array\n return arr.slice().sort(comparator);\n}\n\n/**\n * String contain helper\n *\n * @param {*} val\n * @param {String} search\n */\n\nfunction contains(val, search) {\n var i;\n if (isPlainObject(val)) {\n var keys = Object.keys(val);\n i = keys.length;\n while (i--) {\n if (contains(val[keys[i]], search)) {\n return true;\n }\n }\n } else if (isArray(val)) {\n i = val.length;\n while (i--) {\n if (contains(val[i], search)) {\n return true;\n }\n }\n } else if (val != null) {\n return val.toString().toLowerCase().indexOf(search) > -1;\n }\n}\n\nvar digitsRE = /(\\d{3})(?=\\d)/g;\n\n// asset collections must be a plain object.\nvar filters = {\n\n orderBy: orderBy,\n filterBy: filterBy,\n limitBy: limitBy,\n\n /**\n * Stringify value.\n *\n * @param {Number} indent\n */\n\n json: {\n read: function read(value, indent) {\n return typeof value === 'string' ? value : JSON.stringify(value, null, arguments.length > 1 ? indent : 2);\n },\n write: function write(value) {\n try {\n return JSON.parse(value);\n } catch (e) {\n return value;\n }\n }\n },\n\n /**\n * 'abc' => 'Abc'\n */\n\n capitalize: function capitalize(value) {\n if (!value && value !== 0) return '';\n value = value.toString();\n return value.charAt(0).toUpperCase() + value.slice(1);\n },\n\n /**\n * 'abc' => 'ABC'\n */\n\n uppercase: function uppercase(value) {\n return value || value === 0 ? value.toString().toUpperCase() : '';\n },\n\n /**\n * 'AbC' => 'abc'\n */\n\n lowercase: function lowercase(value) {\n return value || value === 0 ? value.toString().toLowerCase() : '';\n },\n\n /**\n * 12345 => $12,345.00\n *\n * @param {String} sign\n * @param {Number} decimals Decimal places\n */\n\n currency: function currency(value, _currency, decimals) {\n value = parseFloat(value);\n if (!isFinite(value) || !value && value !== 0) return '';\n _currency = _currency != null ? _currency : '$';\n decimals = decimals != null ? decimals : 2;\n var stringified = Math.abs(value).toFixed(decimals);\n var _int = decimals ? stringified.slice(0, -1 - decimals) : stringified;\n var i = _int.length % 3;\n var head = i > 0 ? _int.slice(0, i) + (_int.length > 3 ? ',' : '') : '';\n var _float = decimals ? stringified.slice(-1 - decimals) : '';\n var sign = value < 0 ? '-' : '';\n return sign + _currency + head + _int.slice(i).replace(digitsRE, '$1,') + _float;\n },\n\n /**\n * 'item' => 'items'\n *\n * @params\n * an array of strings corresponding to\n * the single, double, triple ... forms of the word to\n * be pluralized. When the number to be pluralized\n * exceeds the length of the args, it will use the last\n * entry in the array.\n *\n * e.g. ['single', 'double', 'triple', 'multiple']\n */\n\n pluralize: function pluralize(value) {\n var args = toArray(arguments, 1);\n return args.length > 1 ? args[value % 10 - 1] || args[args.length - 1] : args[0] + (value === 1 ? '' : 's');\n },\n\n /**\n * Debounce a handler function.\n *\n * @param {Function} handler\n * @param {Number} delay = 300\n * @return {Function}\n */\n\n debounce: function debounce(handler, delay) {\n if (!handler) return;\n if (!delay) {\n delay = 300;\n }\n return _debounce(handler, delay);\n }\n};\n\nfunction installGlobalAPI (Vue) {\n /**\n * Vue and every constructor that extends Vue has an\n * associated options object, which can be accessed during\n * compilation steps as `this.constructor.options`.\n *\n * These can be seen as the default options of every\n * Vue instance.\n */\n\n Vue.options = {\n directives: directives,\n elementDirectives: elementDirectives,\n filters: filters,\n transitions: {},\n components: {},\n partials: {},\n replace: true\n };\n\n /**\n * Expose useful internals\n */\n\n Vue.util = util;\n Vue.config = config;\n Vue.set = set;\n Vue['delete'] = del;\n Vue.nextTick = nextTick;\n\n /**\n * The following are exposed for advanced usage / plugins\n */\n\n Vue.compiler = compiler;\n Vue.FragmentFactory = FragmentFactory;\n Vue.internalDirectives = internalDirectives;\n Vue.parsers = {\n path: path,\n text: text,\n template: template,\n directive: directive,\n expression: expression\n };\n\n /**\n * Each instance constructor, including Vue, has a unique\n * cid. This enables us to create wrapped \"child\n * constructors\" for prototypal inheritance and cache them.\n */\n\n Vue.cid = 0;\n var cid = 1;\n\n /**\n * Class inheritance\n *\n * @param {Object} extendOptions\n */\n\n Vue.extend = function (extendOptions) {\n extendOptions = extendOptions || {};\n var Super = this;\n var isFirstExtend = Super.cid === 0;\n if (isFirstExtend && extendOptions._Ctor) {\n return extendOptions._Ctor;\n }\n var name = extendOptions.name || Super.options.name;\n if (process.env.NODE_ENV !== 'production') {\n if (!/^[a-zA-Z][\\w-]*$/.test(name)) {\n warn('Invalid component name: \"' + name + '\". Component names ' + 'can only contain alphanumeric characaters and the hyphen.');\n name = null;\n }\n }\n var Sub = createClass(name || 'VueComponent');\n Sub.prototype = Object.create(Super.prototype);\n Sub.prototype.constructor = Sub;\n Sub.cid = cid++;\n Sub.options = mergeOptions(Super.options, extendOptions);\n Sub['super'] = Super;\n // allow further extension\n Sub.extend = Super.extend;\n // create asset registers, so extended classes\n // can have their private assets too.\n config._assetTypes.forEach(function (type) {\n Sub[type] = Super[type];\n });\n // enable recursive self-lookup\n if (name) {\n Sub.options.components[name] = Sub;\n }\n // cache constructor\n if (isFirstExtend) {\n extendOptions._Ctor = Sub;\n }\n return Sub;\n };\n\n /**\n * A function that returns a sub-class constructor with the\n * given name. This gives us much nicer output when\n * logging instances in the console.\n *\n * @param {String} name\n * @return {Function}\n */\n\n function createClass(name) {\n /* eslint-disable no-new-func */\n return new Function('return function ' + classify(name) + ' (options) { this._init(options) }')();\n /* eslint-enable no-new-func */\n }\n\n /**\n * Plugin system\n *\n * @param {Object} plugin\n */\n\n Vue.use = function (plugin) {\n /* istanbul ignore if */\n if (plugin.installed) {\n return;\n }\n // additional parameters\n var args = toArray(arguments, 1);\n args.unshift(this);\n if (typeof plugin.install === 'function') {\n plugin.install.apply(plugin, args);\n } else {\n plugin.apply(null, args);\n }\n plugin.installed = true;\n return this;\n };\n\n /**\n * Apply a global mixin by merging it into the default\n * options.\n */\n\n Vue.mixin = function (mixin) {\n Vue.options = mergeOptions(Vue.options, mixin);\n };\n\n /**\n * Create asset registration methods with the following\n * signature:\n *\n * @param {String} id\n * @param {*} definition\n */\n\n config._assetTypes.forEach(function (type) {\n Vue[type] = function (id, definition) {\n if (!definition) {\n return this.options[type + 's'][id];\n } else {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production') {\n if (type === 'component' && (commonTagRE.test(id) || reservedTagRE.test(id))) {\n warn('Do not use built-in or reserved HTML elements as component ' + 'id: ' + id);\n }\n }\n if (type === 'component' && isPlainObject(definition)) {\n if (!definition.name) {\n definition.name = id;\n }\n definition = Vue.extend(definition);\n }\n this.options[type + 's'][id] = definition;\n return definition;\n }\n };\n });\n\n // expose internal transition API\n extend(Vue.transition, transition);\n}\n\ninstallGlobalAPI(Vue);\n\nVue.version = '1.0.25';\n\n// devtools global hook\n/* istanbul ignore next */\nsetTimeout(function () {\n if (config.devtools) {\n if (devtools) {\n devtools.emit('init', Vue);\n } else if (process.env.NODE_ENV !== 'production' && inBrowser && /Chrome\\/\\d+/.test(window.navigator.userAgent)) {\n console.log('Download the Vue Devtools for a better development experience:\\n' + 'https://github.com/vuejs/vue-devtools');\n }\n }\n}, 0);\n\nmodule.exports = Vue;\n\n\n/** WEBPACK FOOTER **\n ** ./~/vue-typeahead/~/vue/dist/vue.common.js\n **/","/*!\n * Vue.js v2.0.0-alpha.8\n * (c) 2014-2016 Evan You\n * Released under the MIT License.\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global.Vue = factory());\n}(this, function () { 'use strict';\n\n /**\n * Convert a value to a string that is actually rendered.\n */\n function _toString(val) {\n return val == null ? '' : typeof val === 'object' ? JSON.stringify(val, null, 2) : String(val);\n }\n\n /**\n * Convert a input value to a number for persistence.\n * If the conversion fails, return original string.\n */\n function toNumber(val) {\n var n = parseFloat(val, 10);\n return n || n === 0 ? n : val;\n }\n\n /**\n * Make a map and return a function for checking if a key\n * is in that map.\n */\n function makeMap(str, expectsLowerCase) {\n var map = Object.create(null);\n var list = str.split(',');\n for (var i = 0; i < list.length; i++) {\n map[list[i]] = true;\n }\n return expectsLowerCase ? function (val) {\n return map[val.toLowerCase()];\n } : function (val) {\n return map[val];\n };\n }\n\n /**\n * Check if a tag is a built-in tag.\n */\n var isBuiltInTag = makeMap('slot,component,render,transition', true);\n\n /**\n * Remove an item from an array\n */\n function remove(arr, item) {\n if (arr.length) {\n var index = arr.indexOf(item);\n if (index > -1) {\n return arr.splice(index, 1);\n }\n }\n }\n\n /**\n * Check whether the object has the property.\n */\n var hasOwnProperty = Object.prototype.hasOwnProperty;\n function hasOwn(obj, key) {\n return hasOwnProperty.call(obj, key);\n }\n\n /**\n * Check if value is primitive\n */\n function isPrimitive(value) {\n return typeof value === 'string' || typeof value === 'number';\n }\n\n /**\n * Create a cached version of a pure function.\n */\n function cached(fn) {\n var cache = Object.create(null);\n return function cachedFn(str) {\n var hit = cache[str];\n return hit || (cache[str] = fn(str));\n };\n }\n\n /**\n * Camelize a hyphen-delmited string.\n */\n var camelizeRE = /-(\\w)/g;\n var camelize = cached(function (str) {\n return str.replace(camelizeRE, function (_, c) {\n return c ? c.toUpperCase() : '';\n });\n });\n\n /**\n * Capitalize a string.\n */\n var capitalize = cached(function (str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n });\n\n /**\n * Hyphenate a camelCase string.\n */\n var hyphenateRE = /([a-z\\d])([A-Z])/g;\n var hyphenate = cached(function (str) {\n return str.replace(hyphenateRE, '$1-$2').toLowerCase();\n });\n\n /**\n * Simple bind, faster than native\n */\n function bind(fn, ctx) {\n return function (a) {\n var l = arguments.length;\n return l ? l > 1 ? fn.apply(ctx, arguments) : fn.call(ctx, a) : fn.call(ctx);\n };\n }\n\n /**\n * Convert an Array-like object to a real Array.\n */\n function toArray(list, start) {\n start = start || 0;\n var i = list.length - start;\n var ret = new Array(i);\n while (i--) {\n ret[i] = list[i + start];\n }\n return ret;\n }\n\n /**\n * Mix properties into target object.\n */\n function extend(to, _from) {\n for (var _key in _from) {\n to[_key] = _from[_key];\n }\n return to;\n }\n\n /**\n * Quick object check - this is primarily used to tell\n * Objects from primitive values when we know the value\n * is a JSON-compliant type.\n */\n function isObject(obj) {\n return obj !== null && typeof obj === 'object';\n }\n\n /**\n * Strict object type check. Only returns true\n * for plain JavaScript objects.\n */\n var toString = Object.prototype.toString;\n var OBJECT_STRING = '[object Object]';\n function isPlainObject(obj) {\n return toString.call(obj) === OBJECT_STRING;\n }\n\n /**\n * Merge an Array of Objects into a single Object.\n */\n function toObject(arr) {\n var res = arr[0] || {};\n for (var i = 1; i < arr.length; i++) {\n if (arr[i]) {\n extend(res, arr[i]);\n }\n }\n return res;\n }\n\n /**\n * Perform no operation.\n */\n function noop() {}\n\n /**\n * Always return false.\n */\n var no = function no() {\n return false;\n };\n\n /**\n * Generate a static keys string from compiler modules.\n */\n function genStaticKeys(modules) {\n return modules.reduce(function (keys, m) {\n return keys.concat(m.staticKeys || []);\n }, []).join(',');\n }\n\n var config = {\n /**\n * Option merge strategies (used in core/util/options)\n */\n optionMergeStrategies: Object.create(null),\n\n /**\n * Whether to suppress warnings.\n */\n silent: false,\n\n /**\n * Whether to enable devtools\n */\n devtools: \"development\" !== 'production',\n\n /**\n * Error handler for watcher errors\n */\n errorHandler: null,\n\n /**\n * Ignore certain custom elements\n */\n ignoredElements: null,\n\n /**\n * Custom user key aliases for v-on\n */\n keyCodes: Object.create(null),\n\n /**\n * Check if a tag is reserved so that it cannot be registered as a\n * component. This is platform-dependent and may be overwritten.\n */\n isReservedTag: no,\n\n /**\n * Check if a tag is an unknown element.\n * Platform-dependent.\n */\n isUnknownElement: no,\n\n /**\n * Get the namespace of an element\n */\n getTagNamespace: noop,\n\n /**\n * Check if an attribute must be bound using property, e.g. value\n * Platform-dependent.\n */\n mustUseProp: no,\n\n /**\n * List of asset types that a component can own.\n */\n _assetTypes: ['component', 'directive', 'transition', 'filter'],\n\n /**\n * List of lifecycle hooks.\n */\n _lifecycleHooks: ['beforeCreate', 'created', 'beforeMount', 'mounted', 'beforeUpdate', 'updated', 'beforeDestroy', 'destroyed', 'activated', 'deactivated'],\n\n /**\n * Max circular updates allowed in a scheduler flush cycle.\n */\n _maxUpdateCount: 100,\n\n /**\n * Server rendering?\n */\n _isServer: \"client\" === 'server'\n };\n\n /**\n * Check if a string starts with $ or _\n */\n function isReserved(str) {\n var c = (str + '').charCodeAt(0);\n return c === 0x24 || c === 0x5F;\n }\n\n /**\n * Define a property.\n */\n function def(obj, key, val, enumerable) {\n Object.defineProperty(obj, key, {\n value: val,\n enumerable: !!enumerable,\n writable: true,\n configurable: true\n });\n }\n\n /**\n * Parse simple path.\n */\n var bailRE = /[^\\w\\.]/;\n function parsePath(path) {\n if (bailRE.test(path)) {\n return;\n } else {\n var _ret = function () {\n var segments = path.split('.');\n return {\n v: function v(obj) {\n for (var i = 0; i < segments.length; i++) {\n if (!obj) return;\n obj = obj[segments[i]];\n }\n return obj;\n }\n };\n }();\n\n if (typeof _ret === \"object\") return _ret.v;\n }\n }\n\n /* global MutationObserver */\n // can we use __proto__?\n var hasProto = '__proto__' in {};\n\n // Browser environment sniffing\n var inBrowser = typeof window !== 'undefined' && Object.prototype.toString.call(window) !== '[object Object]';\n\n // detect devtools\n var devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__;\n\n // UA sniffing for working around browser-specific quirks\n var UA = inBrowser && window.navigator.userAgent.toLowerCase();\n var isIos = UA && /(iphone|ipad|ipod|ios)/i.test(UA);\n var iosVersionMatch = UA && isIos && UA.match(/os ([\\d_]+)/);\n var iosVersion = iosVersionMatch && iosVersionMatch[1].split('_');\n\n // MutationObserver is unreliable in iOS 9.3 UIWebView\n // detecting it by checking presence of IndexedDB\n // ref #3027\n var hasMutationObserverBug = iosVersion && Number(iosVersion[0]) >= 9 && Number(iosVersion[1]) >= 3 && !window.indexedDB;\n\n /**\n * Defer a task to execute it asynchronously. Ideally this\n * should be executed as a microtask, so we leverage\n * MutationObserver if it's available, and fallback to\n * setTimeout(0).\n *\n * @param {Function} cb\n * @param {Object} ctx\n */\n var nextTick = function () {\n var callbacks = [];\n var pending = false;\n var timerFunc = void 0;\n function nextTickHandler() {\n pending = false;\n var copies = callbacks.slice(0);\n callbacks = [];\n for (var i = 0; i < copies.length; i++) {\n copies[i]();\n }\n }\n\n /* istanbul ignore else */\n if (typeof MutationObserver !== 'undefined' && !hasMutationObserverBug) {\n (function () {\n var counter = 1;\n var observer = new MutationObserver(nextTickHandler);\n var textNode = document.createTextNode(String(counter));\n observer.observe(textNode, {\n characterData: true\n });\n timerFunc = function timerFunc() {\n counter = (counter + 1) % 2;\n textNode.data = String(counter);\n };\n })();\n } else {\n // webpack attempts to inject a shim for setImmediate\n // if it is used as a global, so we have to work around that to\n // avoid bundling unnecessary code.\n var context = inBrowser ? window : typeof global !== 'undefined' ? global : {};\n timerFunc = context.setImmediate || setTimeout;\n }\n return function (cb, ctx) {\n var func = ctx ? function () {\n cb.call(ctx);\n } : cb;\n callbacks.push(func);\n if (pending) return;\n pending = true;\n timerFunc(nextTickHandler, 0);\n };\n }();\n\n var _Set = void 0;\n /* istanbul ignore if */\n if (typeof Set !== 'undefined' && /native code/.test(Set.toString())) {\n // use native Set when available.\n _Set = Set;\n } else {\n // a non-standard Set polyfill that only works with primitive keys.\n _Set = function () {\n function Set() {\n this.set = Object.create(null);\n }\n\n Set.prototype.has = function has(key) {\n return this.set[key] !== undefined;\n };\n\n Set.prototype.add = function add(key) {\n this.set[key] = 1;\n };\n\n Set.prototype.clear = function clear() {\n this.set = Object.create(null);\n };\n\n return Set;\n }();\n }\n\n var hasProxy = void 0;\n var proxyHandlers = void 0;\n var initProxy = void 0;\n if (\"development\" !== 'production') {\n (function () {\n var allowedGlobals = makeMap('Infinity,undefined,NaN,isFinite,isNaN,' + 'parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,' + 'Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,' + 'require,__webpack_require__' // for Webpack/Browserify\n );\n\n hasProxy = typeof Proxy !== 'undefined' && Proxy.toString().match(/native code/);\n\n proxyHandlers = {\n has: function has(target, key) {\n var has = key in target;\n var isAllowedGlobal = allowedGlobals(key);\n if (!has && !isAllowedGlobal) {\n warn('Trying to access non-existent property \"' + key + '\" while rendering. ' + 'Make sure to declare reactive data properties in the data option.', target);\n }\n return !isAllowedGlobal;\n }\n };\n\n initProxy = function initProxy(vm) {\n if (hasProxy) {\n vm._renderProxy = new Proxy(vm, proxyHandlers);\n } else {\n vm._renderProxy = vm;\n }\n };\n })();\n }\n\n var uid$2 = 0;\n\n /**\n * A dep is an observable that can have multiple\n * directives subscribing to it.\n */\n\n var Dep = function () {\n function Dep() {\n this.id = uid$2++;\n this.subs = [];\n }\n\n Dep.prototype.addSub = function addSub(sub) {\n this.subs.push(sub);\n };\n\n Dep.prototype.removeSub = function removeSub(sub) {\n remove(this.subs, sub);\n };\n\n Dep.prototype.depend = function depend() {\n if (Dep.target) {\n Dep.target.addDep(this);\n }\n };\n\n Dep.prototype.notify = function notify() {\n // stablize the subscriber list first\n var subs = this.subs.slice();\n for (var i = 0, l = subs.length; i < l; i++) {\n subs[i].update();\n }\n };\n\n return Dep;\n }();\n\n Dep.target = null;\n var targetStack = [];\n\n function pushTarget(_target) {\n if (Dep.target) targetStack.push(Dep.target);\n Dep.target = _target;\n }\n\n function popTarget() {\n Dep.target = targetStack.pop();\n }\n\n // We have two separate queues: one for internal component re-render updates\n // and one for user watcher registered via $watch(). We want to guarantee\n // re-render updates to be called before user watchers so that when user\n // watchers are triggered, the DOM would already be in updated state.\n\n var queue = [];\n var userQueue = [];\n var has = {};\n var circular = {};\n var waiting = false;\n\n /**\n * Reset the scheduler's state.\n */\n function resetSchedulerState() {\n queue.length = 0;\n userQueue.length = 0;\n has = {};\n if (\"development\" !== 'production') {\n circular = {};\n }\n waiting = false;\n }\n\n /**\n * Flush both queues and run the watchers.\n */\n function flushSchedulerQueue() {\n runSchedulerQueue(queue.sort(queueSorter));\n runSchedulerQueue(userQueue);\n // user watchers triggered more watchers,\n // keep flushing until it depletes\n if (queue.length) {\n return flushSchedulerQueue();\n }\n // devtool hook\n /* istanbul ignore if */\n if (devtools && config.devtools) {\n devtools.emit('flush');\n }\n resetSchedulerState();\n }\n\n /**\n * Sort queue before flush.\n * This ensures components are updated from parent to child\n * so there will be no duplicate updates, e.g. a child was\n * pushed into the queue first and then its parent's props\n * changed.\n */\n function queueSorter(a, b) {\n return a.id - b.id;\n }\n\n /**\n * Run the watchers in a single queue.\n */\n function runSchedulerQueue(queue) {\n // do not cache length because more watchers might be pushed\n // as we run existing watchers\n for (var i = 0; i < queue.length; i++) {\n var watcher = queue[i];\n var id = watcher.id;\n has[id] = null;\n watcher.run();\n // in dev build, check and stop circular updates.\n if (\"development\" !== 'production' && has[id] != null) {\n circular[id] = (circular[id] || 0) + 1;\n if (circular[id] > config._maxUpdateCount) {\n warn('You may have an infinite update loop for watcher ' + 'with expression \"' + watcher.expression + '\"', watcher.vm);\n break;\n }\n }\n }\n queue.length = 0;\n }\n\n /**\n * Push a watcher into the watcher queue.\n * Jobs with duplicate IDs will be skipped unless it's\n * pushed when the queue is being flushed.\n */\n function queueWatcher(watcher) {\n var id = watcher.id;\n if (has[id] == null) {\n // push watcher into appropriate queue\n var q = watcher.user ? userQueue : queue;\n has[id] = true;\n q.push(watcher);\n // queue the flush\n if (!waiting) {\n waiting = true;\n nextTick(flushSchedulerQueue);\n }\n }\n }\n\n var uid$1 = 0;\n\n /**\n * A watcher parses an expression, collects dependencies,\n * and fires callback when the expression value changes.\n * This is used for both the $watch() api and directives.\n */\n\n var Watcher = function () {\n function Watcher(vm, expOrFn, cb) {\n var options = arguments.length <= 3 || arguments[3] === undefined ? {} : arguments[3];\n\n this.vm = vm;\n vm._watchers.push(this);\n // options\n this.deep = !!options.deep;\n this.user = !!options.user;\n this.lazy = !!options.lazy;\n this.sync = !!options.sync;\n this.expression = expOrFn.toString();\n this.cb = cb;\n this.id = ++uid$1; // uid for batching\n this.active = true;\n this.dirty = this.lazy; // for lazy watchers\n this.deps = [];\n this.newDeps = [];\n this.depIds = new _Set();\n this.newDepIds = new _Set();\n // parse expression for getter\n if (typeof expOrFn === 'function') {\n this.getter = expOrFn;\n } else {\n this.getter = parsePath(expOrFn);\n if (!this.getter) {\n this.getter = function () {};\n \"development\" !== 'production' && warn('Failed watching path: ' + expOrFn + 'Watcher only accepts simple dot-delimited paths. ' + 'For full control, use a function instead.', vm);\n }\n }\n this.value = this.lazy ? undefined : this.get();\n }\n\n /**\n * Evaluate the getter, and re-collect dependencies.\n */\n\n\n Watcher.prototype.get = function get() {\n pushTarget(this);\n var value = void 0;\n try {\n value = this.getter.call(this.vm, this.vm);\n } catch (e) {\n if (\"development\" !== 'production') {\n if (this.user) {\n warn('Error when evaluating watcher with getter: ' + this.expression, this.vm);\n } else {\n warn('Error during component render', this.vm);\n }\n /* istanbul ignore else */\n if (config.errorHandler) {\n config.errorHandler.call(null, e, this.vm);\n } else {\n throw e;\n }\n }\n // return old value when evaluation fails so the current UI is preserved\n // if the error was somehow handled by user\n value = this.value;\n }\n // \"touch\" every property so they are all tracked as\n // dependencies for deep watching\n if (this.deep) {\n traverse(value);\n }\n popTarget();\n this.cleanupDeps();\n return value;\n };\n\n /**\n * Add a dependency to this directive.\n */\n\n\n Watcher.prototype.addDep = function addDep(dep) {\n var id = dep.id;\n if (!this.newDepIds.has(id)) {\n this.newDepIds.add(id);\n this.newDeps.push(dep);\n if (!this.depIds.has(id)) {\n dep.addSub(this);\n }\n }\n };\n\n /**\n * Clean up for dependency collection.\n */\n\n\n Watcher.prototype.cleanupDeps = function cleanupDeps() {\n var i = this.deps.length;\n while (i--) {\n var dep = this.deps[i];\n if (!this.newDepIds.has(dep.id)) {\n dep.removeSub(this);\n }\n }\n var tmp = this.depIds;\n this.depIds = this.newDepIds;\n this.newDepIds = tmp;\n this.newDepIds.clear();\n tmp = this.deps;\n this.deps = this.newDeps;\n this.newDeps = tmp;\n this.newDeps.length = 0;\n };\n\n /**\n * Subscriber interface.\n * Will be called when a dependency changes.\n */\n\n\n Watcher.prototype.update = function update() {\n /* istanbul ignore else */\n if (this.lazy) {\n this.dirty = true;\n } else if (this.sync) {\n this.run();\n } else {\n queueWatcher(this);\n }\n };\n\n /**\n * Scheduler job interface.\n * Will be called by the scheduler.\n */\n\n\n Watcher.prototype.run = function run() {\n if (this.active) {\n var value = this.get();\n if (value !== this.value ||\n // Deep watchers and watchers on Object/Arrays should fire even\n // when the value is the same, because the value may\n // have mutated.\n isObject(value) || this.deep) {\n // set new value\n var oldValue = this.value;\n this.value = value;\n if (this.user) {\n try {\n this.cb.call(this.vm, value, oldValue);\n } catch (e) {\n \"development\" !== 'production' && warn('Error in watcher \"' + this.expression + '\"', this.vm);\n /* istanbul ignore else */\n if (config.errorHandler) {\n config.errorHandler.call(null, e, this.vm);\n } else {\n throw e;\n }\n }\n } else {\n this.cb.call(this.vm, value, oldValue);\n }\n }\n }\n };\n\n /**\n * Evaluate the value of the watcher.\n * This only gets called for lazy watchers.\n */\n\n\n Watcher.prototype.evaluate = function evaluate() {\n this.value = this.get();\n this.dirty = false;\n };\n\n /**\n * Depend on all deps collected by this watcher.\n */\n\n\n Watcher.prototype.depend = function depend() {\n var i = this.deps.length;\n while (i--) {\n this.deps[i].depend();\n }\n };\n\n /**\n * Remove self from all dependencies' subcriber list.\n */\n\n\n Watcher.prototype.teardown = function teardown() {\n if (this.active) {\n // remove self from vm's watcher list\n // this is a somewhat expensive operation so we skip it\n // if the vm is being destroyed or is performing a v-for\n // re-render (the watcher list is then filtered by v-for).\n if (!this.vm._isBeingDestroyed && !this.vm._vForRemoving) {\n remove(this.vm._watchers, this);\n }\n var i = this.deps.length;\n while (i--) {\n this.deps[i].removeSub(this);\n }\n this.active = false;\n }\n };\n\n return Watcher;\n }();\n\n var seenObjects = new _Set();\n function traverse(val, seen) {\n var i = void 0,\n keys = void 0;\n if (!seen) {\n seen = seenObjects;\n seen.clear();\n }\n var isA = Array.isArray(val);\n var isO = isObject(val);\n if ((isA || isO) && Object.isExtensible(val)) {\n if (val.__ob__) {\n var depId = val.__ob__.dep.id;\n if (seen.has(depId)) {\n return;\n } else {\n seen.add(depId);\n }\n }\n if (isA) {\n i = val.length;\n while (i--) {\n traverse(val[i], seen);\n }\n } else if (isO) {\n keys = Object.keys(val);\n i = keys.length;\n while (i--) {\n traverse(val[keys[i]], seen);\n }\n }\n }\n }\n\n var arrayProto = Array.prototype;\n var arrayMethods = Object.create(arrayProto)\n\n /**\n * Intercept mutating methods and emit events\n */\n ;['push', 'pop', 'shift', 'unshift', 'splice', 'sort', 'reverse'].forEach(function (method) {\n // cache original method\n var original = arrayProto[method];\n def(arrayMethods, method, function mutator() {\n // avoid leaking arguments:\n // http://jsperf.com/closure-with-arguments\n var i = arguments.length;\n var args = new Array(i);\n while (i--) {\n args[i] = arguments[i];\n }\n var result = original.apply(this, args);\n var ob = this.__ob__;\n var inserted = void 0;\n switch (method) {\n case 'push':\n inserted = args;\n break;\n case 'unshift':\n inserted = args;\n break;\n case 'splice':\n inserted = args.slice(2);\n break;\n }\n if (inserted) ob.observeArray(inserted);\n // notify change\n ob.dep.notify();\n return result;\n });\n });\n\n var arrayKeys = Object.getOwnPropertyNames(arrayMethods);\n\n /**\n * By default, when a reactive property is set, the new value is\n * also converted to become reactive. However when passing down props,\n * we don't want to force conversion because the value may be a nested value\n * under a frozen data structure. Converting it would defeat the optimization.\n */\n var observerState = {\n shouldConvert: true,\n isSettingProps: false\n };\n\n /**\n * Observer class that are attached to each observed\n * object. Once attached, the observer converts target\n * object's property keys into getter/setters that\n * collect dependencies and dispatches updates.\n */\n var Observer = function () {\n // number of vms that has this object as root $data\n\n function Observer(value) {\n this.value = value;\n this.dep = new Dep();\n this.vmCount = 0;\n def(value, '__ob__', this);\n if (Array.isArray(value)) {\n var augment = hasProto ? protoAugment : copyAugment;\n augment(value, arrayMethods, arrayKeys);\n this.observeArray(value);\n } else {\n this.walk(value);\n }\n }\n\n /**\n * Walk through each property and convert them into\n * getter/setters. This method should only be called when\n * value type is Object.\n */\n\n\n Observer.prototype.walk = function walk(obj) {\n var val = this.value;\n for (var key in obj) {\n defineReactive(val, key, obj[key]);\n }\n };\n\n /**\n * Observe a list of Array items.\n */\n\n\n Observer.prototype.observeArray = function observeArray(items) {\n for (var i = 0, l = items.length; i < l; i++) {\n observe(items[i]);\n }\n };\n\n return Observer;\n }();\n\n // helpers\n\n /**\n * Augment an target Object or Array by intercepting\n * the prototype chain using __proto__\n */\n function protoAugment(target, src) {\n /* eslint-disable no-proto */\n target.__proto__ = src;\n /* eslint-enable no-proto */\n }\n\n /**\n * Augment an target Object or Array by defining\n * hidden properties.\n *\n * istanbul ignore next\n */\n function copyAugment(target, src, keys) {\n for (var i = 0, l = keys.length; i < l; i++) {\n var key = keys[i];\n def(target, key, src[key]);\n }\n }\n\n /**\n * Attempt to create an observer instance for a value,\n * returns the new observer if successfully observed,\n * or the existing observer if the value already has one.\n */\n function observe(value) {\n if (!isObject(value)) {\n return;\n }\n var ob = void 0;\n if (hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) {\n ob = value.__ob__;\n } else if (observerState.shouldConvert && !config._isServer && (Array.isArray(value) || isPlainObject(value)) && Object.isExtensible(value) && !value._isVue) {\n ob = new Observer(value);\n }\n return ob;\n }\n\n /**\n * Define a reactive property on an Object.\n */\n function defineReactive(obj, key, val, customSetter) {\n var dep = new Dep();\n\n var property = Object.getOwnPropertyDescriptor(obj, key);\n if (property && property.configurable === false) {\n return;\n }\n\n // cater for pre-defined getter/setters\n var getter = property && property.get;\n var setter = property && property.set;\n\n var childOb = observe(val);\n Object.defineProperty(obj, key, {\n enumerable: true,\n configurable: true,\n get: function reactiveGetter() {\n var value = getter ? getter.call(obj) : val;\n if (Dep.target) {\n dep.depend();\n if (childOb) {\n childOb.dep.depend();\n }\n if (Array.isArray(value)) {\n for (var e, i = 0, l = value.length; i < l; i++) {\n e = value[i];\n e && e.__ob__ && e.__ob__.dep.depend();\n }\n }\n }\n return value;\n },\n set: function reactiveSetter(newVal) {\n var value = getter ? getter.call(obj) : val;\n if (newVal === value) {\n return;\n }\n if (\"development\" !== 'production' && customSetter) {\n customSetter();\n }\n if (setter) {\n setter.call(obj, newVal);\n } else {\n val = newVal;\n }\n childOb = observe(newVal);\n dep.notify();\n }\n });\n }\n\n /**\n * Set a property on an object. Adds the new property and\n * triggers change notification if the property doesn't\n * already exist.\n */\n function set(obj, key, val) {\n if (Array.isArray(obj)) {\n obj.splice(key, 1, val);\n return val;\n }\n if (hasOwn(obj, key)) {\n obj[key] = val;\n return;\n }\n var ob = obj.__ob__;\n if (obj._isVue || ob && ob.vmCount) {\n \"development\" !== 'production' && warn('Avoid adding reactive properties to a Vue instance or its root $data ' + 'at runtime - delcare it upfront in the data option.');\n return;\n }\n if (!ob) {\n obj[key] = val;\n return;\n }\n defineReactive(ob.value, key, val);\n ob.dep.notify();\n return val;\n }\n\n /**\n * Delete a property and trigger change if necessary.\n */\n function del(obj, key) {\n var ob = obj.__ob__;\n if (obj._isVue || ob && ob.vmCount) {\n \"development\" !== 'production' && warn('Avoid deleting properties on a Vue instance or its root $data ' + '- just set it to null.');\n return;\n }\n if (!hasOwn(obj, key)) {\n return;\n }\n delete obj[key];\n if (!ob) {\n return;\n }\n ob.dep.notify();\n }\n\n function initState(vm) {\n vm._watchers = [];\n initProps(vm);\n initData(vm);\n initComputed(vm);\n initMethods(vm);\n initWatch(vm);\n }\n\n function initProps(vm) {\n var props = vm.$options.props;\n var propsData = vm.$options.propsData;\n if (props) {\n var keys = vm.$options._propKeys = Object.keys(props);\n var isRoot = !vm.$parent;\n // root instance props should be converted\n observerState.shouldConvert = isRoot;\n\n var _loop = function _loop(i) {\n var key = keys[i];\n /* istanbul ignore else */\n if (\"development\" !== 'production') {\n defineReactive(vm, key, validateProp(vm, key, propsData), function () {\n if (vm.$parent && !observerState.isSettingProps) {\n warn('Avoid mutating a prop directly since the value will be ' + 'overwritten whenever the parent component re-renders. ' + 'Instead, use a data or computed property based on the prop\\'s ' + ('value. Prop being mutated: \"' + key + '\"'), vm);\n }\n });\n } else {}\n };\n\n for (var i = 0; i < keys.length; i++) {\n _loop(i);\n }\n observerState.shouldConvert = true;\n }\n }\n\n function initData(vm) {\n var data = vm.$options.data;\n data = vm._data = typeof data === 'function' ? data.call(vm) : data || {};\n if (!isPlainObject(data)) {\n data = {};\n \"development\" !== 'production' && warn('data functions should return an object.', vm);\n }\n // proxy data on instance\n var keys = Object.keys(data);\n var props = vm.$options.props;\n var i = keys.length;\n while (i--) {\n if (props && hasOwn(props, keys[i])) {\n \"development\" !== 'production' && warn('The data property \"' + keys[i] + '\" is already declared as a prop. ' + 'Use prop default value instead.', vm);\n } else {\n proxy(vm, keys[i]);\n }\n }\n // observe data\n observe(data);\n data.__ob__ && data.__ob__.vmCount++;\n }\n\n var computedSharedDefinition = {\n enumerable: true,\n configurable: true,\n get: noop,\n set: noop\n };\n\n function initComputed(vm) {\n var computed = vm.$options.computed;\n if (computed) {\n for (var _key in computed) {\n var userDef = computed[_key];\n if (typeof userDef === 'function') {\n computedSharedDefinition.get = makeComputedGetter(userDef, vm);\n computedSharedDefinition.set = noop;\n } else {\n computedSharedDefinition.get = userDef.get ? userDef.cache !== false ? makeComputedGetter(userDef.get, vm) : bind(userDef.get, vm) : noop;\n computedSharedDefinition.set = userDef.set ? bind(userDef.set, vm) : noop;\n }\n Object.defineProperty(vm, _key, computedSharedDefinition);\n }\n }\n }\n\n function makeComputedGetter(getter, owner) {\n var watcher = new Watcher(owner, getter, noop, {\n lazy: true\n });\n return function computedGetter() {\n if (watcher.dirty) {\n watcher.evaluate();\n }\n if (Dep.target) {\n watcher.depend();\n }\n return watcher.value;\n };\n }\n\n function initMethods(vm) {\n var methods = vm.$options.methods;\n if (methods) {\n for (var _key2 in methods) {\n vm[_key2] = bind(methods[_key2], vm);\n }\n }\n }\n\n function initWatch(vm) {\n var watch = vm.$options.watch;\n if (watch) {\n for (var _key3 in watch) {\n var handler = watch[_key3];\n if (Array.isArray(handler)) {\n for (var i = 0; i < handler.length; i++) {\n createWatcher(vm, _key3, handler[i]);\n }\n } else {\n createWatcher(vm, _key3, handler);\n }\n }\n }\n }\n\n function createWatcher(vm, key, handler) {\n var options = void 0;\n if (isPlainObject(handler)) {\n options = handler;\n handler = handler.handler;\n }\n if (typeof handler === 'string') {\n handler = vm[handler];\n }\n vm.$watch(key, handler, options);\n }\n\n function stateMixin(Vue) {\n // flow somehow has problems with directly declared definition object\n // when using Object.defineProperty, so we have to procedurally build up\n // the object here.\n var dataDef = {};\n dataDef.get = function () {\n return this._data;\n };\n if (\"development\" !== 'production') {\n dataDef.set = function (newData) {\n warn('Avoid replacing instance root $data. ' + 'Use nested data properties instead.', this);\n };\n }\n Object.defineProperty(Vue.prototype, '$data', dataDef);\n\n Vue.prototype.$watch = function (expOrFn, cb, options) {\n var vm = this;\n options = options || {};\n options.user = true;\n var watcher = new Watcher(vm, expOrFn, cb, options);\n if (options.immediate) {\n cb.call(vm, watcher.value);\n }\n return function unwatchFn() {\n watcher.teardown();\n };\n };\n }\n\n function proxy(vm, key) {\n if (!isReserved(key)) {\n Object.defineProperty(vm, key, {\n configurable: true,\n enumerable: true,\n get: function proxyGetter() {\n return vm._data[key];\n },\n set: function proxySetter(val) {\n vm._data[key] = val;\n }\n });\n }\n }\n\n var VNode = function VNode(tag, data, children, text, elm, ns, context, host, componentOptions) {\n this.tag = tag;\n this.data = data;\n this.children = children;\n this.text = text;\n this.elm = elm;\n this.ns = ns;\n this.context = context;\n this.host = host;\n this.key = data && data.key;\n this.componentOptions = componentOptions;\n this.child = undefined;\n this.parent = undefined;\n this.raw = false;\n // apply construct hook.\n // this is applied during render, before patch happens.\n // unlike other hooks, this is applied on both client and server.\n var constructHook = data && data.hook && data.hook.construct;\n if (constructHook) {\n constructHook(this);\n }\n };\n\n var emptyVNode = function emptyVNode() {\n return new VNode(undefined, undefined, undefined, '');\n };\n\n function normalizeChildren(children, ns) {\n // invoke children thunks.\n // components always receive their children as thunks so that they\n // can perform the actual render inside their own dependency collection cycle.\n if (typeof children === 'function') {\n children = children();\n }\n if (isPrimitive(children)) {\n return [createTextVNode(children)];\n }\n if (Array.isArray(children)) {\n var res = [];\n for (var i = 0, l = children.length; i < l; i++) {\n var c = children[i];\n var last = res[res.length - 1];\n // nested\n if (Array.isArray(c)) {\n res.push.apply(res, normalizeChildren(c));\n } else if (isPrimitive(c)) {\n if (last && last.text) {\n last.text += String(c);\n } else {\n // convert primitive to vnode\n res.push(createTextVNode(c));\n }\n } else if (c instanceof VNode) {\n if (c.text && last && last.text) {\n last.text += c.text;\n } else {\n // inherit parent namespace\n if (ns && c.tag) c.ns = ns;\n res.push(c);\n }\n }\n }\n return res;\n }\n }\n\n function createTextVNode(val) {\n return new VNode(undefined, undefined, undefined, String(val));\n }\n\n function updateListeners(on, oldOn, add, remove) {\n var name = void 0,\n cur = void 0,\n old = void 0,\n fn = void 0,\n event = void 0,\n capture = void 0;\n for (name in on) {\n cur = on[name];\n old = oldOn[name];\n if (!old) {\n capture = name.charAt(0) === '!';\n event = capture ? name.slice(1) : name;\n if (Array.isArray(cur)) {\n add(event, cur.invoker = arrInvoker(cur), capture);\n } else {\n fn = cur;\n cur = on[name] = {};\n cur.fn = fn;\n add(event, cur.invoker = fnInvoker(cur), capture);\n }\n } else if (Array.isArray(old)) {\n old.length = cur.length;\n for (var i = 0; i < old.length; i++) {\n old[i] = cur[i];\n }on[name] = old;\n } else {\n old.fn = cur;\n on[name] = old;\n }\n }\n for (name in oldOn) {\n if (!on[name]) {\n event = name.charAt(0) === '!' ? name.slice(1) : name;\n remove(event, oldOn[name].invoker);\n }\n }\n }\n\n function arrInvoker(arr) {\n return function (ev) {\n var single = arguments.length === 1;\n for (var i = 0; i < arr.length; i++) {\n single ? arr[i](ev) : arr[i].apply(null, arguments);\n }\n };\n }\n\n function fnInvoker(o) {\n return function (ev) {\n var single = arguments.length === 1;\n single ? o.fn(ev) : o.fn.apply(null, arguments);\n };\n }\n\n function initLifecycle(vm) {\n var options = vm.$options;\n\n vm.$parent = options.parent;\n vm.$root = vm.$parent ? vm.$parent.$root : vm;\n if (vm.$parent && !options._abstract) {\n vm.$parent.$children.push(vm);\n }\n\n vm.$children = [];\n vm.$refs = {};\n\n vm._watcher = null;\n vm._inactive = false;\n vm._isMounted = false;\n vm._isDestroyed = false;\n vm._isBeingDestroyed = false;\n }\n\n function lifecycleMixin(Vue) {\n Vue.prototype._mount = function (el, hydrating) {\n var vm = this;\n vm.$el = el;\n if (!vm.$options.render) {\n vm.$options.render = emptyVNode;\n if (\"development\" !== 'production') {\n /* istanbul ignore if */\n if (vm.$options.template) {\n warn('You are using the runtime-only build of Vue where the template ' + 'option is not available. Either pre-compile the templates into ' + 'render functions, or use the compiler-included build.', vm);\n } else {\n warn('Failed to mount component: template or render function not defined.', vm);\n }\n }\n }\n callHook(vm, 'beforeMount');\n vm._watcher = new Watcher(vm, function () {\n vm._update(vm._render(), hydrating);\n }, noop);\n hydrating = false;\n // root instance, call mounted on self\n // mounted is called for child components in its inserted hook\n if (vm.$root === vm) {\n vm._isMounted = true;\n callHook(vm, 'mounted');\n }\n return vm;\n };\n\n Vue.prototype._update = function (vnode, hydrating) {\n var vm = this;\n if (vm._isMounted) {\n callHook(vm, 'beforeUpdate');\n }\n var prevEl = vm.$el;\n if (!vm._vnode) {\n // Vue.prototype.__patch__ is injected in entry points\n // based on the rendering backend used.\n vm.$el = vm.__patch__(vm.$el, vnode, hydrating);\n } else {\n vm.$el = vm.__patch__(vm._vnode, vnode);\n }\n vm._vnode = vnode;\n // update __vue__ reference\n if (prevEl) {\n prevEl.__vue__ = null;\n }\n if (vm.$el) {\n vm.$el.__vue__ = vm;\n }\n // update parent vnode element after patch\n var parentNode = vm.$options._parentVnode;\n if (parentNode) {\n parentNode.elm = vm.$el;\n // update parent $el if the parent is HOC\n // this is necessary because child is updated after parent\n if (vm.$parent && parentNode === vm.$parent._vnode) {\n vm.$parent.$el = vm.$el;\n }\n }\n if (vm._isMounted) {\n callHook(vm, 'updated');\n }\n };\n\n Vue.prototype._updateFromParent = function (propsData, listeners, parentVnode, renderChildren) {\n var vm = this;\n vm.$options._parentVnode = parentVnode;\n vm.$options._renderChildren = renderChildren;\n // update props\n if (propsData && vm.$options.props) {\n observerState.shouldConvert = false;\n if (\"development\" !== 'production') {\n observerState.isSettingProps = true;\n }\n var propKeys = vm.$options._propKeys || [];\n for (var i = 0; i < propKeys.length; i++) {\n var key = propKeys[i];\n vm[key] = validateProp(vm, key, propsData);\n }\n observerState.shouldConvert = true;\n if (\"development\" !== 'production') {\n observerState.isSettingProps = false;\n }\n }\n // update listeners\n if (listeners) {\n var oldListeners = vm.$options._parentListeners;\n vm.$options._parentListeners = listeners;\n vm._updateListeners(listeners, oldListeners);\n }\n };\n\n Vue.prototype.$forceUpdate = function () {\n var vm = this;\n if (vm._watcher) {\n vm._watcher.update();\n }\n if (vm._watchers.length) {\n for (var i = 0; i < vm._watchers.length; i++) {\n vm._watchers[i].update(true /* shallow */);\n }\n }\n };\n\n Vue.prototype.$destroy = function () {\n var vm = this;\n if (vm._isBeingDestroyed) {\n return;\n }\n callHook(vm, 'beforeDestroy');\n vm._isBeingDestroyed = true;\n // remove self from parent\n var parent = vm.$parent;\n if (parent && !parent._isBeingDestroyed && !vm.$options._abstract) {\n remove(parent.$children, vm);\n }\n // teardown watchers\n if (vm._watcher) {\n vm._watcher.teardown();\n }\n var i = vm._watchers.length;\n while (i--) {\n vm._watchers[i].teardown();\n }\n // remove reference from data ob\n // frozen object may not have observer.\n if (vm._data.__ob__) {\n vm._data.__ob__.vmCount--;\n }\n // call the last hook...\n vm._isDestroyed = true;\n callHook(vm, 'destroyed');\n // turn off all instance listeners.\n vm.$off();\n // remove __vue__ reference\n if (vm.$el) {\n vm.$el.__vue__ = null;\n }\n };\n }\n\n function callHook(vm, hook) {\n vm.$emit('pre-hook:' + hook);\n var handlers = vm.$options[hook];\n if (handlers) {\n for (var i = 0, j = handlers.length; i < j; i++) {\n handlers[i].call(vm);\n }\n }\n vm.$emit('hook:' + hook);\n }\n\n var hooks = { init: init, prepatch: prepatch, insert: insert, destroy: destroy };\n var hooksToMerge = Object.keys(hooks);\n\n function createComponent(Ctor, data, parent, context, host, children, tag) {\n // ensure children is a thunk\n if (\"development\" !== 'production' && children && typeof children !== 'function') {\n warn('A component\\'s children should be a function that returns the ' + 'children array. This allows the component to track the children ' + 'dependencies and optimizes re-rendering.');\n }\n\n if (!Ctor) {\n return;\n }\n\n if (isObject(Ctor)) {\n Ctor = Vue.extend(Ctor);\n }\n\n if (typeof Ctor !== 'function') {\n if (\"development\" !== 'production') {\n warn('Invalid Component definition: ' + Ctor, parent);\n }\n return;\n }\n\n // async component\n if (!Ctor.cid) {\n if (Ctor.resolved) {\n Ctor = Ctor.resolved;\n } else {\n Ctor = resolveAsyncComponent(Ctor, function () {\n // it's ok to queue this on every render because\n // $forceUpdate is buffered. this is only called\n // if the\n parent.$forceUpdate();\n });\n if (!Ctor) {\n // return nothing if this is indeed an async component\n // wait for the callback to trigger parent update.\n return;\n }\n }\n }\n\n data = data || {};\n\n // extract props\n var propsData = extractProps(data, Ctor);\n\n // functional component\n if (Ctor.options.functional) {\n return Ctor.options.render.call(null, parent.$createElement, // h\n propsData || {}, // props\n normalizeChildren(children) // children\n );\n }\n\n // merge component management hooks onto the placeholder node\n mergeHooks(data);\n\n // extract listeners, since these needs to be treated as\n // child component listeners instead of DOM listeners\n var listeners = data.on;\n if (listeners) {\n delete data.on;\n }\n\n // return a placeholder vnode\n var name = Ctor.options.name || tag;\n var vnode = new VNode('vue-component-' + Ctor.cid + (name ? '-' + name : ''), data, undefined, undefined, undefined, undefined, context, host, { Ctor: Ctor, propsData: propsData, listeners: listeners, parent: parent, tag: tag, children: children });\n return vnode;\n }\n\n function createComponentInstanceForVnode(vnode // we know it's MountedComponentVNode but flow doesn't\n ) {\n var vnodeComponentOptions = vnode.componentOptions;\n var options = {\n _isComponent: true,\n parent: vnodeComponentOptions.parent,\n propsData: vnodeComponentOptions.propsData,\n _componentTag: vnodeComponentOptions.tag,\n _parentVnode: vnode,\n _parentListeners: vnodeComponentOptions.listeners,\n _renderChildren: vnodeComponentOptions.children\n };\n // check inline-template render functions\n var inlineTemplate = vnode.data.inlineTemplate;\n if (inlineTemplate) {\n options.render = inlineTemplate.render;\n options.staticRenderFns = inlineTemplate.staticRenderFns;\n }\n return new vnodeComponentOptions.Ctor(options);\n }\n\n function init(vnode, hydrating) {\n if (!vnode.child) {\n var child = vnode.child = createComponentInstanceForVnode(vnode);\n child.$mount(hydrating ? vnode.elm : undefined, hydrating);\n }\n }\n\n function prepatch(oldVnode, vnode) {\n var options = vnode.componentOptions;\n vnode.child = oldVnode.child;\n vnode.child._updateFromParent(options.propsData, // updated props\n options.listeners, // updated listeners\n vnode, // new parent vnode\n options.children // new children\n );\n }\n\n function insert(vnode) {\n if (!vnode.child._isMounted) {\n vnode.child._isMounted = true;\n callHook(vnode.child, 'mounted');\n }\n if (vnode.data.keepAlive) {\n vnode.child._inactive = false;\n callHook(vnode.child, 'activated');\n }\n }\n\n function destroy(vnode) {\n if (!vnode.child._isDestroyed) {\n if (!vnode.data.keepAlive) {\n vnode.child.$destroy();\n } else {\n vnode.child._inactive = true;\n callHook(vnode.child, 'deactivated');\n }\n }\n }\n\n function resolveAsyncComponent(factory, cb) {\n if (factory.requested) {\n // pool callbacks\n factory.pendingCallbacks.push(cb);\n } else {\n var _ret = function () {\n factory.requested = true;\n var cbs = factory.pendingCallbacks = [cb];\n var sync = true;\n factory(\n // resolve\n function (res) {\n if (isObject(res)) {\n res = Vue.extend(res);\n }\n // cache resolved\n factory.resolved = res;\n // invoke callbacks only if this is not a synchronous resolve\n // (async resolves are shimmed as synchronous during SSR)\n if (!sync) {\n for (var i = 0, l = cbs.length; i < l; i++) {\n cbs[i](res);\n }\n }\n },\n // reject\n function (reason) {\n \"development\" !== 'production' && warn('Failed to resolve async component: ' + factory + (reason ? '\\nReason: ' + reason : ''));\n });\n sync = false;\n // return in case resolved synchronously\n return {\n v: factory.resolved\n };\n }();\n\n if (typeof _ret === \"object\") return _ret.v;\n }\n }\n\n function extractProps(data, Ctor) {\n // we are only extrating raw values here.\n // validation and default values are handled in the child\n // component itself.\n var propOptions = Ctor.options.props;\n if (!propOptions) {\n return;\n }\n var res = {};\n var attrs = data.attrs;\n var props = data.props;\n var staticAttrs = data.staticAttrs;\n if (!attrs && !props && !staticAttrs) {\n return res;\n }\n for (var key in propOptions) {\n var altKey = hyphenate(key);\n checkProp(res, attrs, key, altKey) || checkProp(res, props, key, altKey) || checkProp(res, staticAttrs, key, altKey);\n }\n return res;\n }\n\n function checkProp(res, hash, key, altKey) {\n if (hash) {\n if (hasOwn(hash, key)) {\n res[key] = hash[key];\n delete hash[key];\n return true;\n } else if (hasOwn(hash, altKey)) {\n res[key] = hash[altKey];\n delete hash[altKey];\n return true;\n }\n }\n return false;\n }\n\n function mergeHooks(data) {\n if (data.hook) {\n for (var i = 0; i < hooksToMerge.length; i++) {\n var key = hooksToMerge[i];\n var fromParent = data.hook[key];\n var ours = hooks[key];\n data.hook[key] = fromParent ? mergeHook$1(ours, fromParent) : ours;\n }\n } else {\n data.hook = hooks;\n }\n }\n\n function mergeHook$1(a, b) {\n // since all hooks have at most two args, use fixed args\n // to avoid having to use fn.apply().\n return function (_, __) {\n a(_, __);\n b(_, __);\n };\n }\n\n // wrapper function for providing a more flexible interface\n // without getting yelled at by flow\n function createElement(tag, data, children) {\n if (data && (Array.isArray(data) || typeof data !== 'object')) {\n children = data;\n data = undefined;\n }\n return _createElement.call(this, tag, data, children);\n }\n\n function _createElement(tag, data, children) {\n // make sure to expose real self instead of proxy\n var context = this._self;\n var parent = renderState.activeInstance;\n var host = context !== parent ? parent : undefined;\n if (!parent) {\n \"development\" !== 'production' && warn('createElement cannot be called outside of component ' + 'render functions.');\n return;\n }\n if (!tag) {\n // in case of component :is set to falsy value\n return emptyVNode();\n }\n if (typeof tag === 'string') {\n var namespace = config.getTagNamespace(tag);\n var Ctor = void 0;\n if (config.isReservedTag(tag)) {\n return new VNode(tag, data, normalizeChildren(children, namespace), undefined, undefined, namespace, context, host);\n } else if (Ctor = resolveAsset(context.$options, 'components', tag)) {\n return createComponent(Ctor, data, parent, context, host, children, tag);\n } else {\n if (\"development\" !== 'production') {\n if (!namespace && !(config.ignoredElements && config.ignoredElements.indexOf(tag) > -1) && config.isUnknownElement(tag)) {\n warn('Unknown custom element: <' + tag + '> - did you ' + 'register the component correctly? For recursive components, ' + 'make sure to provide the \"name\" option.');\n }\n }\n return new VNode(tag, data, normalizeChildren(children, namespace), undefined, undefined, namespace, context, host);\n }\n } else {\n return createComponent(tag, data, parent, context, host, children);\n }\n }\n\n var renderState = {\n activeInstance: null\n };\n\n function initRender(vm) {\n vm._vnode = null;\n vm._staticTrees = null;\n vm.$slots = {};\n // bind the public createElement fn to this instance\n // so that we get proper render context inside it.\n vm.$createElement = bind(createElement, vm);\n if (vm.$options.el) {\n vm.$mount(vm.$options.el);\n }\n }\n\n function renderMixin(Vue) {\n Vue.prototype.$nextTick = function (fn) {\n nextTick(fn, this);\n };\n\n Vue.prototype._render = function () {\n var vm = this;\n\n // set current active instance\n var prev = renderState.activeInstance;\n renderState.activeInstance = vm;\n\n var _vm$$options = vm.$options;\n var render = _vm$$options.render;\n var staticRenderFns = _vm$$options.staticRenderFns;\n var _renderChildren = _vm$$options._renderChildren;\n var _parentVnode = _vm$$options._parentVnode;\n\n\n if (staticRenderFns && !this._staticTrees) {\n this._staticTrees = [];\n }\n\n // resolve slots. becaues slots are rendered in parent scope,\n // we set the activeInstance to parent.\n if (_renderChildren) {\n resolveSlots(vm, _renderChildren);\n }\n // render self\n var vnode = render.call(vm._renderProxy, vm.$createElement);\n // return empty vnode in case the render function errored out\n if (!(vnode instanceof VNode)) {\n if (\"development\" !== 'production' && Array.isArray(vnode)) {\n warn('Multiple root nodes returned from render function. Render function ' + 'should return a single root node.', vm);\n }\n vnode = emptyVNode();\n }\n // set parent\n vnode.parent = _parentVnode;\n // restore render state\n renderState.activeInstance = prev;\n return vnode;\n };\n\n // shorthands used in render functions\n Vue.prototype._h = createElement;\n // toString for mustaches\n Vue.prototype._s = _toString;\n // number conversion\n Vue.prototype._n = toNumber;\n\n //\n Vue.prototype._m = function renderStatic(index) {\n return this._staticTrees[index] || (this._staticTrees[index] = this.$options.staticRenderFns[index].call(this._renderProxy));\n };\n\n // filter resolution helper\n var identity = function identity(_) {\n return _;\n };\n Vue.prototype._f = function resolveFilter(id) {\n return resolveAsset(this.$options, 'filters', id, true) || identity;\n };\n\n // render v-for\n Vue.prototype._l = function renderList(val, render) {\n var ret = void 0,\n i = void 0,\n l = void 0,\n keys = void 0,\n key = void 0;\n if (Array.isArray(val)) {\n ret = new Array(val.length);\n for (i = 0, l = val.length; i < l; i++) {\n ret[i] = render(val[i], i);\n }\n } else if (typeof val === 'number') {\n ret = new Array(val);\n for (i = 0; i < val; i++) {\n ret[i] = render(i + 1, i);\n }\n } else if (isObject(val)) {\n keys = Object.keys(val);\n ret = new Array(keys.length);\n for (i = 0, l = keys.length; i < l; i++) {\n key = keys[i];\n ret[i] = render(val[key], key, i);\n }\n }\n return ret;\n };\n\n // apply v-bind object\n Vue.prototype._b = function bindProps(vnode, value) {\n if (value) {\n if (!isObject(value)) {\n \"development\" !== 'production' && warn('v-bind without argument expects an Object or Array value', this);\n } else {\n if (Array.isArray(value)) {\n value = toObject(value);\n }\n var data = vnode.data;\n for (var key in value) {\n var hash = config.mustUseProp(key) ? data.props || (data.props = {}) : data.attrs || (data.attrs = {});\n hash[key] = value[key];\n }\n }\n }\n };\n\n // expose v-on keyCodes\n Vue.prototype._k = function getKeyCodes(key) {\n return config.keyCodes[key];\n };\n }\n\n function resolveSlots(vm, renderChildren) {\n if (renderChildren) {\n var children = normalizeChildren(renderChildren) || [];\n var slots = {};\n var defaultSlot = [];\n var name = void 0,\n child = void 0;\n for (var i = 0, l = children.length; i < l; i++) {\n child = children[i];\n if (name = child.data && child.data.slot) {\n var slot = slots[name] || (slots[name] = []);\n if (child.tag === 'template') {\n slot.push.apply(slot, child.children);\n } else {\n slot.push(child);\n }\n } else {\n defaultSlot.push(child);\n }\n }\n if (defaultSlot.length && !(defaultSlot.length === 1 && defaultSlot[0].text === ' ')) {\n slots['default'] = defaultSlot;\n }\n vm.$slots = slots;\n }\n }\n\n function initEvents(vm) {\n vm._events = Object.create(null);\n // init parent attached events\n var listeners = vm.$options._parentListeners;\n var on = bind(vm.$on, vm);\n var off = bind(vm.$off, vm);\n vm._updateListeners = function (listeners, oldListeners) {\n updateListeners(listeners, oldListeners || {}, on, off);\n };\n if (listeners) {\n vm._updateListeners(listeners);\n }\n }\n\n function eventsMixin(Vue) {\n Vue.prototype.$on = function (event, fn) {\n var vm = this;(vm._events[event] || (vm._events[event] = [])).push(fn);\n return vm;\n };\n\n Vue.prototype.$once = function (event, fn) {\n var vm = this;\n function on() {\n vm.$off(event, on);\n fn.apply(vm, arguments);\n }\n on.fn = fn;\n vm.$on(event, on);\n return vm;\n };\n\n Vue.prototype.$off = function (event, fn) {\n var vm = this;\n // all\n if (!arguments.length) {\n vm._events = Object.create(null);\n return vm;\n }\n // specific event\n var cbs = vm._events[event];\n if (!cbs) {\n return vm;\n }\n if (arguments.length === 1) {\n vm._events[event] = null;\n return vm;\n }\n // specific handler\n var cb = void 0;\n var i = cbs.length;\n while (i--) {\n cb = cbs[i];\n if (cb === fn || cb.fn === fn) {\n cbs.splice(i, 1);\n break;\n }\n }\n return vm;\n };\n\n Vue.prototype.$emit = function (event) {\n var vm = this;\n var cbs = vm._events[event];\n if (cbs) {\n cbs = cbs.length > 1 ? toArray(cbs) : cbs;\n var args = toArray(arguments, 1);\n for (var i = 0, l = cbs.length; i < l; i++) {\n cbs[i].apply(vm, args);\n }\n }\n return vm;\n };\n }\n\n var uid = 0;\n\n function initMixin(Vue) {\n Vue.prototype._init = function (options) {\n var vm = this;\n // a uid\n vm._uid = uid++;\n // a flag to avoid this being observed\n vm._isVue = true;\n // merge options\n if (options && options._isComponent) {\n // optimize internal component instantiation\n // since dynamic options merging is pretty slow, and none of the\n // internal component options needs special treatment.\n initInternalComponent(vm, options);\n } else {\n vm.$options = mergeOptions(resolveConstructorOptions(vm), options || {}, vm);\n }\n /* istanbul ignore else */\n if (\"development\" !== 'production') {\n initProxy(vm);\n } else {}\n // expose real self\n vm._self = vm;\n initLifecycle(vm);\n initEvents(vm);\n callHook(vm, 'beforeCreate');\n initState(vm);\n callHook(vm, 'created');\n initRender(vm);\n };\n\n function initInternalComponent(vm, options) {\n var opts = vm.$options = Object.create(resolveConstructorOptions(vm));\n // doing this because it's faster than dynamic enumeration.\n opts.parent = options.parent;\n opts.propsData = options.propsData;\n opts._parentVnode = options._parentVnode;\n opts._parentListeners = options._parentListeners;\n opts._renderChildren = options._renderChildren;\n opts._componentTag = options._componentTag;\n if (options.render) {\n opts.render = options.render;\n opts.staticRenderFns = options.staticRenderFns;\n }\n }\n\n function resolveConstructorOptions(vm) {\n var Ctor = vm.constructor;\n var options = Ctor.options;\n if (Ctor.super) {\n var superOptions = Ctor.super.options;\n var cachedSuperOptions = Ctor.superOptions;\n if (superOptions !== cachedSuperOptions) {\n // super option changed\n Ctor.superOptions = superOptions;\n options = Ctor.options = mergeOptions(superOptions, Ctor.extendOptions);\n if (options.name) {\n options.components[options.name] = Ctor;\n }\n }\n }\n return options;\n }\n }\n\n function Vue(options) {\n this._init(options);\n }\n\n initMixin(Vue);\n stateMixin(Vue);\n eventsMixin(Vue);\n lifecycleMixin(Vue);\n renderMixin(Vue);\n\n var warn = void 0;\n var formatComponentName = void 0;\n\n if (\"development\" !== 'production') {\n (function () {\n var hasConsole = typeof console !== 'undefined';\n\n warn = function warn(msg, vm) {\n if (hasConsole && !config.silent) {\n console.error('[Vue warn]: ' + msg + (vm ? formatComponentName(vm) : ''));\n }\n };\n\n formatComponentName = function formatComponentName(vm) {\n if (vm.$root === vm) {\n return ' (found in root instance)';\n }\n var name = vm._isVue ? vm.$options.name || vm.$options._componentTag : vm.name;\n return name ? ' (found in component: <' + hyphenate(name) + '>)' : ' (found in anonymous component. Use the \"name\" option for better debugging messages)';\n };\n })();\n }\n\n /**\n * Option overwriting strategies are functions that handle\n * how to merge a parent option value and a child option\n * value into the final value.\n */\n var strats = config.optionMergeStrategies;\n\n /**\n * Options with restrictions\n */\n if (\"development\" !== 'production') {\n strats.el = strats.propsData = function (parent, child, vm, key) {\n if (!vm) {\n warn('option \"' + key + '\" can only be used during instance ' + 'creation with the `new` keyword.');\n }\n return defaultStrat(parent, child);\n };\n\n strats.name = function (parent, child, vm) {\n if (vm) {\n warn('options \"name\" can only be used as a component definition option, ' + 'not during instance creation.');\n }\n return defaultStrat(parent, child);\n };\n }\n\n /**\n * Helper that recursively merges two data objects together.\n */\n function mergeData(to, from) {\n var key = void 0,\n toVal = void 0,\n fromVal = void 0;\n for (key in from) {\n toVal = to[key];\n fromVal = from[key];\n if (!hasOwn(to, key)) {\n set(to, key, fromVal);\n } else if (isObject(toVal) && isObject(fromVal)) {\n mergeData(toVal, fromVal);\n }\n }\n return to;\n }\n\n /**\n * Data\n */\n strats.data = function (parentVal, childVal, vm) {\n if (!vm) {\n // in a Vue.extend merge, both should be functions\n if (!childVal) {\n return parentVal;\n }\n if (typeof childVal !== 'function') {\n \"development\" !== 'production' && warn('The \"data\" option should be a function ' + 'that returns a per-instance value in component ' + 'definitions.', vm);\n return parentVal;\n }\n if (!parentVal) {\n return childVal;\n }\n // when parentVal & childVal are both present,\n // we need to return a function that returns the\n // merged result of both functions... no need to\n // check if parentVal is a function here because\n // it has to be a function to pass previous merges.\n return function mergedDataFn() {\n return mergeData(childVal.call(this), parentVal.call(this));\n };\n } else if (parentVal || childVal) {\n return function mergedInstanceDataFn() {\n // instance merge\n var instanceData = typeof childVal === 'function' ? childVal.call(vm) : childVal;\n var defaultData = typeof parentVal === 'function' ? parentVal.call(vm) : undefined;\n if (instanceData) {\n return mergeData(instanceData, defaultData);\n } else {\n return defaultData;\n }\n };\n }\n };\n\n /**\n * Hooks and param attributes are merged as arrays.\n */\n function mergeHook(parentVal, childVal) {\n return childVal ? parentVal ? parentVal.concat(childVal) : Array.isArray(childVal) ? childVal : [childVal] : parentVal;\n }\n\n config._lifecycleHooks.forEach(function (hook) {\n strats[hook] = mergeHook;\n });\n\n /**\n * Assets\n *\n * When a vm is present (instance creation), we need to do\n * a three-way merge between constructor options, instance\n * options and parent options.\n */\n function mergeAssets(parentVal, childVal) {\n var res = Object.create(parentVal || null);\n return childVal ? extend(res, childVal) : res;\n }\n\n config._assetTypes.forEach(function (type) {\n strats[type + 's'] = mergeAssets;\n });\n\n /**\n * Watchers.\n *\n * Watchers hashes should not overwrite one\n * another, so we merge them as arrays.\n */\n strats.watch = function (parentVal, childVal) {\n /* istanbul ignore if */\n if (!childVal) return parentVal;\n if (!parentVal) return childVal;\n var ret = {};\n extend(ret, parentVal);\n for (var key in childVal) {\n var parent = ret[key];\n var child = childVal[key];\n if (parent && !Array.isArray(parent)) {\n parent = [parent];\n }\n ret[key] = parent ? parent.concat(child) : [child];\n }\n return ret;\n };\n\n /**\n * Other object hashes.\n */\n strats.props = strats.methods = strats.computed = function (parentVal, childVal) {\n if (!childVal) return parentVal;\n if (!parentVal) return childVal;\n var ret = Object.create(null);\n extend(ret, parentVal);\n extend(ret, childVal);\n return ret;\n };\n\n /**\n * Default strategy.\n */\n var defaultStrat = function defaultStrat(parentVal, childVal) {\n return childVal === undefined ? parentVal : childVal;\n };\n\n /**\n * Make sure component options get converted to actual\n * constructors.\n */\n function normalizeComponents(options) {\n if (options.components) {\n var components = options.components;\n var def = void 0;\n for (var key in components) {\n var lower = key.toLowerCase();\n if (isBuiltInTag(lower) || config.isReservedTag(lower)) {\n \"development\" !== 'production' && warn('Do not use built-in or reserved HTML elements as component ' + 'id: ' + key);\n continue;\n }\n def = components[key];\n if (isPlainObject(def)) {\n components[key] = Vue.extend(def);\n }\n }\n }\n }\n\n /**\n * Ensure all props option syntax are normalized into the\n * Object-based format.\n */\n function normalizeProps(options) {\n var props = options.props;\n if (!props) return;\n var res = {};\n var i = void 0,\n val = void 0,\n name = void 0;\n if (Array.isArray(props)) {\n i = props.length;\n while (i--) {\n val = props[i];\n if (typeof val === 'string') {\n name = camelize(val);\n res[name] = { type: null };\n } else if (\"development\" !== 'production') {\n warn('props must be strings when using array syntax.');\n }\n }\n } else if (isPlainObject(props)) {\n for (var key in props) {\n val = props[key];\n name = camelize(key);\n res[name] = isPlainObject(val) ? val : { type: val };\n }\n }\n options.props = res;\n }\n\n /**\n * Normalize raw function directives into object format.\n */\n function normalizeDirectives(options) {\n var dirs = options.directives;\n if (dirs) {\n for (var key in dirs) {\n var def = dirs[key];\n if (typeof def === 'function') {\n dirs[key] = { bind: def, update: def };\n }\n }\n }\n }\n\n /**\n * Merge two option objects into a new one.\n * Core utility used in both instantiation and inheritance.\n */\n function mergeOptions(parent, child, vm) {\n normalizeComponents(child);\n normalizeProps(child);\n normalizeDirectives(child);\n var extendsFrom = child.extends;\n if (extendsFrom) {\n parent = typeof extendsFrom === 'function' ? mergeOptions(parent, extendsFrom.options, vm) : mergeOptions(parent, extendsFrom, vm);\n }\n if (child.mixins) {\n for (var i = 0, l = child.mixins.length; i < l; i++) {\n var mixin = child.mixins[i];\n if (mixin.prototype instanceof Vue) {\n mixin = mixin.options;\n }\n parent = mergeOptions(parent, mixin, vm);\n }\n }\n var options = {};\n var key = void 0;\n for (key in parent) {\n mergeField(key);\n }\n for (key in child) {\n if (!hasOwn(parent, key)) {\n mergeField(key);\n }\n }\n function mergeField(key) {\n var strat = strats[key] || defaultStrat;\n options[key] = strat(parent[key], child[key], vm, key);\n }\n return options;\n }\n\n /**\n * Resolve an asset.\n * This function is used because child instances need access\n * to assets defined in its ancestor chain.\n */\n function resolveAsset(options, type, id, warnMissing) {\n /* istanbul ignore if */\n if (typeof id !== 'string') {\n return;\n }\n var assets = options[type];\n var res = assets[id] ||\n // camelCase ID\n assets[camelize(id)] ||\n // Pascal Case ID\n assets[capitalize(camelize(id))];\n if (\"development\" !== 'production' && warnMissing && !res) {\n warn('Failed to resolve ' + type.slice(0, -1) + ': ' + id, options);\n }\n return res;\n }\n\n function validateProp(vm, key, propsData) {\n /* istanbul ignore if */\n if (!vm.$options.props || !propsData) return;\n var prop = vm.$options.props[key];\n var absent = !hasOwn(propsData, key);\n var value = propsData[key];\n // handle boolean props\n if (prop.type === Boolean) {\n if (absent && !hasOwn(prop, 'default')) {\n value = false;\n } else if (value === '' || value === hyphenate(key)) {\n value = true;\n }\n }\n // check default value\n if (value === undefined) {\n value = getPropDefaultValue(vm, prop, key);\n // since the default value is a fresh copy,\n // make sure to observe it.\n observerState.shouldConvert = true;\n observe(value);\n observerState.shouldConvert = false;\n }\n if (\"development\" !== 'production') {\n assertProp(prop, key, value, vm, absent);\n }\n return value;\n }\n\n /**\n * Get the default value of a prop.\n */\n function getPropDefaultValue(vm, prop, name) {\n // no default, return undefined\n if (!hasOwn(prop, 'default')) {\n return undefined;\n }\n var def = prop.default;\n // warn against non-factory defaults for Object & Array\n if (isObject(def)) {\n \"development\" !== 'production' && warn('Invalid default value for prop \"' + name + '\": ' + 'Props with type Object/Array must use a factory function ' + 'to return the default value.', vm);\n }\n // call factory function for non-Function types\n return typeof def === 'function' && prop.type !== Function ? def.call(vm) : def;\n }\n\n /**\n * Assert whether a prop is valid.\n */\n function assertProp(prop, name, value, vm, absent) {\n if (prop.required && absent) {\n warn('Missing required prop: \"' + name + '\"', vm);\n return;\n }\n if (value == null && !prop.required) {\n return;\n }\n var type = prop.type;\n var valid = !type;\n var expectedTypes = [];\n if (type) {\n if (!Array.isArray(type)) {\n type = [type];\n }\n for (var i = 0; i < type.length && !valid; i++) {\n var assertedType = assertType(value, type[i]);\n expectedTypes.push(assertedType.expectedType);\n valid = assertedType.valid;\n }\n }\n if (!valid) {\n warn('Invalid prop: type check failed for prop \"' + name + '\".' + ' Expected ' + expectedTypes.map(capitalize).join(', ') + ', got ' + Object.prototype.toString.call(value).slice(8, -1) + '.', vm);\n return;\n }\n var validator = prop.validator;\n if (validator) {\n if (!validator(value)) {\n warn('Invalid prop: custom validator check failed for prop \"' + name + '\".', vm);\n }\n }\n }\n\n /**\n * Assert the type of a value\n */\n function assertType(value, type) {\n var valid = void 0;\n var expectedType = void 0;\n if (type === String) {\n expectedType = 'string';\n valid = typeof value === expectedType;\n } else if (type === Number) {\n expectedType = 'number';\n valid = typeof value === expectedType;\n } else if (type === Boolean) {\n expectedType = 'boolean';\n valid = typeof value === expectedType;\n } else if (type === Function) {\n expectedType = 'function';\n valid = typeof value === expectedType;\n } else if (type === Object) {\n expectedType = 'Object';\n valid = isPlainObject(value);\n } else if (type === Array) {\n expectedType = 'Array';\n valid = Array.isArray(value);\n } else {\n expectedType = type.name || type.toString();\n valid = value instanceof type;\n }\n return {\n valid: valid,\n expectedType: expectedType\n };\n }\n\n\n\n var util = Object.freeze({\n \tdefineReactive: defineReactive,\n \t_toString: _toString,\n \ttoNumber: toNumber,\n \tmakeMap: makeMap,\n \tisBuiltInTag: isBuiltInTag,\n \tremove: remove,\n \thasOwn: hasOwn,\n \tisPrimitive: isPrimitive,\n \tcached: cached,\n \tcamelize: camelize,\n \tcapitalize: capitalize,\n \thyphenate: hyphenate,\n \tbind: bind,\n \ttoArray: toArray,\n \textend: extend,\n \tisObject: isObject,\n \tisPlainObject: isPlainObject,\n \ttoObject: toObject,\n \tnoop: noop,\n \tno: no,\n \tgenStaticKeys: genStaticKeys,\n \tisReserved: isReserved,\n \tdef: def,\n \tparsePath: parsePath,\n \thasProto: hasProto,\n \tinBrowser: inBrowser,\n \tdevtools: devtools,\n \tUA: UA,\n \tnextTick: nextTick,\n \tget _Set () { return _Set; },\n \tmergeOptions: mergeOptions,\n \tresolveAsset: resolveAsset,\n \tget warn () { return warn; },\n \tvalidateProp: validateProp\n });\n\n function initUse(Vue) {\n Vue.use = function (plugin) {\n /* istanbul ignore if */\n if (plugin.installed) {\n return;\n }\n // additional parameters\n var args = toArray(arguments, 1);\n args.unshift(this);\n if (typeof plugin.install === 'function') {\n plugin.install.apply(plugin, args);\n } else {\n plugin.apply(null, args);\n }\n plugin.installed = true;\n return this;\n };\n }\n\n function initMixin$1(Vue) {\n Vue.mixin = function (mixin) {\n Vue.options = mergeOptions(Vue.options, mixin);\n };\n }\n\n function initExtend(Vue) {\n /**\n * Each instance constructor, including Vue, has a unique\n * cid. This enables us to create wrapped \"child\n * constructors\" for prototypal inheritance and cache them.\n */\n Vue.cid = 0;\n var cid = 1;\n\n /**\n * Class inheritance\n */\n Vue.extend = function (extendOptions) {\n extendOptions = extendOptions || {};\n var Super = this;\n var isFirstExtend = Super.cid === 0;\n if (isFirstExtend && extendOptions._Ctor) {\n return extendOptions._Ctor;\n }\n var name = extendOptions.name || Super.options.name;\n if (\"development\" !== 'production') {\n if (!/^[a-zA-Z][\\w-]*$/.test(name)) {\n warn('Invalid component name: \"' + name + '\". Component names ' + 'can only contain alphanumeric characaters and the hyphen.');\n name = null;\n }\n }\n var Sub = function VueComponent(options) {\n this._init(options);\n };\n Sub.prototype = Object.create(Super.prototype);\n Sub.prototype.constructor = Sub;\n Sub.cid = cid++;\n Sub.options = mergeOptions(Super.options, extendOptions);\n Sub['super'] = Super;\n // allow further extension\n Sub.extend = Super.extend;\n // create asset registers, so extended classes\n // can have their private assets too.\n config._assetTypes.forEach(function (type) {\n Sub[type] = Super[type];\n });\n // enable recursive self-lookup\n if (name) {\n Sub.options.components[name] = Sub;\n }\n // keep a reference to the super options at extension time.\n // later at instantiation we can check if Super's options have\n // been updated.\n Sub.superOptions = Super.options;\n Sub.extendOptions = extendOptions;\n // cache constructor\n if (isFirstExtend) {\n extendOptions._Ctor = Sub;\n }\n return Sub;\n };\n }\n\n function initAssetRegisters(Vue) {\n /**\n * Create asset registration methods.\n */\n config._assetTypes.forEach(function (type) {\n Vue[type] = function (id, definition) {\n if (!definition) {\n return this.options[type + 's'][id];\n } else {\n /* istanbul ignore if */\n if (\"development\" !== 'production') {\n if (type === 'component' && config.isReservedTag(id)) {\n warn('Do not use built-in or reserved HTML elements as component ' + 'id: ' + id);\n }\n }\n if (type === 'component' && isPlainObject(definition)) {\n definition.name = definition.name || id;\n definition = Vue.extend(definition);\n }\n this.options[type + 's'][id] = definition;\n return definition;\n }\n };\n });\n }\n\n var KeepAlive = {\n name: 'keep-alive',\n _abstract: true,\n props: {\n child: Object\n },\n created: function created() {\n this.cache = Object.create(null);\n },\n render: function render() {\n var rawChild = this.child;\n var realChild = getRealChild(this.child);\n var cid = realChild.componentOptions.Ctor.cid;\n if (this.cache[cid]) {\n var child = realChild.child = this.cache[cid].child;\n realChild.elm = this.$el = child.$el;\n } else {\n this.cache[cid] = realChild;\n }\n realChild.data.keepAlive = true;\n return rawChild;\n },\n destroyed: function destroyed() {\n for (var key in this.cache) {\n var vnode = this.cache[key];\n callHook(vnode.child, 'deactivated');\n vnode.child.$destroy();\n }\n }\n };\n\n // in case the child is also an abstract component, e.g. <transition-control>\n // we want to recrusively retrieve the real component to be rendered\n function getRealChild(vnode) {\n var compOptions = vnode && vnode.componentOptions;\n if (compOptions && compOptions.Ctor.options._abstract) {\n return getRealChild(compOptions.propsData.child);\n } else {\n return vnode;\n }\n }\n\n var builtInComponents = {\n KeepAlive: KeepAlive\n };\n\n function initGlobalAPI(Vue) {\n // config\n var configDef = {};\n configDef.get = function () {\n return config;\n };\n if (\"development\" !== 'production') {\n configDef.set = function () {\n warn('Do not replace the Vue.config object, set individual fields instead.');\n };\n }\n Object.defineProperty(Vue, 'config', configDef);\n Vue.util = util;\n Vue.set = set;\n Vue.delete = del;\n Vue.nextTick = nextTick;\n\n Vue.options = Object.create(null);\n config._assetTypes.forEach(function (type) {\n Vue.options[type + 's'] = Object.create(null);\n });\n\n extend(Vue.options.components, builtInComponents);\n\n initUse(Vue);\n initMixin$1(Vue);\n initExtend(Vue);\n initAssetRegisters(Vue);\n }\n\n initGlobalAPI(Vue);\n\n Object.defineProperty(Vue.prototype, '$isServer', {\n get: function get() {\n return config._isServer;\n }\n });\n\n Vue.version = '2.0.0-alpha.8';\n\n // attributes that should be using props for binding\n var mustUseProp = makeMap('value,selected,checked,muted');\n\n var isEnumeratedAttr = makeMap('contenteditable,draggable,spellcheck');\n\n var isBooleanAttr = makeMap('allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,' + 'default,defaultchecked,defaultmuted,defaultselected,defer,disabled,' + 'enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,' + 'muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,' + 'required,reversed,scoped,seamless,selected,sortable,translate,' + 'truespeed,typemustmatch,visible');\n\n var isAttr = makeMap('accept,accept-charset,accesskey,action,align,alt,async,autocomplete,' + 'autofocus,autoplay,autosave,bgcolor,border,buffered,challenge,charset,' + 'checked,cite,class,code,codebase,color,cols,colspan,content,http-equiv,' + 'name,contenteditable,contextmenu,controls,coords,data,datetime,default,' + 'defer,dir,dirname,disabled,download,draggable,dropzone,enctype,method,for,' + 'form,formaction,headers,<th>,height,hidden,high,href,hreflang,http-equiv,' + 'icon,id,ismap,itemprop,keytype,kind,label,lang,language,list,loop,low,' + 'manifest,max,maxlength,media,method,GET,POST,min,multiple,email,file,' + 'muted,name,novalidate,open,optimum,pattern,ping,placeholder,poster,' + 'preload,radiogroup,readonly,rel,required,reversed,rows,rowspan,sandbox,' + 'scope,scoped,seamless,selected,shape,size,type,text,password,sizes,span,' + 'spellcheck,src,srcdoc,srclang,srcset,start,step,style,summary,tabindex,' + 'target,title,type,usemap,value,width,wrap');\n\n var xlinkNS = 'http://www.w3.org/1999/xlink';\n\n var isXlink = function isXlink(name) {\n return name.charAt(5) === ':' && name.slice(0, 5) === 'xlink';\n };\n\n var getXlinkProp = function getXlinkProp(name) {\n return isXlink(name) ? name.slice(6, name.length) : '';\n };\n\n var isFalsyAttrValue = function isFalsyAttrValue(val) {\n return val == null || val === false;\n };\n\n function genClassForVnode(vnode) {\n var data = vnode.data;\n // Important: check if this is a component container node\n // or a child component root node\n var i = void 0;\n if ((i = vnode.child) && (i = i._vnode.data)) {\n data = mergeClassData(i, data);\n }\n if ((i = vnode.parent) && (i = i.data)) {\n data = mergeClassData(data, i);\n }\n return genClassFromData(data);\n }\n\n function mergeClassData(child, parent) {\n return {\n staticClass: concat(child.staticClass, parent.staticClass),\n class: child.class ? [child.class, parent.class] : parent.class\n };\n }\n\n function genClassFromData(data) {\n var dynamicClass = data.class;\n var staticClass = data.staticClass;\n if (staticClass || dynamicClass) {\n return concat(staticClass, stringifyClass(dynamicClass));\n }\n /* istanbul ignore next */\n return '';\n }\n\n function concat(a, b) {\n return a ? b ? a + ' ' + b : a : b || '';\n }\n\n function stringifyClass(value) {\n var res = '';\n if (!value) {\n return res;\n }\n if (typeof value === 'string') {\n return value;\n }\n if (Array.isArray(value)) {\n var stringified = void 0;\n for (var i = 0, l = value.length; i < l; i++) {\n if (value[i]) {\n if (stringified = stringifyClass(value[i])) {\n res += stringified + ' ';\n }\n }\n }\n return res.slice(0, -1);\n }\n if (isObject(value)) {\n for (var key in value) {\n if (value[key]) res += key + ' ';\n }\n return res.slice(0, -1);\n }\n /* istanbul ignore next */\n return res;\n }\n\n var namespaceMap = {\n svg: 'http://www.w3.org/2000/svg',\n math: 'http://www.w3.org/1998/Math/MathML'\n };\n\n var isReservedTag = makeMap('html,base,head,link,meta,style,title,' + 'address,article,footer,header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,' + 'div,dd,dl,dt,figcaption,figure,hr,img,li,main,ol,p,pre,ul,' + 'a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,' + 's,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,' + 'embed,object,param,source,canvas,script,noscript,del,ins,' + 'caption,col,colgroup,table,thead,tbody,td,th,tr,' + 'button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,' + 'output,progress,select,textarea,' + 'details,dialog,menu,menuitem,summary,' + 'content,element,shadow,template');\n\n var isUnaryTag = makeMap('area,base,br,col,embed,frame,hr,img,input,isindex,keygen,' + 'link,meta,param,source,track,wbr', true);\n\n // Elements that you can, intentionally, leave open\n // (and which close themselves)\n var canBeLeftOpenTag = makeMap('colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr,source', true);\n\n // HTML5 tags https://html.spec.whatwg.org/multipage/indices.html#elements-3\n // Phrasing Content https://html.spec.whatwg.org/multipage/dom.html#phrasing-content\n var isNonPhrasingTag = makeMap('address,article,aside,base,blockquote,body,caption,col,colgroup,dd,' + 'details,dialog,div,dl,dt,fieldset,figcaption,figure,footer,form,' + 'h1,h2,h3,h4,h5,h6,head,header,hgroup,hr,html,legend,li,menuitem,meta,' + 'optgroup,option,param,rp,rt,source,style,summary,tbody,td,tfoot,th,thead,' + 'title,tr,track', true);\n\n // this map covers namespace elements that can appear as template root nodes\n var isSVG = makeMap('svg,g,defs,symbol,use,image,text,circle,ellipse,' + 'line,path,polygon,polyline,rect', true);\n\n function getTagNamespace(tag) {\n if (isSVG(tag)) {\n return 'svg';\n }\n // basic support for MathML\n // note it doesn't support other MathML elements being component roots\n if (tag === 'math') {\n return 'math';\n }\n }\n\n var unknownElementCache = Object.create(null);\n function isUnknownElement(tag) {\n /* istanbul ignore if */\n if (!inBrowser) {\n return true;\n }\n tag = tag.toLowerCase();\n /* istanbul ignore if */\n if (unknownElementCache[tag] != null) {\n return unknownElementCache[tag];\n }\n var el = document.createElement(tag);\n if (tag.indexOf('-') > -1) {\n // http://stackoverflow.com/a/28210364/1070244\n return unknownElementCache[tag] = el.constructor === window.HTMLUnknownElement || el.constructor === window.HTMLElement;\n } else {\n return unknownElementCache[tag] = /HTMLUnknownElement/.test(el.toString());\n }\n }\n\n var UA$1 = inBrowser && window.navigator.userAgent.toLowerCase();\n var isIE = UA$1 && /msie|trident/.test(UA$1);\n var isIE9 = UA$1 && UA$1.indexOf('msie 9.0') > 0;\n var isAndroid = UA$1 && UA$1.indexOf('android') > 0;\n\n /**\n * Query an element selector if it's not an element already.\n */\n function query(el) {\n if (typeof el === 'string') {\n var selector = el;\n el = document.querySelector(el);\n if (!el) {\n \"development\" !== 'production' && warn('Cannot find element: ' + selector);\n return document.createElement('div');\n }\n }\n return el;\n }\n\n function createElement$1(tagName) {\n return document.createElement(tagName);\n }\n\n function createElementNS(namespace, tagName) {\n return document.createElementNS(namespaceMap[namespace], tagName);\n }\n\n function createTextNode(text) {\n return document.createTextNode(text);\n }\n\n function insertBefore(parentNode, newNode, referenceNode) {\n parentNode.insertBefore(newNode, referenceNode);\n }\n\n function removeChild(node, child) {\n node.removeChild(child);\n }\n\n function appendChild(node, child) {\n node.appendChild(child);\n }\n\n function parentNode(node) {\n return node.parentNode;\n }\n\n function nextSibling(node) {\n return node.nextSibling;\n }\n\n function tagName(node) {\n return node.tagName;\n }\n\n function setTextContent(node, text) {\n node.textContent = text;\n }\n\n function childNodes(node) {\n return node.childNodes;\n }\n\n function setAttribute(node, key, val) {\n node.setAttribute(key, val);\n }\n\nvar nodeOps = Object.freeze({\n createElement: createElement$1,\n createElementNS: createElementNS,\n createTextNode: createTextNode,\n insertBefore: insertBefore,\n removeChild: removeChild,\n appendChild: appendChild,\n parentNode: parentNode,\n nextSibling: nextSibling,\n tagName: tagName,\n setTextContent: setTextContent,\n childNodes: childNodes,\n setAttribute: setAttribute\n });\n\n var emptyData = {};\n var emptyNode = new VNode('', emptyData, []);\n var hooks$1 = ['create', 'update', 'postpatch', 'remove', 'destroy'];\n\n function isUndef(s) {\n return s == null;\n }\n\n function isDef(s) {\n return s != null;\n }\n\n function sameVnode(vnode1, vnode2) {\n return vnode1.key === vnode2.key && vnode1.tag === vnode2.tag;\n }\n\n function createKeyToOldIdx(children, beginIdx, endIdx) {\n var i = void 0,\n key = void 0;\n var map = {};\n for (i = beginIdx; i <= endIdx; ++i) {\n key = children[i].key;\n if (isDef(key)) map[key] = i;\n }\n return map;\n }\n\n function createPatchFunction(backend) {\n var i = void 0,\n j = void 0;\n var cbs = {};\n\n var modules = backend.modules;\n var nodeOps = backend.nodeOps;\n\n\n for (i = 0; i < hooks$1.length; ++i) {\n cbs[hooks$1[i]] = [];\n for (j = 0; j < modules.length; ++j) {\n if (modules[j][hooks$1[i]] !== undefined) cbs[hooks$1[i]].push(modules[j][hooks$1[i]]);\n }\n }\n\n function emptyNodeAt(elm) {\n return new VNode(nodeOps.tagName(elm).toLowerCase(), {}, [], undefined, elm);\n }\n\n function createRmCb(childElm, listeners) {\n function remove() {\n if (--remove.listeners === 0) {\n removeElement(childElm);\n }\n }\n remove.listeners = listeners;\n return remove;\n }\n\n function removeElement(el) {\n var parent = nodeOps.parentNode(el);\n nodeOps.removeChild(parent, el);\n }\n\n function createElm(vnode, insertedVnodeQueue) {\n var i = void 0,\n elm = void 0;\n var data = vnode.data;\n if (isDef(data)) {\n if (isDef(i = data.hook) && isDef(i = i.init)) i(vnode);\n // after calling the init hook, if the vnode is a child component\n // it should've created a child instance and mounted it. the child\n // component also has set the placeholder vnode's elm.\n // in that case we can just return the element and be done.\n if (isDef(i = vnode.child)) {\n invokeCreateHooks(vnode, insertedVnodeQueue);\n setScope(vnode);\n return vnode.elm;\n }\n }\n var children = vnode.children;\n var tag = vnode.tag;\n if (isDef(tag)) {\n elm = vnode.elm = vnode.ns ? nodeOps.createElementNS(vnode.ns, tag) : nodeOps.createElement(tag);\n setScope(vnode);\n if (Array.isArray(children)) {\n for (i = 0; i < children.length; ++i) {\n nodeOps.appendChild(elm, createElm(children[i], insertedVnodeQueue));\n }\n } else if (isPrimitive(vnode.text)) {\n nodeOps.appendChild(elm, nodeOps.createTextNode(vnode.text));\n }\n if (isDef(data)) {\n invokeCreateHooks(vnode, insertedVnodeQueue);\n }\n } else {\n elm = vnode.elm = nodeOps.createTextNode(vnode.text);\n }\n return vnode.elm;\n }\n\n function invokeCreateHooks(vnode, insertedVnodeQueue) {\n for (var _i = 0; _i < cbs.create.length; ++_i) {\n cbs.create[_i](emptyNode, vnode);\n }\n i = vnode.data.hook; // Reuse variable\n if (isDef(i)) {\n if (i.create) i.create(emptyNode, vnode);\n if (i.insert) insertedVnodeQueue.push(vnode);\n }\n }\n\n // set scope id attribute for scoped CSS.\n // this is implemented as a special case to avoid the overhead\n // of going through the normal attribute patching process.\n function setScope(vnode) {\n var i = void 0;\n if (isDef(i = vnode.host) && isDef(i = i.$options._scopeId)) {\n nodeOps.setAttribute(vnode.elm, i, '');\n }\n if (isDef(i = vnode.context) && isDef(i = i.$options._scopeId)) {\n nodeOps.setAttribute(vnode.elm, i, '');\n }\n }\n\n function addVnodes(parentElm, before, vnodes, startIdx, endIdx, insertedVnodeQueue) {\n for (; startIdx <= endIdx; ++startIdx) {\n nodeOps.insertBefore(parentElm, createElm(vnodes[startIdx], insertedVnodeQueue), before);\n }\n }\n\n function invokeDestroyHook(vnode) {\n var i = void 0,\n j = void 0;\n var data = vnode.data;\n if (isDef(data)) {\n if (isDef(i = data.hook) && isDef(i = i.destroy)) i(vnode);\n for (i = 0; i < cbs.destroy.length; ++i) {\n cbs.destroy[i](vnode);\n }\n }\n if (isDef(i = vnode.child) && !data.keepAlive) {\n invokeDestroyHook(i._vnode);\n }\n if (isDef(i = vnode.children)) {\n for (j = 0; j < vnode.children.length; ++j) {\n invokeDestroyHook(vnode.children[j]);\n }\n }\n }\n\n function removeVnodes(parentElm, vnodes, startIdx, endIdx) {\n for (; startIdx <= endIdx; ++startIdx) {\n var ch = vnodes[startIdx];\n if (isDef(ch)) {\n if (isDef(ch.tag)) {\n invokeDestroyHook(ch);\n removeAndInvokeRemoveHook(ch);\n } else {\n // Text node\n nodeOps.removeChild(parentElm, ch.elm);\n }\n }\n }\n }\n\n function removeAndInvokeRemoveHook(vnode, rm) {\n if (rm || isDef(vnode.data)) {\n var listeners = cbs.remove.length + 1;\n if (!rm) {\n // directly removing\n rm = createRmCb(vnode.elm, listeners);\n } else {\n // we have a recursively passed down rm callback\n // increase the listeners count\n rm.listeners += listeners;\n }\n // recursively invoke hooks on child component root node\n if (isDef(i = vnode.child) && isDef(i = i._vnode) && isDef(i.data)) {\n removeAndInvokeRemoveHook(i, rm);\n }\n for (i = 0; i < cbs.remove.length; ++i) {\n cbs.remove[i](vnode, rm);\n }\n if (isDef(i = vnode.data.hook) && isDef(i = i.remove)) {\n i(vnode, rm);\n } else {\n rm();\n }\n } else {\n removeElement(vnode.elm);\n }\n }\n\n function updateChildren(parentElm, oldCh, newCh, insertedVnodeQueue) {\n var oldStartIdx = 0;\n var newStartIdx = 0;\n var oldEndIdx = oldCh.length - 1;\n var oldStartVnode = oldCh[0];\n var oldEndVnode = oldCh[oldEndIdx];\n var newEndIdx = newCh.length - 1;\n var newStartVnode = newCh[0];\n var newEndVnode = newCh[newEndIdx];\n var oldKeyToIdx = void 0,\n idxInOld = void 0,\n elmToMove = void 0,\n before = void 0;\n\n while (oldStartIdx <= oldEndIdx && newStartIdx <= newEndIdx) {\n if (isUndef(oldStartVnode)) {\n oldStartVnode = oldCh[++oldStartIdx]; // Vnode has been moved left\n } else if (isUndef(oldEndVnode)) {\n oldEndVnode = oldCh[--oldEndIdx];\n } else if (sameVnode(oldStartVnode, newStartVnode)) {\n patchVnode(oldStartVnode, newStartVnode, insertedVnodeQueue);\n oldStartVnode = oldCh[++oldStartIdx];\n newStartVnode = newCh[++newStartIdx];\n } else if (sameVnode(oldEndVnode, newEndVnode)) {\n patchVnode(oldEndVnode, newEndVnode, insertedVnodeQueue);\n oldEndVnode = oldCh[--oldEndIdx];\n newEndVnode = newCh[--newEndIdx];\n } else if (sameVnode(oldStartVnode, newEndVnode)) {\n // Vnode moved right\n patchVnode(oldStartVnode, newEndVnode, insertedVnodeQueue);\n nodeOps.insertBefore(parentElm, oldStartVnode.elm, nodeOps.nextSibling(oldEndVnode.elm));\n oldStartVnode = oldCh[++oldStartIdx];\n newEndVnode = newCh[--newEndIdx];\n } else if (sameVnode(oldEndVnode, newStartVnode)) {\n // Vnode moved left\n patchVnode(oldEndVnode, newStartVnode, insertedVnodeQueue);\n nodeOps.insertBefore(parentElm, oldEndVnode.elm, oldStartVnode.elm);\n oldEndVnode = oldCh[--oldEndIdx];\n newStartVnode = newCh[++newStartIdx];\n } else {\n if (isUndef(oldKeyToIdx)) oldKeyToIdx = createKeyToOldIdx(oldCh, oldStartIdx, oldEndIdx);\n idxInOld = oldKeyToIdx[newStartVnode.key];\n if (isUndef(idxInOld)) {\n // New element\n nodeOps.insertBefore(parentElm, createElm(newStartVnode, insertedVnodeQueue), oldStartVnode.elm);\n newStartVnode = newCh[++newStartIdx];\n } else {\n elmToMove = oldCh[idxInOld];\n /* istanbul ignore if */\n if (\"development\" !== 'production' && !elmToMove) {\n warn('It seems there are duplicate keys that is causing an update error. ' + 'Make sure each v-for item has a unique key.');\n }\n if (elmToMove.tag !== newStartVnode.tag) {\n // same key but different element. treat as new element\n nodeOps.insertBefore(parentElm, createElm(newStartVnode, insertedVnodeQueue), oldStartVnode.elm);\n newStartVnode = newCh[++newStartIdx];\n } else {\n patchVnode(elmToMove, newStartVnode, insertedVnodeQueue);\n oldCh[idxInOld] = undefined;\n nodeOps.insertBefore(parentElm, newStartVnode.elm, oldStartVnode.elm);\n newStartVnode = newCh[++newStartIdx];\n }\n }\n }\n }\n if (oldStartIdx > oldEndIdx) {\n before = isUndef(newCh[newEndIdx + 1]) ? null : newCh[newEndIdx + 1].elm;\n addVnodes(parentElm, before, newCh, newStartIdx, newEndIdx, insertedVnodeQueue);\n } else if (newStartIdx > newEndIdx) {\n removeVnodes(parentElm, oldCh, oldStartIdx, oldEndIdx);\n }\n }\n\n function patchVnode(oldVnode, vnode, insertedVnodeQueue) {\n if (oldVnode === vnode) return;\n var i = void 0,\n hook = void 0;\n var hasData = isDef(i = vnode.data);\n if (hasData) {\n // ensure the oldVnode also has data during patch\n oldVnode.data = oldVnode.data || emptyData;\n if (isDef(hook = i.hook) && isDef(i = hook.prepatch)) {\n i(oldVnode, vnode);\n }\n }\n var elm = vnode.elm = oldVnode.elm;\n var oldCh = oldVnode.children;\n var ch = vnode.children;\n if (hasData) {\n for (i = 0; i < cbs.update.length; ++i) {\n cbs.update[i](oldVnode, vnode);\n }if (isDef(hook) && isDef(i = hook.update)) i(oldVnode, vnode);\n }\n if (isUndef(vnode.text)) {\n if (isDef(oldCh) && isDef(ch)) {\n if (oldCh !== ch) updateChildren(elm, oldCh, ch, insertedVnodeQueue);\n } else if (isDef(ch)) {\n if (isDef(oldVnode.text)) nodeOps.setTextContent(elm, '');\n addVnodes(elm, null, ch, 0, ch.length - 1, insertedVnodeQueue);\n } else if (isDef(oldCh)) {\n removeVnodes(elm, oldCh, 0, oldCh.length - 1);\n } else if (isDef(oldVnode.text)) {\n nodeOps.setTextContent(elm, '');\n }\n } else if (oldVnode.text !== vnode.text) {\n nodeOps.setTextContent(elm, vnode.text);\n }\n if (hasData) {\n for (i = 0; i < cbs.postpatch.length; ++i) {\n cbs.postpatch[i](oldVnode, vnode);\n }if (isDef(hook) && isDef(i = hook.postpatch)) i(oldVnode, vnode);\n }\n }\n\n function invokeInsertHook(queue) {\n for (var _i2 = 0; _i2 < queue.length; ++_i2) {\n queue[_i2].data.hook.insert(queue[_i2]);\n }\n }\n\n function hydrate(elm, vnode, insertedVnodeQueue) {\n if (\"development\" !== 'production') {\n if (!assertNodeMatch(elm, vnode)) {\n return false;\n }\n }\n vnode.elm = elm;\n var tag = vnode.tag;\n var data = vnode.data;\n var children = vnode.children;\n\n if (isDef(data)) {\n if (isDef(i = data.hook) && isDef(i = i.init)) i(vnode, true /* hydrating */);\n if (isDef(i = vnode.child)) {\n // child component. it should have hydrated its own tree.\n invokeCreateHooks(vnode, insertedVnodeQueue);\n return true;\n }\n }\n if (isDef(tag)) {\n if (isDef(children)) {\n var childNodes = nodeOps.childNodes(elm);\n for (var _i3 = 0; _i3 < children.length; _i3++) {\n var success = hydrate(childNodes[_i3], children[_i3], insertedVnodeQueue);\n if (!success) {\n return false;\n }\n }\n }\n if (isDef(data)) {\n invokeCreateHooks(vnode, insertedVnodeQueue);\n }\n }\n return true;\n }\n\n function assertNodeMatch(node, vnode) {\n if (vnode.tag) {\n if (vnode.tag.indexOf('vue-component') === 0) {\n return true;\n } else {\n var childNodes = nodeOps.childNodes(node);\n return vnode.tag === nodeOps.tagName(node).toLowerCase() && (vnode.children ? vnode.children.length === childNodes.length : childNodes.length === 0);\n }\n } else {\n return _toString(vnode.text) === node.data;\n }\n }\n\n return function patch(oldVnode, vnode, hydrating) {\n var elm = void 0,\n parent = void 0;\n var insertedVnodeQueue = [];\n\n if (!oldVnode) {\n // empty mount, create new root element\n createElm(vnode, insertedVnodeQueue);\n } else {\n var isRealElement = isDef(oldVnode.nodeType);\n if (!isRealElement && sameVnode(oldVnode, vnode)) {\n patchVnode(oldVnode, vnode, insertedVnodeQueue);\n } else {\n if (isRealElement) {\n // mounting to a real element\n // check if this is server-rendered content and if we can perform\n // a successful hydration.\n if (oldVnode.hasAttribute('server-rendered')) {\n oldVnode.removeAttribute('server-rendered');\n hydrating = true;\n }\n if (hydrating) {\n if (hydrate(oldVnode, vnode, insertedVnodeQueue)) {\n invokeInsertHook(insertedVnodeQueue);\n return oldVnode;\n } else if (\"development\" !== 'production') {\n warn('The client-side rendered virtual DOM tree is not matching ' + 'server-rendered content. Bailing hydration and performing ' + 'full client-side render.');\n }\n }\n // either not server-rendered, or hydration failed.\n // create an empty node and replace it\n oldVnode = emptyNodeAt(oldVnode);\n }\n elm = oldVnode.elm;\n parent = nodeOps.parentNode(elm);\n\n createElm(vnode, insertedVnodeQueue);\n\n if (parent !== null) {\n nodeOps.insertBefore(parent, vnode.elm, nodeOps.nextSibling(elm));\n removeVnodes(parent, [oldVnode], 0, 0);\n } else if (isDef(oldVnode.tag)) {\n invokeDestroyHook(oldVnode);\n }\n }\n }\n\n invokeInsertHook(insertedVnodeQueue);\n return vnode.elm;\n };\n }\n\n var directives = {\n create: function bindDirectives(oldVnode, vnode) {\n applyDirectives(oldVnode, vnode, 'bind');\n },\n update: function updateDirectives(oldVnode, vnode) {\n applyDirectives(oldVnode, vnode, 'update');\n },\n postpatch: function postupdateDirectives(oldVnode, vnode) {\n applyDirectives(oldVnode, vnode, 'postupdate');\n },\n destroy: function unbindDirectives(vnode) {\n applyDirectives(vnode, vnode, 'unbind');\n }\n };\n\n function applyDirectives(oldVnode, vnode, hook) {\n var dirs = vnode.data.directives;\n if (dirs) {\n var oldDirs = oldVnode.data.directives;\n var isUpdate = hook === 'update';\n for (var i = 0; i < dirs.length; i++) {\n var dir = dirs[i];\n var def = resolveAsset(vnode.context.$options, 'directives', dir.name, true);\n var fn = def && def[hook];\n if (fn) {\n // only call update if value has changed\n if (isUpdate && oldDirs) {\n var oldValue = dir.oldValue = oldDirs[i].value;\n if (oldValue === dir.value) {\n continue;\n }\n }\n fn(vnode.elm, dir, vnode, oldVnode);\n }\n }\n }\n }\n\n var ref = {\n create: function create(_, vnode) {\n registerRef(vnode);\n },\n update: function update(oldVnode, vnode) {\n if (oldVnode.data.ref !== vnode.data.ref) {\n registerRef(oldVnode, true);\n registerRef(vnode);\n }\n },\n destroy: function destroy(vnode) {\n registerRef(vnode, true);\n }\n };\n\n function registerRef(vnode, isRemoval) {\n var key = vnode.data.ref;\n if (!key) return;\n\n var vm = vnode.context;\n var ref = vnode.child || vnode.elm;\n var refs = vm.$refs;\n if (isRemoval) {\n if (Array.isArray(refs[key])) {\n remove(refs[key], ref);\n } else if (refs[key] === ref) {\n refs[key] = undefined;\n }\n } else {\n if (vnode.data.refInFor) {\n if (Array.isArray(refs[key])) {\n refs[key].push(ref);\n } else {\n refs[key] = [ref];\n }\n } else {\n refs[key] = ref;\n }\n }\n }\n\n var baseModules = [ref, directives];\n\n function updateAttrs(oldVnode, vnode) {\n if (!oldVnode.data.attrs && !vnode.data.attrs) {\n return;\n }\n var key = void 0,\n cur = void 0,\n old = void 0;\n var elm = vnode.elm;\n var oldAttrs = oldVnode.data.attrs || {};\n var attrs = vnode.data.attrs || {};\n\n for (key in attrs) {\n cur = attrs[key];\n old = oldAttrs[key];\n if (old !== cur) {\n setAttr(elm, key, cur);\n }\n }\n for (key in oldAttrs) {\n if (attrs[key] == null) {\n if (isXlink(key)) {\n elm.removeAttributeNS(xlinkNS, getXlinkProp(key));\n } else if (!isEnumeratedAttr(key)) {\n elm.removeAttribute(key);\n }\n }\n }\n }\n\n function setAttr(el, key, value) {\n if (isBooleanAttr(key)) {\n // set attribute for blank value\n // e.g. <option disabled>Select one</option>\n if (isFalsyAttrValue(value)) {\n el.removeAttribute(key);\n } else {\n el.setAttribute(key, key);\n }\n } else if (isEnumeratedAttr(key)) {\n el.setAttribute(key, isFalsyAttrValue(value) || value === 'false' ? 'false' : 'true');\n } else if (isXlink(key)) {\n if (isFalsyAttrValue(value)) {\n el.removeAttributeNS(xlinkNS, getXlinkProp(key));\n } else {\n el.setAttributeNS(xlinkNS, key, value);\n }\n } else {\n if (isFalsyAttrValue(value)) {\n el.removeAttribute(key);\n } else {\n el.setAttribute(key, value);\n }\n }\n }\n\n var attrs = {\n create: function create(_, vnode) {\n var attrs = vnode.data.staticAttrs;\n if (attrs) {\n for (var key in attrs) {\n setAttr(vnode.elm, key, attrs[key]);\n }\n }\n updateAttrs(_, vnode);\n },\n update: updateAttrs\n };\n\n function updateClass(oldVnode, vnode) {\n var el = vnode.elm;\n var data = vnode.data;\n if (!data.staticClass && !data.class) {\n return;\n }\n\n var cls = genClassForVnode(vnode);\n\n // handle transition classes\n var transitionClass = el._transitionClasses;\n if (transitionClass) {\n cls = concat(cls, stringifyClass(transitionClass));\n }\n\n // set the class\n if (cls !== el._prevClass) {\n el.setAttribute('class', cls);\n el._prevClass = cls;\n }\n }\n\n var klass = {\n create: updateClass,\n update: updateClass\n };\n\n function updateDOMListeners(oldVnode, vnode) {\n if (!oldVnode.data.on && !vnode.data.on) {\n return;\n }\n var on = vnode.data.on || {};\n var oldOn = oldVnode.data.on || {};\n var add = vnode.elm._v_add || (vnode.elm._v_add = function (event, handler, capture) {\n vnode.elm.addEventListener(event, handler, capture);\n });\n var remove = vnode.elm._v_remove || (vnode.elm._v_remove = function (event, handler) {\n vnode.elm.removeEventListener(event, handler);\n });\n updateListeners(on, oldOn, add, remove);\n }\n\n var events = {\n create: updateDOMListeners,\n update: updateDOMListeners\n };\n\n function updateProps(oldVnode, vnode) {\n if (!oldVnode.data.props && !vnode.data.props) {\n return;\n }\n var key = void 0,\n cur = void 0;\n var elm = vnode.elm;\n var oldProps = oldVnode.data.props || {};\n var props = vnode.data.props || {};\n\n for (key in oldProps) {\n if (props[key] == null) {\n elm[key] = undefined;\n }\n }\n for (key in props) {\n cur = props[key];\n if (key === 'value') {\n // store value as _value as well since\n // non-string values will be stringified\n elm._value = cur;\n // avoid resetting cursor position when value is the same\n if (elm.value != cur) {\n // eslint-disable-line\n elm.value = cur;\n }\n } else {\n elm[key] = cur;\n }\n }\n }\n\n var props = {\n create: updateProps,\n update: updateProps\n };\n\n var prefixes = ['Webkit', 'Moz', 'ms'];\n\n var testEl = void 0;\n var normalize = cached(function (prop) {\n testEl = testEl || document.createElement('div');\n prop = camelize(prop);\n if (prop !== 'filter' && prop in testEl.style) {\n return prop;\n }\n var upper = prop.charAt(0).toUpperCase() + prop.slice(1);\n for (var i = 0; i < prefixes.length; i++) {\n var prefixed = prefixes[i] + upper;\n if (prefixed in testEl.style) {\n return prefixed;\n }\n }\n });\n\n function updateStyle(oldVnode, vnode) {\n if (!oldVnode.data.style && !vnode.data.style) {\n return;\n }\n var cur = void 0,\n name = void 0;\n var elm = vnode.elm;\n var oldStyle = oldVnode.data.style || {};\n var style = vnode.data.style || {};\n\n // handle array syntax\n if (Array.isArray(style)) {\n style = vnode.data.style = toObject(style);\n }\n\n for (name in oldStyle) {\n if (!style[name]) {\n elm.style[normalize(name)] = '';\n }\n }\n for (name in style) {\n cur = style[name];\n if (cur !== oldStyle[name]) {\n // ie9 setting to null has no effect, must use empty string\n elm.style[normalize(name)] = cur || '';\n }\n }\n // clone the style for future updates,\n // in case the user mutates the style object in-place.\n vnode.data.style = extend({}, style);\n }\n\n var style = {\n create: updateStyle,\n update: updateStyle\n };\n\n /**\n * Add class with compatibility for SVG since classList is not supported on\n * SVG elements in IE\n */\n function addClass(el, cls) {\n /* istanbul ignore else */\n if (el.classList) {\n if (cls.indexOf(' ') > -1) {\n cls.split(/\\s+/).forEach(function (c) {\n return el.classList.add(c);\n });\n } else {\n el.classList.add(cls);\n }\n } else {\n var cur = ' ' + el.getAttribute('class') + ' ';\n if (cur.indexOf(' ' + cls + ' ') < 0) {\n el.setAttribute('class', (cur + cls).trim());\n }\n }\n }\n\n /**\n * Remove class with compatibility for SVG since classList is not supported on\n * SVG elements in IE\n */\n function removeClass(el, cls) {\n /* istanbul ignore else */\n if (el.classList) {\n if (cls.indexOf(' ') > -1) {\n cls.split(/\\s+/).forEach(function (c) {\n return el.classList.remove(c);\n });\n } else {\n el.classList.remove(cls);\n }\n } else {\n var cur = ' ' + el.getAttribute('class') + ' ';\n var tar = ' ' + cls + ' ';\n while (cur.indexOf(tar) >= 0) {\n cur = cur.replace(tar, ' ');\n }\n el.setAttribute('class', cur.trim());\n }\n }\n\n var hasTransition = inBrowser && !isIE9;\n var TRANSITION = 'transition';\n var ANIMATION = 'animation';\n\n // Transition property/event sniffing\n var transitionProp = 'transition';\n var transitionEndEvent = 'transitionend';\n var animationProp = 'animation';\n var animationEndEvent = 'animationend';\n if (hasTransition) {\n /* istanbul ignore if */\n if (window.ontransitionend === undefined && window.onwebkittransitionend !== undefined) {\n transitionProp = 'WebkitTransition';\n transitionEndEvent = 'webkitTransitionEnd';\n }\n if (window.onanimationend === undefined && window.onwebkitanimationend !== undefined) {\n animationProp = 'WebkitAnimation';\n animationEndEvent = 'webkitAnimationEnd';\n }\n }\n\n var raf = inBrowser && window.requestAnimationFrame || setTimeout;\n function nextFrame(fn) {\n raf(function () {\n raf(fn);\n });\n }\n\n function enter(vnode) {\n var el = vnode.elm;\n var vm = vnode.context;\n // call leave callback now\n if (el._leaveCb) {\n el._leaveCb.cancelled = true;\n el._leaveCb();\n }\n\n var data = vnode.data.transition;\n if (!data) {\n return;\n }\n\n var _resolveTransition = resolveTransition(data, vnode.context);\n\n var css = _resolveTransition.css;\n var appear = _resolveTransition.appear;\n var enterClass = _resolveTransition.enterClass;\n var enterActiveClass = _resolveTransition.enterActiveClass;\n var appearClass = _resolveTransition.appearClass;\n var appearActiveClass = _resolveTransition.appearActiveClass;\n var beforeEnter = _resolveTransition.beforeEnter;\n var onEnter = _resolveTransition.onEnter;\n var afterEnter = _resolveTransition.afterEnter;\n var enterCancelled = _resolveTransition.enterCancelled;\n var beforeAppear = _resolveTransition.beforeAppear;\n var onAppear = _resolveTransition.onAppear;\n var afterAppear = _resolveTransition.afterAppear;\n var appearCancelled = _resolveTransition.appearCancelled;\n\n\n var isAppear = !vnode.context.$root._isMounted;\n if (isAppear && !appear && appear !== '') {\n return;\n }\n\n var startClass = isAppear ? appearClass : enterClass;\n var activeClass = isAppear ? appearActiveClass : enterActiveClass;\n var beforeEnterHook = isAppear ? beforeAppear || beforeEnter : beforeEnter;\n var enterHook = isAppear ? onAppear || onEnter : onEnter;\n var afterEnterHook = isAppear ? afterAppear || afterEnter : afterEnter;\n var enterCancelledHook = isAppear ? appearCancelled || enterCancelled : enterCancelled;\n\n var expectsCSS = css !== false;\n var userWantsControl = enterHook && enterHook.length > 2;\n var cb = el._enterCb = once(function () {\n if (expectsCSS) {\n removeTransitionClass(el, activeClass);\n }\n if (cb.cancelled) {\n if (expectsCSS) {\n removeTransitionClass(el, startClass);\n }\n enterCancelledHook && enterCancelledHook(el, vm);\n } else {\n afterEnterHook && afterEnterHook(el, vm);\n }\n el._enterCb = null;\n });\n\n beforeEnterHook && beforeEnterHook(el, vm);\n if (expectsCSS) {\n addTransitionClass(el, startClass);\n addTransitionClass(el, activeClass);\n nextFrame(function () {\n removeTransitionClass(el, startClass);\n if (!cb.cancelled && !userWantsControl) {\n whenTransitionEnds(el, cb);\n }\n });\n }\n enterHook && enterHook(el, vm, cb);\n if (!expectsCSS && !userWantsControl) {\n cb();\n }\n }\n\n function leave(vnode, rm) {\n var el = vnode.elm;\n var vm = vnode.context;\n // call enter callback now\n if (el._enterCb) {\n el._enterCb.cancelled = true;\n el._enterCb();\n }\n var data = vnode.data.transition;\n if (!data) {\n return rm();\n }\n\n var _resolveTransition2 = resolveTransition(data, vnode.context);\n\n var css = _resolveTransition2.css;\n var leaveClass = _resolveTransition2.leaveClass;\n var leaveActiveClass = _resolveTransition2.leaveActiveClass;\n var beforeLeave = _resolveTransition2.beforeLeave;\n var onLeave = _resolveTransition2.onLeave;\n var afterLeave = _resolveTransition2.afterLeave;\n var leaveCancelled = _resolveTransition2.leaveCancelled;\n var delayLeave = _resolveTransition2.delayLeave;\n\n\n var expectsCSS = css !== false;\n var userWantsControl = onLeave && onLeave.length > 2;\n var cb = el._leaveCb = once(function () {\n if (expectsCSS) {\n removeTransitionClass(el, leaveActiveClass);\n }\n if (cb.cancelled) {\n if (expectsCSS) {\n removeTransitionClass(el, leaveClass);\n }\n leaveCancelled && leaveCancelled(el, vm);\n } else {\n rm();\n afterLeave && afterLeave(el, vm);\n }\n el._leaveCb = null;\n });\n\n if (delayLeave) {\n delayLeave(performLeave);\n } else {\n performLeave();\n }\n\n function performLeave() {\n beforeLeave && beforeLeave(el, vm);\n if (expectsCSS) {\n addTransitionClass(el, leaveClass);\n addTransitionClass(el, leaveActiveClass);\n nextFrame(function () {\n removeTransitionClass(el, leaveClass);\n if (!cb.cancelled && !userWantsControl) {\n whenTransitionEnds(el, cb);\n }\n });\n }\n onLeave && onLeave(el, vm, cb);\n if (!expectsCSS && !userWantsControl) {\n cb();\n }\n }\n }\n\n function resolveTransition(id, context) {\n var def = void 0;\n if (id && typeof id === 'string') {\n def = resolveAsset(context.$options, 'transitions', id);\n return def ? ensureTransitionClasses(def.name || id, def) : autoCssTransition(id);\n } else if (typeof id === 'object') {\n // inline transition object\n if (id.name) {\n def = resolveAsset(context.$options, 'transitions', id.name);\n }\n def = def ? extend(ensureTransitionClasses(id.name, def), id) : ensureTransitionClasses(id.name, id);\n // extra hooks to be merged\n // added by <transition-control>\n if (id.hooks) {\n for (var key in id.hooks) {\n mergeHook$2(def, key, id.hooks[key]);\n }\n }\n return def;\n } else {\n return autoCssTransition('v');\n }\n }\n\n function ensureTransitionClasses(name, def) {\n name = name || 'v';\n var res = {};\n if (def.css !== false) {\n extend(res, autoCssTransition(name));\n }\n extend(res, def);\n return res;\n }\n\n var autoCssTransition = cached(function (name) {\n return {\n enterClass: name + '-enter',\n leaveClass: name + '-leave',\n appearClass: name + '-enter',\n enterActiveClass: name + '-enter-active',\n leaveActiveClass: name + '-leave-active',\n appearActiveClass: name + '-enter-active'\n };\n });\n\n function mergeHook$2(def, key, hook) {\n var oldHook = def[key];\n if (oldHook) {\n def[key] = function () {\n oldHook.apply(this, arguments);\n hook();\n };\n } else {\n def[key] = hook;\n }\n }\n\n function addTransitionClass(el, cls) {\n (el._transitionClasses || (el._transitionClasses = [])).push(cls);\n addClass(el, cls);\n }\n\n function removeTransitionClass(el, cls) {\n remove(el._transitionClasses, cls);\n removeClass(el, cls);\n }\n\n function whenTransitionEnds(el, cb) {\n var _getTransitionInfo = getTransitionInfo(el);\n\n var type = _getTransitionInfo.type;\n var timeout = _getTransitionInfo.timeout;\n var propCount = _getTransitionInfo.propCount;\n\n if (!type) return cb();\n var event = type === TRANSITION ? transitionEndEvent : animationEndEvent;\n var ended = 0;\n var end = function end() {\n el.removeEventListener(event, onEnd);\n cb();\n };\n var onEnd = function onEnd() {\n if (++ended >= propCount) {\n end();\n }\n };\n setTimeout(function () {\n if (ended < propCount) {\n end();\n }\n }, timeout + 1);\n el.addEventListener(event, onEnd);\n }\n\n function getTransitionInfo(el) {\n var styles = window.getComputedStyle(el);\n // 1. determine the maximum duration (timeout)\n var transitioneDelays = styles[transitionProp + 'Delay'].split(', ');\n var transitionDurations = styles[transitionProp + 'Duration'].split(', ');\n var animationDelays = styles[animationProp + 'Delay'].split(', ');\n var animationDurations = styles[animationProp + 'Duration'].split(', ');\n var transitionTimeout = getTimeout(transitioneDelays, transitionDurations);\n var animationTimeout = getTimeout(animationDelays, animationDurations);\n var timeout = Math.max(transitionTimeout, animationTimeout);\n var type = timeout > 0 ? transitionTimeout > animationTimeout ? TRANSITION : ANIMATION : null;\n var propCount = type ? type === TRANSITION ? transitionDurations.length : animationDurations.length : 0;\n return {\n type: type,\n timeout: timeout,\n propCount: propCount\n };\n }\n\n function getTimeout(delays, durations) {\n return Math.max.apply(null, durations.map(function (d, i) {\n return toMs(d) + toMs(delays[i]);\n }));\n }\n\n function toMs(s) {\n return Number(s.slice(0, -1)) * 1000;\n }\n\n function once(fn) {\n var called = false;\n return function () {\n if (!called) {\n called = true;\n fn();\n }\n };\n }\n\n function shouldSkipTransition(vnode) {\n return !!(\n // if this is a component root node and the compoennt's\n // parent container node also has transition, skip.\n vnode.parent && vnode.parent.data.transition ||\n // if the element has v-show, let the runtime directive\n // call the hooks instead\n vnode.data.show);\n }\n\n var transition = hasTransition ? {\n create: function create(_, vnode) {\n if (!shouldSkipTransition(vnode)) {\n enter(vnode);\n }\n },\n remove: function remove(vnode, rm) {\n if (!shouldSkipTransition(vnode)) {\n leave(vnode, rm);\n } else {\n rm();\n }\n }\n } : {};\n\n var platformModules = [attrs, klass, events, props, style, transition];\n\n // the directive module should be applied last, after all\n // built-in modules have been applied.\n var modules = platformModules.concat(baseModules);\n\n var patch = createPatchFunction({ nodeOps: nodeOps, modules: modules });\n\n var modelableTagRE = /^input|select|textarea|vue-component-[0-9]+(-[0-9a-zA-Z_\\-]*)?$/;\n\n /* istanbul ignore if */\n if (isIE9) {\n // http://www.matts411.com/post/internet-explorer-9-oninput/\n document.addEventListener('selectionchange', function () {\n var el = document.activeElement;\n if (el && el.vmodel) {\n trigger(el, 'input');\n }\n });\n }\n\n var model = {\n bind: function bind(el, binding, vnode) {\n if (\"development\" !== 'production') {\n if (!modelableTagRE.test(vnode.tag)) {\n warn('v-model is not supported on element type: <' + vnode.tag + '>. ' + 'If you are working with contenteditable, it\\'s recommended to ' + 'wrap a library dedicated for that purpose inside a custom component.', vnode.context);\n }\n }\n if (vnode.tag === 'select') {\n setSelected(el, binding.value);\n } else {\n if (!isAndroid) {\n el.addEventListener('compositionstart', onCompositionStart);\n el.addEventListener('compositionend', onCompositionEnd);\n }\n /* istanbul ignore if */\n if (isIE9) {\n el.vmodel = true;\n }\n }\n },\n postupdate: function postupdate(el, binding, vnode) {\n var val = binding.value;\n if (vnode.tag === 'select') {\n setSelected(el, val);\n // in case the options rendered by v-for have changed,\n // it's possible that the value is out-of-sync with the rendered options.\n // detect such cases and filter out values that no longer has a matchig\n // option in the DOM.\n var needReset = el.multiple ? val.some(function (v) {\n return hasNoMatchingOption(v, el.options);\n }) : hasNoMatchingOption(val, el.options);\n if (needReset) {\n trigger(el, 'change');\n }\n }\n }\n };\n\n function setSelected(el, value) {\n var isMultiple = el.multiple;\n if (!isMultiple) {\n el.selectedIndex = -1;\n }\n for (var i = 0, l = el.options.length; i < l; i++) {\n var option = el.options[i];\n if (isMultiple) {\n option.selected = value.indexOf(getValue(option)) > -1;\n } else {\n if (getValue(option) === value) {\n el.selectedIndex = i;\n break;\n }\n }\n }\n }\n\n function hasNoMatchingOption(value, options) {\n for (var i = 0, l = options.length; i < l; i++) {\n if (getValue(options[i]) === value) {\n return false;\n }\n }\n return true;\n }\n\n function getValue(option) {\n return '_value' in option ? option._value : option.value || option.text;\n }\n\n function onCompositionStart(e) {\n e.target.composing = true;\n }\n\n function onCompositionEnd(e) {\n e.target.composing = false;\n trigger(e.target, 'input');\n }\n\n function trigger(el, type) {\n var e = document.createEvent('HTMLEvents');\n e.initEvent(type, true, true);\n el.dispatchEvent(e);\n }\n\n var show = {\n bind: function bind(el, _ref, vnode) {\n var value = _ref.value;\n\n var transition = getTransition(vnode);\n if (value && transition && transition.appear && !isIE9) {\n enter(vnode);\n }\n el.style.display = value ? '' : 'none';\n },\n update: function update(el, _ref2, vnode) {\n var value = _ref2.value;\n\n var transition = getTransition(vnode);\n if (transition && !isIE9) {\n if (value) {\n enter(vnode);\n el.style.display = '';\n } else {\n leave(vnode, function () {\n el.style.display = 'none';\n });\n }\n } else {\n el.style.display = value ? '' : 'none';\n }\n }\n };\n\n function getTransition(vnode) {\n var parent = vnode.parent;\n return parent && parent.data.transition != null ? parent.data.transition : vnode.data.transition;\n }\n\n var platformDirectives = {\n model: model,\n show: show\n };\n\n var TransitionControl = {\n name: 'transition-control',\n _abstract: true,\n props: {\n child: Object,\n mode: {\n validator: function validator(val) {\n /* istanbul ignore if */\n if (val && val !== 'out-in' && val !== 'in-out') {\n warn('transition-mode must be either \"out-in\" or \"in-out\".');\n return false;\n }\n return true;\n }\n }\n },\n render: function render() {\n var _this = this;\n\n var oldChild = this._vnode;\n var newChild = this.child;\n if (oldChild && oldChild.data && (oldChild.tag !== newChild.tag || oldChild.key !== newChild.key)) {\n if (this.mode === 'out-in') {\n // return empty node\n // and queue an update when the leave finishes\n return addHook(oldChild, {\n afterLeave: function afterLeave() {\n _this.$forceUpdate();\n }\n });\n } else if (this.mode === 'in-out') {\n (function () {\n var delayedLeave = void 0;\n var performLeave = function performLeave() {\n delayedLeave();\n };\n addHook(newChild, {\n afterEnter: performLeave,\n enterCancelled: performLeave\n });\n addHook(oldChild, {\n delayLeave: function delayLeave(leave) {\n delayedLeave = leave;\n }\n });\n })();\n }\n }\n return newChild;\n }\n };\n\n function addHook(vnode, hooks) {\n /* istanbul ignore if */\n if (!vnode.data || !vnode.data.transition) {\n return;\n }\n var trans = vnode.data.transition;\n /* istanbul ignore else */\n if (typeof trans === 'string') {\n trans = vnode.data.transition = { name: trans };\n } else if (typeof trans !== 'object') {\n trans = vnode.data.transition = { name: 'v' };\n }\n trans.hooks = hooks;\n }\n\n var platformComponents = {\n TransitionControl: TransitionControl\n };\n\n // install platform specific utils\n Vue.config.isUnknownElement = isUnknownElement;\n Vue.config.isReservedTag = isReservedTag;\n Vue.config.getTagNamespace = getTagNamespace;\n Vue.config.mustUseProp = mustUseProp;\n\n // install platform runtime directives & components\n extend(Vue.options.directives, platformDirectives);\n extend(Vue.options.components, platformComponents);\n\n // install platform patch function\n Vue.prototype.__patch__ = config._isServer ? noop : patch;\n\n // wrap mount\n Vue.prototype.$mount = function (el, hydrating) {\n el = el && !config._isServer ? query(el) : undefined;\n return this._mount(el, hydrating);\n };\n\n // devtools global hook\n /* istanbul ignore next */\n setTimeout(function () {\n if (config.devtools) {\n if (devtools) {\n devtools.emit('init', Vue);\n } else if (\"development\" !== 'production' && inBrowser && /Chrome\\/\\d+/.test(window.navigator.userAgent)) {\n console.log('Download the Vue Devtools for a better development experience:\\n' + 'https://github.com/vuejs/vue-devtools');\n }\n }\n }, 0);\n\n var decoder = document.createElement('div');\n\n function decodeHTML(html) {\n decoder.innerHTML = html;\n return decoder.textContent;\n }\n\n // Regular Expressions for parsing tags and attributes\n var singleAttrIdentifier = /([^\\s\"'<>\\/=]+)/;\n var singleAttrAssign = /=/;\n var singleAttrAssigns = [singleAttrAssign];\n var singleAttrValues = [\n // attr value double quotes\n /\"([^\"]*)\"+/.source,\n // attr value, single quotes\n /'([^']*)'+/.source,\n // attr value, no quotes\n /([^\\s\"'=<>`]+)/.source];\n // could use https://www.w3.org/TR/1999/REC-xml-names-19990114/#NT-QName\n // but for Vue templates we can enforce a simple charset\n var ncname = '[a-zA-Z_][\\\\w\\\\-\\\\.]*';\n var qnameCapture = '((?:' + ncname + '\\\\:)?' + ncname + ')';\n var startTagOpen = new RegExp('^<' + qnameCapture);\n var startTagClose = /^\\s*(\\/?)>/;\n var endTag = new RegExp('^<\\\\/' + qnameCapture + '[^>]*>');\n var doctype = /^<!DOCTYPE [^>]+>/i;\n\n var IS_REGEX_CAPTURING_BROKEN = false;\n 'x'.replace(/x(.)?/g, function (m, g) {\n IS_REGEX_CAPTURING_BROKEN = g === '';\n });\n\n // Special Elements (can contain anything)\n var isSpecialTag = makeMap('script,style', true);\n\n var reCache = {};\n\n function attrForHandler(handler) {\n var pattern = singleAttrIdentifier.source + '(?:\\\\s*(' + joinSingleAttrAssigns(handler) + ')' + '\\\\s*(?:' + singleAttrValues.join('|') + '))?';\n return new RegExp('^\\\\s*' + pattern);\n }\n\n function joinSingleAttrAssigns(handler) {\n return singleAttrAssigns.map(function (assign) {\n return '(?:' + assign.source + ')';\n }).join('|');\n }\n\n function parseHTML(html, handler) {\n var stack = [];\n var attribute = attrForHandler(handler);\n var expectHTML = handler.expectHTML;\n var isUnaryTag = handler.isUnaryTag || no;\n var index = 0;\n var last = void 0,\n lastTag = void 0;\n while (html) {\n last = html;\n // Make sure we're not in a script or style element\n if (!lastTag || !isSpecialTag(lastTag)) {\n var textEnd = html.indexOf('<');\n if (textEnd === 0) {\n // Comment:\n if (/^<!--/.test(html)) {\n var commentEnd = html.indexOf('-->');\n\n if (commentEnd >= 0) {\n advance(commentEnd + 3);\n continue;\n }\n }\n\n // http://en.wikipedia.org/wiki/Conditional_comment#Downlevel-revealed_conditional_comment\n if (/^<!\\[/.test(html)) {\n var conditionalEnd = html.indexOf(']>');\n\n if (conditionalEnd >= 0) {\n advance(conditionalEnd + 2);\n continue;\n }\n }\n\n // Doctype:\n var doctypeMatch = html.match(doctype);\n if (doctypeMatch) {\n if (handler.doctype) {\n handler.doctype(doctypeMatch[0]);\n }\n advance(doctypeMatch[0].length);\n continue;\n }\n\n // End tag:\n var endTagMatch = html.match(endTag);\n if (endTagMatch) {\n var curIndex = index;\n advance(endTagMatch[0].length);\n parseEndTag(endTagMatch[0], endTagMatch[1], curIndex, index);\n continue;\n }\n\n // Start tag:\n var startTagMatch = parseStartTag();\n if (startTagMatch) {\n handleStartTag(startTagMatch);\n continue;\n }\n }\n\n var text = void 0;\n if (textEnd >= 0) {\n text = html.substring(0, textEnd);\n advance(textEnd);\n } else {\n text = html;\n html = '';\n }\n\n if (handler.chars) {\n handler.chars(text);\n }\n } else {\n (function () {\n var stackedTag = lastTag.toLowerCase();\n var reStackedTag = reCache[stackedTag] || (reCache[stackedTag] = new RegExp('([\\\\s\\\\S]*?)(</' + stackedTag + '[^>]*>)', 'i'));\n var endTagLength = 0;\n var rest = html.replace(reStackedTag, function (all, text, endTag) {\n endTagLength = endTag.length;\n if (stackedTag !== 'script' && stackedTag !== 'style' && stackedTag !== 'noscript') {\n text = text.replace(/<!--([\\s\\S]*?)-->/g, '$1').replace(/<!\\[CDATA\\[([\\s\\S]*?)\\]\\]>/g, '$1');\n }\n if (handler.chars) {\n handler.chars(text);\n }\n return '';\n });\n index += html.length - rest.length;\n html = rest;\n parseEndTag('</' + stackedTag + '>', stackedTag, index - endTagLength, index);\n })();\n }\n\n if (html === last) {\n throw new Error('Error parsing template:\\n\\n' + html);\n }\n }\n\n // Clean up any remaining tags\n parseEndTag();\n\n function advance(n) {\n index += n;\n html = html.substring(n);\n }\n\n function parseStartTag() {\n var start = html.match(startTagOpen);\n if (start) {\n var match = {\n tagName: start[1],\n attrs: [],\n start: index\n };\n advance(start[0].length);\n var end = void 0,\n attr = void 0;\n while (!(end = html.match(startTagClose)) && (attr = html.match(attribute))) {\n advance(attr[0].length);\n match.attrs.push(attr);\n }\n if (end) {\n match.unarySlash = end[1];\n advance(end[0].length);\n match.end = index;\n return match;\n }\n }\n }\n\n function handleStartTag(match) {\n var tagName = match.tagName;\n var unarySlash = match.unarySlash;\n\n if (expectHTML) {\n if (lastTag === 'p' && isNonPhrasingTag(tagName)) {\n parseEndTag('', lastTag);\n }\n if (canBeLeftOpenTag(tagName) && lastTag === tagName) {\n parseEndTag('', tagName);\n }\n }\n\n var unary = isUnaryTag(tagName) || tagName === 'html' && lastTag === 'head' || !!unarySlash;\n\n var l = match.attrs.length;\n var attrs = new Array(l);\n for (var i = 0; i < l; i++) {\n var args = match.attrs[i];\n // hackish work around FF bug https://bugzilla.mozilla.org/show_bug.cgi?id=369778\n if (IS_REGEX_CAPTURING_BROKEN && args[0].indexOf('\"\"') === -1) {\n if (args[3] === '') {\n delete args[3];\n }\n if (args[4] === '') {\n delete args[4];\n }\n if (args[5] === '') {\n delete args[5];\n }\n }\n attrs[i] = {\n name: args[1],\n value: decodeHTML(args[3] || args[4] || args[5] || '')\n };\n }\n\n if (!unary) {\n stack.push({ tag: tagName, attrs: attrs });\n lastTag = tagName;\n unarySlash = '';\n }\n\n if (handler.start) {\n handler.start(tagName, attrs, unary, match.start, match.end);\n }\n }\n\n function parseEndTag(tag, tagName, start, end) {\n var pos = void 0;\n if (start == null) start = index;\n if (end == null) end = index;\n\n // Find the closest opened tag of the same type\n if (tagName) {\n var needle = tagName.toLowerCase();\n for (pos = stack.length - 1; pos >= 0; pos--) {\n if (stack[pos].tag.toLowerCase() === needle) {\n break;\n }\n }\n } else {\n // If no tag name is provided, clean shop\n pos = 0;\n }\n\n if (pos >= 0) {\n // Close all the open elements, up the stack\n for (var i = stack.length - 1; i >= pos; i--) {\n if (handler.end) {\n handler.end(stack[i].tag, start, end);\n }\n }\n\n // Remove the open elements from the stack\n stack.length = pos;\n lastTag = pos && stack[pos - 1].tag;\n } else if (tagName.toLowerCase() === 'br') {\n if (handler.start) {\n handler.start(tagName, [], true, start, end);\n }\n } else if (tagName.toLowerCase() === 'p') {\n if (handler.start) {\n handler.start(tagName, [], false, start, end);\n }\n if (handler.end) {\n handler.end(tagName, start, end);\n }\n }\n }\n }\n\n function parseFilters(exp) {\n var inSingle = false;\n var inDouble = false;\n var curly = 0;\n var square = 0;\n var paren = 0;\n var lastFilterIndex = 0;\n var c = void 0,\n prev = void 0,\n i = void 0,\n expression = void 0,\n filters = void 0;\n\n for (i = 0; i < exp.length; i++) {\n prev = c;\n c = exp.charCodeAt(i);\n if (inSingle) {\n // check single quote\n if (c === 0x27 && prev !== 0x5C) inSingle = !inSingle;\n } else if (inDouble) {\n // check double quote\n if (c === 0x22 && prev !== 0x5C) inDouble = !inDouble;\n } else if (c === 0x7C && // pipe\n exp.charCodeAt(i + 1) !== 0x7C && exp.charCodeAt(i - 1) !== 0x7C && !curly && !square && !paren) {\n if (expression === undefined) {\n // first filter, end of expression\n lastFilterIndex = i + 1;\n expression = exp.slice(0, i).trim();\n } else {\n pushFilter();\n }\n } else {\n switch (c) {\n case 0x22:\n inDouble = true;break; // \"\n case 0x27:\n inSingle = true;break; // '\n case 0x28:\n paren++;break; // (\n case 0x29:\n paren--;break; // )\n case 0x5B:\n square++;break; // [\n case 0x5D:\n square--;break; // ]\n case 0x7B:\n curly++;break; // {\n case 0x7D:\n curly--;break; // }\n }\n }\n }\n\n if (expression === undefined) {\n expression = exp.slice(0, i).trim();\n } else if (lastFilterIndex !== 0) {\n pushFilter();\n }\n\n function pushFilter() {\n (filters || (filters = [])).push(exp.slice(lastFilterIndex, i).trim());\n lastFilterIndex = i + 1;\n }\n\n if (filters) {\n for (i = 0; i < filters.length; i++) {\n expression = wrapFilter(expression, filters[i]);\n }\n }\n\n return expression;\n }\n\n function wrapFilter(exp, filter) {\n var i = filter.indexOf('(');\n if (i < 0) {\n // _f: resolveFilter\n return '_f(\"' + filter + '\")(' + exp + ')';\n } else {\n var name = filter.slice(0, i);\n var args = filter.slice(i + 1);\n return '_f(\"' + name + '\")(' + exp + ',' + args;\n }\n }\n\n var defaultTagRE = /\\{\\{((?:.|\\\\n)+?)\\}\\}/g;\n var regexEscapeRE = /[-.*+?^${}()|[\\]\\/\\\\]/g;\n\n var buildRegex = cached(function (delimiters) {\n var open = delimiters[0].replace(regexEscapeRE, '\\\\$&');\n var close = delimiters[1].replace(regexEscapeRE, '\\\\$&');\n return new RegExp(open + '((?:.|\\\\n)+?)' + close, 'g');\n });\n\n function parseText(text, delimiters) {\n var tagRE = delimiters ? buildRegex(delimiters) : defaultTagRE;\n if (!tagRE.test(text)) {\n return;\n }\n var tokens = [];\n var lastIndex = tagRE.lastIndex = 0;\n var match = void 0,\n index = void 0;\n while (match = tagRE.exec(text)) {\n index = match.index;\n // push text token\n if (index > lastIndex) {\n tokens.push(JSON.stringify(text.slice(lastIndex, index)));\n }\n // tag token\n var exp = parseFilters(match[1].trim());\n tokens.push('_s(' + exp + ')');\n lastIndex = index + match[0].length;\n }\n if (lastIndex < text.length) {\n tokens.push(JSON.stringify(text.slice(lastIndex)));\n }\n return tokens.join('+');\n }\n\n function baseWarn(msg) {\n console.error('[Vue parser]: ' + msg);\n }\n\n function pluckModuleFunction(modules, key) {\n return modules ? modules.map(function (m) {\n return m[key];\n }).filter(function (_) {\n return _;\n }) : [];\n }\n\n function addProp(el, name, value) {\n (el.props || (el.props = [])).push({ name: name, value: value });\n }\n\n function addAttr(el, name, value) {\n (el.attrs || (el.attrs = [])).push({ name: name, value: value });\n }\n\n function addStaticAttr(el, name, value) {\n (el.staticAttrs || (el.staticAttrs = [])).push({ name: name, value: value });\n }\n\n function addDirective(el, name, value, arg, modifiers) {\n (el.directives || (el.directives = [])).push({ name: name, value: value, arg: arg, modifiers: modifiers });\n }\n\n function addHook$1(el, name, code) {\n var hooks = el.hooks || (el.hooks = {});\n var hook = hooks[name];\n /* istanbul ignore if */\n if (hook) {\n hook.push(code);\n } else {\n hooks[name] = [code];\n }\n }\n\n function addHandler(el, name, value, modifiers) {\n var events = el.events || (el.events = {});\n // check capture modifier\n if (modifiers && modifiers.capture) {\n delete modifiers.capture;\n name = '!' + name; // mark the event as captured\n }\n var newHandler = { value: value, modifiers: modifiers };\n var handlers = events[name];\n /* istanbul ignore if */\n if (Array.isArray(handlers)) {\n handlers.push(newHandler);\n } else if (handlers) {\n events[name] = [handlers, newHandler];\n } else {\n events[name] = newHandler;\n }\n }\n\n function getBindingAttr(el, name, getStatic) {\n var dynamicValue = getAndRemoveAttr(el, ':' + name) || getAndRemoveAttr(el, 'v-bind:' + name);\n if (dynamicValue != null) {\n return dynamicValue;\n } else if (getStatic !== false) {\n var staticValue = getAndRemoveAttr(el, name);\n if (staticValue != null) {\n return JSON.stringify(staticValue);\n }\n }\n }\n\n function getAndRemoveAttr(el, name) {\n var val = void 0;\n if ((val = el.attrsMap[name]) != null) {\n var list = el.attrsList;\n for (var i = 0, l = list.length; i < l; i++) {\n if (list[i].name === name) {\n list.splice(i, 1);\n break;\n }\n }\n }\n return val;\n }\n\n var dirRE = /^v-|^@|^:/;\n var forAliasRE = /(.*)\\s+(?:in|of)\\s+(.*)/;\n var forIteratorRE = /\\(([^,]*),([^,]*)(?:,([^,]*))?\\)/;\n var bindRE = /^:|^v-bind:/;\n var onRE = /^@|^v-on:/;\n var argRE = /:(.*)$/;\n var modifierRE = /\\.[^\\.]+/g;\n var camelRE = /[a-z\\d][A-Z]/;\n\n var decodeHTMLCached = cached(decodeHTML);\n\n // configurable state\n var warn$1 = void 0;\n var platformGetTagNamespace = void 0;\n var platformMustUseProp = void 0;\n var preTransforms = void 0;\n var transforms = void 0;\n var postTransforms = void 0;\n var delimiters = void 0;\n\n /**\n * Convert HTML string to AST.\n */\n function parse(template, options) {\n warn$1 = options.warn || baseWarn;\n platformGetTagNamespace = options.getTagNamespace || no;\n platformMustUseProp = options.mustUseProp || no;\n preTransforms = pluckModuleFunction(options.modules, 'preTransformNode');\n transforms = pluckModuleFunction(options.modules, 'transformNode');\n postTransforms = pluckModuleFunction(options.modules, 'postTransformNode');\n delimiters = options.delimiters;\n var stack = [];\n var preserveWhitespace = options.preserveWhitespace !== false;\n var root = void 0;\n var currentParent = void 0;\n var inPre = false;\n var warned = false;\n parseHTML(template, {\n expectHTML: options.expectHTML,\n isUnaryTag: options.isUnaryTag,\n start: function start(tag, attrs, unary) {\n // check camelCase tag\n if (camelRE.test(tag)) {\n \"development\" !== 'production' && warn$1('Found camelCase tag in template: <' + tag + '>. ' + ('I\\'ve converted it to <' + hyphenate(tag) + '> for you.'));\n tag = hyphenate(tag);\n }\n\n tag = tag.toLowerCase();\n\n // check namespace.\n // inherit parent ns if there is one\n var ns = currentParent && currentParent.ns || platformGetTagNamespace(tag);\n\n // handle IE svg bug\n /* istanbul ignore if */\n if (options.isIE && ns === 'svg') {\n attrs = guardIESVGBug(attrs);\n }\n\n var element = {\n type: 1,\n tag: tag,\n attrsList: attrs,\n attrsMap: makeAttrsMap(attrs),\n parent: currentParent,\n children: []\n };\n if (ns) {\n element.ns = ns;\n }\n\n if (isForbiddenTag(element)) {\n element.forbidden = true;\n \"development\" !== 'production' && warn$1('Templates should only be responsbile for mapping the state to the ' + 'UI. Avoid placing tags with side-effects in your templates, such as ' + ('<' + tag + '>.'));\n }\n\n // apply pre-transforms\n for (var i = 0; i < preTransforms.length; i++) {\n preTransforms[i](element, options);\n }\n\n if (!inPre) {\n processPre(element);\n if (element.pre) {\n inPre = true;\n }\n }\n if (inPre) {\n processRawAttrs(element);\n } else {\n processFor(element);\n processIf(element);\n processOnce(element);\n\n // determine whether this is a plain element after\n // removing structural attributes\n element.plain = !element.key && !attrs.length;\n\n processKey(element);\n processRef(element);\n processSlot(element);\n processComponent(element);\n for (var _i = 0; _i < transforms.length; _i++) {\n transforms[_i](element, options);\n }\n processAttrs(element);\n }\n\n // tree management\n if (!root) {\n root = element;\n // check root element constraints\n if (\"development\" !== 'production') {\n if (tag === 'slot' || tag === 'template') {\n warn$1('Cannot use <' + tag + '> as component root element because it may ' + 'contain multiple nodes:\\n' + template);\n }\n if (element.attrsMap.hasOwnProperty('v-for')) {\n warn$1('Cannot use v-for on stateful component root element because ' + 'it renders multiple elements:\\n' + template);\n }\n }\n } else if (\"development\" !== 'production' && !stack.length && !warned) {\n warned = true;\n warn$1('Component template should contain exactly one root element:\\n\\n' + template);\n }\n if (currentParent && !element.forbidden) {\n if (element.else) {\n processElse(element, currentParent);\n } else {\n currentParent.children.push(element);\n element.parent = currentParent;\n }\n }\n if (!unary) {\n currentParent = element;\n stack.push(element);\n }\n // apply post-transforms\n for (var _i2 = 0; _i2 < postTransforms.length; _i2++) {\n postTransforms[_i2](element, options);\n }\n },\n end: function end() {\n // remove trailing whitespace\n var element = stack[stack.length - 1];\n var lastNode = element.children[element.children.length - 1];\n if (lastNode && lastNode.type === 3 && lastNode.text === ' ') {\n element.children.pop();\n }\n // pop stack\n stack.length -= 1;\n currentParent = stack[stack.length - 1];\n // check pre state\n if (element.pre) {\n inPre = false;\n }\n },\n chars: function chars(text) {\n if (!currentParent) {\n if (\"development\" !== 'production' && !warned) {\n warned = true;\n warn$1('Component template should contain exactly one root element:\\n\\n' + template);\n }\n return;\n }\n text = currentParent.tag === 'pre' || text.trim() ? decodeHTMLCached(text)\n // only preserve whitespace if its not right after a starting tag\n : preserveWhitespace && currentParent.children.length ? ' ' : '';\n if (text) {\n var expression = void 0;\n if (!inPre && text !== ' ' && (expression = parseText(text, delimiters))) {\n currentParent.children.push({\n type: 2,\n expression: expression,\n text: text\n });\n } else {\n currentParent.children.push({\n type: 3,\n text: text\n });\n }\n }\n }\n });\n return root;\n }\n\n function processPre(el) {\n if (getAndRemoveAttr(el, 'v-pre') != null) {\n el.pre = true;\n }\n }\n\n function processRawAttrs(el) {\n var l = el.attrsList.length;\n if (l) {\n var attrs = el.staticAttrs = new Array(l);\n for (var i = 0; i < l; i++) {\n attrs[i] = {\n name: el.attrsList[i].name,\n value: JSON.stringify(el.attrsList[i].value)\n };\n }\n } else if (!el.pre) {\n // non root node in pre blocks with no attributes\n el.plain = true;\n }\n }\n\n function processKey(el) {\n var exp = getBindingAttr(el, 'key');\n if (exp) {\n el.key = exp;\n }\n }\n\n function processRef(el) {\n var ref = getBindingAttr(el, 'ref');\n if (ref) {\n el.ref = ref;\n var parent = el;\n while (parent) {\n if (parent.for !== undefined) {\n el.refInFor = true;\n break;\n }\n parent = parent.parent;\n }\n }\n }\n\n function processFor(el) {\n var exp = void 0;\n if (exp = getAndRemoveAttr(el, 'v-for')) {\n var inMatch = exp.match(forAliasRE);\n if (!inMatch) {\n \"development\" !== 'production' && warn$1('Invalid v-for expression: ' + exp);\n return;\n }\n el.for = inMatch[2].trim();\n var alias = inMatch[1].trim();\n var iteratorMatch = alias.match(forIteratorRE);\n if (iteratorMatch) {\n el.alias = iteratorMatch[1].trim();\n el.iterator1 = iteratorMatch[2].trim();\n if (iteratorMatch[3]) {\n el.iterator2 = iteratorMatch[3].trim();\n }\n } else {\n el.alias = alias;\n }\n }\n }\n\n function processIf(el) {\n var exp = getAndRemoveAttr(el, 'v-if');\n if (exp) {\n el.if = exp;\n }\n if (getAndRemoveAttr(el, 'v-else') != null) {\n el.else = true;\n }\n }\n\n function processElse(el, parent) {\n var prev = findPrevElement(parent.children);\n if (prev && prev.if) {\n prev.elseBlock = el;\n } else if (\"development\" !== 'production') {\n warn$1('v-else used on element <' + el.tag + '> without corresponding v-if.');\n }\n }\n\n function processOnce(el) {\n var once = getAndRemoveAttr(el, 'v-once');\n if (once != null) {\n el.once = true;\n }\n }\n\n function processSlot(el) {\n if (el.tag === 'slot') {\n el.slotName = getBindingAttr(el, 'name');\n } else {\n var slotTarget = getBindingAttr(el, 'slot');\n if (slotTarget) {\n el.slotTarget = slotTarget;\n }\n }\n }\n\n function processComponent(el) {\n var binding = void 0;\n if (binding = getBindingAttr(el, 'is')) {\n el.component = binding;\n }\n if (getAndRemoveAttr(el, 'keep-alive') != null) {\n el.keepAlive = true;\n }\n if (getAndRemoveAttr(el, 'inline-template') != null) {\n el.inlineTemplate = true;\n }\n }\n\n function processAttrs(el) {\n var list = el.attrsList;\n var i = void 0,\n l = void 0,\n name = void 0,\n value = void 0,\n arg = void 0,\n modifiers = void 0;\n for (i = 0, l = list.length; i < l; i++) {\n name = list[i].name;\n value = list[i].value;\n if (dirRE.test(name)) {\n // modifiers\n modifiers = parseModifiers(name);\n if (modifiers) {\n name = name.replace(modifierRE, '');\n }\n if (bindRE.test(name)) {\n // v-bind\n name = name.replace(bindRE, '');\n if (platformMustUseProp(name)) {\n addProp(el, name, value);\n } else {\n addAttr(el, name, value);\n }\n } else if (onRE.test(name)) {\n // v-on\n name = name.replace(onRE, '');\n addHandler(el, name, value, modifiers);\n } else {\n // normal directives\n name = name.replace(dirRE, '');\n // parse arg\n var argMatch = name.match(argRE);\n if (argMatch && (arg = argMatch[1])) {\n name = name.slice(0, -(arg.length + 1));\n }\n addDirective(el, name, value, arg, modifiers);\n }\n } else {\n // literal attribute\n if (\"development\" !== 'production') {\n var expression = parseText(value, delimiters);\n if (expression) {\n warn$1(name + '=\"' + value + '\": ' + 'Interpolation inside attributes has been deprecated. ' + 'Use v-bind or the colon shorthand instead.');\n }\n }\n addStaticAttr(el, name, JSON.stringify(value));\n }\n }\n }\n\n function parseModifiers(name) {\n var match = name.match(modifierRE);\n if (match) {\n var _ret = function () {\n var ret = {};\n match.forEach(function (m) {\n ret[m.slice(1)] = true;\n });\n return {\n v: ret\n };\n }();\n\n if (typeof _ret === \"object\") return _ret.v;\n }\n }\n\n function makeAttrsMap(attrs) {\n var map = {};\n for (var i = 0, l = attrs.length; i < l; i++) {\n if (\"development\" !== 'production' && map[attrs[i].name]) {\n warn$1('duplicate attribute: ' + attrs[i].name);\n }\n map[attrs[i].name] = attrs[i].value;\n }\n return map;\n }\n\n function findPrevElement(children) {\n var i = children.length;\n while (i--) {\n if (children[i].tag) return children[i];\n }\n }\n\n function isForbiddenTag(el) {\n return el.tag === 'style' || el.tag === 'script' && (!el.attrsMap.type || el.attrsMap.type === 'text/javascript');\n }\n\n var ieNSBug = /^xmlns:NS\\d+/;\n var ieNSPrefix = /^NS\\d+:/;\n\n /* istanbul ignore next */\n function guardIESVGBug(attrs) {\n var res = [];\n for (var i = 0; i < attrs.length; i++) {\n var attr = attrs[i];\n if (!ieNSBug.test(attr.name)) {\n attr.name = attr.name.replace(ieNSPrefix, '');\n res.push(attr);\n }\n }\n return res;\n }\n\n var isStaticKey = void 0;\n var isPlatformReservedTag = void 0;\n\n var genStaticKeysCached = cached(genStaticKeys$1);\n\n /**\n * Goal of the optimizier: walk the generated template AST tree\n * and detect sub-trees that are purely static, i.e. parts of\n * the DOM that never needs to change.\n *\n * Once we detect these sub-trees, we can:\n *\n * 1. Hoist them into constants, so that we no longer need to\n * create fresh nodes for them on each re-render;\n * 2. Completely skip them in the patching process.\n */\n function optimize(root, options) {\n if (!root) return;\n isStaticKey = genStaticKeysCached(options.staticKeys || '');\n isPlatformReservedTag = options.isReservedTag || function () {\n return false;\n };\n // first pass: mark all non-static nodes.\n markStatic(root);\n // second pass: mark static roots.\n markStaticRoots(root);\n }\n\n function genStaticKeys$1(keys) {\n return makeMap('type,tag,attrsList,attrsMap,plain,parent,children,staticAttrs' + (keys ? ',' + keys : ''));\n }\n\n function markStatic(node) {\n node.static = isStatic(node);\n if (node.type === 1) {\n for (var i = 0, l = node.children.length; i < l; i++) {\n var child = node.children[i];\n markStatic(child);\n if (!child.static) {\n node.static = false;\n }\n }\n }\n }\n\n function markStaticRoots(node) {\n if (node.type === 1 && (node.once || node.static)) {\n node.staticRoot = true;\n return;\n }\n if (node.children) {\n for (var i = 0, l = node.children.length; i < l; i++) {\n markStaticRoots(node.children[i]);\n }\n }\n }\n\n function isStatic(node) {\n if (node.type === 2) {\n // expression\n return false;\n }\n if (node.type === 3) {\n // text\n return true;\n }\n return !!(node.pre || !node.if && !node.for && // not v-if or v-for or v-else\n !isBuiltInTag(node.tag) && // not a built-in\n isPlatformReservedTag(node.tag) && ( // not a component\n node.plain || Object.keys(node).every(isStaticKey)) // no dynamic bindings\n );\n }\n\n var simplePathRE = /^[A-Za-z_$][\\w$]*(?:\\.[A-Za-z_$][\\w$]*|\\['.*?'\\]|\\[\".*?\"\\]|\\[\\d+\\]|\\[[A-Za-z_$][\\w$]*\\])*$/;\n\n // keyCode aliases\n var keyCodes = {\n esc: 27,\n tab: 9,\n enter: 13,\n space: 32,\n up: 38,\n left: 37,\n right: 39,\n down: 40,\n 'delete': [8, 46]\n };\n\n var modifierCode = {\n stop: '$event.stopPropagation();',\n prevent: '$event.preventDefault();',\n self: 'if($event.target !== $event.currentTarget)return;'\n };\n\n function genHandlers(events) {\n var res = 'on:{';\n for (var name in events) {\n res += '\"' + name + '\":' + genHandler(events[name]) + ',';\n }\n return res.slice(0, -1) + '}';\n }\n\n function genHandler(handler) {\n if (!handler) {\n return 'function(){}';\n } else if (Array.isArray(handler)) {\n return '[' + handler.map(genHandler).join(',') + ']';\n } else if (!handler.modifiers) {\n return simplePathRE.test(handler.value) ? handler.value : 'function($event){' + handler.value + '}';\n } else {\n var code = 'function($event){';\n for (var key in handler.modifiers) {\n code += modifierCode[key] || genKeyFilter(key);\n }\n var handlerCode = simplePathRE.test(handler.value) ? handler.value + '($event)' : handler.value;\n return code + handlerCode + '}';\n }\n }\n\n function genKeyFilter(key) {\n var code = parseInt(key, 10) || // number keyCode\n keyCodes[key] || // built-in alias\n '_k(' + JSON.stringify(key) + ')'; // custom alias\n if (Array.isArray(code)) {\n return 'if(' + code.map(function (c) {\n return '$event.keyCode!==' + c;\n }).join('&&') + ')return;';\n } else {\n return 'if($event.keyCode!==' + code + ')return;';\n }\n }\n\n function bind$1(el, dir) {\n addHook$1(el, 'construct', '_b(n1,' + dir.value + ')');\n }\n\n var baseDirectives = {\n bind: bind$1,\n cloak: noop\n };\n\n // configurable state\n var warn$2 = void 0;\n var transforms$1 = void 0;\n var dataGenFns = void 0;\n var platformDirectives$1 = void 0;\n var isPlatformReservedTag$1 = void 0;\n var staticRenderFns = void 0;\n var currentOptions = void 0;\n\n function generate(ast, options) {\n // save previous staticRenderFns so generate calls can be nested\n var prevStaticRenderFns = staticRenderFns;\n var currentStaticRenderFns = staticRenderFns = [];\n currentOptions = options;\n warn$2 = options.warn || baseWarn;\n transforms$1 = pluckModuleFunction(options.modules, 'transformCode');\n dataGenFns = pluckModuleFunction(options.modules, 'genData');\n platformDirectives$1 = options.directives || {};\n isPlatformReservedTag$1 = options.isReservedTag || no;\n var code = ast ? genElement(ast) : '_h(\"div\")';\n staticRenderFns = prevStaticRenderFns;\n return {\n render: 'with(this){return ' + code + '}',\n staticRenderFns: currentStaticRenderFns\n };\n }\n\n function genElement(el) {\n if (el.staticRoot && !el.staticProcessed) {\n // hoist static sub-trees out\n el.staticProcessed = true;\n staticRenderFns.push('with(this){return ' + genElement(el) + '}');\n return '_m(' + (staticRenderFns.length - 1) + ')';\n } else if (el.for && !el.forProcessed) {\n return genFor(el);\n } else if (el.if && !el.ifProcessed) {\n return genIf(el);\n } else if (el.tag === 'template' && !el.slotTarget) {\n return genChildren(el) || 'void 0';\n } else if (el.tag === 'slot') {\n return genSlot(el);\n } else {\n // component or element\n var code = void 0;\n if (el.component) {\n code = genComponent(el);\n } else {\n var data = genData(el);\n // if the element is potentially a component,\n // wrap its children as a thunk.\n var children = !el.inlineTemplate ? genChildren(el, !el.ns && !isPlatformReservedTag$1(el.tag) /* asThunk */) : null;\n code = '_h(\\'' + el.tag + '\\'' + (data ? ',' + data : '' // data\n ) + (children ? ',' + children : '' // children\n ) + ')';\n }\n // module transforms\n for (var i = 0; i < transforms$1.length; i++) {\n code = transforms$1[i](el, code);\n }\n // check keep-alive\n if (el.component && el.keepAlive) {\n code = '_h(\"KeepAlive\",{props:{child:' + code + '}})';\n }\n return code;\n }\n }\n\n function genIf(el) {\n var exp = el.if;\n el.ifProcessed = true; // avoid recursion\n return '(' + exp + ')?' + genElement(el) + ':' + genElse(el);\n }\n\n function genElse(el) {\n return el.elseBlock ? genElement(el.elseBlock) : 'void 0';\n }\n\n function genFor(el) {\n var exp = el.for;\n var alias = el.alias;\n var iterator1 = el.iterator1 ? ',' + el.iterator1 : '';\n var iterator2 = el.iterator2 ? ',' + el.iterator2 : '';\n el.forProcessed = true; // avoid recursion\n return '(' + exp + ')&&_l((' + exp + '),' + ('function(' + alias + iterator1 + iterator2 + '){') + ('return ' + genElement(el)) + '})';\n }\n\n function genData(el) {\n if (el.plain) {\n return;\n }\n\n var data = '{';\n\n // directives first.\n // directives may mutate the el's other properties before they are generated.\n var dirs = genDirectives(el);\n if (dirs) data += dirs + ',';\n\n // key\n if (el.key) {\n data += 'key:' + el.key + ',';\n }\n // ref\n if (el.ref) {\n data += 'ref:' + el.ref + ',';\n }\n if (el.refInFor) {\n data += 'refInFor:true,';\n }\n // record original tag name for components using \"is\" attribute\n if (el.component) {\n data += 'tag:\"' + el.tag + '\",';\n }\n // slot target\n if (el.slotTarget) {\n data += 'slot:' + el.slotTarget + ',';\n }\n // module data generation functions\n for (var i = 0; i < dataGenFns.length; i++) {\n data += dataGenFns[i](el);\n }\n // v-show, used to avoid transition being applied\n // since v-show takes it over\n if (el.attrsMap['v-show']) {\n data += 'show:true,';\n }\n // props\n if (el.props) {\n data += 'props:{' + genProps(el.props) + '},';\n }\n // attributes\n if (el.attrs) {\n data += 'attrs:{' + genProps(el.attrs) + '},';\n }\n // static attributes\n if (el.staticAttrs) {\n data += 'staticAttrs:{' + genProps(el.staticAttrs) + '},';\n }\n // hooks\n if (el.hooks) {\n data += 'hook:{' + genHooks(el.hooks) + '},';\n }\n // event handlers\n if (el.events) {\n data += genHandlers(el.events) + ',';\n }\n // inline-template\n if (el.inlineTemplate) {\n var ast = el.children[0];\n if (\"development\" !== 'production' && (el.children.length > 1 || ast.type !== 1)) {\n warn$2('Inline-template components must have exactly one child element.');\n }\n if (ast.type === 1) {\n var inlineRenderFns = generate(ast, currentOptions);\n data += 'inlineTemplate:{render:function(){' + inlineRenderFns.render + '},staticRenderFns:[' + inlineRenderFns.staticRenderFns.map(function (code) {\n return 'function(){' + code + '}';\n }).join(',') + ']}';\n }\n }\n return data.replace(/,$/, '') + '}';\n }\n\n function genDirectives(el) {\n var dirs = el.directives;\n if (!dirs) return;\n var res = 'directives:[';\n var hasRuntime = false;\n var i = void 0,\n l = void 0,\n dir = void 0,\n needRuntime = void 0;\n for (i = 0, l = dirs.length; i < l; i++) {\n dir = dirs[i];\n needRuntime = true;\n var gen = platformDirectives$1[dir.name] || baseDirectives[dir.name];\n if (gen) {\n // compile-time directive that manipulates AST.\n // returns true if it also needs a runtime counterpart.\n needRuntime = !!gen(el, dir, warn$2);\n }\n if (needRuntime) {\n hasRuntime = true;\n res += '{name:\"' + dir.name + '\"' + (dir.value ? ',value:(' + dir.value + '),expression:' + JSON.stringify(dir.value) : '') + (dir.arg ? ',arg:\"' + dir.arg + '\"' : '') + (dir.modifiers ? ',modifiers:' + JSON.stringify(dir.modifiers) : '') + '},';\n }\n }\n if (hasRuntime) {\n return res.slice(0, -1) + ']';\n }\n }\n\n function genChildren(el, asThunk) {\n if (!el.children.length) {\n return;\n }\n var code = '[' + el.children.map(genNode).join(',') + ']';\n return asThunk ? 'function(){return ' + code + '}' : code;\n }\n\n function genNode(node) {\n if (node.type === 1) {\n return genElement(node);\n } else {\n return genText(node);\n }\n }\n\n function genText(text) {\n return text.type === 2 ? text.expression // no need for () because already wrapped in _s()\n : JSON.stringify(text.text);\n }\n\n function genSlot(el) {\n var slot = '$slots[' + (el.slotName || '\"default\"') + ']';\n var children = genChildren(el);\n return children ? '(' + slot + '||' + children + ')' : slot;\n }\n\n function genComponent(el) {\n var children = genChildren(el, true);\n return '_h(' + el.component + ',' + genData(el) + (children ? ',' + children : '') + ')';\n }\n\n function genProps(props) {\n var res = '';\n for (var i = 0; i < props.length; i++) {\n var prop = props[i];\n res += '\"' + prop.name + '\":' + prop.value + ',';\n }\n return res.slice(0, -1);\n }\n\n function genHooks(hooks) {\n var res = '';\n for (var _key in hooks) {\n res += '\"' + _key + '\":function(n1,n2){' + hooks[_key].join(';') + '},';\n }\n return res.slice(0, -1);\n }\n\n /**\n * Compile a template.\n */\n function compile$1(template, options) {\n var ast = parse(template.trim(), options);\n optimize(ast, options);\n var code = generate(ast, options);\n return {\n ast: ast,\n render: code.render,\n staticRenderFns: code.staticRenderFns\n };\n }\n\n // operators like typeof, instanceof and in are allowed\n var prohibitedKeywordRE = new RegExp('\\\\b' + ('do,if,for,let,new,try,var,case,else,with,await,break,catch,class,const,' + 'super,throw,while,yield,delete,export,import,return,switch,default,' + 'extends,finally,continue,debugger,function,arguments').split(',').join('\\\\b|\\\\b') + '\\\\b');\n // check valid identifier for v-for\n var identRE = /[A-Za-z_$][\\w$]*/;\n // strip strings in expressions\n var stripStringRE = /'(?:[^'\\\\]|\\\\.)*'|\"(?:[^\"\\\\]|\\\\.)*\"|`(?:[^`\\\\]|\\\\.)*\\$\\{|\\}(?:[^`\\\\]|\\\\.)*`|`(?:[^`\\\\]|\\\\.)*`/g;\n\n // detect problematic expressions in a template\n function detectErrors(ast) {\n var errors = [];\n if (ast) {\n checkNode(ast, errors);\n }\n return errors;\n }\n\n function checkNode(node, errors) {\n if (node.type === 1) {\n for (var name in node.attrsMap) {\n if (dirRE.test(name)) {\n var value = node.attrsMap[name];\n if (value) {\n if (name === 'v-for') {\n checkFor(node, 'v-for=\"' + value + '\"', errors);\n } else {\n checkExpression(value, name + '=\"' + value + '\"', errors);\n }\n }\n }\n }\n if (node.children) {\n for (var i = 0; i < node.children.length; i++) {\n checkNode(node.children[i], errors);\n }\n }\n } else if (node.type === 2) {\n checkExpression(node.expression, node.text, errors);\n }\n }\n\n function checkFor(node, text, errors) {\n checkExpression(node.for || '', text, errors);\n checkIdentifier(node.alias, 'v-for alias', text, errors);\n checkIdentifier(node.iterator1, 'v-for iterator', text, errors);\n checkIdentifier(node.iterator2, 'v-for iterator', text, errors);\n }\n\n function checkIdentifier(ident, type, text, errors) {\n if (typeof ident === 'string' && !identRE.test(ident)) {\n errors.push('- invalid ' + type + ' \"' + ident + '\" in expression: ' + text);\n }\n }\n\n function checkExpression(exp, text, errors) {\n try {\n new Function('return ' + exp);\n } catch (e) {\n var keywordMatch = exp.replace(stripStringRE, '').match(prohibitedKeywordRE);\n if (keywordMatch) {\n errors.push('- avoid using JavaScript keyword as property name: ' + ('\"' + keywordMatch[0] + '\" in expression ' + text));\n } else {\n errors.push('- invalid expression: ' + text);\n }\n }\n }\n\n function transformNode(el, options) {\n var warn = options.warn || baseWarn;\n var staticClass = getAndRemoveAttr(el, 'class');\n if (\"development\" !== 'production' && staticClass) {\n var expression = parseText(staticClass, options.delimiters);\n if (expression) {\n warn('class=\"' + staticClass + '\": ' + 'Interpolation inside attributes has been deprecated. ' + 'Use v-bind or the colon shorthand instead.');\n }\n }\n el.staticClass = JSON.stringify(staticClass);\n var classBinding = getBindingAttr(el, 'class', false /* getStatic */);\n if (classBinding) {\n el.classBinding = classBinding;\n }\n }\n\n function genData$1(el) {\n var data = '';\n if (el.staticClass) {\n data += 'staticClass:' + el.staticClass + ',';\n }\n if (el.classBinding) {\n data += 'class:' + el.classBinding + ',';\n }\n return data;\n }\n\n var klass$1 = {\n staticKeys: ['staticClass'],\n transformNode: transformNode,\n genData: genData$1\n };\n\n function transformNode$1(el) {\n var styleBinding = getBindingAttr(el, 'style', false /* getStatic */);\n if (styleBinding) {\n el.styleBinding = styleBinding;\n }\n }\n\n function genData$2(el) {\n return el.styleBinding ? 'style:(' + el.styleBinding + '),' : '';\n }\n\n var style$1 = {\n transformNode: transformNode$1,\n genData: genData$2\n };\n\n function transformNode$2(el) {\n var transition = getBindingAttr(el, 'transition');\n if (transition === '\"\"') {\n transition = true;\n }\n if (transition) {\n el.transition = transition;\n }\n var mode = getBindingAttr(el, 'transition-mode');\n if (mode) {\n el.transitionMode = mode;\n }\n }\n\n function genData$3(el) {\n return el.transition ? 'transition:' + el.transition + ',' : '';\n }\n\n function transformCode(el, code) {\n return el.transitionMode ? '_h(\\'TransitionControl\\',{props:{mode:' + el.transitionMode + ',child:' + code + '}})' : code;\n }\n\n var transition$1 = {\n transformNode: transformNode$2,\n genData: genData$3,\n transformCode: transformCode\n };\n\n var modules$1 = [klass$1, style$1, transition$1];\n\n var warn$3 = void 0;\n\n function model$1(el, dir, _warn) {\n warn$3 = _warn;\n var value = dir.value;\n var modifiers = dir.modifiers;\n if (el.tag === 'select') {\n return genSelect(el, value);\n } else {\n switch (el.attrsMap.type) {\n case 'checkbox':\n genCheckboxModel(el, value);\n break;\n case 'radio':\n genRadioModel(el, value);\n break;\n default:\n return genDefaultModel(el, value, modifiers);\n }\n }\n }\n\n function genCheckboxModel(el, value) {\n if (\"development\" !== 'production' && el.attrsMap.checked != null) {\n warn$3('<' + el.tag + ' v-model=\"' + value + '\" checked>:\\n' + 'inline checked attributes will be ignored when using v-model. ' + 'Declare initial values in the component\\'s data option instead.');\n }\n var valueBinding = getBindingAttr(el, 'value');\n var trueValueBinding = getBindingAttr(el, 'true-value') || 'true';\n var falseValueBinding = getBindingAttr(el, 'false-value') || 'false';\n addProp(el, 'checked', 'Array.isArray(' + value + ')' + ('?(' + value + ').indexOf(' + valueBinding + ')>-1') + (':(' + value + ')===(' + trueValueBinding + ')'));\n addHandler(el, 'change', 'var $$a=' + value + ',' + '$$el=$event.target,' + ('$$c=$$el.checked?(' + trueValueBinding + '):(' + falseValueBinding + ');') + 'if(Array.isArray($$a)){' + ('var $$v=' + valueBinding + ',') + '$$i=$$a.indexOf($$v);' + 'if($$c){$$i<0&&$$a.push($$v)}' + 'else{$$i>-1&&$$a.splice($$i,1)}' + ('}else{' + value + '=$$c}'));\n }\n\n function genRadioModel(el, value) {\n if (\"development\" !== 'production' && el.attrsMap.checked != null) {\n warn$3('<' + el.tag + ' v-model=\"' + value + '\" checked>:\\n' + 'inline checked attributes will be ignored when using v-model. ' + 'Declare initial values in the component\\'s data option instead.');\n }\n var valueBinding = getBindingAttr(el, 'value');\n addProp(el, 'checked', '(' + value + ')===(' + valueBinding + ')');\n addHandler(el, 'change', value + '=' + valueBinding);\n }\n\n function genDefaultModel(el, value, modifiers) {\n if (\"development\" !== 'production') {\n if (el.tag === 'input' && el.attrsMap.value) {\n warn$3('<' + el.tag + ' v-model=\"' + value + '\" value=\"' + el.attrsMap.value + '\">:\\n' + 'inline value attributes will be ignored when using v-model. ' + 'Declare initial values in the component\\'s data option instead.');\n }\n if (el.tag === 'textarea' && el.children.length) {\n warn$3('<textarea v-model=\"' + value + '\">:\\n' + 'inline content inside <textarea> will be ignored when using v-model. ' + 'Declare initial values in the component\\'s data option instead.');\n }\n }\n\n var type = el.attrsMap.type;\n\n var _ref = modifiers || {};\n\n var lazy = _ref.lazy;\n var number = _ref.number;\n var trim = _ref.trim;\n\n var event = lazy ? 'change' : 'input';\n var needCompositionGuard = !lazy && type !== 'range';\n\n var valueExpression = '$event.target.value' + (trim ? '.trim()' : '');\n var code = number || type === 'number' ? value + '=_n(' + valueExpression + ')' : value + '=' + valueExpression;\n if (needCompositionGuard) {\n code = 'if($event.target.composing)return;' + code;\n }\n addProp(el, 'value', '_s(' + value + ')');\n addHandler(el, event, code);\n if (needCompositionGuard) {\n // need runtime directive code to help with composition events\n return true;\n }\n }\n\n function genSelect(el, value) {\n if (\"development\" !== 'production') {\n el.children.some(checkOptionWarning);\n }\n var code = value + '=Array.prototype.filter' + '.call($event.target.options,function(o){return o.selected})' + '.map(function(o){return \"_value\" in o ? o._value : o.value})' + (el.attrsMap.multiple == null ? '[0]' : '');\n addHandler(el, 'change', code);\n // need runtime to help with possible dynamically generated options\n return true;\n }\n\n function checkOptionWarning(option) {\n if (option.type === 1 && option.tag === 'option' && option.attrsMap.selected != null) {\n var parentModel = option.parent && option.parent.type === 1 && option.parent.attrsMap['v-model'];\n warn$3('<select v-model=\"' + parentModel + '\">:\\n' + 'inline selected attributes on <option> will be ignored when using v-model. ' + 'Declare initial values in the component\\'s data option instead.');\n return true;\n }\n }\n\n function text(el, dir) {\n if (dir.value) {\n addProp(el, 'textContent', '_s(' + dir.value + ')');\n }\n }\n\n function html(el, dir) {\n if (dir.value) {\n addProp(el, 'innerHTML', '_s(' + dir.value + ')');\n }\n }\n\n var directives$1 = {\n model: model$1,\n text: text,\n html: html\n };\n\n var cache = Object.create(null);\n\n var baseOptions = {\n isIE: isIE,\n expectHTML: true,\n modules: modules$1,\n staticKeys: genStaticKeys(modules$1),\n directives: directives$1,\n isReservedTag: isReservedTag,\n isUnaryTag: isUnaryTag,\n mustUseProp: mustUseProp,\n getTagNamespace: getTagNamespace\n };\n\n function compile(template, options) {\n options = options ? extend(extend({}, baseOptions), options) : baseOptions;\n return compile$1(template, options);\n }\n\n function compileToFunctions(template, options, vm) {\n var _warn = options && options.warn || warn;\n // detect possible CSP restriction\n /* istanbul ignore if */\n if (\"development\" !== 'production') {\n try {\n new Function('return 1');\n } catch (e) {\n if (e.toString().match(/unsafe-eval|CSP/)) {\n _warn('It seems you are using the standalone build of Vue.js in an ' + 'environment with Content Security Policy that prohibits unsafe-eval. ' + 'The template compiler cannot work in this environment. Consider ' + 'relaxing the policy to allow unsafe-eval or pre-compiling your ' + 'templates into render functions.');\n }\n }\n }\n var key = options && options.delimiters ? String(options.delimiters) + template : template;\n if (cache[key]) {\n return cache[key];\n }\n var res = {};\n var compiled = compile(template, options);\n res.render = makeFunction(compiled.render);\n var l = compiled.staticRenderFns.length;\n res.staticRenderFns = new Array(l);\n for (var i = 0; i < l; i++) {\n res.staticRenderFns[i] = makeFunction(compiled.staticRenderFns[i]);\n }\n if (\"development\" !== 'production') {\n if (res.render === noop || res.staticRenderFns.some(function (fn) {\n return fn === noop;\n })) {\n _warn('failed to compile template:\\n\\n' + template + '\\n\\n' + detectErrors(compiled.ast).join('\\n') + '\\n\\n', vm);\n }\n }\n return cache[key] = res;\n }\n\n function makeFunction(code) {\n try {\n return new Function(code);\n } catch (e) {\n return noop;\n }\n }\n\n var idToTemplate = cached(function (id) {\n var el = query(id);\n return el && el.innerHTML;\n });\n\n var mount = Vue.prototype.$mount;\n Vue.prototype.$mount = function (el, hydrating) {\n el = el && query(el);\n var options = this.$options;\n // resolve template/el and convert to render function\n if (!options.render) {\n var template = options.template;\n if (template) {\n if (typeof template === 'string') {\n if (template.charAt(0) === '#') {\n template = idToTemplate(template);\n }\n } else if (template.nodeType) {\n template = template.innerHTML;\n } else {\n if (\"development\" !== 'production') {\n warn('invalid template option:' + template, this);\n }\n return this;\n }\n } else if (el) {\n template = getOuterHTML(el);\n }\n if (template) {\n var _compileToFunctions = compileToFunctions(template, {\n delimiters: options.delimiters,\n warn: warn\n }, this);\n\n var render = _compileToFunctions.render;\n var staticRenderFns = _compileToFunctions.staticRenderFns;\n\n options.render = render;\n options.staticRenderFns = staticRenderFns;\n }\n }\n return mount.call(this, el, hydrating);\n };\n\n /**\n * Get outerHTML of elements, taking care\n * of SVG elements in IE as well.\n */\n function getOuterHTML(el) {\n if (el.outerHTML) {\n return el.outerHTML;\n } else {\n var container = document.createElement('div');\n container.appendChild(el.cloneNode(true));\n return container.innerHTML;\n }\n }\n\n Vue.compile = compileToFunctions;\n\n return Vue;\n\n}));\n\n\n/** WEBPACK FOOTER **\n ** ./~/vue/dist/vue.js\n **/","module.exports = function(module) {\r\n\tif(!module.webpackPolyfill) {\r\n\t\tmodule.deprecate = function() {};\r\n\t\tmodule.paths = [];\r\n\t\t// module.parent = undefined by default\r\n\t\tmodule.children = [];\r\n\t\tmodule.webpackPolyfill = 1;\r\n\t}\r\n\treturn module;\r\n}\r\n\n\n\n/** WEBPACK FOOTER **\n ** (webpack)/buildin/module.js\n **/","\nimport CutoutVue from './Cutout.vue'\n\nexport default {\n\n\t\tinit: function () {\n\t\t\tnew Vue(CutoutVue);\n\t\t}\n}\n\n\n/** WEBPACK FOOTER **\n ** ./src/components/cutout/index.js\n **/","/* Enabling us to resize a shape width a handler \n\t#http://stackoverflow.com/questions/32390028/how-to-drag-and-resize-svg-rectangle-using-cursor-types\n*/\nimport { eventEmitter } from \"../utils\"\n\nvar ShapeResizer = function (paper, shape, vp, vb) {\n\tthis.paper = paper;\n\tthis.shape = shape;\n\tthis.handlers = [];\n\tthis.viewPort = vp;\n\tthis.viewBox = vb;\n\tthis.isResizing = false;\n\tthis.currentPosition = {};\n\tthis.HANDLER_SIZE = 8;\n\tthis.SHAPE_MIN_SIZE = 20;\n\tthis.states = {};\n\tthis.noop = function (){}\n\tthis.init();\n}\n\nvar api = ShapeResizer.prototype = {\n\n\tinit: function () {\n\t\tthis.showHandlers();\n\n\t},\n\t\n\tcomputeHandlerSize: function () {\n\t\treturn this.HANDLER_SIZE * (Math.min(this.viewBox[2], this.viewBox[3])) / this.viewPort.width; //w==h\n\t},\n\n\tshowHandlers: function () {\n\t\t/* show handler here */\n\t\tvar bbox = this.shape.getBBox();\n\t\tvar handleX = bbox.x - (this.computeHandlerSize()/2);\n\t\tvar handleY = bbox.y - (this.computeHandlerSize()/2);\n\t\tvar handler = this.paper.rect(handleX, handleY, this.computeHandlerSize(), this.computeHandlerSize()).attr({fill: 'red'});\n\t\thandler.addClass(\"drawingHandler\");\n\t\tthis.shape.addClass(\"drawingHandler\");\n\t\tvar handlerInfos = {position: \"t_r\", handler: handler};\n\t\tthis.handlers.push(handlerInfos);\n\t\tthis.shapesGroup = this.paper.g(this.shape, handler);\n\t\tthis.attachEvents();\n\t},\n\n\t/*one handlers */\n\tupdateShapePositions: function (handlerData, dx, dy) {\n\t\t//start\n\t\tvar handlerBBox = handlerData.handler.getBBox();\n\t\tvar shapeBBox = this.shape.data(\"origBbox\");\n\t\tvar newX = handlerBBox.x + (this.computeHandlerSize() / 2);\n\t\tvar newY = handlerBBox.y + (this.computeHandlerSize() / 2);\n\n\t\t/*to the right => reduce the size */\n\t\tvar newWidth = (dx > 0) ? shapeBBox.width - dx : shapeBBox.width + Math.abs(dx); \n\t\tvar newHeight = (dy > 0) ? shapeBBox.height - dy : shapeBBox.height + Math.abs(dy);\n\t\t\n\t\tvar transformValue = this.shape.data('origTransform') + (this.shape.data('origTransform') ? \"T\" : \"t\") + [dx, dy];\n\t\tthis.shape.attr({'transform': transformValue, width: newWidth, height: newHeight});\n\t},\n\n\tdragEvents: {\n\t\tonStart: function (handlerData, dx, dy, e) {\n\t\t\tthis.startPosition = {x: e.clientX, y: e.clientY};\n\t\t\tthis.isResizing = true;\n\t\t\tthis.currentPosition = {};\n\t\t\thandlerData.handler.data(\"origTransform\", handlerData.handler.transform().local);\n\t\t\tthis.shape.data(\"origBbox\", this.shape.getBBox());\n\t\t\tthis.shape.data(\"origBounding\", this.shape.node.getBoundingClientRect());\n\t\t\tthis.shape.data(\"origTransform\", this.shape.transform().local);\n\t\t},\n\n\t\tonMove: function (handlerData, dx, dy, x, y, e) {\n\t\t\t\n\t\t\tvar tdx, tdy;\n var snapInvMatrix = handlerData.handler.transform().diffMatrix.invert();\n snapInvMatrix.e = snapInvMatrix.f = 0;\n tdx = snapInvMatrix.x( dx,dy ); \n tdy = snapInvMatrix.y( dx,dy );\n\n\t\t\tthis.currentPosition.x = e.clientX;\n\t\t\tthis.currentPosition.y = e.clientY;\n\t\t\tif (! this.checkBondaries(dx, dy)) { return; }\n\n\t\t\thandlerData.handler.transform( \"t\" + [ tdx, tdy ] + handlerData.handler.data(\"origTransform\") );\n\t\t\tthis.updateShapePositions(handlerData, tdx, tdy);\n\t\t},\n\n\t\tonStop: function () {\n\t\t\tthis.isResizing = false;\n\t\t\tthis.startPosition = {};\n\t\t\tthis.currentPosition = {};\n\t\t}\n\t},\n\t\n\tcheckBondaries: function (dx, dy) {\n\t\tvar result = true;\n\t\tvar origBounding = this.shape.data(\"origBounding\");\n\t\tvar getBoundingClientRect = this.shape.node.getBoundingClientRect();\n\n\t\tif (origBounding.width - dx <= this.SHAPE_MIN_SIZE) {\n\t\t\tresult = false;\n\t\t}\n\n\t\tif (origBounding.height - dy <= this.SHAPE_MIN_SIZE) {\n\t\t\tresult = false;\n\t\t}\n\n\t\treturn result;\n\t},\n\n\tdestroy: function () {\n\t\tthis.handlers.map(function (handlerData) {\n\t\t\thandlerData.handler.remove();\n\t\t});\n\t\tdelete this;\n\t},\n\n\tgetZoomFactor: function () {\n\t\treturn { \n\t\t\t\tx: this.viewPort.width / this.viewBox[2],\n\t\t\t\ty: this.viewPort.height / this.viewBox[3]\n\t\t};\n\t},\n\n\tattachEvents: function () {\n\t\tvar self = this;\n\t\tthis.handlers.map(function (handlerData) {\n\t\t\thandlerData.handler.drag(\n\t\t\t\tself.dragEvents.onMove.bind(self, handlerData),\n\t\t\t \tself.dragEvents.onStart.bind(self, handlerData),\n\t\t\t\tself.dragEvents.onStop.bind(self, handlerData));\n\t\t});\n\n\t\teventEmitter.on(\"cutout:clear\", function () {\n\t\t\tself.destroy();\n\t\t});\n\t\t\n\t\tthis.shapesGroup.drag(function (dx, dy) {\n\t\t\tif (self.isResizing) { return; }\n var snapInvMatrix = this.transform().diffMatrix.invert();\n snapInvMatrix.e = snapInvMatrix.f = 0;\n var tdx = snapInvMatrix.x( dx,dy ); \n var tdy = snapInvMatrix.y( dx,dy );\n\n\t\t\tvar transformValue = this.data('origTransform') + (this.data('origTransform') ? \"T\" : \"t\") + [tdx, tdy];\n\t\t\tthis.transform(transformValue);\n\t\t}, function () {\n\t\t\tthis.data('origTransform', this.transform().local);\n\t\t}, this.noop);\n\t},\n}\n\nexport default {\n\n\tenable_resizer : function (paper, rect, viewPort, cViewbox) {\n\t\tnew ShapeResizer(paper, rect, viewPort, cViewbox);\n\t}\n}\n\n\n/** WEBPACK FOOTER **\n ** ./src/components/cutout/shape-resizer.js\n **/","\n\nimport Snap from 'snapsvg'\nimport ShapeResizer from './shape-resizer'\nimport { eventEmitter } from '../utils'\nimport SnapsvgZoom from './snapsvg-zoom'\n\n/* custom plugins */\nSnap.plugin(function (Snap, Element, Paper, glob) {\n\tvar elproto = Element.prototype;\n\n\telproto.toBack = function () {\n\t\tthis.prependTo(this.paper);\n\t};\n\n\telproto.toFront = function () {\n\t\tthis.appendTo(this.paper);\n\t};\n});\n\nElement.prototype.getTransformedXY = function( x, y ) {\n var m = this.transform().globalMatrix;\n return { x: m.x(x,y), y: m.y(x,y) }; \n };\n\nvar paper = null;\nvar mainImage = null;\nvar pointData = [];\nvar viewBoxBounds = {X: 100, Y:100};\nvar zoomFactor = {x:1, y:1};\nvar viewPort= {width:850, height:850};\nvar currentViewBox = []; \nvar config = null;\nvar readOnly = false;\nvar startPoint = null;\nvar drawing_path = null;\nvar canDraw = false;\nvar rectZone = null;\nvar PATH_COLOR = \"#ff00ff\";\nvar STROKE_COLOR = \"red\";\nvar FILL_COLOR = \"orange\";\n\nvar SELECTED_COLOR = \"#ffff00\";\nvar FIRST_NODE_COLOR = \"#FF0000\";\nvar HANDLE_SIZE = 8;\nvar isDragged = false;\nvar enablePoint = true;\nvar pathIsClosed = false;\nvar ENABLE_NEW_NODE = true;\nvar RECT_MODE ='RECT';\nvar drawingMode = RECT_MODE; //free\nvar FREE_MODE = 'FREE';\nvar availableModes = [RECT_MODE, FREE_MODE];\nvar onChangeCallback = null;\n\nvar getId = (function () {\n\t\tvar cpt = 0;\n\t\tvar defautPrefix = \"item_\"; \n\t\treturn function (prefix) {\n\t\t\tprefix = (typeof prefix === 'string') ? prefix : defautPrefix;\n\t\t\tcpt = cpt + 1;\n\t\t\treturn prefix + cpt; \n\t\t}\n\t}());\n\nvar handleRectPath = function (path) {\n\tif (readOnly) {\n\t\tpaper.path(path).attr({ stroke:'red', opacity: 0.6});\n\t\treturn;\n\t}\n\n\tvar bbBox = Snap.path.getBBox(path);\n\trectZone = paper.rect(bbBox.x, bbBox.y, bbBox.width, bbBox.height);\n\trectZone.attr({fill: FILL_COLOR, stroke: STROKE_COLOR, opacity: 0.6});\n\tdrawing_path = rectZone;\n\tcanDraw = false;\n\tpathIsClosed = true;\n\tShapeResizer.enable_resizer(paper, drawing_path, viewPort, currentViewBox);\n};\n\n\nvar handleFreePath = function (path) {\n\n\tif (readOnly) {\n\t\t\n\t\tpaper.path(path).attr({\n\t\t\tstroke: 'orange',\n\t\t\tfill: 'orange',\n\t\t\topacity: 0.5,\n\t\t});\n\n\t\treturn; \n\t}\n\n\tvar pathInfos = Snap.parsePathString(path);\n\tpathInfos.map(function (pathData) {\n\t\tif(pathData[0] !== 'Z') {\n\t\t\tcreatePoint(paper, pathData[1], pathData[2], pointData);\n\t\t} else {\n\t\t\tpathIsClosed = true;\n\t\t\tupdatePath(paper, onClosePath);\n\t\t}\n\t});\n\n\t/* replay the path here */\n\n}; \n//transform point to path\nvar updatePath = function (paper, updateCallback) {\n\tvar path = \"M\";\n\n\tif (pointData.length <= 1) {\n\t\treturn;\n\t}\n\n\tpath += pointData[0].x + ',' + pointData[0].y;\n\n\tfor (var i=0; i < pointData.length; i++) {\n\t\tif (i == 0) continue;\n\n\t\tvar pointInfos = pointData[i];\n\t\tvar lPath = \"L\" + pointInfos.x + \",\" + pointInfos.y;\n\t\tpath += \" \" + lPath;\n\t}\n\t\n\tpath += (pathIsClosed) ? \" Z\": \"\";\n\n\t/* remove prev path */\n\tif (drawing_path) {\n\t\tdrawing_path.remove();\n\t}\t\n\n\tdrawing_path = paper.path(path);\n\n\tdrawing_path.attr({\n\t\tstroke: STROKE_COLOR,\n\t\t\"vector-effect\": \"non-scaling-stroke\",//prevent line to be zoom in\n\t\t\"stroke-width\": 3,\n\t\tfill: \"white\",\n\t\topacity: 0.1\n\t});\n\t\n\t/* bring all handler to front */\n\tpointData.map(function (point) {\n\t\t\n\t\t/*deal with handler size */\n\t\tvar handleSize = computeHandleSize();\n\t\tif (point.handler) {\n\t\t\tpoint.handler.toFront();\n\t\t}\n\t});\n\n\tif (typeof updateCallback === 'function' && pathIsClosed) {\n\t\tupdateCallback();\n\t}\n\n\tif (!updateCallback && pathIsClosed) {\n\t\tapplyClosedStyle();\t\n\t}\n};\n\nvar applyClosedStyle = function () {\n\tdrawing_path.attr({ fill: FILL_COLOR, strokeWidth: 1, opacity:.6 });\n} \n\nvar onClosePath = function () {\n\tENABLE_NEW_NODE = false;\n\tapplyClosedStyle();\n};\n\n\nvar onClickOnHandler = function (point, p, e) {\n\t//close path\n\tif (point.isFirst && pointData.length > 2) {\n\t\tpathIsClosed = true;\n\t}\n};\n\nvar updatePointPosition = function (newPoint, x, y) {\n\tvar index = pointData.indexOf(newPoint);\n\tif (index !== -1) {\n\t\tpointData[index].x = x;\n\t\tpointData[index].y = y; \n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n};\n\nvar clearPreviousPath = function () {\n\tdrawing_path.remove();\n};\n\nvar computeHandleSize = function () {\n\n\tif(!currentViewBox.length) {\n\t\tcurrentViewBox = [0, 0, parseInt(mainImage.width()), parseInt(mainImage.height())]\n\t}\n\tvar currentHandleSize = HANDLE_SIZE * Math.min(currentViewBox[2], currentViewBox[3]) / 850; \n\treturn currentHandleSize;\n}\n \nvar onMoveHandler = function (dx, dy, posX, posY, e) {\n\tisDragged = true;\n\tvar tdx, tdy;\n var snapInvMatrix = this.transform().diffMatrix.invert();\n snapInvMatrix.e = snapInvMatrix.f = 0;\n tdx = snapInvMatrix.x( dx,dy ); \n tdy = snapInvMatrix.y( dx,dy );\n\tvar transformValue = this.data('origTransform') + (this.data('origTransform') ? \"T\" : \"t\") + [tdx, tdy];\n\tthis.attr({ transform: transformValue});\n\tvar boxSize = this.getBBox();\n\n\tvar wasUpdated = updatePointPosition(this.data('point'), boxSize.x + (computeHandleSize() / 2) , boxSize.y + (computeHandleSize() / 2));\n\t\n\tif (wasUpdated) {\n\t\tupdatePath(this.paper);\n\t}\n}\n\nvar bindHandlerEvent = function (point, p) {\n\tpoint.handler.click(onClickOnHandler.bind(this, point, p));\n\t/* -- handler -- */\n\tpoint.handler.hover(function () {\n\t\tpoint.handler.attr({fill: 'yellow'});\n\t}, function () {\n\t\tvar fillColor = point.isFirst ? FIRST_NODE_COLOR : \"\";\n\t\tpoint.handler.attr({fill: fillColor});\n\t});\n\t\n\tpoint.handler.drag(onMoveHandler, function () {\n this.data('origTransform', this.transform().local );\n\t}, function () {\n\t\tif (!isDragged) { return true; }\n\t\tisDragged = false;\n\t\tenablePoint = false;\n\t});\n}\n\nvar createPointHandler = function (p, point) {\n\tvar handler;\n\tvar handleSize = computeHandleSize();\n\tvar handleX = point.x - handleSize / 2;\n\tvar handleY = point.y - handleSize / 2;\n\n\t/* preserve initial size of 5px a quoi correspond 5 deal with current vp */\n\thandler = p.rect(handleX, handleY, handleSize, handleSize);\n\t\n\thandler.addClass(\"drawingHandler\");\n\tpoint.handler = handler;\n\tpoint.handler.data('point', point);\n\tif (pointData.length === 0) {\n\t\tpoint.isFirst = true;\n\t}\n\t\n\tbindHandlerEvent(point, p);\n\tpoint.handler.attr({\n\t\tfill: (pointData.length === 0) ? FIRST_NODE_COLOR : \"\",\n\t\topacity: 0.9,\n\t\tstroke: PATH_COLOR\n\t});\n\n\treturn point;\n}\n\n//create paper\nvar createPoint = function (paper, x, y, pointData) {\n\n\tvar point = {x:x, y:y, id: getId()};\n\n\tif (pathIsClosed) {\n\t\tupdatePath(paper, onClosePath);\n\t\treturn;\n\t}\n\n\tif (!enablePoint) {\n\t\tenablePoint = true;\n\t\treturn false;\n\t}\n\n\tpoint = createPointHandler(paper, point);\n\tpointData.push(point);\n\tupdatePath(paper);\n};\n\nvar attachRectEvents = function (paper) {\n\tif (readOnly) { return false; }\n\n\tvar startPosition = {};\n\tvar currentPosition = {};\n\t/* add resizer */\n\n\tpaper.mousedown(function (e) {\n\n\t\tif (drawingMode === FREE_MODE || pathIsClosed) { return; }\n\t\tstartPosition.x = e.offsetX;\n\t\tstartPosition.y = e.offsetY;\n\t\tcanDraw = true;\n\t});\n\n\tpaper.mousemove(function (e) {\n\t\tif (drawingMode === FREE_MODE) { return; }\n\t\tif (!canDraw) { return; }\n\t\tvar x, y;\n\t\tcurrentPosition.x = e.offsetX;\n\t\tcurrentPosition.y = e.offsetY;\n\t\t\n\t\tif (rectZone) {\n\t\t\trectZone.remove();\n\t\t}\n\n\t\t/* bas -> droite */\n\t\tvar width = Math.abs(currentPosition.x - startPosition.x);\n\t\tvar height = Math.abs(startPosition.y - currentPosition.y);\n\n\t\tif (currentPosition.y > startPosition.y && currentPosition.x > startPosition.x) {\n\t\t\tx = startPosition.x;\n\t\t\ty = startPosition.y;\t\n\t\t}\n\t\t\n\t\t/* haut -> droite */\n\t\tif (currentPosition.y < startPosition.y && currentPosition.x > startPosition.x) {\n\t\t\tx = currentPosition.x - width;\n\t\t\ty = currentPosition.y; \n\t\t}\n\t\t\n\t\t/* haut -> gauche */\n\t\tif (currentPosition.y < startPosition.y && currentPosition.x < startPosition.x) {\n\t\t\tx = currentPosition.x;\n\t\t\ty = currentPosition.y;\n\t\t}\n\n\t\t/* bas -> gauche */\n\t\tif (currentPosition.y > startPosition.y && currentPosition.x < startPosition.x) {\n\t\t\tx = currentPosition.x\n\t\t\ty = currentPosition.y - height;\n\t\t}\n\t\tif(!x || !y) { return; }\t\n\n\t\trectZone = paper.rect(x, y, width, height);\n\t\trectZone.attr({fill: FILL_COLOR, stroke: STROKE_COLOR, opacity: 0.6});\n\t});\n\n\n\tpaper.mouseup(function () {\n\t\tif ((drawingMode === FREE_MODE) || pathIsClosed || !rectZone) { return false; }\n\t\tdrawing_path = rectZone;\n\t\tShapeResizer.enable_resizer(paper, rectZone, viewPort, currentViewBox);\n\t\tcanDraw = false;\n\t\tpathIsClosed = true;\n\t});\n};\nvar attachPointEvents = function (paper) {\n\tif (readOnly) { return; }\n\tpaper.click( function(e) {\n\t\tif (drawingMode === RECT_MODE) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif (!ENABLE_NEW_NODE) { return true; }\n\t\tcreatePoint(paper, e.offsetX, e.offsetY, pointData);\n\t});\n};\n\n\nvar attachZoomEvents = function () {\n\n\teventEmitter.on(\"zoomChanged\", function (zoomInfos) {\n\t\tzoomFactor = zoomInfos.zoomFactor;\n\t\tcurrentViewBox = zoomInfos.currentViewBox;\n\t\tvar previousPath = API.getPath();\n\t\tAPI.clear();\n\t\tAPI.setPath(previousPath);\n\t});\n\n}\n\n\nvar API = {\n\n\tgetPaper: function () {\n\t\treturn paper;\n\t},\n\n\tsetPath: function (pathString) {\n\t\t/* redraw the path */\n\t\tvar pathInfos = pathString.split(';');\n\t\tif ( availableModes.indexOf(pathInfos[1]) === -1) {\n\t\t\t/* We assume then it is a free path */\n\t\t\tpathInfos[1] = \"FREE\"; \n\t\t}\n\n\t\tthis.setDrawingMode(pathInfos[1]);\n\t\tvar pathData = pathInfos[0];\n\t\t\n\t\tif (!pathData.length) {\n\t\t\treturn;\n\t\t}\n\t\t/* deal with path nomalization x = ImageWith/MaxXBound */\n\t\tvar xRatio = mainImage.attr(\"width\") / viewBoxBounds.X;\n\t\tvar yRatio = mainImage.attr(\"height\") / viewBoxBounds.Y;\n\t\t\n\t\tif (isNaN(xRatio) || isNaN(yRatio)) {\n\t\t\tnew Error('Ratio should be a number.');\n\t\t}\n\n\t\tvar transformMatrix = Snap.matrix(xRatio, 0, 0, yRatio, 0, 0);\n\t\tvar path = Snap.path.map(pathData, transformMatrix).toString();\n\t\t\n\t\t/* always close path */\n\t\tif (path.search(/[z|Z]/gi) === -1 ) {\n\t\t\tpath += \"Z\";\n\t\t}\n\t\tif (pathInfos.length >= 2) {\n\t\t\tif (pathInfos[1] === RECT_MODE) {\n\t\t\t\thandleRectPath(path);\n\t\t\t}\n\n\t\t\tif (pathInfos[1] === FREE_MODE) {\n\t\t\t\thandleFreePath(path);\n\t\t\t}\n\t\t}\n\t},\n\n\tsetDrawingMode: function (mode) {\n\t\t\n\t\tif (availableModes.indexOf(mode) !== -1) {\n\t\t\tdrawingMode = mode;\n\t\t}\n\t\tif (typeof onChangeCallback === \"function\") {\n\t\t\tonChangeCallback(drawingMode);\n\t\t}\n\n\t\tthis.clear();\n\t},\n\t\n\tclear: function () {\n\t\t/* clear previous path, point, handler */\n\t\tpointData.map(function (point) {\n\t\t\tif (point.handler) {\n\t\t\t\tpoint.handler.remove();\n\t\t\t}\n\t\t});\n\n\t\t/*clear path is exists*/\n\t\t if (drawing_path) {\n\t\t \tdrawing_path.remove();\n\t\t }\t\t\n\t\teventEmitter.emit(\"cutout:clear\");\n\t\tpointData = [];\n\t\tstartPoint = null;\n\t\tdrawing_path = null;\n\t\tisDragged = false;\n\t\tenablePoint = true;\n\t\tpathIsClosed = false;\n\t\tENABLE_NEW_NODE = true;\n\t},\n\n\tgetShapeBBox: function () {\n\t\tvar currentPath = this.getPath();\n\t\treturn Snap.path.getBBox(currentPath);\n\t},\n\t\n\tgetShape: function () {\n\t\treturn this.getPath();\n\t},\n\n\tgetPath: function () {\n\t\t/* retourne le chemin */\n\t\t/* send path and BBox | implement edit and load path */\n\t\tvar path = \"\";\n\t\tif (drawing_path) {\n\t\t\tif (drawingMode === RECT_MODE) {\n\t\t\t\tvar bBox = drawing_path.getBBox();\n\t\t\t\tvar transform = drawing_path.transform();\n\n\t\t\t\tif (!transform.global.length) {\n\t\t\t\t\tvar shapePath = drawing_path.getBBox().path;\n\t\t\t\t}\n\n\t\t\t\telse {\n\t\t\t\t\t\n\t\t\t\t\tvar shapeX = drawing_path.node.getAttribute('x');\n\t\t\t\t\tvar shapeY = drawing_path.node.getAttribute('y');\n\t\t\t\t\tvar transformMatrix = transform.totalMatrix;\n\t\t\t\t\tvar fakeShape = paper.rect(transformMatrix.x(shapeX, shapeY),transformMatrix.y(shapeX, shapeY), bBox.width, bBox.height);\n\t\t\t\t\tshapePath = fakeShape.getBBox().path;\n\t\t\t\t\tfakeShape.remove();\n\t\t\t\t}\n\n\t\t\t\tpath = Snap.path.toAbsolute(shapePath).toString();\n\n\t\t\t}\n\t\t\telse {\n\t\t\t\tpath = drawing_path.attr('d');\n\t\t\t}\n\t\t}\n\n\t\tvar xRatio = viewBoxBounds.X / mainImage.attr(\"width\");\n\t\tvar yRatio = viewBoxBounds.Y / mainImage.attr(\"height\");\n\n\t\tif(isNaN(xRatio) || isNaN(yRatio)) {\n\t\t\tnew Error('ratio should be a number.');\n\t\t}\n\n\t\tif (!path.length) {\n\t\t\tpath = (drawingMode === RECT_MODE) ? \";RECT\" : \";FREE\";\n\t\t\treturn path;\n\t\t}\n\t\tvar normalizeMatrix = Snap.matrix(xRatio, 0, 0, yRatio, 0, 0);\n\n\t\tpath = Snap.path.map(path, normalizeMatrix).toString();\n\n\t\t\t\t/* save the type */\n\t\tvar type = (drawingMode === RECT_MODE) ? \";RECT\" : \";FREE\";\n\t\tif (path.search(/[z|Z]/gi) === -1) {\n\t\t\tpath += \" Z\";\t\n\t\t}\n\t\t\n\t\tpath += type;\n\n\n\t\treturn path;\n\t}\n};\n\n/* change to a component */\nexport default {\n\n\tinit: function(config) {\n\t\tmainImage = jQuery(config.wrapperId).find('.main-image').eq(0);\n\t\tvar cutCanvas = jQuery(config.wrapperId).find('.cut-canvas').eq(0);\n\t\tvar path = jQuery(config.wrapperId).find('.image-path').eq(0);\n\n\t\tif (typeof config.onDrawingModeChange === 'function') {\n\t\t\tonChangeCallback = config.onDrawingModeChange;\n\t\t}\n\t\t\n\t\tif (!mainImage.length) {\n\t\t\tthrow new Error(\"The main image Can't be found ...\");\n\t\t}\n\n\t\tif (!cutCanvas.length) {\n\t\t\tvar cutCanvas = jQuery('<svg version=\"1.1\"></svg>').addClass('cut-canvas');\n\t\t\tjQuery(config.wrapperId).append(cutCanvas);\n\t\t\tcutCanvas.append(mainImage);\n\t\t}\n\n\t\t\n\n\t\tcutCanvas.css({\n\t\t\tmarginLeft: 'auto',\n\t\t\tmarginRight: 'auto',\n\t\t\twidth: viewPort.width,\n\t\t\theight: viewPort.height,\n\t\t});\n\t\tif (typeof config.readOnly === 'boolean' && config.readOnly === true) {\n\t\t\treadOnly = true;\n\t\t}\n\n\t\tpaper = new Snap(cutCanvas.get(0));\n\n\t\tif (path.length) {\n\t\t\tjQuery(cutCanvas).append(path);\n\t\t\tvar pathData = path.attr(\"d\");\n\t\t\tAPI.setPath(pathData);\n\t\t\tpath.remove();\n\t\t}\n\t\t/* enable zoom */\n\t\tattachZoomEvents();\n\t\tattachPointEvents(paper);\n\t\tattachRectEvents(paper);\n\n\t\treturn API;\n\t}\n};\n\n\n/** WEBPACK FOOTER **\n ** ./src/components/cutout/svgboard.js\n **/","exports = module.exports = require(\"./../../../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \"Typeahead[data-v-1]{position:relative}.selected-tags[data-v-1]{border:1px solid red;width:200px!important}.selected-tags select[data-v-1]{display:inline-block}.Typeahead__input[data-v-1]{width:100%;font-size:14px;color:#2c3e50;line-height:1.42857143;box-shadow:inset 0 1px 4px rgba(0,0,0,.4);-webkit-transition:border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;font-weight:300;padding:12px 26px;border:none;border-radius:22px;letter-spacing:1px;box-sizing:border-box}.Typeahead__input[data-v-1]:focus{border-color:#4fc08d;outline:0;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px #4fc08d}.tag-item[data-v-1]{border:1px solid red}.fa-times[data-v-1]{cursor:pointer}ul[data-v-1]{padding:0;margin-top:8px;min-width:100%;background-color:#fff;list-style:none;border-radius:4px;box-shadow:0 0 10px rgba(0,0,0,.25);z-index:1000}li[data-v-1]{padding:10px 16px;border-bottom:1px solid #ccc;cursor:pointer}li[data-v-1]:first-child{border-radius:4px 4px 0 0}li[data-v-1]:last-child{border-radius:0 0 4px 4px;border-bottom:0}span[data-v-1]{display:block;color:#2c3e50}.active[data-v-1]{background-color:#3aa373}.active span[data-v-1]{color:#fff}.name[data-v-1]{font-weight:700;font-size:18px}.screen-name[data-v-1]{font-style:italic}\", \"\"]);\n\n// exports\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/css-loader!./~/vue-loader/lib/style-rewriter.js?id=data-v-1&scoped=true!./src/components/typeahead/style.css\n ** module id = 36\n ** module chunks = 0\n **/","module.exports = global[\"$\"] = require(\"-!C:\\\\projects\\\\iconolab-iri\\\\src_js\\\\iconolab-bundle\\\\node_modules\\\\babel-loader\\\\index.js?{\\\"presets\\\":[\\\"es2015\\\"]}!C:\\\\projects\\\\iconolab-iri\\\\src_js\\\\iconolab-bundle\\\\node_modules\\\\jquery\\\\dist\\\\jquery.js\");\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/expose-loader?$!./~/jquery/dist/jquery.js\n ** module id = 37\n ** module chunks = 0\n **/","module.exports = global[\"Vue\"] = require(\"-!C:\\\\projects\\\\iconolab-iri\\\\src_js\\\\iconolab-bundle\\\\node_modules\\\\babel-loader\\\\index.js?{\\\"presets\\\":[\\\"es2015\\\"]}!C:\\\\projects\\\\iconolab-iri\\\\src_js\\\\iconolab-bundle\\\\node_modules\\\\vue\\\\dist\\\\vue.js\");\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/expose-loader?Vue!./~/vue/dist/vue.js\n ** module id = 38\n ** module chunks = 0\n **/","module.exports = global[\"jQuery\"] = require(\"-!C:\\\\projects\\\\iconolab-iri\\\\src_js\\\\iconolab-bundle\\\\node_modules\\\\babel-loader\\\\index.js?{\\\"presets\\\":[\\\"es2015\\\"]}!C:\\\\projects\\\\iconolab-iri\\\\src_js\\\\iconolab-bundle\\\\node_modules\\\\jquery\\\\dist\\\\jquery.js\");\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/expose-loader?jQuery!./~/jquery/dist/jquery.js\n ** module id = 39\n ** module chunks = 0\n **/","var __vue_exports__, __vue_options__\n\n/* script */\n__vue_exports__ = require(\"!!babel-loader!vue-loader/lib/selector?type=script&index=0!./Cutout.vue\")\n__vue_options__ = __vue_exports__ || {}\nif (__vue_options__.__esModule) __vue_options__ = __vue_options__.default\nif (typeof __vue_options__ === \"function\") __vue_options__ = __vue_options__.options\n\nmodule.exports = __vue_exports__ || __vue_options__\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/cutout/Cutout.vue\n ** module id = 40\n ** module chunks = 0\n **/","var __vue_exports__, __vue_options__\n\n/* script */\n__vue_exports__ = require(\"!!babel-loader!vue-loader/lib/selector?type=script&index=0!./MergeTool.vue\")\n__vue_options__ = __vue_exports__ || {}\nif (__vue_options__.__esModule) __vue_options__ = __vue_options__.default\nif (typeof __vue_options__ === \"function\") __vue_options__ = __vue_options__.options\n\nmodule.exports = __vue_exports__ || __vue_options__\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/mergetool/MergeTool.vue\n ** module id = 41\n ** module chunks = 0\n **/","var __vue_exports__, __vue_options__\n\n/* script */\n__vue_exports__ = require(\"!!babel-loader!vue-loader/lib/selector?type=script&index=0!./Taglist.vue\")\n\n/* template */\nvar __vue_template__ = require(\"!!vue-loader/lib/template-compiler?id=data-v-5!./template.html\")\n__vue_options__ = __vue_exports__ || {}\nif (__vue_options__.__esModule) __vue_options__ = __vue_options__.default\nif (typeof __vue_options__ === \"function\") __vue_options__ = __vue_options__.options\n__vue_options__.render = __vue_template__.render\n__vue_options__.staticRenderFns = __vue_template__.staticRenderFns\n\nmodule.exports = __vue_exports__ || __vue_options__\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/taglist/Taglist.vue\n ** module id = 42\n ** module chunks = 0\n **/","module.exports={render:function(){with(this){return _h('div',[_h('taglist',{ref:\"taglist\"}),\" \",\" \",_h('input',{directives:[{name:\"show\",value:(!readOnly),expression:\"!readOnly\"},{name:\"model\",value:(query),expression:\"query\"}],show:true,props:{\"value\":_s(query)},staticAttrs:{\"type\":\"text\",\"placeholder\":\"...\",\"autocomplete\":\"off\"},on:{\"keyup\":[function($event){if($event.keyCode!==8)return;checkQuery($event)},update],\"keydown\":[function($event){if($event.keyCode!==40)return;down($event)},function($event){if($event.keyCode!==38)return;up($event)},function($event){if($event.keyCode!==13)return;hit($event)},function($event){if($event.keyCode!==27)return;reset($event)}],\"input\":function($event){if($event.target.composing)return;query=$event.target.value}}}),\" \",_h('a',{directives:[{name:\"show\",value:(showAddButton),expression:\"showAddButton\"}],show:true,on:{\"click\":addTag}},[_m(0),\" Créer ce tag\"]),\" \",\" \",_h('ul',{directives:[{name:\"show\",value:(hasItems || !readOnly),expression:\"hasItems || !readOnly\"}],show:true},[(items)&&_l((items),function(item,index){return _h('li',{class:activeClass(index),on:{\"mousedown\":hit,\"mousemove\":function($event){setActive(index)}}},[_h('span',{props:{\"textContent\":_s(item.tag_label)}})])})]),\" \",_h('input',{directives:[{name:\"model\",value:(selectedTags),expression:\"selectedTags\"}],props:{\"value\":_s(selectedTags)},staticAttrs:{\"name\":\"tags\",\"type\":\"hidden\"},on:{\"input\":function($event){if($event.target.composing)return;selectedTags=$event.target.value}}})])}},staticRenderFns: [function(){with(this){return _h('i',{staticClass:\"fa fa-plus\"})}}]}\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vue-loader/lib/template-compiler.js?id=data-v-1!./src/components/typeahead/template.html\n ** module id = 43\n ** module chunks = 0\n **/","module.exports={render:function(){with(this){return _h('div',{staticClass:\"zoomview-wrapper\"},[_m(0),\" \",_h('svg',{ref:\"root-svg\"},[_h('image',{attrs:{\"xlink:href\":imageUrl,\"width\":imageWidth,\"height\":imageHeight},staticAttrs:{\"id\":\"small-image\",\"x\":\"0\",\"y\":\"0\",\"xmlns:xlink\":\"http://www.w3.org/1999/xlink\"}}),\" \",_h('rect',{directives:[{name:\"show\",value:(showHandler),expression:\"showHandler\"}],ref:\"handler\",show:true,staticAttrs:{\"id\":\"zoom-handler\",\"x\":\"0\",\"y\":\"0\",\"style\":\"fill:black; opacity:0.4\"}})]),\" \",_h('ul',{staticClass:\"form-drawing-wrapper zoom-action-list list-inline\"},[_h('li',{staticClass:\"small showPointer\",on:{\"click\":incraseDrawingZoom}},[_m(1)]),\" \",_h('li',{staticClass:\"small showPointer\",on:{\"click\":resetDrawingZoom}},[_m(2)]),\" \",_h('li',{staticClass:\"small showPointer\",on:{\"click\":decreaseDrawingZoom}},[_m(3)])])])}},staticRenderFns: [function(){with(this){return _h('p',{staticClass:\"form-drawing pullright\"},[_h('strong',[\"Zoom\"])])}},function(){with(this){return _h('i',{staticClass:\"fa fa-search-plus\"})}},function(){with(this){return _h('i',{staticClass:\"fa fa-square\"})}},function(){with(this){return _h('i',{staticClass:\"fa fa-search-minus\"})}}]}\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vue-loader/lib/template-compiler.js?id=data-v-2!./src/components/zoomview/template.html\n ** module id = 44\n ** module chunks = 0\n **/","module.exports={render:function(){with(this){return _h('div',[_h('ul',{directives:[{name:\"show\",value:(!readOnly),expression:\"!readOnly\"}],staticClass:\"tags-wrapper list-unstyled\",show:true},[(tags)&&_l((tags),function(tag,index){return _h('li',{ref:tag.id,refInFor:true,staticClass:\"tag-item\"},[_m(0),\" \",_h('strong',[_h('span',{props:{\"textContent\":_s(tag.tag_label)}})]),\"\\n\\n\\t\\t\\tPrécision: \\t\",_h('select',{on:{\"change\":function($event){updateAccuracy($event, tag)}}},[([1,2,3,4,5])&&_l(([1,2,3,4,5]),function(no,index){return _h('option',{props:{\"selected\":tag.accuracy == no,\"value\":no}},[_s(no)])})]),\"\\n\\n\\t\\t\\tPertinence: \",_h('select',{on:{\"change\":function($event){updatePertinence($event, tag)}}},[([1,2,3,4,5])&&_l(([1,2,3,4,5]),function(no,index){return _h('option',{props:{\"selected\":tag.relevancy == no,\"value\":no}},[_s(no)])})]),\" \",_h('a',{on:{\"click\":function($event){removeTag(tag)}}},[_m(1)])])})]),\" \",_h('ul',{directives:[{name:\"show\",value:(readOnly),expression:\"readOnly\"}],staticClass:\"list-inline\",show:true},[(tags)&&_l((tags),function(tag,index){return _h('li',[_m(2),\" \",_h('span',{staticClass:\"label label-info\"},[_s(tag.tag_label)]),\"\\n\\t\\t\\t | précision \",_h('span',{staticClass:\"badge\"},[_s(tag.accuracy)]),\"\\n\\t\\t\\t | pertinence \",_h('span',{staticClass:\"badge\"},[_s(tag.relevancy)])])})])])}},staticRenderFns: [function(){with(this){return _h('i',{staticClass:\"fa fa-tag\"})}},function(){with(this){return _h('i',{staticClass:\"fa fa-trash\"})}},function(){with(this){return _h('i',{staticClass:\"fa fa-tag\"})}}]}\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vue-loader/lib/template-compiler.js?id=data-v-5!./src/components/taglist/template.html\n ** module id = 45\n ** module chunks = 0\n **/","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\nvar stylesInDom = {},\n\tmemoize = function(fn) {\n\t\tvar memo;\n\t\treturn function () {\n\t\t\tif (typeof memo === \"undefined\") memo = fn.apply(this, arguments);\n\t\t\treturn memo;\n\t\t};\n\t},\n\tisOldIE = memoize(function() {\n\t\treturn /msie [6-9]\\b/.test(window.navigator.userAgent.toLowerCase());\n\t}),\n\tgetHeadElement = memoize(function () {\n\t\treturn document.head || document.getElementsByTagName(\"head\")[0];\n\t}),\n\tsingletonElement = null,\n\tsingletonCounter = 0,\n\tstyleElementsInsertedAtTop = [];\n\nmodule.exports = function(list, options) {\n\tif(typeof DEBUG !== \"undefined\" && DEBUG) {\n\t\tif(typeof document !== \"object\") throw new Error(\"The style-loader cannot be used in a non-browser environment\");\n\t}\n\n\toptions = options || {};\n\t// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n\t// tags it will allow on a page\n\tif (typeof options.singleton === \"undefined\") options.singleton = isOldIE();\n\n\t// By default, add <style> tags to the bottom of <head>.\n\tif (typeof options.insertAt === \"undefined\") options.insertAt = \"bottom\";\n\n\tvar styles = listToStyles(list);\n\taddStylesToDom(styles, options);\n\n\treturn function update(newList) {\n\t\tvar mayRemove = [];\n\t\tfor(var i = 0; i < styles.length; i++) {\n\t\t\tvar item = styles[i];\n\t\t\tvar domStyle = stylesInDom[item.id];\n\t\t\tdomStyle.refs--;\n\t\t\tmayRemove.push(domStyle);\n\t\t}\n\t\tif(newList) {\n\t\t\tvar newStyles = listToStyles(newList);\n\t\t\taddStylesToDom(newStyles, options);\n\t\t}\n\t\tfor(var i = 0; i < mayRemove.length; i++) {\n\t\t\tvar domStyle = mayRemove[i];\n\t\t\tif(domStyle.refs === 0) {\n\t\t\t\tfor(var j = 0; j < domStyle.parts.length; j++)\n\t\t\t\t\tdomStyle.parts[j]();\n\t\t\t\tdelete stylesInDom[domStyle.id];\n\t\t\t}\n\t\t}\n\t};\n}\n\nfunction addStylesToDom(styles, options) {\n\tfor(var i = 0; i < styles.length; i++) {\n\t\tvar item = styles[i];\n\t\tvar domStyle = stylesInDom[item.id];\n\t\tif(domStyle) {\n\t\t\tdomStyle.refs++;\n\t\t\tfor(var j = 0; j < domStyle.parts.length; j++) {\n\t\t\t\tdomStyle.parts[j](item.parts[j]);\n\t\t\t}\n\t\t\tfor(; j < item.parts.length; j++) {\n\t\t\t\tdomStyle.parts.push(addStyle(item.parts[j], options));\n\t\t\t}\n\t\t} else {\n\t\t\tvar parts = [];\n\t\t\tfor(var j = 0; j < item.parts.length; j++) {\n\t\t\t\tparts.push(addStyle(item.parts[j], options));\n\t\t\t}\n\t\t\tstylesInDom[item.id] = {id: item.id, refs: 1, parts: parts};\n\t\t}\n\t}\n}\n\nfunction listToStyles(list) {\n\tvar styles = [];\n\tvar newStyles = {};\n\tfor(var i = 0; i < list.length; i++) {\n\t\tvar item = list[i];\n\t\tvar id = item[0];\n\t\tvar css = item[1];\n\t\tvar media = item[2];\n\t\tvar sourceMap = item[3];\n\t\tvar part = {css: css, media: media, sourceMap: sourceMap};\n\t\tif(!newStyles[id])\n\t\t\tstyles.push(newStyles[id] = {id: id, parts: [part]});\n\t\telse\n\t\t\tnewStyles[id].parts.push(part);\n\t}\n\treturn styles;\n}\n\nfunction insertStyleElement(options, styleElement) {\n\tvar head = getHeadElement();\n\tvar lastStyleElementInsertedAtTop = styleElementsInsertedAtTop[styleElementsInsertedAtTop.length - 1];\n\tif (options.insertAt === \"top\") {\n\t\tif(!lastStyleElementInsertedAtTop) {\n\t\t\thead.insertBefore(styleElement, head.firstChild);\n\t\t} else if(lastStyleElementInsertedAtTop.nextSibling) {\n\t\t\thead.insertBefore(styleElement, lastStyleElementInsertedAtTop.nextSibling);\n\t\t} else {\n\t\t\thead.appendChild(styleElement);\n\t\t}\n\t\tstyleElementsInsertedAtTop.push(styleElement);\n\t} else if (options.insertAt === \"bottom\") {\n\t\thead.appendChild(styleElement);\n\t} else {\n\t\tthrow new Error(\"Invalid value for parameter 'insertAt'. Must be 'top' or 'bottom'.\");\n\t}\n}\n\nfunction removeStyleElement(styleElement) {\n\tstyleElement.parentNode.removeChild(styleElement);\n\tvar idx = styleElementsInsertedAtTop.indexOf(styleElement);\n\tif(idx >= 0) {\n\t\tstyleElementsInsertedAtTop.splice(idx, 1);\n\t}\n}\n\nfunction createStyleElement(options) {\n\tvar styleElement = document.createElement(\"style\");\n\tstyleElement.type = \"text/css\";\n\tinsertStyleElement(options, styleElement);\n\treturn styleElement;\n}\n\nfunction addStyle(obj, options) {\n\tvar styleElement, update, remove;\n\n\tif (options.singleton) {\n\t\tvar styleIndex = singletonCounter++;\n\t\tstyleElement = singletonElement || (singletonElement = createStyleElement(options));\n\t\tupdate = applyToSingletonTag.bind(null, styleElement, styleIndex, false);\n\t\tremove = applyToSingletonTag.bind(null, styleElement, styleIndex, true);\n\t} else {\n\t\tstyleElement = createStyleElement(options);\n\t\tupdate = applyToTag.bind(null, styleElement);\n\t\tremove = function() {\n\t\t\tremoveStyleElement(styleElement);\n\t\t};\n\t}\n\n\tupdate(obj);\n\n\treturn function updateStyle(newObj) {\n\t\tif(newObj) {\n\t\t\tif(newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap)\n\t\t\t\treturn;\n\t\t\tupdate(obj = newObj);\n\t\t} else {\n\t\t\tremove();\n\t\t}\n\t};\n}\n\nvar replaceText = (function () {\n\tvar textStore = [];\n\n\treturn function (index, replacement) {\n\t\ttextStore[index] = replacement;\n\t\treturn textStore.filter(Boolean).join('\\n');\n\t};\n})();\n\nfunction applyToSingletonTag(styleElement, index, remove, obj) {\n\tvar css = remove ? \"\" : obj.css;\n\n\tif (styleElement.styleSheet) {\n\t\tstyleElement.styleSheet.cssText = replaceText(index, css);\n\t} else {\n\t\tvar cssNode = document.createTextNode(css);\n\t\tvar childNodes = styleElement.childNodes;\n\t\tif (childNodes[index]) styleElement.removeChild(childNodes[index]);\n\t\tif (childNodes.length) {\n\t\t\tstyleElement.insertBefore(cssNode, childNodes[index]);\n\t\t} else {\n\t\t\tstyleElement.appendChild(cssNode);\n\t\t}\n\t}\n}\n\nfunction applyToTag(styleElement, obj) {\n\tvar css = obj.css;\n\tvar media = obj.media;\n\tvar sourceMap = obj.sourceMap;\n\n\tif (media) {\n\t\tstyleElement.setAttribute(\"media\", media);\n\t}\n\n\tif (sourceMap) {\n\t\t// https://developer.chrome.com/devtools/docs/javascript-debugging\n\t\t// this makes source maps inside style tags work properly in Chrome\n\t\tcss += '\\n/*# sourceURL=' + sourceMap.sources[0] + ' */';\n\t\t// http://stackoverflow.com/a/26603875\n\t\tcss += \"\\n/*# sourceMappingURL=data:application/json;base64,\" + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + \" */\";\n\t}\n\n\tif (styleElement.styleSheet) {\n\t\tstyleElement.styleSheet.cssText = css;\n\t} else {\n\t\twhile(styleElement.firstChild) {\n\t\t\tstyleElement.removeChild(styleElement.firstChild);\n\t\t}\n\t\tstyleElement.appendChild(document.createTextNode(css));\n\t}\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vue-style-loader/addStyles.js\n ** module id = 46\n ** module chunks = 0\n **/","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!./../../../node_modules/css-loader/index.js!./../../../node_modules/vue-loader/lib/style-rewriter.js?id=data-v-1&scoped=true!./style.css\");\nif(typeof content === 'string') content = [[module.id, content, '']];\n// add the styles to the DOM\nvar update = require(\"!./../../../node_modules/vue-style-loader/addStyles.js\")(content, {});\nif(content.locals) module.exports = content.locals;\n// Hot Module Replacement\nif(module.hot) {\n\t// When the styles change, update the <style> tags\n\tif(!content.locals) {\n\t\tmodule.hot.accept(\"!!./../../../node_modules/css-loader/index.js!./../../../node_modules/vue-loader/lib/style-rewriter.js?id=data-v-1&scoped=true!./style.css\", function() {\n\t\t\tvar newContent = require(\"!!./../../../node_modules/css-loader/index.js!./../../../node_modules/vue-loader/lib/style-rewriter.js?id=data-v-1&scoped=true!./style.css\");\n\t\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\t\t\tupdate(newContent);\n\t\t});\n\t}\n\t// When the module is disposed, remove the <style> tags\n\tmodule.hot.dispose(function() { update(); });\n}\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vue-style-loader!./~/css-loader!./~/vue-loader/lib/style-rewriter.js?id=data-v-1&scoped=true!./src/components/typeahead/style.css\n ** module id = 47\n ** module chunks = 0\n **/"],"sourceRoot":""}
\ No newline at end of file