",""]);var wt=/<|?\w+;/;function xt(t,e,n,r,i){for(var o,a,s,l,u,c,d=e.createDocumentFragment(),h=[],f=0,p=t.length;f-1)i&&i.push(o);else if(u=at(o),a=yt(d.appendChild(o),"script"),u&&bt(a),n)for(c=0;o=a[c++];)gt.test(o.type||"")&&n.push(o);return d}var At=/^key/,Mt=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,kt=/^([^.]*)(?:\.(.+)|)/;function Lt(){return!0}function Dt(){return!1}function Tt(t,e){return t===function(){try{return y.activeElement}catch(t){}}()==("focus"===e)}function St(t,e,n,r,i,o){var a,s;if("object"==typeof e){for(s in"string"!=typeof n&&(r=r||n,n=void 0),e)St(t,s,n,r,e[s],o);return t}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Dt;else if(!i)return t;return 1===o&&(a=i,(i=function(t){return A().off(t),a.apply(this,arguments)}).guid=a.guid||(a.guid=A.guid++)),t.each((function(){A.event.add(this,e,i,r,n)}))}function Ct(t,e,n){n?(Q.set(t,e,!1),A.event.add(t,e,{namespace:!1,handler:function(t){var r,i,o=Q.get(this,e);if(1&t.isTrigger&&this[e]){if(o.length)(A.event.special[e]||{}).delegateType&&t.stopPropagation();else if(o=s.call(arguments),Q.set(this,e,o),r=n(this,e),this[e](),o!==(i=Q.get(this,e))||r?Q.set(this,e,!1):i={},o!==i)return t.stopImmediatePropagation(),t.preventDefault(),i.value}else o.length&&(Q.set(this,e,{value:A.event.trigger(A.extend(o[0],A.Event.prototype),o.slice(1),this)}),t.stopImmediatePropagation())}})):void 0===Q.get(t,e)&&A.event.add(t,e,Lt)}A.event={global:{},add:function(t,e,n,r,i){var o,a,s,l,u,c,d,h,f,p,m,_=Q.get(t);if(G(t))for(n.handler&&(n=(o=n).handler,i=o.selector),i&&A.find.matchesSelector(ot,i),n.guid||(n.guid=A.guid++),(l=_.events)||(l=_.events=Object.create(null)),(a=_.handle)||(a=_.handle=function(e){return void 0!==A&&A.event.triggered!==e.type?A.event.dispatch.apply(t,arguments):void 0}),u=(e=(e||"").match(H)||[""]).length;u--;)f=m=(s=kt.exec(e[u])||[])[1],p=(s[2]||"").split(".").sort(),f&&(d=A.event.special[f]||{},f=(i?d.delegateType:d.bindType)||f,d=A.event.special[f]||{},c=A.extend({type:f,origType:m,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&A.expr.match.needsContext.test(i),namespace:p.join(".")},o),(h=l[f])||((h=l[f]=[]).delegateCount=0,d.setup&&!1!==d.setup.call(t,r,p,a)||t.addEventListener&&t.addEventListener(f,a)),d.add&&(d.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?h.splice(h.delegateCount++,0,c):h.push(c),A.event.global[f]=!0)},remove:function(t,e,n,r,i){var o,a,s,l,u,c,d,h,f,p,m,_=Q.hasData(t)&&Q.get(t);if(_&&(l=_.events)){for(u=(e=(e||"").match(H)||[""]).length;u--;)if(f=m=(s=kt.exec(e[u])||[])[1],p=(s[2]||"").split(".").sort(),f){for(d=A.event.special[f]||{},h=l[f=(r?d.delegateType:d.bindType)||f]||[],s=s[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=h.length;o--;)c=h[o],!i&&m!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(h.splice(o,1),c.selector&&h.delegateCount--,d.remove&&d.remove.call(t,c));a&&!h.length&&(d.teardown&&!1!==d.teardown.call(t,p,_.handle)||A.removeEvent(t,f,_.handle),delete l[f])}else for(f in l)A.event.remove(t,f+e[u],n,r,!0);A.isEmptyObject(l)&&Q.remove(t,"handle events")}},dispatch:function(t){var e,n,r,i,o,a,s=new Array(arguments.length),l=A.event.fix(t),u=(Q.get(this,"events")||Object.create(null))[l.type]||[],c=A.event.special[l.type]||{};for(s[0]=l,e=1;e=1))for(;u!==this;u=u.parentNode||this)if(1===u.nodeType&&("click"!==t.type||!0!==u.disabled)){for(o=[],a={},n=0;n-1:A.find(i,this,null,[u]).length),a[i]&&o.push(r);o.length&&s.push({elem:u,handlers:o})}return u=this,l\s*$/g;function jt(t,e){return S(t,"table")&&S(11!==e.nodeType?e:e.firstChild,"tr")&&A(t).children("tbody")[0]||t}function Pt(t){return t.type=(null!==t.getAttribute("type"))+"/"+t.type,t}function It(t){return"true/"===(t.type||"").slice(0,5)?t.type=t.type.slice(5):t.removeAttribute("type"),t}function Ht(t,e){var n,r,i,o,a,s;if(1===e.nodeType){if(Q.hasData(t)&&(s=Q.get(t).events))for(i in Q.remove(e,"handle events"),s)for(n=0,r=s[i].length;n1&&"string"==typeof p&&!_.checkClone&&Et.test(p))return t.each((function(i){var o=t.eq(i);m&&(e[0]=p.call(this,i,o.html())),zt(o,e,n,r)}));if(h&&(o=(i=xt(e,t[0].ownerDocument,!1,t,r)).firstChild,1===i.childNodes.length&&(i=o),o||r)){for(s=(a=A.map(yt(i,"script"),Pt)).length;d0&&bt(a,!l&&yt(t,"script")),s},cleanData:function(t){for(var e,n,r,i=A.event.special,o=0;void 0!==(n=t[o]);o++)if(G(n)){if(e=n[Q.expando]){if(e.events)for(r in e.events)i[r]?A.event.remove(n,r):A.removeEvent(n,r,e.handle);n[Q.expando]=void 0}n[K.expando]&&(n[K.expando]=void 0)}}}),A.fn.extend({detach:function(t){return Bt(this,t,!0)},remove:function(t){return Bt(this,t)},text:function(t){return W(this,(function(t){return void 0===t?A.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 zt(this,arguments,(function(t){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||jt(this,t).appendChild(t)}))},prepend:function(){return zt(this,arguments,(function(t){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var e=jt(this,t);e.insertBefore(t,e.firstChild)}}))},before:function(){return zt(this,arguments,(function(t){this.parentNode&&this.parentNode.insertBefore(t,this)}))},after:function(){return zt(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&&(A.cleanData(yt(t,!1)),t.textContent="");return this},clone:function(t,e){return t=null!=t&&t,e=null==e?t:e,this.map((function(){return A.clone(this,t,e)}))},html:function(t){return W(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&&!Yt.test(t)&&!vt[(_t.exec(t)||["",""])[1].toLowerCase()]){t=A.htmlPrefilter(t);try{for(;n3,ot.removeChild(t)),s}}))}();var qt=["Webkit","Moz","ms"],Zt=y.createElement("div").style,Gt={};function Jt(t){var e=A.cssProps[t]||Gt[t];return e||(t in Zt?t:Gt[t]=function(t){for(var e=t[0].toUpperCase()+t.slice(1),n=qt.length;n--;)if((t=qt[n]+e)in Zt)return t}(t)||t)}var Qt=/^(none|table(?!-c[ea]).+)/,Kt=/^--/,Xt={position:"absolute",visibility:"hidden",display:"block"},te={letterSpacing:"0",fontWeight:"400"};function ee(t,e,n){var r=rt.exec(e);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):e}function ne(t,e,n,r,i,o){var a="width"===e?1:0,s=0,l=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(l+=A.css(t,n+it[a],!0,i)),r?("content"===n&&(l-=A.css(t,"padding"+it[a],!0,i)),"margin"!==n&&(l-=A.css(t,"border"+it[a]+"Width",!0,i))):(l+=A.css(t,"padding"+it[a],!0,i),"padding"!==n?l+=A.css(t,"border"+it[a]+"Width",!0,i):s+=A.css(t,"border"+it[a]+"Width",!0,i));return!r&&o>=0&&(l+=Math.max(0,Math.ceil(t["offset"+e[0].toUpperCase()+e.slice(1)]-o-l-s-.5))||0),l}function re(t,e,n){var r=Rt(t),i=(!_.boxSizingReliable()||n)&&"border-box"===A.css(t,"boxSizing",!1,r),o=i,a=Vt(t,e,r),s="offset"+e[0].toUpperCase()+e.slice(1);if(Ft.test(a)){if(!n)return a;a="auto"}return(!_.boxSizingReliable()&&i||!_.reliableTrDimensions()&&S(t,"tr")||"auto"===a||!parseFloat(a)&&"inline"===A.css(t,"display",!1,r))&&t.getClientRects().length&&(i="border-box"===A.css(t,"boxSizing",!1,r),(o=s in t)&&(a=t[s])),(a=parseFloat(a)||0)+ne(t,e,n||(i?"border":"content"),o,r,a)+"px"}function ie(t,e,n,r,i){return new ie.prototype.init(t,e,n,r,i)}A.extend({cssHooks:{opacity:{get:function(t,e){if(e){var n=Vt(t,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(t,e,n,r){if(t&&3!==t.nodeType&&8!==t.nodeType&&t.style){var i,o,a,s=Z(e),l=Kt.test(e),u=t.style;if(l||(e=Jt(s)),a=A.cssHooks[e]||A.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(t,!1,r))?i:u[e];"string"===(o=typeof n)&&(i=rt.exec(n))&&i[1]&&(n=ut(t,e,i),o="number"),null!=n&&n==n&&("number"!==o||l||(n+=i&&i[3]||(A.cssNumber[s]?"":"px")),_.clearCloneStyle||""!==n||0!==e.indexOf("background")||(u[e]="inherit"),a&&"set"in a&&void 0===(n=a.set(t,n,r))||(l?u.setProperty(e,n):u[e]=n))}},css:function(t,e,n,r){var i,o,a,s=Z(e);return Kt.test(e)||(e=Jt(s)),(a=A.cssHooks[e]||A.cssHooks[s])&&"get"in a&&(i=a.get(t,!0,n)),void 0===i&&(i=Vt(t,e,r)),"normal"===i&&e in te&&(i=te[e]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),A.each(["height","width"],(function(t,e){A.cssHooks[e]={get:function(t,n,r){if(n)return!Qt.test(A.css(t,"display"))||t.getClientRects().length&&t.getBoundingClientRect().width?re(t,e,r):$t(t,Xt,(function(){return re(t,e,r)}))},set:function(t,n,r){var i,o=Rt(t),a=!_.scrollboxSize()&&"absolute"===o.position,s=(a||r)&&"border-box"===A.css(t,"boxSizing",!1,o),l=r?ne(t,e,r,s,o):0;return s&&a&&(l-=Math.ceil(t["offset"+e[0].toUpperCase()+e.slice(1)]-parseFloat(o[e])-ne(t,e,"border",!1,o)-.5)),l&&(i=rt.exec(n))&&"px"!==(i[3]||"px")&&(t.style[e]=n,n=A.css(t,e)),ee(0,n,l)}}})),A.cssHooks.marginLeft=Ut(_.reliableMarginLeft,(function(t,e){if(e)return(parseFloat(Vt(t,"marginLeft"))||t.getBoundingClientRect().left-$t(t,{marginLeft:0},(function(){return t.getBoundingClientRect().left})))+"px"})),A.each({margin:"",padding:"",border:"Width"},(function(t,e){A.cssHooks[t+e]={expand:function(n){for(var r=0,i={},o="string"==typeof n?n.split(" "):[n];r<4;r++)i[t+it[r]+e]=o[r]||o[r-2]||o[0];return i}},"margin"!==t&&(A.cssHooks[t+e].set=ee)})),A.fn.extend({css:function(t,e){return W(this,(function(t,e,n){var r,i,o={},a=0;if(Array.isArray(e)){for(r=Rt(t),i=e.length;a1)}}),A.Tween=ie,ie.prototype={constructor:ie,init:function(t,e,n,r,i,o){this.elem=t,this.prop=n,this.easing=i||A.easing._default,this.options=e,this.start=this.now=this.cur(),this.end=r,this.unit=o||(A.cssNumber[n]?"":"px")},cur:function(){var t=ie.propHooks[this.prop];return t&&t.get?t.get(this):ie.propHooks._default.get(this)},run:function(t){var e,n=ie.propHooks[this.prop];return this.options.duration?this.pos=e=A.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):ie.propHooks._default.set(this),this}},ie.prototype.init.prototype=ie.prototype,ie.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=A.css(t.elem,t.prop,""))&&"auto"!==e?e:0},set:function(t){A.fx.step[t.prop]?A.fx.step[t.prop](t):1!==t.elem.nodeType||!A.cssHooks[t.prop]&&null==t.elem.style[Jt(t.prop)]?t.elem[t.prop]=t.now:A.style(t.elem,t.prop,t.now+t.unit)}}},ie.propHooks.scrollTop=ie.propHooks.scrollLeft={set:function(t){t.elem.nodeType&&t.elem.parentNode&&(t.elem[t.prop]=t.now)}},A.easing={linear:function(t){return t},swing:function(t){return.5-Math.cos(t*Math.PI)/2},_default:"swing"},A.fx=ie.prototype.init,A.fx.step={};var oe,ae,se=/^(?:toggle|show|hide)$/,le=/queueHooks$/;function ue(){ae&&(!1===y.hidden&&n.requestAnimationFrame?n.requestAnimationFrame(ue):n.setTimeout(ue,A.fx.interval),A.fx.tick())}function ce(){return n.setTimeout((function(){oe=void 0})),oe=Date.now()}function de(t,e){var n,r=0,i={height:t};for(e=e?1:0;r<4;r+=2-e)i["margin"+(n=it[r])]=i["padding"+n]=t;return e&&(i.opacity=i.width=t),i}function he(t,e,n){for(var r,i=(fe.tweeners[e]||[]).concat(fe.tweeners["*"]),o=0,a=i.length;o1)},removeAttr:function(t){return this.each((function(){A.removeAttr(this,t)}))}}),A.extend({attr:function(t,e,n){var r,i,o=t.nodeType;if(3!==o&&8!==o&&2!==o)return void 0===t.getAttribute?A.prop(t,e,n):(1===o&&A.isXMLDoc(t)||(i=A.attrHooks[e.toLowerCase()]||(A.expr.match.bool.test(e)?pe:void 0)),void 0!==n?null===n?void A.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:null==(r=A.find.attr(t,e))?void 0:r)},attrHooks:{type:{set:function(t,e){if(!_.radioValue&&"radio"===e&&S(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(H);if(i&&1===t.nodeType)for(;n=i[r++];)t.removeAttribute(n)}}),pe={set:function(t,e,n){return!1===e?A.removeAttr(t,n):t.setAttribute(n,n),n}},A.each(A.expr.match.bool.source.match(/\w+/g),(function(t,e){var n=me[e]||A.find.attr;me[e]=function(t,e,r){var i,o,a=e.toLowerCase();return r||(o=me[a],me[a]=i,i=null!=n(t,e,r)?a:null,me[a]=o),i}}));var _e=/^(?:input|select|textarea|button)$/i,ge=/^(?:a|area)$/i;function ve(t){return(t.match(H)||[]).join(" ")}function ye(t){return t.getAttribute&&t.getAttribute("class")||""}function be(t){return Array.isArray(t)?t:"string"==typeof t&&t.match(H)||[]}A.fn.extend({prop:function(t,e){return W(this,A.prop,t,e,arguments.length>1)},removeProp:function(t){return this.each((function(){delete this[A.propFix[t]||t]}))}}),A.extend({prop:function(t,e,n){var r,i,o=t.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&A.isXMLDoc(t)||(e=A.propFix[e]||e,i=A.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=A.find.attr(t,"tabindex");return e?parseInt(e,10):_e.test(t.nodeName)||ge.test(t.nodeName)&&t.href?0:-1}}},propFix:{for:"htmlFor",class:"className"}}),_.optSelected||(A.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)}}),A.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],(function(){A.propFix[this.toLowerCase()]=this})),A.fn.extend({addClass:function(t){var e,n,r,i,o,a,s,l=0;if(g(t))return this.each((function(e){A(this).addClass(t.call(this,e,ye(this)))}));if((e=be(t)).length)for(;n=this[l++];)if(i=ye(n),r=1===n.nodeType&&" "+ve(i)+" "){for(a=0;o=e[a++];)r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=ve(r))&&n.setAttribute("class",s)}return this},removeClass:function(t){var e,n,r,i,o,a,s,l=0;if(g(t))return this.each((function(e){A(this).removeClass(t.call(this,e,ye(this)))}));if(!arguments.length)return this.attr("class","");if((e=be(t)).length)for(;n=this[l++];)if(i=ye(n),r=1===n.nodeType&&" "+ve(i)+" "){for(a=0;o=e[a++];)for(;r.indexOf(" "+o+" ")>-1;)r=r.replace(" "+o+" "," ");i!==(s=ve(r))&&n.setAttribute("class",s)}return this},toggleClass:function(t,e){var n=typeof t,r="string"===n||Array.isArray(t);return"boolean"==typeof e&&r?e?this.addClass(t):this.removeClass(t):g(t)?this.each((function(n){A(this).toggleClass(t.call(this,n,ye(this),e),e)})):this.each((function(){var e,i,o,a;if(r)for(i=0,o=A(this),a=be(t);e=a[i++];)o.hasClass(e)?o.removeClass(e):o.addClass(e);else void 0!==t&&"boolean"!==n||((e=ye(this))&&Q.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||!1===t?"":Q.get(this,"__className__")||""))}))},hasClass:function(t){var e,n,r=0;for(e=" "+t+" ";n=this[r++];)if(1===n.nodeType&&(" "+ve(ye(n))+" ").indexOf(e)>-1)return!0;return!1}});var we=/\r/g;A.fn.extend({val:function(t){var e,n,r,i=this[0];return arguments.length?(r=g(t),this.each((function(n){var i;1===this.nodeType&&(null==(i=r?t.call(this,n,A(this).val()):t)?i="":"number"==typeof i?i+="":Array.isArray(i)&&(i=A.map(i,(function(t){return null==t?"":t+""}))),(e=A.valHooks[this.type]||A.valHooks[this.nodeName.toLowerCase()])&&"set"in e&&void 0!==e.set(this,i,"value")||(this.value=i))}))):i?(e=A.valHooks[i.type]||A.valHooks[i.nodeName.toLowerCase()])&&"get"in e&&void 0!==(n=e.get(i,"value"))?n:"string"==typeof(n=i.value)?n.replace(we,""):null==n?"":n:void 0}}),A.extend({valHooks:{option:{get:function(t){var e=A.find.attr(t,"value");return null!=e?e:ve(A.text(t))}},select:{get:function(t){var e,n,r,i=t.options,o=t.selectedIndex,a="select-one"===t.type,s=a?null:[],l=a?o+1:i.length;for(r=o<0?l:a?o:0;r-1)&&(n=!0);return n||(t.selectedIndex=-1),o}}}}),A.each(["radio","checkbox"],(function(){A.valHooks[this]={set:function(t,e){if(Array.isArray(e))return t.checked=A.inArray(A(t).val(),e)>-1}},_.checkOn||(A.valHooks[this].get=function(t){return null===t.getAttribute("value")?"on":t.value})})),_.focusin="onfocusin"in n;var xe=/^(?:focusinfocus|focusoutblur)$/,Ae=function(t){t.stopPropagation()};A.extend(A.event,{trigger:function(t,e,r,i){var o,a,s,l,u,c,d,h,p=[r||y],m=f.call(t,"type")?t.type:t,_=f.call(t,"namespace")?t.namespace.split("."):[];if(a=h=s=r=r||y,3!==r.nodeType&&8!==r.nodeType&&!xe.test(m+A.event.triggered)&&(m.indexOf(".")>-1&&(_=m.split("."),m=_.shift(),_.sort()),u=m.indexOf(":")<0&&"on"+m,(t=t[A.expando]?t:new A.Event(m,"object"==typeof t&&t)).isTrigger=i?2:3,t.namespace=_.join("."),t.rnamespace=t.namespace?new RegExp("(^|\\.)"+_.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=r),e=null==e?[t]:A.makeArray(e,[t]),d=A.event.special[m]||{},i||!d.trigger||!1!==d.trigger.apply(r,e))){if(!i&&!d.noBubble&&!v(r)){for(l=d.delegateType||m,xe.test(l+m)||(a=a.parentNode);a;a=a.parentNode)p.push(a),s=a;s===(r.ownerDocument||y)&&p.push(s.defaultView||s.parentWindow||n)}for(o=0;(a=p[o++])&&!t.isPropagationStopped();)h=a,t.type=o>1?l:d.bindType||m,(c=(Q.get(a,"events")||Object.create(null))[t.type]&&Q.get(a,"handle"))&&c.apply(a,e),(c=u&&a[u])&&c.apply&&G(a)&&(t.result=c.apply(a,e),!1===t.result&&t.preventDefault());return t.type=m,i||t.isDefaultPrevented()||d._default&&!1!==d._default.apply(p.pop(),e)||!G(r)||u&&g(r[m])&&!v(r)&&((s=r[u])&&(r[u]=null),A.event.triggered=m,t.isPropagationStopped()&&h.addEventListener(m,Ae),r[m](),t.isPropagationStopped()&&h.removeEventListener(m,Ae),A.event.triggered=void 0,s&&(r[u]=s)),t.result}},simulate:function(t,e,n){var r=A.extend(new A.Event,n,{type:t,isSimulated:!0});A.event.trigger(r,null,e)}}),A.fn.extend({trigger:function(t,e){return this.each((function(){A.event.trigger(t,e,this)}))},triggerHandler:function(t,e){var n=this[0];if(n)return A.event.trigger(t,e,n,!0)}}),_.focusin||A.each({focus:"focusin",blur:"focusout"},(function(t,e){var n=function(t){A.event.simulate(e,t.target,A.event.fix(t))};A.event.special[e]={setup:function(){var r=this.ownerDocument||this.document||this,i=Q.access(r,e);i||r.addEventListener(t,n,!0),Q.access(r,e,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this.document||this,i=Q.access(r,e)-1;i?Q.access(r,e,i):(r.removeEventListener(t,n,!0),Q.remove(r,e))}}}));var Me=n.location,ke={guid:Date.now()},Le=/\?/;A.parseXML=function(t){var e;if(!t||"string"!=typeof t)return null;try{e=(new n.DOMParser).parseFromString(t,"text/xml")}catch(t){e=void 0}return e&&!e.getElementsByTagName("parsererror").length||A.error("Invalid XML: "+t),e};var De=/\[\]$/,Te=/\r?\n/g,Se=/^(?:submit|button|image|reset|file)$/i,Ce=/^(?:input|select|textarea|keygen)/i;function Ye(t,e,n,r){var i;if(Array.isArray(e))A.each(e,(function(e,i){n||De.test(t)?r(t,i):Ye(t+"["+("object"==typeof i&&null!=i?e:"")+"]",i,n,r)}));else if(n||"object"!==x(e))r(t,e);else for(i in e)Ye(t+"["+i+"]",e[i],n,r)}A.param=function(t,e){var n,r=[],i=function(t,e){var n=g(e)?e():e;r[r.length]=encodeURIComponent(t)+"="+encodeURIComponent(null==n?"":n)};if(null==t)return"";if(Array.isArray(t)||t.jquery&&!A.isPlainObject(t))A.each(t,(function(){i(this.name,this.value)}));else for(n in t)Ye(n,t[n],e,i);return r.join("&")},A.fn.extend({serialize:function(){return A.param(this.serializeArray())},serializeArray:function(){return this.map((function(){var t=A.prop(this,"elements");return t?A.makeArray(t):this})).filter((function(){var t=this.type;return this.name&&!A(this).is(":disabled")&&Ce.test(this.nodeName)&&!Se.test(t)&&(this.checked||!mt.test(t))})).map((function(t,e){var n=A(this).val();return null==n?null:Array.isArray(n)?A.map(n,(function(t){return{name:e.name,value:t.replace(Te,"\r\n")}})):{name:e.name,value:n.replace(Te,"\r\n")}})).get()}});var Ee=/%20/g,Oe=/#.*$/,je=/([?&])_=[^&]*/,Pe=/^(.*?):[ \t]*([^\r\n]*)$/gm,Ie=/^(?:GET|HEAD)$/,He=/^\/\//,Ne={},ze={},Be="*/".concat("*"),Fe=y.createElement("a");function Re(t){return function(e,n){"string"!=typeof e&&(n=e,e="*");var r,i=0,o=e.toLowerCase().match(H)||[];if(g(n))for(;r=o[i++];)"+"===r[0]?(r=r.slice(1)||"*",(t[r]=t[r]||[]).unshift(n)):(t[r]=t[r]||[]).push(n)}}function $e(t,e,n,r){var i={},o=t===ze;function a(s){var l;return i[s]=!0,A.each(t[s]||[],(function(t,s){var u=s(e,n,r);return"string"!=typeof u||o||i[u]?o?!(l=u):void 0:(e.dataTypes.unshift(u),a(u),!1)})),l}return a(e.dataTypes[0])||!i["*"]&&a("*")}function We(t,e){var n,r,i=A.ajaxSettings.flatOptions||{};for(n in e)void 0!==e[n]&&((i[n]?t:r||(r={}))[n]=e[n]);return r&&A.extend(!0,t,r),t}Fe.href=Me.href,A.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Me.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Me.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Be,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":A.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(t,e){return e?We(We(t,A.ajaxSettings),e):We(A.ajaxSettings,t)},ajaxPrefilter:Re(Ne),ajaxTransport:Re(ze),ajax:function(t,e){"object"==typeof t&&(e=t,t=void 0),e=e||{};var r,i,o,a,s,l,u,c,d,h,f=A.ajaxSetup({},e),p=f.context||f,m=f.context&&(p.nodeType||p.jquery)?A(p):A.event,_=A.Deferred(),g=A.Callbacks("once memory"),v=f.statusCode||{},b={},w={},x="canceled",M={readyState:0,getResponseHeader:function(t){var e;if(u){if(!a)for(a={};e=Pe.exec(o);)a[e[1].toLowerCase()+" "]=(a[e[1].toLowerCase()+" "]||[]).concat(e[2]);e=a[t.toLowerCase()+" "]}return null==e?null:e.join(", ")},getAllResponseHeaders:function(){return u?o:null},setRequestHeader:function(t,e){return null==u&&(t=w[t.toLowerCase()]=w[t.toLowerCase()]||t,b[t]=e),this},overrideMimeType:function(t){return null==u&&(f.mimeType=t),this},statusCode:function(t){var e;if(t)if(u)M.always(t[M.status]);else for(e in t)v[e]=[v[e],t[e]];return this},abort:function(t){var e=t||x;return r&&r.abort(e),k(0,e),this}};if(_.promise(M),f.url=((t||f.url||Me.href)+"").replace(He,Me.protocol+"//"),f.type=e.method||e.type||f.method||f.type,f.dataTypes=(f.dataType||"*").toLowerCase().match(H)||[""],null==f.crossDomain){l=y.createElement("a");try{l.href=f.url,l.href=l.href,f.crossDomain=Fe.protocol+"//"+Fe.host!=l.protocol+"//"+l.host}catch(t){f.crossDomain=!0}}if(f.data&&f.processData&&"string"!=typeof f.data&&(f.data=A.param(f.data,f.traditional)),$e(Ne,f,e,M),u)return M;for(d in(c=A.event&&f.global)&&0==A.active++&&A.event.trigger("ajaxStart"),f.type=f.type.toUpperCase(),f.hasContent=!Ie.test(f.type),i=f.url.replace(Oe,""),f.hasContent?f.data&&f.processData&&0===(f.contentType||"").indexOf("application/x-www-form-urlencoded")&&(f.data=f.data.replace(Ee,"+")):(h=f.url.slice(i.length),f.data&&(f.processData||"string"==typeof f.data)&&(i+=(Le.test(i)?"&":"?")+f.data,delete f.data),!1===f.cache&&(i=i.replace(je,"$1"),h=(Le.test(i)?"&":"?")+"_="+ke.guid+++h),f.url=i+h),f.ifModified&&(A.lastModified[i]&&M.setRequestHeader("If-Modified-Since",A.lastModified[i]),A.etag[i]&&M.setRequestHeader("If-None-Match",A.etag[i])),(f.data&&f.hasContent&&!1!==f.contentType||e.contentType)&&M.setRequestHeader("Content-Type",f.contentType),M.setRequestHeader("Accept",f.dataTypes[0]&&f.accepts[f.dataTypes[0]]?f.accepts[f.dataTypes[0]]+("*"!==f.dataTypes[0]?", "+Be+"; q=0.01":""):f.accepts["*"]),f.headers)M.setRequestHeader(d,f.headers[d]);if(f.beforeSend&&(!1===f.beforeSend.call(p,M,f)||u))return M.abort();if(x="abort",g.add(f.complete),M.done(f.success),M.fail(f.error),r=$e(ze,f,e,M)){if(M.readyState=1,c&&m.trigger("ajaxSend",[M,f]),u)return M;f.async&&f.timeout>0&&(s=n.setTimeout((function(){M.abort("timeout")}),f.timeout));try{u=!1,r.send(b,k)}catch(t){if(u)throw t;k(-1,t)}}else k(-1,"No Transport");function k(t,e,a,l){var d,h,y,b,w,x=e;u||(u=!0,s&&n.clearTimeout(s),r=void 0,o=l||"",M.readyState=t>0?4:0,d=t>=200&&t<300||304===t,a&&(b=function(t,e,n){for(var r,i,o,a,s=t.contents,l=t.dataTypes;"*"===l[0];)l.shift(),void 0===r&&(r=t.mimeType||e.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){l.unshift(i);break}if(l[0]in n)o=l[0];else{for(i in n){if(!l[0]||t.converters[i+" "+l[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==l[0]&&l.unshift(o),n[o]}(f,M,a)),!d&&A.inArray("script",f.dataTypes)>-1&&(f.converters["text script"]=function(){}),b=function(t,e,n,r){var i,o,a,s,l,u={},c=t.dataTypes.slice();if(c[1])for(a in t.converters)u[a.toLowerCase()]=t.converters[a];for(o=c.shift();o;)if(t.responseFields[o]&&(n[t.responseFields[o]]=e),!l&&r&&t.dataFilter&&(e=t.dataFilter(e,t.dataType)),l=o,o=c.shift())if("*"===o)o=l;else if("*"!==l&&l!==o){if(!(a=u[l+" "+o]||u["* "+o]))for(i in u)if((s=i.split(" "))[1]===o&&(a=u[l+" "+s[0]]||u["* "+s[0]])){!0===a?a=u[i]:!0!==u[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&t.throws)e=a(e);else try{e=a(e)}catch(t){return{state:"parsererror",error:a?t:"No conversion from "+l+" to "+o}}}return{state:"success",data:e}}(f,b,M,d),d?(f.ifModified&&((w=M.getResponseHeader("Last-Modified"))&&(A.lastModified[i]=w),(w=M.getResponseHeader("etag"))&&(A.etag[i]=w)),204===t||"HEAD"===f.type?x="nocontent":304===t?x="notmodified":(x=b.state,h=b.data,d=!(y=b.error))):(y=x,!t&&x||(x="error",t<0&&(t=0))),M.status=t,M.statusText=(e||x)+"",d?_.resolveWith(p,[h,x,M]):_.rejectWith(p,[M,x,y]),M.statusCode(v),v=void 0,c&&m.trigger(d?"ajaxSuccess":"ajaxError",[M,f,d?h:y]),g.fireWith(p,[M,x]),c&&(m.trigger("ajaxComplete",[M,f]),--A.active||A.event.trigger("ajaxStop")))}return M},getJSON:function(t,e,n){return A.get(t,e,n,"json")},getScript:function(t,e){return A.get(t,void 0,e,"script")}}),A.each(["get","post"],(function(t,e){A[e]=function(t,n,r,i){return g(n)&&(i=i||r,r=n,n=void 0),A.ajax(A.extend({url:t,type:e,dataType:i,data:n,success:r},A.isPlainObject(t)&&t))}})),A.ajaxPrefilter((function(t){var e;for(e in t.headers)"content-type"===e.toLowerCase()&&(t.contentType=t.headers[e]||"")})),A._evalUrl=function(t,e,n){return A.ajax({url:t,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(t){A.globalEval(t,e,n)}})},A.fn.extend({wrapAll:function(t){var e;return this[0]&&(g(t)&&(t=t.call(this[0])),e=A(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 g(t)?this.each((function(e){A(this).wrapInner(t.call(this,e))})):this.each((function(){var e=A(this),n=e.contents();n.length?n.wrapAll(t):e.append(t)}))},wrap:function(t){var e=g(t);return this.each((function(n){A(this).wrapAll(e?t.call(this,n):t)}))},unwrap:function(t){return this.parent(t).not("body").each((function(){A(this).replaceWith(this.childNodes)})),this}}),A.expr.pseudos.hidden=function(t){return!A.expr.pseudos.visible(t)},A.expr.pseudos.visible=function(t){return!!(t.offsetWidth||t.offsetHeight||t.getClientRects().length)},A.ajaxSettings.xhr=function(){try{return new n.XMLHttpRequest}catch(t){}};var Ve={0:200,1223:204},Ue=A.ajaxSettings.xhr();_.cors=!!Ue&&"withCredentials"in Ue,_.ajax=Ue=!!Ue,A.ajaxTransport((function(t){var e,r;if(_.cors||Ue&&!t.crossDomain)return{send:function(i,o){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];for(a in t.mimeType&&s.overrideMimeType&&s.overrideMimeType(t.mimeType),t.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest"),i)s.setRequestHeader(a,i[a]);e=function(t){return function(){e&&(e=r=s.onload=s.onerror=s.onabort=s.ontimeout=s.onreadystatechange=null,"abort"===t?s.abort():"error"===t?"number"!=typeof s.status?o(0,"error"):o(s.status,s.statusText):o(Ve[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(),r=s.onerror=s.ontimeout=e("error"),void 0!==s.onabort?s.onabort=r:s.onreadystatechange=function(){4===s.readyState&&n.setTimeout((function(){e&&r()}))},e=e("abort");try{s.send(t.hasContent&&t.data||null)}catch(t){if(e)throw t}},abort:function(){e&&e()}}})),A.ajaxPrefilter((function(t){t.crossDomain&&(t.contents.script=!1)})),A.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 A.globalEval(t),t}}}),A.ajaxPrefilter("script",(function(t){void 0===t.cache&&(t.cache=!1),t.crossDomain&&(t.type="GET")})),A.ajaxTransport("script",(function(t){var e,n;if(t.crossDomain||t.scriptAttrs)return{send:function(r,i){e=A("\n\n\n","import { render, staticRenderFns } from \"./VueTypeaheadBootstrapListItem.vue?vue&type=template&id=6230cb76&scoped=true&\"\nimport script from \"./VueTypeaheadBootstrapListItem.vue?vue&type=script&lang=js&\"\nexport * from \"./VueTypeaheadBootstrapListItem.vue?vue&type=script&lang=js&\"\nimport style0 from \"./VueTypeaheadBootstrapListItem.vue?vue&type=style&index=0&id=6230cb76&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"6230cb76\",\n  null\n  \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('a',{class:_vm.textClasses,attrs:{\"tabindex\":\"0\",\"href\":\"#\"},on:{\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"tab\",9,$event.key,\"Tab\")){ return null; }return _vm.$emit('listItemBlur')},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"])){ return null; }$event.stopPropagation();$event.preventDefault();return _vm.$emit('listItemBlur')},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"down\",40,$event.key,[\"Down\",\"ArrowDown\"])){ return null; }$event.preventDefault();},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"up\",38,$event.key,[\"Up\",\"ArrowUp\"])){ return null; }$event.preventDefault();}],\"keyup\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"down\",40,$event.key,[\"Down\",\"ArrowDown\"])){ return null; }return _vm.$parent.selectNextListItem($event)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"up\",38,$event.key,[\"Up\",\"ArrowUp\"])){ return null; }return _vm.$parent.selectPreviousListItem($event)}],\"blur\":_vm.processFocusOut}},[_c('div',{staticClass:\"sr-only\"},[_vm._v(_vm._s(_vm.screenReaderText))]),_vm._v(\" \"),_c('div',{attrs:{\"aria-hidden\":\"true\"}},[_vm._t(\"suggestion\",[_c('span',{domProps:{\"innerHTML\":_vm._s(_vm.htmlText)}})],null,{ data: _vm.data, htmlText: _vm.htmlText })],2)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n  \n    \n      \n         \n     \n  
\n \n\n\n","import mod from \"-!../../../vue-loader/lib/index.js??vue-loader-options!./VueTypeaheadBootstrapList.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../vue-loader/lib/index.js??vue-loader-options!./VueTypeaheadBootstrapList.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./VueTypeaheadBootstrapList.vue?vue&type=template&id=e64f5270&\"\nimport script from \"./VueTypeaheadBootstrapList.vue?vue&type=script&lang=js&\"\nexport * from \"./VueTypeaheadBootstrapList.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"suggestionList\",staticClass:\"list-group shadow\"},_vm._l((_vm.matchedItems),function(item,id){return _c('vue-typeahead-bootstrap-list-item',_vm._g({key:id,attrs:{\"active\":_vm.isListItemActive(id),\"id\":(_vm.isListItemActive(id)) ? (\"selected-option-\" + _vm.vbtUniqueId) : false,\"data\":item.data,\"html-text\":_vm.highlight(item.text),\"role\":\"option\",\"aria-selected\":(_vm.isListItemActive(id)) ? 'true' : 'false',\"screen-reader-text\":item.text,\"disabled\":_vm.isDisabledItem(item),\"background-variant\":_vm.backgroundVariant,\"background-variant-resolver\":_vm.backgroundVariantResolver,\"text-variant\":_vm.textVariant},nativeOn:{\"click\":function($event){return _vm.handleHit(item, $event)}},scopedSlots:_vm._u([{key:\"suggestion\",fn:function(ref){\nvar data = ref.data;\nvar htmlText = ref.htmlText;\nreturn (_vm.$scopedSlots.suggestion)?[_vm._t(\"suggestion\",null,null,{ data: data, htmlText: htmlText })]:undefined}}],null,true)},_vm.$listeners))}),1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../vue-loader/lib/index.js??vue-loader-options!./VueTypeaheadBootstrap.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../vue-loader/lib/index.js??vue-loader-options!./VueTypeaheadBootstrap.vue?vue&type=script&lang=js&\"","\n   0) ? 'true' : 'false'\"\n  >\n    
\n      
\n        \n          {{ prepend }} \n         \n      
\n      
\n      
\n        \n          {{ append }} \n         \n      
\n    
\n    
 0\"\n      :query=\"inputValue\"\n      :data=\"formattedData\"\n      :background-variant=\"backgroundVariant\"\n      :background-variant-resolver=\"backgroundVariantResolver\"\n      :text-variant=\"textVariant\"\n      :maxMatches=\"maxMatches\"\n      :minMatchingChars=\"minMatchingChars\"\n      :disableSort=\"disableSort\"\n      :showOnFocus=\"showOnFocus\"\n      :showAllResults=\"showAllResults\"\n      @hit=\"handleHit\"\n      @listItemBlur=\"handleChildBlur\"\n      :highlightClass='highlightClass'\n      :disabledValues=\"disabledValues\"\n      :vbtUniqueId=\"id\"\n      role=\"listbox\"\n    >\n      \n      \n         \n      \n     \n  
 \n\n\n\n\n","import { render, staticRenderFns } from \"./VueTypeaheadBootstrap.vue?vue&type=template&id=dbe69e32&scoped=true&\"\nimport script from \"./VueTypeaheadBootstrap.vue?vue&type=script&lang=js&\"\nexport * from \"./VueTypeaheadBootstrap.vue?vue&type=script&lang=js&\"\nimport style0 from \"./VueTypeaheadBootstrap.vue?vue&type=style&index=0&id=dbe69e32&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"dbe69e32\",\n  null\n  \n)\n\nexport default component.exports","var baseIsNative = require('./_baseIsNative'),\n    getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n  var value = getValue(object, key);\n  return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/*!\n * vue-i18n v8.22.4 \n * (c) 2021 kazuya kawaguchi\n * Released under the MIT License.\n */\n/*  */\n\n/**\n * constants\n */\n\nvar numberFormatKeys = [\n  'compactDisplay',\n  'currency',\n  'currencyDisplay',\n  'currencySign',\n  'localeMatcher',\n  'notation',\n  'numberingSystem',\n  'signDisplay',\n  'style',\n  'unit',\n  'unitDisplay',\n  'useGrouping',\n  'minimumIntegerDigits',\n  'minimumFractionDigits',\n  'maximumFractionDigits',\n  'minimumSignificantDigits',\n  'maximumSignificantDigits'\n];\n\n/**\n * utilities\n */\n\nfunction warn (msg, err) {\n  if (typeof console !== 'undefined') {\n    console.warn('[vue-i18n] ' + msg);\n    /* istanbul ignore if */\n    if (err) {\n      console.warn(err.stack);\n    }\n  }\n}\n\nfunction error (msg, err) {\n  if (typeof console !== 'undefined') {\n    console.error('[vue-i18n] ' + msg);\n    /* istanbul ignore if */\n    if (err) {\n      console.error(err.stack);\n    }\n  }\n}\n\nvar isArray = Array.isArray;\n\nfunction isObject (obj) {\n  return obj !== null && typeof obj === 'object'\n}\n\nfunction isBoolean (val) {\n  return typeof val === 'boolean'\n}\n\nfunction isString (val) {\n  return typeof val === 'string'\n}\n\nvar toString = Object.prototype.toString;\nvar OBJECT_STRING = '[object Object]';\nfunction isPlainObject (obj) {\n  return toString.call(obj) === OBJECT_STRING\n}\n\nfunction isNull (val) {\n  return val === null || val === undefined\n}\n\nfunction isFunction (val) {\n  return typeof val === 'function'\n}\n\nfunction parseArgs () {\n  var args = [], len = arguments.length;\n  while ( len-- ) args[ len ] = arguments[ len ];\n\n  var locale = null;\n  var params = null;\n  if (args.length === 1) {\n    if (isObject(args[0]) || isArray(args[0])) {\n      params = args[0];\n    } else if (typeof args[0] === 'string') {\n      locale = args[0];\n    }\n  } else if (args.length === 2) {\n    if (typeof args[0] === 'string') {\n      locale = args[0];\n    }\n    /* istanbul ignore if */\n    if (isObject(args[1]) || isArray(args[1])) {\n      params = args[1];\n    }\n  }\n\n  return { locale: locale, params: params }\n}\n\nfunction looseClone (obj) {\n  return JSON.parse(JSON.stringify(obj))\n}\n\nfunction 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\nfunction includes (arr, item) {\n  return !!~arr.indexOf(item)\n}\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction hasOwn (obj, key) {\n  return hasOwnProperty.call(obj, key)\n}\n\nfunction merge (target) {\n  var arguments$1 = arguments;\n\n  var output = Object(target);\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments$1[i];\n    if (source !== undefined && source !== null) {\n      var key = (void 0);\n      for (key in source) {\n        if (hasOwn(source, key)) {\n          if (isObject(source[key])) {\n            output[key] = merge(output[key], source[key]);\n          } else {\n            output[key] = source[key];\n          }\n        }\n      }\n    }\n  }\n  return output\n}\n\nfunction looseEqual (a, b) {\n  if (a === b) { return true }\n  var isObjectA = isObject(a);\n  var isObjectB = isObject(b);\n  if (isObjectA && isObjectB) {\n    try {\n      var isArrayA = isArray(a);\n      var isArrayB = isArray(b);\n      if (isArrayA && isArrayB) {\n        return a.length === b.length && a.every(function (e, i) {\n          return looseEqual(e, b[i])\n        })\n      } else if (!isArrayA && !isArrayB) {\n        var keysA = Object.keys(a);\n        var keysB = Object.keys(b);\n        return keysA.length === keysB.length && keysA.every(function (key) {\n          return looseEqual(a[key], b[key])\n        })\n      } else {\n        /* istanbul ignore next */\n        return false\n      }\n    } catch (e) {\n      /* istanbul ignore next */\n      return false\n    }\n  } else if (!isObjectA && !isObjectB) {\n    return String(a) === String(b)\n  } else {\n    return false\n  }\n}\n\n/**\n * Sanitizes html special characters from input strings. For mitigating risk of XSS attacks.\n * @param rawText The raw input from the user that should be escaped.\n */\nfunction escapeHtml(rawText) {\n  return rawText\n    .replace(//g, '>')\n    .replace(/\"/g, '"')\n    .replace(/'/g, ''')\n}\n\n/**\n * Escapes html tags and special symbols from all provided params which were returned from parseArgs().params.\n * This method performs an in-place operation on the params object.\n *\n * @param {any} params Parameters as provided from `parseArgs().params`.\n *                     May be either an array of strings or a string->any map.\n *\n * @returns The manipulated `params` object.\n */\nfunction escapeParams(params) {\n  if(params != null) {\n    Object.keys(params).forEach(function (key) {\n      if(typeof(params[key]) == 'string') {\n        params[key] = escapeHtml(params[key]);\n      }\n    });\n  }\n  return params\n}\n\n/*  */\n\nfunction extend (Vue) {\n  if (!Vue.prototype.hasOwnProperty('$i18n')) {\n    // $FlowFixMe\n    Object.defineProperty(Vue.prototype, '$i18n', {\n      get: function get () { return this._i18n }\n    });\n  }\n\n  Vue.prototype.$t = function (key) {\n    var values = [], len = arguments.length - 1;\n    while ( len-- > 0 ) values[ len ] = arguments[ len + 1 ];\n\n    var i18n = this.$i18n;\n    return i18n._t.apply(i18n, [ key, i18n.locale, i18n._getMessages(), this ].concat( values ))\n  };\n\n  Vue.prototype.$tc = function (key, choice) {\n    var values = [], len = arguments.length - 2;\n    while ( len-- > 0 ) values[ len ] = arguments[ len + 2 ];\n\n    var i18n = this.$i18n;\n    return i18n._tc.apply(i18n, [ key, i18n.locale, i18n._getMessages(), this, choice ].concat( values ))\n  };\n\n  Vue.prototype.$te = function (key, locale) {\n    var i18n = this.$i18n;\n    return i18n._te(key, i18n.locale, i18n._getMessages(), locale)\n  };\n\n  Vue.prototype.$d = function (value) {\n    var ref;\n\n    var args = [], len = arguments.length - 1;\n    while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n    return (ref = this.$i18n).d.apply(ref, [ value ].concat( args ))\n  };\n\n  Vue.prototype.$n = function (value) {\n    var ref;\n\n    var args = [], len = arguments.length - 1;\n    while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n    return (ref = this.$i18n).n.apply(ref, [ value ].concat( args ))\n  };\n}\n\n/*  */\n\nvar mixin = {\n  beforeCreate: function beforeCreate () {\n    var options = this.$options;\n    options.i18n = options.i18n || (options.__i18n ? {} : null);\n\n    if (options.i18n) {\n      if (options.i18n instanceof VueI18n) {\n        // init locale messages via custom blocks\n        if (options.__i18n) {\n          try {\n            var localeMessages = options.i18n && options.i18n.messages ? options.i18n.messages : {};\n            options.__i18n.forEach(function (resource) {\n              localeMessages = merge(localeMessages, JSON.parse(resource));\n            });\n            Object.keys(localeMessages).forEach(function (locale) {\n              options.i18n.mergeLocaleMessage(locale, localeMessages[locale]);\n            });\n          } catch (e) {\n            if (process.env.NODE_ENV !== 'production') {\n              error(\"Cannot parse locale messages via custom blocks.\", e);\n            }\n          }\n        }\n        this._i18n = options.i18n;\n        this._i18nWatcher = this._i18n.watchI18nData();\n      } else if (isPlainObject(options.i18n)) {\n        var rootI18n = this.$root && this.$root.$i18n && this.$root.$i18n instanceof VueI18n\n          ? this.$root.$i18n\n          : null;\n        // component local i18n\n        if (rootI18n) {\n          options.i18n.root = this.$root;\n          options.i18n.formatter = rootI18n.formatter;\n          options.i18n.fallbackLocale = rootI18n.fallbackLocale;\n          options.i18n.formatFallbackMessages = rootI18n.formatFallbackMessages;\n          options.i18n.silentTranslationWarn = rootI18n.silentTranslationWarn;\n          options.i18n.silentFallbackWarn = rootI18n.silentFallbackWarn;\n          options.i18n.pluralizationRules = rootI18n.pluralizationRules;\n          options.i18n.preserveDirectiveContent = rootI18n.preserveDirectiveContent;\n        }\n\n        // init locale messages via custom blocks\n        if (options.__i18n) {\n          try {\n            var localeMessages$1 = options.i18n && options.i18n.messages ? options.i18n.messages : {};\n            options.__i18n.forEach(function (resource) {\n              localeMessages$1 = merge(localeMessages$1, JSON.parse(resource));\n            });\n            options.i18n.messages = localeMessages$1;\n          } catch (e) {\n            if (process.env.NODE_ENV !== 'production') {\n              warn(\"Cannot parse locale messages via custom blocks.\", e);\n            }\n          }\n        }\n\n        var ref = options.i18n;\n        var sharedMessages = ref.sharedMessages;\n        if (sharedMessages && isPlainObject(sharedMessages)) {\n          options.i18n.messages = merge(options.i18n.messages, sharedMessages);\n        }\n\n        this._i18n = new VueI18n(options.i18n);\n        this._i18nWatcher = this._i18n.watchI18nData();\n\n        if (options.i18n.sync === undefined || !!options.i18n.sync) {\n          this._localeWatcher = this.$i18n.watchLocale();\n        }\n\n        if (rootI18n) {\n          rootI18n.onComponentInstanceCreated(this._i18n);\n        }\n      } else {\n        if (process.env.NODE_ENV !== 'production') {\n          warn(\"Cannot be interpreted 'i18n' option.\");\n        }\n      }\n    } else if (this.$root && this.$root.$i18n && this.$root.$i18n instanceof VueI18n) {\n      // root i18n\n      this._i18n = this.$root.$i18n;\n    } else if (options.parent && options.parent.$i18n && options.parent.$i18n instanceof VueI18n) {\n      // parent i18n\n      this._i18n = options.parent.$i18n;\n    }\n  },\n\n  beforeMount: function beforeMount () {\n    var options = this.$options;\n    options.i18n = options.i18n || (options.__i18n ? {} : null);\n\n    if (options.i18n) {\n      if (options.i18n instanceof VueI18n) {\n        // init locale messages via custom blocks\n        this._i18n.subscribeDataChanging(this);\n        this._subscribing = true;\n      } else if (isPlainObject(options.i18n)) {\n        this._i18n.subscribeDataChanging(this);\n        this._subscribing = true;\n      } else {\n        if (process.env.NODE_ENV !== 'production') {\n          warn(\"Cannot be interpreted 'i18n' option.\");\n        }\n      }\n    } else if (this.$root && this.$root.$i18n && this.$root.$i18n instanceof VueI18n) {\n      this._i18n.subscribeDataChanging(this);\n      this._subscribing = true;\n    } else if (options.parent && options.parent.$i18n && options.parent.$i18n instanceof VueI18n) {\n      this._i18n.subscribeDataChanging(this);\n      this._subscribing = true;\n    }\n  },\n\n  beforeDestroy: function beforeDestroy () {\n    if (!this._i18n) { return }\n\n    var self = this;\n    this.$nextTick(function () {\n      if (self._subscribing) {\n        self._i18n.unsubscribeDataChanging(self);\n        delete self._subscribing;\n      }\n\n      if (self._i18nWatcher) {\n        self._i18nWatcher();\n        self._i18n.destroyVM();\n        delete self._i18nWatcher;\n      }\n\n      if (self._localeWatcher) {\n        self._localeWatcher();\n        delete self._localeWatcher;\n      }\n    });\n  }\n};\n\n/*  */\n\nvar interpolationComponent = {\n  name: 'i18n',\n  functional: true,\n  props: {\n    tag: {\n      type: [String, Boolean, Object],\n      default: 'span'\n    },\n    path: {\n      type: String,\n      required: true\n    },\n    locale: {\n      type: String\n    },\n    places: {\n      type: [Array, Object]\n    }\n  },\n  render: function render (h, ref) {\n    var data = ref.data;\n    var parent = ref.parent;\n    var props = ref.props;\n    var slots = ref.slots;\n\n    var $i18n = parent.$i18n;\n    if (!$i18n) {\n      if (process.env.NODE_ENV !== 'production') {\n        warn('Cannot find VueI18n instance!');\n      }\n      return\n    }\n\n    var path = props.path;\n    var locale = props.locale;\n    var places = props.places;\n    var params = slots();\n    var children = $i18n.i(\n      path,\n      locale,\n      onlyHasDefaultPlace(params) || places\n        ? useLegacyPlaces(params.default, places)\n        : params\n    );\n\n    var tag = (!!props.tag && props.tag !== true) || props.tag === false ? props.tag : 'span';\n    return tag ? h(tag, data, children) : children\n  }\n};\n\nfunction onlyHasDefaultPlace (params) {\n  var prop;\n  for (prop in params) {\n    if (prop !== 'default') { return false }\n  }\n  return Boolean(prop)\n}\n\nfunction useLegacyPlaces (children, places) {\n  var params = places ? createParamsFromPlaces(places) : {};\n\n  if (!children) { return params }\n\n  // Filter empty text nodes\n  children = children.filter(function (child) {\n    return child.tag || child.text.trim() !== ''\n  });\n\n  var everyPlace = children.every(vnodeHasPlaceAttribute);\n  if (process.env.NODE_ENV !== 'production' && everyPlace) {\n    warn('`place` attribute is deprecated in next major version. Please switch to Vue slots.');\n  }\n\n  return children.reduce(\n    everyPlace ? assignChildPlace : assignChildIndex,\n    params\n  )\n}\n\nfunction createParamsFromPlaces (places) {\n  if (process.env.NODE_ENV !== 'production') {\n    warn('`places` prop is deprecated in next major version. Please switch to Vue slots.');\n  }\n\n  return Array.isArray(places)\n    ? places.reduce(assignChildIndex, {})\n    : Object.assign({}, places)\n}\n\nfunction assignChildPlace (params, child) {\n  if (child.data && child.data.attrs && child.data.attrs.place) {\n    params[child.data.attrs.place] = child;\n  }\n  return params\n}\n\nfunction assignChildIndex (params, child, index) {\n  params[index] = child;\n  return params\n}\n\nfunction vnodeHasPlaceAttribute (vnode) {\n  return Boolean(vnode.data && vnode.data.attrs && vnode.data.attrs.place)\n}\n\n/*  */\n\nvar numberComponent = {\n  name: 'i18n-n',\n  functional: true,\n  props: {\n    tag: {\n      type: [String, Boolean, Object],\n      default: 'span'\n    },\n    value: {\n      type: Number,\n      required: true\n    },\n    format: {\n      type: [String, Object]\n    },\n    locale: {\n      type: String\n    }\n  },\n  render: function render (h, ref) {\n    var props = ref.props;\n    var parent = ref.parent;\n    var data = ref.data;\n\n    var i18n = parent.$i18n;\n\n    if (!i18n) {\n      if (process.env.NODE_ENV !== 'production') {\n        warn('Cannot find VueI18n instance!');\n      }\n      return null\n    }\n\n    var key = null;\n    var options = null;\n\n    if (isString(props.format)) {\n      key = props.format;\n    } else if (isObject(props.format)) {\n      if (props.format.key) {\n        key = props.format.key;\n      }\n\n      // Filter out number format options only\n      options = Object.keys(props.format).reduce(function (acc, prop) {\n        var obj;\n\n        if (includes(numberFormatKeys, prop)) {\n          return Object.assign({}, acc, ( obj = {}, obj[prop] = props.format[prop], obj ))\n        }\n        return acc\n      }, null);\n    }\n\n    var locale = props.locale || i18n.locale;\n    var parts = i18n._ntp(props.value, locale, key, options);\n\n    var values = parts.map(function (part, index) {\n      var obj;\n\n      var slot = data.scopedSlots && data.scopedSlots[part.type];\n      return slot ? slot(( obj = {}, obj[part.type] = part.value, obj.index = index, obj.parts = parts, obj )) : part.value\n    });\n\n    var tag = (!!props.tag && props.tag !== true) || props.tag === false ? props.tag : 'span';\n    return tag\n      ? h(tag, {\n        attrs: data.attrs,\n        'class': data['class'],\n        staticClass: data.staticClass\n      }, values)\n      : values\n  }\n};\n\n/*  */\n\nfunction bind (el, binding, vnode) {\n  if (!assert(el, vnode)) { return }\n\n  t(el, binding, vnode);\n}\n\nfunction update (el, binding, vnode, oldVNode) {\n  if (!assert(el, vnode)) { return }\n\n  var i18n = vnode.context.$i18n;\n  if (localeEqual(el, vnode) &&\n    (looseEqual(binding.value, binding.oldValue) &&\n     looseEqual(el._localeMessage, i18n.getLocaleMessage(i18n.locale)))) { return }\n\n  t(el, binding, vnode);\n}\n\nfunction unbind (el, binding, vnode, oldVNode) {\n  var vm = vnode.context;\n  if (!vm) {\n    warn('Vue instance does not exists in VNode context');\n    return\n  }\n\n  var i18n = vnode.context.$i18n || {};\n  if (!binding.modifiers.preserve && !i18n.preserveDirectiveContent) {\n    el.textContent = '';\n  }\n  el._vt = undefined;\n  delete el['_vt'];\n  el._locale = undefined;\n  delete el['_locale'];\n  el._localeMessage = undefined;\n  delete el['_localeMessage'];\n}\n\nfunction assert (el, vnode) {\n  var vm = vnode.context;\n  if (!vm) {\n    warn('Vue instance does not exists in VNode context');\n    return false\n  }\n\n  if (!vm.$i18n) {\n    warn('VueI18n instance does not exists in Vue instance');\n    return false\n  }\n\n  return true\n}\n\nfunction localeEqual (el, vnode) {\n  var vm = vnode.context;\n  return el._locale === vm.$i18n.locale\n}\n\nfunction t (el, binding, vnode) {\n  var ref$1, ref$2;\n\n  var value = binding.value;\n\n  var ref = parseValue(value);\n  var path = ref.path;\n  var locale = ref.locale;\n  var args = ref.args;\n  var choice = ref.choice;\n  if (!path && !locale && !args) {\n    warn('value type not supported');\n    return\n  }\n\n  if (!path) {\n    warn('`path` is required in v-t directive');\n    return\n  }\n\n  var vm = vnode.context;\n  if (choice != null) {\n    el._vt = el.textContent = (ref$1 = vm.$i18n).tc.apply(ref$1, [ path, choice ].concat( makeParams(locale, args) ));\n  } else {\n    el._vt = el.textContent = (ref$2 = vm.$i18n).t.apply(ref$2, [ path ].concat( makeParams(locale, args) ));\n  }\n  el._locale = vm.$i18n.locale;\n  el._localeMessage = vm.$i18n.getLocaleMessage(vm.$i18n.locale);\n}\n\nfunction parseValue (value) {\n  var path;\n  var locale;\n  var args;\n  var choice;\n\n  if (isString(value)) {\n    path = value;\n  } else if (isPlainObject(value)) {\n    path = value.path;\n    locale = value.locale;\n    args = value.args;\n    choice = value.choice;\n  }\n\n  return { path: path, locale: locale, args: args, choice: choice }\n}\n\nfunction makeParams (locale, args) {\n  var params = [];\n\n  locale && params.push(locale);\n  if (args && (Array.isArray(args) || isPlainObject(args))) {\n    params.push(args);\n  }\n\n  return params\n}\n\nvar Vue;\n\nfunction install (_Vue) {\n  /* istanbul ignore if */\n  if (process.env.NODE_ENV !== 'production' && install.installed && _Vue === Vue) {\n    warn('already installed.');\n    return\n  }\n  install.installed = true;\n\n  Vue = _Vue;\n\n  var version = (Vue.version && Number(Vue.version.split('.')[0])) || -1;\n  /* istanbul ignore if */\n  if (process.env.NODE_ENV !== 'production' && version < 2) {\n    warn((\"vue-i18n (\" + (install.version) + \") need to use Vue 2.0 or later (Vue: \" + (Vue.version) + \").\"));\n    return\n  }\n\n  extend(Vue);\n  Vue.mixin(mixin);\n  Vue.directive('t', { bind: bind, update: update, unbind: unbind });\n  Vue.component(interpolationComponent.name, interpolationComponent);\n  Vue.component(numberComponent.name, numberComponent);\n\n  // use simple mergeStrategies to prevent i18n instance lose '__proto__'\n  var strats = Vue.config.optionMergeStrategies;\n  strats.i18n = function (parentVal, childVal) {\n    return childVal === undefined\n      ? parentVal\n      : childVal\n  };\n}\n\n/*  */\n\nvar BaseFormatter = function BaseFormatter () {\n  this._caches = Object.create(null);\n};\n\nBaseFormatter.prototype.interpolate = function interpolate (message, values) {\n  if (!values) {\n    return [message]\n  }\n  var tokens = this._caches[message];\n  if (!tokens) {\n    tokens = parse(message);\n    this._caches[message] = tokens;\n  }\n  return compile(tokens, values)\n};\n\n\n\nvar RE_TOKEN_LIST_VALUE = /^(?:\\d)+/;\nvar RE_TOKEN_NAMED_VALUE = /^(?:\\w)+/;\n\nfunction parse (format) {\n  var tokens = [];\n  var position = 0;\n\n  var text = '';\n  while (position < format.length) {\n    var char = format[position++];\n    if (char === '{') {\n      if (text) {\n        tokens.push({ type: 'text', value: text });\n      }\n\n      text = '';\n      var sub = '';\n      char = format[position++];\n      while (char !== undefined && char !== '}') {\n        sub += char;\n        char = format[position++];\n      }\n      var isClosed = char === '}';\n\n      var type = RE_TOKEN_LIST_VALUE.test(sub)\n        ? 'list'\n        : isClosed && RE_TOKEN_NAMED_VALUE.test(sub)\n          ? 'named'\n          : 'unknown';\n      tokens.push({ value: sub, type: type });\n    } else if (char === '%') {\n      // when found rails i18n syntax, skip text capture\n      if (format[(position)] !== '{') {\n        text += char;\n      }\n    } else {\n      text += char;\n    }\n  }\n\n  text && tokens.push({ type: 'text', value: text });\n\n  return tokens\n}\n\nfunction compile (tokens, values) {\n  var compiled = [];\n  var index = 0;\n\n  var mode = Array.isArray(values)\n    ? 'list'\n    : isObject(values)\n      ? 'named'\n      : 'unknown';\n  if (mode === 'unknown') { return compiled }\n\n  while (index < tokens.length) {\n    var token = tokens[index];\n    switch (token.type) {\n      case 'text':\n        compiled.push(token.value);\n        break\n      case 'list':\n        compiled.push(values[parseInt(token.value, 10)]);\n        break\n      case 'named':\n        if (mode === 'named') {\n          compiled.push((values)[token.value]);\n        } else {\n          if (process.env.NODE_ENV !== 'production') {\n            warn((\"Type of token '\" + (token.type) + \"' and format of value '\" + mode + \"' don't match!\"));\n          }\n        }\n        break\n      case 'unknown':\n        if (process.env.NODE_ENV !== 'production') {\n          warn(\"Detect 'unknown' type of token!\");\n        }\n        break\n    }\n    index++;\n  }\n\n  return compiled\n}\n\n/*  */\n\n/**\n *  Path parser\n *  - Inspired:\n *    Vue.js Path parser\n */\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  '0': [IN_IDENT, APPEND],\n  'number': [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 * Check if an expression is a literal value.\n */\n\nvar literalValueRE = /^\\s?(?:true|false|-?[\\d.]+|'[^']*'|\"[^\"]*\")\\s?$/;\nfunction isLiteral (exp) {\n  return literalValueRE.test(exp)\n}\n\n/**\n * Strip quotes from a string\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)\n    ? str.slice(1, -1)\n    : str\n}\n\n/**\n * Determine the type of a character in a keypath.\n */\n\nfunction getPathCharType (ch) {\n  if (ch === undefined || ch === null) { return 'eof' }\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      return ch\n\n    case 0x5F: // _\n    case 0x24: // $\n    case 0x2D: // -\n      return 'ident'\n\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:  // Paragraph Separator\n      return 'ws'\n  }\n\n  return 'ident'\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\nfunction formatSubPath (path) {\n  var trimmed = path.trim();\n  // invalid leading 0\n  if (path.charAt(0) === '0' && isNaN(path)) { 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\nfunction parse$1 (path) {\n  var keys = [];\n  var index = -1;\n  var mode = BEFORE_PATH;\n  var subPathDepth = 0;\n  var c;\n  var key;\n  var newChar;\n  var type;\n  var transition;\n  var action;\n  var typeMap;\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      if (key === undefined) { return false }\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 === \"'\") ||\n      (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\n        ? c\n        : newChar;\n      if (action() === false) {\n        return\n      }\n    }\n\n    if (mode === AFTER_PATH) {\n      return keys\n    }\n  }\n}\n\n\n\n\n\nvar I18nPath = function I18nPath () {\n  this._cache = Object.create(null);\n};\n\n/**\n * External parse that check for a cache hit first\n */\nI18nPath.prototype.parsePath = function parsePath (path) {\n  var hit = this._cache[path];\n  if (!hit) {\n    hit = parse$1(path);\n    if (hit) {\n      this._cache[path] = hit;\n    }\n  }\n  return hit || []\n};\n\n/**\n * Get path value from path string\n */\nI18nPath.prototype.getPathValue = function getPathValue (obj, path) {\n  if (!isObject(obj)) { return null }\n\n  var paths = this.parsePath(path);\n  if (paths.length === 0) {\n    return null\n  } else {\n    var length = paths.length;\n    var last = obj;\n    var i = 0;\n    while (i < length) {\n      var value = last[paths[i]];\n      if (value === undefined) {\n        return null\n      }\n      last = value;\n      i++;\n    }\n\n    return last\n  }\n};\n\n/*  */\n\n\n\nvar htmlTagMatcher = /<\\/?[\\w\\s=\"/.':;#-\\/]+>/;\nvar linkKeyMatcher = /(?:@(?:\\.[a-z]+)?:(?:[\\w\\-_|.]+|\\([\\w\\-_|.]+\\)))/g;\nvar linkKeyPrefixMatcher = /^@(?:\\.([a-z]+))?:/;\nvar bracketsMatcher = /[()]/g;\nvar defaultModifiers = {\n  'upper': function (str) { return str.toLocaleUpperCase(); },\n  'lower': function (str) { return str.toLocaleLowerCase(); },\n  'capitalize': function (str) { return (\"\" + (str.charAt(0).toLocaleUpperCase()) + (str.substr(1))); }\n};\n\nvar defaultFormatter = new BaseFormatter();\n\nvar VueI18n = function VueI18n (options) {\n  var this$1 = this;\n  if ( options === void 0 ) options = {};\n\n  // Auto install if it is not done yet and `window` has `Vue`.\n  // To allow users to avoid auto-installation in some cases,\n  // this code should be placed here. See #290\n  /* istanbul ignore if */\n  if (!Vue && typeof window !== 'undefined' && window.Vue) {\n    install(window.Vue);\n  }\n\n  var locale = options.locale || 'en-US';\n  var fallbackLocale = options.fallbackLocale === false\n    ? false\n    : options.fallbackLocale || 'en-US';\n  var messages = options.messages || {};\n  var dateTimeFormats = options.dateTimeFormats || {};\n  var numberFormats = options.numberFormats || {};\n\n  this._vm = null;\n  this._formatter = options.formatter || defaultFormatter;\n  this._modifiers = options.modifiers || {};\n  this._missing = options.missing || null;\n  this._root = options.root || null;\n  this._sync = options.sync === undefined ? true : !!options.sync;\n  this._fallbackRoot = options.fallbackRoot === undefined\n    ? true\n    : !!options.fallbackRoot;\n  this._formatFallbackMessages = options.formatFallbackMessages === undefined\n    ? false\n    : !!options.formatFallbackMessages;\n  this._silentTranslationWarn = options.silentTranslationWarn === undefined\n    ? false\n    : options.silentTranslationWarn;\n  this._silentFallbackWarn = options.silentFallbackWarn === undefined\n    ? false\n    : !!options.silentFallbackWarn;\n  this._dateTimeFormatters = {};\n  this._numberFormatters = {};\n  this._path = new I18nPath();\n  this._dataListeners = [];\n  this._componentInstanceCreatedListener = options.componentInstanceCreatedListener || null;\n  this._preserveDirectiveContent = options.preserveDirectiveContent === undefined\n    ? false\n    : !!options.preserveDirectiveContent;\n  this.pluralizationRules = options.pluralizationRules || {};\n  this._warnHtmlInMessage = options.warnHtmlInMessage || 'off';\n  this._postTranslation = options.postTranslation || null;\n  this._escapeParameterHtml = options.escapeParameterHtml || false;\n\n  /**\n   * @param choice {number} a choice index given by the input to $tc: `$tc('path.to.rule', choiceIndex)`\n   * @param choicesLength {number} an overall amount of available choices\n   * @returns a final choice index\n  */\n  this.getChoiceIndex = function (choice, choicesLength) {\n    var thisPrototype = Object.getPrototypeOf(this$1);\n    if (thisPrototype && thisPrototype.getChoiceIndex) {\n      var prototypeGetChoiceIndex = (thisPrototype.getChoiceIndex);\n      return (prototypeGetChoiceIndex).call(this$1, choice, choicesLength)\n    }\n\n    // Default (old) getChoiceIndex implementation - english-compatible\n    var defaultImpl = function (_choice, _choicesLength) {\n      _choice = Math.abs(_choice);\n\n      if (_choicesLength === 2) {\n        return _choice\n          ? _choice > 1\n            ? 1\n            : 0\n          : 1\n      }\n\n      return _choice ? Math.min(_choice, 2) : 0\n    };\n\n    if (this$1.locale in this$1.pluralizationRules) {\n      return this$1.pluralizationRules[this$1.locale].apply(this$1, [choice, choicesLength])\n    } else {\n      return defaultImpl(choice, choicesLength)\n    }\n  };\n\n\n  this._exist = function (message, key) {\n    if (!message || !key) { return false }\n    if (!isNull(this$1._path.getPathValue(message, key))) { return true }\n    // fallback for flat key\n    if (message[key]) { return true }\n    return false\n  };\n\n  if (this._warnHtmlInMessage === 'warn' || this._warnHtmlInMessage === 'error') {\n    Object.keys(messages).forEach(function (locale) {\n      this$1._checkLocaleMessage(locale, this$1._warnHtmlInMessage, messages[locale]);\n    });\n  }\n\n  this._initVM({\n    locale: locale,\n    fallbackLocale: fallbackLocale,\n    messages: messages,\n    dateTimeFormats: dateTimeFormats,\n    numberFormats: numberFormats\n  });\n};\n\nvar prototypeAccessors = { vm: { configurable: true },messages: { configurable: true },dateTimeFormats: { configurable: true },numberFormats: { configurable: true },availableLocales: { configurable: true },locale: { configurable: true },fallbackLocale: { configurable: true },formatFallbackMessages: { configurable: true },missing: { configurable: true },formatter: { configurable: true },silentTranslationWarn: { configurable: true },silentFallbackWarn: { configurable: true },preserveDirectiveContent: { configurable: true },warnHtmlInMessage: { configurable: true },postTranslation: { configurable: true } };\n\nVueI18n.prototype._checkLocaleMessage = function _checkLocaleMessage (locale, level, message) {\n  var paths = [];\n\n  var fn = function (level, locale, message, paths) {\n    if (isPlainObject(message)) {\n      Object.keys(message).forEach(function (key) {\n        var val = message[key];\n        if (isPlainObject(val)) {\n          paths.push(key);\n          paths.push('.');\n          fn(level, locale, val, paths);\n          paths.pop();\n          paths.pop();\n        } else {\n          paths.push(key);\n          fn(level, locale, val, paths);\n          paths.pop();\n        }\n      });\n    } else if (isArray(message)) {\n      message.forEach(function (item, index) {\n        if (isPlainObject(item)) {\n          paths.push((\"[\" + index + \"]\"));\n          paths.push('.');\n          fn(level, locale, item, paths);\n          paths.pop();\n          paths.pop();\n        } else {\n          paths.push((\"[\" + index + \"]\"));\n          fn(level, locale, item, paths);\n          paths.pop();\n        }\n      });\n    } else if (isString(message)) {\n      var ret = htmlTagMatcher.test(message);\n      if (ret) {\n        var msg = \"Detected HTML in message '\" + message + \"' of keypath '\" + (paths.join('')) + \"' at '\" + locale + \"'. Consider component interpolation with '' to avoid XSS. See https://bit.ly/2ZqJzkp\";\n        if (level === 'warn') {\n          warn(msg);\n        } else if (level === 'error') {\n          error(msg);\n        }\n      }\n    }\n  };\n\n  fn(level, locale, message, paths);\n};\n\nVueI18n.prototype._initVM = function _initVM (data) {\n  var silent = Vue.config.silent;\n  Vue.config.silent = true;\n  this._vm = new Vue({ data: data });\n  Vue.config.silent = silent;\n};\n\nVueI18n.prototype.destroyVM = function destroyVM () {\n  this._vm.$destroy();\n};\n\nVueI18n.prototype.subscribeDataChanging = function subscribeDataChanging (vm) {\n  this._dataListeners.push(vm);\n};\n\nVueI18n.prototype.unsubscribeDataChanging = function unsubscribeDataChanging (vm) {\n  remove(this._dataListeners, vm);\n};\n\nVueI18n.prototype.watchI18nData = function watchI18nData () {\n  var self = this;\n  return this._vm.$watch('$data', function () {\n    var i = self._dataListeners.length;\n    while (i--) {\n      Vue.nextTick(function () {\n        self._dataListeners[i] && self._dataListeners[i].$forceUpdate();\n      });\n    }\n  }, { deep: true })\n};\n\nVueI18n.prototype.watchLocale = function watchLocale () {\n  /* istanbul ignore if */\n  if (!this._sync || !this._root) { return null }\n  var target = this._vm;\n  return this._root.$i18n.vm.$watch('locale', function (val) {\n    target.$set(target, 'locale', val);\n    target.$forceUpdate();\n  }, { immediate: true })\n};\n\nVueI18n.prototype.onComponentInstanceCreated = function onComponentInstanceCreated (newI18n) {\n  if (this._componentInstanceCreatedListener) {\n    this._componentInstanceCreatedListener(newI18n, this);\n  }\n};\n\nprototypeAccessors.vm.get = function () { return this._vm };\n\nprototypeAccessors.messages.get = function () { return looseClone(this._getMessages()) };\nprototypeAccessors.dateTimeFormats.get = function () { return looseClone(this._getDateTimeFormats()) };\nprototypeAccessors.numberFormats.get = function () { return looseClone(this._getNumberFormats()) };\nprototypeAccessors.availableLocales.get = function () { return Object.keys(this.messages).sort() };\n\nprototypeAccessors.locale.get = function () { return this._vm.locale };\nprototypeAccessors.locale.set = function (locale) {\n  this._vm.$set(this._vm, 'locale', locale);\n};\n\nprototypeAccessors.fallbackLocale.get = function () { return this._vm.fallbackLocale };\nprototypeAccessors.fallbackLocale.set = function (locale) {\n  this._localeChainCache = {};\n  this._vm.$set(this._vm, 'fallbackLocale', locale);\n};\n\nprototypeAccessors.formatFallbackMessages.get = function () { return this._formatFallbackMessages };\nprototypeAccessors.formatFallbackMessages.set = function (fallback) { this._formatFallbackMessages = fallback; };\n\nprototypeAccessors.missing.get = function () { return this._missing };\nprototypeAccessors.missing.set = function (handler) { this._missing = handler; };\n\nprototypeAccessors.formatter.get = function () { return this._formatter };\nprototypeAccessors.formatter.set = function (formatter) { this._formatter = formatter; };\n\nprototypeAccessors.silentTranslationWarn.get = function () { return this._silentTranslationWarn };\nprototypeAccessors.silentTranslationWarn.set = function (silent) { this._silentTranslationWarn = silent; };\n\nprototypeAccessors.silentFallbackWarn.get = function () { return this._silentFallbackWarn };\nprototypeAccessors.silentFallbackWarn.set = function (silent) { this._silentFallbackWarn = silent; };\n\nprototypeAccessors.preserveDirectiveContent.get = function () { return this._preserveDirectiveContent };\nprototypeAccessors.preserveDirectiveContent.set = function (preserve) { this._preserveDirectiveContent = preserve; };\n\nprototypeAccessors.warnHtmlInMessage.get = function () { return this._warnHtmlInMessage };\nprototypeAccessors.warnHtmlInMessage.set = function (level) {\n    var this$1 = this;\n\n  var orgLevel = this._warnHtmlInMessage;\n  this._warnHtmlInMessage = level;\n  if (orgLevel !== level && (level === 'warn' || level === 'error')) {\n    var messages = this._getMessages();\n    Object.keys(messages).forEach(function (locale) {\n      this$1._checkLocaleMessage(locale, this$1._warnHtmlInMessage, messages[locale]);\n    });\n  }\n};\n\nprototypeAccessors.postTranslation.get = function () { return this._postTranslation };\nprototypeAccessors.postTranslation.set = function (handler) { this._postTranslation = handler; };\n\nVueI18n.prototype._getMessages = function _getMessages () { return this._vm.messages };\nVueI18n.prototype._getDateTimeFormats = function _getDateTimeFormats () { return this._vm.dateTimeFormats };\nVueI18n.prototype._getNumberFormats = function _getNumberFormats () { return this._vm.numberFormats };\n\nVueI18n.prototype._warnDefault = function _warnDefault (locale, key, result, vm, values, interpolateMode) {\n  if (!isNull(result)) { return result }\n  if (this._missing) {\n    var missingRet = this._missing.apply(null, [locale, key, vm, values]);\n    if (isString(missingRet)) {\n      return missingRet\n    }\n  } else {\n    if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key)) {\n      warn(\n        \"Cannot translate the value of keypath '\" + key + \"'. \" +\n        'Use the value of keypath as default.'\n      );\n    }\n  }\n\n  if (this._formatFallbackMessages) {\n    var parsedArgs = parseArgs.apply(void 0, values);\n    return this._render(key, interpolateMode, parsedArgs.params, key)\n  } else {\n    return key\n  }\n};\n\nVueI18n.prototype._isFallbackRoot = function _isFallbackRoot (val) {\n  return !val && !isNull(this._root) && this._fallbackRoot\n};\n\nVueI18n.prototype._isSilentFallbackWarn = function _isSilentFallbackWarn (key) {\n  return this._silentFallbackWarn instanceof RegExp\n    ? this._silentFallbackWarn.test(key)\n    : this._silentFallbackWarn\n};\n\nVueI18n.prototype._isSilentFallback = function _isSilentFallback (locale, key) {\n  return this._isSilentFallbackWarn(key) && (this._isFallbackRoot() || locale !== this.fallbackLocale)\n};\n\nVueI18n.prototype._isSilentTranslationWarn = function _isSilentTranslationWarn (key) {\n  return this._silentTranslationWarn instanceof RegExp\n    ? this._silentTranslationWarn.test(key)\n    : this._silentTranslationWarn\n};\n\nVueI18n.prototype._interpolate = function _interpolate (\n  locale,\n  message,\n  key,\n  host,\n  interpolateMode,\n  values,\n  visitedLinkStack\n) {\n  if (!message) { return null }\n\n  var pathRet = this._path.getPathValue(message, key);\n  if (isArray(pathRet) || isPlainObject(pathRet)) { return pathRet }\n\n  var ret;\n  if (isNull(pathRet)) {\n    /* istanbul ignore else */\n    if (isPlainObject(message)) {\n      ret = message[key];\n      if (!(isString(ret) || isFunction(ret))) {\n        if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallback(locale, key)) {\n          warn((\"Value of key '\" + key + \"' is not a string or function !\"));\n        }\n        return null\n      }\n    } else {\n      return null\n    }\n  } else {\n    /* istanbul ignore else */\n    if (isString(pathRet) || isFunction(pathRet)) {\n      ret = pathRet;\n    } else {\n      if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallback(locale, key)) {\n        warn((\"Value of key '\" + key + \"' is not a string or function!\"));\n      }\n      return null\n    }\n  }\n\n  // Check for the existence of links within the translated string\n  if (isString(ret) && (ret.indexOf('@:') >= 0 || ret.indexOf('@.') >= 0)) {\n    ret = this._link(locale, message, ret, host, 'raw', values, visitedLinkStack);\n  }\n\n  return this._render(ret, interpolateMode, values, key)\n};\n\nVueI18n.prototype._link = function _link (\n  locale,\n  message,\n  str,\n  host,\n  interpolateMode,\n  values,\n  visitedLinkStack\n) {\n  var ret = str;\n\n  // Match all the links within the local\n  // We are going to replace each of\n  // them with its translation\n  var matches = ret.match(linkKeyMatcher);\n  for (var idx in matches) {\n    // ie compatible: filter custom array\n    // prototype method\n    if (!matches.hasOwnProperty(idx)) {\n      continue\n    }\n    var link = matches[idx];\n    var linkKeyPrefixMatches = link.match(linkKeyPrefixMatcher);\n    var linkPrefix = linkKeyPrefixMatches[0];\n      var formatterName = linkKeyPrefixMatches[1];\n\n    // Remove the leading @:, @.case: and the brackets\n    var linkPlaceholder = link.replace(linkPrefix, '').replace(bracketsMatcher, '');\n\n    if (includes(visitedLinkStack, linkPlaceholder)) {\n      if (process.env.NODE_ENV !== 'production') {\n        warn((\"Circular reference found. \\\"\" + link + \"\\\" is already visited in the chain of \" + (visitedLinkStack.reverse().join(' <- '))));\n      }\n      return ret\n    }\n    visitedLinkStack.push(linkPlaceholder);\n\n    // Translate the link\n    var translated = this._interpolate(\n      locale, message, linkPlaceholder, host,\n      interpolateMode === 'raw' ? 'string' : interpolateMode,\n      interpolateMode === 'raw' ? undefined : values,\n      visitedLinkStack\n    );\n\n    if (this._isFallbackRoot(translated)) {\n      if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(linkPlaceholder)) {\n        warn((\"Fall back to translate the link placeholder '\" + linkPlaceholder + \"' with root locale.\"));\n      }\n      /* istanbul ignore if */\n      if (!this._root) { throw Error('unexpected error') }\n      var root = this._root.$i18n;\n      translated = root._translate(\n        root._getMessages(), root.locale, root.fallbackLocale,\n        linkPlaceholder, host, interpolateMode, values\n      );\n    }\n    translated = this._warnDefault(\n      locale, linkPlaceholder, translated, host,\n      isArray(values) ? values : [values],\n      interpolateMode\n    );\n\n    if (this._modifiers.hasOwnProperty(formatterName)) {\n      translated = this._modifiers[formatterName](translated);\n    } else if (defaultModifiers.hasOwnProperty(formatterName)) {\n      translated = defaultModifiers[formatterName](translated);\n    }\n\n    visitedLinkStack.pop();\n\n    // Replace the link with the translated\n    ret = !translated ? ret : ret.replace(link, translated);\n  }\n\n  return ret\n};\n\nVueI18n.prototype._createMessageContext = function _createMessageContext (values) {\n  var _list = isArray(values) ? values : [];\n  var _named = isObject(values) ? values : {};\n  var list = function (index) { return _list[index]; };\n  var named = function (key) { return _named[key]; };\n  return {\n    list: list,\n    named: named\n  }\n};\n\nVueI18n.prototype._render = function _render (message, interpolateMode, values, path) {\n  if (isFunction(message)) {\n    return message(this._createMessageContext(values))\n  }\n\n  var ret = this._formatter.interpolate(message, values, path);\n\n  // If the custom formatter refuses to work - apply the default one\n  if (!ret) {\n    ret = defaultFormatter.interpolate(message, values, path);\n  }\n\n  // if interpolateMode is **not** 'string' ('row'),\n  // return the compiled data (e.g. ['foo', VNode, 'bar']) with formatter\n  return interpolateMode === 'string' && !isString(ret) ? ret.join('') : ret\n};\n\nVueI18n.prototype._appendItemToChain = function _appendItemToChain (chain, item, blocks) {\n  var follow = false;\n  if (!includes(chain, item)) {\n    follow = true;\n    if (item) {\n      follow = item[item.length - 1] !== '!';\n      item = item.replace(/!/g, '');\n      chain.push(item);\n      if (blocks && blocks[item]) {\n        follow = blocks[item];\n      }\n    }\n  }\n  return follow\n};\n\nVueI18n.prototype._appendLocaleToChain = function _appendLocaleToChain (chain, locale, blocks) {\n  var follow;\n  var tokens = locale.split('-');\n  do {\n    var item = tokens.join('-');\n    follow = this._appendItemToChain(chain, item, blocks);\n    tokens.splice(-1, 1);\n  } while (tokens.length && (follow === true))\n  return follow\n};\n\nVueI18n.prototype._appendBlockToChain = function _appendBlockToChain (chain, block, blocks) {\n  var follow = true;\n  for (var i = 0; (i < block.length) && (isBoolean(follow)); i++) {\n    var locale = block[i];\n    if (isString(locale)) {\n      follow = this._appendLocaleToChain(chain, locale, blocks);\n    }\n  }\n  return follow\n};\n\nVueI18n.prototype._getLocaleChain = function _getLocaleChain (start, fallbackLocale) {\n  if (start === '') { return [] }\n\n  if (!this._localeChainCache) {\n    this._localeChainCache = {};\n  }\n\n  var chain = this._localeChainCache[start];\n  if (!chain) {\n    if (!fallbackLocale) {\n      fallbackLocale = this.fallbackLocale;\n    }\n    chain = [];\n\n    // first block defined by start\n    var block = [start];\n\n    // while any intervening block found\n    while (isArray(block)) {\n      block = this._appendBlockToChain(\n        chain,\n        block,\n        fallbackLocale\n      );\n    }\n\n    // last block defined by default\n    var defaults;\n    if (isArray(fallbackLocale)) {\n      defaults = fallbackLocale;\n    } else if (isObject(fallbackLocale)) {\n      /* $FlowFixMe */\n      if (fallbackLocale['default']) {\n        defaults = fallbackLocale['default'];\n      } else {\n        defaults = null;\n      }\n    } else {\n      defaults = fallbackLocale;\n    }\n\n    // convert defaults to array\n    if (isString(defaults)) {\n      block = [defaults];\n    } else {\n      block = defaults;\n    }\n    if (block) {\n      this._appendBlockToChain(\n        chain,\n        block,\n        null\n      );\n    }\n    this._localeChainCache[start] = chain;\n  }\n  return chain\n};\n\nVueI18n.prototype._translate = function _translate (\n  messages,\n  locale,\n  fallback,\n  key,\n  host,\n  interpolateMode,\n  args\n) {\n  var chain = this._getLocaleChain(locale, fallback);\n  var res;\n  for (var i = 0; i < chain.length; i++) {\n    var step = chain[i];\n    res =\n      this._interpolate(step, messages[step], key, host, interpolateMode, args, [key]);\n    if (!isNull(res)) {\n      if (step !== locale && process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallbackWarn(key)) {\n        warn((\"Fall back to translate the keypath '\" + key + \"' with '\" + step + \"' locale.\"));\n      }\n      return res\n    }\n  }\n  return null\n};\n\nVueI18n.prototype._t = function _t (key, _locale, messages, host) {\n    var ref;\n\n    var values = [], len = arguments.length - 4;\n    while ( len-- > 0 ) values[ len ] = arguments[ len + 4 ];\n  if (!key) { return '' }\n\n  var parsedArgs = parseArgs.apply(void 0, values);\n  if(this._escapeParameterHtml) {\n    parsedArgs.params = escapeParams(parsedArgs.params);\n  }\n\n  var locale = parsedArgs.locale || _locale;\n\n  var ret = this._translate(\n    messages, locale, this.fallbackLocale, key,\n    host, 'string', parsedArgs.params\n  );\n  if (this._isFallbackRoot(ret)) {\n    if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallbackWarn(key)) {\n      warn((\"Fall back to translate the keypath '\" + key + \"' with root locale.\"));\n    }\n    /* istanbul ignore if */\n    if (!this._root) { throw Error('unexpected error') }\n    return (ref = this._root).$t.apply(ref, [ key ].concat( values ))\n  } else {\n    ret = this._warnDefault(locale, key, ret, host, values, 'string');\n    if (this._postTranslation && ret !== null && ret !== undefined) {\n      ret = this._postTranslation(ret, key);\n    }\n    return ret\n  }\n};\n\nVueI18n.prototype.t = function t (key) {\n    var ref;\n\n    var values = [], len = arguments.length - 1;\n    while ( len-- > 0 ) values[ len ] = arguments[ len + 1 ];\n  return (ref = this)._t.apply(ref, [ key, this.locale, this._getMessages(), null ].concat( values ))\n};\n\nVueI18n.prototype._i = function _i (key, locale, messages, host, values) {\n  var ret =\n    this._translate(messages, locale, this.fallbackLocale, key, host, 'raw', values);\n  if (this._isFallbackRoot(ret)) {\n    if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key)) {\n      warn((\"Fall back to interpolate the keypath '\" + key + \"' with root locale.\"));\n    }\n    if (!this._root) { throw Error('unexpected error') }\n    return this._root.$i18n.i(key, locale, values)\n  } else {\n    return this._warnDefault(locale, key, ret, host, [values], 'raw')\n  }\n};\n\nVueI18n.prototype.i = function i (key, locale, values) {\n  /* istanbul ignore if */\n  if (!key) { return '' }\n\n  if (!isString(locale)) {\n    locale = this.locale;\n  }\n\n  return this._i(key, locale, this._getMessages(), null, values)\n};\n\nVueI18n.prototype._tc = function _tc (\n  key,\n  _locale,\n  messages,\n  host,\n  choice\n) {\n    var ref;\n\n    var values = [], len = arguments.length - 5;\n    while ( len-- > 0 ) values[ len ] = arguments[ len + 5 ];\n  if (!key) { return '' }\n  if (choice === undefined) {\n    choice = 1;\n  }\n\n  var predefined = { 'count': choice, 'n': choice };\n  var parsedArgs = parseArgs.apply(void 0, values);\n  parsedArgs.params = Object.assign(predefined, parsedArgs.params);\n  values = parsedArgs.locale === null ? [parsedArgs.params] : [parsedArgs.locale, parsedArgs.params];\n  return this.fetchChoice((ref = this)._t.apply(ref, [ key, _locale, messages, host ].concat( values )), choice)\n};\n\nVueI18n.prototype.fetchChoice = function fetchChoice (message, choice) {\n  /* istanbul ignore if */\n  if (!message || !isString(message)) { return null }\n  var choices = message.split('|');\n\n  choice = this.getChoiceIndex(choice, choices.length);\n  if (!choices[choice]) { return message }\n  return choices[choice].trim()\n};\n\nVueI18n.prototype.tc = function tc (key, choice) {\n    var ref;\n\n    var values = [], len = arguments.length - 2;\n    while ( len-- > 0 ) values[ len ] = arguments[ len + 2 ];\n  return (ref = this)._tc.apply(ref, [ key, this.locale, this._getMessages(), null, choice ].concat( values ))\n};\n\nVueI18n.prototype._te = function _te (key, locale, messages) {\n    var args = [], len = arguments.length - 3;\n    while ( len-- > 0 ) args[ len ] = arguments[ len + 3 ];\n\n  var _locale = parseArgs.apply(void 0, args).locale || locale;\n  return this._exist(messages[_locale], key)\n};\n\nVueI18n.prototype.te = function te (key, locale) {\n  return this._te(key, this.locale, this._getMessages(), locale)\n};\n\nVueI18n.prototype.getLocaleMessage = function getLocaleMessage (locale) {\n  return looseClone(this._vm.messages[locale] || {})\n};\n\nVueI18n.prototype.setLocaleMessage = function setLocaleMessage (locale, message) {\n  if (this._warnHtmlInMessage === 'warn' || this._warnHtmlInMessage === 'error') {\n    this._checkLocaleMessage(locale, this._warnHtmlInMessage, message);\n  }\n  this._vm.$set(this._vm.messages, locale, message);\n};\n\nVueI18n.prototype.mergeLocaleMessage = function mergeLocaleMessage (locale, message) {\n  if (this._warnHtmlInMessage === 'warn' || this._warnHtmlInMessage === 'error') {\n    this._checkLocaleMessage(locale, this._warnHtmlInMessage, message);\n  }\n  this._vm.$set(this._vm.messages, locale, merge(\n    typeof this._vm.messages[locale] !== 'undefined' && Object.keys(this._vm.messages[locale]).length\n      ? this._vm.messages[locale]\n      : {},\n    message\n  ));\n};\n\nVueI18n.prototype.getDateTimeFormat = function getDateTimeFormat (locale) {\n  return looseClone(this._vm.dateTimeFormats[locale] || {})\n};\n\nVueI18n.prototype.setDateTimeFormat = function setDateTimeFormat (locale, format) {\n  this._vm.$set(this._vm.dateTimeFormats, locale, format);\n  this._clearDateTimeFormat(locale, format);\n};\n\nVueI18n.prototype.mergeDateTimeFormat = function mergeDateTimeFormat (locale, format) {\n  this._vm.$set(this._vm.dateTimeFormats, locale, merge(this._vm.dateTimeFormats[locale] || {}, format));\n  this._clearDateTimeFormat(locale, format);\n};\n\nVueI18n.prototype._clearDateTimeFormat = function _clearDateTimeFormat (locale, format) {\n  for (var key in format) {\n    var id = locale + \"__\" + key;\n\n    if (!this._dateTimeFormatters.hasOwnProperty(id)) {\n      continue\n    }\n\n    delete this._dateTimeFormatters[id];\n  }\n};\n\nVueI18n.prototype._localizeDateTime = function _localizeDateTime (\n  value,\n  locale,\n  fallback,\n  dateTimeFormats,\n  key\n) {\n  var _locale = locale;\n  var formats = dateTimeFormats[_locale];\n\n  var chain = this._getLocaleChain(locale, fallback);\n  for (var i = 0; i < chain.length; i++) {\n    var current = _locale;\n    var step = chain[i];\n    formats = dateTimeFormats[step];\n    _locale = step;\n    // fallback locale\n    if (isNull(formats) || isNull(formats[key])) {\n      if (step !== locale && process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallbackWarn(key)) {\n        warn((\"Fall back to '\" + step + \"' datetime formats from '\" + current + \"' datetime formats.\"));\n      }\n    } else {\n      break\n    }\n  }\n\n  if (isNull(formats) || isNull(formats[key])) {\n    return null\n  } else {\n    var format = formats[key];\n    var id = _locale + \"__\" + key;\n    var formatter = this._dateTimeFormatters[id];\n    if (!formatter) {\n      formatter = this._dateTimeFormatters[id] = new Intl.DateTimeFormat(_locale, format);\n    }\n    return formatter.format(value)\n  }\n};\n\nVueI18n.prototype._d = function _d (value, locale, key) {\n  /* istanbul ignore if */\n  if (process.env.NODE_ENV !== 'production' && !VueI18n.availabilities.dateTimeFormat) {\n    warn('Cannot format a Date value due to not supported Intl.DateTimeFormat.');\n    return ''\n  }\n\n  if (!key) {\n    return new Intl.DateTimeFormat(locale).format(value)\n  }\n\n  var ret =\n    this._localizeDateTime(value, locale, this.fallbackLocale, this._getDateTimeFormats(), key);\n  if (this._isFallbackRoot(ret)) {\n    if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallbackWarn(key)) {\n      warn((\"Fall back to datetime localization of root: key '\" + key + \"'.\"));\n    }\n    /* istanbul ignore if */\n    if (!this._root) { throw Error('unexpected error') }\n    return this._root.$i18n.d(value, key, locale)\n  } else {\n    return ret || ''\n  }\n};\n\nVueI18n.prototype.d = function d (value) {\n    var args = [], len = arguments.length - 1;\n    while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n\n  var locale = this.locale;\n  var key = null;\n\n  if (args.length === 1) {\n    if (isString(args[0])) {\n      key = args[0];\n    } else if (isObject(args[0])) {\n      if (args[0].locale) {\n        locale = args[0].locale;\n      }\n      if (args[0].key) {\n        key = args[0].key;\n      }\n    }\n  } else if (args.length === 2) {\n    if (isString(args[0])) {\n      key = args[0];\n    }\n    if (isString(args[1])) {\n      locale = args[1];\n    }\n  }\n\n  return this._d(value, locale, key)\n};\n\nVueI18n.prototype.getNumberFormat = function getNumberFormat (locale) {\n  return looseClone(this._vm.numberFormats[locale] || {})\n};\n\nVueI18n.prototype.setNumberFormat = function setNumberFormat (locale, format) {\n  this._vm.$set(this._vm.numberFormats, locale, format);\n  this._clearNumberFormat(locale, format);\n};\n\nVueI18n.prototype.mergeNumberFormat = function mergeNumberFormat (locale, format) {\n  this._vm.$set(this._vm.numberFormats, locale, merge(this._vm.numberFormats[locale] || {}, format));\n  this._clearNumberFormat(locale, format);\n};\n\nVueI18n.prototype._clearNumberFormat = function _clearNumberFormat (locale, format) {\n  for (var key in format) {\n    var id = locale + \"__\" + key;\n\n    if (!this._numberFormatters.hasOwnProperty(id)) {\n      continue\n    }\n\n    delete this._numberFormatters[id];\n  }\n};\n\nVueI18n.prototype._getNumberFormatter = function _getNumberFormatter (\n  value,\n  locale,\n  fallback,\n  numberFormats,\n  key,\n  options\n) {\n  var _locale = locale;\n  var formats = numberFormats[_locale];\n\n  var chain = this._getLocaleChain(locale, fallback);\n  for (var i = 0; i < chain.length; i++) {\n    var current = _locale;\n    var step = chain[i];\n    formats = numberFormats[step];\n    _locale = step;\n    // fallback locale\n    if (isNull(formats) || isNull(formats[key])) {\n      if (step !== locale && process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallbackWarn(key)) {\n        warn((\"Fall back to '\" + step + \"' number formats from '\" + current + \"' number formats.\"));\n      }\n    } else {\n      break\n    }\n  }\n\n  if (isNull(formats) || isNull(formats[key])) {\n    return null\n  } else {\n    var format = formats[key];\n\n    var formatter;\n    if (options) {\n      // If options specified - create one time number formatter\n      formatter = new Intl.NumberFormat(_locale, Object.assign({}, format, options));\n    } else {\n      var id = _locale + \"__\" + key;\n      formatter = this._numberFormatters[id];\n      if (!formatter) {\n        formatter = this._numberFormatters[id] = new Intl.NumberFormat(_locale, format);\n      }\n    }\n    return formatter\n  }\n};\n\nVueI18n.prototype._n = function _n (value, locale, key, options) {\n  /* istanbul ignore if */\n  if (!VueI18n.availabilities.numberFormat) {\n    if (process.env.NODE_ENV !== 'production') {\n      warn('Cannot format a Number value due to not supported Intl.NumberFormat.');\n    }\n    return ''\n  }\n\n  if (!key) {\n    var nf = !options ? new Intl.NumberFormat(locale) : new Intl.NumberFormat(locale, options);\n    return nf.format(value)\n  }\n\n  var formatter = this._getNumberFormatter(value, locale, this.fallbackLocale, this._getNumberFormats(), key, options);\n  var ret = formatter && formatter.format(value);\n  if (this._isFallbackRoot(ret)) {\n    if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallbackWarn(key)) {\n      warn((\"Fall back to number localization of root: key '\" + key + \"'.\"));\n    }\n    /* istanbul ignore if */\n    if (!this._root) { throw Error('unexpected error') }\n    return this._root.$i18n.n(value, Object.assign({}, { key: key, locale: locale }, options))\n  } else {\n    return ret || ''\n  }\n};\n\nVueI18n.prototype.n = function n (value) {\n    var args = [], len = arguments.length - 1;\n    while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n\n  var locale = this.locale;\n  var key = null;\n  var options = null;\n\n  if (args.length === 1) {\n    if (isString(args[0])) {\n      key = args[0];\n    } else if (isObject(args[0])) {\n      if (args[0].locale) {\n        locale = args[0].locale;\n      }\n      if (args[0].key) {\n        key = args[0].key;\n      }\n\n      // Filter out number format options only\n      options = Object.keys(args[0]).reduce(function (acc, key) {\n          var obj;\n\n        if (includes(numberFormatKeys, key)) {\n          return Object.assign({}, acc, ( obj = {}, obj[key] = args[0][key], obj ))\n        }\n        return acc\n      }, null);\n    }\n  } else if (args.length === 2) {\n    if (isString(args[0])) {\n      key = args[0];\n    }\n    if (isString(args[1])) {\n      locale = args[1];\n    }\n  }\n\n  return this._n(value, locale, key, options)\n};\n\nVueI18n.prototype._ntp = function _ntp (value, locale, key, options) {\n  /* istanbul ignore if */\n  if (!VueI18n.availabilities.numberFormat) {\n    if (process.env.NODE_ENV !== 'production') {\n      warn('Cannot format to parts a Number value due to not supported Intl.NumberFormat.');\n    }\n    return []\n  }\n\n  if (!key) {\n    var nf = !options ? new Intl.NumberFormat(locale) : new Intl.NumberFormat(locale, options);\n    return nf.formatToParts(value)\n  }\n\n  var formatter = this._getNumberFormatter(value, locale, this.fallbackLocale, this._getNumberFormats(), key, options);\n  var ret = formatter && formatter.formatToParts(value);\n  if (this._isFallbackRoot(ret)) {\n    if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key)) {\n      warn((\"Fall back to format number to parts of root: key '\" + key + \"' .\"));\n    }\n    /* istanbul ignore if */\n    if (!this._root) { throw Error('unexpected error') }\n    return this._root.$i18n._ntp(value, locale, key, options)\n  } else {\n    return ret || []\n  }\n};\n\nObject.defineProperties( VueI18n.prototype, prototypeAccessors );\n\nvar availabilities;\n// $FlowFixMe\nObject.defineProperty(VueI18n, 'availabilities', {\n  get: function get () {\n    if (!availabilities) {\n      var intlDefined = typeof Intl !== 'undefined';\n      availabilities = {\n        dateTimeFormat: intlDefined && typeof Intl.DateTimeFormat !== 'undefined',\n        numberFormat: intlDefined && typeof Intl.NumberFormat !== 'undefined'\n      };\n    }\n\n    return availabilities\n  }\n});\n\nVueI18n.install = install;\nVueI18n.version = '8.22.4';\n\nexport default VueI18n;\n","import Vue from 'vue';\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign#Polyfill\nfunction assign (target, varArgs) {\n  var arguments$1 = arguments;\n\n  if (target === null || target === undefined) {\n    throw new TypeError('Cannot convert undefined or null to object')\n  }\n  var to = Object(target);\n  for (var index = 1; index < arguments.length; index++) {\n    var nextSource = arguments$1[index];\n    if (nextSource !== null && nextSource !== undefined) {\n      for (var nextKey in nextSource) {\n        // Avoid bugs when hasOwnProperty is shadowed\n        /* istanbul ignore else */\n        if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {\n          to[nextKey] = nextSource[nextKey];\n        }\n      }\n    }\n  }\n  return to\n}\n\nfunction isExist (obj) {\n  return typeof obj !== 'undefined' && obj !== null\n}\n\nfunction isFunction (obj) {\n  return typeof obj === 'function'\n}\n\nfunction isNumber (obj) {\n  return typeof obj === 'number'\n}\n\nfunction isString (obj) {\n  return typeof obj === 'string'\n}\n\nfunction isBoolean (obj) {\n  return typeof obj === 'boolean'\n}\n\nfunction isPromiseSupported () {\n  return typeof window !== 'undefined' && isExist(window.Promise)\n}\n\nfunction hasOwnProperty (o, k) {\n  return Object.prototype.hasOwnProperty.call(o, k)\n}\n\nvar script = {\n  props: {\n    value: Number,\n    indicators: {\n      type: Boolean,\n      default: true\n    },\n    controls: {\n      type: Boolean,\n      default: true\n    },\n    interval: {\n      type: Number,\n      default: 5000\n    },\n    iconControlLeft: {\n      type: String,\n      default: 'glyphicon glyphicon-chevron-left'\n    },\n    iconControlRight: {\n      type: String,\n      default: 'glyphicon glyphicon-chevron-right'\n    }\n  },\n  data: function data () {\n    return {\n      slides: [],\n      activeIndex: 0, // Make v-model not required\n      timeoutId: 0,\n      intervalId: 0\n    }\n  },\n  watch: {\n    interval: function interval () {\n      this.startInterval();\n    },\n    value: function value (index, oldValue) {\n      this.run(index, oldValue);\n      this.activeIndex = index;\n    }\n  },\n  mounted: function mounted () {\n    if (isExist(this.value)) {\n      this.activeIndex = this.value;\n    }\n    if (this.slides.length > 0) {\n      this.$select(this.activeIndex);\n    }\n    this.startInterval();\n  },\n  beforeDestroy: function beforeDestroy () {\n    this.stopInterval();\n  },\n  methods: {\n    run: function run (newIndex, oldIndex) {\n      var this$1 = this;\n\n      var currentActiveIndex = oldIndex || 0;\n      var direction;\n      if (newIndex > currentActiveIndex) {\n        direction = ['next', 'left'];\n      } else {\n        direction = ['prev', 'right'];\n      }\n      this.slides[newIndex].slideClass[direction[0]] = true;\n      this.$nextTick(function () {\n        this$1.slides[newIndex].$el.offsetHeight;\n        this$1.slides.forEach(function (slide, i) {\n          if (i === currentActiveIndex) {\n            slide.slideClass.active = true;\n            slide.slideClass[direction[1]] = true;\n          } else if (i === newIndex) {\n            slide.slideClass[direction[1]] = true;\n          }\n        });\n        this$1.timeoutId = setTimeout(function () {\n          this$1.$select(newIndex);\n          this$1.$emit('change', newIndex);\n          this$1.timeoutId = 0;\n        }, 600);\n      });\n    },\n    startInterval: function startInterval () {\n      var this$1 = this;\n\n      this.stopInterval();\n      if (this.interval > 0) {\n        this.intervalId = setInterval(function () {\n          this$1.next();\n        }, this.interval);\n      }\n    },\n    stopInterval: function stopInterval () {\n      clearInterval(this.intervalId);\n      this.intervalId = 0;\n    },\n    resetAllSlideClass: function resetAllSlideClass () {\n      this.slides.forEach(function (slide) {\n        slide.slideClass.active = false;\n        slide.slideClass.left = false;\n        slide.slideClass.right = false;\n        slide.slideClass.next = false;\n        slide.slideClass.prev = false;\n      });\n    },\n    $select: function $select (index) {\n      this.resetAllSlideClass();\n      this.slides[index].slideClass.active = true;\n    },\n    select: function select (index) {\n      if (this.timeoutId !== 0 || index === this.activeIndex) {\n        return\n      }\n      if (isExist(this.value)) {\n        this.$emit('input', index);\n      } else {\n        this.run(index, this.activeIndex);\n        this.activeIndex = index;\n      }\n    },\n    prev: function prev () {\n      this.select(this.activeIndex === 0 ? this.slides.length - 1 : this.activeIndex - 1);\n    },\n    next: function next () {\n      this.select(this.activeIndex === this.slides.length - 1 ? 0 : this.activeIndex + 1);\n    }\n  }\n};\n\nfunction normalizeComponent(template, style, script, scopeId, isFunctionalTemplate, moduleIdentifier /* server only */, shadowMode, createInjector, createInjectorSSR, createInjectorShadow) {\r\n    if (typeof shadowMode !== 'boolean') {\r\n        createInjectorSSR = createInjector;\r\n        createInjector = shadowMode;\r\n        shadowMode = false;\r\n    }\r\n    // Vue.extend constructor export interop.\r\n    var options = typeof script === 'function' ? script.options : script;\r\n    // render functions\r\n    if (template && template.render) {\r\n        options.render = template.render;\r\n        options.staticRenderFns = template.staticRenderFns;\r\n        options._compiled = true;\r\n        // functional template\r\n        if (isFunctionalTemplate) {\r\n            options.functional = true;\r\n        }\r\n    }\r\n    // scopedId\r\n    if (scopeId) {\r\n        options._scopeId = scopeId;\r\n    }\r\n    var hook;\r\n    if (moduleIdentifier) {\r\n        // server build\r\n        hook = function (context) {\r\n            // 2.3 injection\r\n            context =\r\n                context || // cached call\r\n                    (this.$vnode && this.$vnode.ssrContext) || // stateful\r\n                    (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext); // functional\r\n            // 2.2 with runInNewContext: true\r\n            if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\r\n                context = __VUE_SSR_CONTEXT__;\r\n            }\r\n            // inject component styles\r\n            if (style) {\r\n                style.call(this, createInjectorSSR(context));\r\n            }\r\n            // register component module identifier for async chunk inference\r\n            if (context && context._registeredComponents) {\r\n                context._registeredComponents.add(moduleIdentifier);\r\n            }\r\n        };\r\n        // used by ssr in case component is cached and beforeCreate\r\n        // never gets called\r\n        options._ssrRegister = hook;\r\n    }\r\n    else if (style) {\r\n        hook = shadowMode\r\n            ? function (context) {\r\n                style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot));\r\n            }\r\n            : function (context) {\r\n                style.call(this, createInjector(context));\r\n            };\r\n    }\r\n    if (hook) {\r\n        if (options.functional) {\r\n            // register for functional component in vue file\r\n            var originalRender = options.render;\r\n            options.render = function renderWithStyleInjection(h, context) {\r\n                hook.call(context);\r\n                return originalRender(h, context);\r\n            };\r\n        }\r\n        else {\r\n            // inject component registration as beforeCreate hook\r\n            var existing = options.beforeCreate;\r\n            options.beforeCreate = existing ? [].concat(existing, hook) : [hook];\r\n        }\r\n    }\r\n    return script;\r\n}\n\n/* script */\nvar __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function() {\n  var _vm = this;\n  var _h = _vm.$createElement;\n  var _c = _vm._self._c || _h;\n  return _c(\n    \"div\",\n    {\n      staticClass: \"carousel slide\",\n      attrs: { \"data-ride\": \"carousel\" },\n      on: { mouseenter: _vm.stopInterval, mouseleave: _vm.startInterval }\n    },\n    [\n      _vm.indicators\n        ? _vm._t(\n            \"indicators\",\n            [\n              _c(\n                \"ol\",\n                { staticClass: \"carousel-indicators\" },\n                _vm._l(_vm.slides, function(slide, index) {\n                  return _c(\"li\", {\n                    class: { active: index === _vm.activeIndex },\n                    on: {\n                      click: function($event) {\n                        return _vm.select(index)\n                      }\n                    }\n                  })\n                }),\n                0\n              )\n            ],\n            { select: _vm.select, activeIndex: _vm.activeIndex }\n          )\n        : _vm._e(),\n      _vm._v(\" \"),\n      _c(\n        \"div\",\n        { staticClass: \"carousel-inner\", attrs: { role: \"listbox\" } },\n        [_vm._t(\"default\")],\n        2\n      ),\n      _vm._v(\" \"),\n      _vm.controls\n        ? _c(\n            \"a\",\n            {\n              staticClass: \"left carousel-control\",\n              attrs: { href: \"#\", role: \"button\" },\n              on: {\n                click: function($event) {\n                  $event.preventDefault();\n                  return _vm.prev()\n                }\n              }\n            },\n            [\n              _c(\"span\", {\n                class: _vm.iconControlLeft,\n                attrs: { \"aria-hidden\": \"true\" }\n              }),\n              _vm._v(\" \"),\n              _c(\"span\", { staticClass: \"sr-only\" }, [_vm._v(\"Previous\")])\n            ]\n          )\n        : _vm._e(),\n      _vm._v(\" \"),\n      _vm.controls\n        ? _c(\n            \"a\",\n            {\n              staticClass: \"right carousel-control\",\n              attrs: { href: \"#\", role: \"button\" },\n              on: {\n                click: function($event) {\n                  $event.preventDefault();\n                  return _vm.next()\n                }\n              }\n            },\n            [\n              _c(\"span\", {\n                class: _vm.iconControlRight,\n                attrs: { \"aria-hidden\": \"true\" }\n              }),\n              _vm._v(\" \"),\n              _c(\"span\", { staticClass: \"sr-only\" }, [_vm._v(\"Next\")])\n            ]\n          )\n        : _vm._e()\n    ],\n    2\n  )\n};\nvar __vue_staticRenderFns__ = [];\n__vue_render__._withStripped = true;\n\n  /* style */\n  var __vue_inject_styles__ = undefined;\n  /* scoped */\n  var __vue_scope_id__ = undefined;\n  /* module identifier */\n  var __vue_module_identifier__ = undefined;\n  /* functional template */\n  var __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  var __vue_component__ = /*#__PURE__*/normalizeComponent(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nfunction spliceIfExist (arr, item) {\n  if (Array.isArray(arr)) {\n    var index = arr.indexOf(item);\n    if (index >= 0) {\n      arr.splice(index, 1);\n    }\n  }\n}\n\nfunction range (end, start, step) {\n  if ( start === void 0 ) start = 0;\n  if ( step === void 0 ) step = 1;\n\n  var arr = [];\n  for (var i = start; i < end; i += step) {\n    arr.push(i);\n  }\n  return arr\n}\n\nfunction nodeListToArray (nodeList) {\n  return Array.prototype.slice.call(nodeList || [])\n}\n\nfunction onlyUnique (value, index, self) {\n  return self.indexOf(value) === index\n}\n\nvar script$1 = {\n  data: function data () {\n    return {\n      slideClass: {\n        active: false,\n        prev: false,\n        next: false,\n        left: false,\n        right: false\n      }\n    }\n  },\n  created: function created () {\n    try {\n      this.$parent.slides.push(this);\n    } catch (e) {\n      throw new Error('Slide parent must be Carousel.')\n    }\n  },\n  beforeDestroy: function beforeDestroy () {\n    var slides = this.$parent && this.$parent.slides;\n    spliceIfExist(slides, this);\n  }\n};\n\n/* script */\nvar __vue_script__$1 = script$1;\n\n/* template */\nvar __vue_render__$1 = function() {\n  var _vm = this;\n  var _h = _vm.$createElement;\n  var _c = _vm._self._c || _h;\n  return _c(\n    \"div\",\n    { staticClass: \"item\", class: _vm.slideClass },\n    [_vm._t(\"default\")],\n    2\n  )\n};\nvar __vue_staticRenderFns__$1 = [];\n__vue_render__$1._withStripped = true;\n\n  /* style */\n  var __vue_inject_styles__$1 = undefined;\n  /* scoped */\n  var __vue_scope_id__$1 = undefined;\n  /* module identifier */\n  var __vue_module_identifier__$1 = undefined;\n  /* functional template */\n  var __vue_is_functional_template__$1 = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  var __vue_component__$1 = /*#__PURE__*/normalizeComponent(\n    { render: __vue_render__$1, staticRenderFns: __vue_staticRenderFns__$1 },\n    __vue_inject_styles__$1,\n    __vue_script__$1,\n    __vue_scope_id__$1,\n    __vue_is_functional_template__$1,\n    __vue_module_identifier__$1,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nvar EVENTS = {\n  MOUSE_ENTER: 'mouseenter',\n  MOUSE_LEAVE: 'mouseleave',\n  MOUSE_DOWN: 'mousedown',\n  MOUSE_UP: 'mouseup',\n  FOCUS: 'focus',\n  BLUR: 'blur',\n  CLICK: 'click',\n  INPUT: 'input',\n  KEY_DOWN: 'keydown',\n  KEY_UP: 'keyup',\n  KEY_PRESS: 'keypress',\n  RESIZE: 'resize',\n  SCROLL: 'scroll',\n  TOUCH_START: 'touchstart',\n  TOUCH_END: 'touchend'\n};\n\nvar TRIGGERS = {\n  CLICK: 'click',\n  HOVER: 'hover',\n  FOCUS: 'focus',\n  HOVER_FOCUS: 'hover-focus',\n  OUTSIDE_CLICK: 'outside-click',\n  MANUAL: 'manual'\n};\n\nvar PLACEMENTS = {\n  TOP: 'top',\n  RIGHT: 'right',\n  BOTTOM: 'bottom',\n  LEFT: 'left'\n};\n\nfunction isIE11 () {\n  /* istanbul ignore next */\n  return !!window.MSInputMethodContext && !!document.documentMode\n}\n\nfunction isIE10 () {\n  return window.navigator.appVersion.indexOf('MSIE 10') !== -1\n}\n\nfunction getComputedStyle (el) {\n  return window.getComputedStyle(el)\n}\n\nfunction getViewportSize () {\n  /* istanbul ignore next */\n  var width = Math.max(document.documentElement.clientWidth, window.innerWidth) || 0;\n  /* istanbul ignore next */\n  var height = Math.max(document.documentElement.clientHeight, window.innerHeight) || 0;\n  return { width: width, height: height }\n}\n\nvar scrollbarWidth = null;\nvar savedScreenSize = null;\n\nfunction getScrollbarWidth (recalculate) {\n  if ( recalculate === void 0 ) recalculate = false;\n\n  var screenSize = getViewportSize();\n  // return directly when already calculated & not force recalculate & screen size not changed\n  if (scrollbarWidth !== null && !recalculate &&\n    screenSize.height === savedScreenSize.height && screenSize.width === savedScreenSize.width) {\n    return scrollbarWidth\n  }\n  /* istanbul ignore next */\n  if (document.readyState === 'loading') {\n    return null\n  }\n  var div1 = document.createElement('div');\n  var div2 = document.createElement('div');\n  div1.style.width = div2.style.width = div1.style.height = div2.style.height = '100px';\n  div1.style.overflow = 'scroll';\n  div2.style.overflow = 'hidden';\n  document.body.appendChild(div1);\n  document.body.appendChild(div2);\n  scrollbarWidth = Math.abs(div1.scrollHeight - div2.scrollHeight);\n  document.body.removeChild(div1);\n  document.body.removeChild(div2);\n  // save new screen size\n  savedScreenSize = screenSize;\n  return scrollbarWidth\n}\n\nfunction on (element, event, handler) {\n  /* istanbul ignore next */\n  element.addEventListener(event, handler);\n}\n\nfunction off (element, event, handler) {\n  /* istanbul ignore next */\n  element.removeEventListener(event, handler);\n}\n\nfunction isElement (el) {\n  return el && el.nodeType === Node.ELEMENT_NODE\n}\n\nfunction removeFromDom (el) {\n  isElement(el) && isElement(el.parentNode) && el.parentNode.removeChild(el);\n}\n\nfunction ensureElementMatchesFunction () {\n  /* istanbul ignore next */\n  if (!Element.prototype.matches) {\n    Element.prototype.matches =\n      Element.prototype.matchesSelector ||\n      Element.prototype.mozMatchesSelector ||\n      Element.prototype.msMatchesSelector ||\n      Element.prototype.oMatchesSelector ||\n      Element.prototype.webkitMatchesSelector ||\n      function (s) {\n        var matches = (this.document || this.ownerDocument).querySelectorAll(s);\n        var i = matches.length;\n        // eslint-disable-next-line no-empty\n        while (--i >= 0 && matches.item(i) !== this) {}\n        return i > -1\n      };\n  }\n}\n\nfunction addClass (el, className) {\n  if (!isElement(el)) {\n    return\n  }\n  if (el.className) {\n    var classes = el.className.split(' ');\n    if (classes.indexOf(className) < 0) {\n      classes.push(className);\n      el.className = classes.join(' ');\n    }\n  } else {\n    el.className = className;\n  }\n}\n\nfunction removeClass (el, className) {\n  if (!isElement(el)) {\n    return\n  }\n  if (el.className) {\n    var classes = el.className.split(' ');\n    var newClasses = [];\n    for (var i = 0, l = classes.length; i < l; i++) {\n      if (classes[i] !== className) {\n        newClasses.push(classes[i]);\n      }\n    }\n    el.className = newClasses.join(' ');\n  }\n}\n\nfunction hasClass (el, className) {\n  if (!isElement(el)) {\n    return false\n  }\n  var classes = el.className.split(' ');\n  for (var i = 0, l = classes.length; i < l; i++) {\n    if (classes[i] === className) {\n      return true\n    }\n  }\n  return false\n}\n\nfunction setDropdownPosition (dropdown, trigger, options) {\n  if ( options === void 0 ) options = {};\n\n  var doc = document.documentElement;\n  var containerScrollLeft = (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0);\n  var containerScrollTop = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);\n  var rect = trigger.getBoundingClientRect();\n  var dropdownRect = dropdown.getBoundingClientRect();\n  dropdown.style.right = 'auto';\n  dropdown.style.bottom = 'auto';\n  if (options.menuRight) {\n    dropdown.style.left = containerScrollLeft + rect.left + rect.width - dropdownRect.width + 'px';\n  } else {\n    dropdown.style.left = containerScrollLeft + rect.left + 'px';\n  }\n  if (options.dropup) {\n    dropdown.style.top = containerScrollTop + rect.top - dropdownRect.height - 4 + 'px';\n  } else {\n    dropdown.style.top = containerScrollTop + rect.top + rect.height + 'px';\n  }\n}\n\nfunction isAvailableAtPosition (trigger, popup, placement) {\n  var triggerRect = trigger.getBoundingClientRect();\n  var popupRect = popup.getBoundingClientRect();\n  var viewPortSize = getViewportSize();\n  var top = true;\n  var right = true;\n  var bottom = true;\n  var left = true;\n  switch (placement) {\n    case PLACEMENTS.TOP:\n      top = triggerRect.top >= popupRect.height;\n      left = triggerRect.left + triggerRect.width / 2 >= popupRect.width / 2;\n      right = triggerRect.right - triggerRect.width / 2 + popupRect.width / 2 <= viewPortSize.width;\n      break\n    case PLACEMENTS.BOTTOM:\n      bottom = triggerRect.bottom + popupRect.height <= viewPortSize.height;\n      left = triggerRect.left + triggerRect.width / 2 >= popupRect.width / 2;\n      right = triggerRect.right - triggerRect.width / 2 + popupRect.width / 2 <= viewPortSize.width;\n      break\n    case PLACEMENTS.RIGHT:\n      right = triggerRect.right + popupRect.width <= viewPortSize.width;\n      top = triggerRect.top + triggerRect.height / 2 >= popupRect.height / 2;\n      bottom = triggerRect.bottom - triggerRect.height / 2 + popupRect.height / 2 <= viewPortSize.height;\n      break\n    case PLACEMENTS.LEFT:\n      left = triggerRect.left >= popupRect.width;\n      top = triggerRect.top + triggerRect.height / 2 >= popupRect.height / 2;\n      bottom = triggerRect.bottom - triggerRect.height / 2 + popupRect.height / 2 <= viewPortSize.height;\n      break\n  }\n  return top && right && bottom && left\n}\n\nfunction setTooltipPosition (tooltip, trigger, placement, auto, appendTo, positionBy, viewport) {\n  if (!isElement(tooltip) || !isElement(trigger)) {\n    return\n  }\n  var isPopover = tooltip && tooltip.className && tooltip.className.indexOf('popover') >= 0;\n  var containerScrollTop;\n  var containerScrollLeft;\n  if (!isExist(appendTo) || appendTo === 'body' || positionBy === 'body') {\n    var doc = document.documentElement;\n    containerScrollLeft = (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0);\n    containerScrollTop = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);\n  } else {\n    var container = getElementBySelectorOrRef(positionBy || appendTo);\n    containerScrollLeft = container.scrollLeft;\n    containerScrollTop = container.scrollTop;\n  }\n  // auto adjust placement\n  if (auto) {\n    // Try: right -> bottom -> left -> top\n    // Cause the default placement is top\n    var placements = [PLACEMENTS.RIGHT, PLACEMENTS.BOTTOM, PLACEMENTS.LEFT, PLACEMENTS.TOP];\n    // The class switch helper function\n    var changePlacementClass = function (placement) {\n      // console.log(placement)\n      placements.forEach(function (placement) {\n        removeClass(tooltip, placement);\n      });\n      addClass(tooltip, placement);\n    };\n    // No need to adjust if the default placement fits\n    if (!isAvailableAtPosition(trigger, tooltip, placement)) {\n      for (var i = 0, l = placements.length; i < l; i++) {\n        // Re-assign placement class\n        changePlacementClass(placements[i]);\n        // Break if new placement fits\n        if (isAvailableAtPosition(trigger, tooltip, placements[i])) {\n          placement = placements[i];\n          break\n        }\n      }\n      changePlacementClass(placement);\n    }\n  }\n  // fix left and top for tooltip\n  var rect = trigger.getBoundingClientRect();\n  var tooltipRect = tooltip.getBoundingClientRect();\n  var top;\n  var left;\n  if (placement === PLACEMENTS.BOTTOM) {\n    top = containerScrollTop + rect.top + rect.height;\n    left = containerScrollLeft + rect.left + rect.width / 2 - tooltipRect.width / 2;\n  } else if (placement === PLACEMENTS.LEFT) {\n    top = containerScrollTop + rect.top + rect.height / 2 - tooltipRect.height / 2;\n    left = containerScrollLeft + rect.left - tooltipRect.width;\n  } else if (placement === PLACEMENTS.RIGHT) {\n    top = containerScrollTop + rect.top + rect.height / 2 - tooltipRect.height / 2;\n    // https://github.com/uiv-lib/uiv/issues/272\n    // add 1px to fix above issue\n    left = containerScrollLeft + rect.left + rect.width + 1;\n  } else {\n    top = containerScrollTop + rect.top - tooltipRect.height;\n    left = containerScrollLeft + rect.left + rect.width / 2 - tooltipRect.width / 2;\n  }\n  var viewportEl;\n  // viewport option\n  if (isString(viewport)) {\n    viewportEl = document.querySelector(viewport);\n  } else if (isFunction(viewport)) {\n    viewportEl = viewport(trigger);\n  }\n  if (isElement(viewportEl)) {\n    var popoverFix = isPopover ? 11 : 0;\n    var viewportReact = viewportEl.getBoundingClientRect();\n    var viewportTop = containerScrollTop + viewportReact.top;\n    var viewportLeft = containerScrollLeft + viewportReact.left;\n    var viewportBottom = viewportTop + viewportReact.height;\n    var viewportRight = viewportLeft + viewportReact.width;\n    // fix top\n    if (top < viewportTop) {\n      top = viewportTop;\n    } else if (top + tooltipRect.height > viewportBottom) {\n      top = viewportBottom - tooltipRect.height;\n    }\n    // fix left\n    if (left < viewportLeft) {\n      left = viewportLeft;\n    } else if (left + tooltipRect.width > viewportRight) {\n      left = viewportRight - tooltipRect.width;\n    }\n    // fix for popover pointer\n    if (placement === PLACEMENTS.BOTTOM) {\n      top -= popoverFix;\n    } else if (placement === PLACEMENTS.LEFT) {\n      left += popoverFix;\n    } else if (placement === PLACEMENTS.RIGHT) {\n      left -= popoverFix;\n    } else {\n      top += popoverFix;\n    }\n  }\n  // set position finally\n  tooltip.style.top = top + \"px\";\n  tooltip.style.left = left + \"px\";\n}\n\nfunction hasScrollbar (el) {\n  var SCROLL = 'scroll';\n  var hasVScroll = el.scrollHeight > el.clientHeight;\n  var style = getComputedStyle(el);\n  return hasVScroll || style.overflow === SCROLL || style.overflowY === SCROLL\n}\n\nfunction toggleBodyOverflow (enable) {\n  var MODAL_OPEN = 'modal-open';\n  var FIXED_CONTENT = '.navbar-fixed-top, .navbar-fixed-bottom';\n  var body = document.body;\n  if (enable) {\n    removeClass(body, MODAL_OPEN);\n    body.style.paddingRight = null;\n    nodeListToArray(document.querySelectorAll(FIXED_CONTENT)).forEach(function (node) {\n      node.style.paddingRight = null;\n    });\n  } else {\n    var browsersWithFloatingScrollbar = isIE10() || isIE11();\n    var documentHasScrollbar = hasScrollbar(document.documentElement) || hasScrollbar(document.body);\n    if (documentHasScrollbar && !browsersWithFloatingScrollbar) {\n      var scrollbarWidth = getScrollbarWidth();\n      body.style.paddingRight = scrollbarWidth + \"px\";\n      nodeListToArray(document.querySelectorAll(FIXED_CONTENT)).forEach(function (node) {\n        node.style.paddingRight = scrollbarWidth + \"px\";\n      });\n    }\n    addClass(body, MODAL_OPEN);\n  }\n}\n\nfunction getClosest (el, selector) {\n  ensureElementMatchesFunction();\n  var parent;\n  var _el = el;\n  while (_el) {\n    parent = _el.parentElement;\n    if (parent && parent.matches(selector)) {\n      return parent\n    }\n    _el = parent;\n  }\n  return null\n}\n\nfunction getParents (el, selector, until) {\n  if ( until === void 0 ) until = null;\n\n  ensureElementMatchesFunction();\n  var parents = [];\n  var parent = el.parentElement;\n  while (parent) {\n    if (parent.matches(selector)) {\n      parents.push(parent);\n    } else if (until && (until === parent || parent.matches(until))) {\n      break\n    }\n    parent = parent.parentElement;\n  }\n  return parents\n}\n\nfunction focus (el) {\n  if (!isElement(el)) {\n    return\n  }\n  el.getAttribute('tabindex') ? null : el.setAttribute('tabindex', '-1');\n  el.focus();\n}\n\nvar MODAL_BACKDROP = 'modal-backdrop';\n\nfunction getOpenModals () {\n  return document.querySelectorAll((\".\" + MODAL_BACKDROP))\n}\n\nfunction getOpenModalNum () {\n  return getOpenModals().length\n}\n\nfunction getElementBySelectorOrRef (q) {\n  if (isString(q)) { // is selector\n    return document.querySelector(q)\n  } else if (isElement(q)) { // is element\n    return q\n  } else if (isElement(q.$el)) { // is component\n    return q.$el\n  } else {\n    return null\n  }\n}\n\nvar COLLAPSE = 'collapse';\nvar IN = 'in';\nvar COLLAPSING = 'collapsing';\n\nvar Collapse = {\n  render: function render (h) {\n    return h(this.tag, {}, this.$slots.default)\n  },\n  props: {\n    tag: {\n      type: String,\n      default: 'div'\n    },\n    value: {\n      type: Boolean,\n      default: false\n    },\n    transition: {\n      type: Number,\n      default: 350\n    }\n  },\n  data: function data () {\n    return {\n      timeoutId: 0\n    }\n  },\n  watch: {\n    value: function value (show) {\n      this.toggle(show);\n    }\n  },\n  mounted: function mounted () {\n    var el = this.$el;\n    addClass(el, COLLAPSE);\n    if (this.value) {\n      addClass(el, IN);\n    }\n  },\n  methods: {\n    toggle: function toggle (show) {\n      var this$1 = this;\n\n      clearTimeout(this.timeoutId);\n      var el = this.$el;\n      if (show) {\n        this.$emit('show');\n        removeClass(el, COLLAPSE);\n        el.style.height = 'auto';\n        var height = window.getComputedStyle(el).height;\n        el.style.height = null;\n        addClass(el, COLLAPSING);\n        el.offsetHeight; // force repaint\n        el.style.height = height;\n        this.timeoutId = setTimeout(function () {\n          removeClass(el, COLLAPSING);\n          addClass(el, COLLAPSE);\n          addClass(el, IN);\n          el.style.height = null;\n          this$1.timeoutId = 0;\n          this$1.$emit('shown');\n        }, this.transition);\n      } else {\n        this.$emit('hide');\n        el.style.height = window.getComputedStyle(el).height;\n        removeClass(el, IN);\n        removeClass(el, COLLAPSE);\n        el.offsetHeight;\n        el.style.height = null;\n        addClass(el, COLLAPSING);\n        this.timeoutId = setTimeout(function () {\n          addClass(el, COLLAPSE);\n          removeClass(el, COLLAPSING);\n          el.style.height = null;\n          this$1.timeoutId = 0;\n          this$1.$emit('hidden');\n        }, this.transition);\n      }\n    }\n  }\n};\n\nvar DEFAULT_TAG = 'div';\n\nvar Dropdown = {\n  render: function render (h) {\n    return h(\n      this.tag,\n      {\n        class: {\n          'btn-group': this.tag === DEFAULT_TAG,\n          dropdown: !this.dropup,\n          dropup: this.dropup,\n          open: this.show\n        }\n      },\n      [\n        this.$slots.default,\n        h(\n          'ul',\n          {\n            class: {\n              'dropdown-menu': true,\n              'dropdown-menu-right': this.menuRight\n            },\n            ref: 'dropdown'\n          },\n          [this.$slots.dropdown]\n        )\n      ]\n    )\n  },\n  props: {\n    tag: {\n      type: String,\n      default: DEFAULT_TAG\n    },\n    appendToBody: {\n      type: Boolean,\n      default: false\n    },\n    value: Boolean,\n    dropup: {\n      type: Boolean,\n      default: false\n    },\n    menuRight: {\n      type: Boolean,\n      default: false\n    },\n    disabled: {\n      type: Boolean,\n      default: false\n    },\n    notCloseElements: Array,\n    positionElement: null\n  },\n  data: function data () {\n    return {\n      show: false,\n      triggerEl: undefined\n    }\n  },\n  watch: {\n    value: function value (v) {\n      this.toggle(v);\n    }\n  },\n  mounted: function mounted () {\n    this.initTrigger();\n    if (this.triggerEl) {\n      on(this.triggerEl, EVENTS.CLICK, this.toggle);\n      on(this.triggerEl, EVENTS.KEY_DOWN, this.onKeyPress);\n    }\n    on(this.$refs.dropdown, EVENTS.KEY_DOWN, this.onKeyPress);\n    on(window, EVENTS.CLICK, this.windowClicked);\n    on(window, EVENTS.TOUCH_END, this.windowClicked);\n    if (this.value) {\n      this.toggle(true);\n    }\n  },\n  beforeDestroy: function beforeDestroy () {\n    this.removeDropdownFromBody();\n    if (this.triggerEl) {\n      off(this.triggerEl, EVENTS.CLICK, this.toggle);\n      off(this.triggerEl, EVENTS.KEY_DOWN, this.onKeyPress);\n    }\n    off(this.$refs.dropdown, EVENTS.KEY_DOWN, this.onKeyPress);\n    off(window, EVENTS.CLICK, this.windowClicked);\n    off(window, EVENTS.TOUCH_END, this.windowClicked);\n  },\n  methods: {\n    getFocusItem: function getFocusItem () {\n      var dropdownEl = this.$refs.dropdown;\n      /* istanbul ignore next */\n      return dropdownEl.querySelector('li > a:focus')\n    },\n    onKeyPress: function onKeyPress (event) {\n      if (this.show) {\n        var dropdownEl = this.$refs.dropdown;\n        var keyCode = event.keyCode;\n        if (keyCode === 27) {\n          // esc\n          this.toggle(false);\n          this.triggerEl && this.triggerEl.focus();\n        } else if (keyCode === 13) {\n          // enter\n          var currentFocus = this.getFocusItem();\n          currentFocus && currentFocus.click();\n        } else if (keyCode === 38 || keyCode === 40) {\n          // up || down\n          event.preventDefault();\n          event.stopPropagation();\n          var currentFocus$1 = this.getFocusItem();\n          var items = dropdownEl.querySelectorAll('li:not(.disabled) > a');\n          if (!currentFocus$1) {\n            focus(items[0]);\n          } else {\n            for (var i = 0; i < items.length; i++) {\n              if (currentFocus$1 === items[i]) {\n                if (keyCode === 38 && i < items.length > 0) {\n                  focus(items[i - 1]);\n                } else if (keyCode === 40 && i < items.length - 1) {\n                  focus(items[i + 1]);\n                }\n                break\n              }\n            }\n          }\n        }\n      }\n    },\n    initTrigger: function initTrigger () {\n      var trigger = this.$el.querySelector('[data-role=\"trigger\"]') || this.$el.querySelector('.dropdown-toggle') || this.$el.firstChild;\n      this.triggerEl = trigger && trigger !== this.$refs.dropdown ? trigger : null;\n    },\n    toggle: function toggle (show) {\n      if (this.disabled) {\n        return\n      }\n      if (isBoolean(show)) {\n        this.show = show;\n      } else {\n        this.show = !this.show;\n      }\n      if (this.appendToBody) {\n        this.show ? this.appendDropdownToBody() : this.removeDropdownFromBody();\n      }\n      this.$emit('input', this.show);\n    },\n    windowClicked: function windowClicked (event) {\n      var target = event.target;\n      if (this.show && target) {\n        var targetInNotCloseElements = false;\n        if (this.notCloseElements) {\n          for (var i = 0, l = this.notCloseElements.length; i < l; i++) {\n            var isTargetInElement = this.notCloseElements[i].contains(target);\n            var shouldBreak = isTargetInElement;\n            /* istanbul ignore else */\n            if (this.appendToBody) {\n              var isTargetInDropdown = this.$refs.dropdown.contains(target);\n              var isElInElements = this.notCloseElements.indexOf(this.$el) >= 0;\n              shouldBreak = isTargetInElement || (isTargetInDropdown && isElInElements);\n            }\n            if (shouldBreak) {\n              targetInNotCloseElements = true;\n              break\n            }\n          }\n        }\n        var targetInDropdownBody = this.$refs.dropdown.contains(target);\n        var targetInTrigger = this.$el.contains(target) && !targetInDropdownBody;\n        // normally, a dropdown select event is handled by @click that trigger after @touchend\n        // then @touchend event have to be ignore in this case\n        var targetInDropdownAndIsTouchEvent = targetInDropdownBody && event.type === 'touchend';\n        if (!targetInTrigger && !targetInNotCloseElements && !targetInDropdownAndIsTouchEvent) {\n          this.toggle(false);\n        }\n      }\n    },\n    appendDropdownToBody: function appendDropdownToBody () {\n      try {\n        var el = this.$refs.dropdown;\n        el.style.display = 'block';\n        document.body.appendChild(el);\n        var positionElement = this.positionElement || this.$el;\n        setDropdownPosition(el, positionElement, this);\n      } catch (e) {\n        // Silent\n      }\n    },\n    removeDropdownFromBody: function removeDropdownFromBody () {\n      try {\n        var el = this.$refs.dropdown;\n        el.removeAttribute('style');\n        this.$el.appendChild(el);\n      } catch (e) {\n        // Silent\n      }\n    }\n  }\n};\n\nvar defaultLang = {\n  uiv: {\n    datePicker: {\n      clear: 'Clear',\n      today: 'Today',\n      month: 'Month',\n      month1: 'January',\n      month2: 'February',\n      month3: 'March',\n      month4: 'April',\n      month5: 'May',\n      month6: 'June',\n      month7: 'July',\n      month8: 'August',\n      month9: 'September',\n      month10: 'October',\n      month11: 'November',\n      month12: 'December',\n      year: 'Year',\n      week1: 'Mon',\n      week2: 'Tue',\n      week3: 'Wed',\n      week4: 'Thu',\n      week5: 'Fri',\n      week6: 'Sat',\n      week7: 'Sun'\n    },\n    timePicker: {\n      am: 'AM',\n      pm: 'PM'\n    },\n    modal: {\n      cancel: 'Cancel',\n      ok: 'OK'\n    },\n    multiSelect: {\n      placeholder: 'Select...',\n      filterPlaceholder: 'Search...'\n    }\n  }\n};\n\n// https://github.com/ElemeFE/element/blob/dev/src/locale/index.js\n\nvar lang = defaultLang;\n\nvar i18nHandler = function () {\n  var vuei18n = Object.getPrototypeOf(this).$t;\n  /* istanbul ignore else */\n  /* istanbul ignore next */\n  if (isFunction(vuei18n)) {\n    /* istanbul ignore next */\n    try {\n      return vuei18n.apply(this, arguments)\n    } catch (err) {\n      return this.$t.apply(this, arguments)\n    }\n  }\n};\n\nvar t = function (path, options) {\n  options = options || {};\n  var value;\n  try {\n    value = i18nHandler.apply(this, arguments);\n    /* istanbul ignore next */\n    if (isExist(value) && !options.$$locale) {\n      return value\n    }\n  } catch (e) {\n    // ignore\n  }\n  var array = path.split('.');\n  var current = options.$$locale || lang;\n\n  for (var i = 0, j = array.length; i < j; i++) {\n    var property = array[i];\n    value = current[property];\n    if (i === j - 1) { return value }\n    if (!value) { return '' }\n    current = value;\n  }\n  /* istanbul ignore next */\n  return ''\n};\n\nvar use = function (l) {\n  lang = l || lang;\n};\n\nvar i18n = function (fn) {\n  i18nHandler = fn || i18nHandler;\n};\n\nvar locale = { use: use, t: t, i18n: i18n };\n\nvar Local = {\n  methods: {\n    t: function t$1 () {\n      var arguments$1 = arguments;\n\n      var args = [];\n      for (var i = 0; i < arguments.length; ++i) {\n        args.push(arguments$1[i]);\n      }\n      args[1] = assign({}, { $$locale: this.locale }, args[1]);\n      return t.apply(this, args)\n    }\n  },\n  props: {\n    locale: Object\n  }\n};\n\nvar e=function(){return (e=Object.assign||function(e){for(var t,r=1,s=arguments.length;r props\n    href: String,\n    target: String,\n    //  props\n    to: null,\n    replace: {\n      type: Boolean,\n      default: false\n    },\n    append: {\n      type: Boolean,\n      default: false\n    },\n    exact: {\n      type: Boolean,\n      default: false\n    }\n  }\n};\n\nvar BtnGroup = {\n  functional: true,\n  render: function render (h, ref) {\n    var obj;\n\n    var props = ref.props;\n    var children = ref.children;\n    var data = ref.data;\n    return h(\n      'div',\n      a(data, {\n        class: ( obj = {\n          'btn-group': !props.vertical,\n          'btn-group-vertical': props.vertical,\n          'btn-group-justified': props.justified\n        }, obj[(\"btn-group-\" + (props.size))] = props.size, obj ),\n        attrs: {\n          role: 'group',\n          'data-toggle': 'buttons'\n        }\n      }),\n      children\n    )\n  },\n  props: {\n    size: String,\n    vertical: {\n      type: Boolean,\n      default: false\n    },\n    justified: {\n      type: Boolean,\n      default: false\n    }\n  }\n};\n\nvar INPUT_TYPE_CHECKBOX = 'checkbox';\nvar INPUT_TYPE_RADIO = 'radio';\n\nvar Btn = {\n  functional: true,\n  mixins: [linkMixin],\n  render: function render (h, ref) {\n    var children = ref.children;\n    var props = ref.props;\n    var data = ref.data;\n\n    // event listeners\n    var listeners = data.on || {};\n    // checkbox: model contain inputValue\n    // radio: model === inputValue\n    var isInputActive = props.inputType === INPUT_TYPE_CHECKBOX ? props.value.indexOf(props.inputValue) >= 0 : props.value === props.inputValue;\n    // button class\n    var classes = {\n      btn: true,\n      active: props.inputType ? isInputActive : props.active,\n      disabled: props.disabled,\n      'btn-block': props.block\n    };\n    classes[(\"btn-\" + (props.type))] = Boolean(props.type);\n    classes[(\"btn-\" + (props.size))] = Boolean(props.size);\n    // prevent event for disabled links\n    var on = {\n      click: function click (e) {\n        if (props.disabled && e instanceof Event) {\n          e.preventDefault();\n          e.stopPropagation();\n        }\n      }\n    };\n    // render params\n    var tag, options, slot;\n\n    if (props.href) {\n      // is native link\n      tag = 'a';\n      slot = children;\n      options = a(data, {\n        on: on,\n        class: classes,\n        attrs: {\n          role: 'button',\n          href: props.href,\n          target: props.target\n        }\n      });\n    } else if (props.to) {\n      // is vue router link\n      tag = 'router-link';\n      slot = children;\n      options = a(data, {\n        nativeOn: on,\n        class: classes,\n        props: {\n          event: props.disabled ? '' : 'click', // prevent nav while disabled\n          to: props.to,\n          replace: props.replace,\n          append: props.append,\n          exact: props.exact\n        },\n        attrs: {\n          role: 'button'\n        }\n      });\n    } else if (props.inputType) {\n      // is input checkbox or radio\n      tag = 'label';\n      options = a(data, {\n        on: on,\n        class: classes\n      });\n      slot = [\n        h('input', {\n          attrs: {\n            autocomplete: 'off',\n            type: props.inputType,\n            checked: isInputActive ? 'checked' : null,\n            disabled: props.disabled\n          },\n          domProps: {\n            checked: isInputActive // required\n          },\n          on: {\n            input: function input (evt) {\n              evt.stopPropagation();\n            },\n            change: function change () {\n              if (props.inputType === INPUT_TYPE_CHECKBOX) {\n                var valueCopied = props.value.slice();\n                if (isInputActive) {\n                  valueCopied.splice(valueCopied.indexOf(props.inputValue), 1);\n                } else {\n                  valueCopied.push(props.inputValue);\n                }\n                listeners.input(valueCopied);\n              } else {\n                listeners.input(props.inputValue);\n              }\n            }\n          }\n        }),\n        children\n      ];\n    } else if (props.justified) {\n      // is in justified btn-group\n      tag = BtnGroup;\n      options = {};\n      slot = [\n        h('button', a(data, {\n          on: on,\n          class: classes,\n          attrs: {\n            type: props.nativeType,\n            disabled: props.disabled\n          }\n        }), children)\n      ];\n    } else {\n      // is button\n      tag = 'button';\n      slot = children;\n      options = a(data, {\n        on: on,\n        class: classes,\n        attrs: {\n          type: props.nativeType,\n          disabled: props.disabled\n        }\n      });\n    }\n\n    return h(tag, options, slot)\n  },\n  props: {\n    justified: {\n      type: Boolean,\n      default: false\n    },\n    type: {\n      type: String,\n      default: 'default'\n    },\n    nativeType: {\n      type: String,\n      default: 'button'\n    },\n    size: String,\n    block: {\n      type: Boolean,\n      default: false\n    },\n    active: {\n      type: Boolean,\n      default: false\n    },\n    disabled: {\n      type: Boolean,\n      default: false\n    },\n    //  ourselves\n\n\n    if (!this.$scopedSlots.manual) {\n      var props = pick(this.$props, portalProps);\n      return h(Portal, {\n        props: props,\n        attrs: this.$attrs,\n        on: this.$listeners,\n        scopedSlots: this.$scopedSlots\n      }, this.$slots.default);\n    } // else, we render the scoped slot\n\n\n    var content = this.$scopedSlots.manual({\n      to: this.to\n    }); // if user used  for the scoped slot\n    // content will be an array\n\n    if (Array.isArray(content)) {\n      content = content[0];\n    }\n\n    if (!content) { return h(); }\n    return content;\n  }\n});\n\nvar ACTIVE_CLASS = 'active';\nvar IN_CLASS = 'in';\n\nvar script$3 = {\n  components: { Portal: Portal },\n  props: {\n    title: {\n      type: String,\n      default: 'Tab Title'\n    },\n    disabled: {\n      type: Boolean,\n      default: false\n    },\n    tabClasses: {\n      type: Object,\n      default: function () { return {} }\n    },\n    group: String,\n    pullRight: {\n      type: Boolean,\n      default: false\n    },\n    hidden: {\n      type: Boolean,\n      default: false\n    }\n  },\n  data: function data () {\n    return {\n      active: true,\n      transition: 150\n    }\n  },\n  watch: {\n    active: function active (active$1) {\n      var this$1 = this;\n\n      if (active$1) {\n        setTimeout(function () {\n          addClass(this$1.$el, ACTIVE_CLASS);\n          this$1.$el.offsetHeight;\n          addClass(this$1.$el, IN_CLASS);\n          try {\n            this$1.$parent.$emit('changed', this$1.$parent.activeIndex);\n          } catch (e) {\n            throw new Error(' parent must be .')\n          }\n        }, this.transition);\n      } else {\n        removeClass(this.$el, IN_CLASS);\n        setTimeout(function () {\n          removeClass(this$1.$el, ACTIVE_CLASS);\n        }, this.transition);\n      }\n    }\n  },\n  created: function created () {\n    try {\n      this.$parent.tabs.push(this);\n    } catch (e) {\n      throw new Error(' parent must be .')\n    }\n  },\n  beforeDestroy: function beforeDestroy () {\n    var tabs = this.$parent && this.$parent.tabs;\n    spliceIfExist(tabs, this);\n  },\n  methods: {\n    show: function show () {\n      var this$1 = this;\n\n      this.$nextTick(function () {\n        addClass(this$1.$el, ACTIVE_CLASS);\n        addClass(this$1.$el, IN_CLASS);\n      });\n    }\n  }\n};\n\n/* script */\nvar __vue_script__$3 = script$3;\n\n/* template */\nvar __vue_render__$3 = function() {\n  var _vm = this;\n  var _h = _vm.$createElement;\n  var _c = _vm._self._c || _h;\n  return _c(\n    \"div\",\n    {\n      staticClass: \"tab-pane\",\n      class: { fade: _vm.transition > 0 },\n      attrs: { role: \"tabpanel\" }\n    },\n    [\n      _vm._t(\"default\"),\n      _vm._v(\" \"),\n      _c(\"portal\", { attrs: { to: _vm._uid.toString() } }, [_vm._t(\"title\")], 2)\n    ],\n    2\n  )\n};\nvar __vue_staticRenderFns__$3 = [];\n__vue_render__$3._withStripped = true;\n\n  /* style */\n  var __vue_inject_styles__$3 = undefined;\n  /* scoped */\n  var __vue_scope_id__$3 = undefined;\n  /* module identifier */\n  var __vue_module_identifier__$3 = undefined;\n  /* functional template */\n  var __vue_is_functional_template__$3 = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  var __vue_component__$3 = /*#__PURE__*/normalizeComponent(\n    { render: __vue_render__$3, staticRenderFns: __vue_staticRenderFns__$3 },\n    __vue_inject_styles__$3,\n    __vue_script__$3,\n    __vue_scope_id__$3,\n    __vue_is_functional_template__$3,\n    __vue_module_identifier__$3,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nvar BEFORE_CHANGE_EVENT = 'before-change';\n\nvar script$4 = {\n  components: { Dropdown: Dropdown, PortalTarget: PortalTarget },\n  props: {\n    value: {\n      type: Number,\n      validator: function (v) { return v >= 0; }\n    },\n    transition: {\n      type: Number,\n      default: 150\n    },\n    justified: Boolean,\n    pills: Boolean,\n    stacked: Boolean,\n    customNavClass: null,\n    customContentClass: null\n  },\n  data: function data () {\n    return {\n      tabs: [],\n      activeIndex: 0 // Make v-model not required\n    }\n  },\n  watch: {\n    value: {\n      immediate: true,\n      handler: function handler (value) {\n        if (isNumber(value)) {\n          this.activeIndex = value;\n          this.selectCurrent();\n        }\n      }\n    },\n    tabs: function tabs (tabs$1) {\n      var this$1 = this;\n\n      tabs$1.forEach(function (tab, index) {\n        tab.transition = this$1.transition;\n        if (index === this$1.activeIndex) {\n          tab.show();\n        }\n      });\n      this.selectCurrent();\n    }\n  },\n  computed: {\n    navClasses: function navClasses () {\n      var obj;\n\n      var tabClasses = {\n        nav: true,\n        'nav-justified': this.justified,\n        'nav-tabs': !this.pills,\n        'nav-pills': this.pills,\n        'nav-stacked': this.stacked && this.pills\n      };\n      var customNavClass = this.customNavClass;\n      if (isExist(customNavClass)) {\n        if (isString(customNavClass)) {\n          return assign({}, tabClasses, ( obj = {}, obj[customNavClass] = true, obj ))\n        } else {\n          return assign({}, tabClasses, customNavClass)\n        }\n      } else {\n        return tabClasses\n      }\n    },\n    contentClasses: function contentClasses () {\n      var obj;\n\n      var contentClasses = {\n        'tab-content': true\n      };\n      var customContentClass = this.customContentClass;\n      if (isExist(customContentClass)) {\n        if (isString(customContentClass)) {\n          return assign({}, contentClasses, ( obj = {}, obj[customContentClass] = true, obj ))\n        } else {\n          return assign({}, contentClasses, customContentClass)\n        }\n      } else {\n        return contentClasses\n      }\n    },\n    groupedTabs: function groupedTabs () {\n      var tabs = [];\n      var hash = {};\n      this.tabs.forEach(function (tab) {\n        if (tab.group) {\n          if (hasOwnProperty(hash, tab.group)) {\n            tabs[hash[tab.group]].tabs.push(tab);\n          } else {\n            tabs.push({\n              tabs: [tab],\n              group: tab.group\n            });\n            hash[tab.group] = tabs.length - 1;\n          }\n          if (tab.active) {\n            tabs[hash[tab.group]].active = true;\n          }\n          if (tab.pullRight) {\n            tabs[hash[tab.group]].pullRight = true;\n          }\n        } else {\n          tabs.push(tab);\n        }\n      });\n      tabs = tabs.map(function (tab) {\n        if (Array.isArray(tab.tabs)) {\n          tab.hidden = tab.tabs.filter(function (v) { return v.hidden; }).length === tab.tabs.length;\n        }\n        return tab\n      });\n      return tabs\n    }\n  },\n  methods: {\n    getTabClasses: function getTabClasses (tab, isSubTab) {\n      if ( isSubTab === void 0 ) isSubTab = false;\n\n      var defaultClasses = {\n        active: tab.active,\n        disabled: tab.disabled,\n        'pull-right': tab.pullRight && !isSubTab\n      };\n\n      // return with new classes added to tab\n      return assign(defaultClasses, tab.tabClasses)\n    },\n    selectCurrent: function selectCurrent () {\n      var this$1 = this;\n\n      var found = false;\n      this.tabs.forEach(function (tab, index) {\n        if (index === this$1.activeIndex) {\n          found = !tab.active;\n          tab.active = true;\n        } else {\n          tab.active = false;\n        }\n      });\n      if (found) {\n        this.$emit('change', this.activeIndex);\n      }\n    },\n    selectValidate: function selectValidate (index) {\n      var this$1 = this;\n\n      if (isFunction(this.$listeners[BEFORE_CHANGE_EVENT])) {\n        this.$emit(BEFORE_CHANGE_EVENT, this.activeIndex, index, function (result) {\n          if (!isExist(result)) {\n            this$1.$select(index);\n          }\n        });\n      } else {\n        this.$select(index);\n      }\n    },\n    select: function select (index) {\n      if (!this.tabs[index].disabled && index !== this.activeIndex) {\n        this.selectValidate(index);\n      }\n    },\n    $select: function $select (index) {\n      if (isNumber(this.value)) {\n        this.$emit('input', index);\n      } else {\n        this.activeIndex = index;\n        this.selectCurrent();\n      }\n    }\n  }\n};\n\n/* script */\nvar __vue_script__$4 = script$4;\n\n/* template */\nvar __vue_render__$4 = function() {\n  var _vm = this;\n  var _h = _vm.$createElement;\n  var _c = _vm._self._c || _h;\n  return _c(\"section\", [\n    _c(\n      \"ul\",\n      { class: _vm.navClasses, attrs: { role: \"tablist\" } },\n      [\n        _vm._l(_vm.groupedTabs, function(tab, index) {\n          return [\n            tab.tabs\n              ? _c(\n                  \"dropdown\",\n                  {\n                    directives: [\n                      {\n                        name: \"show\",\n                        rawName: \"v-show\",\n                        value: !tab.hidden,\n                        expression: \"!tab.hidden\"\n                      }\n                    ],\n                    class: _vm.getTabClasses(tab),\n                    attrs: { role: \"presentation\", tag: \"li\" }\n                  },\n                  [\n                    _c(\n                      \"a\",\n                      {\n                        staticClass: \"dropdown-toggle\",\n                        attrs: { role: \"tab\", href: \"#\" },\n                        on: {\n                          click: function($event) {\n                            $event.preventDefault();\n                          }\n                        }\n                      },\n                      [\n                        _vm._v(_vm._s(tab.group) + \" \"),\n                        _c(\"span\", { staticClass: \"caret\" })\n                      ]\n                    ),\n                    _vm._v(\" \"),\n                    _c(\n                      \"template\",\n                      { slot: \"dropdown\" },\n                      _vm._l(tab.tabs, function(subTab) {\n                        return _c(\n                          \"li\",\n                          {\n                            directives: [\n                              {\n                                name: \"show\",\n                                rawName: \"v-show\",\n                                value: !subTab.hidden,\n                                expression: \"!subTab.hidden\"\n                              }\n                            ],\n                            class: _vm.getTabClasses(subTab, true)\n                          },\n                          [\n                            _c(\n                              \"a\",\n                              {\n                                attrs: { href: \"#\" },\n                                on: {\n                                  click: function($event) {\n                                    $event.preventDefault();\n                                    _vm.select(_vm.tabs.indexOf(subTab));\n                                  }\n                                }\n                              },\n                              [_vm._v(_vm._s(subTab.title))]\n                            )\n                          ]\n                        )\n                      }),\n                      0\n                    )\n                  ],\n                  2\n                )\n              : _c(\n                  \"li\",\n                  {\n                    directives: [\n                      {\n                        name: \"show\",\n                        rawName: \"v-show\",\n                        value: !tab.hidden,\n                        expression: \"!tab.hidden\"\n                      }\n                    ],\n                    class: _vm.getTabClasses(tab),\n                    attrs: { role: \"presentation\" }\n                  },\n                  [\n                    tab.$slots.title\n                      ? _c(\n                          \"a\",\n                          {\n                            attrs: { role: \"tab\", href: \"#\" },\n                            on: {\n                              click: function($event) {\n                                $event.preventDefault();\n                                _vm.select(_vm.tabs.indexOf(tab));\n                              }\n                            }\n                          },\n                          [\n                            _c(\"portal-target\", {\n                              attrs: { name: tab._uid.toString() }\n                            })\n                          ],\n                          1\n                        )\n                      : _c(\"a\", {\n                          attrs: { role: \"tab\", href: \"#\" },\n                          domProps: { textContent: _vm._s(tab.title) },\n                          on: {\n                            click: function($event) {\n                              $event.preventDefault();\n                              _vm.select(_vm.tabs.indexOf(tab));\n                            }\n                          }\n                        })\n                  ]\n                )\n          ]\n        }),\n        _vm._v(\" \"),\n        !_vm.justified && _vm.$slots[\"nav-right\"]\n          ? _c(\"li\", { staticClass: \"pull-right\" }, [_vm._t(\"nav-right\")], 2)\n          : _vm._e()\n      ],\n      2\n    ),\n    _vm._v(\" \"),\n    _c(\"div\", { class: _vm.contentClasses }, [_vm._t(\"default\")], 2)\n  ])\n};\nvar __vue_staticRenderFns__$4 = [];\n__vue_render__$4._withStripped = true;\n\n  /* style */\n  var __vue_inject_styles__$4 = undefined;\n  /* scoped */\n  var __vue_scope_id__$4 = undefined;\n  /* module identifier */\n  var __vue_module_identifier__$4 = undefined;\n  /* functional template */\n  var __vue_is_functional_template__$4 = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  var __vue_component__$4 = /*#__PURE__*/normalizeComponent(\n    { render: __vue_render__$4, staticRenderFns: __vue_staticRenderFns__$4 },\n    __vue_inject_styles__$4,\n    __vue_script__$4,\n    __vue_scope_id__$4,\n    __vue_is_functional_template__$4,\n    __vue_module_identifier__$4,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nfunction pad (value, num) {\n  value = value + '';\n  for (var i = num - value.length; i > 0; i--) {\n    value = '0' + value;\n  }\n  return value\n}\n\nvar monthNames = [\n  'January',\n  'February',\n  'March',\n  'April',\n  'May',\n  'June',\n  'July',\n  'August',\n  'September',\n  'October',\n  'November',\n  'December'\n];\n\n/**\n * Get total days number in a month.\n * because we're using 0 as the day so that it returns the last day\n * of the last month, so you have to add 1 to the month number\n * so it returns the correct amount of days.\n * https://stackoverflow.com/questions/1184334/get-number-days-in-a-specified-month-using-javascript\n * @param month 0-based\n * @param year\n * @returns {number}\n */\nfunction daysInMonth (month, year) {\n  return new Date(year, month + 1, 0).getDate()\n}\n\nfunction stringify (date, format) {\n  try {\n    var year = date.getFullYear();\n    var month = date.getMonth() + 1;\n    var day = date.getDate();\n    var monthName = monthNames[month - 1];\n    return format\n      .replace(/yyyy/g, year)\n      .replace(/MMMM/g, monthName)\n      .replace(/MMM/g, monthName.substring(0, 3))\n      .replace(/MM/g, pad(month, 2))\n      .replace(/dd/g, pad(day, 2))\n      .replace(/yy/g, year)\n      .replace(/M(?!a)/g, month)\n      .replace(/d/g, day)\n  } catch (e) {\n    return ''\n  }\n}\n\nfunction convertDateToUTC (date) {\n  return new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds())\n}\n\n/**\n * https://stackoverflow.com/questions/6117814/get-week-of-year-in-javascript-like-in-php\n * For a given date, get the ISO week number\n * Based on information at:\n *    http://www.merlyn.demon.co.uk/weekcalc.htm#WNR\n *\n * Algorithm is to find nearest thursday, it's year\n * is the year of the week number. Then get weeks\n * between that date and the first day of that year.\n *\n * Note that dates in one year can be weeks of previous\n * or next year, overlap is up to 3 days.\n *\n * e.g. 2014/12/29 is Monday in week  1 of 2015\n *      2012/1/1   is Sunday in week 52 of 2011\n *\n * @param {number} d.year year of date\n * @param {number} d.month month of date\n * @param {number} d.date date of date\n * @returns {number}\n */\nfunction getWeekNumber (d) {\n  // Copy date so don't modify original\n  var _d = new Date(Date.UTC(d.year, d.month, d.date));\n  // Set to nearest Thursday: current date + 4 - current day number\n  // Make Sunday's day number 7\n  _d.setUTCDate(_d.getUTCDate() + 4 - (_d.getUTCDay() || 7));\n  // Get first day of year\n  var yearStart = new Date(Date.UTC(_d.getUTCFullYear(), 0, 1));\n  // Calculate full weeks to nearest Thursday\n  return Math.ceil((((_d - yearStart) / 86400000) + 1) / 7)\n}\n\nvar script$5 = {\n  mixins: [Local],\n  props: {\n    month: Number,\n    year: Number,\n    date: Date,\n    today: Date,\n    limit: Object,\n    weekStartsWith: Number,\n    iconControlLeft: String,\n    iconControlRight: String,\n    dateClass: Function,\n    yearMonthFormatter: Function,\n    weekNumbers: Boolean\n  },\n  components: { Btn: Btn },\n  computed: {\n    weekDays: function weekDays () {\n      var days = [];\n      var firstDay = this.weekStartsWith;\n      while (days.length < 7) {\n        days.push(firstDay++);\n        if (firstDay > 6) {\n          firstDay = 0;\n        }\n      }\n      return days\n    },\n    yearMonthStr: function yearMonthStr () {\n      if (this.yearMonthFormatter) {\n        return this.yearMonthFormatter(this.year, this.month)\n      } else {\n        return isExist(this.month) ? ((this.year) + \" \" + (this.t((\"uiv.datePicker.month\" + (this.month + 1))))) : this.year\n      }\n    },\n    monthDayRows: function monthDayRows () {\n      var rows = [];\n      var firstDay = new Date(this.year, this.month, 1);\n      var prevMonthLastDate = new Date(this.year, this.month, 0).getDate();\n      var startIndex = firstDay.getDay();\n      // console.log(startIndex)\n      var daysNum = daysInMonth(this.month, this.year);\n      var weekOffset = 0;\n      if (this.weekStartsWith > startIndex) {\n        weekOffset = 7 - this.weekStartsWith;\n      } else {\n        weekOffset = 0 - this.weekStartsWith;\n      }\n      // console.log(prevMonthLastDate, startIndex, daysNum)\n      for (var i = 0; i < 6; i++) {\n        rows.push([]);\n        for (var j = 0 - weekOffset; j < 7 - weekOffset; j++) {\n          var currentIndex = i * 7 + j;\n          var date = { year: this.year, disabled: false };\n          // date in and not in current month\n          if (currentIndex < startIndex) {\n            date.date = prevMonthLastDate - startIndex + currentIndex + 1;\n            if (this.month > 0) {\n              date.month = this.month - 1;\n            } else {\n              date.month = 11;\n              date.year--;\n            }\n          } else if (currentIndex < startIndex + daysNum) {\n            date.date = currentIndex - startIndex + 1;\n            date.month = this.month;\n          } else {\n            date.date = currentIndex - startIndex - daysNum + 1;\n            if (this.month < 11) {\n              date.month = this.month + 1;\n            } else {\n              date.month = 0;\n              date.year++;\n            }\n          }\n          // process limit dates\n          var dateObj = new Date(date.year, date.month, date.date);\n          var afterFrom = true;\n          var beforeTo = true;\n          if (this.limit && this.limit.from) {\n            afterFrom = dateObj >= this.limit.from;\n          }\n          if (this.limit && this.limit.to) {\n            beforeTo = dateObj < this.limit.to;\n          }\n          date.disabled = !afterFrom || !beforeTo;\n          if (isFunction(this.dateClass)) {\n            date.classes = this.dateClass(dateObj, {\n              currentMonth: this.month,\n              currentYear: this.year\n            });\n          } else {\n            date.classes = '';\n          }\n          rows[i].push(date);\n        }\n      }\n      return rows\n    }\n  },\n  methods: {\n    getWeekNumber: getWeekNumber,\n    tWeekName: function tWeekName (index) {\n      return this.t((\"uiv.datePicker.week\" + index))\n    },\n    getBtnType: function getBtnType (date) {\n      if (this.date &&\n        date.date === this.date.getDate() &&\n        date.month === this.date.getMonth() &&\n        date.year === this.date.getFullYear()) {\n        return 'primary'\n      } else if (date.date === this.today.getDate() &&\n        date.month === this.today.getMonth() &&\n        date.year === this.today.getFullYear()) {\n        return 'info'\n      } else {\n        return 'default'\n      }\n    },\n    select: function select (date) {\n      this.$emit('date-change', date);\n    },\n    goPrevMonth: function goPrevMonth () {\n      var month = this.month;\n      var year = this.year;\n      if (this.month > 0) {\n        month--;\n      } else {\n        month = 11;\n        year--;\n        this.$emit('year-change', year);\n      }\n      this.$emit('month-change', month);\n    },\n    goNextMonth: function goNextMonth () {\n      var month = this.month;\n      var year = this.year;\n      if (this.month < 11) {\n        month++;\n      } else {\n        month = 0;\n        year++;\n        this.$emit('year-change', year);\n      }\n      this.$emit('month-change', month);\n    },\n    changeView: function changeView () {\n      this.$emit('view-change', 'm');\n    }\n  }\n};\n\n/* script */\nvar __vue_script__$5 = script$5;\n\n/* template */\nvar __vue_render__$5 = function() {\n  var _vm = this;\n  var _h = _vm.$createElement;\n  var _c = _vm._self._c || _h;\n  return _c(\n    \"table\",\n    { staticStyle: { width: \"100%\" }, attrs: { role: \"grid\" } },\n    [\n      _c(\"thead\", [\n        _c(\"tr\", [\n          _c(\n            \"td\",\n            [\n              _c(\n                \"btn\",\n                {\n                  staticClass: \"uiv-datepicker-pager-prev\",\n                  staticStyle: { border: \"none\" },\n                  attrs: { block: \"\", size: \"sm\" },\n                  on: { click: _vm.goPrevMonth }\n                },\n                [_c(\"i\", { class: _vm.iconControlLeft })]\n              )\n            ],\n            1\n          ),\n          _vm._v(\" \"),\n          _c(\n            \"td\",\n            { attrs: { colspan: _vm.weekNumbers ? 6 : 5 } },\n            [\n              _c(\n                \"btn\",\n                {\n                  staticClass: \"uiv-datepicker-title\",\n                  staticStyle: { border: \"none\" },\n                  attrs: { block: \"\", size: \"sm\" },\n                  on: { click: _vm.changeView }\n                },\n                [_c(\"b\", [_vm._v(_vm._s(_vm.yearMonthStr))])]\n              )\n            ],\n            1\n          ),\n          _vm._v(\" \"),\n          _c(\n            \"td\",\n            [\n              _c(\n                \"btn\",\n                {\n                  staticClass: \"uiv-datepicker-pager-next\",\n                  staticStyle: { border: \"none\" },\n                  attrs: { block: \"\", size: \"sm\" },\n                  on: { click: _vm.goNextMonth }\n                },\n                [_c(\"i\", { class: _vm.iconControlRight })]\n              )\n            ],\n            1\n          )\n        ]),\n        _vm._v(\" \"),\n        _c(\n          \"tr\",\n          { attrs: { align: \"center\" } },\n          [\n            _vm.weekNumbers ? _c(\"td\") : _vm._e(),\n            _vm._v(\" \"),\n            _vm._l(_vm.weekDays, function(day) {\n              return _c(\"td\", { attrs: { width: \"14.2857142857%\" } }, [\n                _c(\"small\", { staticClass: \"uiv-datepicker-week\" }, [\n                  _vm._v(_vm._s(_vm.tWeekName(day === 0 ? 7 : day)))\n                ])\n              ])\n            })\n          ],\n          2\n        )\n      ]),\n      _vm._v(\" \"),\n      _c(\n        \"tbody\",\n        _vm._l(_vm.monthDayRows, function(row) {\n          return _c(\n            \"tr\",\n            [\n              _vm.weekNumbers\n                ? _c(\n                    \"td\",\n                    {\n                      staticClass: \"text-center\",\n                      staticStyle: { \"border-right\": \"1px solid #eee\" }\n                    },\n                    [\n                      _c(\"small\", { staticClass: \"text-muted\" }, [\n                        _vm._v(\n                          _vm._s(_vm.getWeekNumber(row[_vm.weekStartsWith]))\n                        )\n                      ])\n                    ]\n                  )\n                : _vm._e(),\n              _vm._v(\" \"),\n              _vm._l(row, function(date) {\n                return _c(\n                  \"td\",\n                  [\n                    _c(\n                      \"btn\",\n                      {\n                        class: date.classes,\n                        staticStyle: { border: \"none\" },\n                        attrs: {\n                          block: \"\",\n                          size: \"sm\",\n                          \"data-action\": \"select\",\n                          type: _vm.getBtnType(date),\n                          disabled: date.disabled\n                        },\n                        on: {\n                          click: function($event) {\n                            return _vm.select(date)\n                          }\n                        }\n                      },\n                      [\n                        _c(\n                          \"span\",\n                          {\n                            class: { \"text-muted\": _vm.month !== date.month },\n                            attrs: { \"data-action\": \"select\" }\n                          },\n                          [_vm._v(_vm._s(date.date))]\n                        )\n                      ]\n                    )\n                  ],\n                  1\n                )\n              })\n            ],\n            2\n          )\n        }),\n        0\n      )\n    ]\n  )\n};\nvar __vue_staticRenderFns__$5 = [];\n__vue_render__$5._withStripped = true;\n\n  /* style */\n  var __vue_inject_styles__$5 = undefined;\n  /* scoped */\n  var __vue_scope_id__$5 = undefined;\n  /* module identifier */\n  var __vue_module_identifier__$5 = undefined;\n  /* functional template */\n  var __vue_is_functional_template__$5 = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  var __vue_component__$5 = /*#__PURE__*/normalizeComponent(\n    { render: __vue_render__$5, staticRenderFns: __vue_staticRenderFns__$5 },\n    __vue_inject_styles__$5,\n    __vue_script__$5,\n    __vue_scope_id__$5,\n    __vue_is_functional_template__$5,\n    __vue_module_identifier__$5,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nvar script$6 = {\n  components: { Btn: Btn },\n  mixins: [Local],\n  props: {\n    month: Number,\n    year: Number,\n    iconControlLeft: String,\n    iconControlRight: String\n  },\n  data: function data () {\n    return {\n      rows: []\n    }\n  },\n  mounted: function mounted () {\n    for (var i = 0; i < 4; i++) {\n      this.rows.push([]);\n      for (var j = 0; j < 3; j++) {\n        this.rows[i].push(i * 3 + j + 1);\n      }\n    }\n  },\n  methods: {\n    tCell: function tCell (cell) {\n      return this.t((\"uiv.datePicker.month\" + cell))\n    },\n    getBtnClass: function getBtnClass (month) {\n      if (month === this.month) {\n        return 'primary'\n      } else {\n        return 'default'\n      }\n    },\n    goPrevYear: function goPrevYear () {\n      this.$emit('year-change', this.year - 1);\n    },\n    goNextYear: function goNextYear () {\n      this.$emit('year-change', this.year + 1);\n    },\n    changeView: function changeView (monthIndex) {\n      if (isExist(monthIndex)) {\n        this.$emit('month-change', monthIndex);\n        this.$emit('view-change', 'd');\n      } else {\n        this.$emit('view-change', 'y');\n      }\n    }\n  }\n};\n\n/* script */\nvar __vue_script__$6 = script$6;\n\n/* template */\nvar __vue_render__$6 = function() {\n  var _vm = this;\n  var _h = _vm.$createElement;\n  var _c = _vm._self._c || _h;\n  return _c(\n    \"table\",\n    { staticStyle: { width: \"100%\" }, attrs: { role: \"grid\" } },\n    [\n      _c(\"thead\", [\n        _c(\"tr\", [\n          _c(\n            \"td\",\n            [\n              _c(\n                \"btn\",\n                {\n                  staticClass: \"uiv-datepicker-pager-prev\",\n                  staticStyle: { border: \"none\" },\n                  attrs: { block: \"\", size: \"sm\" },\n                  on: { click: _vm.goPrevYear }\n                },\n                [_c(\"i\", { class: _vm.iconControlLeft })]\n              )\n            ],\n            1\n          ),\n          _vm._v(\" \"),\n          _c(\n            \"td\",\n            { attrs: { colspan: \"4\" } },\n            [\n              _c(\n                \"btn\",\n                {\n                  staticClass: \"uiv-datepicker-title\",\n                  staticStyle: { border: \"none\" },\n                  attrs: { block: \"\", size: \"sm\" },\n                  on: {\n                    click: function($event) {\n                      return _vm.changeView()\n                    }\n                  }\n                },\n                [_c(\"b\", [_vm._v(_vm._s(_vm.year))])]\n              )\n            ],\n            1\n          ),\n          _vm._v(\" \"),\n          _c(\n            \"td\",\n            [\n              _c(\n                \"btn\",\n                {\n                  staticClass: \"uiv-datepicker-pager-next\",\n                  staticStyle: { border: \"none\" },\n                  attrs: { block: \"\", size: \"sm\" },\n                  on: { click: _vm.goNextYear }\n                },\n                [_c(\"i\", { class: _vm.iconControlRight })]\n              )\n            ],\n            1\n          )\n        ])\n      ]),\n      _vm._v(\" \"),\n      _c(\n        \"tbody\",\n        _vm._l(_vm.rows, function(row, i) {\n          return _c(\n            \"tr\",\n            _vm._l(row, function(month, j) {\n              return _c(\n                \"td\",\n                { attrs: { colspan: \"2\", width: \"33.333333%\" } },\n                [\n                  _c(\n                    \"btn\",\n                    {\n                      staticStyle: { border: \"none\" },\n                      attrs: {\n                        block: \"\",\n                        size: \"sm\",\n                        type: _vm.getBtnClass(i * 3 + j)\n                      },\n                      on: {\n                        click: function($event) {\n                          return _vm.changeView(i * 3 + j)\n                        }\n                      }\n                    },\n                    [_c(\"span\", [_vm._v(_vm._s(_vm.tCell(month)))])]\n                  )\n                ],\n                1\n              )\n            }),\n            0\n          )\n        }),\n        0\n      )\n    ]\n  )\n};\nvar __vue_staticRenderFns__$6 = [];\n__vue_render__$6._withStripped = true;\n\n  /* style */\n  var __vue_inject_styles__$6 = undefined;\n  /* scoped */\n  var __vue_scope_id__$6 = undefined;\n  /* module identifier */\n  var __vue_module_identifier__$6 = undefined;\n  /* functional template */\n  var __vue_is_functional_template__$6 = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  var __vue_component__$6 = /*#__PURE__*/normalizeComponent(\n    { render: __vue_render__$6, staticRenderFns: __vue_staticRenderFns__$6 },\n    __vue_inject_styles__$6,\n    __vue_script__$6,\n    __vue_scope_id__$6,\n    __vue_is_functional_template__$6,\n    __vue_module_identifier__$6,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nvar script$7 = {\n  components: { Btn: Btn },\n  props: {\n    year: Number,\n    iconControlLeft: String,\n    iconControlRight: String\n  },\n  computed: {\n    rows: function rows () {\n      var rows = [];\n      var yearGroupStart = this.year - this.year % 20;\n      for (var i = 0; i < 4; i++) {\n        rows.push([]);\n        for (var j = 0; j < 5; j++) {\n          rows[i].push(yearGroupStart + i * 5 + j);\n        }\n      }\n      return rows\n    },\n    yearStr: function yearStr () {\n      var start = this.year - this.year % 20;\n      return (start + \" ~ \" + (start + 19))\n    }\n  },\n  methods: {\n    getBtnClass: function getBtnClass (year) {\n      if (year === this.year) {\n        return 'primary'\n      } else {\n        return 'default'\n      }\n    },\n    goPrevYear: function goPrevYear () {\n      this.$emit('year-change', this.year - 20);\n    },\n    goNextYear: function goNextYear () {\n      this.$emit('year-change', this.year + 20);\n    },\n    changeView: function changeView (year) {\n      this.$emit('year-change', year);\n      this.$emit('view-change', 'm');\n    }\n  }\n};\n\n/* script */\nvar __vue_script__$7 = script$7;\n\n/* template */\nvar __vue_render__$7 = function() {\n  var _vm = this;\n  var _h = _vm.$createElement;\n  var _c = _vm._self._c || _h;\n  return _c(\n    \"table\",\n    { staticStyle: { width: \"100%\" }, attrs: { role: \"grid\" } },\n    [\n      _c(\"thead\", [\n        _c(\"tr\", [\n          _c(\n            \"td\",\n            [\n              _c(\n                \"btn\",\n                {\n                  staticClass: \"uiv-datepicker-pager-prev\",\n                  staticStyle: { border: \"none\" },\n                  attrs: { block: \"\", size: \"sm\" },\n                  on: { click: _vm.goPrevYear }\n                },\n                [_c(\"i\", { class: _vm.iconControlLeft })]\n              )\n            ],\n            1\n          ),\n          _vm._v(\" \"),\n          _c(\n            \"td\",\n            { attrs: { colspan: \"3\" } },\n            [\n              _c(\n                \"btn\",\n                {\n                  staticClass: \"uiv-datepicker-title\",\n                  staticStyle: { border: \"none\" },\n                  attrs: { block: \"\", size: \"sm\" }\n                },\n                [_c(\"b\", [_vm._v(_vm._s(_vm.yearStr))])]\n              )\n            ],\n            1\n          ),\n          _vm._v(\" \"),\n          _c(\n            \"td\",\n            [\n              _c(\n                \"btn\",\n                {\n                  staticClass: \"uiv-datepicker-pager-next\",\n                  staticStyle: { border: \"none\" },\n                  attrs: { block: \"\", size: \"sm\" },\n                  on: { click: _vm.goNextYear }\n                },\n                [_c(\"i\", { class: _vm.iconControlRight })]\n              )\n            ],\n            1\n          )\n        ])\n      ]),\n      _vm._v(\" \"),\n      _c(\n        \"tbody\",\n        _vm._l(_vm.rows, function(row) {\n          return _c(\n            \"tr\",\n            _vm._l(row, function(year) {\n              return _c(\n                \"td\",\n                { attrs: { width: \"20%\" } },\n                [\n                  _c(\n                    \"btn\",\n                    {\n                      staticStyle: { border: \"none\" },\n                      attrs: {\n                        block: \"\",\n                        size: \"sm\",\n                        type: _vm.getBtnClass(year)\n                      },\n                      on: {\n                        click: function($event) {\n                          return _vm.changeView(year)\n                        }\n                      }\n                    },\n                    [_c(\"span\", [_vm._v(_vm._s(year))])]\n                  )\n                ],\n                1\n              )\n            }),\n            0\n          )\n        }),\n        0\n      )\n    ]\n  )\n};\nvar __vue_staticRenderFns__$7 = [];\n__vue_render__$7._withStripped = true;\n\n  /* style */\n  var __vue_inject_styles__$7 = undefined;\n  /* scoped */\n  var __vue_scope_id__$7 = undefined;\n  /* module identifier */\n  var __vue_module_identifier__$7 = undefined;\n  /* functional template */\n  var __vue_is_functional_template__$7 = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  var __vue_component__$7 = /*#__PURE__*/normalizeComponent(\n    { render: __vue_render__$7, staticRenderFns: __vue_staticRenderFns__$7 },\n    __vue_inject_styles__$7,\n    __vue_script__$7,\n    __vue_scope_id__$7,\n    __vue_is_functional_template__$7,\n    __vue_module_identifier__$7,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nvar script$8 = {\n  mixins: [Local],\n  components: { DateView: __vue_component__$5, MonthView: __vue_component__$6, YearView: __vue_component__$7, Btn: Btn },\n  props: {\n    value: null,\n    width: {\n      type: Number,\n      default: 270\n    },\n    todayBtn: {\n      type: Boolean,\n      default: true\n    },\n    clearBtn: {\n      type: Boolean,\n      default: true\n    },\n    closeOnSelected: {\n      type: Boolean,\n      default: true\n    },\n    limitFrom: null,\n    limitTo: null,\n    format: {\n      type: String,\n      default: 'yyyy-MM-dd'\n    },\n    initialView: {\n      type: String,\n      default: 'd'\n    },\n    dateParser: {\n      type: Function,\n      default: Date.parse\n    },\n    dateClass: Function,\n    yearMonthFormatter: Function,\n    weekStartsWith: {\n      type: Number,\n      default: 0,\n      validator: function validator (value) {\n        return value >= 0 && value <= 6\n      }\n    },\n    weekNumbers: Boolean,\n    iconControlLeft: {\n      type: String,\n      default: 'glyphicon glyphicon-chevron-left'\n    },\n    iconControlRight: {\n      type: String,\n      default: 'glyphicon glyphicon-chevron-right'\n    }\n  },\n  data: function data () {\n    return {\n      show: false,\n      now: new Date(),\n      currentMonth: 0,\n      currentYear: 0,\n      view: 'd'\n    }\n  },\n  computed: {\n    valueDateObj: function valueDateObj () {\n      var ts = this.dateParser(this.value);\n      if (isNaN(ts)) {\n        return null\n      } else {\n        var date = new Date(ts);\n        if (date.getHours() !== 0) {\n          date = new Date(ts + date.getTimezoneOffset() * 60 * 1000);\n        }\n        return date\n      }\n    },\n    pickerStyle: function pickerStyle () {\n      return {\n        width: this.width + 'px'\n      }\n    },\n    pickerClass: function pickerClass () {\n      return {\n        'uiv-datepicker': true,\n        'uiv-datepicker-date': this.view === 'd',\n        'uiv-datepicker-month': this.view === 'm',\n        'uiv-datepicker-year': this.view === 'y'\n      }\n    },\n    limit: function limit () {\n      var limit = {};\n      if (this.limitFrom) {\n        var limitFrom = this.dateParser(this.limitFrom);\n        if (!isNaN(limitFrom)) {\n          limitFrom = convertDateToUTC(new Date(limitFrom));\n          limitFrom.setHours(0, 0, 0, 0);\n          limit.from = limitFrom;\n        }\n      }\n      if (this.limitTo) {\n        var limitTo = this.dateParser(this.limitTo);\n        if (!isNaN(limitTo)) {\n          limitTo = convertDateToUTC(new Date(limitTo));\n          limitTo.setHours(0, 0, 0, 0);\n          limit.to = limitTo;\n        }\n      }\n      return limit\n    }\n  },\n  mounted: function mounted () {\n    if (this.value) {\n      this.setMonthAndYearByValue(this.value);\n    } else {\n      this.currentMonth = this.now.getMonth();\n      this.currentYear = this.now.getFullYear();\n      this.view = this.initialView;\n    }\n  },\n  watch: {\n    value: function value (val, oldVal) {\n      this.setMonthAndYearByValue(val, oldVal);\n    }\n  },\n  methods: {\n    setMonthAndYearByValue: function setMonthAndYearByValue (val, oldVal) {\n      var ts = this.dateParser(val);\n      if (!isNaN(ts)) {\n        var date = new Date(ts);\n        if (date.getHours() !== 0) {\n          date = new Date(ts + date.getTimezoneOffset() * 60 * 1000);\n        }\n        if (this.limit && ((this.limit.from && date < this.limit.from) || (this.limit.to && date >= this.limit.to))) {\n          this.$emit('input', oldVal || '');\n        } else {\n          this.currentMonth = date.getMonth();\n          this.currentYear = date.getFullYear();\n        }\n      }\n    },\n    onMonthChange: function onMonthChange (month) {\n      this.currentMonth = month;\n    },\n    onYearChange: function onYearChange (year) {\n      this.currentYear = year;\n      this.currentMonth = undefined;\n    },\n    onDateChange: function onDateChange (date) {\n      if (date && isNumber(date.date) && isNumber(date.month) && isNumber(date.year)) {\n        var _date = new Date(date.year, date.month, date.date);\n        this.$emit('input', this.format ? stringify(_date, this.format) : _date);\n        // if the input event trigger nothing (same value)\n        // manually correct\n        this.currentMonth = date.month;\n        this.currentYear = date.year;\n      } else {\n        this.$emit('input', '');\n      }\n    },\n    onViewChange: function onViewChange (view) {\n      this.view = view;\n    },\n    selectToday: function selectToday () {\n      this.view = 'd';\n      this.onDateChange({\n        date: this.now.getDate(),\n        month: this.now.getMonth(),\n        year: this.now.getFullYear()\n      });\n    },\n    clearSelect: function clearSelect () {\n      this.currentMonth = this.now.getMonth();\n      this.currentYear = this.now.getFullYear();\n      this.view = this.initialView;\n      this.onDateChange();\n    },\n    onPickerClick: function onPickerClick (event) {\n      if (event.target.getAttribute('data-action') !== 'select' || !this.closeOnSelected) {\n        event.stopPropagation();\n      }\n    }\n  }\n};\n\n/* script */\nvar __vue_script__$8 = script$8;\n\n/* template */\nvar __vue_render__$8 = function() {\n  var _vm = this;\n  var _h = _vm.$createElement;\n  var _c = _vm._self._c || _h;\n  return _c(\n    \"div\",\n    {\n      class: _vm.pickerClass,\n      style: _vm.pickerStyle,\n      attrs: { \"data-role\": \"date-picker\" },\n      on: { click: _vm.onPickerClick }\n    },\n    [\n      _c(\"date-view\", {\n        directives: [\n          {\n            name: \"show\",\n            rawName: \"v-show\",\n            value: _vm.view === \"d\",\n            expression: \"view==='d'\"\n          }\n        ],\n        attrs: {\n          month: _vm.currentMonth,\n          year: _vm.currentYear,\n          date: _vm.valueDateObj,\n          today: _vm.now,\n          limit: _vm.limit,\n          \"week-starts-with\": _vm.weekStartsWith,\n          \"icon-control-left\": _vm.iconControlLeft,\n          \"icon-control-right\": _vm.iconControlRight,\n          \"date-class\": _vm.dateClass,\n          \"year-month-formatter\": _vm.yearMonthFormatter,\n          \"week-numbers\": _vm.weekNumbers,\n          locale: _vm.locale\n        },\n        on: {\n          \"month-change\": _vm.onMonthChange,\n          \"year-change\": _vm.onYearChange,\n          \"date-change\": _vm.onDateChange,\n          \"view-change\": _vm.onViewChange\n        }\n      }),\n      _vm._v(\" \"),\n      _c(\"month-view\", {\n        directives: [\n          {\n            name: \"show\",\n            rawName: \"v-show\",\n            value: _vm.view === \"m\",\n            expression: \"view==='m'\"\n          }\n        ],\n        attrs: {\n          month: _vm.currentMonth,\n          year: _vm.currentYear,\n          \"icon-control-left\": _vm.iconControlLeft,\n          \"icon-control-right\": _vm.iconControlRight,\n          locale: _vm.locale\n        },\n        on: {\n          \"month-change\": _vm.onMonthChange,\n          \"year-change\": _vm.onYearChange,\n          \"view-change\": _vm.onViewChange\n        }\n      }),\n      _vm._v(\" \"),\n      _c(\"year-view\", {\n        directives: [\n          {\n            name: \"show\",\n            rawName: \"v-show\",\n            value: _vm.view === \"y\",\n            expression: \"view==='y'\"\n          }\n        ],\n        attrs: {\n          year: _vm.currentYear,\n          \"icon-control-left\": _vm.iconControlLeft,\n          \"icon-control-right\": _vm.iconControlRight\n        },\n        on: { \"year-change\": _vm.onYearChange, \"view-change\": _vm.onViewChange }\n      }),\n      _vm._v(\" \"),\n      _vm.todayBtn || _vm.clearBtn\n        ? _c(\"div\", [\n            _c(\"br\"),\n            _vm._v(\" \"),\n            _c(\n              \"div\",\n              { staticClass: \"text-center\" },\n              [\n                _vm.todayBtn\n                  ? _c(\"btn\", {\n                      attrs: {\n                        \"data-action\": \"select\",\n                        type: \"info\",\n                        size: \"sm\"\n                      },\n                      domProps: {\n                        textContent: _vm._s(_vm.t(\"uiv.datePicker.today\"))\n                      },\n                      on: { click: _vm.selectToday }\n                    })\n                  : _vm._e(),\n                _vm._v(\" \"),\n                _vm.clearBtn\n                  ? _c(\"btn\", {\n                      attrs: { \"data-action\": \"select\", size: \"sm\" },\n                      domProps: {\n                        textContent: _vm._s(_vm.t(\"uiv.datePicker.clear\"))\n                      },\n                      on: { click: _vm.clearSelect }\n                    })\n                  : _vm._e()\n              ],\n              1\n            )\n          ])\n        : _vm._e()\n    ],\n    1\n  )\n};\nvar __vue_staticRenderFns__$8 = [];\n__vue_render__$8._withStripped = true;\n\n  /* style */\n  var __vue_inject_styles__$8 = undefined;\n  /* scoped */\n  var __vue_scope_id__$8 = undefined;\n  /* module identifier */\n  var __vue_module_identifier__$8 = undefined;\n  /* functional template */\n  var __vue_is_functional_template__$8 = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  var __vue_component__$8 = /*#__PURE__*/normalizeComponent(\n    { render: __vue_render__$8, staticRenderFns: __vue_staticRenderFns__$8 },\n    __vue_inject_styles__$8,\n    __vue_script__$8,\n    __vue_scope_id__$8,\n    __vue_is_functional_template__$8,\n    __vue_module_identifier__$8,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nvar HANDLER = '_uiv_scroll_handler';\nvar events = [EVENTS.RESIZE, EVENTS.SCROLL];\n\nvar bind = function (el, binding) {\n  var callback = binding.value;\n  if (!isFunction(callback)) {\n    return\n  }\n  unbind(el);\n  el[HANDLER] = callback;\n  events.forEach(function (event) {\n    on(window, event, el[HANDLER]);\n  });\n};\n\nvar unbind = function (el) {\n  events.forEach(function (event) {\n    off(window, event, el[HANDLER]);\n  });\n  delete el[HANDLER];\n};\n\nvar update = function (el, binding) {\n  if (binding.value !== binding.oldValue) {\n    bind(el, binding);\n  }\n};\n\nvar scroll = { bind: bind, unbind: unbind, update: update };\n\nvar script$9 = {\n  directives: {\n    scroll: scroll\n  },\n  props: {\n    offset: {\n      type: Number,\n      default: 0\n    }\n  },\n  data: function data () {\n    return {\n      affixed: false\n    }\n  },\n  computed: {\n    classes: function classes () {\n      return {\n        affix: this.affixed\n      }\n    },\n    styles: function styles () {\n      return {\n        top: this.affixed ? this.offset + 'px' : null\n      }\n    }\n  },\n  methods: {\n    // from https://github.com/ant-design/ant-design/blob/master/components/affix/index.jsx#L20\n    onScroll: function onScroll () {\n      var this$1 = this;\n\n      // if is hidden don't calculate anything\n      if (!(this.$el.offsetWidth || this.$el.offsetHeight || this.$el.getClientRects().length)) {\n        return\n      }\n      // get window scroll and element position to detect if have to be normal or affixed\n      var scroll = {};\n      var element = {};\n      var rect = this.$el.getBoundingClientRect();\n      var body = document.body;\n      var types = ['Top', 'Left'];\n      types.forEach(function (type) {\n        var t = type.toLowerCase();\n        scroll[t] = window['page' + (type === 'Top' ? 'Y' : 'X') + 'Offset'];\n        element[t] = scroll[t] + rect[t] - (this$1.$el['client' + type] || body['client' + type] || 0);\n      });\n      var fix = scroll.top > element.top - this.offset;\n      if (this.affixed !== fix) {\n        this.affixed = fix;\n        this.$emit(this.affixed ? 'affix' : 'unfix');\n        this.$nextTick(function () {\n          this$1.$emit(this$1.affixed ? 'affixed' : 'unfixed');\n        });\n      }\n    }\n  }\n};\n\n/* script */\nvar __vue_script__$9 = script$9;\n\n/* template */\nvar __vue_render__$9 = function() {\n  var _vm = this;\n  var _h = _vm.$createElement;\n  var _c = _vm._self._c || _h;\n  return _c(\"div\", { staticClass: \"hidden-print\" }, [\n    _c(\n      \"div\",\n      {\n        directives: [\n          {\n            name: \"scroll\",\n            rawName: \"v-scroll\",\n            value: _vm.onScroll,\n            expression: \"onScroll\"\n          }\n        ],\n        class: _vm.classes,\n        style: _vm.styles\n      },\n      [_vm._t(\"default\")],\n      2\n    )\n  ])\n};\nvar __vue_staticRenderFns__$9 = [];\n__vue_render__$9._withStripped = true;\n\n  /* style */\n  var __vue_inject_styles__$9 = undefined;\n  /* scoped */\n  var __vue_scope_id__$9 = undefined;\n  /* module identifier */\n  var __vue_module_identifier__$9 = undefined;\n  /* functional template */\n  var __vue_is_functional_template__$9 = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  var __vue_component__$9 = /*#__PURE__*/normalizeComponent(\n    { render: __vue_render__$9, staticRenderFns: __vue_staticRenderFns__$9 },\n    __vue_inject_styles__$9,\n    __vue_script__$9,\n    __vue_scope_id__$9,\n    __vue_is_functional_template__$9,\n    __vue_module_identifier__$9,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nvar script$a = {\n  props: {\n    dismissible: {\n      type: Boolean,\n      default: false\n    },\n    duration: {\n      type: Number,\n      default: 0\n    },\n    type: {\n      type: String,\n      default: 'info'\n    }\n  },\n  data: function data () {\n    return {\n      timeout: 0\n    }\n  },\n  computed: {\n    alertClass: function alertClass () {\n      var obj;\n\n      return ( obj = {\n        alert: true\n      }, obj[(\"alert-\" + (this.type))] = Boolean(this.type), obj['alert-dismissible'] = this.dismissible, obj )\n    }\n  },\n  methods: {\n    closeAlert: function closeAlert () {\n      clearTimeout(this.timeout);\n      this.$emit('dismissed');\n    }\n  },\n  mounted: function mounted () {\n    if (this.duration > 0) {\n      this.timeout = setTimeout(this.closeAlert, this.duration);\n    }\n  },\n  destroyed: function destroyed () {\n    clearTimeout(this.timeout);\n  }\n};\n\n/* script */\nvar __vue_script__$a = script$a;\n\n/* template */\nvar __vue_render__$a = function() {\n  var _vm = this;\n  var _h = _vm.$createElement;\n  var _c = _vm._self._c || _h;\n  return _c(\n    \"div\",\n    { class: _vm.alertClass, attrs: { role: \"alert\" } },\n    [\n      _vm.dismissible\n        ? _c(\n            \"button\",\n            {\n              staticClass: \"close\",\n              attrs: { type: \"button\", \"aria-label\": \"Close\" },\n              on: { click: _vm.closeAlert }\n            },\n            [_c(\"span\", { attrs: { \"aria-hidden\": \"true\" } }, [_vm._v(\"×\")])]\n          )\n        : _vm._e(),\n      _vm._v(\" \"),\n      _vm._t(\"default\")\n    ],\n    2\n  )\n};\nvar __vue_staticRenderFns__$a = [];\n__vue_render__$a._withStripped = true;\n\n  /* style */\n  var __vue_inject_styles__$a = undefined;\n  /* scoped */\n  var __vue_scope_id__$a = undefined;\n  /* module identifier */\n  var __vue_module_identifier__$a = undefined;\n  /* functional template */\n  var __vue_is_functional_template__$a = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  var __vue_component__$a = /*#__PURE__*/normalizeComponent(\n    { render: __vue_render__$a, staticRenderFns: __vue_staticRenderFns__$a },\n    __vue_inject_styles__$a,\n    __vue_script__$a,\n    __vue_scope_id__$a,\n    __vue_is_functional_template__$a,\n    __vue_module_identifier__$a,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nvar script$b = {\n  props: {\n    value: {\n      type: Number,\n      required: true,\n      validator: function (v) { return v >= 1; }\n    },\n    boundaryLinks: {\n      type: Boolean,\n      default: false\n    },\n    directionLinks: {\n      type: Boolean,\n      default: true\n    },\n    size: String,\n    align: String,\n    totalPage: {\n      type: Number,\n      required: true,\n      validator: function (v) { return v >= 0; }\n    },\n    maxSize: {\n      type: Number,\n      default: 5,\n      validator: function (v) { return v >= 0; }\n    },\n    disabled: Boolean\n  },\n  data: function data () {\n    return {\n      sliceStart: 0\n    }\n  },\n  computed: {\n    navClasses: function navClasses () {\n      var obj;\n\n      return ( obj = {}, obj[(\"text-\" + (this.align))] = Boolean(this.align), obj )\n    },\n    classes: function classes () {\n      var obj;\n\n      return ( obj = {}, obj[(\"pagination-\" + (this.size))] = Boolean(this.size), obj )\n    },\n    sliceArray: function sliceArray () {\n      return range(this.totalPage).slice(this.sliceStart, this.sliceStart + this.maxSize)\n    }\n  },\n  methods: {\n    calculateSliceStart: function calculateSliceStart () {\n      var currentPage = this.value;\n      var chunkSize = this.maxSize;\n      var currentChunkStart = this.sliceStart;\n      var currentChunkEnd = currentChunkStart + chunkSize;\n      if (currentPage > currentChunkEnd) {\n        var lastChunkStart = this.totalPage - chunkSize;\n        if (currentPage > lastChunkStart) {\n          this.sliceStart = lastChunkStart;\n        } else {\n          this.sliceStart = currentPage - 1;\n        }\n      } else if (currentPage < currentChunkStart + 1) {\n        if (currentPage > chunkSize) {\n          this.sliceStart = currentPage - chunkSize;\n        } else {\n          this.sliceStart = 0;\n        }\n      }\n    },\n    onPageChange: function onPageChange (page) {\n      if (!this.disabled && page > 0 && page <= this.totalPage && page !== this.value) {\n        this.$emit('input', page);\n        this.$emit('change', page);\n      }\n    },\n    toPage: function toPage (pre) {\n      if (this.disabled) {\n        return\n      }\n      var chunkSize = this.maxSize;\n      var currentChunkStart = this.sliceStart;\n      var lastChunkStart = this.totalPage - chunkSize;\n      var start = pre ? currentChunkStart - chunkSize : currentChunkStart + chunkSize;\n      if (start < 0) {\n        this.sliceStart = 0;\n      } else if (start > lastChunkStart) {\n        this.sliceStart = lastChunkStart;\n      } else {\n        this.sliceStart = start;\n      }\n    }\n  },\n  created: function created () {\n    this.$watch(function (vm) { return [vm.value, vm.maxSize, vm.totalPage].join(); }, this.calculateSliceStart, {\n      immediate: true\n    });\n  }\n};\n\n/* script */\nvar __vue_script__$b = script$b;\n\n/* template */\nvar __vue_render__$b = function() {\n  var _vm = this;\n  var _h = _vm.$createElement;\n  var _c = _vm._self._c || _h;\n  return _c(\n    \"nav\",\n    { class: _vm.navClasses, attrs: { \"aria-label\": \"Page navigation\" } },\n    [\n      _c(\n        \"ul\",\n        { staticClass: \"pagination\", class: _vm.classes },\n        [\n          _vm.boundaryLinks\n            ? _c(\n                \"li\",\n                { class: { disabled: _vm.value <= 1 || _vm.disabled } },\n                [\n                  _c(\n                    \"a\",\n                    {\n                      attrs: {\n                        href: \"#\",\n                        role: \"button\",\n                        \"aria-label\": \"First\"\n                      },\n                      on: {\n                        click: function($event) {\n                          $event.preventDefault();\n                          return _vm.onPageChange(1)\n                        }\n                      }\n                    },\n                    [\n                      _c(\"span\", { attrs: { \"aria-hidden\": \"true\" } }, [\n                        _vm._v(\"«\")\n                      ])\n                    ]\n                  )\n                ]\n              )\n            : _vm._e(),\n          _vm._v(\" \"),\n          _vm.directionLinks\n            ? _c(\n                \"li\",\n                { class: { disabled: _vm.value <= 1 || _vm.disabled } },\n                [\n                  _c(\n                    \"a\",\n                    {\n                      attrs: {\n                        href: \"#\",\n                        role: \"button\",\n                        \"aria-label\": \"Previous\"\n                      },\n                      on: {\n                        click: function($event) {\n                          $event.preventDefault();\n                          return _vm.onPageChange(_vm.value - 1)\n                        }\n                      }\n                    },\n                    [\n                      _c(\"span\", { attrs: { \"aria-hidden\": \"true\" } }, [\n                        _vm._v(\"‹\")\n                      ])\n                    ]\n                  )\n                ]\n              )\n            : _vm._e(),\n          _vm._v(\" \"),\n          _vm.sliceStart > 0\n            ? _c(\"li\", { class: { disabled: _vm.disabled } }, [\n                _c(\n                  \"a\",\n                  {\n                    attrs: {\n                      href: \"#\",\n                      role: \"button\",\n                      \"aria-label\": \"Previous group\"\n                    },\n                    on: {\n                      click: function($event) {\n                        $event.preventDefault();\n                        return _vm.toPage(1)\n                      }\n                    }\n                  },\n                  [\n                    _c(\"span\", { attrs: { \"aria-hidden\": \"true\" } }, [\n                      _vm._v(\"…\")\n                    ])\n                  ]\n                )\n              ])\n            : _vm._e(),\n          _vm._v(\" \"),\n          _vm._l(_vm.sliceArray, function(item) {\n            return _c(\n              \"li\",\n              {\n                key: item,\n                class: {\n                  active: _vm.value === item + 1,\n                  disabled: _vm.disabled\n                }\n              },\n              [\n                _c(\n                  \"a\",\n                  {\n                    attrs: { href: \"#\", role: \"button\" },\n                    on: {\n                      click: function($event) {\n                        $event.preventDefault();\n                        return _vm.onPageChange(item + 1)\n                      }\n                    }\n                  },\n                  [_vm._v(_vm._s(item + 1))]\n                )\n              ]\n            )\n          }),\n          _vm._v(\" \"),\n          _vm.sliceStart < _vm.totalPage - _vm.maxSize\n            ? _c(\"li\", { class: { disabled: _vm.disabled } }, [\n                _c(\n                  \"a\",\n                  {\n                    attrs: {\n                      href: \"#\",\n                      role: \"button\",\n                      \"aria-label\": \"Next group\"\n                    },\n                    on: {\n                      click: function($event) {\n                        $event.preventDefault();\n                        return _vm.toPage(0)\n                      }\n                    }\n                  },\n                  [\n                    _c(\"span\", { attrs: { \"aria-hidden\": \"true\" } }, [\n                      _vm._v(\"…\")\n                    ])\n                  ]\n                )\n              ])\n            : _vm._e(),\n          _vm._v(\" \"),\n          _vm.directionLinks\n            ? _c(\n                \"li\",\n                {\n                  class: {\n                    disabled: _vm.value >= _vm.totalPage || _vm.disabled\n                  }\n                },\n                [\n                  _c(\n                    \"a\",\n                    {\n                      attrs: {\n                        href: \"#\",\n                        role: \"button\",\n                        \"aria-label\": \"Next\"\n                      },\n                      on: {\n                        click: function($event) {\n                          $event.preventDefault();\n                          return _vm.onPageChange(_vm.value + 1)\n                        }\n                      }\n                    },\n                    [\n                      _c(\"span\", { attrs: { \"aria-hidden\": \"true\" } }, [\n                        _vm._v(\"›\")\n                      ])\n                    ]\n                  )\n                ]\n              )\n            : _vm._e(),\n          _vm._v(\" \"),\n          _vm.boundaryLinks\n            ? _c(\n                \"li\",\n                {\n                  class: {\n                    disabled: _vm.value >= _vm.totalPage || _vm.disabled\n                  }\n                },\n                [\n                  _c(\n                    \"a\",\n                    {\n                      attrs: {\n                        href: \"#\",\n                        role: \"button\",\n                        \"aria-label\": \"Last\"\n                      },\n                      on: {\n                        click: function($event) {\n                          $event.preventDefault();\n                          return _vm.onPageChange(_vm.totalPage)\n                        }\n                      }\n                    },\n                    [\n                      _c(\"span\", { attrs: { \"aria-hidden\": \"true\" } }, [\n                        _vm._v(\"»\")\n                      ])\n                    ]\n                  )\n                ]\n              )\n            : _vm._e()\n        ],\n        2\n      )\n    ]\n  )\n};\nvar __vue_staticRenderFns__$b = [];\n__vue_render__$b._withStripped = true;\n\n  /* style */\n  var __vue_inject_styles__$b = undefined;\n  /* scoped */\n  var __vue_scope_id__$b = undefined;\n  /* module identifier */\n  var __vue_module_identifier__$b = undefined;\n  /* functional template */\n  var __vue_is_functional_template__$b = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  var __vue_component__$b = /*#__PURE__*/normalizeComponent(\n    { render: __vue_render__$b, staticRenderFns: __vue_staticRenderFns__$b },\n    __vue_inject_styles__$b,\n    __vue_script__$b,\n    __vue_scope_id__$b,\n    __vue_is_functional_template__$b,\n    __vue_module_identifier__$b,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nvar SHOW_CLASS = 'in';\n\nvar popupMixin = {\n  props: {\n    value: {\n      type: Boolean,\n      default: false\n    },\n    tag: {\n      type: String,\n      default: 'span'\n    },\n    placement: {\n      type: String,\n      default: PLACEMENTS.TOP\n    },\n    autoPlacement: {\n      type: Boolean,\n      default: true\n    },\n    appendTo: {\n      type: null,\n      default: 'body'\n    },\n    positionBy: {\n      type: null,\n      default: null\n    },\n    transition: {\n      type: Number,\n      default: 150\n    },\n    hideDelay: {\n      type: Number,\n      default: 0\n    },\n    showDelay: {\n      type: Number,\n      default: 0\n    },\n    enable: {\n      type: Boolean,\n      default: true\n    },\n    enterable: {\n      type: Boolean,\n      default: true\n    },\n    target: null,\n    viewport: null,\n    customClass: String\n  },\n  data: function data () {\n    return {\n      triggerEl: null,\n      hideTimeoutId: 0,\n      showTimeoutId: 0,\n      transitionTimeoutId: 0,\n      autoTimeoutId: 0\n    }\n  },\n  watch: {\n    value: function value (v) {\n      v ? this.show() : this.hide();\n    },\n    trigger: function trigger () {\n      this.clearListeners();\n      this.initListeners();\n    },\n    target: function target (value) {\n      this.clearListeners();\n      this.initTriggerElByTarget(value);\n      this.initListeners();\n    },\n    allContent: function allContent (value) {\n      var this$1 = this;\n\n      // can not use value because it can not detect slot changes\n      if (this.isNotEmpty()) {\n        // reset position while content changed & is shown\n        // nextTick is required\n        this.$nextTick(function () {\n          /* istanbul ignore else */\n          if (this$1.isShown()) {\n            this$1.resetPosition();\n          }\n        });\n      } else {\n        this.hide();\n      }\n    },\n    enable: function enable (value) {\n      // hide if enable changed to false\n      /* istanbul ignore else */\n      if (!value) {\n        this.hide();\n      }\n    }\n  },\n  mounted: function mounted () {\n    var this$1 = this;\n\n    ensureElementMatchesFunction();\n    removeFromDom(this.$refs.popup);\n    this.$nextTick(function () {\n      this$1.initTriggerElByTarget(this$1.target);\n      this$1.initListeners();\n      if (this$1.value) {\n        this$1.show();\n      }\n    });\n  },\n  beforeDestroy: function beforeDestroy () {\n    this.clearListeners();\n    removeFromDom(this.$refs.popup);\n  },\n  methods: {\n    initTriggerElByTarget: function initTriggerElByTarget (target) {\n      if (target) {\n        // target exist\n        this.triggerEl = getElementBySelectorOrRef(target);\n      } else {\n        // find special element\n        var trigger = this.$el.querySelector('[data-role=\"trigger\"]');\n        if (trigger) {\n          this.triggerEl = trigger;\n        } else {\n          // use the first child\n          var firstChild = this.$el.firstChild;\n          this.triggerEl = firstChild === this.$refs.popup ? null : firstChild;\n        }\n      }\n    },\n    initListeners: function initListeners () {\n      if (this.triggerEl) {\n        if (this.trigger === TRIGGERS.HOVER) {\n          on(this.triggerEl, EVENTS.MOUSE_ENTER, this.show);\n          on(this.triggerEl, EVENTS.MOUSE_LEAVE, this.hide);\n        } else if (this.trigger === TRIGGERS.FOCUS) {\n          on(this.triggerEl, EVENTS.FOCUS, this.show);\n          on(this.triggerEl, EVENTS.BLUR, this.hide);\n        } else if (this.trigger === TRIGGERS.HOVER_FOCUS) {\n          on(this.triggerEl, EVENTS.MOUSE_ENTER, this.handleAuto);\n          on(this.triggerEl, EVENTS.MOUSE_LEAVE, this.handleAuto);\n          on(this.triggerEl, EVENTS.FOCUS, this.handleAuto);\n          on(this.triggerEl, EVENTS.BLUR, this.handleAuto);\n        } else if (this.trigger === TRIGGERS.CLICK || this.trigger === TRIGGERS.OUTSIDE_CLICK) {\n          on(this.triggerEl, EVENTS.CLICK, this.toggle);\n        }\n      }\n      on(window, EVENTS.CLICK, this.windowClicked);\n    },\n    clearListeners: function clearListeners () {\n      if (this.triggerEl) {\n        off(this.triggerEl, EVENTS.FOCUS, this.show);\n        off(this.triggerEl, EVENTS.BLUR, this.hide);\n        off(this.triggerEl, EVENTS.MOUSE_ENTER, this.show);\n        off(this.triggerEl, EVENTS.MOUSE_LEAVE, this.hide);\n        off(this.triggerEl, EVENTS.CLICK, this.toggle);\n        off(this.triggerEl, EVENTS.MOUSE_ENTER, this.handleAuto);\n        off(this.triggerEl, EVENTS.MOUSE_LEAVE, this.handleAuto);\n        off(this.triggerEl, EVENTS.FOCUS, this.handleAuto);\n        off(this.triggerEl, EVENTS.BLUR, this.handleAuto);\n      }\n      off(window, EVENTS.CLICK, this.windowClicked);\n      this.clearTimeouts();\n    },\n    clearTimeouts: function clearTimeouts () {\n      if (this.hideTimeoutId) {\n        clearTimeout(this.hideTimeoutId);\n        this.hideTimeoutId = 0;\n      }\n      if (this.showTimeoutId) {\n        clearTimeout(this.showTimeoutId);\n        this.showTimeoutId = 0;\n      }\n      if (this.transitionTimeoutId) {\n        clearTimeout(this.transitionTimeoutId);\n        this.transitionTimeoutId = 0;\n      }\n      if (this.autoTimeoutId) {\n        clearTimeout(this.autoTimeoutId);\n        this.autoTimeoutId = 0;\n      }\n    },\n    resetPosition: function resetPosition () {\n      var popup = this.$refs.popup;\n      /* istanbul ignore else */\n      if (popup) {\n        setTooltipPosition(popup, this.triggerEl, this.placement, this.autoPlacement, this.appendTo, this.positionBy, this.viewport);\n        popup.offsetHeight;\n      }\n    },\n    hideOnLeave: function hideOnLeave () {\n      if (this.trigger === TRIGGERS.HOVER || (this.trigger === TRIGGERS.HOVER_FOCUS && !this.triggerEl.matches(':focus'))) {\n        this.$hide();\n      }\n    },\n    toggle: function toggle () {\n      if (this.isShown()) {\n        this.hide();\n      } else {\n        this.show();\n      }\n    },\n    show: function show () {\n      var this$1 = this;\n\n      if (this.enable && this.triggerEl && this.isNotEmpty() && !this.isShown()) {\n        var popUpAppendedContainer = this.hideTimeoutId > 0; // weird condition\n        if (popUpAppendedContainer) {\n          clearTimeout(this.hideTimeoutId);\n          this.hideTimeoutId = 0;\n        }\n        if (this.transitionTimeoutId > 0) {\n          clearTimeout(this.transitionTimeoutId);\n          this.transitionTimeoutId = 0;\n        }\n        clearTimeout(this.showTimeoutId);\n        this.showTimeoutId = setTimeout(function () {\n          this$1.showTimeoutId = 0;\n          var popup = this$1.$refs.popup;\n          if (popup) {\n            var alreadyOpenModalNum = getOpenModalNum();\n            if (alreadyOpenModalNum > 1) {\n              var defaultZ = this$1.name === 'popover' ? 1060 : 1070;\n              var offset = (alreadyOpenModalNum - 1) * 20;\n              popup.style.zIndex = \"\" + (defaultZ + offset);\n            }\n            // add to dom\n            if (!popUpAppendedContainer) {\n              popup.className = (this$1.name) + \" \" + (this$1.placement) + \" \" + (this$1.customClass ? this$1.customClass : '') + \" fade\";\n              var container = getElementBySelectorOrRef(this$1.appendTo);\n              container.appendChild(popup);\n              this$1.resetPosition();\n            }\n            addClass(popup, SHOW_CLASS);\n            this$1.$emit('input', true);\n            this$1.$emit('show');\n          }\n        }, this.showDelay);\n      }\n    },\n    hide: function hide () {\n      var this$1 = this;\n\n      if (this.showTimeoutId > 0) {\n        clearTimeout(this.showTimeoutId);\n        this.showTimeoutId = 0;\n      }\n\n      if (!this.isShown()) {\n        return\n      }\n      if (this.enterable && (this.trigger === TRIGGERS.HOVER || this.trigger === TRIGGERS.HOVER_FOCUS)) {\n        clearTimeout(this.hideTimeoutId);\n        this.hideTimeoutId = setTimeout(function () {\n          this$1.hideTimeoutId = 0;\n          var popup = this$1.$refs.popup;\n          if (popup && !popup.matches(':hover')) {\n            this$1.$hide();\n          }\n        }, 100);\n      } else {\n        this.$hide();\n      }\n    },\n    $hide: function $hide () {\n      var this$1 = this;\n\n      if (this.isShown()) {\n        clearTimeout(this.hideTimeoutId);\n        this.hideTimeoutId = setTimeout(function () {\n          this$1.hideTimeoutId = 0;\n          removeClass(this$1.$refs.popup, SHOW_CLASS);\n          // gives fade out time\n          this$1.transitionTimeoutId = setTimeout(function () {\n            this$1.transitionTimeoutId = 0;\n            removeFromDom(this$1.$refs.popup);\n            this$1.$emit('input', false);\n            this$1.$emit('hide');\n          }, this$1.transition);\n        }, this.hideDelay);\n      }\n    },\n    isShown: function isShown () {\n      return hasClass(this.$refs.popup, SHOW_CLASS)\n    },\n    windowClicked: function windowClicked (event) {\n      if (this.triggerEl && isFunction(this.triggerEl.contains) && !this.triggerEl.contains(event.target) &&\n        this.trigger === TRIGGERS.OUTSIDE_CLICK && !(this.$refs.popup && this.$refs.popup.contains(event.target)) &&\n        this.isShown()) {\n        this.hide();\n      }\n    },\n    handleAuto: function handleAuto () {\n      var this$1 = this;\n\n      clearTimeout(this.autoTimeoutId);\n      this.autoTimeoutId = setTimeout(function () {\n        this$1.autoTimeoutId = 0;\n        if (this$1.triggerEl.matches(':hover, :focus')) {\n          this$1.show();\n        } else {\n          this$1.hide();\n        }\n      }, 20); // 20ms make firefox happy\n    }\n  }\n};\n\nvar Tooltip = {\n  mixins: [popupMixin],\n  data: function data () {\n    return {\n      name: 'tooltip'\n    }\n  },\n  render: function render (h) {\n    return h(\n      this.tag,\n      [\n        this.$slots.default,\n        h('div',\n          {\n            ref: 'popup',\n            attrs: {\n              role: 'tooltip'\n            },\n            on: {\n              mouseleave: this.hideOnLeave\n            }\n          },\n          [\n            h('div', { class: 'tooltip-arrow' }),\n            h('div', {\n              class: 'tooltip-inner',\n              domProps: { innerHTML: this.text }\n            })\n          ]\n        )\n      ]\n    )\n  },\n  props: {\n    text: {\n      type: String,\n      default: ''\n    },\n    trigger: {\n      type: String,\n      default: TRIGGERS.HOVER_FOCUS\n    }\n  },\n  computed: {\n    allContent: function allContent () {\n      return this.text\n    }\n  },\n  methods: {\n    isNotEmpty: function isNotEmpty () {\n      return this.text\n    }\n  }\n};\n\nvar Popover = {\n  mixins: [popupMixin],\n  data: function data () {\n    return {\n      name: 'popover'\n    }\n  },\n  render: function render (h) {\n    return h(this.tag,\n      [\n        this.$slots.default,\n        h('div',\n          {\n            style: {\n              display: 'block'\n            },\n            ref: 'popup',\n            on: {\n              mouseleave: this.hideOnLeave\n            }\n          },\n          [\n            h('div', { class: 'arrow' }),\n            h('h3', {\n              class: 'popover-title',\n              directives: [\n                { name: 'show', value: this.title }\n              ]\n            }, this.title),\n            h('div', { class: 'popover-content' }, [this.content || this.$slots.popover])\n          ]\n        )\n      ]\n    )\n  },\n  props: {\n    title: {\n      type: String,\n      default: ''\n    },\n    content: {\n      type: String,\n      default: ''\n    },\n    trigger: {\n      type: String,\n      default: TRIGGERS.OUTSIDE_CLICK\n    }\n  },\n  computed: {\n    allContent: function allContent () {\n      return this.title + this.content\n    }\n  },\n  methods: {\n    isNotEmpty: function isNotEmpty () {\n      return this.title || this.content || this.$slots.popover\n    }\n  }\n};\n\nvar maxHours = 23;\nvar zero = 0;\nvar maxMinutes = 59;\nvar cutUpAmAndPm = 12;\n\nvar script$c = {\n  components: { Btn: Btn },\n  mixins: [Local],\n  props: {\n    value: {\n      type: Date,\n      required: true\n    },\n    showMeridian: {\n      type: Boolean,\n      default: true\n    },\n    min: Date,\n    max: Date,\n    hourStep: {\n      type: Number,\n      default: 1\n    },\n    minStep: {\n      type: Number,\n      default: 1\n    },\n    readonly: {\n      type: Boolean,\n      default: false\n    },\n    controls: {\n      type: Boolean,\n      default: true\n    },\n    iconControlUp: {\n      type: String,\n      default: 'glyphicon glyphicon-chevron-up'\n    },\n    iconControlDown: {\n      type: String,\n      default: 'glyphicon glyphicon-chevron-down'\n    },\n    inputWidth: {\n      type: Number,\n      default: 50\n    }\n  },\n  data: function data () {\n    return {\n      hours: 0,\n      minutes: 0,\n      meridian: true,\n      hoursText: '',\n      minutesText: ''\n    }\n  },\n  mounted: function mounted () {\n    this.updateByValue(this.value);\n  },\n  computed: {\n    inputStyles: function inputStyles () {\n      return {\n        width: ((this.inputWidth) + \"px\")\n      }\n    }\n  },\n  watch: {\n    value: function value (value$1) {\n      this.updateByValue(value$1);\n    },\n    showMeridian: function showMeridian (value) {\n      this.setTime();\n    },\n    hoursText: function hoursText (value) {\n      if (this.hours === 0 && value === '') {\n        // Prevent a runtime reset from being overwritten\n        return\n      }\n      var hour = parseInt(value);\n      if (this.showMeridian) {\n        if (hour >= 1 && hour <= cutUpAmAndPm) {\n          if (this.meridian) {\n            this.hours = hour === cutUpAmAndPm ? 0 : hour;\n          } else {\n            this.hours = hour === cutUpAmAndPm ? cutUpAmAndPm : hour + cutUpAmAndPm;\n          }\n        }\n      } else if (hour >= zero && hour <= maxHours) {\n        this.hours = hour;\n      }\n      this.setTime();\n    },\n    minutesText: function minutesText (value) {\n      if (this.minutes === 0 && value === '') {\n        // Prevent a runtime reset from being overwritten\n        return\n      }\n      var minutesStr = parseInt(value);\n      if (minutesStr >= zero && minutesStr <= maxMinutes) {\n        this.minutes = minutesStr;\n      }\n      this.setTime();\n    }\n  },\n  methods: {\n    updateByValue: function updateByValue (value) {\n      if (isNaN(value.getTime())) {\n        this.hours = 0;\n        this.minutes = 0;\n        this.hoursText = '';\n        this.minutesText = '';\n        this.meridian = true;\n        return\n      }\n      this.hours = value.getHours();\n      this.minutes = value.getMinutes();\n      if (!this.showMeridian) {\n        this.hoursText = pad(this.hours, 2);\n      } else {\n        if (this.hours >= cutUpAmAndPm) {\n          if (this.hours === cutUpAmAndPm) {\n            this.hoursText = this.hours + '';\n          } else {\n            this.hoursText = pad(this.hours - cutUpAmAndPm, 2);\n          }\n          this.meridian = false;\n        } else {\n          if (this.hours === zero) {\n            this.hoursText = cutUpAmAndPm.toString();\n          } else {\n            this.hoursText = pad(this.hours, 2);\n          }\n          this.meridian = true;\n        }\n      }\n      this.minutesText = pad(this.minutes, 2);\n      // lazy model won't update when using keyboard up/down\n      this.$refs.hoursInput.value = this.hoursText;\n      this.$refs.minutesInput.value = this.minutesText;\n    },\n    addHour: function addHour (step) {\n      step = step || this.hourStep;\n      this.hours = this.hours >= maxHours ? zero : this.hours + step;\n    },\n    reduceHour: function reduceHour (step) {\n      step = step || this.hourStep;\n      this.hours = this.hours <= zero ? maxHours : this.hours - step;\n    },\n    addMinute: function addMinute () {\n      if (this.minutes >= maxMinutes) {\n        this.minutes = zero;\n        this.addHour(1);\n      } else {\n        this.minutes += this.minStep;\n      }\n    },\n    reduceMinute: function reduceMinute () {\n      if (this.minutes <= zero) {\n        this.minutes = maxMinutes + 1 - this.minStep;\n        this.reduceHour(1);\n      } else {\n        this.minutes -= this.minStep;\n      }\n    },\n    changeTime: function changeTime (isHour, isPlus) {\n      if (!this.readonly) {\n        if (isHour && isPlus) {\n          this.addHour();\n        } else if (isHour && !isPlus) {\n          this.reduceHour();\n        } else if (!isHour && isPlus) {\n          this.addMinute();\n        } else {\n          this.reduceMinute();\n        }\n        this.setTime();\n      }\n    },\n    toggleMeridian: function toggleMeridian () {\n      this.meridian = !this.meridian;\n      if (this.meridian) {\n        this.hours -= cutUpAmAndPm;\n      } else {\n        this.hours += cutUpAmAndPm;\n      }\n      this.setTime();\n    },\n    onWheel: function onWheel (e, isHour) {\n      if (!this.readonly) {\n        e.preventDefault();\n        this.changeTime(isHour, e.deltaY < 0);\n      }\n    },\n    setTime: function setTime () {\n      var time = this.value;\n      if (isNaN(time.getTime())) {\n        time = new Date();\n        time.setHours(0);\n        time.setMinutes(0);\n      }\n      time.setHours(this.hours);\n      time.setMinutes(this.minutes);\n      if (this.max) {\n        var max = new Date(time);\n        max.setHours(this.max.getHours());\n        max.setMinutes(this.max.getMinutes());\n        time = time > max ? max : time;\n      }\n      if (this.min) {\n        var min = new Date(time);\n        min.setHours(this.min.getHours());\n        min.setMinutes(this.min.getMinutes());\n        time = time < min ? min : time;\n      }\n      this.$emit('input', new Date(time));\n    },\n    selectInputValue: function selectInputValue (e) {\n      // mouseup should be prevented!\n      // See various comments in https://stackoverflow.com/questions/3272089/programmatically-selecting-text-in-an-input-field-on-ios-devices-mobile-safari\n      e.target.setSelectionRange(0, 2);\n    }\n  }\n};\n\n/* script */\nvar __vue_script__$c = script$c;\n\n/* template */\nvar __vue_render__$c = function() {\n  var _vm = this;\n  var _h = _vm.$createElement;\n  var _c = _vm._self._c || _h;\n  return _c(\n    \"section\",\n    {\n      on: {\n        click: function($event) {\n          $event.stopPropagation();\n        }\n      }\n    },\n    [\n      _c(\"table\", [\n        _c(\"tbody\", [\n          _vm.controls\n            ? _c(\"tr\", { staticClass: \"text-center\" }, [\n                _c(\n                  \"td\",\n                  [\n                    _c(\n                      \"btn\",\n                      {\n                        attrs: {\n                          type: \"link\",\n                          size: \"sm\",\n                          disabled: _vm.readonly\n                        },\n                        on: {\n                          click: function($event) {\n                            return _vm.changeTime(1, 1)\n                          }\n                        }\n                      },\n                      [_c(\"i\", { class: _vm.iconControlUp })]\n                    )\n                  ],\n                  1\n                ),\n                _vm._v(\" \"),\n                _c(\"td\", [_vm._v(\" \")]),\n                _vm._v(\" \"),\n                _c(\n                  \"td\",\n                  [\n                    _c(\n                      \"btn\",\n                      {\n                        attrs: {\n                          type: \"link\",\n                          size: \"sm\",\n                          disabled: _vm.readonly\n                        },\n                        on: {\n                          click: function($event) {\n                            return _vm.changeTime(0, 1)\n                          }\n                        }\n                      },\n                      [_c(\"i\", { class: _vm.iconControlUp })]\n                    )\n                  ],\n                  1\n                ),\n                _vm._v(\" \"),\n                _vm.showMeridian ? _c(\"td\") : _vm._e()\n              ])\n            : _vm._e(),\n          _vm._v(\" \"),\n          _c(\"tr\", [\n            _c(\"td\", { staticClass: \"form-group\" }, [\n              _c(\"input\", {\n                directives: [\n                  {\n                    name: \"model\",\n                    rawName: \"v-model.lazy\",\n                    value: _vm.hoursText,\n                    expression: \"hoursText\",\n                    modifiers: { lazy: true }\n                  }\n                ],\n                ref: \"hoursInput\",\n                staticClass: \"form-control text-center\",\n                style: _vm.inputStyles,\n                attrs: {\n                  type: \"tel\",\n                  pattern: \"\\\\d*\",\n                  placeholder: \"HH\",\n                  readonly: _vm.readonly,\n                  maxlength: \"2\",\n                  size: \"2\"\n                },\n                domProps: { value: _vm.hoursText },\n                on: {\n                  mouseup: _vm.selectInputValue,\n                  keydown: [\n                    function($event) {\n                      if (\n                        !$event.type.indexOf(\"key\") &&\n                        _vm._k($event.keyCode, \"up\", 38, $event.key, [\n                          \"Up\",\n                          \"ArrowUp\"\n                        ])\n                      ) {\n                        return null\n                      }\n                      $event.preventDefault();\n                      return _vm.changeTime(1, 1)\n                    },\n                    function($event) {\n                      if (\n                        !$event.type.indexOf(\"key\") &&\n                        _vm._k($event.keyCode, \"down\", 40, $event.key, [\n                          \"Down\",\n                          \"ArrowDown\"\n                        ])\n                      ) {\n                        return null\n                      }\n                      $event.preventDefault();\n                      return _vm.changeTime(1, 0)\n                    }\n                  ],\n                  wheel: function($event) {\n                    return _vm.onWheel($event, true)\n                  },\n                  change: function($event) {\n                    _vm.hoursText = $event.target.value;\n                  }\n                }\n              })\n            ]),\n            _vm._v(\" \"),\n            _vm._m(0),\n            _vm._v(\" \"),\n            _c(\"td\", { staticClass: \"form-group\" }, [\n              _c(\"input\", {\n                directives: [\n                  {\n                    name: \"model\",\n                    rawName: \"v-model.lazy\",\n                    value: _vm.minutesText,\n                    expression: \"minutesText\",\n                    modifiers: { lazy: true }\n                  }\n                ],\n                ref: \"minutesInput\",\n                staticClass: \"form-control text-center\",\n                style: _vm.inputStyles,\n                attrs: {\n                  type: \"tel\",\n                  pattern: \"\\\\d*\",\n                  placeholder: \"MM\",\n                  readonly: _vm.readonly,\n                  maxlength: \"2\",\n                  size: \"2\"\n                },\n                domProps: { value: _vm.minutesText },\n                on: {\n                  mouseup: _vm.selectInputValue,\n                  keydown: [\n                    function($event) {\n                      if (\n                        !$event.type.indexOf(\"key\") &&\n                        _vm._k($event.keyCode, \"up\", 38, $event.key, [\n                          \"Up\",\n                          \"ArrowUp\"\n                        ])\n                      ) {\n                        return null\n                      }\n                      $event.preventDefault();\n                      return _vm.changeTime(0, 1)\n                    },\n                    function($event) {\n                      if (\n                        !$event.type.indexOf(\"key\") &&\n                        _vm._k($event.keyCode, \"down\", 40, $event.key, [\n                          \"Down\",\n                          \"ArrowDown\"\n                        ])\n                      ) {\n                        return null\n                      }\n                      $event.preventDefault();\n                      return _vm.changeTime(0, 0)\n                    }\n                  ],\n                  wheel: function($event) {\n                    return _vm.onWheel($event, false)\n                  },\n                  change: function($event) {\n                    _vm.minutesText = $event.target.value;\n                  }\n                }\n              })\n            ]),\n            _vm._v(\" \"),\n            _vm.showMeridian\n              ? _c(\n                  \"td\",\n                  [\n                    _vm._v(\"\\n         \\n        \"),\n                    _c(\"btn\", {\n                      attrs: {\n                        \"data-action\": \"toggleMeridian\",\n                        disabled: _vm.readonly\n                      },\n                      domProps: {\n                        textContent: _vm._s(\n                          _vm.meridian\n                            ? _vm.t(\"uiv.timePicker.am\")\n                            : _vm.t(\"uiv.timePicker.pm\")\n                        )\n                      },\n                      on: { click: _vm.toggleMeridian }\n                    })\n                  ],\n                  1\n                )\n              : _vm._e()\n          ]),\n          _vm._v(\" \"),\n          _vm.controls\n            ? _c(\"tr\", { staticClass: \"text-center\" }, [\n                _c(\n                  \"td\",\n                  [\n                    _c(\n                      \"btn\",\n                      {\n                        attrs: {\n                          type: \"link\",\n                          size: \"sm\",\n                          disabled: _vm.readonly\n                        },\n                        on: {\n                          click: function($event) {\n                            return _vm.changeTime(1, 0)\n                          }\n                        }\n                      },\n                      [_c(\"i\", { class: _vm.iconControlDown })]\n                    )\n                  ],\n                  1\n                ),\n                _vm._v(\" \"),\n                _c(\"td\", [_vm._v(\" \")]),\n                _vm._v(\" \"),\n                _c(\n                  \"td\",\n                  [\n                    _c(\n                      \"btn\",\n                      {\n                        attrs: {\n                          type: \"link\",\n                          size: \"sm\",\n                          disabled: _vm.readonly\n                        },\n                        on: {\n                          click: function($event) {\n                            return _vm.changeTime(0, 0)\n                          }\n                        }\n                      },\n                      [_c(\"i\", { class: _vm.iconControlDown })]\n                    )\n                  ],\n                  1\n                ),\n                _vm._v(\" \"),\n                _vm.showMeridian ? _c(\"td\") : _vm._e()\n              ])\n            : _vm._e()\n        ])\n      ])\n    ]\n  )\n};\nvar __vue_staticRenderFns__$c = [\n  function() {\n    var _vm = this;\n    var _h = _vm.$createElement;\n    var _c = _vm._self._c || _h;\n    return _c(\"td\", [_vm._v(\" \"), _c(\"b\", [_vm._v(\":\")]), _vm._v(\" \")])\n  }\n];\n__vue_render__$c._withStripped = true;\n\n  /* style */\n  var __vue_inject_styles__$c = undefined;\n  /* scoped */\n  var __vue_scope_id__$c = undefined;\n  /* module identifier */\n  var __vue_module_identifier__$c = undefined;\n  /* functional template */\n  var __vue_is_functional_template__$c = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  var __vue_component__$c = /*#__PURE__*/normalizeComponent(\n    { render: __vue_render__$c, staticRenderFns: __vue_staticRenderFns__$c },\n    __vue_inject_styles__$c,\n    __vue_script__$c,\n    __vue_scope_id__$c,\n    __vue_is_functional_template__$c,\n    __vue_module_identifier__$c,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nfunction request (url, method) {\n  if ( method === void 0 ) method = 'GET';\n\n  var request = new window.XMLHttpRequest();\n  var data = {};\n  var p = {\n    then: function (fn1, fn2) { return p.done(fn1).fail(fn2); },\n    catch: function (fn) { return p.fail(fn); },\n    always: function (fn) { return p.done(fn).fail(fn); }\n  };\n  var statuses = ['done', 'fail'];\n  statuses.forEach(function (name) {\n    data[name] = [];\n    p[name] = function (fn) {\n      if (fn instanceof Function) { data[name].push(fn); }\n      return p\n    };\n  });\n  p.done(JSON.parse);\n  request.onreadystatechange = function () {\n    if (request.readyState === 4) {\n      var e = { status: request.status };\n      if (request.status === 200) {\n        var response = request.responseText;\n        for (var i in data.done) {\n          /* istanbul ignore else */\n          if (hasOwnProperty(data.done, i) && isFunction(data.done[i])) {\n            var value = data.done[i](response);\n            if (isExist(value)) {\n              response = value;\n            }\n          }\n        }\n      } else {\n        data.fail.forEach(function (fail) { return fail(e); });\n      }\n    }\n  };\n  request.open(method, url);\n  request.setRequestHeader('Accept', 'application/json');\n  request.send();\n  return p\n}\n\nvar script$d = {\n  components: { Dropdown: Dropdown },\n  props: {\n    value: {\n      required: true\n    },\n    data: Array,\n    itemKey: String,\n    appendToBody: {\n      type: Boolean,\n      default: false\n    },\n    ignoreCase: {\n      type: Boolean,\n      default: true\n    },\n    matchStart: {\n      type: Boolean,\n      default: false\n    },\n    forceSelect: {\n      type: Boolean,\n      default: false\n    },\n    forceClear: {\n      type: Boolean,\n      default: false\n    },\n    limit: {\n      type: Number,\n      default: 10\n    },\n    asyncSrc: String,\n    asyncKey: String,\n    asyncFunction: Function,\n    debounce: {\n      type: Number,\n      default: 200\n    },\n    openOnFocus: {\n      type: Boolean,\n      default: true\n    },\n    openOnEmpty: {\n      type: Boolean,\n      default: false\n    },\n    target: {\n      required: true\n    },\n    preselect: {\n      type: Boolean,\n      default: true\n    }\n  },\n  data: function data () {\n    return {\n      inputEl: null,\n      items: [],\n      activeIndex: 0,\n      timeoutID: 0,\n      elements: [],\n      open: false,\n      dropdownMenuEl: null\n    }\n  },\n  computed: {\n    regexOptions: function regexOptions () {\n      var options = '';\n      if (this.ignoreCase) {\n        options += 'i';\n      }\n      if (!this.matchStart) {\n        options += 'g';\n      }\n      return options\n    }\n  },\n  mounted: function mounted () {\n    var this$1 = this;\n\n    ensureElementMatchesFunction();\n    this.$nextTick(function () {\n      this$1.initInputElByTarget(this$1.target);\n      this$1.initListeners();\n      this$1.dropdownMenuEl = this$1.$refs.dropdown.$el.querySelector('.dropdown-menu');\n      // set input text if v-model not empty\n      if (this$1.value) {\n        this$1.setInputTextByValue(this$1.value);\n      }\n    });\n  },\n  beforeDestroy: function beforeDestroy () {\n    this.removeListeners();\n  },\n  watch: {\n    target: function target (el) {\n      this.removeListeners();\n      this.initInputElByTarget(el);\n      this.initListeners();\n    },\n    value: function value (value$1) {\n      this.setInputTextByValue(value$1);\n    }\n  },\n  methods: {\n    setInputTextByValue: function setInputTextByValue (value) {\n      if (isString(value)) {\n        // direct\n        this.inputEl.value = value;\n      } else if (value) {\n        // is object\n        this.inputEl.value = this.itemKey ? value[this.itemKey] : value;\n      } else if (value === null) {\n        // is null or undefined or something else not valid\n        this.inputEl.value = '';\n      }\n    },\n    hasEmptySlot: function hasEmptySlot () {\n      return !!this.$slots.empty || !!this.$scopedSlots.empty\n    },\n    initInputElByTarget: function initInputElByTarget (target) {\n      if (!target) {\n        return\n      }\n      this.inputEl = getElementBySelectorOrRef(target);\n    },\n    initListeners: function initListeners () {\n      if (this.inputEl) {\n        this.elements = [this.inputEl];\n        on(this.inputEl, EVENTS.FOCUS, this.inputFocused);\n        on(this.inputEl, EVENTS.BLUR, this.inputBlured);\n        on(this.inputEl, EVENTS.INPUT, this.inputChanged);\n        on(this.inputEl, EVENTS.KEY_DOWN, this.inputKeyPressed);\n      }\n    },\n    removeListeners: function removeListeners () {\n      this.elements = [];\n      if (this.inputEl) {\n        off(this.inputEl, EVENTS.FOCUS, this.inputFocused);\n        off(this.inputEl, EVENTS.BLUR, this.inputBlured);\n        off(this.inputEl, EVENTS.INPUT, this.inputChanged);\n        off(this.inputEl, EVENTS.KEY_DOWN, this.inputKeyPressed);\n      }\n    },\n    prepareItems: function prepareItems (data, disableFilters) {\n      if ( disableFilters === void 0 ) disableFilters = false;\n\n      if (disableFilters) {\n        this.items = data.slice(0, this.limit);\n        return\n      }\n      this.items = [];\n      this.activeIndex = this.preselect ? 0 : -1;\n      for (var i = 0, l = data.length; i < l; i++) {\n        var item = data[i];\n        var key = this.itemKey ? item[this.itemKey] : item;\n        key = key.toString();\n        var index = -1;\n        if (this.ignoreCase) {\n          index = key.toLowerCase().indexOf(this.inputEl.value.toLowerCase());\n        } else {\n          index = key.indexOf(this.inputEl.value);\n        }\n        if (this.matchStart ? index === 0 : index >= 0) {\n          this.items.push(item);\n        }\n        if (this.items.length >= this.limit) {\n          break\n        }\n      }\n    },\n    fetchItems: function fetchItems (value, debounce) {\n      var this$1 = this;\n\n      clearTimeout(this.timeoutID);\n      if (value === '' && !this.openOnEmpty) {\n        this.open = false;\n      } else if (this.data) {\n        this.prepareItems(this.data);\n        this.open = this.hasEmptySlot() || Boolean(this.items.length);\n      } else if (this.asyncSrc) {\n        this.timeoutID = setTimeout(function () {\n          this$1.$emit('loading');\n          request(this$1.asyncSrc + encodeURIComponent(value))\n            .then(function (data) {\n              if (this$1.inputEl.matches(':focus')) {\n                this$1.prepareItems(this$1.asyncKey ? data[this$1.asyncKey] : data, true);\n                this$1.open = this$1.hasEmptySlot() || Boolean(this$1.items.length);\n              }\n              this$1.$emit('loaded');\n            })\n            .catch(function (err) {\n              console.error(err);\n              this$1.$emit('loaded-error');\n            });\n        }, debounce);\n      } else if (this.asyncFunction) {\n        var cb = function (data) {\n          if (this$1.inputEl.matches(':focus')) {\n            this$1.prepareItems(data, true);\n            this$1.open = this$1.hasEmptySlot() || Boolean(this$1.items.length);\n          }\n          this$1.$emit('loaded');\n        };\n        this.timeoutID = setTimeout(function () {\n          this$1.$emit('loading');\n          this$1.asyncFunction(value, cb);\n        }, debounce);\n      }\n    },\n    inputChanged: function inputChanged () {\n      var value = this.inputEl.value;\n      this.fetchItems(value, this.debounce);\n      this.$emit('input', this.forceSelect ? undefined : value);\n    },\n    inputFocused: function inputFocused () {\n      if (this.openOnFocus) {\n        var value = this.inputEl.value;\n        this.fetchItems(value, 0);\n      }\n    },\n    inputBlured: function inputBlured () {\n      var this$1 = this;\n\n      if (!this.dropdownMenuEl.matches(':hover')) {\n        this.open = false;\n      }\n      if (this.inputEl && this.forceClear) {\n        this.$nextTick(function () {\n          if (typeof this$1.value === 'undefined') {\n            this$1.inputEl.value = '';\n          }\n        });\n      }\n    },\n    inputKeyPressed: function inputKeyPressed (event) {\n      event.stopPropagation();\n      if (this.open) {\n        switch (event.keyCode) {\n          case 13:\n            if (this.activeIndex >= 0) {\n              this.selectItem(this.items[this.activeIndex]);\n            } else {\n              this.open = false;\n            }\n            event.preventDefault();\n            break\n          case 27:\n            this.open = false;\n            break\n          case 38:\n            this.activeIndex = this.activeIndex > 0 ? this.activeIndex - 1 : 0;\n            break\n          case 40: {\n            var maxIndex = this.items.length - 1;\n            this.activeIndex = this.activeIndex < maxIndex ? this.activeIndex + 1 : maxIndex;\n            break\n          }\n        }\n      }\n    },\n    selectItem: function selectItem (item) {\n      this.$emit('input', item);\n      this.open = false;\n    },\n    highlight: function highlight (item) {\n      var value = this.itemKey ? item[this.itemKey] : item;\n      var inputValue = this.inputEl.value.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n      return value.replace(new RegExp((\"\" + inputValue), this.regexOptions), '$& ')\n    }\n  }\n};\n\n/* script */\nvar __vue_script__$d = script$d;\n\n/* template */\nvar __vue_render__$d = function() {\n  var _vm = this;\n  var _h = _vm.$createElement;\n  var _c = _vm._self._c || _h;\n  return _c(\n    \"dropdown\",\n    {\n      ref: \"dropdown\",\n      attrs: {\n        tag: \"section\",\n        \"append-to-body\": _vm.appendToBody,\n        \"not-close-elements\": _vm.elements,\n        \"position-element\": _vm.inputEl\n      },\n      model: {\n        value: _vm.open,\n        callback: function($$v) {\n          _vm.open = $$v;\n        },\n        expression: \"open\"\n      }\n    },\n    [\n      _c(\n        \"template\",\n        { slot: \"dropdown\" },\n        [\n          _vm._t(\n            \"item\",\n            _vm._l(_vm.items, function(item, index) {\n              return _c(\n                \"li\",\n                { class: { active: _vm.activeIndex === index } },\n                [\n                  _c(\n                    \"a\",\n                    {\n                      attrs: { href: \"#\" },\n                      on: {\n                        click: function($event) {\n                          $event.preventDefault();\n                          return _vm.selectItem(item)\n                        }\n                      }\n                    },\n                    [\n                      _c(\"span\", {\n                        domProps: { innerHTML: _vm._s(_vm.highlight(item)) }\n                      })\n                    ]\n                  )\n                ]\n              )\n            }),\n            {\n              items: _vm.items,\n              activeIndex: _vm.activeIndex,\n              select: _vm.selectItem,\n              highlight: _vm.highlight\n            }\n          ),\n          _vm._v(\" \"),\n          !_vm.items || _vm.items.length === 0 ? _vm._t(\"empty\") : _vm._e()\n        ],\n        2\n      )\n    ],\n    2\n  )\n};\nvar __vue_staticRenderFns__$d = [];\n__vue_render__$d._withStripped = true;\n\n  /* style */\n  var __vue_inject_styles__$d = undefined;\n  /* scoped */\n  var __vue_scope_id__$d = undefined;\n  /* module identifier */\n  var __vue_module_identifier__$d = undefined;\n  /* functional template */\n  var __vue_is_functional_template__$d = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  var __vue_component__$d = /*#__PURE__*/normalizeComponent(\n    { render: __vue_render__$d, staticRenderFns: __vue_staticRenderFns__$d },\n    __vue_inject_styles__$d,\n    __vue_script__$d,\n    __vue_scope_id__$d,\n    __vue_is_functional_template__$d,\n    __vue_module_identifier__$d,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nvar ProgressBarStack = {\n  functional: true,\n  render: function render (h, ref) {\n    var obj;\n\n    var props = ref.props;\n    var data = ref.data;\n    return h(\n      'div',\n      a(data, {\n        class: ( obj = {\n          'progress-bar': true,\n          'progress-bar-striped': props.striped,\n          active: props.striped && props.active\n        }, obj[(\"progress-bar-\" + (props.type))] = Boolean(props.type), obj ),\n        style: {\n          minWidth: props.minWidth ? '2em' : null,\n          width: ((props.value) + \"%\")\n        },\n        attrs: {\n          role: 'progressbar',\n          'aria-valuemin': 0,\n          'aria-valuenow': props.value,\n          'aria-valuemax': 100\n        }\n      }),\n      props.label ? (props.labelText ? props.labelText : ((props.value) + \"%\")) : null\n    )\n  },\n  props: {\n    value: {\n      type: Number,\n      required: true,\n      validator: function validator (value) {\n        return value >= 0 && value <= 100\n      }\n    },\n    labelText: String,\n    type: String,\n    label: {\n      type: Boolean,\n      default: false\n    },\n    minWidth: {\n      type: Boolean,\n      default: false\n    },\n    striped: {\n      type: Boolean,\n      default: false\n    },\n    active: {\n      type: Boolean,\n      default: false\n    }\n  }\n};\n\nvar ProgressBar = {\n  functional: true,\n  render: function render (h, ref) {\n    var props = ref.props;\n    var data = ref.data;\n    var children = ref.children;\n\n    return h(\n      'div',\n      a(data, { class: 'progress' }),\n      children && children.length ? children : [h(ProgressBarStack, { props: props })]\n    )\n  }\n};\n\nvar BreadcrumbItem = {\n  functional: true,\n  mixins: [linkMixin],\n  render: function render (h, ref) {\n    var props = ref.props;\n    var data = ref.data;\n    var children = ref.children;\n\n    var slot;\n    if (props.active) {\n      slot = children;\n    } else if (props.to) {\n      slot = [\n        h('router-link', {\n          props: {\n            to: props.to,\n            replace: props.replace,\n            append: props.append,\n            exact: props.exact\n          }\n        }, children)\n      ];\n    } else {\n      slot = [\n        h('a', {\n          attrs: {\n            href: props.href,\n            target: props.target\n          }\n        }, children)\n      ];\n    }\n    return h('li', a(data, { class: { active: props.active } }), slot)\n  },\n  props: {\n    active: {\n      type: Boolean,\n      default: false\n    }\n  }\n};\n\nvar Breadcrumbs = {\n  functional: true,\n  render: function render (h, ref) {\n    var props = ref.props;\n    var data = ref.data;\n    var children = ref.children;\n\n    var slot = [];\n    if (children && children.length) {\n      slot = children;\n    } else if (props.items) {\n      slot = props.items.map(function (item, index) {\n        return h(\n          BreadcrumbItem,\n          {\n            key: hasOwnProperty(item, 'key') ? item.key : index,\n            props: {\n              active: hasOwnProperty(item, 'active') ? item.active : index === props.items.length - 1,\n              href: item.href,\n              target: item.target,\n              to: item.to,\n              replace: item.replace,\n              append: item.append,\n              exact: item.exact\n            }\n          },\n          item.text\n        )\n      });\n    }\n    return h('ol', a(data, { class: 'breadcrumb' }), slot)\n  },\n  props: {\n    items: Array\n  }\n};\n\nvar BtnToolbar = {\n  functional: true,\n  render: function render (h, ref) {\n    var children = ref.children;\n    var data = ref.data;\n\n    return h(\n      'div',\n      a(data, {\n        class: {\n          'btn-toolbar': true\n        },\n        attrs: {\n          role: 'toolbar'\n        }\n      }),\n      children\n    )\n  }\n};\n\nvar script$e = {\n  mixins: [Local],\n  components: { Dropdown: Dropdown },\n  props: {\n    value: {\n      type: Array,\n      required: true\n    },\n    options: {\n      type: Array,\n      required: true\n    },\n    labelKey: {\n      type: String,\n      default: 'label'\n    },\n    valueKey: {\n      type: String,\n      default: 'value'\n    },\n    limit: {\n      type: Number,\n      default: 0\n    },\n    size: String,\n    placeholder: String,\n    split: {\n      type: String,\n      default: ', '\n    },\n    disabled: {\n      type: Boolean,\n      default: false\n    },\n    appendToBody: {\n      type: Boolean,\n      default: false\n    },\n    block: {\n      type: Boolean,\n      default: false\n    },\n    collapseSelected: {\n      type: Boolean,\n      default: false\n    },\n    filterable: {\n      type: Boolean,\n      default: false\n    },\n    filterAutoFocus: {\n      type: Boolean,\n      default: true\n    },\n    filterFunction: Function,\n    filterPlaceholder: String,\n    selectedIcon: {\n      type: String,\n      default: 'glyphicon glyphicon-ok'\n    },\n    itemSelectedClass: String\n  },\n  data: function data () {\n    return {\n      showDropdown: false,\n      els: [],\n      filterInput: '',\n      currentActive: -1\n    }\n  },\n  computed: {\n    containerStyles: function containerStyles () {\n      return {\n        width: this.block ? '100%' : ''\n      }\n    },\n    filteredOptions: function filteredOptions () {\n      var this$1 = this;\n\n      if (this.filterable && this.filterInput) {\n        if (this.filterFunction) {\n          return this.filterFunction(this.filterInput)\n        } else {\n          var filterInput = this.filterInput.toLowerCase();\n          return this.options.filter(function (v) { return (\n            v[this$1.valueKey].toString().toLowerCase().indexOf(filterInput) >= 0 ||\n            v[this$1.labelKey].toString().toLowerCase().indexOf(filterInput) >= 0\n          ); })\n        }\n      } else {\n        return this.options\n      }\n    },\n    groupedOptions: function groupedOptions () {\n      var this$1 = this;\n\n      return this.filteredOptions\n        .map(function (v) { return v.group; })\n        .filter(onlyUnique)\n        .map(function (v) { return ({\n          options: this$1.filteredOptions.filter(function (option) { return option.group === v; }),\n          $group: v\n        }); })\n    },\n    flattenGroupedOptions: function flattenGroupedOptions () {\n      var ref;\n\n      return (ref = []).concat.apply(ref, this.groupedOptions.map(function (v) { return v.options; }))\n    },\n    selectClasses: function selectClasses () {\n      var obj;\n\n      return ( obj = {}, obj[(\"input-\" + (this.size))] = this.size, obj )\n    },\n    selectedIconClasses: function selectedIconClasses () {\n      var obj;\n\n      return ( obj = {}, obj[this.selectedIcon] = true, obj['pull-right'] = true, obj )\n    },\n    selectTextClasses: function selectTextClasses () {\n      return {\n        'text-muted': this.value.length === 0\n      }\n    },\n    labelValue: function labelValue () {\n      var this$1 = this;\n\n      var optionsByValue = this.options.map(function (v) { return v[this$1.valueKey]; });\n      return this.value.map(function (v) {\n        var index = optionsByValue.indexOf(v);\n        return index >= 0 ? this$1.options[index][this$1.labelKey] : v\n      })\n    },\n    selectedText: function selectedText () {\n      if (this.value.length) {\n        var labelValue = this.labelValue;\n        if (this.collapseSelected) {\n          var str = labelValue[0];\n          str += labelValue.length > 1 ? ((this.split) + \"+\" + (labelValue.length - 1)) : '';\n          return str\n        } else {\n          return labelValue.join(this.split)\n        }\n      } else {\n        return this.placeholder || this.t('uiv.multiSelect.placeholder')\n      }\n    },\n    customOptionsVisible: function customOptionsVisible () {\n      return !!this.$slots.option || !!this.$scopedSlots.option\n    }\n  },\n  watch: {\n    showDropdown: function showDropdown (v) {\n      var this$1 = this;\n\n      // clear filter input when dropdown toggles\n      this.filterInput = '';\n      this.currentActive = -1;\n      this.$emit('visible-change', v);\n      if (v && this.filterable && this.filterAutoFocus) {\n        this.$nextTick(function () {\n          this$1.$refs.filterInput.focus();\n        });\n      }\n    }\n  },\n  mounted: function mounted () {\n    this.els = [this.$el];\n  },\n  methods: {\n    goPrevOption: function goPrevOption () {\n      if (!this.showDropdown) {\n        return\n      }\n      this.currentActive > 0 ? this.currentActive-- : this.currentActive = this.flattenGroupedOptions.length - 1;\n    },\n    goNextOption: function goNextOption () {\n      if (!this.showDropdown) {\n        return\n      }\n      this.currentActive < this.flattenGroupedOptions.length - 1 ? this.currentActive++ : this.currentActive = 0;\n    },\n    selectOption: function selectOption () {\n      var index = this.currentActive;\n      var options = this.flattenGroupedOptions;\n      if (!this.showDropdown) {\n        this.showDropdown = true;\n      } else if (index >= 0 && index < options.length) {\n        this.toggle(options[index]);\n      }\n    },\n    itemClasses: function itemClasses (item) {\n      var result = {\n        disabled: item.disabled,\n        active: this.currentActive === this.flattenGroupedOptions.indexOf(item)\n      };\n      if (this.itemSelectedClass) {\n        result[this.itemSelectedClass] = this.isItemSelected(item);\n      }\n      return result\n    },\n    isItemSelected: function isItemSelected (item) {\n      return this.value.indexOf(item[this.valueKey]) >= 0\n    },\n    toggle: function toggle (item) {\n      if (item.disabled) {\n        return\n      }\n      var value = item[this.valueKey];\n      var index = this.value.indexOf(value);\n      if (this.limit === 1) {\n        var newValue = index >= 0 ? [] : [value];\n        this.$emit('input', newValue);\n        this.$emit('change', newValue);\n      } else {\n        if (index >= 0) {\n          var newVal = this.value.slice();\n          newVal.splice(index, 1);\n          this.$emit('input', newVal);\n          this.$emit('change', newVal);\n        } else if (this.limit === 0 || this.value.length < this.limit) {\n          var newVal$1 = this.value.slice();\n          newVal$1.push(value);\n          this.$emit('input', newVal$1);\n          this.$emit('change', newVal$1);\n        } else {\n          this.$emit('limit-exceed');\n        }\n      }\n    },\n    searchClicked: function searchClicked () {\n      this.$emit('search', this.filterInput);\n    }\n  }\n};\n\n/* script */\nvar __vue_script__$e = script$e;\n\n/* template */\nvar __vue_render__$e = function() {\n  var _vm = this;\n  var _h = _vm.$createElement;\n  var _c = _vm._self._c || _h;\n  return _c(\n    \"dropdown\",\n    {\n      ref: \"dropdown\",\n      style: _vm.containerStyles,\n      attrs: {\n        \"not-close-elements\": _vm.els,\n        \"append-to-body\": _vm.appendToBody,\n        disabled: _vm.disabled\n      },\n      nativeOn: {\n        keydown: function($event) {\n          if (\n            !$event.type.indexOf(\"key\") &&\n            _vm._k($event.keyCode, \"esc\", 27, $event.key, [\"Esc\", \"Escape\"])\n          ) {\n            return null\n          }\n          _vm.showDropdown = false;\n        }\n      },\n      model: {\n        value: _vm.showDropdown,\n        callback: function($$v) {\n          _vm.showDropdown = $$v;\n        },\n        expression: \"showDropdown\"\n      }\n    },\n    [\n      _c(\n        \"div\",\n        {\n          staticClass: \"form-control dropdown-toggle clearfix\",\n          class: _vm.selectClasses,\n          attrs: {\n            disabled: _vm.disabled,\n            tabindex: \"0\",\n            \"data-role\": \"trigger\"\n          },\n          on: {\n            focus: function($event) {\n              return _vm.$emit(\"focus\", $event)\n            },\n            blur: function($event) {\n              return _vm.$emit(\"blur\", $event)\n            },\n            keydown: [\n              function($event) {\n                if (\n                  !$event.type.indexOf(\"key\") &&\n                  _vm._k($event.keyCode, \"down\", 40, $event.key, [\n                    \"Down\",\n                    \"ArrowDown\"\n                  ])\n                ) {\n                  return null\n                }\n                $event.preventDefault();\n                $event.stopPropagation();\n                return _vm.goNextOption($event)\n              },\n              function($event) {\n                if (\n                  !$event.type.indexOf(\"key\") &&\n                  _vm._k($event.keyCode, \"up\", 38, $event.key, [\n                    \"Up\",\n                    \"ArrowUp\"\n                  ])\n                ) {\n                  return null\n                }\n                $event.preventDefault();\n                $event.stopPropagation();\n                return _vm.goPrevOption($event)\n              },\n              function($event) {\n                if (\n                  !$event.type.indexOf(\"key\") &&\n                  _vm._k($event.keyCode, \"enter\", 13, $event.key, \"Enter\")\n                ) {\n                  return null\n                }\n                $event.preventDefault();\n                $event.stopPropagation();\n                return _vm.selectOption($event)\n              }\n            ]\n          }\n        },\n        [\n          _c(\n            \"div\",\n            {\n              staticClass: \"pull-right\",\n              staticStyle: {\n                display: \"inline-block\",\n                \"vertical-align\": \"middle\"\n              }\n            },\n            [\n              _c(\"span\", [_vm._v(\" \")]),\n              _vm._v(\" \"),\n              _c(\"span\", { staticClass: \"caret\" })\n            ]\n          ),\n          _vm._v(\" \"),\n          _c(\"div\", {\n            class: _vm.selectTextClasses,\n            staticStyle: {\n              \"overflow-x\": \"hidden\",\n              \"text-overflow\": \"ellipsis\",\n              \"white-space\": \"nowrap\"\n            },\n            domProps: { textContent: _vm._s(_vm.selectedText) }\n          })\n        ]\n      ),\n      _vm._v(\" \"),\n      _c(\n        \"template\",\n        { slot: \"dropdown\" },\n        [\n          _vm.filterable\n            ? _c(\"li\", { staticStyle: { padding: \"4px 8px\" } }, [\n                _c(\"input\", {\n                  directives: [\n                    {\n                      name: \"model\",\n                      rawName: \"v-model\",\n                      value: _vm.filterInput,\n                      expression: \"filterInput\"\n                    }\n                  ],\n                  ref: \"filterInput\",\n                  staticClass: \"form-control input-sm\",\n                  attrs: {\n                    \"aria-label\": \"Filter...\",\n                    type: \"text\",\n                    placeholder:\n                      _vm.filterPlaceholder ||\n                      _vm.t(\"uiv.multiSelect.filterPlaceholder\")\n                  },\n                  domProps: { value: _vm.filterInput },\n                  on: {\n                    keyup: function($event) {\n                      if (\n                        !$event.type.indexOf(\"key\") &&\n                        _vm._k($event.keyCode, \"enter\", 13, $event.key, \"Enter\")\n                      ) {\n                        return null\n                      }\n                      return _vm.searchClicked($event)\n                    },\n                    keydown: [\n                      function($event) {\n                        if (\n                          !$event.type.indexOf(\"key\") &&\n                          _vm._k($event.keyCode, \"down\", 40, $event.key, [\n                            \"Down\",\n                            \"ArrowDown\"\n                          ])\n                        ) {\n                          return null\n                        }\n                        $event.preventDefault();\n                        $event.stopPropagation();\n                        return _vm.goNextOption($event)\n                      },\n                      function($event) {\n                        if (\n                          !$event.type.indexOf(\"key\") &&\n                          _vm._k($event.keyCode, \"up\", 38, $event.key, [\n                            \"Up\",\n                            \"ArrowUp\"\n                          ])\n                        ) {\n                          return null\n                        }\n                        $event.preventDefault();\n                        $event.stopPropagation();\n                        return _vm.goPrevOption($event)\n                      },\n                      function($event) {\n                        if (\n                          !$event.type.indexOf(\"key\") &&\n                          _vm._k(\n                            $event.keyCode,\n                            \"enter\",\n                            13,\n                            $event.key,\n                            \"Enter\"\n                          )\n                        ) {\n                          return null\n                        }\n                        $event.preventDefault();\n                        $event.stopPropagation();\n                        return _vm.selectOption($event)\n                      }\n                    ],\n                    input: function($event) {\n                      if ($event.target.composing) {\n                        return\n                      }\n                      _vm.filterInput = $event.target.value;\n                    }\n                  }\n                })\n              ])\n            : _vm._e(),\n          _vm._v(\" \"),\n          _vm._l(_vm.groupedOptions, function(item) {\n            return [\n              item.$group\n                ? _c(\"li\", {\n                    staticClass: \"dropdown-header\",\n                    domProps: { textContent: _vm._s(item.$group) }\n                  })\n                : _vm._e(),\n              _vm._v(\" \"),\n              _vm._l(item.options, function(_item) {\n                return [\n                  _c(\n                    \"li\",\n                    {\n                      class: _vm.itemClasses(_item),\n                      staticStyle: { outline: \"0\" },\n                      on: {\n                        keydown: [\n                          function($event) {\n                            if (\n                              !$event.type.indexOf(\"key\") &&\n                              _vm._k($event.keyCode, \"down\", 40, $event.key, [\n                                \"Down\",\n                                \"ArrowDown\"\n                              ])\n                            ) {\n                              return null\n                            }\n                            $event.preventDefault();\n                            $event.stopPropagation();\n                            return _vm.goNextOption($event)\n                          },\n                          function($event) {\n                            if (\n                              !$event.type.indexOf(\"key\") &&\n                              _vm._k($event.keyCode, \"up\", 38, $event.key, [\n                                \"Up\",\n                                \"ArrowUp\"\n                              ])\n                            ) {\n                              return null\n                            }\n                            $event.preventDefault();\n                            $event.stopPropagation();\n                            return _vm.goPrevOption($event)\n                          },\n                          function($event) {\n                            if (\n                              !$event.type.indexOf(\"key\") &&\n                              _vm._k(\n                                $event.keyCode,\n                                \"enter\",\n                                13,\n                                $event.key,\n                                \"Enter\"\n                              )\n                            ) {\n                              return null\n                            }\n                            $event.preventDefault();\n                            $event.stopPropagation();\n                            return _vm.selectOption($event)\n                          }\n                        ],\n                        click: function($event) {\n                          $event.stopPropagation();\n                          return _vm.toggle(_item)\n                        },\n                        mouseenter: function($event) {\n                          _vm.currentActive = -1;\n                        }\n                      }\n                    },\n                    [\n                      _vm.customOptionsVisible\n                        ? _c(\n                            \"a\",\n                            {\n                              staticStyle: { outline: \"0\" },\n                              attrs: { role: \"button\" }\n                            },\n                            [\n                              _vm._t(\"option\", null, { item: _item }),\n                              _vm._v(\" \"),\n                              _vm.selectedIcon && _vm.isItemSelected(_item)\n                                ? _c(\"span\", { class: _vm.selectedIconClasses })\n                                : _vm._e()\n                            ],\n                            2\n                          )\n                        : _vm.isItemSelected(_item)\n                        ? _c(\n                            \"a\",\n                            {\n                              staticStyle: { outline: \"0\" },\n                              attrs: { role: \"button\" }\n                            },\n                            [\n                              _c(\"b\", [_vm._v(_vm._s(_item[_vm.labelKey]))]),\n                              _vm._v(\" \"),\n                              _vm.selectedIcon\n                                ? _c(\"span\", { class: _vm.selectedIconClasses })\n                                : _vm._e()\n                            ]\n                          )\n                        : _c(\n                            \"a\",\n                            {\n                              staticStyle: { outline: \"0\" },\n                              attrs: { role: \"button\" }\n                            },\n                            [_c(\"span\", [_vm._v(_vm._s(_item[_vm.labelKey]))])]\n                          )\n                    ]\n                  )\n                ]\n              })\n            ]\n          })\n        ],\n        2\n      )\n    ],\n    2\n  )\n};\nvar __vue_staticRenderFns__$e = [];\n__vue_render__$e._withStripped = true;\n\n  /* style */\n  var __vue_inject_styles__$e = undefined;\n  /* scoped */\n  var __vue_scope_id__$e = undefined;\n  /* module identifier */\n  var __vue_module_identifier__$e = undefined;\n  /* functional template */\n  var __vue_is_functional_template__$e = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  var __vue_component__$e = /*#__PURE__*/normalizeComponent(\n    { render: __vue_render__$e, staticRenderFns: __vue_staticRenderFns__$e },\n    __vue_inject_styles__$e,\n    __vue_script__$e,\n    __vue_scope_id__$e,\n    __vue_is_functional_template__$e,\n    __vue_module_identifier__$e,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nvar script$f = {\n  components: { Collapse: Collapse },\n  props: {\n    value: Boolean,\n    fluid: {\n      type: Boolean,\n      default: true\n    },\n    fixedTop: Boolean,\n    fixedBottom: Boolean,\n    staticTop: Boolean,\n    inverse: Boolean\n  },\n  data: function data () {\n    return {\n      show: false\n    }\n  },\n  computed: {\n    navClasses: function navClasses () {\n      return {\n        navbar: true,\n        'navbar-default': !this.inverse,\n        'navbar-inverse': this.inverse,\n        'navbar-static-top': this.staticTop,\n        'navbar-fixed-bottom': this.fixedBottom,\n        'navbar-fixed-top': this.fixedTop\n      }\n    }\n  },\n  mounted: function mounted () {\n    this.show = !!this.value;\n  },\n  watch: {\n    value: function value (v) {\n      this.show = v;\n    }\n  },\n  methods: {\n    toggle: function toggle () {\n      this.show = !this.show;\n      this.$emit('input', this.show);\n    }\n  }\n};\n\n/* script */\nvar __vue_script__$f = script$f;\n\n/* template */\nvar __vue_render__$f = function() {\n  var _vm = this;\n  var _h = _vm.$createElement;\n  var _c = _vm._self._c || _h;\n  return _c(\"nav\", { class: _vm.navClasses }, [\n    _c(\n      \"div\",\n      { class: _vm.fluid ? \"container-fluid\" : \"container\" },\n      [\n        _c(\n          \"div\",\n          { staticClass: \"navbar-header\" },\n          [\n            _vm._t(\"collapse-btn\", [\n              _c(\n                \"button\",\n                {\n                  staticClass: \"navbar-toggle collapsed\",\n                  attrs: { type: \"button\" },\n                  on: { click: _vm.toggle }\n                },\n                [\n                  _c(\"span\", { staticClass: \"sr-only\" }, [\n                    _vm._v(\"Toggle navigation\")\n                  ]),\n                  _vm._v(\" \"),\n                  _c(\"span\", { staticClass: \"icon-bar\" }),\n                  _vm._v(\" \"),\n                  _c(\"span\", { staticClass: \"icon-bar\" }),\n                  _vm._v(\" \"),\n                  _c(\"span\", { staticClass: \"icon-bar\" })\n                ]\n              )\n            ]),\n            _vm._v(\" \"),\n            _vm._t(\"brand\")\n          ],\n          2\n        ),\n        _vm._v(\" \"),\n        _vm._t(\"default\"),\n        _vm._v(\" \"),\n        _c(\n          \"collapse\",\n          {\n            staticClass: \"navbar-collapse\",\n            model: {\n              value: _vm.show,\n              callback: function($$v) {\n                _vm.show = $$v;\n              },\n              expression: \"show\"\n            }\n          },\n          [_vm._t(\"collapse\")],\n          2\n        )\n      ],\n      2\n    )\n  ])\n};\nvar __vue_staticRenderFns__$f = [];\n__vue_render__$f._withStripped = true;\n\n  /* style */\n  var __vue_inject_styles__$f = undefined;\n  /* scoped */\n  var __vue_scope_id__$f = undefined;\n  /* module identifier */\n  var __vue_module_identifier__$f = undefined;\n  /* functional template */\n  var __vue_is_functional_template__$f = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  var __vue_component__$f = /*#__PURE__*/normalizeComponent(\n    { render: __vue_render__$f, staticRenderFns: __vue_staticRenderFns__$f },\n    __vue_inject_styles__$f,\n    __vue_script__$f,\n    __vue_scope_id__$f,\n    __vue_is_functional_template__$f,\n    __vue_module_identifier__$f,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nvar NavbarNav = {\n  functional: true,\n  render: function render (h, ref) {\n    var children = ref.children;\n    var data = ref.data;\n    var props = ref.props;\n\n    return h(\n      'ul',\n      a(data, {\n        class: {\n          nav: true,\n          'navbar-nav': true,\n          'navbar-left': props.left,\n          'navbar-right': props.right\n        }\n      }),\n      children\n    )\n  },\n  props: {\n    left: Boolean,\n    right: Boolean\n  }\n};\n\nvar NavbarForm = {\n  functional: true,\n  render: function render (h, ref) {\n    var children = ref.children;\n    var data = ref.data;\n    var props = ref.props;\n\n    return h(\n      'form',\n      a(data, {\n        class: {\n          'navbar-form': true,\n          'navbar-left': props.left,\n          'navbar-right': props.right\n        }\n      }),\n      children\n    )\n  },\n  props: {\n    left: Boolean,\n    right: Boolean\n  }\n};\n\nvar NavbarText = {\n  functional: true,\n  render: function render (h, ref) {\n    var children = ref.children;\n    var data = ref.data;\n    var props = ref.props;\n\n    return h(\n      'p',\n      a(data, {\n        class: {\n          'navbar-text': true,\n          'navbar-left': props.left,\n          'navbar-right': props.right\n        }\n      }),\n      children\n    )\n  },\n  props: {\n    left: Boolean,\n    right: Boolean\n  }\n};\n\nvar components = /*#__PURE__*/Object.freeze({\n  __proto__: null,\n  Carousel: __vue_component__,\n  Slide: __vue_component__$1,\n  Collapse: Collapse,\n  Dropdown: Dropdown,\n  Modal: __vue_component__$2,\n  Tab: __vue_component__$3,\n  Tabs: __vue_component__$4,\n  DatePicker: __vue_component__$8,\n  Affix: __vue_component__$9,\n  Alert: __vue_component__$a,\n  Pagination: __vue_component__$b,\n  Tooltip: Tooltip,\n  Popover: Popover,\n  TimePicker: __vue_component__$c,\n  Typeahead: __vue_component__$d,\n  ProgressBar: ProgressBar,\n  ProgressBarStack: ProgressBarStack,\n  Breadcrumbs: Breadcrumbs,\n  BreadcrumbItem: BreadcrumbItem,\n  Btn: Btn,\n  BtnGroup: BtnGroup,\n  BtnToolbar: BtnToolbar,\n  MultiSelect: __vue_component__$e,\n  Navbar: __vue_component__$f,\n  NavbarNav: NavbarNav,\n  NavbarForm: NavbarForm,\n  NavbarText: NavbarText\n});\n\nvar INSTANCE = '_uiv_tooltip_instance';\n\nvar bind$1 = function (el, binding) {\n  // console.log('bind')\n  unbind$1(el);\n  var Constructor = Vue.extend(Tooltip);\n  var vm = new Constructor({\n    propsData: {\n      target: el,\n      appendTo: binding.arg && '#' + binding.arg,\n      text: typeof binding.value === 'string' ? (binding.value && binding.value.toString()) : (binding.value && binding.value.text && binding.value.text.toString()),\n      positionBy: binding.value && binding.value.positionBy && binding.value.positionBy.toString(),\n      viewport: binding.value && binding.value.viewport && binding.value.viewport.toString(),\n      customClass: binding.value && binding.value.customClass && binding.value.customClass.toString(),\n      showDelay: binding.value && binding.value.showDelay,\n      hideDelay: binding.value && binding.value.hideDelay\n    }\n  });\n  var options = [];\n  for (var key in binding.modifiers) {\n    if (hasOwnProperty(binding.modifiers, key) && binding.modifiers[key]) {\n      options.push(key);\n    }\n  }\n  options.forEach(function (option) {\n    if (/(top)|(left)|(right)|(bottom)/.test(option)) {\n      vm.placement = option;\n    } else if (/(hover)|(focus)|(click)/.test(option)) {\n      vm.trigger = option;\n    } else if (/unenterable/.test(option)) {\n      vm.enterable = false;\n    }\n  });\n  vm.$mount();\n  el[INSTANCE] = vm;\n};\n\nvar unbind$1 = function (el) {\n  // console.log('unbind')\n  var vm = el[INSTANCE];\n  if (vm) {\n    vm.$destroy();\n  }\n  delete el[INSTANCE];\n};\n\nvar update$1 = function (el, binding) {\n  // console.log('update')\n  if (binding.value !== binding.oldValue) {\n    bind$1(el, binding);\n  }\n};\n\nvar tooltip = { bind: bind$1, unbind: unbind$1, update: update$1 };\n\nvar INSTANCE$1 = '_uiv_popover_instance';\n\nvar bind$2 = function (el, binding) {\n  // console.log('bind')\n  unbind$2(el);\n  var Constructor = Vue.extend(Popover);\n  var vm = new Constructor({\n    propsData: {\n      target: el,\n      appendTo: binding.arg && '#' + binding.arg,\n      title: binding.value && binding.value.title && binding.value.title.toString(),\n      positionBy: binding.value && binding.value.positionBy && binding.value.positionBy.toString(),\n      content: binding.value && binding.value.content && binding.value.content.toString(),\n      viewport: binding.value && binding.value.viewport && binding.value.viewport.toString(),\n      customClass: binding.value && binding.value.customClass && binding.value.customClass.toString()\n    }\n  });\n  var options = [];\n  for (var key in binding.modifiers) {\n    if (hasOwnProperty(binding.modifiers, key) && binding.modifiers[key]) {\n      options.push(key);\n    }\n  }\n  options.forEach(function (option) {\n    if (/(top)|(left)|(right)|(bottom)/.test(option)) {\n      vm.placement = option;\n    } else if (/(hover)|(focus)|(click)/.test(option)) {\n      vm.trigger = option;\n    } else if (/unenterable/.test(option)) {\n      vm.enterable = false;\n    }\n  });\n  vm.$mount();\n  el[INSTANCE$1] = vm;\n};\n\nvar unbind$2 = function (el) {\n  // console.log('unbind')\n  var vm = el[INSTANCE$1];\n  if (vm) {\n    vm.$destroy();\n  }\n  delete el[INSTANCE$1];\n};\n\nvar update$2 = function (el, binding) {\n  // console.log('update')\n  if (binding.value !== binding.oldValue) {\n    bind$2(el, binding);\n  }\n};\n\nvar popover = { bind: bind$2, unbind: unbind$2, update: update$2 };\n\nfunction ScrollSpy (element, target, options) {\n  if ( target === void 0 ) target = 'body';\n  if ( options === void 0 ) options = {};\n\n  this.el = element;\n  this.opts = assign({}, ScrollSpy.DEFAULTS, options);\n  this.opts.target = target;\n  if (target === 'body') {\n    this.scrollElement = window;\n  } else {\n    this.scrollElement = document.querySelector((\"[id=\" + target + \"]\"));\n  }\n  this.selector = 'li > a';\n  this.offsets = [];\n  this.targets = [];\n  this.activeTarget = null;\n  this.scrollHeight = 0;\n  if (this.scrollElement) {\n    this.refresh();\n    this.process();\n  }\n}\n\nScrollSpy.DEFAULTS = {\n  offset: 10,\n  callback: function (ele) { return 0; }\n};\n\nScrollSpy.prototype.getScrollHeight = function () {\n  return this.scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight)\n};\n\nScrollSpy.prototype.refresh = function () {\n  var this$1 = this;\n\n  this.offsets = [];\n  this.targets = [];\n  this.scrollHeight = this.getScrollHeight();\n  var list = nodeListToArray(this.el.querySelectorAll(this.selector));\n  var isWindow = this.scrollElement === window;\n  list\n    .map(function (ele) {\n      var href = ele.getAttribute('href');\n      if (/^#./.test(href)) {\n        var rootEl = isWindow ? document : this$1.scrollElement;\n        var hrefEl = rootEl.querySelector((\"[id='\" + (href.slice(1)) + \"']\"));\n        var offset = isWindow ? hrefEl.getBoundingClientRect().top : hrefEl.offsetTop;\n        return [offset, href]\n      } else {\n        return null\n      }\n    })\n    .filter(function (item) { return item; })\n    .sort(function (a, b) { return a[0] - b[0]; })\n    .forEach(function (item) {\n      this$1.offsets.push(item[0]);\n      this$1.targets.push(item[1]);\n    });\n  // console.log(this.offsets, this.targets)\n};\n\nScrollSpy.prototype.process = function () {\n  var isWindow = this.scrollElement === window;\n  var scrollTop = (isWindow ? window.pageYOffset : this.scrollElement.scrollTop) + this.opts.offset;\n  var scrollHeight = this.getScrollHeight();\n  var scrollElementHeight = isWindow ? getViewportSize().height : this.scrollElement.getBoundingClientRect().height;\n  var maxScroll = this.opts.offset + scrollHeight - scrollElementHeight;\n  var offsets = this.offsets;\n  var targets = this.targets;\n  var activeTarget = this.activeTarget;\n  var i;\n  if (this.scrollHeight !== scrollHeight) {\n    this.refresh();\n  }\n  if (scrollTop >= maxScroll) {\n    return activeTarget !== (i = targets[targets.length - 1]) && this.activate(i)\n  }\n  if (activeTarget && scrollTop < offsets[0]) {\n    this.activeTarget = null;\n    return this.clear()\n  }\n  for (i = offsets.length; i--;) {\n    activeTarget !== targets[i] &&\n    scrollTop >= offsets[i] &&\n    (offsets[i + 1] === undefined || scrollTop < offsets[i + 1]) &&\n    this.activate(targets[i]);\n  }\n};\n\nScrollSpy.prototype.activate = function (target) {\n  this.activeTarget = target;\n  this.clear();\n  var selector = this.selector +\n    '[data-target=\"' + target + '\"],' +\n    this.selector + '[href=\"' + target + '\"]';\n  var activeCallback = this.opts.callback;\n  var active = nodeListToArray(this.el.querySelectorAll(selector));\n  active.forEach(function (ele) {\n    getParents(ele, 'li')\n      .forEach(function (item) {\n        addClass(item, 'active');\n        activeCallback(item);\n      });\n    if (getParents(ele, '.dropdown-menu').length) {\n      addClass(getClosest(ele, 'li.dropdown'), 'active');\n    }\n  });\n};\n\nScrollSpy.prototype.clear = function () {\n  var this$1 = this;\n\n  var list = nodeListToArray(this.el.querySelectorAll(this.selector));\n  list.forEach(function (ele) {\n    getParents(ele, '.active', this$1.opts.target).forEach(function (item) {\n      removeClass(item, 'active');\n    });\n  });\n};\n\nvar INSTANCE$2 = '_uiv_scrollspy_instance';\nvar events$1 = [EVENTS.RESIZE, EVENTS.SCROLL];\n\nvar bind$3 = function (el, binding) {\n  // console.log('bind')\n  unbind$3(el);\n};\n\nvar inserted = function (el, binding) {\n  // console.log('inserted')\n  var scrollSpy = new ScrollSpy(el, binding.arg, binding.value);\n  if (scrollSpy.scrollElement) {\n    scrollSpy.handler = function () {\n      scrollSpy.process();\n    };\n    events$1.forEach(function (event) {\n      on(scrollSpy.scrollElement, event, scrollSpy.handler);\n    });\n  }\n  el[INSTANCE$2] = scrollSpy;\n};\n\nvar unbind$3 = function (el) {\n  // console.log('unbind')\n  var instance = el[INSTANCE$2];\n  if (instance && instance.scrollElement) {\n    events$1.forEach(function (event) {\n      off(instance.scrollElement, event, instance.handler);\n    });\n    delete el[INSTANCE$2];\n  }\n};\n\nvar update$3 = function (el, binding) {\n  // console.log('update')\n  var isArgUpdated = binding.arg !== binding.oldArg;\n  var isValueUpdated = binding.value !== binding.oldValue;\n  if (isArgUpdated || isValueUpdated) {\n    bind$3(el);\n    inserted(el, binding);\n  }\n};\n\nvar scrollspy = { bind: bind$3, unbind: unbind$3, update: update$3, inserted: inserted };\n\nvar directives = /*#__PURE__*/Object.freeze({\n  __proto__: null,\n  tooltip: tooltip,\n  popover: popover,\n  scrollspy: scrollspy\n});\n\nvar TYPES = {\n  ALERT: 0,\n  CONFIRM: 1,\n  PROMPT: 2\n};\n\nvar script$g = {\n  mixins: [Local],\n  components: { Modal: __vue_component__$2, Btn: Btn },\n  props: {\n    backdrop: null,\n    title: String,\n    content: String,\n    html: {\n      type: Boolean,\n      default: false\n    },\n    okText: String,\n    okType: {\n      type: String,\n      default: 'primary'\n    },\n    cancelText: String,\n    cancelType: {\n      type: String,\n      default: 'default'\n    },\n    type: {\n      type: Number,\n      default: TYPES.ALERT\n    },\n    size: {\n      type: String,\n      default: 'sm'\n    },\n    cb: {\n      type: Function,\n      required: true\n    },\n    validator: {\n      type: Function,\n      default: function () { return null; }\n    },\n    customClass: null,\n    defaultValue: String,\n    inputType: {\n      type: String,\n      default: 'text'\n    },\n    autoFocus: {\n      type: String,\n      default: 'ok'\n    },\n    reverseButtons: {\n      type: Boolean,\n      default: false\n    }\n  },\n  data: function data () {\n    return {\n      TYPES: TYPES,\n      show: false,\n      input: '',\n      dirty: false\n    }\n  },\n  mounted: function mounted () {\n    if (this.defaultValue) {\n      this.input = this.defaultValue;\n    }\n  },\n  computed: {\n    closeOnBackdropClick: function closeOnBackdropClick () {\n      // use backdrop prop if exist\n      // otherwise, only not available if render as alert\n      return isExist(this.backdrop) ? Boolean(this.backdrop) : (this.type !== TYPES.ALERT)\n    },\n    inputError: function inputError () {\n      return this.validator(this.input)\n    },\n    inputNotValid: function inputNotValid () {\n      return this.dirty && this.inputError\n    },\n    okBtnText: function okBtnText () {\n      return this.okText || this.t('uiv.modal.ok')\n    },\n    cancelBtnText: function cancelBtnText () {\n      return this.cancelText || this.t('uiv.modal.cancel')\n    }\n  },\n  methods: {\n    toggle: function toggle (show, msg) {\n      this.$refs.modal.toggle(show, msg);\n    },\n    validate: function validate () {\n      this.dirty = true;\n      if (!isExist(this.inputError)) {\n        this.toggle(false, { value: this.input });\n      }\n    }\n  }\n};\n\n/* script */\nvar __vue_script__$g = script$g;\n\n/* template */\nvar __vue_render__$g = function() {\n  var _vm = this;\n  var _h = _vm.$createElement;\n  var _c = _vm._self._c || _h;\n  return _c(\n    \"modal\",\n    {\n      ref: \"modal\",\n      class: _vm.customClass,\n      attrs: {\n        \"auto-focus\": \"\",\n        size: _vm.size,\n        title: _vm.title,\n        header: !!_vm.title,\n        backdrop: _vm.closeOnBackdropClick,\n        \"cancel-text\": _vm.cancelText,\n        \"ok-text\": _vm.okText\n      },\n      on: { hide: _vm.cb },\n      model: {\n        value: _vm.show,\n        callback: function($$v) {\n          _vm.show = $$v;\n        },\n        expression: \"show\"\n      }\n    },\n    [\n      _vm.html\n        ? _c(\"div\", { domProps: { innerHTML: _vm._s(_vm.content) } })\n        : _c(\"p\", [_vm._v(_vm._s(_vm.content))]),\n      _vm._v(\" \"),\n      _vm.type === _vm.TYPES.PROMPT\n        ? _c(\"div\", [\n            _c(\n              \"div\",\n              {\n                staticClass: \"form-group\",\n                class: { \"has-error\": _vm.inputNotValid }\n              },\n              [\n                _vm.inputType === \"checkbox\"\n                  ? _c(\"input\", {\n                      directives: [\n                        {\n                          name: \"model\",\n                          rawName: \"v-model\",\n                          value: _vm.input,\n                          expression: \"input\"\n                        }\n                      ],\n                      ref: \"input\",\n                      staticClass: \"form-control\",\n                      attrs: {\n                        required: \"\",\n                        \"data-action\": \"auto-focus\",\n                        type: \"checkbox\"\n                      },\n                      domProps: {\n                        checked: Array.isArray(_vm.input)\n                          ? _vm._i(_vm.input, null) > -1\n                          : _vm.input\n                      },\n                      on: {\n                        change: [\n                          function($event) {\n                            var $$a = _vm.input,\n                              $$el = $event.target,\n                              $$c = $$el.checked ? true : false;\n                            if (Array.isArray($$a)) {\n                              var $$v = null,\n                                $$i = _vm._i($$a, $$v);\n                              if ($$el.checked) {\n                                $$i < 0 && (_vm.input = $$a.concat([$$v]));\n                              } else {\n                                $$i > -1 &&\n                                  (_vm.input = $$a\n                                    .slice(0, $$i)\n                                    .concat($$a.slice($$i + 1)));\n                              }\n                            } else {\n                              _vm.input = $$c;\n                            }\n                          },\n                          function($event) {\n                            _vm.dirty = true;\n                          }\n                        ],\n                        keyup: function($event) {\n                          if (\n                            !$event.type.indexOf(\"key\") &&\n                            _vm._k(\n                              $event.keyCode,\n                              \"enter\",\n                              13,\n                              $event.key,\n                              \"Enter\"\n                            )\n                          ) {\n                            return null\n                          }\n                          return _vm.validate($event)\n                        }\n                      }\n                    })\n                  : _vm.inputType === \"radio\"\n                  ? _c(\"input\", {\n                      directives: [\n                        {\n                          name: \"model\",\n                          rawName: \"v-model\",\n                          value: _vm.input,\n                          expression: \"input\"\n                        }\n                      ],\n                      ref: \"input\",\n                      staticClass: \"form-control\",\n                      attrs: {\n                        required: \"\",\n                        \"data-action\": \"auto-focus\",\n                        type: \"radio\"\n                      },\n                      domProps: { checked: _vm._q(_vm.input, null) },\n                      on: {\n                        change: [\n                          function($event) {\n                            _vm.input = null;\n                          },\n                          function($event) {\n                            _vm.dirty = true;\n                          }\n                        ],\n                        keyup: function($event) {\n                          if (\n                            !$event.type.indexOf(\"key\") &&\n                            _vm._k(\n                              $event.keyCode,\n                              \"enter\",\n                              13,\n                              $event.key,\n                              \"Enter\"\n                            )\n                          ) {\n                            return null\n                          }\n                          return _vm.validate($event)\n                        }\n                      }\n                    })\n                  : _c(\"input\", {\n                      directives: [\n                        {\n                          name: \"model\",\n                          rawName: \"v-model\",\n                          value: _vm.input,\n                          expression: \"input\"\n                        }\n                      ],\n                      ref: \"input\",\n                      staticClass: \"form-control\",\n                      attrs: {\n                        required: \"\",\n                        \"data-action\": \"auto-focus\",\n                        type: _vm.inputType\n                      },\n                      domProps: { value: _vm.input },\n                      on: {\n                        change: function($event) {\n                          _vm.dirty = true;\n                        },\n                        keyup: function($event) {\n                          if (\n                            !$event.type.indexOf(\"key\") &&\n                            _vm._k(\n                              $event.keyCode,\n                              \"enter\",\n                              13,\n                              $event.key,\n                              \"Enter\"\n                            )\n                          ) {\n                            return null\n                          }\n                          return _vm.validate($event)\n                        },\n                        input: function($event) {\n                          if ($event.target.composing) {\n                            return\n                          }\n                          _vm.input = $event.target.value;\n                        }\n                      }\n                    }),\n                _vm._v(\" \"),\n                _c(\n                  \"span\",\n                  {\n                    directives: [\n                      {\n                        name: \"show\",\n                        rawName: \"v-show\",\n                        value: _vm.inputNotValid,\n                        expression: \"inputNotValid\"\n                      }\n                    ],\n                    staticClass: \"help-block\"\n                  },\n                  [_vm._v(_vm._s(_vm.inputError))]\n                )\n              ]\n            )\n          ])\n        : _vm._e(),\n      _vm._v(\" \"),\n      _vm.type === _vm.TYPES.ALERT\n        ? _c(\n            \"template\",\n            { slot: \"footer\" },\n            [\n              _c(\"btn\", {\n                attrs: {\n                  type: _vm.okType,\n                  \"data-action\": _vm.autoFocus === \"ok\" ? \"auto-focus\" : \"\"\n                },\n                domProps: { textContent: _vm._s(_vm.okBtnText) },\n                on: {\n                  click: function($event) {\n                    return _vm.toggle(false, \"ok\")\n                  }\n                }\n              })\n            ],\n            1\n          )\n        : _c(\n            \"template\",\n            { slot: \"footer\" },\n            [\n              _vm.reverseButtons\n                ? [\n                    _vm.type === _vm.TYPES.CONFIRM\n                      ? _c(\"btn\", {\n                          attrs: {\n                            type: _vm.okType,\n                            \"data-action\":\n                              _vm.autoFocus === \"ok\" ? \"auto-focus\" : \"\"\n                          },\n                          domProps: { textContent: _vm._s(_vm.okBtnText) },\n                          on: {\n                            click: function($event) {\n                              return _vm.toggle(false, \"ok\")\n                            }\n                          }\n                        })\n                      : _c(\"btn\", {\n                          attrs: { type: _vm.okType },\n                          domProps: { textContent: _vm._s(_vm.okBtnText) },\n                          on: { click: _vm.validate }\n                        }),\n                    _vm._v(\" \"),\n                    _c(\"btn\", {\n                      attrs: {\n                        type: _vm.cancelType,\n                        \"data-action\":\n                          _vm.autoFocus === \"cancel\" ? \"auto-focus\" : \"\"\n                      },\n                      domProps: { textContent: _vm._s(_vm.cancelBtnText) },\n                      on: {\n                        click: function($event) {\n                          return _vm.toggle(false, \"cancel\")\n                        }\n                      }\n                    })\n                  ]\n                : [\n                    _c(\"btn\", {\n                      attrs: {\n                        type: _vm.cancelType,\n                        \"data-action\":\n                          _vm.autoFocus === \"cancel\" ? \"auto-focus\" : \"\"\n                      },\n                      domProps: { textContent: _vm._s(_vm.cancelBtnText) },\n                      on: {\n                        click: function($event) {\n                          return _vm.toggle(false, \"cancel\")\n                        }\n                      }\n                    }),\n                    _vm._v(\" \"),\n                    _vm.type === _vm.TYPES.CONFIRM\n                      ? _c(\"btn\", {\n                          attrs: {\n                            type: _vm.okType,\n                            \"data-action\":\n                              _vm.autoFocus === \"ok\" ? \"auto-focus\" : \"\"\n                          },\n                          domProps: { textContent: _vm._s(_vm.okBtnText) },\n                          on: {\n                            click: function($event) {\n                              return _vm.toggle(false, \"ok\")\n                            }\n                          }\n                        })\n                      : _c(\"btn\", {\n                          attrs: { type: _vm.okType },\n                          domProps: { textContent: _vm._s(_vm.okBtnText) },\n                          on: { click: _vm.validate }\n                        })\n                  ]\n            ],\n            2\n          )\n    ],\n    2\n  )\n};\nvar __vue_staticRenderFns__$g = [];\n__vue_render__$g._withStripped = true;\n\n  /* style */\n  var __vue_inject_styles__$g = undefined;\n  /* scoped */\n  var __vue_scope_id__$g = undefined;\n  /* module identifier */\n  var __vue_module_identifier__$g = undefined;\n  /* functional template */\n  var __vue_is_functional_template__$g = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  var __vue_component__$g = /*#__PURE__*/normalizeComponent(\n    { render: __vue_render__$g, staticRenderFns: __vue_staticRenderFns__$g },\n    __vue_inject_styles__$g,\n    __vue_script__$g,\n    __vue_scope_id__$g,\n    __vue_is_functional_template__$g,\n    __vue_module_identifier__$g,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nvar queue = [];\n\nvar destroy = function (instance) {\n  // console.log('destroyModal')\n  removeFromDom(instance.$el);\n  instance.$destroy();\n  spliceIfExist(queue, instance);\n};\n\n// handel cancel or ok for confirm & prompt\nvar shallResolve = function (type, msg) {\n  if (type === TYPES.CONFIRM) {\n    // is confirm\n    return msg === 'ok'\n  } else {\n    // is prompt\n    return isExist(msg) && isString(msg.value)\n  }\n};\n\nvar init = function (type, options, cb, resolve, reject) {\n  if ( resolve === void 0 ) resolve = null;\n  if ( reject === void 0 ) reject = null;\n\n  var i18n = this.$i18n;\n  var instance = new Vue({\n    extends: __vue_component__$g,\n    i18n: i18n,\n    propsData: assign({}, { type: type }, options, {\n      cb: function cb$1 (msg) {\n        destroy(instance);\n        if (isFunction(cb)) {\n          if (type === TYPES.CONFIRM) {\n            shallResolve(type, msg) ? cb(null, msg) : cb(msg);\n          } else if (type === TYPES.PROMPT) {\n            shallResolve(type, msg) ? cb(null, msg.value) : cb(msg);\n          } else {\n            cb(msg);\n          }\n        } else if (resolve && reject) {\n          if (type === TYPES.CONFIRM) {\n            shallResolve(type, msg) ? resolve(msg) : reject(msg);\n          } else if (type === TYPES.PROMPT) {\n            shallResolve(type, msg) ? resolve(msg.value) : reject(msg);\n          } else {\n            resolve(msg);\n          }\n        }\n      }\n    })\n  });\n  instance.$mount();\n  document.body.appendChild(instance.$el);\n  instance.show = true;\n  queue.push(instance);\n};\n\n// eslint-disable-next-line default-param-last\nvar initModal = function (type, options, cb) {\n  var this$1 = this;\n  if ( options === void 0 ) options = {};\n\n  if (isPromiseSupported()) {\n    return new Promise(function (resolve, reject) {\n      init.apply(this$1, [type, options, cb, resolve, reject]);\n    })\n  } else {\n    init.apply(this, [type, options, cb]);\n  }\n};\n\nvar alert = function (options, cb) {\n  return initModal.apply(this, [TYPES.ALERT, options, cb])\n};\n\nvar confirm = function (options, cb) {\n  return initModal.apply(this, [TYPES.CONFIRM, options, cb])\n};\n\nvar prompt = function (options, cb) {\n  return initModal.apply(this, [TYPES.PROMPT, options, cb])\n};\n\nvar MessageBox = { alert: alert, confirm: confirm, prompt: prompt };\n\nvar TYPES$1 = {\n  SUCCESS: 'success',\n  INFO: 'info',\n  DANGER: 'danger',\n  WARNING: 'warning'\n};\n\nvar PLACEMENTS$1 = {\n  TOP_LEFT: 'top-left',\n  TOP_RIGHT: 'top-right',\n  BOTTOM_LEFT: 'bottom-left',\n  BOTTOM_RIGHT: 'bottom-right'\n};\n\nvar IN_CLASS$1 = 'in';\nvar ICON = 'glyphicon';\nvar WIDTH = 300;\nvar TRANSITION_DURATION = 300;\n\nvar script$h = {\n  components: { Alert: __vue_component__$a },\n  props: {\n    title: String,\n    content: String,\n    html: {\n      type: Boolean,\n      default: false\n    },\n    duration: {\n      type: Number,\n      default: 5000\n    },\n    dismissible: {\n      type: Boolean,\n      default: true\n    },\n    type: String,\n    placement: String,\n    icon: String,\n    customClass: null,\n    cb: {\n      type: Function,\n      required: true\n    },\n    queue: {\n      type: Array,\n      required: true\n    },\n    offsetY: {\n      type: Number,\n      default: 15\n    },\n    offsetX: {\n      type: Number,\n      default: 15\n    },\n    offset: {\n      type: Number,\n      default: 15\n    }\n  },\n  data: function data () {\n    return {\n      height: 0,\n      top: 0,\n      horizontal: this.placement === PLACEMENTS$1.TOP_LEFT || this.placement === PLACEMENTS$1.BOTTOM_LEFT ? 'left' : 'right',\n      vertical: this.placement === PLACEMENTS$1.TOP_LEFT || this.placement === PLACEMENTS$1.TOP_RIGHT ? 'top' : 'bottom'\n    }\n  },\n  created: function created () {\n    // get prev notifications total height in the queue\n    this.top = this.getTotalHeightOfQueue(this.queue);\n  },\n  mounted: function mounted () {\n    var this$1 = this;\n\n    var el = this.$el;\n    el.style[this.vertical] = this.top + 'px';\n    this.$nextTick(function () {\n      el.style[this$1.horizontal] = \"-\" + WIDTH + \"px\";\n      this$1.height = el.offsetHeight;\n      el.style[this$1.horizontal] = (this$1.offsetX) + \"px\";\n      addClass(el, IN_CLASS$1);\n    });\n  },\n  computed: {\n    styles: function styles () {\n      var obj;\n\n      var queue = this.queue;\n      var thisIndex = queue.indexOf(this);\n      return ( obj = {\n        position: 'fixed'\n      }, obj[this.vertical] = ((this.getTotalHeightOfQueue(queue, thisIndex)) + \"px\"), obj.width = (WIDTH + \"px\"), obj.transition = (\"all \" + (TRANSITION_DURATION / 1000) + \"s ease-in-out\"), obj )\n    },\n    icons: function icons () {\n      if (isString(this.icon)) {\n        return this.icon\n      }\n      switch (this.type) {\n        case TYPES$1.INFO:\n        case TYPES$1.WARNING:\n          return (ICON + \" \" + ICON + \"-info-sign\")\n        case TYPES$1.SUCCESS:\n          return (ICON + \" \" + ICON + \"-ok-sign\")\n        case TYPES$1.DANGER:\n          return (ICON + \" \" + ICON + \"-remove-sign\")\n        default:\n          return null\n      }\n    }\n  },\n  methods: {\n    getTotalHeightOfQueue: function getTotalHeightOfQueue (queue, lastIndex) {\n      if ( lastIndex === void 0 ) lastIndex = queue.length;\n\n      var totalHeight = this.offsetY;\n      for (var i = 0; i < lastIndex; i++) {\n        totalHeight += queue[i].height + this.offset;\n      }\n      return totalHeight\n    },\n    onDismissed: function onDismissed () {\n      removeClass(this.$el, IN_CLASS$1);\n      setTimeout(this.cb, TRANSITION_DURATION);\n    }\n  }\n};\n\n/* script */\nvar __vue_script__$h = script$h;\n\n/* template */\nvar __vue_render__$h = function() {\n  var _vm = this;\n  var _h = _vm.$createElement;\n  var _c = _vm._self._c || _h;\n  return _c(\n    \"alert\",\n    {\n      staticClass: \"fade\",\n      class: _vm.customClass,\n      style: _vm.styles,\n      attrs: {\n        type: _vm.type,\n        duration: _vm.duration,\n        dismissible: _vm.dismissible\n      },\n      on: { dismissed: _vm.onDismissed }\n    },\n    [\n      _c(\"div\", { staticClass: \"media\", staticStyle: { margin: \"0\" } }, [\n        _vm.icons\n          ? _c(\"div\", { staticClass: \"media-left\" }, [\n              _c(\"span\", {\n                class: _vm.icons,\n                staticStyle: { \"font-size\": \"1.5em\" }\n              })\n            ])\n          : _vm._e(),\n        _vm._v(\" \"),\n        _c(\"div\", { staticClass: \"media-body\" }, [\n          _vm.title\n            ? _c(\"div\", { staticClass: \"media-heading\" }, [\n                _c(\"b\", [_vm._v(_vm._s(_vm.title))])\n              ])\n            : _vm._e(),\n          _vm._v(\" \"),\n          _vm.html\n            ? _c(\"div\", { domProps: { innerHTML: _vm._s(_vm.content) } })\n            : _c(\"div\", [_vm._v(_vm._s(_vm.content))])\n        ])\n      ])\n    ]\n  )\n};\nvar __vue_staticRenderFns__$h = [];\n__vue_render__$h._withStripped = true;\n\n  /* style */\n  var __vue_inject_styles__$h = undefined;\n  /* scoped */\n  var __vue_scope_id__$h = undefined;\n  /* module identifier */\n  var __vue_module_identifier__$h = undefined;\n  /* functional template */\n  var __vue_is_functional_template__$h = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  var __vue_component__$h = /*#__PURE__*/normalizeComponent(\n    { render: __vue_render__$h, staticRenderFns: __vue_staticRenderFns__$h },\n    __vue_inject_styles__$h,\n    __vue_script__$h,\n    __vue_scope_id__$h,\n    __vue_is_functional_template__$h,\n    __vue_module_identifier__$h,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nvar queues = {};\nqueues[PLACEMENTS$1.TOP_LEFT] = [];\nqueues[PLACEMENTS$1.TOP_RIGHT] = [];\nqueues[PLACEMENTS$1.BOTTOM_LEFT] = [];\nqueues[PLACEMENTS$1.BOTTOM_RIGHT] = [];\n\nvar destroy$1 = function (queue, instance) {\n  // console.log('destroyNotification')\n  removeFromDom(instance.$el);\n  instance.$destroy();\n  spliceIfExist(queue, instance);\n};\n\nvar init$1 = function (options, cb, resolve, reject) {\n  if ( resolve === void 0 ) resolve = null;\n  if ( reject === void 0 ) reject = null;\n\n  var placement = options.placement;\n  var queue = queues[placement];\n  // check if placement is valid\n  if (!isExist(queue)) {\n    return\n  }\n  /* istanbul ignore else */\n  // `error` alias of `danger`\n  if (options.type === 'error') {\n    options.type = 'danger';\n  }\n  var instance = new Vue({\n    extends: __vue_component__$h,\n    propsData: assign({}, { queue: queue, placement: placement }, options, {\n      cb: function cb$1 (msg) {\n        destroy$1(queue, instance);\n        if (isFunction(cb)) {\n          cb(msg);\n        } else if (resolve && reject) {\n          resolve(msg);\n        }\n      }\n    })\n  });\n  instance.$mount();\n  document.body.appendChild(instance.$el);\n  queue.push(instance);\n};\n\n// eslint-disable-next-line default-param-last\nvar _notify = function (options, cb) {\n  if ( options === void 0 ) options = {};\n\n  // simplify usage: pass string as option.content\n  if (isString(options)) {\n    options = {\n      content: options\n    };\n  }\n  // set default placement as top-right\n  if (!isExist(options.placement)) {\n    options.placement = PLACEMENTS$1.TOP_RIGHT;\n  }\n  if (isPromiseSupported()) {\n    return new Promise(function (resolve, reject) {\n      init$1(options, cb, resolve, reject);\n    })\n  } else {\n    init$1(options, cb);\n  }\n};\n\nfunction _notify2 (type, args) {\n  if (isString(args)) {\n    _notify({\n      content: args,\n      type: type\n    });\n  } else {\n    _notify(assign({}, args, {\n      type: type\n    }));\n  }\n}\n\nvar notify = Object.defineProperties(_notify, {\n  success: {\n    configurable: false,\n    writable: false,\n    value: function value (args) {\n      _notify2('success', args);\n    }\n  },\n  info: {\n    configurable: false,\n    writable: false,\n    value: function value (args) {\n      _notify2('info', args);\n    }\n  },\n  warning: {\n    configurable: false,\n    writable: false,\n    value: function value (args) {\n      _notify2('warning', args);\n    }\n  },\n  danger: {\n    configurable: false,\n    writable: false,\n    value: function value (args) {\n      _notify2('danger', args);\n    }\n  },\n  error: {\n    configurable: false,\n    writable: false,\n    value: function value (args) {\n      _notify2('danger', args);\n    }\n  },\n  dismissAll: {\n    configurable: false,\n    writable: false,\n    value: function value () {\n      for (var key in queues) {\n        /* istanbul ignore else */\n        if (hasOwnProperty(queues, key)) {\n          queues[key].forEach(function (instance) {\n            instance.onDismissed();\n          });\n        }\n      }\n    }\n  }\n});\n\nvar Notification = { notify: notify };\n\nvar services = /*#__PURE__*/Object.freeze({\n  __proto__: null,\n  MessageBox: MessageBox,\n  Notification: Notification\n});\n\nvar install = function (Vue, options) {\n  if ( options === void 0 ) options = {};\n\n  // Setup language, en-US for default\n  locale.use(options.locale);\n  locale.i18n(options.i18n);\n  // Register components\n  Object.keys(components).forEach(function (key) {\n    var _key = options.prefix ? options.prefix + key : key;\n    Vue.component(_key, components[key]);\n  });\n  // Register directives\n  Object.keys(directives).forEach(function (key) {\n    var _key = options.prefix ? options.prefix + '-' + key : key;\n    Vue.directive(_key, directives[key]);\n  });\n  // Register services\n  Object.keys(services).forEach(function (key) {\n    var service = services[key];\n    Object.keys(service).forEach(function (serviceKey) {\n      var _key = options.prefix ? options.prefix + '_' + serviceKey : serviceKey;\n      Vue.prototype['$' + _key] = service[serviceKey];\n    });\n  });\n};\n\nexport { __vue_component__$9 as Affix, __vue_component__$a as Alert, BreadcrumbItem, Breadcrumbs, Btn, BtnGroup, BtnToolbar, __vue_component__ as Carousel, Collapse, __vue_component__$8 as DatePicker, Dropdown, MessageBox, __vue_component__$2 as Modal, __vue_component__$e as MultiSelect, __vue_component__$f as Navbar, NavbarForm, NavbarNav, NavbarText, Notification, __vue_component__$b as Pagination, Popover, ProgressBar, ProgressBarStack, __vue_component__$1 as Slide, __vue_component__$3 as Tab, __vue_component__$4 as Tabs, __vue_component__$c as TimePicker, Tooltip, __vue_component__$d as Typeahead, install, popover, scrollspy, tooltip };\n//# sourceMappingURL=uiv.esm.js.map\n","/*\n * bootstrap.js\n * Copyright (c) 2020 james@firefly-iii.org\n *\n * This file is part of Firefly III (https://github.com/firefly-iii).\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program.  If not, see \n  \n    \n      \n         \n     \n  
\n \n\n\n","import mod from \"-!../../../vue-loader/lib/index.js??vue-loader-options!./VueTypeaheadBootstrapList.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../vue-loader/lib/index.js??vue-loader-options!./VueTypeaheadBootstrapList.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./VueTypeaheadBootstrapList.vue?vue&type=template&id=e64f5270&\"\nimport script from \"./VueTypeaheadBootstrapList.vue?vue&type=script&lang=js&\"\nexport * from \"./VueTypeaheadBootstrapList.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"suggestionList\",staticClass:\"list-group shadow\"},_vm._l((_vm.matchedItems),function(item,id){return _c('vue-typeahead-bootstrap-list-item',_vm._g({key:id,attrs:{\"active\":_vm.isListItemActive(id),\"id\":(_vm.isListItemActive(id)) ? (\"selected-option-\" + _vm.vbtUniqueId) : false,\"data\":item.data,\"html-text\":_vm.highlight(item.text),\"role\":\"option\",\"aria-selected\":(_vm.isListItemActive(id)) ? 'true' : 'false',\"screen-reader-text\":item.text,\"disabled\":_vm.isDisabledItem(item),\"background-variant\":_vm.backgroundVariant,\"background-variant-resolver\":_vm.backgroundVariantResolver,\"text-variant\":_vm.textVariant},nativeOn:{\"click\":function($event){return _vm.handleHit(item, $event)}},scopedSlots:_vm._u([{key:\"suggestion\",fn:function(ref){\nvar data = ref.data;\nvar htmlText = ref.htmlText;\nreturn (_vm.$scopedSlots.suggestion)?[_vm._t(\"suggestion\",null,null,{ data: data, htmlText: htmlText })]:undefined}}],null,true)},_vm.$listeners))}),1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../vue-loader/lib/index.js??vue-loader-options!./VueTypeaheadBootstrap.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../vue-loader/lib/index.js??vue-loader-options!./VueTypeaheadBootstrap.vue?vue&type=script&lang=js&\"","\n   0) ? 'true' : 'false'\"\n  >\n    
\n      
\n        \n          {{ prepend }} \n         \n      
\n      
\n      
\n        \n          {{ append }} \n         \n      
\n    
\n    
 0\"\n      :query=\"inputValue\"\n      :data=\"formattedData\"\n      :background-variant=\"backgroundVariant\"\n      :background-variant-resolver=\"backgroundVariantResolver\"\n      :text-variant=\"textVariant\"\n      :maxMatches=\"maxMatches\"\n      :minMatchingChars=\"minMatchingChars\"\n      :disableSort=\"disableSort\"\n      :showOnFocus=\"showOnFocus\"\n      :showAllResults=\"showAllResults\"\n      @hit=\"handleHit\"\n      @listItemBlur=\"handleChildBlur\"\n      :highlightClass='highlightClass'\n      :disabledValues=\"disabledValues\"\n      :vbtUniqueId=\"id\"\n      role=\"listbox\"\n    >\n      \n      \n         \n      \n     \n  
 \n\n\n\n\n","import { render, staticRenderFns } from \"./VueTypeaheadBootstrap.vue?vue&type=template&id=dbe69e32&scoped=true&\"\nimport script from \"./VueTypeaheadBootstrap.vue?vue&type=script&lang=js&\"\nexport * from \"./VueTypeaheadBootstrap.vue?vue&type=script&lang=js&\"\nimport style0 from \"./VueTypeaheadBootstrap.vue?vue&type=style&index=0&id=dbe69e32&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"dbe69e32\",\n  null\n  \n)\n\nexport default component.exports","var baseIsNative = require('./_baseIsNative'),\n    getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n  var value = getValue(object, key);\n  return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/*!\n * vue-i18n v8.22.4 \n * (c) 2021 kazuya kawaguchi\n * Released under the MIT License.\n */\n/*  */\n\n/**\n * constants\n */\n\nvar numberFormatKeys = [\n  'compactDisplay',\n  'currency',\n  'currencyDisplay',\n  'currencySign',\n  'localeMatcher',\n  'notation',\n  'numberingSystem',\n  'signDisplay',\n  'style',\n  'unit',\n  'unitDisplay',\n  'useGrouping',\n  'minimumIntegerDigits',\n  'minimumFractionDigits',\n  'maximumFractionDigits',\n  'minimumSignificantDigits',\n  'maximumSignificantDigits'\n];\n\n/**\n * utilities\n */\n\nfunction warn (msg, err) {\n  if (typeof console !== 'undefined') {\n    console.warn('[vue-i18n] ' + msg);\n    /* istanbul ignore if */\n    if (err) {\n      console.warn(err.stack);\n    }\n  }\n}\n\nfunction error (msg, err) {\n  if (typeof console !== 'undefined') {\n    console.error('[vue-i18n] ' + msg);\n    /* istanbul ignore if */\n    if (err) {\n      console.error(err.stack);\n    }\n  }\n}\n\nvar isArray = Array.isArray;\n\nfunction isObject (obj) {\n  return obj !== null && typeof obj === 'object'\n}\n\nfunction isBoolean (val) {\n  return typeof val === 'boolean'\n}\n\nfunction isString (val) {\n  return typeof val === 'string'\n}\n\nvar toString = Object.prototype.toString;\nvar OBJECT_STRING = '[object Object]';\nfunction isPlainObject (obj) {\n  return toString.call(obj) === OBJECT_STRING\n}\n\nfunction isNull (val) {\n  return val === null || val === undefined\n}\n\nfunction isFunction (val) {\n  return typeof val === 'function'\n}\n\nfunction parseArgs () {\n  var args = [], len = arguments.length;\n  while ( len-- ) args[ len ] = arguments[ len ];\n\n  var locale = null;\n  var params = null;\n  if (args.length === 1) {\n    if (isObject(args[0]) || isArray(args[0])) {\n      params = args[0];\n    } else if (typeof args[0] === 'string') {\n      locale = args[0];\n    }\n  } else if (args.length === 2) {\n    if (typeof args[0] === 'string') {\n      locale = args[0];\n    }\n    /* istanbul ignore if */\n    if (isObject(args[1]) || isArray(args[1])) {\n      params = args[1];\n    }\n  }\n\n  return { locale: locale, params: params }\n}\n\nfunction looseClone (obj) {\n  return JSON.parse(JSON.stringify(obj))\n}\n\nfunction 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\nfunction includes (arr, item) {\n  return !!~arr.indexOf(item)\n}\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction hasOwn (obj, key) {\n  return hasOwnProperty.call(obj, key)\n}\n\nfunction merge (target) {\n  var arguments$1 = arguments;\n\n  var output = Object(target);\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments$1[i];\n    if (source !== undefined && source !== null) {\n      var key = (void 0);\n      for (key in source) {\n        if (hasOwn(source, key)) {\n          if (isObject(source[key])) {\n            output[key] = merge(output[key], source[key]);\n          } else {\n            output[key] = source[key];\n          }\n        }\n      }\n    }\n  }\n  return output\n}\n\nfunction looseEqual (a, b) {\n  if (a === b) { return true }\n  var isObjectA = isObject(a);\n  var isObjectB = isObject(b);\n  if (isObjectA && isObjectB) {\n    try {\n      var isArrayA = isArray(a);\n      var isArrayB = isArray(b);\n      if (isArrayA && isArrayB) {\n        return a.length === b.length && a.every(function (e, i) {\n          return looseEqual(e, b[i])\n        })\n      } else if (!isArrayA && !isArrayB) {\n        var keysA = Object.keys(a);\n        var keysB = Object.keys(b);\n        return keysA.length === keysB.length && keysA.every(function (key) {\n          return looseEqual(a[key], b[key])\n        })\n      } else {\n        /* istanbul ignore next */\n        return false\n      }\n    } catch (e) {\n      /* istanbul ignore next */\n      return false\n    }\n  } else if (!isObjectA && !isObjectB) {\n    return String(a) === String(b)\n  } else {\n    return false\n  }\n}\n\n/**\n * Sanitizes html special characters from input strings. For mitigating risk of XSS attacks.\n * @param rawText The raw input from the user that should be escaped.\n */\nfunction escapeHtml(rawText) {\n  return rawText\n    .replace(//g, '>')\n    .replace(/\"/g, '"')\n    .replace(/'/g, ''')\n}\n\n/**\n * Escapes html tags and special symbols from all provided params which were returned from parseArgs().params.\n * This method performs an in-place operation on the params object.\n *\n * @param {any} params Parameters as provided from `parseArgs().params`.\n *                     May be either an array of strings or a string->any map.\n *\n * @returns The manipulated `params` object.\n */\nfunction escapeParams(params) {\n  if(params != null) {\n    Object.keys(params).forEach(function (key) {\n      if(typeof(params[key]) == 'string') {\n        params[key] = escapeHtml(params[key]);\n      }\n    });\n  }\n  return params\n}\n\n/*  */\n\nfunction extend (Vue) {\n  if (!Vue.prototype.hasOwnProperty('$i18n')) {\n    // $FlowFixMe\n    Object.defineProperty(Vue.prototype, '$i18n', {\n      get: function get () { return this._i18n }\n    });\n  }\n\n  Vue.prototype.$t = function (key) {\n    var values = [], len = arguments.length - 1;\n    while ( len-- > 0 ) values[ len ] = arguments[ len + 1 ];\n\n    var i18n = this.$i18n;\n    return i18n._t.apply(i18n, [ key, i18n.locale, i18n._getMessages(), this ].concat( values ))\n  };\n\n  Vue.prototype.$tc = function (key, choice) {\n    var values = [], len = arguments.length - 2;\n    while ( len-- > 0 ) values[ len ] = arguments[ len + 2 ];\n\n    var i18n = this.$i18n;\n    return i18n._tc.apply(i18n, [ key, i18n.locale, i18n._getMessages(), this, choice ].concat( values ))\n  };\n\n  Vue.prototype.$te = function (key, locale) {\n    var i18n = this.$i18n;\n    return i18n._te(key, i18n.locale, i18n._getMessages(), locale)\n  };\n\n  Vue.prototype.$d = function (value) {\n    var ref;\n\n    var args = [], len = arguments.length - 1;\n    while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n    return (ref = this.$i18n).d.apply(ref, [ value ].concat( args ))\n  };\n\n  Vue.prototype.$n = function (value) {\n    var ref;\n\n    var args = [], len = arguments.length - 1;\n    while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n    return (ref = this.$i18n).n.apply(ref, [ value ].concat( args ))\n  };\n}\n\n/*  */\n\nvar mixin = {\n  beforeCreate: function beforeCreate () {\n    var options = this.$options;\n    options.i18n = options.i18n || (options.__i18n ? {} : null);\n\n    if (options.i18n) {\n      if (options.i18n instanceof VueI18n) {\n        // init locale messages via custom blocks\n        if (options.__i18n) {\n          try {\n            var localeMessages = options.i18n && options.i18n.messages ? options.i18n.messages : {};\n            options.__i18n.forEach(function (resource) {\n              localeMessages = merge(localeMessages, JSON.parse(resource));\n            });\n            Object.keys(localeMessages).forEach(function (locale) {\n              options.i18n.mergeLocaleMessage(locale, localeMessages[locale]);\n            });\n          } catch (e) {\n            if (process.env.NODE_ENV !== 'production') {\n              error(\"Cannot parse locale messages via custom blocks.\", e);\n            }\n          }\n        }\n        this._i18n = options.i18n;\n        this._i18nWatcher = this._i18n.watchI18nData();\n      } else if (isPlainObject(options.i18n)) {\n        var rootI18n = this.$root && this.$root.$i18n && this.$root.$i18n instanceof VueI18n\n          ? this.$root.$i18n\n          : null;\n        // component local i18n\n        if (rootI18n) {\n          options.i18n.root = this.$root;\n          options.i18n.formatter = rootI18n.formatter;\n          options.i18n.fallbackLocale = rootI18n.fallbackLocale;\n          options.i18n.formatFallbackMessages = rootI18n.formatFallbackMessages;\n          options.i18n.silentTranslationWarn = rootI18n.silentTranslationWarn;\n          options.i18n.silentFallbackWarn = rootI18n.silentFallbackWarn;\n          options.i18n.pluralizationRules = rootI18n.pluralizationRules;\n          options.i18n.preserveDirectiveContent = rootI18n.preserveDirectiveContent;\n        }\n\n        // init locale messages via custom blocks\n        if (options.__i18n) {\n          try {\n            var localeMessages$1 = options.i18n && options.i18n.messages ? options.i18n.messages : {};\n            options.__i18n.forEach(function (resource) {\n              localeMessages$1 = merge(localeMessages$1, JSON.parse(resource));\n            });\n            options.i18n.messages = localeMessages$1;\n          } catch (e) {\n            if (process.env.NODE_ENV !== 'production') {\n              warn(\"Cannot parse locale messages via custom blocks.\", e);\n            }\n          }\n        }\n\n        var ref = options.i18n;\n        var sharedMessages = ref.sharedMessages;\n        if (sharedMessages && isPlainObject(sharedMessages)) {\n          options.i18n.messages = merge(options.i18n.messages, sharedMessages);\n        }\n\n        this._i18n = new VueI18n(options.i18n);\n        this._i18nWatcher = this._i18n.watchI18nData();\n\n        if (options.i18n.sync === undefined || !!options.i18n.sync) {\n          this._localeWatcher = this.$i18n.watchLocale();\n        }\n\n        if (rootI18n) {\n          rootI18n.onComponentInstanceCreated(this._i18n);\n        }\n      } else {\n        if (process.env.NODE_ENV !== 'production') {\n          warn(\"Cannot be interpreted 'i18n' option.\");\n        }\n      }\n    } else if (this.$root && this.$root.$i18n && this.$root.$i18n instanceof VueI18n) {\n      // root i18n\n      this._i18n = this.$root.$i18n;\n    } else if (options.parent && options.parent.$i18n && options.parent.$i18n instanceof VueI18n) {\n      // parent i18n\n      this._i18n = options.parent.$i18n;\n    }\n  },\n\n  beforeMount: function beforeMount () {\n    var options = this.$options;\n    options.i18n = options.i18n || (options.__i18n ? {} : null);\n\n    if (options.i18n) {\n      if (options.i18n instanceof VueI18n) {\n        // init locale messages via custom blocks\n        this._i18n.subscribeDataChanging(this);\n        this._subscribing = true;\n      } else if (isPlainObject(options.i18n)) {\n        this._i18n.subscribeDataChanging(this);\n        this._subscribing = true;\n      } else {\n        if (process.env.NODE_ENV !== 'production') {\n          warn(\"Cannot be interpreted 'i18n' option.\");\n        }\n      }\n    } else if (this.$root && this.$root.$i18n && this.$root.$i18n instanceof VueI18n) {\n      this._i18n.subscribeDataChanging(this);\n      this._subscribing = true;\n    } else if (options.parent && options.parent.$i18n && options.parent.$i18n instanceof VueI18n) {\n      this._i18n.subscribeDataChanging(this);\n      this._subscribing = true;\n    }\n  },\n\n  beforeDestroy: function beforeDestroy () {\n    if (!this._i18n) { return }\n\n    var self = this;\n    this.$nextTick(function () {\n      if (self._subscribing) {\n        self._i18n.unsubscribeDataChanging(self);\n        delete self._subscribing;\n      }\n\n      if (self._i18nWatcher) {\n        self._i18nWatcher();\n        self._i18n.destroyVM();\n        delete self._i18nWatcher;\n      }\n\n      if (self._localeWatcher) {\n        self._localeWatcher();\n        delete self._localeWatcher;\n      }\n    });\n  }\n};\n\n/*  */\n\nvar interpolationComponent = {\n  name: 'i18n',\n  functional: true,\n  props: {\n    tag: {\n      type: [String, Boolean, Object],\n      default: 'span'\n    },\n    path: {\n      type: String,\n      required: true\n    },\n    locale: {\n      type: String\n    },\n    places: {\n      type: [Array, Object]\n    }\n  },\n  render: function render (h, ref) {\n    var data = ref.data;\n    var parent = ref.parent;\n    var props = ref.props;\n    var slots = ref.slots;\n\n    var $i18n = parent.$i18n;\n    if (!$i18n) {\n      if (process.env.NODE_ENV !== 'production') {\n        warn('Cannot find VueI18n instance!');\n      }\n      return\n    }\n\n    var path = props.path;\n    var locale = props.locale;\n    var places = props.places;\n    var params = slots();\n    var children = $i18n.i(\n      path,\n      locale,\n      onlyHasDefaultPlace(params) || places\n        ? useLegacyPlaces(params.default, places)\n        : params\n    );\n\n    var tag = (!!props.tag && props.tag !== true) || props.tag === false ? props.tag : 'span';\n    return tag ? h(tag, data, children) : children\n  }\n};\n\nfunction onlyHasDefaultPlace (params) {\n  var prop;\n  for (prop in params) {\n    if (prop !== 'default') { return false }\n  }\n  return Boolean(prop)\n}\n\nfunction useLegacyPlaces (children, places) {\n  var params = places ? createParamsFromPlaces(places) : {};\n\n  if (!children) { return params }\n\n  // Filter empty text nodes\n  children = children.filter(function (child) {\n    return child.tag || child.text.trim() !== ''\n  });\n\n  var everyPlace = children.every(vnodeHasPlaceAttribute);\n  if (process.env.NODE_ENV !== 'production' && everyPlace) {\n    warn('`place` attribute is deprecated in next major version. Please switch to Vue slots.');\n  }\n\n  return children.reduce(\n    everyPlace ? assignChildPlace : assignChildIndex,\n    params\n  )\n}\n\nfunction createParamsFromPlaces (places) {\n  if (process.env.NODE_ENV !== 'production') {\n    warn('`places` prop is deprecated in next major version. Please switch to Vue slots.');\n  }\n\n  return Array.isArray(places)\n    ? places.reduce(assignChildIndex, {})\n    : Object.assign({}, places)\n}\n\nfunction assignChildPlace (params, child) {\n  if (child.data && child.data.attrs && child.data.attrs.place) {\n    params[child.data.attrs.place] = child;\n  }\n  return params\n}\n\nfunction assignChildIndex (params, child, index) {\n  params[index] = child;\n  return params\n}\n\nfunction vnodeHasPlaceAttribute (vnode) {\n  return Boolean(vnode.data && vnode.data.attrs && vnode.data.attrs.place)\n}\n\n/*  */\n\nvar numberComponent = {\n  name: 'i18n-n',\n  functional: true,\n  props: {\n    tag: {\n      type: [String, Boolean, Object],\n      default: 'span'\n    },\n    value: {\n      type: Number,\n      required: true\n    },\n    format: {\n      type: [String, Object]\n    },\n    locale: {\n      type: String\n    }\n  },\n  render: function render (h, ref) {\n    var props = ref.props;\n    var parent = ref.parent;\n    var data = ref.data;\n\n    var i18n = parent.$i18n;\n\n    if (!i18n) {\n      if (process.env.NODE_ENV !== 'production') {\n        warn('Cannot find VueI18n instance!');\n      }\n      return null\n    }\n\n    var key = null;\n    var options = null;\n\n    if (isString(props.format)) {\n      key = props.format;\n    } else if (isObject(props.format)) {\n      if (props.format.key) {\n        key = props.format.key;\n      }\n\n      // Filter out number format options only\n      options = Object.keys(props.format).reduce(function (acc, prop) {\n        var obj;\n\n        if (includes(numberFormatKeys, prop)) {\n          return Object.assign({}, acc, ( obj = {}, obj[prop] = props.format[prop], obj ))\n        }\n        return acc\n      }, null);\n    }\n\n    var locale = props.locale || i18n.locale;\n    var parts = i18n._ntp(props.value, locale, key, options);\n\n    var values = parts.map(function (part, index) {\n      var obj;\n\n      var slot = data.scopedSlots && data.scopedSlots[part.type];\n      return slot ? slot(( obj = {}, obj[part.type] = part.value, obj.index = index, obj.parts = parts, obj )) : part.value\n    });\n\n    var tag = (!!props.tag && props.tag !== true) || props.tag === false ? props.tag : 'span';\n    return tag\n      ? h(tag, {\n        attrs: data.attrs,\n        'class': data['class'],\n        staticClass: data.staticClass\n      }, values)\n      : values\n  }\n};\n\n/*  */\n\nfunction bind (el, binding, vnode) {\n  if (!assert(el, vnode)) { return }\n\n  t(el, binding, vnode);\n}\n\nfunction update (el, binding, vnode, oldVNode) {\n  if (!assert(el, vnode)) { return }\n\n  var i18n = vnode.context.$i18n;\n  if (localeEqual(el, vnode) &&\n    (looseEqual(binding.value, binding.oldValue) &&\n     looseEqual(el._localeMessage, i18n.getLocaleMessage(i18n.locale)))) { return }\n\n  t(el, binding, vnode);\n}\n\nfunction unbind (el, binding, vnode, oldVNode) {\n  var vm = vnode.context;\n  if (!vm) {\n    warn('Vue instance does not exists in VNode context');\n    return\n  }\n\n  var i18n = vnode.context.$i18n || {};\n  if (!binding.modifiers.preserve && !i18n.preserveDirectiveContent) {\n    el.textContent = '';\n  }\n  el._vt = undefined;\n  delete el['_vt'];\n  el._locale = undefined;\n  delete el['_locale'];\n  el._localeMessage = undefined;\n  delete el['_localeMessage'];\n}\n\nfunction assert (el, vnode) {\n  var vm = vnode.context;\n  if (!vm) {\n    warn('Vue instance does not exists in VNode context');\n    return false\n  }\n\n  if (!vm.$i18n) {\n    warn('VueI18n instance does not exists in Vue instance');\n    return false\n  }\n\n  return true\n}\n\nfunction localeEqual (el, vnode) {\n  var vm = vnode.context;\n  return el._locale === vm.$i18n.locale\n}\n\nfunction t (el, binding, vnode) {\n  var ref$1, ref$2;\n\n  var value = binding.value;\n\n  var ref = parseValue(value);\n  var path = ref.path;\n  var locale = ref.locale;\n  var args = ref.args;\n  var choice = ref.choice;\n  if (!path && !locale && !args) {\n    warn('value type not supported');\n    return\n  }\n\n  if (!path) {\n    warn('`path` is required in v-t directive');\n    return\n  }\n\n  var vm = vnode.context;\n  if (choice != null) {\n    el._vt = el.textContent = (ref$1 = vm.$i18n).tc.apply(ref$1, [ path, choice ].concat( makeParams(locale, args) ));\n  } else {\n    el._vt = el.textContent = (ref$2 = vm.$i18n).t.apply(ref$2, [ path ].concat( makeParams(locale, args) ));\n  }\n  el._locale = vm.$i18n.locale;\n  el._localeMessage = vm.$i18n.getLocaleMessage(vm.$i18n.locale);\n}\n\nfunction parseValue (value) {\n  var path;\n  var locale;\n  var args;\n  var choice;\n\n  if (isString(value)) {\n    path = value;\n  } else if (isPlainObject(value)) {\n    path = value.path;\n    locale = value.locale;\n    args = value.args;\n    choice = value.choice;\n  }\n\n  return { path: path, locale: locale, args: args, choice: choice }\n}\n\nfunction makeParams (locale, args) {\n  var params = [];\n\n  locale && params.push(locale);\n  if (args && (Array.isArray(args) || isPlainObject(args))) {\n    params.push(args);\n  }\n\n  return params\n}\n\nvar Vue;\n\nfunction install (_Vue) {\n  /* istanbul ignore if */\n  if (process.env.NODE_ENV !== 'production' && install.installed && _Vue === Vue) {\n    warn('already installed.');\n    return\n  }\n  install.installed = true;\n\n  Vue = _Vue;\n\n  var version = (Vue.version && Number(Vue.version.split('.')[0])) || -1;\n  /* istanbul ignore if */\n  if (process.env.NODE_ENV !== 'production' && version < 2) {\n    warn((\"vue-i18n (\" + (install.version) + \") need to use Vue 2.0 or later (Vue: \" + (Vue.version) + \").\"));\n    return\n  }\n\n  extend(Vue);\n  Vue.mixin(mixin);\n  Vue.directive('t', { bind: bind, update: update, unbind: unbind });\n  Vue.component(interpolationComponent.name, interpolationComponent);\n  Vue.component(numberComponent.name, numberComponent);\n\n  // use simple mergeStrategies to prevent i18n instance lose '__proto__'\n  var strats = Vue.config.optionMergeStrategies;\n  strats.i18n = function (parentVal, childVal) {\n    return childVal === undefined\n      ? parentVal\n      : childVal\n  };\n}\n\n/*  */\n\nvar BaseFormatter = function BaseFormatter () {\n  this._caches = Object.create(null);\n};\n\nBaseFormatter.prototype.interpolate = function interpolate (message, values) {\n  if (!values) {\n    return [message]\n  }\n  var tokens = this._caches[message];\n  if (!tokens) {\n    tokens = parse(message);\n    this._caches[message] = tokens;\n  }\n  return compile(tokens, values)\n};\n\n\n\nvar RE_TOKEN_LIST_VALUE = /^(?:\\d)+/;\nvar RE_TOKEN_NAMED_VALUE = /^(?:\\w)+/;\n\nfunction parse (format) {\n  var tokens = [];\n  var position = 0;\n\n  var text = '';\n  while (position < format.length) {\n    var char = format[position++];\n    if (char === '{') {\n      if (text) {\n        tokens.push({ type: 'text', value: text });\n      }\n\n      text = '';\n      var sub = '';\n      char = format[position++];\n      while (char !== undefined && char !== '}') {\n        sub += char;\n        char = format[position++];\n      }\n      var isClosed = char === '}';\n\n      var type = RE_TOKEN_LIST_VALUE.test(sub)\n        ? 'list'\n        : isClosed && RE_TOKEN_NAMED_VALUE.test(sub)\n          ? 'named'\n          : 'unknown';\n      tokens.push({ value: sub, type: type });\n    } else if (char === '%') {\n      // when found rails i18n syntax, skip text capture\n      if (format[(position)] !== '{') {\n        text += char;\n      }\n    } else {\n      text += char;\n    }\n  }\n\n  text && tokens.push({ type: 'text', value: text });\n\n  return tokens\n}\n\nfunction compile (tokens, values) {\n  var compiled = [];\n  var index = 0;\n\n  var mode = Array.isArray(values)\n    ? 'list'\n    : isObject(values)\n      ? 'named'\n      : 'unknown';\n  if (mode === 'unknown') { return compiled }\n\n  while (index < tokens.length) {\n    var token = tokens[index];\n    switch (token.type) {\n      case 'text':\n        compiled.push(token.value);\n        break\n      case 'list':\n        compiled.push(values[parseInt(token.value, 10)]);\n        break\n      case 'named':\n        if (mode === 'named') {\n          compiled.push((values)[token.value]);\n        } else {\n          if (process.env.NODE_ENV !== 'production') {\n            warn((\"Type of token '\" + (token.type) + \"' and format of value '\" + mode + \"' don't match!\"));\n          }\n        }\n        break\n      case 'unknown':\n        if (process.env.NODE_ENV !== 'production') {\n          warn(\"Detect 'unknown' type of token!\");\n        }\n        break\n    }\n    index++;\n  }\n\n  return compiled\n}\n\n/*  */\n\n/**\n *  Path parser\n *  - Inspired:\n *    Vue.js Path parser\n */\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  '0': [IN_IDENT, APPEND],\n  'number': [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 * Check if an expression is a literal value.\n */\n\nvar literalValueRE = /^\\s?(?:true|false|-?[\\d.]+|'[^']*'|\"[^\"]*\")\\s?$/;\nfunction isLiteral (exp) {\n  return literalValueRE.test(exp)\n}\n\n/**\n * Strip quotes from a string\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)\n    ? str.slice(1, -1)\n    : str\n}\n\n/**\n * Determine the type of a character in a keypath.\n */\n\nfunction getPathCharType (ch) {\n  if (ch === undefined || ch === null) { return 'eof' }\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      return ch\n\n    case 0x5F: // _\n    case 0x24: // $\n    case 0x2D: // -\n      return 'ident'\n\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:  // Paragraph Separator\n      return 'ws'\n  }\n\n  return 'ident'\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\nfunction formatSubPath (path) {\n  var trimmed = path.trim();\n  // invalid leading 0\n  if (path.charAt(0) === '0' && isNaN(path)) { 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\nfunction parse$1 (path) {\n  var keys = [];\n  var index = -1;\n  var mode = BEFORE_PATH;\n  var subPathDepth = 0;\n  var c;\n  var key;\n  var newChar;\n  var type;\n  var transition;\n  var action;\n  var typeMap;\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      if (key === undefined) { return false }\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 === \"'\") ||\n      (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\n        ? c\n        : newChar;\n      if (action() === false) {\n        return\n      }\n    }\n\n    if (mode === AFTER_PATH) {\n      return keys\n    }\n  }\n}\n\n\n\n\n\nvar I18nPath = function I18nPath () {\n  this._cache = Object.create(null);\n};\n\n/**\n * External parse that check for a cache hit first\n */\nI18nPath.prototype.parsePath = function parsePath (path) {\n  var hit = this._cache[path];\n  if (!hit) {\n    hit = parse$1(path);\n    if (hit) {\n      this._cache[path] = hit;\n    }\n  }\n  return hit || []\n};\n\n/**\n * Get path value from path string\n */\nI18nPath.prototype.getPathValue = function getPathValue (obj, path) {\n  if (!isObject(obj)) { return null }\n\n  var paths = this.parsePath(path);\n  if (paths.length === 0) {\n    return null\n  } else {\n    var length = paths.length;\n    var last = obj;\n    var i = 0;\n    while (i < length) {\n      var value = last[paths[i]];\n      if (value === undefined) {\n        return null\n      }\n      last = value;\n      i++;\n    }\n\n    return last\n  }\n};\n\n/*  */\n\n\n\nvar htmlTagMatcher = /<\\/?[\\w\\s=\"/.':;#-\\/]+>/;\nvar linkKeyMatcher = /(?:@(?:\\.[a-z]+)?:(?:[\\w\\-_|.]+|\\([\\w\\-_|.]+\\)))/g;\nvar linkKeyPrefixMatcher = /^@(?:\\.([a-z]+))?:/;\nvar bracketsMatcher = /[()]/g;\nvar defaultModifiers = {\n  'upper': function (str) { return str.toLocaleUpperCase(); },\n  'lower': function (str) { return str.toLocaleLowerCase(); },\n  'capitalize': function (str) { return (\"\" + (str.charAt(0).toLocaleUpperCase()) + (str.substr(1))); }\n};\n\nvar defaultFormatter = new BaseFormatter();\n\nvar VueI18n = function VueI18n (options) {\n  var this$1 = this;\n  if ( options === void 0 ) options = {};\n\n  // Auto install if it is not done yet and `window` has `Vue`.\n  // To allow users to avoid auto-installation in some cases,\n  // this code should be placed here. See #290\n  /* istanbul ignore if */\n  if (!Vue && typeof window !== 'undefined' && window.Vue) {\n    install(window.Vue);\n  }\n\n  var locale = options.locale || 'en-US';\n  var fallbackLocale = options.fallbackLocale === false\n    ? false\n    : options.fallbackLocale || 'en-US';\n  var messages = options.messages || {};\n  var dateTimeFormats = options.dateTimeFormats || {};\n  var numberFormats = options.numberFormats || {};\n\n  this._vm = null;\n  this._formatter = options.formatter || defaultFormatter;\n  this._modifiers = options.modifiers || {};\n  this._missing = options.missing || null;\n  this._root = options.root || null;\n  this._sync = options.sync === undefined ? true : !!options.sync;\n  this._fallbackRoot = options.fallbackRoot === undefined\n    ? true\n    : !!options.fallbackRoot;\n  this._formatFallbackMessages = options.formatFallbackMessages === undefined\n    ? false\n    : !!options.formatFallbackMessages;\n  this._silentTranslationWarn = options.silentTranslationWarn === undefined\n    ? false\n    : options.silentTranslationWarn;\n  this._silentFallbackWarn = options.silentFallbackWarn === undefined\n    ? false\n    : !!options.silentFallbackWarn;\n  this._dateTimeFormatters = {};\n  this._numberFormatters = {};\n  this._path = new I18nPath();\n  this._dataListeners = [];\n  this._componentInstanceCreatedListener = options.componentInstanceCreatedListener || null;\n  this._preserveDirectiveContent = options.preserveDirectiveContent === undefined\n    ? false\n    : !!options.preserveDirectiveContent;\n  this.pluralizationRules = options.pluralizationRules || {};\n  this._warnHtmlInMessage = options.warnHtmlInMessage || 'off';\n  this._postTranslation = options.postTranslation || null;\n  this._escapeParameterHtml = options.escapeParameterHtml || false;\n\n  /**\n   * @param choice {number} a choice index given by the input to $tc: `$tc('path.to.rule', choiceIndex)`\n   * @param choicesLength {number} an overall amount of available choices\n   * @returns a final choice index\n  */\n  this.getChoiceIndex = function (choice, choicesLength) {\n    var thisPrototype = Object.getPrototypeOf(this$1);\n    if (thisPrototype && thisPrototype.getChoiceIndex) {\n      var prototypeGetChoiceIndex = (thisPrototype.getChoiceIndex);\n      return (prototypeGetChoiceIndex).call(this$1, choice, choicesLength)\n    }\n\n    // Default (old) getChoiceIndex implementation - english-compatible\n    var defaultImpl = function (_choice, _choicesLength) {\n      _choice = Math.abs(_choice);\n\n      if (_choicesLength === 2) {\n        return _choice\n          ? _choice > 1\n            ? 1\n            : 0\n          : 1\n      }\n\n      return _choice ? Math.min(_choice, 2) : 0\n    };\n\n    if (this$1.locale in this$1.pluralizationRules) {\n      return this$1.pluralizationRules[this$1.locale].apply(this$1, [choice, choicesLength])\n    } else {\n      return defaultImpl(choice, choicesLength)\n    }\n  };\n\n\n  this._exist = function (message, key) {\n    if (!message || !key) { return false }\n    if (!isNull(this$1._path.getPathValue(message, key))) { return true }\n    // fallback for flat key\n    if (message[key]) { return true }\n    return false\n  };\n\n  if (this._warnHtmlInMessage === 'warn' || this._warnHtmlInMessage === 'error') {\n    Object.keys(messages).forEach(function (locale) {\n      this$1._checkLocaleMessage(locale, this$1._warnHtmlInMessage, messages[locale]);\n    });\n  }\n\n  this._initVM({\n    locale: locale,\n    fallbackLocale: fallbackLocale,\n    messages: messages,\n    dateTimeFormats: dateTimeFormats,\n    numberFormats: numberFormats\n  });\n};\n\nvar prototypeAccessors = { vm: { configurable: true },messages: { configurable: true },dateTimeFormats: { configurable: true },numberFormats: { configurable: true },availableLocales: { configurable: true },locale: { configurable: true },fallbackLocale: { configurable: true },formatFallbackMessages: { configurable: true },missing: { configurable: true },formatter: { configurable: true },silentTranslationWarn: { configurable: true },silentFallbackWarn: { configurable: true },preserveDirectiveContent: { configurable: true },warnHtmlInMessage: { configurable: true },postTranslation: { configurable: true } };\n\nVueI18n.prototype._checkLocaleMessage = function _checkLocaleMessage (locale, level, message) {\n  var paths = [];\n\n  var fn = function (level, locale, message, paths) {\n    if (isPlainObject(message)) {\n      Object.keys(message).forEach(function (key) {\n        var val = message[key];\n        if (isPlainObject(val)) {\n          paths.push(key);\n          paths.push('.');\n          fn(level, locale, val, paths);\n          paths.pop();\n          paths.pop();\n        } else {\n          paths.push(key);\n          fn(level, locale, val, paths);\n          paths.pop();\n        }\n      });\n    } else if (isArray(message)) {\n      message.forEach(function (item, index) {\n        if (isPlainObject(item)) {\n          paths.push((\"[\" + index + \"]\"));\n          paths.push('.');\n          fn(level, locale, item, paths);\n          paths.pop();\n          paths.pop();\n        } else {\n          paths.push((\"[\" + index + \"]\"));\n          fn(level, locale, item, paths);\n          paths.pop();\n        }\n      });\n    } else if (isString(message)) {\n      var ret = htmlTagMatcher.test(message);\n      if (ret) {\n        var msg = \"Detected HTML in message '\" + message + \"' of keypath '\" + (paths.join('')) + \"' at '\" + locale + \"'. Consider component interpolation with '' to avoid XSS. See https://bit.ly/2ZqJzkp\";\n        if (level === 'warn') {\n          warn(msg);\n        } else if (level === 'error') {\n          error(msg);\n        }\n      }\n    }\n  };\n\n  fn(level, locale, message, paths);\n};\n\nVueI18n.prototype._initVM = function _initVM (data) {\n  var silent = Vue.config.silent;\n  Vue.config.silent = true;\n  this._vm = new Vue({ data: data });\n  Vue.config.silent = silent;\n};\n\nVueI18n.prototype.destroyVM = function destroyVM () {\n  this._vm.$destroy();\n};\n\nVueI18n.prototype.subscribeDataChanging = function subscribeDataChanging (vm) {\n  this._dataListeners.push(vm);\n};\n\nVueI18n.prototype.unsubscribeDataChanging = function unsubscribeDataChanging (vm) {\n  remove(this._dataListeners, vm);\n};\n\nVueI18n.prototype.watchI18nData = function watchI18nData () {\n  var self = this;\n  return this._vm.$watch('$data', function () {\n    var i = self._dataListeners.length;\n    while (i--) {\n      Vue.nextTick(function () {\n        self._dataListeners[i] && self._dataListeners[i].$forceUpdate();\n      });\n    }\n  }, { deep: true })\n};\n\nVueI18n.prototype.watchLocale = function watchLocale () {\n  /* istanbul ignore if */\n  if (!this._sync || !this._root) { return null }\n  var target = this._vm;\n  return this._root.$i18n.vm.$watch('locale', function (val) {\n    target.$set(target, 'locale', val);\n    target.$forceUpdate();\n  }, { immediate: true })\n};\n\nVueI18n.prototype.onComponentInstanceCreated = function onComponentInstanceCreated (newI18n) {\n  if (this._componentInstanceCreatedListener) {\n    this._componentInstanceCreatedListener(newI18n, this);\n  }\n};\n\nprototypeAccessors.vm.get = function () { return this._vm };\n\nprototypeAccessors.messages.get = function () { return looseClone(this._getMessages()) };\nprototypeAccessors.dateTimeFormats.get = function () { return looseClone(this._getDateTimeFormats()) };\nprototypeAccessors.numberFormats.get = function () { return looseClone(this._getNumberFormats()) };\nprototypeAccessors.availableLocales.get = function () { return Object.keys(this.messages).sort() };\n\nprototypeAccessors.locale.get = function () { return this._vm.locale };\nprototypeAccessors.locale.set = function (locale) {\n  this._vm.$set(this._vm, 'locale', locale);\n};\n\nprototypeAccessors.fallbackLocale.get = function () { return this._vm.fallbackLocale };\nprototypeAccessors.fallbackLocale.set = function (locale) {\n  this._localeChainCache = {};\n  this._vm.$set(this._vm, 'fallbackLocale', locale);\n};\n\nprototypeAccessors.formatFallbackMessages.get = function () { return this._formatFallbackMessages };\nprototypeAccessors.formatFallbackMessages.set = function (fallback) { this._formatFallbackMessages = fallback; };\n\nprototypeAccessors.missing.get = function () { return this._missing };\nprototypeAccessors.missing.set = function (handler) { this._missing = handler; };\n\nprototypeAccessors.formatter.get = function () { return this._formatter };\nprototypeAccessors.formatter.set = function (formatter) { this._formatter = formatter; };\n\nprototypeAccessors.silentTranslationWarn.get = function () { return this._silentTranslationWarn };\nprototypeAccessors.silentTranslationWarn.set = function (silent) { this._silentTranslationWarn = silent; };\n\nprototypeAccessors.silentFallbackWarn.get = function () { return this._silentFallbackWarn };\nprototypeAccessors.silentFallbackWarn.set = function (silent) { this._silentFallbackWarn = silent; };\n\nprototypeAccessors.preserveDirectiveContent.get = function () { return this._preserveDirectiveContent };\nprototypeAccessors.preserveDirectiveContent.set = function (preserve) { this._preserveDirectiveContent = preserve; };\n\nprototypeAccessors.warnHtmlInMessage.get = function () { return this._warnHtmlInMessage };\nprototypeAccessors.warnHtmlInMessage.set = function (level) {\n    var this$1 = this;\n\n  var orgLevel = this._warnHtmlInMessage;\n  this._warnHtmlInMessage = level;\n  if (orgLevel !== level && (level === 'warn' || level === 'error')) {\n    var messages = this._getMessages();\n    Object.keys(messages).forEach(function (locale) {\n      this$1._checkLocaleMessage(locale, this$1._warnHtmlInMessage, messages[locale]);\n    });\n  }\n};\n\nprototypeAccessors.postTranslation.get = function () { return this._postTranslation };\nprototypeAccessors.postTranslation.set = function (handler) { this._postTranslation = handler; };\n\nVueI18n.prototype._getMessages = function _getMessages () { return this._vm.messages };\nVueI18n.prototype._getDateTimeFormats = function _getDateTimeFormats () { return this._vm.dateTimeFormats };\nVueI18n.prototype._getNumberFormats = function _getNumberFormats () { return this._vm.numberFormats };\n\nVueI18n.prototype._warnDefault = function _warnDefault (locale, key, result, vm, values, interpolateMode) {\n  if (!isNull(result)) { return result }\n  if (this._missing) {\n    var missingRet = this._missing.apply(null, [locale, key, vm, values]);\n    if (isString(missingRet)) {\n      return missingRet\n    }\n  } else {\n    if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key)) {\n      warn(\n        \"Cannot translate the value of keypath '\" + key + \"'. \" +\n        'Use the value of keypath as default.'\n      );\n    }\n  }\n\n  if (this._formatFallbackMessages) {\n    var parsedArgs = parseArgs.apply(void 0, values);\n    return this._render(key, interpolateMode, parsedArgs.params, key)\n  } else {\n    return key\n  }\n};\n\nVueI18n.prototype._isFallbackRoot = function _isFallbackRoot (val) {\n  return !val && !isNull(this._root) && this._fallbackRoot\n};\n\nVueI18n.prototype._isSilentFallbackWarn = function _isSilentFallbackWarn (key) {\n  return this._silentFallbackWarn instanceof RegExp\n    ? this._silentFallbackWarn.test(key)\n    : this._silentFallbackWarn\n};\n\nVueI18n.prototype._isSilentFallback = function _isSilentFallback (locale, key) {\n  return this._isSilentFallbackWarn(key) && (this._isFallbackRoot() || locale !== this.fallbackLocale)\n};\n\nVueI18n.prototype._isSilentTranslationWarn = function _isSilentTranslationWarn (key) {\n  return this._silentTranslationWarn instanceof RegExp\n    ? this._silentTranslationWarn.test(key)\n    : this._silentTranslationWarn\n};\n\nVueI18n.prototype._interpolate = function _interpolate (\n  locale,\n  message,\n  key,\n  host,\n  interpolateMode,\n  values,\n  visitedLinkStack\n) {\n  if (!message) { return null }\n\n  var pathRet = this._path.getPathValue(message, key);\n  if (isArray(pathRet) || isPlainObject(pathRet)) { return pathRet }\n\n  var ret;\n  if (isNull(pathRet)) {\n    /* istanbul ignore else */\n    if (isPlainObject(message)) {\n      ret = message[key];\n      if (!(isString(ret) || isFunction(ret))) {\n        if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallback(locale, key)) {\n          warn((\"Value of key '\" + key + \"' is not a string or function !\"));\n        }\n        return null\n      }\n    } else {\n      return null\n    }\n  } else {\n    /* istanbul ignore else */\n    if (isString(pathRet) || isFunction(pathRet)) {\n      ret = pathRet;\n    } else {\n      if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallback(locale, key)) {\n        warn((\"Value of key '\" + key + \"' is not a string or function!\"));\n      }\n      return null\n    }\n  }\n\n  // Check for the existence of links within the translated string\n  if (isString(ret) && (ret.indexOf('@:') >= 0 || ret.indexOf('@.') >= 0)) {\n    ret = this._link(locale, message, ret, host, 'raw', values, visitedLinkStack);\n  }\n\n  return this._render(ret, interpolateMode, values, key)\n};\n\nVueI18n.prototype._link = function _link (\n  locale,\n  message,\n  str,\n  host,\n  interpolateMode,\n  values,\n  visitedLinkStack\n) {\n  var ret = str;\n\n  // Match all the links within the local\n  // We are going to replace each of\n  // them with its translation\n  var matches = ret.match(linkKeyMatcher);\n  for (var idx in matches) {\n    // ie compatible: filter custom array\n    // prototype method\n    if (!matches.hasOwnProperty(idx)) {\n      continue\n    }\n    var link = matches[idx];\n    var linkKeyPrefixMatches = link.match(linkKeyPrefixMatcher);\n    var linkPrefix = linkKeyPrefixMatches[0];\n      var formatterName = linkKeyPrefixMatches[1];\n\n    // Remove the leading @:, @.case: and the brackets\n    var linkPlaceholder = link.replace(linkPrefix, '').replace(bracketsMatcher, '');\n\n    if (includes(visitedLinkStack, linkPlaceholder)) {\n      if (process.env.NODE_ENV !== 'production') {\n        warn((\"Circular reference found. \\\"\" + link + \"\\\" is already visited in the chain of \" + (visitedLinkStack.reverse().join(' <- '))));\n      }\n      return ret\n    }\n    visitedLinkStack.push(linkPlaceholder);\n\n    // Translate the link\n    var translated = this._interpolate(\n      locale, message, linkPlaceholder, host,\n      interpolateMode === 'raw' ? 'string' : interpolateMode,\n      interpolateMode === 'raw' ? undefined : values,\n      visitedLinkStack\n    );\n\n    if (this._isFallbackRoot(translated)) {\n      if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(linkPlaceholder)) {\n        warn((\"Fall back to translate the link placeholder '\" + linkPlaceholder + \"' with root locale.\"));\n      }\n      /* istanbul ignore if */\n      if (!this._root) { throw Error('unexpected error') }\n      var root = this._root.$i18n;\n      translated = root._translate(\n        root._getMessages(), root.locale, root.fallbackLocale,\n        linkPlaceholder, host, interpolateMode, values\n      );\n    }\n    translated = this._warnDefault(\n      locale, linkPlaceholder, translated, host,\n      isArray(values) ? values : [values],\n      interpolateMode\n    );\n\n    if (this._modifiers.hasOwnProperty(formatterName)) {\n      translated = this._modifiers[formatterName](translated);\n    } else if (defaultModifiers.hasOwnProperty(formatterName)) {\n      translated = defaultModifiers[formatterName](translated);\n    }\n\n    visitedLinkStack.pop();\n\n    // Replace the link with the translated\n    ret = !translated ? ret : ret.replace(link, translated);\n  }\n\n  return ret\n};\n\nVueI18n.prototype._createMessageContext = function _createMessageContext (values) {\n  var _list = isArray(values) ? values : [];\n  var _named = isObject(values) ? values : {};\n  var list = function (index) { return _list[index]; };\n  var named = function (key) { return _named[key]; };\n  return {\n    list: list,\n    named: named\n  }\n};\n\nVueI18n.prototype._render = function _render (message, interpolateMode, values, path) {\n  if (isFunction(message)) {\n    return message(this._createMessageContext(values))\n  }\n\n  var ret = this._formatter.interpolate(message, values, path);\n\n  // If the custom formatter refuses to work - apply the default one\n  if (!ret) {\n    ret = defaultFormatter.interpolate(message, values, path);\n  }\n\n  // if interpolateMode is **not** 'string' ('row'),\n  // return the compiled data (e.g. ['foo', VNode, 'bar']) with formatter\n  return interpolateMode === 'string' && !isString(ret) ? ret.join('') : ret\n};\n\nVueI18n.prototype._appendItemToChain = function _appendItemToChain (chain, item, blocks) {\n  var follow = false;\n  if (!includes(chain, item)) {\n    follow = true;\n    if (item) {\n      follow = item[item.length - 1] !== '!';\n      item = item.replace(/!/g, '');\n      chain.push(item);\n      if (blocks && blocks[item]) {\n        follow = blocks[item];\n      }\n    }\n  }\n  return follow\n};\n\nVueI18n.prototype._appendLocaleToChain = function _appendLocaleToChain (chain, locale, blocks) {\n  var follow;\n  var tokens = locale.split('-');\n  do {\n    var item = tokens.join('-');\n    follow = this._appendItemToChain(chain, item, blocks);\n    tokens.splice(-1, 1);\n  } while (tokens.length && (follow === true))\n  return follow\n};\n\nVueI18n.prototype._appendBlockToChain = function _appendBlockToChain (chain, block, blocks) {\n  var follow = true;\n  for (var i = 0; (i < block.length) && (isBoolean(follow)); i++) {\n    var locale = block[i];\n    if (isString(locale)) {\n      follow = this._appendLocaleToChain(chain, locale, blocks);\n    }\n  }\n  return follow\n};\n\nVueI18n.prototype._getLocaleChain = function _getLocaleChain (start, fallbackLocale) {\n  if (start === '') { return [] }\n\n  if (!this._localeChainCache) {\n    this._localeChainCache = {};\n  }\n\n  var chain = this._localeChainCache[start];\n  if (!chain) {\n    if (!fallbackLocale) {\n      fallbackLocale = this.fallbackLocale;\n    }\n    chain = [];\n\n    // first block defined by start\n    var block = [start];\n\n    // while any intervening block found\n    while (isArray(block)) {\n      block = this._appendBlockToChain(\n        chain,\n        block,\n        fallbackLocale\n      );\n    }\n\n    // last block defined by default\n    var defaults;\n    if (isArray(fallbackLocale)) {\n      defaults = fallbackLocale;\n    } else if (isObject(fallbackLocale)) {\n      /* $FlowFixMe */\n      if (fallbackLocale['default']) {\n        defaults = fallbackLocale['default'];\n      } else {\n        defaults = null;\n      }\n    } else {\n      defaults = fallbackLocale;\n    }\n\n    // convert defaults to array\n    if (isString(defaults)) {\n      block = [defaults];\n    } else {\n      block = defaults;\n    }\n    if (block) {\n      this._appendBlockToChain(\n        chain,\n        block,\n        null\n      );\n    }\n    this._localeChainCache[start] = chain;\n  }\n  return chain\n};\n\nVueI18n.prototype._translate = function _translate (\n  messages,\n  locale,\n  fallback,\n  key,\n  host,\n  interpolateMode,\n  args\n) {\n  var chain = this._getLocaleChain(locale, fallback);\n  var res;\n  for (var i = 0; i < chain.length; i++) {\n    var step = chain[i];\n    res =\n      this._interpolate(step, messages[step], key, host, interpolateMode, args, [key]);\n    if (!isNull(res)) {\n      if (step !== locale && process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallbackWarn(key)) {\n        warn((\"Fall back to translate the keypath '\" + key + \"' with '\" + step + \"' locale.\"));\n      }\n      return res\n    }\n  }\n  return null\n};\n\nVueI18n.prototype._t = function _t (key, _locale, messages, host) {\n    var ref;\n\n    var values = [], len = arguments.length - 4;\n    while ( len-- > 0 ) values[ len ] = arguments[ len + 4 ];\n  if (!key) { return '' }\n\n  var parsedArgs = parseArgs.apply(void 0, values);\n  if(this._escapeParameterHtml) {\n    parsedArgs.params = escapeParams(parsedArgs.params);\n  }\n\n  var locale = parsedArgs.locale || _locale;\n\n  var ret = this._translate(\n    messages, locale, this.fallbackLocale, key,\n    host, 'string', parsedArgs.params\n  );\n  if (this._isFallbackRoot(ret)) {\n    if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallbackWarn(key)) {\n      warn((\"Fall back to translate the keypath '\" + key + \"' with root locale.\"));\n    }\n    /* istanbul ignore if */\n    if (!this._root) { throw Error('unexpected error') }\n    return (ref = this._root).$t.apply(ref, [ key ].concat( values ))\n  } else {\n    ret = this._warnDefault(locale, key, ret, host, values, 'string');\n    if (this._postTranslation && ret !== null && ret !== undefined) {\n      ret = this._postTranslation(ret, key);\n    }\n    return ret\n  }\n};\n\nVueI18n.prototype.t = function t (key) {\n    var ref;\n\n    var values = [], len = arguments.length - 1;\n    while ( len-- > 0 ) values[ len ] = arguments[ len + 1 ];\n  return (ref = this)._t.apply(ref, [ key, this.locale, this._getMessages(), null ].concat( values ))\n};\n\nVueI18n.prototype._i = function _i (key, locale, messages, host, values) {\n  var ret =\n    this._translate(messages, locale, this.fallbackLocale, key, host, 'raw', values);\n  if (this._isFallbackRoot(ret)) {\n    if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key)) {\n      warn((\"Fall back to interpolate the keypath '\" + key + \"' with root locale.\"));\n    }\n    if (!this._root) { throw Error('unexpected error') }\n    return this._root.$i18n.i(key, locale, values)\n  } else {\n    return this._warnDefault(locale, key, ret, host, [values], 'raw')\n  }\n};\n\nVueI18n.prototype.i = function i (key, locale, values) {\n  /* istanbul ignore if */\n  if (!key) { return '' }\n\n  if (!isString(locale)) {\n    locale = this.locale;\n  }\n\n  return this._i(key, locale, this._getMessages(), null, values)\n};\n\nVueI18n.prototype._tc = function _tc (\n  key,\n  _locale,\n  messages,\n  host,\n  choice\n) {\n    var ref;\n\n    var values = [], len = arguments.length - 5;\n    while ( len-- > 0 ) values[ len ] = arguments[ len + 5 ];\n  if (!key) { return '' }\n  if (choice === undefined) {\n    choice = 1;\n  }\n\n  var predefined = { 'count': choice, 'n': choice };\n  var parsedArgs = parseArgs.apply(void 0, values);\n  parsedArgs.params = Object.assign(predefined, parsedArgs.params);\n  values = parsedArgs.locale === null ? [parsedArgs.params] : [parsedArgs.locale, parsedArgs.params];\n  return this.fetchChoice((ref = this)._t.apply(ref, [ key, _locale, messages, host ].concat( values )), choice)\n};\n\nVueI18n.prototype.fetchChoice = function fetchChoice (message, choice) {\n  /* istanbul ignore if */\n  if (!message || !isString(message)) { return null }\n  var choices = message.split('|');\n\n  choice = this.getChoiceIndex(choice, choices.length);\n  if (!choices[choice]) { return message }\n  return choices[choice].trim()\n};\n\nVueI18n.prototype.tc = function tc (key, choice) {\n    var ref;\n\n    var values = [], len = arguments.length - 2;\n    while ( len-- > 0 ) values[ len ] = arguments[ len + 2 ];\n  return (ref = this)._tc.apply(ref, [ key, this.locale, this._getMessages(), null, choice ].concat( values ))\n};\n\nVueI18n.prototype._te = function _te (key, locale, messages) {\n    var args = [], len = arguments.length - 3;\n    while ( len-- > 0 ) args[ len ] = arguments[ len + 3 ];\n\n  var _locale = parseArgs.apply(void 0, args).locale || locale;\n  return this._exist(messages[_locale], key)\n};\n\nVueI18n.prototype.te = function te (key, locale) {\n  return this._te(key, this.locale, this._getMessages(), locale)\n};\n\nVueI18n.prototype.getLocaleMessage = function getLocaleMessage (locale) {\n  return looseClone(this._vm.messages[locale] || {})\n};\n\nVueI18n.prototype.setLocaleMessage = function setLocaleMessage (locale, message) {\n  if (this._warnHtmlInMessage === 'warn' || this._warnHtmlInMessage === 'error') {\n    this._checkLocaleMessage(locale, this._warnHtmlInMessage, message);\n  }\n  this._vm.$set(this._vm.messages, locale, message);\n};\n\nVueI18n.prototype.mergeLocaleMessage = function mergeLocaleMessage (locale, message) {\n  if (this._warnHtmlInMessage === 'warn' || this._warnHtmlInMessage === 'error') {\n    this._checkLocaleMessage(locale, this._warnHtmlInMessage, message);\n  }\n  this._vm.$set(this._vm.messages, locale, merge(\n    typeof this._vm.messages[locale] !== 'undefined' && Object.keys(this._vm.messages[locale]).length\n      ? this._vm.messages[locale]\n      : {},\n    message\n  ));\n};\n\nVueI18n.prototype.getDateTimeFormat = function getDateTimeFormat (locale) {\n  return looseClone(this._vm.dateTimeFormats[locale] || {})\n};\n\nVueI18n.prototype.setDateTimeFormat = function setDateTimeFormat (locale, format) {\n  this._vm.$set(this._vm.dateTimeFormats, locale, format);\n  this._clearDateTimeFormat(locale, format);\n};\n\nVueI18n.prototype.mergeDateTimeFormat = function mergeDateTimeFormat (locale, format) {\n  this._vm.$set(this._vm.dateTimeFormats, locale, merge(this._vm.dateTimeFormats[locale] || {}, format));\n  this._clearDateTimeFormat(locale, format);\n};\n\nVueI18n.prototype._clearDateTimeFormat = function _clearDateTimeFormat (locale, format) {\n  for (var key in format) {\n    var id = locale + \"__\" + key;\n\n    if (!this._dateTimeFormatters.hasOwnProperty(id)) {\n      continue\n    }\n\n    delete this._dateTimeFormatters[id];\n  }\n};\n\nVueI18n.prototype._localizeDateTime = function _localizeDateTime (\n  value,\n  locale,\n  fallback,\n  dateTimeFormats,\n  key\n) {\n  var _locale = locale;\n  var formats = dateTimeFormats[_locale];\n\n  var chain = this._getLocaleChain(locale, fallback);\n  for (var i = 0; i < chain.length; i++) {\n    var current = _locale;\n    var step = chain[i];\n    formats = dateTimeFormats[step];\n    _locale = step;\n    // fallback locale\n    if (isNull(formats) || isNull(formats[key])) {\n      if (step !== locale && process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallbackWarn(key)) {\n        warn((\"Fall back to '\" + step + \"' datetime formats from '\" + current + \"' datetime formats.\"));\n      }\n    } else {\n      break\n    }\n  }\n\n  if (isNull(formats) || isNull(formats[key])) {\n    return null\n  } else {\n    var format = formats[key];\n    var id = _locale + \"__\" + key;\n    var formatter = this._dateTimeFormatters[id];\n    if (!formatter) {\n      formatter = this._dateTimeFormatters[id] = new Intl.DateTimeFormat(_locale, format);\n    }\n    return formatter.format(value)\n  }\n};\n\nVueI18n.prototype._d = function _d (value, locale, key) {\n  /* istanbul ignore if */\n  if (process.env.NODE_ENV !== 'production' && !VueI18n.availabilities.dateTimeFormat) {\n    warn('Cannot format a Date value due to not supported Intl.DateTimeFormat.');\n    return ''\n  }\n\n  if (!key) {\n    return new Intl.DateTimeFormat(locale).format(value)\n  }\n\n  var ret =\n    this._localizeDateTime(value, locale, this.fallbackLocale, this._getDateTimeFormats(), key);\n  if (this._isFallbackRoot(ret)) {\n    if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallbackWarn(key)) {\n      warn((\"Fall back to datetime localization of root: key '\" + key + \"'.\"));\n    }\n    /* istanbul ignore if */\n    if (!this._root) { throw Error('unexpected error') }\n    return this._root.$i18n.d(value, key, locale)\n  } else {\n    return ret || ''\n  }\n};\n\nVueI18n.prototype.d = function d (value) {\n    var args = [], len = arguments.length - 1;\n    while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n\n  var locale = this.locale;\n  var key = null;\n\n  if (args.length === 1) {\n    if (isString(args[0])) {\n      key = args[0];\n    } else if (isObject(args[0])) {\n      if (args[0].locale) {\n        locale = args[0].locale;\n      }\n      if (args[0].key) {\n        key = args[0].key;\n      }\n    }\n  } else if (args.length === 2) {\n    if (isString(args[0])) {\n      key = args[0];\n    }\n    if (isString(args[1])) {\n      locale = args[1];\n    }\n  }\n\n  return this._d(value, locale, key)\n};\n\nVueI18n.prototype.getNumberFormat = function getNumberFormat (locale) {\n  return looseClone(this._vm.numberFormats[locale] || {})\n};\n\nVueI18n.prototype.setNumberFormat = function setNumberFormat (locale, format) {\n  this._vm.$set(this._vm.numberFormats, locale, format);\n  this._clearNumberFormat(locale, format);\n};\n\nVueI18n.prototype.mergeNumberFormat = function mergeNumberFormat (locale, format) {\n  this._vm.$set(this._vm.numberFormats, locale, merge(this._vm.numberFormats[locale] || {}, format));\n  this._clearNumberFormat(locale, format);\n};\n\nVueI18n.prototype._clearNumberFormat = function _clearNumberFormat (locale, format) {\n  for (var key in format) {\n    var id = locale + \"__\" + key;\n\n    if (!this._numberFormatters.hasOwnProperty(id)) {\n      continue\n    }\n\n    delete this._numberFormatters[id];\n  }\n};\n\nVueI18n.prototype._getNumberFormatter = function _getNumberFormatter (\n  value,\n  locale,\n  fallback,\n  numberFormats,\n  key,\n  options\n) {\n  var _locale = locale;\n  var formats = numberFormats[_locale];\n\n  var chain = this._getLocaleChain(locale, fallback);\n  for (var i = 0; i < chain.length; i++) {\n    var current = _locale;\n    var step = chain[i];\n    formats = numberFormats[step];\n    _locale = step;\n    // fallback locale\n    if (isNull(formats) || isNull(formats[key])) {\n      if (step !== locale && process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallbackWarn(key)) {\n        warn((\"Fall back to '\" + step + \"' number formats from '\" + current + \"' number formats.\"));\n      }\n    } else {\n      break\n    }\n  }\n\n  if (isNull(formats) || isNull(formats[key])) {\n    return null\n  } else {\n    var format = formats[key];\n\n    var formatter;\n    if (options) {\n      // If options specified - create one time number formatter\n      formatter = new Intl.NumberFormat(_locale, Object.assign({}, format, options));\n    } else {\n      var id = _locale + \"__\" + key;\n      formatter = this._numberFormatters[id];\n      if (!formatter) {\n        formatter = this._numberFormatters[id] = new Intl.NumberFormat(_locale, format);\n      }\n    }\n    return formatter\n  }\n};\n\nVueI18n.prototype._n = function _n (value, locale, key, options) {\n  /* istanbul ignore if */\n  if (!VueI18n.availabilities.numberFormat) {\n    if (process.env.NODE_ENV !== 'production') {\n      warn('Cannot format a Number value due to not supported Intl.NumberFormat.');\n    }\n    return ''\n  }\n\n  if (!key) {\n    var nf = !options ? new Intl.NumberFormat(locale) : new Intl.NumberFormat(locale, options);\n    return nf.format(value)\n  }\n\n  var formatter = this._getNumberFormatter(value, locale, this.fallbackLocale, this._getNumberFormats(), key, options);\n  var ret = formatter && formatter.format(value);\n  if (this._isFallbackRoot(ret)) {\n    if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallbackWarn(key)) {\n      warn((\"Fall back to number localization of root: key '\" + key + \"'.\"));\n    }\n    /* istanbul ignore if */\n    if (!this._root) { throw Error('unexpected error') }\n    return this._root.$i18n.n(value, Object.assign({}, { key: key, locale: locale }, options))\n  } else {\n    return ret || ''\n  }\n};\n\nVueI18n.prototype.n = function n (value) {\n    var args = [], len = arguments.length - 1;\n    while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n\n  var locale = this.locale;\n  var key = null;\n  var options = null;\n\n  if (args.length === 1) {\n    if (isString(args[0])) {\n      key = args[0];\n    } else if (isObject(args[0])) {\n      if (args[0].locale) {\n        locale = args[0].locale;\n      }\n      if (args[0].key) {\n        key = args[0].key;\n      }\n\n      // Filter out number format options only\n      options = Object.keys(args[0]).reduce(function (acc, key) {\n          var obj;\n\n        if (includes(numberFormatKeys, key)) {\n          return Object.assign({}, acc, ( obj = {}, obj[key] = args[0][key], obj ))\n        }\n        return acc\n      }, null);\n    }\n  } else if (args.length === 2) {\n    if (isString(args[0])) {\n      key = args[0];\n    }\n    if (isString(args[1])) {\n      locale = args[1];\n    }\n  }\n\n  return this._n(value, locale, key, options)\n};\n\nVueI18n.prototype._ntp = function _ntp (value, locale, key, options) {\n  /* istanbul ignore if */\n  if (!VueI18n.availabilities.numberFormat) {\n    if (process.env.NODE_ENV !== 'production') {\n      warn('Cannot format to parts a Number value due to not supported Intl.NumberFormat.');\n    }\n    return []\n  }\n\n  if (!key) {\n    var nf = !options ? new Intl.NumberFormat(locale) : new Intl.NumberFormat(locale, options);\n    return nf.formatToParts(value)\n  }\n\n  var formatter = this._getNumberFormatter(value, locale, this.fallbackLocale, this._getNumberFormats(), key, options);\n  var ret = formatter && formatter.formatToParts(value);\n  if (this._isFallbackRoot(ret)) {\n    if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key)) {\n      warn((\"Fall back to format number to parts of root: key '\" + key + \"' .\"));\n    }\n    /* istanbul ignore if */\n    if (!this._root) { throw Error('unexpected error') }\n    return this._root.$i18n._ntp(value, locale, key, options)\n  } else {\n    return ret || []\n  }\n};\n\nObject.defineProperties( VueI18n.prototype, prototypeAccessors );\n\nvar availabilities;\n// $FlowFixMe\nObject.defineProperty(VueI18n, 'availabilities', {\n  get: function get () {\n    if (!availabilities) {\n      var intlDefined = typeof Intl !== 'undefined';\n      availabilities = {\n        dateTimeFormat: intlDefined && typeof Intl.DateTimeFormat !== 'undefined',\n        numberFormat: intlDefined && typeof Intl.NumberFormat !== 'undefined'\n      };\n    }\n\n    return availabilities\n  }\n});\n\nVueI18n.install = install;\nVueI18n.version = '8.22.4';\n\nexport default VueI18n;\n","import Vue from 'vue';\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign#Polyfill\nfunction assign (target, varArgs) {\n  var arguments$1 = arguments;\n\n  if (target === null || target === undefined) {\n    throw new TypeError('Cannot convert undefined or null to object')\n  }\n  var to = Object(target);\n  for (var index = 1; index < arguments.length; index++) {\n    var nextSource = arguments$1[index];\n    if (nextSource !== null && nextSource !== undefined) {\n      for (var nextKey in nextSource) {\n        // Avoid bugs when hasOwnProperty is shadowed\n        /* istanbul ignore else */\n        if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {\n          to[nextKey] = nextSource[nextKey];\n        }\n      }\n    }\n  }\n  return to\n}\n\nfunction isExist (obj) {\n  return typeof obj !== 'undefined' && obj !== null\n}\n\nfunction isFunction (obj) {\n  return typeof obj === 'function'\n}\n\nfunction isNumber (obj) {\n  return typeof obj === 'number'\n}\n\nfunction isString (obj) {\n  return typeof obj === 'string'\n}\n\nfunction isBoolean (obj) {\n  return typeof obj === 'boolean'\n}\n\nfunction isPromiseSupported () {\n  return typeof window !== 'undefined' && isExist(window.Promise)\n}\n\nfunction hasOwnProperty (o, k) {\n  return Object.prototype.hasOwnProperty.call(o, k)\n}\n\nvar script = {\n  props: {\n    value: Number,\n    indicators: {\n      type: Boolean,\n      default: true\n    },\n    controls: {\n      type: Boolean,\n      default: true\n    },\n    interval: {\n      type: Number,\n      default: 5000\n    },\n    iconControlLeft: {\n      type: String,\n      default: 'glyphicon glyphicon-chevron-left'\n    },\n    iconControlRight: {\n      type: String,\n      default: 'glyphicon glyphicon-chevron-right'\n    }\n  },\n  data: function data () {\n    return {\n      slides: [],\n      activeIndex: 0, // Make v-model not required\n      timeoutId: 0,\n      intervalId: 0\n    }\n  },\n  watch: {\n    interval: function interval () {\n      this.startInterval();\n    },\n    value: function value (index, oldValue) {\n      this.run(index, oldValue);\n      this.activeIndex = index;\n    }\n  },\n  mounted: function mounted () {\n    if (isExist(this.value)) {\n      this.activeIndex = this.value;\n    }\n    if (this.slides.length > 0) {\n      this.$select(this.activeIndex);\n    }\n    this.startInterval();\n  },\n  beforeDestroy: function beforeDestroy () {\n    this.stopInterval();\n  },\n  methods: {\n    run: function run (newIndex, oldIndex) {\n      var this$1 = this;\n\n      var currentActiveIndex = oldIndex || 0;\n      var direction;\n      if (newIndex > currentActiveIndex) {\n        direction = ['next', 'left'];\n      } else {\n        direction = ['prev', 'right'];\n      }\n      this.slides[newIndex].slideClass[direction[0]] = true;\n      this.$nextTick(function () {\n        this$1.slides[newIndex].$el.offsetHeight;\n        this$1.slides.forEach(function (slide, i) {\n          if (i === currentActiveIndex) {\n            slide.slideClass.active = true;\n            slide.slideClass[direction[1]] = true;\n          } else if (i === newIndex) {\n            slide.slideClass[direction[1]] = true;\n          }\n        });\n        this$1.timeoutId = setTimeout(function () {\n          this$1.$select(newIndex);\n          this$1.$emit('change', newIndex);\n          this$1.timeoutId = 0;\n        }, 600);\n      });\n    },\n    startInterval: function startInterval () {\n      var this$1 = this;\n\n      this.stopInterval();\n      if (this.interval > 0) {\n        this.intervalId = setInterval(function () {\n          this$1.next();\n        }, this.interval);\n      }\n    },\n    stopInterval: function stopInterval () {\n      clearInterval(this.intervalId);\n      this.intervalId = 0;\n    },\n    resetAllSlideClass: function resetAllSlideClass () {\n      this.slides.forEach(function (slide) {\n        slide.slideClass.active = false;\n        slide.slideClass.left = false;\n        slide.slideClass.right = false;\n        slide.slideClass.next = false;\n        slide.slideClass.prev = false;\n      });\n    },\n    $select: function $select (index) {\n      this.resetAllSlideClass();\n      this.slides[index].slideClass.active = true;\n    },\n    select: function select (index) {\n      if (this.timeoutId !== 0 || index === this.activeIndex) {\n        return\n      }\n      if (isExist(this.value)) {\n        this.$emit('input', index);\n      } else {\n        this.run(index, this.activeIndex);\n        this.activeIndex = index;\n      }\n    },\n    prev: function prev () {\n      this.select(this.activeIndex === 0 ? this.slides.length - 1 : this.activeIndex - 1);\n    },\n    next: function next () {\n      this.select(this.activeIndex === this.slides.length - 1 ? 0 : this.activeIndex + 1);\n    }\n  }\n};\n\nfunction normalizeComponent(template, style, script, scopeId, isFunctionalTemplate, moduleIdentifier /* server only */, shadowMode, createInjector, createInjectorSSR, createInjectorShadow) {\r\n    if (typeof shadowMode !== 'boolean') {\r\n        createInjectorSSR = createInjector;\r\n        createInjector = shadowMode;\r\n        shadowMode = false;\r\n    }\r\n    // Vue.extend constructor export interop.\r\n    var options = typeof script === 'function' ? script.options : script;\r\n    // render functions\r\n    if (template && template.render) {\r\n        options.render = template.render;\r\n        options.staticRenderFns = template.staticRenderFns;\r\n        options._compiled = true;\r\n        // functional template\r\n        if (isFunctionalTemplate) {\r\n            options.functional = true;\r\n        }\r\n    }\r\n    // scopedId\r\n    if (scopeId) {\r\n        options._scopeId = scopeId;\r\n    }\r\n    var hook;\r\n    if (moduleIdentifier) {\r\n        // server build\r\n        hook = function (context) {\r\n            // 2.3 injection\r\n            context =\r\n                context || // cached call\r\n                    (this.$vnode && this.$vnode.ssrContext) || // stateful\r\n                    (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext); // functional\r\n            // 2.2 with runInNewContext: true\r\n            if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\r\n                context = __VUE_SSR_CONTEXT__;\r\n            }\r\n            // inject component styles\r\n            if (style) {\r\n                style.call(this, createInjectorSSR(context));\r\n            }\r\n            // register component module identifier for async chunk inference\r\n            if (context && context._registeredComponents) {\r\n                context._registeredComponents.add(moduleIdentifier);\r\n            }\r\n        };\r\n        // used by ssr in case component is cached and beforeCreate\r\n        // never gets called\r\n        options._ssrRegister = hook;\r\n    }\r\n    else if (style) {\r\n        hook = shadowMode\r\n            ? function (context) {\r\n                style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot));\r\n            }\r\n            : function (context) {\r\n                style.call(this, createInjector(context));\r\n            };\r\n    }\r\n    if (hook) {\r\n        if (options.functional) {\r\n            // register for functional component in vue file\r\n            var originalRender = options.render;\r\n            options.render = function renderWithStyleInjection(h, context) {\r\n                hook.call(context);\r\n                return originalRender(h, context);\r\n            };\r\n        }\r\n        else {\r\n            // inject component registration as beforeCreate hook\r\n            var existing = options.beforeCreate;\r\n            options.beforeCreate = existing ? [].concat(existing, hook) : [hook];\r\n        }\r\n    }\r\n    return script;\r\n}\n\n/* script */\nvar __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function() {\n  var _vm = this;\n  var _h = _vm.$createElement;\n  var _c = _vm._self._c || _h;\n  return _c(\n    \"div\",\n    {\n      staticClass: \"carousel slide\",\n      attrs: { \"data-ride\": \"carousel\" },\n      on: { mouseenter: _vm.stopInterval, mouseleave: _vm.startInterval }\n    },\n    [\n      _vm.indicators\n        ? _vm._t(\n            \"indicators\",\n            [\n              _c(\n                \"ol\",\n                { staticClass: \"carousel-indicators\" },\n                _vm._l(_vm.slides, function(slide, index) {\n                  return _c(\"li\", {\n                    class: { active: index === _vm.activeIndex },\n                    on: {\n                      click: function($event) {\n                        return _vm.select(index)\n                      }\n                    }\n                  })\n                }),\n                0\n              )\n            ],\n            { select: _vm.select, activeIndex: _vm.activeIndex }\n          )\n        : _vm._e(),\n      _vm._v(\" \"),\n      _c(\n        \"div\",\n        { staticClass: \"carousel-inner\", attrs: { role: \"listbox\" } },\n        [_vm._t(\"default\")],\n        2\n      ),\n      _vm._v(\" \"),\n      _vm.controls\n        ? _c(\n            \"a\",\n            {\n              staticClass: \"left carousel-control\",\n              attrs: { href: \"#\", role: \"button\" },\n              on: {\n                click: function($event) {\n                  $event.preventDefault();\n                  return _vm.prev()\n                }\n              }\n            },\n            [\n              _c(\"span\", {\n                class: _vm.iconControlLeft,\n                attrs: { \"aria-hidden\": \"true\" }\n              }),\n              _vm._v(\" \"),\n              _c(\"span\", { staticClass: \"sr-only\" }, [_vm._v(\"Previous\")])\n            ]\n          )\n        : _vm._e(),\n      _vm._v(\" \"),\n      _vm.controls\n        ? _c(\n            \"a\",\n            {\n              staticClass: \"right carousel-control\",\n              attrs: { href: \"#\", role: \"button\" },\n              on: {\n                click: function($event) {\n                  $event.preventDefault();\n                  return _vm.next()\n                }\n              }\n            },\n            [\n              _c(\"span\", {\n                class: _vm.iconControlRight,\n                attrs: { \"aria-hidden\": \"true\" }\n              }),\n              _vm._v(\" \"),\n              _c(\"span\", { staticClass: \"sr-only\" }, [_vm._v(\"Next\")])\n            ]\n          )\n        : _vm._e()\n    ],\n    2\n  )\n};\nvar __vue_staticRenderFns__ = [];\n__vue_render__._withStripped = true;\n\n  /* style */\n  var __vue_inject_styles__ = undefined;\n  /* scoped */\n  var __vue_scope_id__ = undefined;\n  /* module identifier */\n  var __vue_module_identifier__ = undefined;\n  /* functional template */\n  var __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  var __vue_component__ = /*#__PURE__*/normalizeComponent(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nfunction spliceIfExist (arr, item) {\n  if (Array.isArray(arr)) {\n    var index = arr.indexOf(item);\n    if (index >= 0) {\n      arr.splice(index, 1);\n    }\n  }\n}\n\nfunction range (end, start, step) {\n  if ( start === void 0 ) start = 0;\n  if ( step === void 0 ) step = 1;\n\n  var arr = [];\n  for (var i = start; i < end; i += step) {\n    arr.push(i);\n  }\n  return arr\n}\n\nfunction nodeListToArray (nodeList) {\n  return Array.prototype.slice.call(nodeList || [])\n}\n\nfunction onlyUnique (value, index, self) {\n  return self.indexOf(value) === index\n}\n\nvar script$1 = {\n  data: function data () {\n    return {\n      slideClass: {\n        active: false,\n        prev: false,\n        next: false,\n        left: false,\n        right: false\n      }\n    }\n  },\n  created: function created () {\n    try {\n      this.$parent.slides.push(this);\n    } catch (e) {\n      throw new Error('Slide parent must be Carousel.')\n    }\n  },\n  beforeDestroy: function beforeDestroy () {\n    var slides = this.$parent && this.$parent.slides;\n    spliceIfExist(slides, this);\n  }\n};\n\n/* script */\nvar __vue_script__$1 = script$1;\n\n/* template */\nvar __vue_render__$1 = function() {\n  var _vm = this;\n  var _h = _vm.$createElement;\n  var _c = _vm._self._c || _h;\n  return _c(\n    \"div\",\n    { staticClass: \"item\", class: _vm.slideClass },\n    [_vm._t(\"default\")],\n    2\n  )\n};\nvar __vue_staticRenderFns__$1 = [];\n__vue_render__$1._withStripped = true;\n\n  /* style */\n  var __vue_inject_styles__$1 = undefined;\n  /* scoped */\n  var __vue_scope_id__$1 = undefined;\n  /* module identifier */\n  var __vue_module_identifier__$1 = undefined;\n  /* functional template */\n  var __vue_is_functional_template__$1 = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  var __vue_component__$1 = /*#__PURE__*/normalizeComponent(\n    { render: __vue_render__$1, staticRenderFns: __vue_staticRenderFns__$1 },\n    __vue_inject_styles__$1,\n    __vue_script__$1,\n    __vue_scope_id__$1,\n    __vue_is_functional_template__$1,\n    __vue_module_identifier__$1,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nvar EVENTS = {\n  MOUSE_ENTER: 'mouseenter',\n  MOUSE_LEAVE: 'mouseleave',\n  MOUSE_DOWN: 'mousedown',\n  MOUSE_UP: 'mouseup',\n  FOCUS: 'focus',\n  BLUR: 'blur',\n  CLICK: 'click',\n  INPUT: 'input',\n  KEY_DOWN: 'keydown',\n  KEY_UP: 'keyup',\n  KEY_PRESS: 'keypress',\n  RESIZE: 'resize',\n  SCROLL: 'scroll',\n  TOUCH_START: 'touchstart',\n  TOUCH_END: 'touchend'\n};\n\nvar TRIGGERS = {\n  CLICK: 'click',\n  HOVER: 'hover',\n  FOCUS: 'focus',\n  HOVER_FOCUS: 'hover-focus',\n  OUTSIDE_CLICK: 'outside-click',\n  MANUAL: 'manual'\n};\n\nvar PLACEMENTS = {\n  TOP: 'top',\n  RIGHT: 'right',\n  BOTTOM: 'bottom',\n  LEFT: 'left'\n};\n\nfunction isIE11 () {\n  /* istanbul ignore next */\n  return !!window.MSInputMethodContext && !!document.documentMode\n}\n\nfunction isIE10 () {\n  return window.navigator.appVersion.indexOf('MSIE 10') !== -1\n}\n\nfunction getComputedStyle (el) {\n  return window.getComputedStyle(el)\n}\n\nfunction getViewportSize () {\n  /* istanbul ignore next */\n  var width = Math.max(document.documentElement.clientWidth, window.innerWidth) || 0;\n  /* istanbul ignore next */\n  var height = Math.max(document.documentElement.clientHeight, window.innerHeight) || 0;\n  return { width: width, height: height }\n}\n\nvar scrollbarWidth = null;\nvar savedScreenSize = null;\n\nfunction getScrollbarWidth (recalculate) {\n  if ( recalculate === void 0 ) recalculate = false;\n\n  var screenSize = getViewportSize();\n  // return directly when already calculated & not force recalculate & screen size not changed\n  if (scrollbarWidth !== null && !recalculate &&\n    screenSize.height === savedScreenSize.height && screenSize.width === savedScreenSize.width) {\n    return scrollbarWidth\n  }\n  /* istanbul ignore next */\n  if (document.readyState === 'loading') {\n    return null\n  }\n  var div1 = document.createElement('div');\n  var div2 = document.createElement('div');\n  div1.style.width = div2.style.width = div1.style.height = div2.style.height = '100px';\n  div1.style.overflow = 'scroll';\n  div2.style.overflow = 'hidden';\n  document.body.appendChild(div1);\n  document.body.appendChild(div2);\n  scrollbarWidth = Math.abs(div1.scrollHeight - div2.scrollHeight);\n  document.body.removeChild(div1);\n  document.body.removeChild(div2);\n  // save new screen size\n  savedScreenSize = screenSize;\n  return scrollbarWidth\n}\n\nfunction on (element, event, handler) {\n  /* istanbul ignore next */\n  element.addEventListener(event, handler);\n}\n\nfunction off (element, event, handler) {\n  /* istanbul ignore next */\n  element.removeEventListener(event, handler);\n}\n\nfunction isElement (el) {\n  return el && el.nodeType === Node.ELEMENT_NODE\n}\n\nfunction removeFromDom (el) {\n  isElement(el) && isElement(el.parentNode) && el.parentNode.removeChild(el);\n}\n\nfunction ensureElementMatchesFunction () {\n  /* istanbul ignore next */\n  if (!Element.prototype.matches) {\n    Element.prototype.matches =\n      Element.prototype.matchesSelector ||\n      Element.prototype.mozMatchesSelector ||\n      Element.prototype.msMatchesSelector ||\n      Element.prototype.oMatchesSelector ||\n      Element.prototype.webkitMatchesSelector ||\n      function (s) {\n        var matches = (this.document || this.ownerDocument).querySelectorAll(s);\n        var i = matches.length;\n        // eslint-disable-next-line no-empty\n        while (--i >= 0 && matches.item(i) !== this) {}\n        return i > -1\n      };\n  }\n}\n\nfunction addClass (el, className) {\n  if (!isElement(el)) {\n    return\n  }\n  if (el.className) {\n    var classes = el.className.split(' ');\n    if (classes.indexOf(className) < 0) {\n      classes.push(className);\n      el.className = classes.join(' ');\n    }\n  } else {\n    el.className = className;\n  }\n}\n\nfunction removeClass (el, className) {\n  if (!isElement(el)) {\n    return\n  }\n  if (el.className) {\n    var classes = el.className.split(' ');\n    var newClasses = [];\n    for (var i = 0, l = classes.length; i < l; i++) {\n      if (classes[i] !== className) {\n        newClasses.push(classes[i]);\n      }\n    }\n    el.className = newClasses.join(' ');\n  }\n}\n\nfunction hasClass (el, className) {\n  if (!isElement(el)) {\n    return false\n  }\n  var classes = el.className.split(' ');\n  for (var i = 0, l = classes.length; i < l; i++) {\n    if (classes[i] === className) {\n      return true\n    }\n  }\n  return false\n}\n\nfunction setDropdownPosition (dropdown, trigger, options) {\n  if ( options === void 0 ) options = {};\n\n  var doc = document.documentElement;\n  var containerScrollLeft = (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0);\n  var containerScrollTop = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);\n  var rect = trigger.getBoundingClientRect();\n  var dropdownRect = dropdown.getBoundingClientRect();\n  dropdown.style.right = 'auto';\n  dropdown.style.bottom = 'auto';\n  if (options.menuRight) {\n    dropdown.style.left = containerScrollLeft + rect.left + rect.width - dropdownRect.width + 'px';\n  } else {\n    dropdown.style.left = containerScrollLeft + rect.left + 'px';\n  }\n  if (options.dropup) {\n    dropdown.style.top = containerScrollTop + rect.top - dropdownRect.height - 4 + 'px';\n  } else {\n    dropdown.style.top = containerScrollTop + rect.top + rect.height + 'px';\n  }\n}\n\nfunction isAvailableAtPosition (trigger, popup, placement) {\n  var triggerRect = trigger.getBoundingClientRect();\n  var popupRect = popup.getBoundingClientRect();\n  var viewPortSize = getViewportSize();\n  var top = true;\n  var right = true;\n  var bottom = true;\n  var left = true;\n  switch (placement) {\n    case PLACEMENTS.TOP:\n      top = triggerRect.top >= popupRect.height;\n      left = triggerRect.left + triggerRect.width / 2 >= popupRect.width / 2;\n      right = triggerRect.right - triggerRect.width / 2 + popupRect.width / 2 <= viewPortSize.width;\n      break\n    case PLACEMENTS.BOTTOM:\n      bottom = triggerRect.bottom + popupRect.height <= viewPortSize.height;\n      left = triggerRect.left + triggerRect.width / 2 >= popupRect.width / 2;\n      right = triggerRect.right - triggerRect.width / 2 + popupRect.width / 2 <= viewPortSize.width;\n      break\n    case PLACEMENTS.RIGHT:\n      right = triggerRect.right + popupRect.width <= viewPortSize.width;\n      top = triggerRect.top + triggerRect.height / 2 >= popupRect.height / 2;\n      bottom = triggerRect.bottom - triggerRect.height / 2 + popupRect.height / 2 <= viewPortSize.height;\n      break\n    case PLACEMENTS.LEFT:\n      left = triggerRect.left >= popupRect.width;\n      top = triggerRect.top + triggerRect.height / 2 >= popupRect.height / 2;\n      bottom = triggerRect.bottom - triggerRect.height / 2 + popupRect.height / 2 <= viewPortSize.height;\n      break\n  }\n  return top && right && bottom && left\n}\n\nfunction setTooltipPosition (tooltip, trigger, placement, auto, appendTo, positionBy, viewport) {\n  if (!isElement(tooltip) || !isElement(trigger)) {\n    return\n  }\n  var isPopover = tooltip && tooltip.className && tooltip.className.indexOf('popover') >= 0;\n  var containerScrollTop;\n  var containerScrollLeft;\n  if (!isExist(appendTo) || appendTo === 'body' || positionBy === 'body') {\n    var doc = document.documentElement;\n    containerScrollLeft = (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0);\n    containerScrollTop = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);\n  } else {\n    var container = getElementBySelectorOrRef(positionBy || appendTo);\n    containerScrollLeft = container.scrollLeft;\n    containerScrollTop = container.scrollTop;\n  }\n  // auto adjust placement\n  if (auto) {\n    // Try: right -> bottom -> left -> top\n    // Cause the default placement is top\n    var placements = [PLACEMENTS.RIGHT, PLACEMENTS.BOTTOM, PLACEMENTS.LEFT, PLACEMENTS.TOP];\n    // The class switch helper function\n    var changePlacementClass = function (placement) {\n      // console.log(placement)\n      placements.forEach(function (placement) {\n        removeClass(tooltip, placement);\n      });\n      addClass(tooltip, placement);\n    };\n    // No need to adjust if the default placement fits\n    if (!isAvailableAtPosition(trigger, tooltip, placement)) {\n      for (var i = 0, l = placements.length; i < l; i++) {\n        // Re-assign placement class\n        changePlacementClass(placements[i]);\n        // Break if new placement fits\n        if (isAvailableAtPosition(trigger, tooltip, placements[i])) {\n          placement = placements[i];\n          break\n        }\n      }\n      changePlacementClass(placement);\n    }\n  }\n  // fix left and top for tooltip\n  var rect = trigger.getBoundingClientRect();\n  var tooltipRect = tooltip.getBoundingClientRect();\n  var top;\n  var left;\n  if (placement === PLACEMENTS.BOTTOM) {\n    top = containerScrollTop + rect.top + rect.height;\n    left = containerScrollLeft + rect.left + rect.width / 2 - tooltipRect.width / 2;\n  } else if (placement === PLACEMENTS.LEFT) {\n    top = containerScrollTop + rect.top + rect.height / 2 - tooltipRect.height / 2;\n    left = containerScrollLeft + rect.left - tooltipRect.width;\n  } else if (placement === PLACEMENTS.RIGHT) {\n    top = containerScrollTop + rect.top + rect.height / 2 - tooltipRect.height / 2;\n    // https://github.com/uiv-lib/uiv/issues/272\n    // add 1px to fix above issue\n    left = containerScrollLeft + rect.left + rect.width + 1;\n  } else {\n    top = containerScrollTop + rect.top - tooltipRect.height;\n    left = containerScrollLeft + rect.left + rect.width / 2 - tooltipRect.width / 2;\n  }\n  var viewportEl;\n  // viewport option\n  if (isString(viewport)) {\n    viewportEl = document.querySelector(viewport);\n  } else if (isFunction(viewport)) {\n    viewportEl = viewport(trigger);\n  }\n  if (isElement(viewportEl)) {\n    var popoverFix = isPopover ? 11 : 0;\n    var viewportReact = viewportEl.getBoundingClientRect();\n    var viewportTop = containerScrollTop + viewportReact.top;\n    var viewportLeft = containerScrollLeft + viewportReact.left;\n    var viewportBottom = viewportTop + viewportReact.height;\n    var viewportRight = viewportLeft + viewportReact.width;\n    // fix top\n    if (top < viewportTop) {\n      top = viewportTop;\n    } else if (top + tooltipRect.height > viewportBottom) {\n      top = viewportBottom - tooltipRect.height;\n    }\n    // fix left\n    if (left < viewportLeft) {\n      left = viewportLeft;\n    } else if (left + tooltipRect.width > viewportRight) {\n      left = viewportRight - tooltipRect.width;\n    }\n    // fix for popover pointer\n    if (placement === PLACEMENTS.BOTTOM) {\n      top -= popoverFix;\n    } else if (placement === PLACEMENTS.LEFT) {\n      left += popoverFix;\n    } else if (placement === PLACEMENTS.RIGHT) {\n      left -= popoverFix;\n    } else {\n      top += popoverFix;\n    }\n  }\n  // set position finally\n  tooltip.style.top = top + \"px\";\n  tooltip.style.left = left + \"px\";\n}\n\nfunction hasScrollbar (el) {\n  var SCROLL = 'scroll';\n  var hasVScroll = el.scrollHeight > el.clientHeight;\n  var style = getComputedStyle(el);\n  return hasVScroll || style.overflow === SCROLL || style.overflowY === SCROLL\n}\n\nfunction toggleBodyOverflow (enable) {\n  var MODAL_OPEN = 'modal-open';\n  var FIXED_CONTENT = '.navbar-fixed-top, .navbar-fixed-bottom';\n  var body = document.body;\n  if (enable) {\n    removeClass(body, MODAL_OPEN);\n    body.style.paddingRight = null;\n    nodeListToArray(document.querySelectorAll(FIXED_CONTENT)).forEach(function (node) {\n      node.style.paddingRight = null;\n    });\n  } else {\n    var browsersWithFloatingScrollbar = isIE10() || isIE11();\n    var documentHasScrollbar = hasScrollbar(document.documentElement) || hasScrollbar(document.body);\n    if (documentHasScrollbar && !browsersWithFloatingScrollbar) {\n      var scrollbarWidth = getScrollbarWidth();\n      body.style.paddingRight = scrollbarWidth + \"px\";\n      nodeListToArray(document.querySelectorAll(FIXED_CONTENT)).forEach(function (node) {\n        node.style.paddingRight = scrollbarWidth + \"px\";\n      });\n    }\n    addClass(body, MODAL_OPEN);\n  }\n}\n\nfunction getClosest (el, selector) {\n  ensureElementMatchesFunction();\n  var parent;\n  var _el = el;\n  while (_el) {\n    parent = _el.parentElement;\n    if (parent && parent.matches(selector)) {\n      return parent\n    }\n    _el = parent;\n  }\n  return null\n}\n\nfunction getParents (el, selector, until) {\n  if ( until === void 0 ) until = null;\n\n  ensureElementMatchesFunction();\n  var parents = [];\n  var parent = el.parentElement;\n  while (parent) {\n    if (parent.matches(selector)) {\n      parents.push(parent);\n    } else if (until && (until === parent || parent.matches(until))) {\n      break\n    }\n    parent = parent.parentElement;\n  }\n  return parents\n}\n\nfunction focus (el) {\n  if (!isElement(el)) {\n    return\n  }\n  el.getAttribute('tabindex') ? null : el.setAttribute('tabindex', '-1');\n  el.focus();\n}\n\nvar MODAL_BACKDROP = 'modal-backdrop';\n\nfunction getOpenModals () {\n  return document.querySelectorAll((\".\" + MODAL_BACKDROP))\n}\n\nfunction getOpenModalNum () {\n  return getOpenModals().length\n}\n\nfunction getElementBySelectorOrRef (q) {\n  if (isString(q)) { // is selector\n    return document.querySelector(q)\n  } else if (isElement(q)) { // is element\n    return q\n  } else if (isElement(q.$el)) { // is component\n    return q.$el\n  } else {\n    return null\n  }\n}\n\nvar COLLAPSE = 'collapse';\nvar IN = 'in';\nvar COLLAPSING = 'collapsing';\n\nvar Collapse = {\n  render: function render (h) {\n    return h(this.tag, {}, this.$slots.default)\n  },\n  props: {\n    tag: {\n      type: String,\n      default: 'div'\n    },\n    value: {\n      type: Boolean,\n      default: false\n    },\n    transition: {\n      type: Number,\n      default: 350\n    }\n  },\n  data: function data () {\n    return {\n      timeoutId: 0\n    }\n  },\n  watch: {\n    value: function value (show) {\n      this.toggle(show);\n    }\n  },\n  mounted: function mounted () {\n    var el = this.$el;\n    addClass(el, COLLAPSE);\n    if (this.value) {\n      addClass(el, IN);\n    }\n  },\n  methods: {\n    toggle: function toggle (show) {\n      var this$1 = this;\n\n      clearTimeout(this.timeoutId);\n      var el = this.$el;\n      if (show) {\n        this.$emit('show');\n        removeClass(el, COLLAPSE);\n        el.style.height = 'auto';\n        var height = window.getComputedStyle(el).height;\n        el.style.height = null;\n        addClass(el, COLLAPSING);\n        el.offsetHeight; // force repaint\n        el.style.height = height;\n        this.timeoutId = setTimeout(function () {\n          removeClass(el, COLLAPSING);\n          addClass(el, COLLAPSE);\n          addClass(el, IN);\n          el.style.height = null;\n          this$1.timeoutId = 0;\n          this$1.$emit('shown');\n        }, this.transition);\n      } else {\n        this.$emit('hide');\n        el.style.height = window.getComputedStyle(el).height;\n        removeClass(el, IN);\n        removeClass(el, COLLAPSE);\n        el.offsetHeight;\n        el.style.height = null;\n        addClass(el, COLLAPSING);\n        this.timeoutId = setTimeout(function () {\n          addClass(el, COLLAPSE);\n          removeClass(el, COLLAPSING);\n          el.style.height = null;\n          this$1.timeoutId = 0;\n          this$1.$emit('hidden');\n        }, this.transition);\n      }\n    }\n  }\n};\n\nvar DEFAULT_TAG = 'div';\n\nvar Dropdown = {\n  render: function render (h) {\n    return h(\n      this.tag,\n      {\n        class: {\n          'btn-group': this.tag === DEFAULT_TAG,\n          dropdown: !this.dropup,\n          dropup: this.dropup,\n          open: this.show\n        }\n      },\n      [\n        this.$slots.default,\n        h(\n          'ul',\n          {\n            class: {\n              'dropdown-menu': true,\n              'dropdown-menu-right': this.menuRight\n            },\n            ref: 'dropdown'\n          },\n          [this.$slots.dropdown]\n        )\n      ]\n    )\n  },\n  props: {\n    tag: {\n      type: String,\n      default: DEFAULT_TAG\n    },\n    appendToBody: {\n      type: Boolean,\n      default: false\n    },\n    value: Boolean,\n    dropup: {\n      type: Boolean,\n      default: false\n    },\n    menuRight: {\n      type: Boolean,\n      default: false\n    },\n    disabled: {\n      type: Boolean,\n      default: false\n    },\n    notCloseElements: Array,\n    positionElement: null\n  },\n  data: function data () {\n    return {\n      show: false,\n      triggerEl: undefined\n    }\n  },\n  watch: {\n    value: function value (v) {\n      this.toggle(v);\n    }\n  },\n  mounted: function mounted () {\n    this.initTrigger();\n    if (this.triggerEl) {\n      on(this.triggerEl, EVENTS.CLICK, this.toggle);\n      on(this.triggerEl, EVENTS.KEY_DOWN, this.onKeyPress);\n    }\n    on(this.$refs.dropdown, EVENTS.KEY_DOWN, this.onKeyPress);\n    on(window, EVENTS.CLICK, this.windowClicked);\n    on(window, EVENTS.TOUCH_END, this.windowClicked);\n    if (this.value) {\n      this.toggle(true);\n    }\n  },\n  beforeDestroy: function beforeDestroy () {\n    this.removeDropdownFromBody();\n    if (this.triggerEl) {\n      off(this.triggerEl, EVENTS.CLICK, this.toggle);\n      off(this.triggerEl, EVENTS.KEY_DOWN, this.onKeyPress);\n    }\n    off(this.$refs.dropdown, EVENTS.KEY_DOWN, this.onKeyPress);\n    off(window, EVENTS.CLICK, this.windowClicked);\n    off(window, EVENTS.TOUCH_END, this.windowClicked);\n  },\n  methods: {\n    getFocusItem: function getFocusItem () {\n      var dropdownEl = this.$refs.dropdown;\n      /* istanbul ignore next */\n      return dropdownEl.querySelector('li > a:focus')\n    },\n    onKeyPress: function onKeyPress (event) {\n      if (this.show) {\n        var dropdownEl = this.$refs.dropdown;\n        var keyCode = event.keyCode;\n        if (keyCode === 27) {\n          // esc\n          this.toggle(false);\n          this.triggerEl && this.triggerEl.focus();\n        } else if (keyCode === 13) {\n          // enter\n          var currentFocus = this.getFocusItem();\n          currentFocus && currentFocus.click();\n        } else if (keyCode === 38 || keyCode === 40) {\n          // up || down\n          event.preventDefault();\n          event.stopPropagation();\n          var currentFocus$1 = this.getFocusItem();\n          var items = dropdownEl.querySelectorAll('li:not(.disabled) > a');\n          if (!currentFocus$1) {\n            focus(items[0]);\n          } else {\n            for (var i = 0; i < items.length; i++) {\n              if (currentFocus$1 === items[i]) {\n                if (keyCode === 38 && i < items.length > 0) {\n                  focus(items[i - 1]);\n                } else if (keyCode === 40 && i < items.length - 1) {\n                  focus(items[i + 1]);\n                }\n                break\n              }\n            }\n          }\n        }\n      }\n    },\n    initTrigger: function initTrigger () {\n      var trigger = this.$el.querySelector('[data-role=\"trigger\"]') || this.$el.querySelector('.dropdown-toggle') || this.$el.firstChild;\n      this.triggerEl = trigger && trigger !== this.$refs.dropdown ? trigger : null;\n    },\n    toggle: function toggle (show) {\n      if (this.disabled) {\n        return\n      }\n      if (isBoolean(show)) {\n        this.show = show;\n      } else {\n        this.show = !this.show;\n      }\n      if (this.appendToBody) {\n        this.show ? this.appendDropdownToBody() : this.removeDropdownFromBody();\n      }\n      this.$emit('input', this.show);\n    },\n    windowClicked: function windowClicked (event) {\n      var target = event.target;\n      if (this.show && target) {\n        var targetInNotCloseElements = false;\n        if (this.notCloseElements) {\n          for (var i = 0, l = this.notCloseElements.length; i < l; i++) {\n            var isTargetInElement = this.notCloseElements[i].contains(target);\n            var shouldBreak = isTargetInElement;\n            /* istanbul ignore else */\n            if (this.appendToBody) {\n              var isTargetInDropdown = this.$refs.dropdown.contains(target);\n              var isElInElements = this.notCloseElements.indexOf(this.$el) >= 0;\n              shouldBreak = isTargetInElement || (isTargetInDropdown && isElInElements);\n            }\n            if (shouldBreak) {\n              targetInNotCloseElements = true;\n              break\n            }\n          }\n        }\n        var targetInDropdownBody = this.$refs.dropdown.contains(target);\n        var targetInTrigger = this.$el.contains(target) && !targetInDropdownBody;\n        // normally, a dropdown select event is handled by @click that trigger after @touchend\n        // then @touchend event have to be ignore in this case\n        var targetInDropdownAndIsTouchEvent = targetInDropdownBody && event.type === 'touchend';\n        if (!targetInTrigger && !targetInNotCloseElements && !targetInDropdownAndIsTouchEvent) {\n          this.toggle(false);\n        }\n      }\n    },\n    appendDropdownToBody: function appendDropdownToBody () {\n      try {\n        var el = this.$refs.dropdown;\n        el.style.display = 'block';\n        document.body.appendChild(el);\n        var positionElement = this.positionElement || this.$el;\n        setDropdownPosition(el, positionElement, this);\n      } catch (e) {\n        // Silent\n      }\n    },\n    removeDropdownFromBody: function removeDropdownFromBody () {\n      try {\n        var el = this.$refs.dropdown;\n        el.removeAttribute('style');\n        this.$el.appendChild(el);\n      } catch (e) {\n        // Silent\n      }\n    }\n  }\n};\n\nvar defaultLang = {\n  uiv: {\n    datePicker: {\n      clear: 'Clear',\n      today: 'Today',\n      month: 'Month',\n      month1: 'January',\n      month2: 'February',\n      month3: 'March',\n      month4: 'April',\n      month5: 'May',\n      month6: 'June',\n      month7: 'July',\n      month8: 'August',\n      month9: 'September',\n      month10: 'October',\n      month11: 'November',\n      month12: 'December',\n      year: 'Year',\n      week1: 'Mon',\n      week2: 'Tue',\n      week3: 'Wed',\n      week4: 'Thu',\n      week5: 'Fri',\n      week6: 'Sat',\n      week7: 'Sun'\n    },\n    timePicker: {\n      am: 'AM',\n      pm: 'PM'\n    },\n    modal: {\n      cancel: 'Cancel',\n      ok: 'OK'\n    },\n    multiSelect: {\n      placeholder: 'Select...',\n      filterPlaceholder: 'Search...'\n    }\n  }\n};\n\n// https://github.com/ElemeFE/element/blob/dev/src/locale/index.js\n\nvar lang = defaultLang;\n\nvar i18nHandler = function () {\n  var vuei18n = Object.getPrototypeOf(this).$t;\n  /* istanbul ignore else */\n  /* istanbul ignore next */\n  if (isFunction(vuei18n)) {\n    /* istanbul ignore next */\n    try {\n      return vuei18n.apply(this, arguments)\n    } catch (err) {\n      return this.$t.apply(this, arguments)\n    }\n  }\n};\n\nvar t = function (path, options) {\n  options = options || {};\n  var value;\n  try {\n    value = i18nHandler.apply(this, arguments);\n    /* istanbul ignore next */\n    if (isExist(value) && !options.$$locale) {\n      return value\n    }\n  } catch (e) {\n    // ignore\n  }\n  var array = path.split('.');\n  var current = options.$$locale || lang;\n\n  for (var i = 0, j = array.length; i < j; i++) {\n    var property = array[i];\n    value = current[property];\n    if (i === j - 1) { return value }\n    if (!value) { return '' }\n    current = value;\n  }\n  /* istanbul ignore next */\n  return ''\n};\n\nvar use = function (l) {\n  lang = l || lang;\n};\n\nvar i18n = function (fn) {\n  i18nHandler = fn || i18nHandler;\n};\n\nvar locale = { use: use, t: t, i18n: i18n };\n\nvar Local = {\n  methods: {\n    t: function t$1 () {\n      var arguments$1 = arguments;\n\n      var args = [];\n      for (var i = 0; i < arguments.length; ++i) {\n        args.push(arguments$1[i]);\n      }\n      args[1] = assign({}, { $$locale: this.locale }, args[1]);\n      return t.apply(this, args)\n    }\n  },\n  props: {\n    locale: Object\n  }\n};\n\nvar e=function(){return (e=Object.assign||function(e){for(var t,r=1,s=arguments.length;r props\n    href: String,\n    target: String,\n    //  props\n    to: null,\n    replace: {\n      type: Boolean,\n      default: false\n    },\n    append: {\n      type: Boolean,\n      default: false\n    },\n    exact: {\n      type: Boolean,\n      default: false\n    }\n  }\n};\n\nvar BtnGroup = {\n  functional: true,\n  render: function render (h, ref) {\n    var obj;\n\n    var props = ref.props;\n    var children = ref.children;\n    var data = ref.data;\n    return h(\n      'div',\n      a(data, {\n        class: ( obj = {\n          'btn-group': !props.vertical,\n          'btn-group-vertical': props.vertical,\n          'btn-group-justified': props.justified\n        }, obj[(\"btn-group-\" + (props.size))] = props.size, obj ),\n        attrs: {\n          role: 'group',\n          'data-toggle': 'buttons'\n        }\n      }),\n      children\n    )\n  },\n  props: {\n    size: String,\n    vertical: {\n      type: Boolean,\n      default: false\n    },\n    justified: {\n      type: Boolean,\n      default: false\n    }\n  }\n};\n\nvar INPUT_TYPE_CHECKBOX = 'checkbox';\nvar INPUT_TYPE_RADIO = 'radio';\n\nvar Btn = {\n  functional: true,\n  mixins: [linkMixin],\n  render: function render (h, ref) {\n    var children = ref.children;\n    var props = ref.props;\n    var data = ref.data;\n\n    // event listeners\n    var listeners = data.on || {};\n    // checkbox: model contain inputValue\n    // radio: model === inputValue\n    var isInputActive = props.inputType === INPUT_TYPE_CHECKBOX ? props.value.indexOf(props.inputValue) >= 0 : props.value === props.inputValue;\n    // button class\n    var classes = {\n      btn: true,\n      active: props.inputType ? isInputActive : props.active,\n      disabled: props.disabled,\n      'btn-block': props.block\n    };\n    classes[(\"btn-\" + (props.type))] = Boolean(props.type);\n    classes[(\"btn-\" + (props.size))] = Boolean(props.size);\n    // prevent event for disabled links\n    var on = {\n      click: function click (e) {\n        if (props.disabled && e instanceof Event) {\n          e.preventDefault();\n          e.stopPropagation();\n        }\n      }\n    };\n    // render params\n    var tag, options, slot;\n\n    if (props.href) {\n      // is native link\n      tag = 'a';\n      slot = children;\n      options = a(data, {\n        on: on,\n        class: classes,\n        attrs: {\n          role: 'button',\n          href: props.href,\n          target: props.target\n        }\n      });\n    } else if (props.to) {\n      // is vue router link\n      tag = 'router-link';\n      slot = children;\n      options = a(data, {\n        nativeOn: on,\n        class: classes,\n        props: {\n          event: props.disabled ? '' : 'click', // prevent nav while disabled\n          to: props.to,\n          replace: props.replace,\n          append: props.append,\n          exact: props.exact\n        },\n        attrs: {\n          role: 'button'\n        }\n      });\n    } else if (props.inputType) {\n      // is input checkbox or radio\n      tag = 'label';\n      options = a(data, {\n        on: on,\n        class: classes\n      });\n      slot = [\n        h('input', {\n          attrs: {\n            autocomplete: 'off',\n            type: props.inputType,\n            checked: isInputActive ? 'checked' : null,\n            disabled: props.disabled\n          },\n          domProps: {\n            checked: isInputActive // required\n          },\n          on: {\n            input: function input (evt) {\n              evt.stopPropagation();\n            },\n            change: function change () {\n              if (props.inputType === INPUT_TYPE_CHECKBOX) {\n                var valueCopied = props.value.slice();\n                if (isInputActive) {\n                  valueCopied.splice(valueCopied.indexOf(props.inputValue), 1);\n                } else {\n                  valueCopied.push(props.inputValue);\n                }\n                listeners.input(valueCopied);\n              } else {\n                listeners.input(props.inputValue);\n              }\n            }\n          }\n        }),\n        children\n      ];\n    } else if (props.justified) {\n      // is in justified btn-group\n      tag = BtnGroup;\n      options = {};\n      slot = [\n        h('button', a(data, {\n          on: on,\n          class: classes,\n          attrs: {\n            type: props.nativeType,\n            disabled: props.disabled\n          }\n        }), children)\n      ];\n    } else {\n      // is button\n      tag = 'button';\n      slot = children;\n      options = a(data, {\n        on: on,\n        class: classes,\n        attrs: {\n          type: props.nativeType,\n          disabled: props.disabled\n        }\n      });\n    }\n\n    return h(tag, options, slot)\n  },\n  props: {\n    justified: {\n      type: Boolean,\n      default: false\n    },\n    type: {\n      type: String,\n      default: 'default'\n    },\n    nativeType: {\n      type: String,\n      default: 'button'\n    },\n    size: String,\n    block: {\n      type: Boolean,\n      default: false\n    },\n    active: {\n      type: Boolean,\n      default: false\n    },\n    disabled: {\n      type: Boolean,\n      default: false\n    },\n    //  ourselves\n\n\n    if (!this.$scopedSlots.manual) {\n      var props = pick(this.$props, portalProps);\n      return h(Portal, {\n        props: props,\n        attrs: this.$attrs,\n        on: this.$listeners,\n        scopedSlots: this.$scopedSlots\n      }, this.$slots.default);\n    } // else, we render the scoped slot\n\n\n    var content = this.$scopedSlots.manual({\n      to: this.to\n    }); // if user used  for the scoped slot\n    // content will be an array\n\n    if (Array.isArray(content)) {\n      content = content[0];\n    }\n\n    if (!content) { return h(); }\n    return content;\n  }\n});\n\nvar ACTIVE_CLASS = 'active';\nvar IN_CLASS = 'in';\n\nvar script$3 = {\n  components: { Portal: Portal },\n  props: {\n    title: {\n      type: String,\n      default: 'Tab Title'\n    },\n    disabled: {\n      type: Boolean,\n      default: false\n    },\n    tabClasses: {\n      type: Object,\n      default: function () { return {} }\n    },\n    group: String,\n    pullRight: {\n      type: Boolean,\n      default: false\n    },\n    hidden: {\n      type: Boolean,\n      default: false\n    }\n  },\n  data: function data () {\n    return {\n      active: true,\n      transition: 150\n    }\n  },\n  watch: {\n    active: function active (active$1) {\n      var this$1 = this;\n\n      if (active$1) {\n        setTimeout(function () {\n          addClass(this$1.$el, ACTIVE_CLASS);\n          this$1.$el.offsetHeight;\n          addClass(this$1.$el, IN_CLASS);\n          try {\n            this$1.$parent.$emit('changed', this$1.$parent.activeIndex);\n          } catch (e) {\n            throw new Error(' parent must be .')\n          }\n        }, this.transition);\n      } else {\n        removeClass(this.$el, IN_CLASS);\n        setTimeout(function () {\n          removeClass(this$1.$el, ACTIVE_CLASS);\n        }, this.transition);\n      }\n    }\n  },\n  created: function created () {\n    try {\n      this.$parent.tabs.push(this);\n    } catch (e) {\n      throw new Error(' parent must be .')\n    }\n  },\n  beforeDestroy: function beforeDestroy () {\n    var tabs = this.$parent && this.$parent.tabs;\n    spliceIfExist(tabs, this);\n  },\n  methods: {\n    show: function show () {\n      var this$1 = this;\n\n      this.$nextTick(function () {\n        addClass(this$1.$el, ACTIVE_CLASS);\n        addClass(this$1.$el, IN_CLASS);\n      });\n    }\n  }\n};\n\n/* script */\nvar __vue_script__$3 = script$3;\n\n/* template */\nvar __vue_render__$3 = function() {\n  var _vm = this;\n  var _h = _vm.$createElement;\n  var _c = _vm._self._c || _h;\n  return _c(\n    \"div\",\n    {\n      staticClass: \"tab-pane\",\n      class: { fade: _vm.transition > 0 },\n      attrs: { role: \"tabpanel\" }\n    },\n    [\n      _vm._t(\"default\"),\n      _vm._v(\" \"),\n      _c(\"portal\", { attrs: { to: _vm._uid.toString() } }, [_vm._t(\"title\")], 2)\n    ],\n    2\n  )\n};\nvar __vue_staticRenderFns__$3 = [];\n__vue_render__$3._withStripped = true;\n\n  /* style */\n  var __vue_inject_styles__$3 = undefined;\n  /* scoped */\n  var __vue_scope_id__$3 = undefined;\n  /* module identifier */\n  var __vue_module_identifier__$3 = undefined;\n  /* functional template */\n  var __vue_is_functional_template__$3 = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  var __vue_component__$3 = /*#__PURE__*/normalizeComponent(\n    { render: __vue_render__$3, staticRenderFns: __vue_staticRenderFns__$3 },\n    __vue_inject_styles__$3,\n    __vue_script__$3,\n    __vue_scope_id__$3,\n    __vue_is_functional_template__$3,\n    __vue_module_identifier__$3,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nvar BEFORE_CHANGE_EVENT = 'before-change';\n\nvar script$4 = {\n  components: { Dropdown: Dropdown, PortalTarget: PortalTarget },\n  props: {\n    value: {\n      type: Number,\n      validator: function (v) { return v >= 0; }\n    },\n    transition: {\n      type: Number,\n      default: 150\n    },\n    justified: Boolean,\n    pills: Boolean,\n    stacked: Boolean,\n    customNavClass: null,\n    customContentClass: null\n  },\n  data: function data () {\n    return {\n      tabs: [],\n      activeIndex: 0 // Make v-model not required\n    }\n  },\n  watch: {\n    value: {\n      immediate: true,\n      handler: function handler (value) {\n        if (isNumber(value)) {\n          this.activeIndex = value;\n          this.selectCurrent();\n        }\n      }\n    },\n    tabs: function tabs (tabs$1) {\n      var this$1 = this;\n\n      tabs$1.forEach(function (tab, index) {\n        tab.transition = this$1.transition;\n        if (index === this$1.activeIndex) {\n          tab.show();\n        }\n      });\n      this.selectCurrent();\n    }\n  },\n  computed: {\n    navClasses: function navClasses () {\n      var obj;\n\n      var tabClasses = {\n        nav: true,\n        'nav-justified': this.justified,\n        'nav-tabs': !this.pills,\n        'nav-pills': this.pills,\n        'nav-stacked': this.stacked && this.pills\n      };\n      var customNavClass = this.customNavClass;\n      if (isExist(customNavClass)) {\n        if (isString(customNavClass)) {\n          return assign({}, tabClasses, ( obj = {}, obj[customNavClass] = true, obj ))\n        } else {\n          return assign({}, tabClasses, customNavClass)\n        }\n      } else {\n        return tabClasses\n      }\n    },\n    contentClasses: function contentClasses () {\n      var obj;\n\n      var contentClasses = {\n        'tab-content': true\n      };\n      var customContentClass = this.customContentClass;\n      if (isExist(customContentClass)) {\n        if (isString(customContentClass)) {\n          return assign({}, contentClasses, ( obj = {}, obj[customContentClass] = true, obj ))\n        } else {\n          return assign({}, contentClasses, customContentClass)\n        }\n      } else {\n        return contentClasses\n      }\n    },\n    groupedTabs: function groupedTabs () {\n      var tabs = [];\n      var hash = {};\n      this.tabs.forEach(function (tab) {\n        if (tab.group) {\n          if (hasOwnProperty(hash, tab.group)) {\n            tabs[hash[tab.group]].tabs.push(tab);\n          } else {\n            tabs.push({\n              tabs: [tab],\n              group: tab.group\n            });\n            hash[tab.group] = tabs.length - 1;\n          }\n          if (tab.active) {\n            tabs[hash[tab.group]].active = true;\n          }\n          if (tab.pullRight) {\n            tabs[hash[tab.group]].pullRight = true;\n          }\n        } else {\n          tabs.push(tab);\n        }\n      });\n      tabs = tabs.map(function (tab) {\n        if (Array.isArray(tab.tabs)) {\n          tab.hidden = tab.tabs.filter(function (v) { return v.hidden; }).length === tab.tabs.length;\n        }\n        return tab\n      });\n      return tabs\n    }\n  },\n  methods: {\n    getTabClasses: function getTabClasses (tab, isSubTab) {\n      if ( isSubTab === void 0 ) isSubTab = false;\n\n      var defaultClasses = {\n        active: tab.active,\n        disabled: tab.disabled,\n        'pull-right': tab.pullRight && !isSubTab\n      };\n\n      // return with new classes added to tab\n      return assign(defaultClasses, tab.tabClasses)\n    },\n    selectCurrent: function selectCurrent () {\n      var this$1 = this;\n\n      var found = false;\n      this.tabs.forEach(function (tab, index) {\n        if (index === this$1.activeIndex) {\n          found = !tab.active;\n          tab.active = true;\n        } else {\n          tab.active = false;\n        }\n      });\n      if (found) {\n        this.$emit('change', this.activeIndex);\n      }\n    },\n    selectValidate: function selectValidate (index) {\n      var this$1 = this;\n\n      if (isFunction(this.$listeners[BEFORE_CHANGE_EVENT])) {\n        this.$emit(BEFORE_CHANGE_EVENT, this.activeIndex, index, function (result) {\n          if (!isExist(result)) {\n            this$1.$select(index);\n          }\n        });\n      } else {\n        this.$select(index);\n      }\n    },\n    select: function select (index) {\n      if (!this.tabs[index].disabled && index !== this.activeIndex) {\n        this.selectValidate(index);\n      }\n    },\n    $select: function $select (index) {\n      if (isNumber(this.value)) {\n        this.$emit('input', index);\n      } else {\n        this.activeIndex = index;\n        this.selectCurrent();\n      }\n    }\n  }\n};\n\n/* script */\nvar __vue_script__$4 = script$4;\n\n/* template */\nvar __vue_render__$4 = function() {\n  var _vm = this;\n  var _h = _vm.$createElement;\n  var _c = _vm._self._c || _h;\n  return _c(\"section\", [\n    _c(\n      \"ul\",\n      { class: _vm.navClasses, attrs: { role: \"tablist\" } },\n      [\n        _vm._l(_vm.groupedTabs, function(tab, index) {\n          return [\n            tab.tabs\n              ? _c(\n                  \"dropdown\",\n                  {\n                    directives: [\n                      {\n                        name: \"show\",\n                        rawName: \"v-show\",\n                        value: !tab.hidden,\n                        expression: \"!tab.hidden\"\n                      }\n                    ],\n                    class: _vm.getTabClasses(tab),\n                    attrs: { role: \"presentation\", tag: \"li\" }\n                  },\n                  [\n                    _c(\n                      \"a\",\n                      {\n                        staticClass: \"dropdown-toggle\",\n                        attrs: { role: \"tab\", href: \"#\" },\n                        on: {\n                          click: function($event) {\n                            $event.preventDefault();\n                          }\n                        }\n                      },\n                      [\n                        _vm._v(_vm._s(tab.group) + \" \"),\n                        _c(\"span\", { staticClass: \"caret\" })\n                      ]\n                    ),\n                    _vm._v(\" \"),\n                    _c(\n                      \"template\",\n                      { slot: \"dropdown\" },\n                      _vm._l(tab.tabs, function(subTab) {\n                        return _c(\n                          \"li\",\n                          {\n                            directives: [\n                              {\n                                name: \"show\",\n                                rawName: \"v-show\",\n                                value: !subTab.hidden,\n                                expression: \"!subTab.hidden\"\n                              }\n                            ],\n                            class: _vm.getTabClasses(subTab, true)\n                          },\n                          [\n                            _c(\n                              \"a\",\n                              {\n                                attrs: { href: \"#\" },\n                                on: {\n                                  click: function($event) {\n                                    $event.preventDefault();\n                                    _vm.select(_vm.tabs.indexOf(subTab));\n                                  }\n                                }\n                              },\n                              [_vm._v(_vm._s(subTab.title))]\n                            )\n                          ]\n                        )\n                      }),\n                      0\n                    )\n                  ],\n                  2\n                )\n              : _c(\n                  \"li\",\n                  {\n                    directives: [\n                      {\n                        name: \"show\",\n                        rawName: \"v-show\",\n                        value: !tab.hidden,\n                        expression: \"!tab.hidden\"\n                      }\n                    ],\n                    class: _vm.getTabClasses(tab),\n                    attrs: { role: \"presentation\" }\n                  },\n                  [\n                    tab.$slots.title\n                      ? _c(\n                          \"a\",\n                          {\n                            attrs: { role: \"tab\", href: \"#\" },\n                            on: {\n                              click: function($event) {\n                                $event.preventDefault();\n                                _vm.select(_vm.tabs.indexOf(tab));\n                              }\n                            }\n                          },\n                          [\n                            _c(\"portal-target\", {\n                              attrs: { name: tab._uid.toString() }\n                            })\n                          ],\n                          1\n                        )\n                      : _c(\"a\", {\n                          attrs: { role: \"tab\", href: \"#\" },\n                          domProps: { textContent: _vm._s(tab.title) },\n                          on: {\n                            click: function($event) {\n                              $event.preventDefault();\n                              _vm.select(_vm.tabs.indexOf(tab));\n                            }\n                          }\n                        })\n                  ]\n                )\n          ]\n        }),\n        _vm._v(\" \"),\n        !_vm.justified && _vm.$slots[\"nav-right\"]\n          ? _c(\"li\", { staticClass: \"pull-right\" }, [_vm._t(\"nav-right\")], 2)\n          : _vm._e()\n      ],\n      2\n    ),\n    _vm._v(\" \"),\n    _c(\"div\", { class: _vm.contentClasses }, [_vm._t(\"default\")], 2)\n  ])\n};\nvar __vue_staticRenderFns__$4 = [];\n__vue_render__$4._withStripped = true;\n\n  /* style */\n  var __vue_inject_styles__$4 = undefined;\n  /* scoped */\n  var __vue_scope_id__$4 = undefined;\n  /* module identifier */\n  var __vue_module_identifier__$4 = undefined;\n  /* functional template */\n  var __vue_is_functional_template__$4 = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  var __vue_component__$4 = /*#__PURE__*/normalizeComponent(\n    { render: __vue_render__$4, staticRenderFns: __vue_staticRenderFns__$4 },\n    __vue_inject_styles__$4,\n    __vue_script__$4,\n    __vue_scope_id__$4,\n    __vue_is_functional_template__$4,\n    __vue_module_identifier__$4,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nfunction pad (value, num) {\n  value = value + '';\n  for (var i = num - value.length; i > 0; i--) {\n    value = '0' + value;\n  }\n  return value\n}\n\nvar monthNames = [\n  'January',\n  'February',\n  'March',\n  'April',\n  'May',\n  'June',\n  'July',\n  'August',\n  'September',\n  'October',\n  'November',\n  'December'\n];\n\n/**\n * Get total days number in a month.\n * because we're using 0 as the day so that it returns the last day\n * of the last month, so you have to add 1 to the month number\n * so it returns the correct amount of days.\n * https://stackoverflow.com/questions/1184334/get-number-days-in-a-specified-month-using-javascript\n * @param month 0-based\n * @param year\n * @returns {number}\n */\nfunction daysInMonth (month, year) {\n  return new Date(year, month + 1, 0).getDate()\n}\n\nfunction stringify (date, format) {\n  try {\n    var year = date.getFullYear();\n    var month = date.getMonth() + 1;\n    var day = date.getDate();\n    var monthName = monthNames[month - 1];\n    return format\n      .replace(/yyyy/g, year)\n      .replace(/MMMM/g, monthName)\n      .replace(/MMM/g, monthName.substring(0, 3))\n      .replace(/MM/g, pad(month, 2))\n      .replace(/dd/g, pad(day, 2))\n      .replace(/yy/g, year)\n      .replace(/M(?!a)/g, month)\n      .replace(/d/g, day)\n  } catch (e) {\n    return ''\n  }\n}\n\nfunction convertDateToUTC (date) {\n  return new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds())\n}\n\n/**\n * https://stackoverflow.com/questions/6117814/get-week-of-year-in-javascript-like-in-php\n * For a given date, get the ISO week number\n * Based on information at:\n *    http://www.merlyn.demon.co.uk/weekcalc.htm#WNR\n *\n * Algorithm is to find nearest thursday, it's year\n * is the year of the week number. Then get weeks\n * between that date and the first day of that year.\n *\n * Note that dates in one year can be weeks of previous\n * or next year, overlap is up to 3 days.\n *\n * e.g. 2014/12/29 is Monday in week  1 of 2015\n *      2012/1/1   is Sunday in week 52 of 2011\n *\n * @param {number} d.year year of date\n * @param {number} d.month month of date\n * @param {number} d.date date of date\n * @returns {number}\n */\nfunction getWeekNumber (d) {\n  // Copy date so don't modify original\n  var _d = new Date(Date.UTC(d.year, d.month, d.date));\n  // Set to nearest Thursday: current date + 4 - current day number\n  // Make Sunday's day number 7\n  _d.setUTCDate(_d.getUTCDate() + 4 - (_d.getUTCDay() || 7));\n  // Get first day of year\n  var yearStart = new Date(Date.UTC(_d.getUTCFullYear(), 0, 1));\n  // Calculate full weeks to nearest Thursday\n  return Math.ceil((((_d - yearStart) / 86400000) + 1) / 7)\n}\n\nvar script$5 = {\n  mixins: [Local],\n  props: {\n    month: Number,\n    year: Number,\n    date: Date,\n    today: Date,\n    limit: Object,\n    weekStartsWith: Number,\n    iconControlLeft: String,\n    iconControlRight: String,\n    dateClass: Function,\n    yearMonthFormatter: Function,\n    weekNumbers: Boolean\n  },\n  components: { Btn: Btn },\n  computed: {\n    weekDays: function weekDays () {\n      var days = [];\n      var firstDay = this.weekStartsWith;\n      while (days.length < 7) {\n        days.push(firstDay++);\n        if (firstDay > 6) {\n          firstDay = 0;\n        }\n      }\n      return days\n    },\n    yearMonthStr: function yearMonthStr () {\n      if (this.yearMonthFormatter) {\n        return this.yearMonthFormatter(this.year, this.month)\n      } else {\n        return isExist(this.month) ? ((this.year) + \" \" + (this.t((\"uiv.datePicker.month\" + (this.month + 1))))) : this.year\n      }\n    },\n    monthDayRows: function monthDayRows () {\n      var rows = [];\n      var firstDay = new Date(this.year, this.month, 1);\n      var prevMonthLastDate = new Date(this.year, this.month, 0).getDate();\n      var startIndex = firstDay.getDay();\n      // console.log(startIndex)\n      var daysNum = daysInMonth(this.month, this.year);\n      var weekOffset = 0;\n      if (this.weekStartsWith > startIndex) {\n        weekOffset = 7 - this.weekStartsWith;\n      } else {\n        weekOffset = 0 - this.weekStartsWith;\n      }\n      // console.log(prevMonthLastDate, startIndex, daysNum)\n      for (var i = 0; i < 6; i++) {\n        rows.push([]);\n        for (var j = 0 - weekOffset; j < 7 - weekOffset; j++) {\n          var currentIndex = i * 7 + j;\n          var date = { year: this.year, disabled: false };\n          // date in and not in current month\n          if (currentIndex < startIndex) {\n            date.date = prevMonthLastDate - startIndex + currentIndex + 1;\n            if (this.month > 0) {\n              date.month = this.month - 1;\n            } else {\n              date.month = 11;\n              date.year--;\n            }\n          } else if (currentIndex < startIndex + daysNum) {\n            date.date = currentIndex - startIndex + 1;\n            date.month = this.month;\n          } else {\n            date.date = currentIndex - startIndex - daysNum + 1;\n            if (this.month < 11) {\n              date.month = this.month + 1;\n            } else {\n              date.month = 0;\n              date.year++;\n            }\n          }\n          // process limit dates\n          var dateObj = new Date(date.year, date.month, date.date);\n          var afterFrom = true;\n          var beforeTo = true;\n          if (this.limit && this.limit.from) {\n            afterFrom = dateObj >= this.limit.from;\n          }\n          if (this.limit && this.limit.to) {\n            beforeTo = dateObj < this.limit.to;\n          }\n          date.disabled = !afterFrom || !beforeTo;\n          if (isFunction(this.dateClass)) {\n            date.classes = this.dateClass(dateObj, {\n              currentMonth: this.month,\n              currentYear: this.year\n            });\n          } else {\n            date.classes = '';\n          }\n          rows[i].push(date);\n        }\n      }\n      return rows\n    }\n  },\n  methods: {\n    getWeekNumber: getWeekNumber,\n    tWeekName: function tWeekName (index) {\n      return this.t((\"uiv.datePicker.week\" + index))\n    },\n    getBtnType: function getBtnType (date) {\n      if (this.date &&\n        date.date === this.date.getDate() &&\n        date.month === this.date.getMonth() &&\n        date.year === this.date.getFullYear()) {\n        return 'primary'\n      } else if (date.date === this.today.getDate() &&\n        date.month === this.today.getMonth() &&\n        date.year === this.today.getFullYear()) {\n        return 'info'\n      } else {\n        return 'default'\n      }\n    },\n    select: function select (date) {\n      this.$emit('date-change', date);\n    },\n    goPrevMonth: function goPrevMonth () {\n      var month = this.month;\n      var year = this.year;\n      if (this.month > 0) {\n        month--;\n      } else {\n        month = 11;\n        year--;\n        this.$emit('year-change', year);\n      }\n      this.$emit('month-change', month);\n    },\n    goNextMonth: function goNextMonth () {\n      var month = this.month;\n      var year = this.year;\n      if (this.month < 11) {\n        month++;\n      } else {\n        month = 0;\n        year++;\n        this.$emit('year-change', year);\n      }\n      this.$emit('month-change', month);\n    },\n    changeView: function changeView () {\n      this.$emit('view-change', 'm');\n    }\n  }\n};\n\n/* script */\nvar __vue_script__$5 = script$5;\n\n/* template */\nvar __vue_render__$5 = function() {\n  var _vm = this;\n  var _h = _vm.$createElement;\n  var _c = _vm._self._c || _h;\n  return _c(\n    \"table\",\n    { staticStyle: { width: \"100%\" }, attrs: { role: \"grid\" } },\n    [\n      _c(\"thead\", [\n        _c(\"tr\", [\n          _c(\n            \"td\",\n            [\n              _c(\n                \"btn\",\n                {\n                  staticClass: \"uiv-datepicker-pager-prev\",\n                  staticStyle: { border: \"none\" },\n                  attrs: { block: \"\", size: \"sm\" },\n                  on: { click: _vm.goPrevMonth }\n                },\n                [_c(\"i\", { class: _vm.iconControlLeft })]\n              )\n            ],\n            1\n          ),\n          _vm._v(\" \"),\n          _c(\n            \"td\",\n            { attrs: { colspan: _vm.weekNumbers ? 6 : 5 } },\n            [\n              _c(\n                \"btn\",\n                {\n                  staticClass: \"uiv-datepicker-title\",\n                  staticStyle: { border: \"none\" },\n                  attrs: { block: \"\", size: \"sm\" },\n                  on: { click: _vm.changeView }\n                },\n                [_c(\"b\", [_vm._v(_vm._s(_vm.yearMonthStr))])]\n              )\n            ],\n            1\n          ),\n          _vm._v(\" \"),\n          _c(\n            \"td\",\n            [\n              _c(\n                \"btn\",\n                {\n                  staticClass: \"uiv-datepicker-pager-next\",\n                  staticStyle: { border: \"none\" },\n                  attrs: { block: \"\", size: \"sm\" },\n                  on: { click: _vm.goNextMonth }\n                },\n                [_c(\"i\", { class: _vm.iconControlRight })]\n              )\n            ],\n            1\n          )\n        ]),\n        _vm._v(\" \"),\n        _c(\n          \"tr\",\n          { attrs: { align: \"center\" } },\n          [\n            _vm.weekNumbers ? _c(\"td\") : _vm._e(),\n            _vm._v(\" \"),\n            _vm._l(_vm.weekDays, function(day) {\n              return _c(\"td\", { attrs: { width: \"14.2857142857%\" } }, [\n                _c(\"small\", { staticClass: \"uiv-datepicker-week\" }, [\n                  _vm._v(_vm._s(_vm.tWeekName(day === 0 ? 7 : day)))\n                ])\n              ])\n            })\n          ],\n          2\n        )\n      ]),\n      _vm._v(\" \"),\n      _c(\n        \"tbody\",\n        _vm._l(_vm.monthDayRows, function(row) {\n          return _c(\n            \"tr\",\n            [\n              _vm.weekNumbers\n                ? _c(\n                    \"td\",\n                    {\n                      staticClass: \"text-center\",\n                      staticStyle: { \"border-right\": \"1px solid #eee\" }\n                    },\n                    [\n                      _c(\"small\", { staticClass: \"text-muted\" }, [\n                        _vm._v(\n                          _vm._s(_vm.getWeekNumber(row[_vm.weekStartsWith]))\n                        )\n                      ])\n                    ]\n                  )\n                : _vm._e(),\n              _vm._v(\" \"),\n              _vm._l(row, function(date) {\n                return _c(\n                  \"td\",\n                  [\n                    _c(\n                      \"btn\",\n                      {\n                        class: date.classes,\n                        staticStyle: { border: \"none\" },\n                        attrs: {\n                          block: \"\",\n                          size: \"sm\",\n                          \"data-action\": \"select\",\n                          type: _vm.getBtnType(date),\n                          disabled: date.disabled\n                        },\n                        on: {\n                          click: function($event) {\n                            return _vm.select(date)\n                          }\n                        }\n                      },\n                      [\n                        _c(\n                          \"span\",\n                          {\n                            class: { \"text-muted\": _vm.month !== date.month },\n                            attrs: { \"data-action\": \"select\" }\n                          },\n                          [_vm._v(_vm._s(date.date))]\n                        )\n                      ]\n                    )\n                  ],\n                  1\n                )\n              })\n            ],\n            2\n          )\n        }),\n        0\n      )\n    ]\n  )\n};\nvar __vue_staticRenderFns__$5 = [];\n__vue_render__$5._withStripped = true;\n\n  /* style */\n  var __vue_inject_styles__$5 = undefined;\n  /* scoped */\n  var __vue_scope_id__$5 = undefined;\n  /* module identifier */\n  var __vue_module_identifier__$5 = undefined;\n  /* functional template */\n  var __vue_is_functional_template__$5 = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  var __vue_component__$5 = /*#__PURE__*/normalizeComponent(\n    { render: __vue_render__$5, staticRenderFns: __vue_staticRenderFns__$5 },\n    __vue_inject_styles__$5,\n    __vue_script__$5,\n    __vue_scope_id__$5,\n    __vue_is_functional_template__$5,\n    __vue_module_identifier__$5,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nvar script$6 = {\n  components: { Btn: Btn },\n  mixins: [Local],\n  props: {\n    month: Number,\n    year: Number,\n    iconControlLeft: String,\n    iconControlRight: String\n  },\n  data: function data () {\n    return {\n      rows: []\n    }\n  },\n  mounted: function mounted () {\n    for (var i = 0; i < 4; i++) {\n      this.rows.push([]);\n      for (var j = 0; j < 3; j++) {\n        this.rows[i].push(i * 3 + j + 1);\n      }\n    }\n  },\n  methods: {\n    tCell: function tCell (cell) {\n      return this.t((\"uiv.datePicker.month\" + cell))\n    },\n    getBtnClass: function getBtnClass (month) {\n      if (month === this.month) {\n        return 'primary'\n      } else {\n        return 'default'\n      }\n    },\n    goPrevYear: function goPrevYear () {\n      this.$emit('year-change', this.year - 1);\n    },\n    goNextYear: function goNextYear () {\n      this.$emit('year-change', this.year + 1);\n    },\n    changeView: function changeView (monthIndex) {\n      if (isExist(monthIndex)) {\n        this.$emit('month-change', monthIndex);\n        this.$emit('view-change', 'd');\n      } else {\n        this.$emit('view-change', 'y');\n      }\n    }\n  }\n};\n\n/* script */\nvar __vue_script__$6 = script$6;\n\n/* template */\nvar __vue_render__$6 = function() {\n  var _vm = this;\n  var _h = _vm.$createElement;\n  var _c = _vm._self._c || _h;\n  return _c(\n    \"table\",\n    { staticStyle: { width: \"100%\" }, attrs: { role: \"grid\" } },\n    [\n      _c(\"thead\", [\n        _c(\"tr\", [\n          _c(\n            \"td\",\n            [\n              _c(\n                \"btn\",\n                {\n                  staticClass: \"uiv-datepicker-pager-prev\",\n                  staticStyle: { border: \"none\" },\n                  attrs: { block: \"\", size: \"sm\" },\n                  on: { click: _vm.goPrevYear }\n                },\n                [_c(\"i\", { class: _vm.iconControlLeft })]\n              )\n            ],\n            1\n          ),\n          _vm._v(\" \"),\n          _c(\n            \"td\",\n            { attrs: { colspan: \"4\" } },\n            [\n              _c(\n                \"btn\",\n                {\n                  staticClass: \"uiv-datepicker-title\",\n                  staticStyle: { border: \"none\" },\n                  attrs: { block: \"\", size: \"sm\" },\n                  on: {\n                    click: function($event) {\n                      return _vm.changeView()\n                    }\n                  }\n                },\n                [_c(\"b\", [_vm._v(_vm._s(_vm.year))])]\n              )\n            ],\n            1\n          ),\n          _vm._v(\" \"),\n          _c(\n            \"td\",\n            [\n              _c(\n                \"btn\",\n                {\n                  staticClass: \"uiv-datepicker-pager-next\",\n                  staticStyle: { border: \"none\" },\n                  attrs: { block: \"\", size: \"sm\" },\n                  on: { click: _vm.goNextYear }\n                },\n                [_c(\"i\", { class: _vm.iconControlRight })]\n              )\n            ],\n            1\n          )\n        ])\n      ]),\n      _vm._v(\" \"),\n      _c(\n        \"tbody\",\n        _vm._l(_vm.rows, function(row, i) {\n          return _c(\n            \"tr\",\n            _vm._l(row, function(month, j) {\n              return _c(\n                \"td\",\n                { attrs: { colspan: \"2\", width: \"33.333333%\" } },\n                [\n                  _c(\n                    \"btn\",\n                    {\n                      staticStyle: { border: \"none\" },\n                      attrs: {\n                        block: \"\",\n                        size: \"sm\",\n                        type: _vm.getBtnClass(i * 3 + j)\n                      },\n                      on: {\n                        click: function($event) {\n                          return _vm.changeView(i * 3 + j)\n                        }\n                      }\n                    },\n                    [_c(\"span\", [_vm._v(_vm._s(_vm.tCell(month)))])]\n                  )\n                ],\n                1\n              )\n            }),\n            0\n          )\n        }),\n        0\n      )\n    ]\n  )\n};\nvar __vue_staticRenderFns__$6 = [];\n__vue_render__$6._withStripped = true;\n\n  /* style */\n  var __vue_inject_styles__$6 = undefined;\n  /* scoped */\n  var __vue_scope_id__$6 = undefined;\n  /* module identifier */\n  var __vue_module_identifier__$6 = undefined;\n  /* functional template */\n  var __vue_is_functional_template__$6 = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  var __vue_component__$6 = /*#__PURE__*/normalizeComponent(\n    { render: __vue_render__$6, staticRenderFns: __vue_staticRenderFns__$6 },\n    __vue_inject_styles__$6,\n    __vue_script__$6,\n    __vue_scope_id__$6,\n    __vue_is_functional_template__$6,\n    __vue_module_identifier__$6,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nvar script$7 = {\n  components: { Btn: Btn },\n  props: {\n    year: Number,\n    iconControlLeft: String,\n    iconControlRight: String\n  },\n  computed: {\n    rows: function rows () {\n      var rows = [];\n      var yearGroupStart = this.year - this.year % 20;\n      for (var i = 0; i < 4; i++) {\n        rows.push([]);\n        for (var j = 0; j < 5; j++) {\n          rows[i].push(yearGroupStart + i * 5 + j);\n        }\n      }\n      return rows\n    },\n    yearStr: function yearStr () {\n      var start = this.year - this.year % 20;\n      return (start + \" ~ \" + (start + 19))\n    }\n  },\n  methods: {\n    getBtnClass: function getBtnClass (year) {\n      if (year === this.year) {\n        return 'primary'\n      } else {\n        return 'default'\n      }\n    },\n    goPrevYear: function goPrevYear () {\n      this.$emit('year-change', this.year - 20);\n    },\n    goNextYear: function goNextYear () {\n      this.$emit('year-change', this.year + 20);\n    },\n    changeView: function changeView (year) {\n      this.$emit('year-change', year);\n      this.$emit('view-change', 'm');\n    }\n  }\n};\n\n/* script */\nvar __vue_script__$7 = script$7;\n\n/* template */\nvar __vue_render__$7 = function() {\n  var _vm = this;\n  var _h = _vm.$createElement;\n  var _c = _vm._self._c || _h;\n  return _c(\n    \"table\",\n    { staticStyle: { width: \"100%\" }, attrs: { role: \"grid\" } },\n    [\n      _c(\"thead\", [\n        _c(\"tr\", [\n          _c(\n            \"td\",\n            [\n              _c(\n                \"btn\",\n                {\n                  staticClass: \"uiv-datepicker-pager-prev\",\n                  staticStyle: { border: \"none\" },\n                  attrs: { block: \"\", size: \"sm\" },\n                  on: { click: _vm.goPrevYear }\n                },\n                [_c(\"i\", { class: _vm.iconControlLeft })]\n              )\n            ],\n            1\n          ),\n          _vm._v(\" \"),\n          _c(\n            \"td\",\n            { attrs: { colspan: \"3\" } },\n            [\n              _c(\n                \"btn\",\n                {\n                  staticClass: \"uiv-datepicker-title\",\n                  staticStyle: { border: \"none\" },\n                  attrs: { block: \"\", size: \"sm\" }\n                },\n                [_c(\"b\", [_vm._v(_vm._s(_vm.yearStr))])]\n              )\n            ],\n            1\n          ),\n          _vm._v(\" \"),\n          _c(\n            \"td\",\n            [\n              _c(\n                \"btn\",\n                {\n                  staticClass: \"uiv-datepicker-pager-next\",\n                  staticStyle: { border: \"none\" },\n                  attrs: { block: \"\", size: \"sm\" },\n                  on: { click: _vm.goNextYear }\n                },\n                [_c(\"i\", { class: _vm.iconControlRight })]\n              )\n            ],\n            1\n          )\n        ])\n      ]),\n      _vm._v(\" \"),\n      _c(\n        \"tbody\",\n        _vm._l(_vm.rows, function(row) {\n          return _c(\n            \"tr\",\n            _vm._l(row, function(year) {\n              return _c(\n                \"td\",\n                { attrs: { width: \"20%\" } },\n                [\n                  _c(\n                    \"btn\",\n                    {\n                      staticStyle: { border: \"none\" },\n                      attrs: {\n                        block: \"\",\n                        size: \"sm\",\n                        type: _vm.getBtnClass(year)\n                      },\n                      on: {\n                        click: function($event) {\n                          return _vm.changeView(year)\n                        }\n                      }\n                    },\n                    [_c(\"span\", [_vm._v(_vm._s(year))])]\n                  )\n                ],\n                1\n              )\n            }),\n            0\n          )\n        }),\n        0\n      )\n    ]\n  )\n};\nvar __vue_staticRenderFns__$7 = [];\n__vue_render__$7._withStripped = true;\n\n  /* style */\n  var __vue_inject_styles__$7 = undefined;\n  /* scoped */\n  var __vue_scope_id__$7 = undefined;\n  /* module identifier */\n  var __vue_module_identifier__$7 = undefined;\n  /* functional template */\n  var __vue_is_functional_template__$7 = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  var __vue_component__$7 = /*#__PURE__*/normalizeComponent(\n    { render: __vue_render__$7, staticRenderFns: __vue_staticRenderFns__$7 },\n    __vue_inject_styles__$7,\n    __vue_script__$7,\n    __vue_scope_id__$7,\n    __vue_is_functional_template__$7,\n    __vue_module_identifier__$7,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nvar script$8 = {\n  mixins: [Local],\n  components: { DateView: __vue_component__$5, MonthView: __vue_component__$6, YearView: __vue_component__$7, Btn: Btn },\n  props: {\n    value: null,\n    width: {\n      type: Number,\n      default: 270\n    },\n    todayBtn: {\n      type: Boolean,\n      default: true\n    },\n    clearBtn: {\n      type: Boolean,\n      default: true\n    },\n    closeOnSelected: {\n      type: Boolean,\n      default: true\n    },\n    limitFrom: null,\n    limitTo: null,\n    format: {\n      type: String,\n      default: 'yyyy-MM-dd'\n    },\n    initialView: {\n      type: String,\n      default: 'd'\n    },\n    dateParser: {\n      type: Function,\n      default: Date.parse\n    },\n    dateClass: Function,\n    yearMonthFormatter: Function,\n    weekStartsWith: {\n      type: Number,\n      default: 0,\n      validator: function validator (value) {\n        return value >= 0 && value <= 6\n      }\n    },\n    weekNumbers: Boolean,\n    iconControlLeft: {\n      type: String,\n      default: 'glyphicon glyphicon-chevron-left'\n    },\n    iconControlRight: {\n      type: String,\n      default: 'glyphicon glyphicon-chevron-right'\n    }\n  },\n  data: function data () {\n    return {\n      show: false,\n      now: new Date(),\n      currentMonth: 0,\n      currentYear: 0,\n      view: 'd'\n    }\n  },\n  computed: {\n    valueDateObj: function valueDateObj () {\n      var ts = this.dateParser(this.value);\n      if (isNaN(ts)) {\n        return null\n      } else {\n        var date = new Date(ts);\n        if (date.getHours() !== 0) {\n          date = new Date(ts + date.getTimezoneOffset() * 60 * 1000);\n        }\n        return date\n      }\n    },\n    pickerStyle: function pickerStyle () {\n      return {\n        width: this.width + 'px'\n      }\n    },\n    pickerClass: function pickerClass () {\n      return {\n        'uiv-datepicker': true,\n        'uiv-datepicker-date': this.view === 'd',\n        'uiv-datepicker-month': this.view === 'm',\n        'uiv-datepicker-year': this.view === 'y'\n      }\n    },\n    limit: function limit () {\n      var limit = {};\n      if (this.limitFrom) {\n        var limitFrom = this.dateParser(this.limitFrom);\n        if (!isNaN(limitFrom)) {\n          limitFrom = convertDateToUTC(new Date(limitFrom));\n          limitFrom.setHours(0, 0, 0, 0);\n          limit.from = limitFrom;\n        }\n      }\n      if (this.limitTo) {\n        var limitTo = this.dateParser(this.limitTo);\n        if (!isNaN(limitTo)) {\n          limitTo = convertDateToUTC(new Date(limitTo));\n          limitTo.setHours(0, 0, 0, 0);\n          limit.to = limitTo;\n        }\n      }\n      return limit\n    }\n  },\n  mounted: function mounted () {\n    if (this.value) {\n      this.setMonthAndYearByValue(this.value);\n    } else {\n      this.currentMonth = this.now.getMonth();\n      this.currentYear = this.now.getFullYear();\n      this.view = this.initialView;\n    }\n  },\n  watch: {\n    value: function value (val, oldVal) {\n      this.setMonthAndYearByValue(val, oldVal);\n    }\n  },\n  methods: {\n    setMonthAndYearByValue: function setMonthAndYearByValue (val, oldVal) {\n      var ts = this.dateParser(val);\n      if (!isNaN(ts)) {\n        var date = new Date(ts);\n        if (date.getHours() !== 0) {\n          date = new Date(ts + date.getTimezoneOffset() * 60 * 1000);\n        }\n        if (this.limit && ((this.limit.from && date < this.limit.from) || (this.limit.to && date >= this.limit.to))) {\n          this.$emit('input', oldVal || '');\n        } else {\n          this.currentMonth = date.getMonth();\n          this.currentYear = date.getFullYear();\n        }\n      }\n    },\n    onMonthChange: function onMonthChange (month) {\n      this.currentMonth = month;\n    },\n    onYearChange: function onYearChange (year) {\n      this.currentYear = year;\n      this.currentMonth = undefined;\n    },\n    onDateChange: function onDateChange (date) {\n      if (date && isNumber(date.date) && isNumber(date.month) && isNumber(date.year)) {\n        var _date = new Date(date.year, date.month, date.date);\n        this.$emit('input', this.format ? stringify(_date, this.format) : _date);\n        // if the input event trigger nothing (same value)\n        // manually correct\n        this.currentMonth = date.month;\n        this.currentYear = date.year;\n      } else {\n        this.$emit('input', '');\n      }\n    },\n    onViewChange: function onViewChange (view) {\n      this.view = view;\n    },\n    selectToday: function selectToday () {\n      this.view = 'd';\n      this.onDateChange({\n        date: this.now.getDate(),\n        month: this.now.getMonth(),\n        year: this.now.getFullYear()\n      });\n    },\n    clearSelect: function clearSelect () {\n      this.currentMonth = this.now.getMonth();\n      this.currentYear = this.now.getFullYear();\n      this.view = this.initialView;\n      this.onDateChange();\n    },\n    onPickerClick: function onPickerClick (event) {\n      if (event.target.getAttribute('data-action') !== 'select' || !this.closeOnSelected) {\n        event.stopPropagation();\n      }\n    }\n  }\n};\n\n/* script */\nvar __vue_script__$8 = script$8;\n\n/* template */\nvar __vue_render__$8 = function() {\n  var _vm = this;\n  var _h = _vm.$createElement;\n  var _c = _vm._self._c || _h;\n  return _c(\n    \"div\",\n    {\n      class: _vm.pickerClass,\n      style: _vm.pickerStyle,\n      attrs: { \"data-role\": \"date-picker\" },\n      on: { click: _vm.onPickerClick }\n    },\n    [\n      _c(\"date-view\", {\n        directives: [\n          {\n            name: \"show\",\n            rawName: \"v-show\",\n            value: _vm.view === \"d\",\n            expression: \"view==='d'\"\n          }\n        ],\n        attrs: {\n          month: _vm.currentMonth,\n          year: _vm.currentYear,\n          date: _vm.valueDateObj,\n          today: _vm.now,\n          limit: _vm.limit,\n          \"week-starts-with\": _vm.weekStartsWith,\n          \"icon-control-left\": _vm.iconControlLeft,\n          \"icon-control-right\": _vm.iconControlRight,\n          \"date-class\": _vm.dateClass,\n          \"year-month-formatter\": _vm.yearMonthFormatter,\n          \"week-numbers\": _vm.weekNumbers,\n          locale: _vm.locale\n        },\n        on: {\n          \"month-change\": _vm.onMonthChange,\n          \"year-change\": _vm.onYearChange,\n          \"date-change\": _vm.onDateChange,\n          \"view-change\": _vm.onViewChange\n        }\n      }),\n      _vm._v(\" \"),\n      _c(\"month-view\", {\n        directives: [\n          {\n            name: \"show\",\n            rawName: \"v-show\",\n            value: _vm.view === \"m\",\n            expression: \"view==='m'\"\n          }\n        ],\n        attrs: {\n          month: _vm.currentMonth,\n          year: _vm.currentYear,\n          \"icon-control-left\": _vm.iconControlLeft,\n          \"icon-control-right\": _vm.iconControlRight,\n          locale: _vm.locale\n        },\n        on: {\n          \"month-change\": _vm.onMonthChange,\n          \"year-change\": _vm.onYearChange,\n          \"view-change\": _vm.onViewChange\n        }\n      }),\n      _vm._v(\" \"),\n      _c(\"year-view\", {\n        directives: [\n          {\n            name: \"show\",\n            rawName: \"v-show\",\n            value: _vm.view === \"y\",\n            expression: \"view==='y'\"\n          }\n        ],\n        attrs: {\n          year: _vm.currentYear,\n          \"icon-control-left\": _vm.iconControlLeft,\n          \"icon-control-right\": _vm.iconControlRight\n        },\n        on: { \"year-change\": _vm.onYearChange, \"view-change\": _vm.onViewChange }\n      }),\n      _vm._v(\" \"),\n      _vm.todayBtn || _vm.clearBtn\n        ? _c(\"div\", [\n            _c(\"br\"),\n            _vm._v(\" \"),\n            _c(\n              \"div\",\n              { staticClass: \"text-center\" },\n              [\n                _vm.todayBtn\n                  ? _c(\"btn\", {\n                      attrs: {\n                        \"data-action\": \"select\",\n                        type: \"info\",\n                        size: \"sm\"\n                      },\n                      domProps: {\n                        textContent: _vm._s(_vm.t(\"uiv.datePicker.today\"))\n                      },\n                      on: { click: _vm.selectToday }\n                    })\n                  : _vm._e(),\n                _vm._v(\" \"),\n                _vm.clearBtn\n                  ? _c(\"btn\", {\n                      attrs: { \"data-action\": \"select\", size: \"sm\" },\n                      domProps: {\n                        textContent: _vm._s(_vm.t(\"uiv.datePicker.clear\"))\n                      },\n                      on: { click: _vm.clearSelect }\n                    })\n                  : _vm._e()\n              ],\n              1\n            )\n          ])\n        : _vm._e()\n    ],\n    1\n  )\n};\nvar __vue_staticRenderFns__$8 = [];\n__vue_render__$8._withStripped = true;\n\n  /* style */\n  var __vue_inject_styles__$8 = undefined;\n  /* scoped */\n  var __vue_scope_id__$8 = undefined;\n  /* module identifier */\n  var __vue_module_identifier__$8 = undefined;\n  /* functional template */\n  var __vue_is_functional_template__$8 = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  var __vue_component__$8 = /*#__PURE__*/normalizeComponent(\n    { render: __vue_render__$8, staticRenderFns: __vue_staticRenderFns__$8 },\n    __vue_inject_styles__$8,\n    __vue_script__$8,\n    __vue_scope_id__$8,\n    __vue_is_functional_template__$8,\n    __vue_module_identifier__$8,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nvar HANDLER = '_uiv_scroll_handler';\nvar events = [EVENTS.RESIZE, EVENTS.SCROLL];\n\nvar bind = function (el, binding) {\n  var callback = binding.value;\n  if (!isFunction(callback)) {\n    return\n  }\n  unbind(el);\n  el[HANDLER] = callback;\n  events.forEach(function (event) {\n    on(window, event, el[HANDLER]);\n  });\n};\n\nvar unbind = function (el) {\n  events.forEach(function (event) {\n    off(window, event, el[HANDLER]);\n  });\n  delete el[HANDLER];\n};\n\nvar update = function (el, binding) {\n  if (binding.value !== binding.oldValue) {\n    bind(el, binding);\n  }\n};\n\nvar scroll = { bind: bind, unbind: unbind, update: update };\n\nvar script$9 = {\n  directives: {\n    scroll: scroll\n  },\n  props: {\n    offset: {\n      type: Number,\n      default: 0\n    }\n  },\n  data: function data () {\n    return {\n      affixed: false\n    }\n  },\n  computed: {\n    classes: function classes () {\n      return {\n        affix: this.affixed\n      }\n    },\n    styles: function styles () {\n      return {\n        top: this.affixed ? this.offset + 'px' : null\n      }\n    }\n  },\n  methods: {\n    // from https://github.com/ant-design/ant-design/blob/master/components/affix/index.jsx#L20\n    onScroll: function onScroll () {\n      var this$1 = this;\n\n      // if is hidden don't calculate anything\n      if (!(this.$el.offsetWidth || this.$el.offsetHeight || this.$el.getClientRects().length)) {\n        return\n      }\n      // get window scroll and element position to detect if have to be normal or affixed\n      var scroll = {};\n      var element = {};\n      var rect = this.$el.getBoundingClientRect();\n      var body = document.body;\n      var types = ['Top', 'Left'];\n      types.forEach(function (type) {\n        var t = type.toLowerCase();\n        scroll[t] = window['page' + (type === 'Top' ? 'Y' : 'X') + 'Offset'];\n        element[t] = scroll[t] + rect[t] - (this$1.$el['client' + type] || body['client' + type] || 0);\n      });\n      var fix = scroll.top > element.top - this.offset;\n      if (this.affixed !== fix) {\n        this.affixed = fix;\n        this.$emit(this.affixed ? 'affix' : 'unfix');\n        this.$nextTick(function () {\n          this$1.$emit(this$1.affixed ? 'affixed' : 'unfixed');\n        });\n      }\n    }\n  }\n};\n\n/* script */\nvar __vue_script__$9 = script$9;\n\n/* template */\nvar __vue_render__$9 = function() {\n  var _vm = this;\n  var _h = _vm.$createElement;\n  var _c = _vm._self._c || _h;\n  return _c(\"div\", { staticClass: \"hidden-print\" }, [\n    _c(\n      \"div\",\n      {\n        directives: [\n          {\n            name: \"scroll\",\n            rawName: \"v-scroll\",\n            value: _vm.onScroll,\n            expression: \"onScroll\"\n          }\n        ],\n        class: _vm.classes,\n        style: _vm.styles\n      },\n      [_vm._t(\"default\")],\n      2\n    )\n  ])\n};\nvar __vue_staticRenderFns__$9 = [];\n__vue_render__$9._withStripped = true;\n\n  /* style */\n  var __vue_inject_styles__$9 = undefined;\n  /* scoped */\n  var __vue_scope_id__$9 = undefined;\n  /* module identifier */\n  var __vue_module_identifier__$9 = undefined;\n  /* functional template */\n  var __vue_is_functional_template__$9 = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  var __vue_component__$9 = /*#__PURE__*/normalizeComponent(\n    { render: __vue_render__$9, staticRenderFns: __vue_staticRenderFns__$9 },\n    __vue_inject_styles__$9,\n    __vue_script__$9,\n    __vue_scope_id__$9,\n    __vue_is_functional_template__$9,\n    __vue_module_identifier__$9,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nvar script$a = {\n  props: {\n    dismissible: {\n      type: Boolean,\n      default: false\n    },\n    duration: {\n      type: Number,\n      default: 0\n    },\n    type: {\n      type: String,\n      default: 'info'\n    }\n  },\n  data: function data () {\n    return {\n      timeout: 0\n    }\n  },\n  computed: {\n    alertClass: function alertClass () {\n      var obj;\n\n      return ( obj = {\n        alert: true\n      }, obj[(\"alert-\" + (this.type))] = Boolean(this.type), obj['alert-dismissible'] = this.dismissible, obj )\n    }\n  },\n  methods: {\n    closeAlert: function closeAlert () {\n      clearTimeout(this.timeout);\n      this.$emit('dismissed');\n    }\n  },\n  mounted: function mounted () {\n    if (this.duration > 0) {\n      this.timeout = setTimeout(this.closeAlert, this.duration);\n    }\n  },\n  destroyed: function destroyed () {\n    clearTimeout(this.timeout);\n  }\n};\n\n/* script */\nvar __vue_script__$a = script$a;\n\n/* template */\nvar __vue_render__$a = function() {\n  var _vm = this;\n  var _h = _vm.$createElement;\n  var _c = _vm._self._c || _h;\n  return _c(\n    \"div\",\n    { class: _vm.alertClass, attrs: { role: \"alert\" } },\n    [\n      _vm.dismissible\n        ? _c(\n            \"button\",\n            {\n              staticClass: \"close\",\n              attrs: { type: \"button\", \"aria-label\": \"Close\" },\n              on: { click: _vm.closeAlert }\n            },\n            [_c(\"span\", { attrs: { \"aria-hidden\": \"true\" } }, [_vm._v(\"×\")])]\n          )\n        : _vm._e(),\n      _vm._v(\" \"),\n      _vm._t(\"default\")\n    ],\n    2\n  )\n};\nvar __vue_staticRenderFns__$a = [];\n__vue_render__$a._withStripped = true;\n\n  /* style */\n  var __vue_inject_styles__$a = undefined;\n  /* scoped */\n  var __vue_scope_id__$a = undefined;\n  /* module identifier */\n  var __vue_module_identifier__$a = undefined;\n  /* functional template */\n  var __vue_is_functional_template__$a = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  var __vue_component__$a = /*#__PURE__*/normalizeComponent(\n    { render: __vue_render__$a, staticRenderFns: __vue_staticRenderFns__$a },\n    __vue_inject_styles__$a,\n    __vue_script__$a,\n    __vue_scope_id__$a,\n    __vue_is_functional_template__$a,\n    __vue_module_identifier__$a,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nvar script$b = {\n  props: {\n    value: {\n      type: Number,\n      required: true,\n      validator: function (v) { return v >= 1; }\n    },\n    boundaryLinks: {\n      type: Boolean,\n      default: false\n    },\n    directionLinks: {\n      type: Boolean,\n      default: true\n    },\n    size: String,\n    align: String,\n    totalPage: {\n      type: Number,\n      required: true,\n      validator: function (v) { return v >= 0; }\n    },\n    maxSize: {\n      type: Number,\n      default: 5,\n      validator: function (v) { return v >= 0; }\n    },\n    disabled: Boolean\n  },\n  data: function data () {\n    return {\n      sliceStart: 0\n    }\n  },\n  computed: {\n    navClasses: function navClasses () {\n      var obj;\n\n      return ( obj = {}, obj[(\"text-\" + (this.align))] = Boolean(this.align), obj )\n    },\n    classes: function classes () {\n      var obj;\n\n      return ( obj = {}, obj[(\"pagination-\" + (this.size))] = Boolean(this.size), obj )\n    },\n    sliceArray: function sliceArray () {\n      return range(this.totalPage).slice(this.sliceStart, this.sliceStart + this.maxSize)\n    }\n  },\n  methods: {\n    calculateSliceStart: function calculateSliceStart () {\n      var currentPage = this.value;\n      var chunkSize = this.maxSize;\n      var currentChunkStart = this.sliceStart;\n      var currentChunkEnd = currentChunkStart + chunkSize;\n      if (currentPage > currentChunkEnd) {\n        var lastChunkStart = this.totalPage - chunkSize;\n        if (currentPage > lastChunkStart) {\n          this.sliceStart = lastChunkStart;\n        } else {\n          this.sliceStart = currentPage - 1;\n        }\n      } else if (currentPage < currentChunkStart + 1) {\n        if (currentPage > chunkSize) {\n          this.sliceStart = currentPage - chunkSize;\n        } else {\n          this.sliceStart = 0;\n        }\n      }\n    },\n    onPageChange: function onPageChange (page) {\n      if (!this.disabled && page > 0 && page <= this.totalPage && page !== this.value) {\n        this.$emit('input', page);\n        this.$emit('change', page);\n      }\n    },\n    toPage: function toPage (pre) {\n      if (this.disabled) {\n        return\n      }\n      var chunkSize = this.maxSize;\n      var currentChunkStart = this.sliceStart;\n      var lastChunkStart = this.totalPage - chunkSize;\n      var start = pre ? currentChunkStart - chunkSize : currentChunkStart + chunkSize;\n      if (start < 0) {\n        this.sliceStart = 0;\n      } else if (start > lastChunkStart) {\n        this.sliceStart = lastChunkStart;\n      } else {\n        this.sliceStart = start;\n      }\n    }\n  },\n  created: function created () {\n    this.$watch(function (vm) { return [vm.value, vm.maxSize, vm.totalPage].join(); }, this.calculateSliceStart, {\n      immediate: true\n    });\n  }\n};\n\n/* script */\nvar __vue_script__$b = script$b;\n\n/* template */\nvar __vue_render__$b = function() {\n  var _vm = this;\n  var _h = _vm.$createElement;\n  var _c = _vm._self._c || _h;\n  return _c(\n    \"nav\",\n    { class: _vm.navClasses, attrs: { \"aria-label\": \"Page navigation\" } },\n    [\n      _c(\n        \"ul\",\n        { staticClass: \"pagination\", class: _vm.classes },\n        [\n          _vm.boundaryLinks\n            ? _c(\n                \"li\",\n                { class: { disabled: _vm.value <= 1 || _vm.disabled } },\n                [\n                  _c(\n                    \"a\",\n                    {\n                      attrs: {\n                        href: \"#\",\n                        role: \"button\",\n                        \"aria-label\": \"First\"\n                      },\n                      on: {\n                        click: function($event) {\n                          $event.preventDefault();\n                          return _vm.onPageChange(1)\n                        }\n                      }\n                    },\n                    [\n                      _c(\"span\", { attrs: { \"aria-hidden\": \"true\" } }, [\n                        _vm._v(\"«\")\n                      ])\n                    ]\n                  )\n                ]\n              )\n            : _vm._e(),\n          _vm._v(\" \"),\n          _vm.directionLinks\n            ? _c(\n                \"li\",\n                { class: { disabled: _vm.value <= 1 || _vm.disabled } },\n                [\n                  _c(\n                    \"a\",\n                    {\n                      attrs: {\n                        href: \"#\",\n                        role: \"button\",\n                        \"aria-label\": \"Previous\"\n                      },\n                      on: {\n                        click: function($event) {\n                          $event.preventDefault();\n                          return _vm.onPageChange(_vm.value - 1)\n                        }\n                      }\n                    },\n                    [\n                      _c(\"span\", { attrs: { \"aria-hidden\": \"true\" } }, [\n                        _vm._v(\"‹\")\n                      ])\n                    ]\n                  )\n                ]\n              )\n            : _vm._e(),\n          _vm._v(\" \"),\n          _vm.sliceStart > 0\n            ? _c(\"li\", { class: { disabled: _vm.disabled } }, [\n                _c(\n                  \"a\",\n                  {\n                    attrs: {\n                      href: \"#\",\n                      role: \"button\",\n                      \"aria-label\": \"Previous group\"\n                    },\n                    on: {\n                      click: function($event) {\n                        $event.preventDefault();\n                        return _vm.toPage(1)\n                      }\n                    }\n                  },\n                  [\n                    _c(\"span\", { attrs: { \"aria-hidden\": \"true\" } }, [\n                      _vm._v(\"…\")\n                    ])\n                  ]\n                )\n              ])\n            : _vm._e(),\n          _vm._v(\" \"),\n          _vm._l(_vm.sliceArray, function(item) {\n            return _c(\n              \"li\",\n              {\n                key: item,\n                class: {\n                  active: _vm.value === item + 1,\n                  disabled: _vm.disabled\n                }\n              },\n              [\n                _c(\n                  \"a\",\n                  {\n                    attrs: { href: \"#\", role: \"button\" },\n                    on: {\n                      click: function($event) {\n                        $event.preventDefault();\n                        return _vm.onPageChange(item + 1)\n                      }\n                    }\n                  },\n                  [_vm._v(_vm._s(item + 1))]\n                )\n              ]\n            )\n          }),\n          _vm._v(\" \"),\n          _vm.sliceStart < _vm.totalPage - _vm.maxSize\n            ? _c(\"li\", { class: { disabled: _vm.disabled } }, [\n                _c(\n                  \"a\",\n                  {\n                    attrs: {\n                      href: \"#\",\n                      role: \"button\",\n                      \"aria-label\": \"Next group\"\n                    },\n                    on: {\n                      click: function($event) {\n                        $event.preventDefault();\n                        return _vm.toPage(0)\n                      }\n                    }\n                  },\n                  [\n                    _c(\"span\", { attrs: { \"aria-hidden\": \"true\" } }, [\n                      _vm._v(\"…\")\n                    ])\n                  ]\n                )\n              ])\n            : _vm._e(),\n          _vm._v(\" \"),\n          _vm.directionLinks\n            ? _c(\n                \"li\",\n                {\n                  class: {\n                    disabled: _vm.value >= _vm.totalPage || _vm.disabled\n                  }\n                },\n                [\n                  _c(\n                    \"a\",\n                    {\n                      attrs: {\n                        href: \"#\",\n                        role: \"button\",\n                        \"aria-label\": \"Next\"\n                      },\n                      on: {\n                        click: function($event) {\n                          $event.preventDefault();\n                          return _vm.onPageChange(_vm.value + 1)\n                        }\n                      }\n                    },\n                    [\n                      _c(\"span\", { attrs: { \"aria-hidden\": \"true\" } }, [\n                        _vm._v(\"›\")\n                      ])\n                    ]\n                  )\n                ]\n              )\n            : _vm._e(),\n          _vm._v(\" \"),\n          _vm.boundaryLinks\n            ? _c(\n                \"li\",\n                {\n                  class: {\n                    disabled: _vm.value >= _vm.totalPage || _vm.disabled\n                  }\n                },\n                [\n                  _c(\n                    \"a\",\n                    {\n                      attrs: {\n                        href: \"#\",\n                        role: \"button\",\n                        \"aria-label\": \"Last\"\n                      },\n                      on: {\n                        click: function($event) {\n                          $event.preventDefault();\n                          return _vm.onPageChange(_vm.totalPage)\n                        }\n                      }\n                    },\n                    [\n                      _c(\"span\", { attrs: { \"aria-hidden\": \"true\" } }, [\n                        _vm._v(\"»\")\n                      ])\n                    ]\n                  )\n                ]\n              )\n            : _vm._e()\n        ],\n        2\n      )\n    ]\n  )\n};\nvar __vue_staticRenderFns__$b = [];\n__vue_render__$b._withStripped = true;\n\n  /* style */\n  var __vue_inject_styles__$b = undefined;\n  /* scoped */\n  var __vue_scope_id__$b = undefined;\n  /* module identifier */\n  var __vue_module_identifier__$b = undefined;\n  /* functional template */\n  var __vue_is_functional_template__$b = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  var __vue_component__$b = /*#__PURE__*/normalizeComponent(\n    { render: __vue_render__$b, staticRenderFns: __vue_staticRenderFns__$b },\n    __vue_inject_styles__$b,\n    __vue_script__$b,\n    __vue_scope_id__$b,\n    __vue_is_functional_template__$b,\n    __vue_module_identifier__$b,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nvar SHOW_CLASS = 'in';\n\nvar popupMixin = {\n  props: {\n    value: {\n      type: Boolean,\n      default: false\n    },\n    tag: {\n      type: String,\n      default: 'span'\n    },\n    placement: {\n      type: String,\n      default: PLACEMENTS.TOP\n    },\n    autoPlacement: {\n      type: Boolean,\n      default: true\n    },\n    appendTo: {\n      type: null,\n      default: 'body'\n    },\n    positionBy: {\n      type: null,\n      default: null\n    },\n    transition: {\n      type: Number,\n      default: 150\n    },\n    hideDelay: {\n      type: Number,\n      default: 0\n    },\n    showDelay: {\n      type: Number,\n      default: 0\n    },\n    enable: {\n      type: Boolean,\n      default: true\n    },\n    enterable: {\n      type: Boolean,\n      default: true\n    },\n    target: null,\n    viewport: null,\n    customClass: String\n  },\n  data: function data () {\n    return {\n      triggerEl: null,\n      hideTimeoutId: 0,\n      showTimeoutId: 0,\n      transitionTimeoutId: 0,\n      autoTimeoutId: 0\n    }\n  },\n  watch: {\n    value: function value (v) {\n      v ? this.show() : this.hide();\n    },\n    trigger: function trigger () {\n      this.clearListeners();\n      this.initListeners();\n    },\n    target: function target (value) {\n      this.clearListeners();\n      this.initTriggerElByTarget(value);\n      this.initListeners();\n    },\n    allContent: function allContent (value) {\n      var this$1 = this;\n\n      // can not use value because it can not detect slot changes\n      if (this.isNotEmpty()) {\n        // reset position while content changed & is shown\n        // nextTick is required\n        this.$nextTick(function () {\n          /* istanbul ignore else */\n          if (this$1.isShown()) {\n            this$1.resetPosition();\n          }\n        });\n      } else {\n        this.hide();\n      }\n    },\n    enable: function enable (value) {\n      // hide if enable changed to false\n      /* istanbul ignore else */\n      if (!value) {\n        this.hide();\n      }\n    }\n  },\n  mounted: function mounted () {\n    var this$1 = this;\n\n    ensureElementMatchesFunction();\n    removeFromDom(this.$refs.popup);\n    this.$nextTick(function () {\n      this$1.initTriggerElByTarget(this$1.target);\n      this$1.initListeners();\n      if (this$1.value) {\n        this$1.show();\n      }\n    });\n  },\n  beforeDestroy: function beforeDestroy () {\n    this.clearListeners();\n    removeFromDom(this.$refs.popup);\n  },\n  methods: {\n    initTriggerElByTarget: function initTriggerElByTarget (target) {\n      if (target) {\n        // target exist\n        this.triggerEl = getElementBySelectorOrRef(target);\n      } else {\n        // find special element\n        var trigger = this.$el.querySelector('[data-role=\"trigger\"]');\n        if (trigger) {\n          this.triggerEl = trigger;\n        } else {\n          // use the first child\n          var firstChild = this.$el.firstChild;\n          this.triggerEl = firstChild === this.$refs.popup ? null : firstChild;\n        }\n      }\n    },\n    initListeners: function initListeners () {\n      if (this.triggerEl) {\n        if (this.trigger === TRIGGERS.HOVER) {\n          on(this.triggerEl, EVENTS.MOUSE_ENTER, this.show);\n          on(this.triggerEl, EVENTS.MOUSE_LEAVE, this.hide);\n        } else if (this.trigger === TRIGGERS.FOCUS) {\n          on(this.triggerEl, EVENTS.FOCUS, this.show);\n          on(this.triggerEl, EVENTS.BLUR, this.hide);\n        } else if (this.trigger === TRIGGERS.HOVER_FOCUS) {\n          on(this.triggerEl, EVENTS.MOUSE_ENTER, this.handleAuto);\n          on(this.triggerEl, EVENTS.MOUSE_LEAVE, this.handleAuto);\n          on(this.triggerEl, EVENTS.FOCUS, this.handleAuto);\n          on(this.triggerEl, EVENTS.BLUR, this.handleAuto);\n        } else if (this.trigger === TRIGGERS.CLICK || this.trigger === TRIGGERS.OUTSIDE_CLICK) {\n          on(this.triggerEl, EVENTS.CLICK, this.toggle);\n        }\n      }\n      on(window, EVENTS.CLICK, this.windowClicked);\n    },\n    clearListeners: function clearListeners () {\n      if (this.triggerEl) {\n        off(this.triggerEl, EVENTS.FOCUS, this.show);\n        off(this.triggerEl, EVENTS.BLUR, this.hide);\n        off(this.triggerEl, EVENTS.MOUSE_ENTER, this.show);\n        off(this.triggerEl, EVENTS.MOUSE_LEAVE, this.hide);\n        off(this.triggerEl, EVENTS.CLICK, this.toggle);\n        off(this.triggerEl, EVENTS.MOUSE_ENTER, this.handleAuto);\n        off(this.triggerEl, EVENTS.MOUSE_LEAVE, this.handleAuto);\n        off(this.triggerEl, EVENTS.FOCUS, this.handleAuto);\n        off(this.triggerEl, EVENTS.BLUR, this.handleAuto);\n      }\n      off(window, EVENTS.CLICK, this.windowClicked);\n      this.clearTimeouts();\n    },\n    clearTimeouts: function clearTimeouts () {\n      if (this.hideTimeoutId) {\n        clearTimeout(this.hideTimeoutId);\n        this.hideTimeoutId = 0;\n      }\n      if (this.showTimeoutId) {\n        clearTimeout(this.showTimeoutId);\n        this.showTimeoutId = 0;\n      }\n      if (this.transitionTimeoutId) {\n        clearTimeout(this.transitionTimeoutId);\n        this.transitionTimeoutId = 0;\n      }\n      if (this.autoTimeoutId) {\n        clearTimeout(this.autoTimeoutId);\n        this.autoTimeoutId = 0;\n      }\n    },\n    resetPosition: function resetPosition () {\n      var popup = this.$refs.popup;\n      /* istanbul ignore else */\n      if (popup) {\n        setTooltipPosition(popup, this.triggerEl, this.placement, this.autoPlacement, this.appendTo, this.positionBy, this.viewport);\n        popup.offsetHeight;\n      }\n    },\n    hideOnLeave: function hideOnLeave () {\n      if (this.trigger === TRIGGERS.HOVER || (this.trigger === TRIGGERS.HOVER_FOCUS && !this.triggerEl.matches(':focus'))) {\n        this.$hide();\n      }\n    },\n    toggle: function toggle () {\n      if (this.isShown()) {\n        this.hide();\n      } else {\n        this.show();\n      }\n    },\n    show: function show () {\n      var this$1 = this;\n\n      if (this.enable && this.triggerEl && this.isNotEmpty() && !this.isShown()) {\n        var popUpAppendedContainer = this.hideTimeoutId > 0; // weird condition\n        if (popUpAppendedContainer) {\n          clearTimeout(this.hideTimeoutId);\n          this.hideTimeoutId = 0;\n        }\n        if (this.transitionTimeoutId > 0) {\n          clearTimeout(this.transitionTimeoutId);\n          this.transitionTimeoutId = 0;\n        }\n        clearTimeout(this.showTimeoutId);\n        this.showTimeoutId = setTimeout(function () {\n          this$1.showTimeoutId = 0;\n          var popup = this$1.$refs.popup;\n          if (popup) {\n            var alreadyOpenModalNum = getOpenModalNum();\n            if (alreadyOpenModalNum > 1) {\n              var defaultZ = this$1.name === 'popover' ? 1060 : 1070;\n              var offset = (alreadyOpenModalNum - 1) * 20;\n              popup.style.zIndex = \"\" + (defaultZ + offset);\n            }\n            // add to dom\n            if (!popUpAppendedContainer) {\n              popup.className = (this$1.name) + \" \" + (this$1.placement) + \" \" + (this$1.customClass ? this$1.customClass : '') + \" fade\";\n              var container = getElementBySelectorOrRef(this$1.appendTo);\n              container.appendChild(popup);\n              this$1.resetPosition();\n            }\n            addClass(popup, SHOW_CLASS);\n            this$1.$emit('input', true);\n            this$1.$emit('show');\n          }\n        }, this.showDelay);\n      }\n    },\n    hide: function hide () {\n      var this$1 = this;\n\n      if (this.showTimeoutId > 0) {\n        clearTimeout(this.showTimeoutId);\n        this.showTimeoutId = 0;\n      }\n\n      if (!this.isShown()) {\n        return\n      }\n      if (this.enterable && (this.trigger === TRIGGERS.HOVER || this.trigger === TRIGGERS.HOVER_FOCUS)) {\n        clearTimeout(this.hideTimeoutId);\n        this.hideTimeoutId = setTimeout(function () {\n          this$1.hideTimeoutId = 0;\n          var popup = this$1.$refs.popup;\n          if (popup && !popup.matches(':hover')) {\n            this$1.$hide();\n          }\n        }, 100);\n      } else {\n        this.$hide();\n      }\n    },\n    $hide: function $hide () {\n      var this$1 = this;\n\n      if (this.isShown()) {\n        clearTimeout(this.hideTimeoutId);\n        this.hideTimeoutId = setTimeout(function () {\n          this$1.hideTimeoutId = 0;\n          removeClass(this$1.$refs.popup, SHOW_CLASS);\n          // gives fade out time\n          this$1.transitionTimeoutId = setTimeout(function () {\n            this$1.transitionTimeoutId = 0;\n            removeFromDom(this$1.$refs.popup);\n            this$1.$emit('input', false);\n            this$1.$emit('hide');\n          }, this$1.transition);\n        }, this.hideDelay);\n      }\n    },\n    isShown: function isShown () {\n      return hasClass(this.$refs.popup, SHOW_CLASS)\n    },\n    windowClicked: function windowClicked (event) {\n      if (this.triggerEl && isFunction(this.triggerEl.contains) && !this.triggerEl.contains(event.target) &&\n        this.trigger === TRIGGERS.OUTSIDE_CLICK && !(this.$refs.popup && this.$refs.popup.contains(event.target)) &&\n        this.isShown()) {\n        this.hide();\n      }\n    },\n    handleAuto: function handleAuto () {\n      var this$1 = this;\n\n      clearTimeout(this.autoTimeoutId);\n      this.autoTimeoutId = setTimeout(function () {\n        this$1.autoTimeoutId = 0;\n        if (this$1.triggerEl.matches(':hover, :focus')) {\n          this$1.show();\n        } else {\n          this$1.hide();\n        }\n      }, 20); // 20ms make firefox happy\n    }\n  }\n};\n\nvar Tooltip = {\n  mixins: [popupMixin],\n  data: function data () {\n    return {\n      name: 'tooltip'\n    }\n  },\n  render: function render (h) {\n    return h(\n      this.tag,\n      [\n        this.$slots.default,\n        h('div',\n          {\n            ref: 'popup',\n            attrs: {\n              role: 'tooltip'\n            },\n            on: {\n              mouseleave: this.hideOnLeave\n            }\n          },\n          [\n            h('div', { class: 'tooltip-arrow' }),\n            h('div', {\n              class: 'tooltip-inner',\n              domProps: { innerHTML: this.text }\n            })\n          ]\n        )\n      ]\n    )\n  },\n  props: {\n    text: {\n      type: String,\n      default: ''\n    },\n    trigger: {\n      type: String,\n      default: TRIGGERS.HOVER_FOCUS\n    }\n  },\n  computed: {\n    allContent: function allContent () {\n      return this.text\n    }\n  },\n  methods: {\n    isNotEmpty: function isNotEmpty () {\n      return this.text\n    }\n  }\n};\n\nvar Popover = {\n  mixins: [popupMixin],\n  data: function data () {\n    return {\n      name: 'popover'\n    }\n  },\n  render: function render (h) {\n    return h(this.tag,\n      [\n        this.$slots.default,\n        h('div',\n          {\n            style: {\n              display: 'block'\n            },\n            ref: 'popup',\n            on: {\n              mouseleave: this.hideOnLeave\n            }\n          },\n          [\n            h('div', { class: 'arrow' }),\n            h('h3', {\n              class: 'popover-title',\n              directives: [\n                { name: 'show', value: this.title }\n              ]\n            }, this.title),\n            h('div', { class: 'popover-content' }, [this.content || this.$slots.popover])\n          ]\n        )\n      ]\n    )\n  },\n  props: {\n    title: {\n      type: String,\n      default: ''\n    },\n    content: {\n      type: String,\n      default: ''\n    },\n    trigger: {\n      type: String,\n      default: TRIGGERS.OUTSIDE_CLICK\n    }\n  },\n  computed: {\n    allContent: function allContent () {\n      return this.title + this.content\n    }\n  },\n  methods: {\n    isNotEmpty: function isNotEmpty () {\n      return this.title || this.content || this.$slots.popover\n    }\n  }\n};\n\nvar maxHours = 23;\nvar zero = 0;\nvar maxMinutes = 59;\nvar cutUpAmAndPm = 12;\n\nvar script$c = {\n  components: { Btn: Btn },\n  mixins: [Local],\n  props: {\n    value: {\n      type: Date,\n      required: true\n    },\n    showMeridian: {\n      type: Boolean,\n      default: true\n    },\n    min: Date,\n    max: Date,\n    hourStep: {\n      type: Number,\n      default: 1\n    },\n    minStep: {\n      type: Number,\n      default: 1\n    },\n    readonly: {\n      type: Boolean,\n      default: false\n    },\n    controls: {\n      type: Boolean,\n      default: true\n    },\n    iconControlUp: {\n      type: String,\n      default: 'glyphicon glyphicon-chevron-up'\n    },\n    iconControlDown: {\n      type: String,\n      default: 'glyphicon glyphicon-chevron-down'\n    },\n    inputWidth: {\n      type: Number,\n      default: 50\n    }\n  },\n  data: function data () {\n    return {\n      hours: 0,\n      minutes: 0,\n      meridian: true,\n      hoursText: '',\n      minutesText: ''\n    }\n  },\n  mounted: function mounted () {\n    this.updateByValue(this.value);\n  },\n  computed: {\n    inputStyles: function inputStyles () {\n      return {\n        width: ((this.inputWidth) + \"px\")\n      }\n    }\n  },\n  watch: {\n    value: function value (value$1) {\n      this.updateByValue(value$1);\n    },\n    showMeridian: function showMeridian (value) {\n      this.setTime();\n    },\n    hoursText: function hoursText (value) {\n      if (this.hours === 0 && value === '') {\n        // Prevent a runtime reset from being overwritten\n        return\n      }\n      var hour = parseInt(value);\n      if (this.showMeridian) {\n        if (hour >= 1 && hour <= cutUpAmAndPm) {\n          if (this.meridian) {\n            this.hours = hour === cutUpAmAndPm ? 0 : hour;\n          } else {\n            this.hours = hour === cutUpAmAndPm ? cutUpAmAndPm : hour + cutUpAmAndPm;\n          }\n        }\n      } else if (hour >= zero && hour <= maxHours) {\n        this.hours = hour;\n      }\n      this.setTime();\n    },\n    minutesText: function minutesText (value) {\n      if (this.minutes === 0 && value === '') {\n        // Prevent a runtime reset from being overwritten\n        return\n      }\n      var minutesStr = parseInt(value);\n      if (minutesStr >= zero && minutesStr <= maxMinutes) {\n        this.minutes = minutesStr;\n      }\n      this.setTime();\n    }\n  },\n  methods: {\n    updateByValue: function updateByValue (value) {\n      if (isNaN(value.getTime())) {\n        this.hours = 0;\n        this.minutes = 0;\n        this.hoursText = '';\n        this.minutesText = '';\n        this.meridian = true;\n        return\n      }\n      this.hours = value.getHours();\n      this.minutes = value.getMinutes();\n      if (!this.showMeridian) {\n        this.hoursText = pad(this.hours, 2);\n      } else {\n        if (this.hours >= cutUpAmAndPm) {\n          if (this.hours === cutUpAmAndPm) {\n            this.hoursText = this.hours + '';\n          } else {\n            this.hoursText = pad(this.hours - cutUpAmAndPm, 2);\n          }\n          this.meridian = false;\n        } else {\n          if (this.hours === zero) {\n            this.hoursText = cutUpAmAndPm.toString();\n          } else {\n            this.hoursText = pad(this.hours, 2);\n          }\n          this.meridian = true;\n        }\n      }\n      this.minutesText = pad(this.minutes, 2);\n      // lazy model won't update when using keyboard up/down\n      this.$refs.hoursInput.value = this.hoursText;\n      this.$refs.minutesInput.value = this.minutesText;\n    },\n    addHour: function addHour (step) {\n      step = step || this.hourStep;\n      this.hours = this.hours >= maxHours ? zero : this.hours + step;\n    },\n    reduceHour: function reduceHour (step) {\n      step = step || this.hourStep;\n      this.hours = this.hours <= zero ? maxHours : this.hours - step;\n    },\n    addMinute: function addMinute () {\n      if (this.minutes >= maxMinutes) {\n        this.minutes = zero;\n        this.addHour(1);\n      } else {\n        this.minutes += this.minStep;\n      }\n    },\n    reduceMinute: function reduceMinute () {\n      if (this.minutes <= zero) {\n        this.minutes = maxMinutes + 1 - this.minStep;\n        this.reduceHour(1);\n      } else {\n        this.minutes -= this.minStep;\n      }\n    },\n    changeTime: function changeTime (isHour, isPlus) {\n      if (!this.readonly) {\n        if (isHour && isPlus) {\n          this.addHour();\n        } else if (isHour && !isPlus) {\n          this.reduceHour();\n        } else if (!isHour && isPlus) {\n          this.addMinute();\n        } else {\n          this.reduceMinute();\n        }\n        this.setTime();\n      }\n    },\n    toggleMeridian: function toggleMeridian () {\n      this.meridian = !this.meridian;\n      if (this.meridian) {\n        this.hours -= cutUpAmAndPm;\n      } else {\n        this.hours += cutUpAmAndPm;\n      }\n      this.setTime();\n    },\n    onWheel: function onWheel (e, isHour) {\n      if (!this.readonly) {\n        e.preventDefault();\n        this.changeTime(isHour, e.deltaY < 0);\n      }\n    },\n    setTime: function setTime () {\n      var time = this.value;\n      if (isNaN(time.getTime())) {\n        time = new Date();\n        time.setHours(0);\n        time.setMinutes(0);\n      }\n      time.setHours(this.hours);\n      time.setMinutes(this.minutes);\n      if (this.max) {\n        var max = new Date(time);\n        max.setHours(this.max.getHours());\n        max.setMinutes(this.max.getMinutes());\n        time = time > max ? max : time;\n      }\n      if (this.min) {\n        var min = new Date(time);\n        min.setHours(this.min.getHours());\n        min.setMinutes(this.min.getMinutes());\n        time = time < min ? min : time;\n      }\n      this.$emit('input', new Date(time));\n    },\n    selectInputValue: function selectInputValue (e) {\n      // mouseup should be prevented!\n      // See various comments in https://stackoverflow.com/questions/3272089/programmatically-selecting-text-in-an-input-field-on-ios-devices-mobile-safari\n      e.target.setSelectionRange(0, 2);\n    }\n  }\n};\n\n/* script */\nvar __vue_script__$c = script$c;\n\n/* template */\nvar __vue_render__$c = function() {\n  var _vm = this;\n  var _h = _vm.$createElement;\n  var _c = _vm._self._c || _h;\n  return _c(\n    \"section\",\n    {\n      on: {\n        click: function($event) {\n          $event.stopPropagation();\n        }\n      }\n    },\n    [\n      _c(\"table\", [\n        _c(\"tbody\", [\n          _vm.controls\n            ? _c(\"tr\", { staticClass: \"text-center\" }, [\n                _c(\n                  \"td\",\n                  [\n                    _c(\n                      \"btn\",\n                      {\n                        attrs: {\n                          type: \"link\",\n                          size: \"sm\",\n                          disabled: _vm.readonly\n                        },\n                        on: {\n                          click: function($event) {\n                            return _vm.changeTime(1, 1)\n                          }\n                        }\n                      },\n                      [_c(\"i\", { class: _vm.iconControlUp })]\n                    )\n                  ],\n                  1\n                ),\n                _vm._v(\" \"),\n                _c(\"td\", [_vm._v(\" \")]),\n                _vm._v(\" \"),\n                _c(\n                  \"td\",\n                  [\n                    _c(\n                      \"btn\",\n                      {\n                        attrs: {\n                          type: \"link\",\n                          size: \"sm\",\n                          disabled: _vm.readonly\n                        },\n                        on: {\n                          click: function($event) {\n                            return _vm.changeTime(0, 1)\n                          }\n                        }\n                      },\n                      [_c(\"i\", { class: _vm.iconControlUp })]\n                    )\n                  ],\n                  1\n                ),\n                _vm._v(\" \"),\n                _vm.showMeridian ? _c(\"td\") : _vm._e()\n              ])\n            : _vm._e(),\n          _vm._v(\" \"),\n          _c(\"tr\", [\n            _c(\"td\", { staticClass: \"form-group\" }, [\n              _c(\"input\", {\n                directives: [\n                  {\n                    name: \"model\",\n                    rawName: \"v-model.lazy\",\n                    value: _vm.hoursText,\n                    expression: \"hoursText\",\n                    modifiers: { lazy: true }\n                  }\n                ],\n                ref: \"hoursInput\",\n                staticClass: \"form-control text-center\",\n                style: _vm.inputStyles,\n                attrs: {\n                  type: \"tel\",\n                  pattern: \"\\\\d*\",\n                  placeholder: \"HH\",\n                  readonly: _vm.readonly,\n                  maxlength: \"2\",\n                  size: \"2\"\n                },\n                domProps: { value: _vm.hoursText },\n                on: {\n                  mouseup: _vm.selectInputValue,\n                  keydown: [\n                    function($event) {\n                      if (\n                        !$event.type.indexOf(\"key\") &&\n                        _vm._k($event.keyCode, \"up\", 38, $event.key, [\n                          \"Up\",\n                          \"ArrowUp\"\n                        ])\n                      ) {\n                        return null\n                      }\n                      $event.preventDefault();\n                      return _vm.changeTime(1, 1)\n                    },\n                    function($event) {\n                      if (\n                        !$event.type.indexOf(\"key\") &&\n                        _vm._k($event.keyCode, \"down\", 40, $event.key, [\n                          \"Down\",\n                          \"ArrowDown\"\n                        ])\n                      ) {\n                        return null\n                      }\n                      $event.preventDefault();\n                      return _vm.changeTime(1, 0)\n                    }\n                  ],\n                  wheel: function($event) {\n                    return _vm.onWheel($event, true)\n                  },\n                  change: function($event) {\n                    _vm.hoursText = $event.target.value;\n                  }\n                }\n              })\n            ]),\n            _vm._v(\" \"),\n            _vm._m(0),\n            _vm._v(\" \"),\n            _c(\"td\", { staticClass: \"form-group\" }, [\n              _c(\"input\", {\n                directives: [\n                  {\n                    name: \"model\",\n                    rawName: \"v-model.lazy\",\n                    value: _vm.minutesText,\n                    expression: \"minutesText\",\n                    modifiers: { lazy: true }\n                  }\n                ],\n                ref: \"minutesInput\",\n                staticClass: \"form-control text-center\",\n                style: _vm.inputStyles,\n                attrs: {\n                  type: \"tel\",\n                  pattern: \"\\\\d*\",\n                  placeholder: \"MM\",\n                  readonly: _vm.readonly,\n                  maxlength: \"2\",\n                  size: \"2\"\n                },\n                domProps: { value: _vm.minutesText },\n                on: {\n                  mouseup: _vm.selectInputValue,\n                  keydown: [\n                    function($event) {\n                      if (\n                        !$event.type.indexOf(\"key\") &&\n                        _vm._k($event.keyCode, \"up\", 38, $event.key, [\n                          \"Up\",\n                          \"ArrowUp\"\n                        ])\n                      ) {\n                        return null\n                      }\n                      $event.preventDefault();\n                      return _vm.changeTime(0, 1)\n                    },\n                    function($event) {\n                      if (\n                        !$event.type.indexOf(\"key\") &&\n                        _vm._k($event.keyCode, \"down\", 40, $event.key, [\n                          \"Down\",\n                          \"ArrowDown\"\n                        ])\n                      ) {\n                        return null\n                      }\n                      $event.preventDefault();\n                      return _vm.changeTime(0, 0)\n                    }\n                  ],\n                  wheel: function($event) {\n                    return _vm.onWheel($event, false)\n                  },\n                  change: function($event) {\n                    _vm.minutesText = $event.target.value;\n                  }\n                }\n              })\n            ]),\n            _vm._v(\" \"),\n            _vm.showMeridian\n              ? _c(\n                  \"td\",\n                  [\n                    _vm._v(\"\\n         \\n        \"),\n                    _c(\"btn\", {\n                      attrs: {\n                        \"data-action\": \"toggleMeridian\",\n                        disabled: _vm.readonly\n                      },\n                      domProps: {\n                        textContent: _vm._s(\n                          _vm.meridian\n                            ? _vm.t(\"uiv.timePicker.am\")\n                            : _vm.t(\"uiv.timePicker.pm\")\n                        )\n                      },\n                      on: { click: _vm.toggleMeridian }\n                    })\n                  ],\n                  1\n                )\n              : _vm._e()\n          ]),\n          _vm._v(\" \"),\n          _vm.controls\n            ? _c(\"tr\", { staticClass: \"text-center\" }, [\n                _c(\n                  \"td\",\n                  [\n                    _c(\n                      \"btn\",\n                      {\n                        attrs: {\n                          type: \"link\",\n                          size: \"sm\",\n                          disabled: _vm.readonly\n                        },\n                        on: {\n                          click: function($event) {\n                            return _vm.changeTime(1, 0)\n                          }\n                        }\n                      },\n                      [_c(\"i\", { class: _vm.iconControlDown })]\n                    )\n                  ],\n                  1\n                ),\n                _vm._v(\" \"),\n                _c(\"td\", [_vm._v(\" \")]),\n                _vm._v(\" \"),\n                _c(\n                  \"td\",\n                  [\n                    _c(\n                      \"btn\",\n                      {\n                        attrs: {\n                          type: \"link\",\n                          size: \"sm\",\n                          disabled: _vm.readonly\n                        },\n                        on: {\n                          click: function($event) {\n                            return _vm.changeTime(0, 0)\n                          }\n                        }\n                      },\n                      [_c(\"i\", { class: _vm.iconControlDown })]\n                    )\n                  ],\n                  1\n                ),\n                _vm._v(\" \"),\n                _vm.showMeridian ? _c(\"td\") : _vm._e()\n              ])\n            : _vm._e()\n        ])\n      ])\n    ]\n  )\n};\nvar __vue_staticRenderFns__$c = [\n  function() {\n    var _vm = this;\n    var _h = _vm.$createElement;\n    var _c = _vm._self._c || _h;\n    return _c(\"td\", [_vm._v(\" \"), _c(\"b\", [_vm._v(\":\")]), _vm._v(\" \")])\n  }\n];\n__vue_render__$c._withStripped = true;\n\n  /* style */\n  var __vue_inject_styles__$c = undefined;\n  /* scoped */\n  var __vue_scope_id__$c = undefined;\n  /* module identifier */\n  var __vue_module_identifier__$c = undefined;\n  /* functional template */\n  var __vue_is_functional_template__$c = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  var __vue_component__$c = /*#__PURE__*/normalizeComponent(\n    { render: __vue_render__$c, staticRenderFns: __vue_staticRenderFns__$c },\n    __vue_inject_styles__$c,\n    __vue_script__$c,\n    __vue_scope_id__$c,\n    __vue_is_functional_template__$c,\n    __vue_module_identifier__$c,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nfunction request (url, method) {\n  if ( method === void 0 ) method = 'GET';\n\n  var request = new window.XMLHttpRequest();\n  var data = {};\n  var p = {\n    then: function (fn1, fn2) { return p.done(fn1).fail(fn2); },\n    catch: function (fn) { return p.fail(fn); },\n    always: function (fn) { return p.done(fn).fail(fn); }\n  };\n  var statuses = ['done', 'fail'];\n  statuses.forEach(function (name) {\n    data[name] = [];\n    p[name] = function (fn) {\n      if (fn instanceof Function) { data[name].push(fn); }\n      return p\n    };\n  });\n  p.done(JSON.parse);\n  request.onreadystatechange = function () {\n    if (request.readyState === 4) {\n      var e = { status: request.status };\n      if (request.status === 200) {\n        var response = request.responseText;\n        for (var i in data.done) {\n          /* istanbul ignore else */\n          if (hasOwnProperty(data.done, i) && isFunction(data.done[i])) {\n            var value = data.done[i](response);\n            if (isExist(value)) {\n              response = value;\n            }\n          }\n        }\n      } else {\n        data.fail.forEach(function (fail) { return fail(e); });\n      }\n    }\n  };\n  request.open(method, url);\n  request.setRequestHeader('Accept', 'application/json');\n  request.send();\n  return p\n}\n\nvar script$d = {\n  components: { Dropdown: Dropdown },\n  props: {\n    value: {\n      required: true\n    },\n    data: Array,\n    itemKey: String,\n    appendToBody: {\n      type: Boolean,\n      default: false\n    },\n    ignoreCase: {\n      type: Boolean,\n      default: true\n    },\n    matchStart: {\n      type: Boolean,\n      default: false\n    },\n    forceSelect: {\n      type: Boolean,\n      default: false\n    },\n    forceClear: {\n      type: Boolean,\n      default: false\n    },\n    limit: {\n      type: Number,\n      default: 10\n    },\n    asyncSrc: String,\n    asyncKey: String,\n    asyncFunction: Function,\n    debounce: {\n      type: Number,\n      default: 200\n    },\n    openOnFocus: {\n      type: Boolean,\n      default: true\n    },\n    openOnEmpty: {\n      type: Boolean,\n      default: false\n    },\n    target: {\n      required: true\n    },\n    preselect: {\n      type: Boolean,\n      default: true\n    }\n  },\n  data: function data () {\n    return {\n      inputEl: null,\n      items: [],\n      activeIndex: 0,\n      timeoutID: 0,\n      elements: [],\n      open: false,\n      dropdownMenuEl: null\n    }\n  },\n  computed: {\n    regexOptions: function regexOptions () {\n      var options = '';\n      if (this.ignoreCase) {\n        options += 'i';\n      }\n      if (!this.matchStart) {\n        options += 'g';\n      }\n      return options\n    }\n  },\n  mounted: function mounted () {\n    var this$1 = this;\n\n    ensureElementMatchesFunction();\n    this.$nextTick(function () {\n      this$1.initInputElByTarget(this$1.target);\n      this$1.initListeners();\n      this$1.dropdownMenuEl = this$1.$refs.dropdown.$el.querySelector('.dropdown-menu');\n      // set input text if v-model not empty\n      if (this$1.value) {\n        this$1.setInputTextByValue(this$1.value);\n      }\n    });\n  },\n  beforeDestroy: function beforeDestroy () {\n    this.removeListeners();\n  },\n  watch: {\n    target: function target (el) {\n      this.removeListeners();\n      this.initInputElByTarget(el);\n      this.initListeners();\n    },\n    value: function value (value$1) {\n      this.setInputTextByValue(value$1);\n    }\n  },\n  methods: {\n    setInputTextByValue: function setInputTextByValue (value) {\n      if (isString(value)) {\n        // direct\n        this.inputEl.value = value;\n      } else if (value) {\n        // is object\n        this.inputEl.value = this.itemKey ? value[this.itemKey] : value;\n      } else if (value === null) {\n        // is null or undefined or something else not valid\n        this.inputEl.value = '';\n      }\n    },\n    hasEmptySlot: function hasEmptySlot () {\n      return !!this.$slots.empty || !!this.$scopedSlots.empty\n    },\n    initInputElByTarget: function initInputElByTarget (target) {\n      if (!target) {\n        return\n      }\n      this.inputEl = getElementBySelectorOrRef(target);\n    },\n    initListeners: function initListeners () {\n      if (this.inputEl) {\n        this.elements = [this.inputEl];\n        on(this.inputEl, EVENTS.FOCUS, this.inputFocused);\n        on(this.inputEl, EVENTS.BLUR, this.inputBlured);\n        on(this.inputEl, EVENTS.INPUT, this.inputChanged);\n        on(this.inputEl, EVENTS.KEY_DOWN, this.inputKeyPressed);\n      }\n    },\n    removeListeners: function removeListeners () {\n      this.elements = [];\n      if (this.inputEl) {\n        off(this.inputEl, EVENTS.FOCUS, this.inputFocused);\n        off(this.inputEl, EVENTS.BLUR, this.inputBlured);\n        off(this.inputEl, EVENTS.INPUT, this.inputChanged);\n        off(this.inputEl, EVENTS.KEY_DOWN, this.inputKeyPressed);\n      }\n    },\n    prepareItems: function prepareItems (data, disableFilters) {\n      if ( disableFilters === void 0 ) disableFilters = false;\n\n      if (disableFilters) {\n        this.items = data.slice(0, this.limit);\n        return\n      }\n      this.items = [];\n      this.activeIndex = this.preselect ? 0 : -1;\n      for (var i = 0, l = data.length; i < l; i++) {\n        var item = data[i];\n        var key = this.itemKey ? item[this.itemKey] : item;\n        key = key.toString();\n        var index = -1;\n        if (this.ignoreCase) {\n          index = key.toLowerCase().indexOf(this.inputEl.value.toLowerCase());\n        } else {\n          index = key.indexOf(this.inputEl.value);\n        }\n        if (this.matchStart ? index === 0 : index >= 0) {\n          this.items.push(item);\n        }\n        if (this.items.length >= this.limit) {\n          break\n        }\n      }\n    },\n    fetchItems: function fetchItems (value, debounce) {\n      var this$1 = this;\n\n      clearTimeout(this.timeoutID);\n      if (value === '' && !this.openOnEmpty) {\n        this.open = false;\n      } else if (this.data) {\n        this.prepareItems(this.data);\n        this.open = this.hasEmptySlot() || Boolean(this.items.length);\n      } else if (this.asyncSrc) {\n        this.timeoutID = setTimeout(function () {\n          this$1.$emit('loading');\n          request(this$1.asyncSrc + encodeURIComponent(value))\n            .then(function (data) {\n              if (this$1.inputEl.matches(':focus')) {\n                this$1.prepareItems(this$1.asyncKey ? data[this$1.asyncKey] : data, true);\n                this$1.open = this$1.hasEmptySlot() || Boolean(this$1.items.length);\n              }\n              this$1.$emit('loaded');\n            })\n            .catch(function (err) {\n              console.error(err);\n              this$1.$emit('loaded-error');\n            });\n        }, debounce);\n      } else if (this.asyncFunction) {\n        var cb = function (data) {\n          if (this$1.inputEl.matches(':focus')) {\n            this$1.prepareItems(data, true);\n            this$1.open = this$1.hasEmptySlot() || Boolean(this$1.items.length);\n          }\n          this$1.$emit('loaded');\n        };\n        this.timeoutID = setTimeout(function () {\n          this$1.$emit('loading');\n          this$1.asyncFunction(value, cb);\n        }, debounce);\n      }\n    },\n    inputChanged: function inputChanged () {\n      var value = this.inputEl.value;\n      this.fetchItems(value, this.debounce);\n      this.$emit('input', this.forceSelect ? undefined : value);\n    },\n    inputFocused: function inputFocused () {\n      if (this.openOnFocus) {\n        var value = this.inputEl.value;\n        this.fetchItems(value, 0);\n      }\n    },\n    inputBlured: function inputBlured () {\n      var this$1 = this;\n\n      if (!this.dropdownMenuEl.matches(':hover')) {\n        this.open = false;\n      }\n      if (this.inputEl && this.forceClear) {\n        this.$nextTick(function () {\n          if (typeof this$1.value === 'undefined') {\n            this$1.inputEl.value = '';\n          }\n        });\n      }\n    },\n    inputKeyPressed: function inputKeyPressed (event) {\n      event.stopPropagation();\n      if (this.open) {\n        switch (event.keyCode) {\n          case 13:\n            if (this.activeIndex >= 0) {\n              this.selectItem(this.items[this.activeIndex]);\n            } else {\n              this.open = false;\n            }\n            event.preventDefault();\n            break\n          case 27:\n            this.open = false;\n            break\n          case 38:\n            this.activeIndex = this.activeIndex > 0 ? this.activeIndex - 1 : 0;\n            break\n          case 40: {\n            var maxIndex = this.items.length - 1;\n            this.activeIndex = this.activeIndex < maxIndex ? this.activeIndex + 1 : maxIndex;\n            break\n          }\n        }\n      }\n    },\n    selectItem: function selectItem (item) {\n      this.$emit('input', item);\n      this.open = false;\n    },\n    highlight: function highlight (item) {\n      var value = this.itemKey ? item[this.itemKey] : item;\n      var inputValue = this.inputEl.value.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n      return value.replace(new RegExp((\"\" + inputValue), this.regexOptions), '$& ')\n    }\n  }\n};\n\n/* script */\nvar __vue_script__$d = script$d;\n\n/* template */\nvar __vue_render__$d = function() {\n  var _vm = this;\n  var _h = _vm.$createElement;\n  var _c = _vm._self._c || _h;\n  return _c(\n    \"dropdown\",\n    {\n      ref: \"dropdown\",\n      attrs: {\n        tag: \"section\",\n        \"append-to-body\": _vm.appendToBody,\n        \"not-close-elements\": _vm.elements,\n        \"position-element\": _vm.inputEl\n      },\n      model: {\n        value: _vm.open,\n        callback: function($$v) {\n          _vm.open = $$v;\n        },\n        expression: \"open\"\n      }\n    },\n    [\n      _c(\n        \"template\",\n        { slot: \"dropdown\" },\n        [\n          _vm._t(\n            \"item\",\n            _vm._l(_vm.items, function(item, index) {\n              return _c(\n                \"li\",\n                { class: { active: _vm.activeIndex === index } },\n                [\n                  _c(\n                    \"a\",\n                    {\n                      attrs: { href: \"#\" },\n                      on: {\n                        click: function($event) {\n                          $event.preventDefault();\n                          return _vm.selectItem(item)\n                        }\n                      }\n                    },\n                    [\n                      _c(\"span\", {\n                        domProps: { innerHTML: _vm._s(_vm.highlight(item)) }\n                      })\n                    ]\n                  )\n                ]\n              )\n            }),\n            {\n              items: _vm.items,\n              activeIndex: _vm.activeIndex,\n              select: _vm.selectItem,\n              highlight: _vm.highlight\n            }\n          ),\n          _vm._v(\" \"),\n          !_vm.items || _vm.items.length === 0 ? _vm._t(\"empty\") : _vm._e()\n        ],\n        2\n      )\n    ],\n    2\n  )\n};\nvar __vue_staticRenderFns__$d = [];\n__vue_render__$d._withStripped = true;\n\n  /* style */\n  var __vue_inject_styles__$d = undefined;\n  /* scoped */\n  var __vue_scope_id__$d = undefined;\n  /* module identifier */\n  var __vue_module_identifier__$d = undefined;\n  /* functional template */\n  var __vue_is_functional_template__$d = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  var __vue_component__$d = /*#__PURE__*/normalizeComponent(\n    { render: __vue_render__$d, staticRenderFns: __vue_staticRenderFns__$d },\n    __vue_inject_styles__$d,\n    __vue_script__$d,\n    __vue_scope_id__$d,\n    __vue_is_functional_template__$d,\n    __vue_module_identifier__$d,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nvar ProgressBarStack = {\n  functional: true,\n  render: function render (h, ref) {\n    var obj;\n\n    var props = ref.props;\n    var data = ref.data;\n    return h(\n      'div',\n      a(data, {\n        class: ( obj = {\n          'progress-bar': true,\n          'progress-bar-striped': props.striped,\n          active: props.striped && props.active\n        }, obj[(\"progress-bar-\" + (props.type))] = Boolean(props.type), obj ),\n        style: {\n          minWidth: props.minWidth ? '2em' : null,\n          width: ((props.value) + \"%\")\n        },\n        attrs: {\n          role: 'progressbar',\n          'aria-valuemin': 0,\n          'aria-valuenow': props.value,\n          'aria-valuemax': 100\n        }\n      }),\n      props.label ? (props.labelText ? props.labelText : ((props.value) + \"%\")) : null\n    )\n  },\n  props: {\n    value: {\n      type: Number,\n      required: true,\n      validator: function validator (value) {\n        return value >= 0 && value <= 100\n      }\n    },\n    labelText: String,\n    type: String,\n    label: {\n      type: Boolean,\n      default: false\n    },\n    minWidth: {\n      type: Boolean,\n      default: false\n    },\n    striped: {\n      type: Boolean,\n      default: false\n    },\n    active: {\n      type: Boolean,\n      default: false\n    }\n  }\n};\n\nvar ProgressBar = {\n  functional: true,\n  render: function render (h, ref) {\n    var props = ref.props;\n    var data = ref.data;\n    var children = ref.children;\n\n    return h(\n      'div',\n      a(data, { class: 'progress' }),\n      children && children.length ? children : [h(ProgressBarStack, { props: props })]\n    )\n  }\n};\n\nvar BreadcrumbItem = {\n  functional: true,\n  mixins: [linkMixin],\n  render: function render (h, ref) {\n    var props = ref.props;\n    var data = ref.data;\n    var children = ref.children;\n\n    var slot;\n    if (props.active) {\n      slot = children;\n    } else if (props.to) {\n      slot = [\n        h('router-link', {\n          props: {\n            to: props.to,\n            replace: props.replace,\n            append: props.append,\n            exact: props.exact\n          }\n        }, children)\n      ];\n    } else {\n      slot = [\n        h('a', {\n          attrs: {\n            href: props.href,\n            target: props.target\n          }\n        }, children)\n      ];\n    }\n    return h('li', a(data, { class: { active: props.active } }), slot)\n  },\n  props: {\n    active: {\n      type: Boolean,\n      default: false\n    }\n  }\n};\n\nvar Breadcrumbs = {\n  functional: true,\n  render: function render (h, ref) {\n    var props = ref.props;\n    var data = ref.data;\n    var children = ref.children;\n\n    var slot = [];\n    if (children && children.length) {\n      slot = children;\n    } else if (props.items) {\n      slot = props.items.map(function (item, index) {\n        return h(\n          BreadcrumbItem,\n          {\n            key: hasOwnProperty(item, 'key') ? item.key : index,\n            props: {\n              active: hasOwnProperty(item, 'active') ? item.active : index === props.items.length - 1,\n              href: item.href,\n              target: item.target,\n              to: item.to,\n              replace: item.replace,\n              append: item.append,\n              exact: item.exact\n            }\n          },\n          item.text\n        )\n      });\n    }\n    return h('ol', a(data, { class: 'breadcrumb' }), slot)\n  },\n  props: {\n    items: Array\n  }\n};\n\nvar BtnToolbar = {\n  functional: true,\n  render: function render (h, ref) {\n    var children = ref.children;\n    var data = ref.data;\n\n    return h(\n      'div',\n      a(data, {\n        class: {\n          'btn-toolbar': true\n        },\n        attrs: {\n          role: 'toolbar'\n        }\n      }),\n      children\n    )\n  }\n};\n\nvar script$e = {\n  mixins: [Local],\n  components: { Dropdown: Dropdown },\n  props: {\n    value: {\n      type: Array,\n      required: true\n    },\n    options: {\n      type: Array,\n      required: true\n    },\n    labelKey: {\n      type: String,\n      default: 'label'\n    },\n    valueKey: {\n      type: String,\n      default: 'value'\n    },\n    limit: {\n      type: Number,\n      default: 0\n    },\n    size: String,\n    placeholder: String,\n    split: {\n      type: String,\n      default: ', '\n    },\n    disabled: {\n      type: Boolean,\n      default: false\n    },\n    appendToBody: {\n      type: Boolean,\n      default: false\n    },\n    block: {\n      type: Boolean,\n      default: false\n    },\n    collapseSelected: {\n      type: Boolean,\n      default: false\n    },\n    filterable: {\n      type: Boolean,\n      default: false\n    },\n    filterAutoFocus: {\n      type: Boolean,\n      default: true\n    },\n    filterFunction: Function,\n    filterPlaceholder: String,\n    selectedIcon: {\n      type: String,\n      default: 'glyphicon glyphicon-ok'\n    },\n    itemSelectedClass: String\n  },\n  data: function data () {\n    return {\n      showDropdown: false,\n      els: [],\n      filterInput: '',\n      currentActive: -1\n    }\n  },\n  computed: {\n    containerStyles: function containerStyles () {\n      return {\n        width: this.block ? '100%' : ''\n      }\n    },\n    filteredOptions: function filteredOptions () {\n      var this$1 = this;\n\n      if (this.filterable && this.filterInput) {\n        if (this.filterFunction) {\n          return this.filterFunction(this.filterInput)\n        } else {\n          var filterInput = this.filterInput.toLowerCase();\n          return this.options.filter(function (v) { return (\n            v[this$1.valueKey].toString().toLowerCase().indexOf(filterInput) >= 0 ||\n            v[this$1.labelKey].toString().toLowerCase().indexOf(filterInput) >= 0\n          ); })\n        }\n      } else {\n        return this.options\n      }\n    },\n    groupedOptions: function groupedOptions () {\n      var this$1 = this;\n\n      return this.filteredOptions\n        .map(function (v) { return v.group; })\n        .filter(onlyUnique)\n        .map(function (v) { return ({\n          options: this$1.filteredOptions.filter(function (option) { return option.group === v; }),\n          $group: v\n        }); })\n    },\n    flattenGroupedOptions: function flattenGroupedOptions () {\n      var ref;\n\n      return (ref = []).concat.apply(ref, this.groupedOptions.map(function (v) { return v.options; }))\n    },\n    selectClasses: function selectClasses () {\n      var obj;\n\n      return ( obj = {}, obj[(\"input-\" + (this.size))] = this.size, obj )\n    },\n    selectedIconClasses: function selectedIconClasses () {\n      var obj;\n\n      return ( obj = {}, obj[this.selectedIcon] = true, obj['pull-right'] = true, obj )\n    },\n    selectTextClasses: function selectTextClasses () {\n      return {\n        'text-muted': this.value.length === 0\n      }\n    },\n    labelValue: function labelValue () {\n      var this$1 = this;\n\n      var optionsByValue = this.options.map(function (v) { return v[this$1.valueKey]; });\n      return this.value.map(function (v) {\n        var index = optionsByValue.indexOf(v);\n        return index >= 0 ? this$1.options[index][this$1.labelKey] : v\n      })\n    },\n    selectedText: function selectedText () {\n      if (this.value.length) {\n        var labelValue = this.labelValue;\n        if (this.collapseSelected) {\n          var str = labelValue[0];\n          str += labelValue.length > 1 ? ((this.split) + \"+\" + (labelValue.length - 1)) : '';\n          return str\n        } else {\n          return labelValue.join(this.split)\n        }\n      } else {\n        return this.placeholder || this.t('uiv.multiSelect.placeholder')\n      }\n    },\n    customOptionsVisible: function customOptionsVisible () {\n      return !!this.$slots.option || !!this.$scopedSlots.option\n    }\n  },\n  watch: {\n    showDropdown: function showDropdown (v) {\n      var this$1 = this;\n\n      // clear filter input when dropdown toggles\n      this.filterInput = '';\n      this.currentActive = -1;\n      this.$emit('visible-change', v);\n      if (v && this.filterable && this.filterAutoFocus) {\n        this.$nextTick(function () {\n          this$1.$refs.filterInput.focus();\n        });\n      }\n    }\n  },\n  mounted: function mounted () {\n    this.els = [this.$el];\n  },\n  methods: {\n    goPrevOption: function goPrevOption () {\n      if (!this.showDropdown) {\n        return\n      }\n      this.currentActive > 0 ? this.currentActive-- : this.currentActive = this.flattenGroupedOptions.length - 1;\n    },\n    goNextOption: function goNextOption () {\n      if (!this.showDropdown) {\n        return\n      }\n      this.currentActive < this.flattenGroupedOptions.length - 1 ? this.currentActive++ : this.currentActive = 0;\n    },\n    selectOption: function selectOption () {\n      var index = this.currentActive;\n      var options = this.flattenGroupedOptions;\n      if (!this.showDropdown) {\n        this.showDropdown = true;\n      } else if (index >= 0 && index < options.length) {\n        this.toggle(options[index]);\n      }\n    },\n    itemClasses: function itemClasses (item) {\n      var result = {\n        disabled: item.disabled,\n        active: this.currentActive === this.flattenGroupedOptions.indexOf(item)\n      };\n      if (this.itemSelectedClass) {\n        result[this.itemSelectedClass] = this.isItemSelected(item);\n      }\n      return result\n    },\n    isItemSelected: function isItemSelected (item) {\n      return this.value.indexOf(item[this.valueKey]) >= 0\n    },\n    toggle: function toggle (item) {\n      if (item.disabled) {\n        return\n      }\n      var value = item[this.valueKey];\n      var index = this.value.indexOf(value);\n      if (this.limit === 1) {\n        var newValue = index >= 0 ? [] : [value];\n        this.$emit('input', newValue);\n        this.$emit('change', newValue);\n      } else {\n        if (index >= 0) {\n          var newVal = this.value.slice();\n          newVal.splice(index, 1);\n          this.$emit('input', newVal);\n          this.$emit('change', newVal);\n        } else if (this.limit === 0 || this.value.length < this.limit) {\n          var newVal$1 = this.value.slice();\n          newVal$1.push(value);\n          this.$emit('input', newVal$1);\n          this.$emit('change', newVal$1);\n        } else {\n          this.$emit('limit-exceed');\n        }\n      }\n    },\n    searchClicked: function searchClicked () {\n      this.$emit('search', this.filterInput);\n    }\n  }\n};\n\n/* script */\nvar __vue_script__$e = script$e;\n\n/* template */\nvar __vue_render__$e = function() {\n  var _vm = this;\n  var _h = _vm.$createElement;\n  var _c = _vm._self._c || _h;\n  return _c(\n    \"dropdown\",\n    {\n      ref: \"dropdown\",\n      style: _vm.containerStyles,\n      attrs: {\n        \"not-close-elements\": _vm.els,\n        \"append-to-body\": _vm.appendToBody,\n        disabled: _vm.disabled\n      },\n      nativeOn: {\n        keydown: function($event) {\n          if (\n            !$event.type.indexOf(\"key\") &&\n            _vm._k($event.keyCode, \"esc\", 27, $event.key, [\"Esc\", \"Escape\"])\n          ) {\n            return null\n          }\n          _vm.showDropdown = false;\n        }\n      },\n      model: {\n        value: _vm.showDropdown,\n        callback: function($$v) {\n          _vm.showDropdown = $$v;\n        },\n        expression: \"showDropdown\"\n      }\n    },\n    [\n      _c(\n        \"div\",\n        {\n          staticClass: \"form-control dropdown-toggle clearfix\",\n          class: _vm.selectClasses,\n          attrs: {\n            disabled: _vm.disabled,\n            tabindex: \"0\",\n            \"data-role\": \"trigger\"\n          },\n          on: {\n            focus: function($event) {\n              return _vm.$emit(\"focus\", $event)\n            },\n            blur: function($event) {\n              return _vm.$emit(\"blur\", $event)\n            },\n            keydown: [\n              function($event) {\n                if (\n                  !$event.type.indexOf(\"key\") &&\n                  _vm._k($event.keyCode, \"down\", 40, $event.key, [\n                    \"Down\",\n                    \"ArrowDown\"\n                  ])\n                ) {\n                  return null\n                }\n                $event.preventDefault();\n                $event.stopPropagation();\n                return _vm.goNextOption($event)\n              },\n              function($event) {\n                if (\n                  !$event.type.indexOf(\"key\") &&\n                  _vm._k($event.keyCode, \"up\", 38, $event.key, [\n                    \"Up\",\n                    \"ArrowUp\"\n                  ])\n                ) {\n                  return null\n                }\n                $event.preventDefault();\n                $event.stopPropagation();\n                return _vm.goPrevOption($event)\n              },\n              function($event) {\n                if (\n                  !$event.type.indexOf(\"key\") &&\n                  _vm._k($event.keyCode, \"enter\", 13, $event.key, \"Enter\")\n                ) {\n                  return null\n                }\n                $event.preventDefault();\n                $event.stopPropagation();\n                return _vm.selectOption($event)\n              }\n            ]\n          }\n        },\n        [\n          _c(\n            \"div\",\n            {\n              staticClass: \"pull-right\",\n              staticStyle: {\n                display: \"inline-block\",\n                \"vertical-align\": \"middle\"\n              }\n            },\n            [\n              _c(\"span\", [_vm._v(\" \")]),\n              _vm._v(\" \"),\n              _c(\"span\", { staticClass: \"caret\" })\n            ]\n          ),\n          _vm._v(\" \"),\n          _c(\"div\", {\n            class: _vm.selectTextClasses,\n            staticStyle: {\n              \"overflow-x\": \"hidden\",\n              \"text-overflow\": \"ellipsis\",\n              \"white-space\": \"nowrap\"\n            },\n            domProps: { textContent: _vm._s(_vm.selectedText) }\n          })\n        ]\n      ),\n      _vm._v(\" \"),\n      _c(\n        \"template\",\n        { slot: \"dropdown\" },\n        [\n          _vm.filterable\n            ? _c(\"li\", { staticStyle: { padding: \"4px 8px\" } }, [\n                _c(\"input\", {\n                  directives: [\n                    {\n                      name: \"model\",\n                      rawName: \"v-model\",\n                      value: _vm.filterInput,\n                      expression: \"filterInput\"\n                    }\n                  ],\n                  ref: \"filterInput\",\n                  staticClass: \"form-control input-sm\",\n                  attrs: {\n                    \"aria-label\": \"Filter...\",\n                    type: \"text\",\n                    placeholder:\n                      _vm.filterPlaceholder ||\n                      _vm.t(\"uiv.multiSelect.filterPlaceholder\")\n                  },\n                  domProps: { value: _vm.filterInput },\n                  on: {\n                    keyup: function($event) {\n                      if (\n                        !$event.type.indexOf(\"key\") &&\n                        _vm._k($event.keyCode, \"enter\", 13, $event.key, \"Enter\")\n                      ) {\n                        return null\n                      }\n                      return _vm.searchClicked($event)\n                    },\n                    keydown: [\n                      function($event) {\n                        if (\n                          !$event.type.indexOf(\"key\") &&\n                          _vm._k($event.keyCode, \"down\", 40, $event.key, [\n                            \"Down\",\n                            \"ArrowDown\"\n                          ])\n                        ) {\n                          return null\n                        }\n                        $event.preventDefault();\n                        $event.stopPropagation();\n                        return _vm.goNextOption($event)\n                      },\n                      function($event) {\n                        if (\n                          !$event.type.indexOf(\"key\") &&\n                          _vm._k($event.keyCode, \"up\", 38, $event.key, [\n                            \"Up\",\n                            \"ArrowUp\"\n                          ])\n                        ) {\n                          return null\n                        }\n                        $event.preventDefault();\n                        $event.stopPropagation();\n                        return _vm.goPrevOption($event)\n                      },\n                      function($event) {\n                        if (\n                          !$event.type.indexOf(\"key\") &&\n                          _vm._k(\n                            $event.keyCode,\n                            \"enter\",\n                            13,\n                            $event.key,\n                            \"Enter\"\n                          )\n                        ) {\n                          return null\n                        }\n                        $event.preventDefault();\n                        $event.stopPropagation();\n                        return _vm.selectOption($event)\n                      }\n                    ],\n                    input: function($event) {\n                      if ($event.target.composing) {\n                        return\n                      }\n                      _vm.filterInput = $event.target.value;\n                    }\n                  }\n                })\n              ])\n            : _vm._e(),\n          _vm._v(\" \"),\n          _vm._l(_vm.groupedOptions, function(item) {\n            return [\n              item.$group\n                ? _c(\"li\", {\n                    staticClass: \"dropdown-header\",\n                    domProps: { textContent: _vm._s(item.$group) }\n                  })\n                : _vm._e(),\n              _vm._v(\" \"),\n              _vm._l(item.options, function(_item) {\n                return [\n                  _c(\n                    \"li\",\n                    {\n                      class: _vm.itemClasses(_item),\n                      staticStyle: { outline: \"0\" },\n                      on: {\n                        keydown: [\n                          function($event) {\n                            if (\n                              !$event.type.indexOf(\"key\") &&\n                              _vm._k($event.keyCode, \"down\", 40, $event.key, [\n                                \"Down\",\n                                \"ArrowDown\"\n                              ])\n                            ) {\n                              return null\n                            }\n                            $event.preventDefault();\n                            $event.stopPropagation();\n                            return _vm.goNextOption($event)\n                          },\n                          function($event) {\n                            if (\n                              !$event.type.indexOf(\"key\") &&\n                              _vm._k($event.keyCode, \"up\", 38, $event.key, [\n                                \"Up\",\n                                \"ArrowUp\"\n                              ])\n                            ) {\n                              return null\n                            }\n                            $event.preventDefault();\n                            $event.stopPropagation();\n                            return _vm.goPrevOption($event)\n                          },\n                          function($event) {\n                            if (\n                              !$event.type.indexOf(\"key\") &&\n                              _vm._k(\n                                $event.keyCode,\n                                \"enter\",\n                                13,\n                                $event.key,\n                                \"Enter\"\n                              )\n                            ) {\n                              return null\n                            }\n                            $event.preventDefault();\n                            $event.stopPropagation();\n                            return _vm.selectOption($event)\n                          }\n                        ],\n                        click: function($event) {\n                          $event.stopPropagation();\n                          return _vm.toggle(_item)\n                        },\n                        mouseenter: function($event) {\n                          _vm.currentActive = -1;\n                        }\n                      }\n                    },\n                    [\n                      _vm.customOptionsVisible\n                        ? _c(\n                            \"a\",\n                            {\n                              staticStyle: { outline: \"0\" },\n                              attrs: { role: \"button\" }\n                            },\n                            [\n                              _vm._t(\"option\", null, { item: _item }),\n                              _vm._v(\" \"),\n                              _vm.selectedIcon && _vm.isItemSelected(_item)\n                                ? _c(\"span\", { class: _vm.selectedIconClasses })\n                                : _vm._e()\n                            ],\n                            2\n                          )\n                        : _vm.isItemSelected(_item)\n                        ? _c(\n                            \"a\",\n                            {\n                              staticStyle: { outline: \"0\" },\n                              attrs: { role: \"button\" }\n                            },\n                            [\n                              _c(\"b\", [_vm._v(_vm._s(_item[_vm.labelKey]))]),\n                              _vm._v(\" \"),\n                              _vm.selectedIcon\n                                ? _c(\"span\", { class: _vm.selectedIconClasses })\n                                : _vm._e()\n                            ]\n                          )\n                        : _c(\n                            \"a\",\n                            {\n                              staticStyle: { outline: \"0\" },\n                              attrs: { role: \"button\" }\n                            },\n                            [_c(\"span\", [_vm._v(_vm._s(_item[_vm.labelKey]))])]\n                          )\n                    ]\n                  )\n                ]\n              })\n            ]\n          })\n        ],\n        2\n      )\n    ],\n    2\n  )\n};\nvar __vue_staticRenderFns__$e = [];\n__vue_render__$e._withStripped = true;\n\n  /* style */\n  var __vue_inject_styles__$e = undefined;\n  /* scoped */\n  var __vue_scope_id__$e = undefined;\n  /* module identifier */\n  var __vue_module_identifier__$e = undefined;\n  /* functional template */\n  var __vue_is_functional_template__$e = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  var __vue_component__$e = /*#__PURE__*/normalizeComponent(\n    { render: __vue_render__$e, staticRenderFns: __vue_staticRenderFns__$e },\n    __vue_inject_styles__$e,\n    __vue_script__$e,\n    __vue_scope_id__$e,\n    __vue_is_functional_template__$e,\n    __vue_module_identifier__$e,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nvar script$f = {\n  components: { Collapse: Collapse },\n  props: {\n    value: Boolean,\n    fluid: {\n      type: Boolean,\n      default: true\n    },\n    fixedTop: Boolean,\n    fixedBottom: Boolean,\n    staticTop: Boolean,\n    inverse: Boolean\n  },\n  data: function data () {\n    return {\n      show: false\n    }\n  },\n  computed: {\n    navClasses: function navClasses () {\n      return {\n        navbar: true,\n        'navbar-default': !this.inverse,\n        'navbar-inverse': this.inverse,\n        'navbar-static-top': this.staticTop,\n        'navbar-fixed-bottom': this.fixedBottom,\n        'navbar-fixed-top': this.fixedTop\n      }\n    }\n  },\n  mounted: function mounted () {\n    this.show = !!this.value;\n  },\n  watch: {\n    value: function value (v) {\n      this.show = v;\n    }\n  },\n  methods: {\n    toggle: function toggle () {\n      this.show = !this.show;\n      this.$emit('input', this.show);\n    }\n  }\n};\n\n/* script */\nvar __vue_script__$f = script$f;\n\n/* template */\nvar __vue_render__$f = function() {\n  var _vm = this;\n  var _h = _vm.$createElement;\n  var _c = _vm._self._c || _h;\n  return _c(\"nav\", { class: _vm.navClasses }, [\n    _c(\n      \"div\",\n      { class: _vm.fluid ? \"container-fluid\" : \"container\" },\n      [\n        _c(\n          \"div\",\n          { staticClass: \"navbar-header\" },\n          [\n            _vm._t(\"collapse-btn\", [\n              _c(\n                \"button\",\n                {\n                  staticClass: \"navbar-toggle collapsed\",\n                  attrs: { type: \"button\" },\n                  on: { click: _vm.toggle }\n                },\n                [\n                  _c(\"span\", { staticClass: \"sr-only\" }, [\n                    _vm._v(\"Toggle navigation\")\n                  ]),\n                  _vm._v(\" \"),\n                  _c(\"span\", { staticClass: \"icon-bar\" }),\n                  _vm._v(\" \"),\n                  _c(\"span\", { staticClass: \"icon-bar\" }),\n                  _vm._v(\" \"),\n                  _c(\"span\", { staticClass: \"icon-bar\" })\n                ]\n              )\n            ]),\n            _vm._v(\" \"),\n            _vm._t(\"brand\")\n          ],\n          2\n        ),\n        _vm._v(\" \"),\n        _vm._t(\"default\"),\n        _vm._v(\" \"),\n        _c(\n          \"collapse\",\n          {\n            staticClass: \"navbar-collapse\",\n            model: {\n              value: _vm.show,\n              callback: function($$v) {\n                _vm.show = $$v;\n              },\n              expression: \"show\"\n            }\n          },\n          [_vm._t(\"collapse\")],\n          2\n        )\n      ],\n      2\n    )\n  ])\n};\nvar __vue_staticRenderFns__$f = [];\n__vue_render__$f._withStripped = true;\n\n  /* style */\n  var __vue_inject_styles__$f = undefined;\n  /* scoped */\n  var __vue_scope_id__$f = undefined;\n  /* module identifier */\n  var __vue_module_identifier__$f = undefined;\n  /* functional template */\n  var __vue_is_functional_template__$f = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  var __vue_component__$f = /*#__PURE__*/normalizeComponent(\n    { render: __vue_render__$f, staticRenderFns: __vue_staticRenderFns__$f },\n    __vue_inject_styles__$f,\n    __vue_script__$f,\n    __vue_scope_id__$f,\n    __vue_is_functional_template__$f,\n    __vue_module_identifier__$f,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nvar NavbarNav = {\n  functional: true,\n  render: function render (h, ref) {\n    var children = ref.children;\n    var data = ref.data;\n    var props = ref.props;\n\n    return h(\n      'ul',\n      a(data, {\n        class: {\n          nav: true,\n          'navbar-nav': true,\n          'navbar-left': props.left,\n          'navbar-right': props.right\n        }\n      }),\n      children\n    )\n  },\n  props: {\n    left: Boolean,\n    right: Boolean\n  }\n};\n\nvar NavbarForm = {\n  functional: true,\n  render: function render (h, ref) {\n    var children = ref.children;\n    var data = ref.data;\n    var props = ref.props;\n\n    return h(\n      'form',\n      a(data, {\n        class: {\n          'navbar-form': true,\n          'navbar-left': props.left,\n          'navbar-right': props.right\n        }\n      }),\n      children\n    )\n  },\n  props: {\n    left: Boolean,\n    right: Boolean\n  }\n};\n\nvar NavbarText = {\n  functional: true,\n  render: function render (h, ref) {\n    var children = ref.children;\n    var data = ref.data;\n    var props = ref.props;\n\n    return h(\n      'p',\n      a(data, {\n        class: {\n          'navbar-text': true,\n          'navbar-left': props.left,\n          'navbar-right': props.right\n        }\n      }),\n      children\n    )\n  },\n  props: {\n    left: Boolean,\n    right: Boolean\n  }\n};\n\nvar components = /*#__PURE__*/Object.freeze({\n  __proto__: null,\n  Carousel: __vue_component__,\n  Slide: __vue_component__$1,\n  Collapse: Collapse,\n  Dropdown: Dropdown,\n  Modal: __vue_component__$2,\n  Tab: __vue_component__$3,\n  Tabs: __vue_component__$4,\n  DatePicker: __vue_component__$8,\n  Affix: __vue_component__$9,\n  Alert: __vue_component__$a,\n  Pagination: __vue_component__$b,\n  Tooltip: Tooltip,\n  Popover: Popover,\n  TimePicker: __vue_component__$c,\n  Typeahead: __vue_component__$d,\n  ProgressBar: ProgressBar,\n  ProgressBarStack: ProgressBarStack,\n  Breadcrumbs: Breadcrumbs,\n  BreadcrumbItem: BreadcrumbItem,\n  Btn: Btn,\n  BtnGroup: BtnGroup,\n  BtnToolbar: BtnToolbar,\n  MultiSelect: __vue_component__$e,\n  Navbar: __vue_component__$f,\n  NavbarNav: NavbarNav,\n  NavbarForm: NavbarForm,\n  NavbarText: NavbarText\n});\n\nvar INSTANCE = '_uiv_tooltip_instance';\n\nvar bind$1 = function (el, binding) {\n  // console.log('bind')\n  unbind$1(el);\n  var Constructor = Vue.extend(Tooltip);\n  var vm = new Constructor({\n    propsData: {\n      target: el,\n      appendTo: binding.arg && '#' + binding.arg,\n      text: typeof binding.value === 'string' ? (binding.value && binding.value.toString()) : (binding.value && binding.value.text && binding.value.text.toString()),\n      positionBy: binding.value && binding.value.positionBy && binding.value.positionBy.toString(),\n      viewport: binding.value && binding.value.viewport && binding.value.viewport.toString(),\n      customClass: binding.value && binding.value.customClass && binding.value.customClass.toString(),\n      showDelay: binding.value && binding.value.showDelay,\n      hideDelay: binding.value && binding.value.hideDelay\n    }\n  });\n  var options = [];\n  for (var key in binding.modifiers) {\n    if (hasOwnProperty(binding.modifiers, key) && binding.modifiers[key]) {\n      options.push(key);\n    }\n  }\n  options.forEach(function (option) {\n    if (/(top)|(left)|(right)|(bottom)/.test(option)) {\n      vm.placement = option;\n    } else if (/(hover)|(focus)|(click)/.test(option)) {\n      vm.trigger = option;\n    } else if (/unenterable/.test(option)) {\n      vm.enterable = false;\n    }\n  });\n  vm.$mount();\n  el[INSTANCE] = vm;\n};\n\nvar unbind$1 = function (el) {\n  // console.log('unbind')\n  var vm = el[INSTANCE];\n  if (vm) {\n    vm.$destroy();\n  }\n  delete el[INSTANCE];\n};\n\nvar update$1 = function (el, binding) {\n  // console.log('update')\n  if (binding.value !== binding.oldValue) {\n    bind$1(el, binding);\n  }\n};\n\nvar tooltip = { bind: bind$1, unbind: unbind$1, update: update$1 };\n\nvar INSTANCE$1 = '_uiv_popover_instance';\n\nvar bind$2 = function (el, binding) {\n  // console.log('bind')\n  unbind$2(el);\n  var Constructor = Vue.extend(Popover);\n  var vm = new Constructor({\n    propsData: {\n      target: el,\n      appendTo: binding.arg && '#' + binding.arg,\n      title: binding.value && binding.value.title && binding.value.title.toString(),\n      positionBy: binding.value && binding.value.positionBy && binding.value.positionBy.toString(),\n      content: binding.value && binding.value.content && binding.value.content.toString(),\n      viewport: binding.value && binding.value.viewport && binding.value.viewport.toString(),\n      customClass: binding.value && binding.value.customClass && binding.value.customClass.toString()\n    }\n  });\n  var options = [];\n  for (var key in binding.modifiers) {\n    if (hasOwnProperty(binding.modifiers, key) && binding.modifiers[key]) {\n      options.push(key);\n    }\n  }\n  options.forEach(function (option) {\n    if (/(top)|(left)|(right)|(bottom)/.test(option)) {\n      vm.placement = option;\n    } else if (/(hover)|(focus)|(click)/.test(option)) {\n      vm.trigger = option;\n    } else if (/unenterable/.test(option)) {\n      vm.enterable = false;\n    }\n  });\n  vm.$mount();\n  el[INSTANCE$1] = vm;\n};\n\nvar unbind$2 = function (el) {\n  // console.log('unbind')\n  var vm = el[INSTANCE$1];\n  if (vm) {\n    vm.$destroy();\n  }\n  delete el[INSTANCE$1];\n};\n\nvar update$2 = function (el, binding) {\n  // console.log('update')\n  if (binding.value !== binding.oldValue) {\n    bind$2(el, binding);\n  }\n};\n\nvar popover = { bind: bind$2, unbind: unbind$2, update: update$2 };\n\nfunction ScrollSpy (element, target, options) {\n  if ( target === void 0 ) target = 'body';\n  if ( options === void 0 ) options = {};\n\n  this.el = element;\n  this.opts = assign({}, ScrollSpy.DEFAULTS, options);\n  this.opts.target = target;\n  if (target === 'body') {\n    this.scrollElement = window;\n  } else {\n    this.scrollElement = document.querySelector((\"[id=\" + target + \"]\"));\n  }\n  this.selector = 'li > a';\n  this.offsets = [];\n  this.targets = [];\n  this.activeTarget = null;\n  this.scrollHeight = 0;\n  if (this.scrollElement) {\n    this.refresh();\n    this.process();\n  }\n}\n\nScrollSpy.DEFAULTS = {\n  offset: 10,\n  callback: function (ele) { return 0; }\n};\n\nScrollSpy.prototype.getScrollHeight = function () {\n  return this.scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight)\n};\n\nScrollSpy.prototype.refresh = function () {\n  var this$1 = this;\n\n  this.offsets = [];\n  this.targets = [];\n  this.scrollHeight = this.getScrollHeight();\n  var list = nodeListToArray(this.el.querySelectorAll(this.selector));\n  var isWindow = this.scrollElement === window;\n  list\n    .map(function (ele) {\n      var href = ele.getAttribute('href');\n      if (/^#./.test(href)) {\n        var rootEl = isWindow ? document : this$1.scrollElement;\n        var hrefEl = rootEl.querySelector((\"[id='\" + (href.slice(1)) + \"']\"));\n        var offset = isWindow ? hrefEl.getBoundingClientRect().top : hrefEl.offsetTop;\n        return [offset, href]\n      } else {\n        return null\n      }\n    })\n    .filter(function (item) { return item; })\n    .sort(function (a, b) { return a[0] - b[0]; })\n    .forEach(function (item) {\n      this$1.offsets.push(item[0]);\n      this$1.targets.push(item[1]);\n    });\n  // console.log(this.offsets, this.targets)\n};\n\nScrollSpy.prototype.process = function () {\n  var isWindow = this.scrollElement === window;\n  var scrollTop = (isWindow ? window.pageYOffset : this.scrollElement.scrollTop) + this.opts.offset;\n  var scrollHeight = this.getScrollHeight();\n  var scrollElementHeight = isWindow ? getViewportSize().height : this.scrollElement.getBoundingClientRect().height;\n  var maxScroll = this.opts.offset + scrollHeight - scrollElementHeight;\n  var offsets = this.offsets;\n  var targets = this.targets;\n  var activeTarget = this.activeTarget;\n  var i;\n  if (this.scrollHeight !== scrollHeight) {\n    this.refresh();\n  }\n  if (scrollTop >= maxScroll) {\n    return activeTarget !== (i = targets[targets.length - 1]) && this.activate(i)\n  }\n  if (activeTarget && scrollTop < offsets[0]) {\n    this.activeTarget = null;\n    return this.clear()\n  }\n  for (i = offsets.length; i--;) {\n    activeTarget !== targets[i] &&\n    scrollTop >= offsets[i] &&\n    (offsets[i + 1] === undefined || scrollTop < offsets[i + 1]) &&\n    this.activate(targets[i]);\n  }\n};\n\nScrollSpy.prototype.activate = function (target) {\n  this.activeTarget = target;\n  this.clear();\n  var selector = this.selector +\n    '[data-target=\"' + target + '\"],' +\n    this.selector + '[href=\"' + target + '\"]';\n  var activeCallback = this.opts.callback;\n  var active = nodeListToArray(this.el.querySelectorAll(selector));\n  active.forEach(function (ele) {\n    getParents(ele, 'li')\n      .forEach(function (item) {\n        addClass(item, 'active');\n        activeCallback(item);\n      });\n    if (getParents(ele, '.dropdown-menu').length) {\n      addClass(getClosest(ele, 'li.dropdown'), 'active');\n    }\n  });\n};\n\nScrollSpy.prototype.clear = function () {\n  var this$1 = this;\n\n  var list = nodeListToArray(this.el.querySelectorAll(this.selector));\n  list.forEach(function (ele) {\n    getParents(ele, '.active', this$1.opts.target).forEach(function (item) {\n      removeClass(item, 'active');\n    });\n  });\n};\n\nvar INSTANCE$2 = '_uiv_scrollspy_instance';\nvar events$1 = [EVENTS.RESIZE, EVENTS.SCROLL];\n\nvar bind$3 = function (el, binding) {\n  // console.log('bind')\n  unbind$3(el);\n};\n\nvar inserted = function (el, binding) {\n  // console.log('inserted')\n  var scrollSpy = new ScrollSpy(el, binding.arg, binding.value);\n  if (scrollSpy.scrollElement) {\n    scrollSpy.handler = function () {\n      scrollSpy.process();\n    };\n    events$1.forEach(function (event) {\n      on(scrollSpy.scrollElement, event, scrollSpy.handler);\n    });\n  }\n  el[INSTANCE$2] = scrollSpy;\n};\n\nvar unbind$3 = function (el) {\n  // console.log('unbind')\n  var instance = el[INSTANCE$2];\n  if (instance && instance.scrollElement) {\n    events$1.forEach(function (event) {\n      off(instance.scrollElement, event, instance.handler);\n    });\n    delete el[INSTANCE$2];\n  }\n};\n\nvar update$3 = function (el, binding) {\n  // console.log('update')\n  var isArgUpdated = binding.arg !== binding.oldArg;\n  var isValueUpdated = binding.value !== binding.oldValue;\n  if (isArgUpdated || isValueUpdated) {\n    bind$3(el);\n    inserted(el, binding);\n  }\n};\n\nvar scrollspy = { bind: bind$3, unbind: unbind$3, update: update$3, inserted: inserted };\n\nvar directives = /*#__PURE__*/Object.freeze({\n  __proto__: null,\n  tooltip: tooltip,\n  popover: popover,\n  scrollspy: scrollspy\n});\n\nvar TYPES = {\n  ALERT: 0,\n  CONFIRM: 1,\n  PROMPT: 2\n};\n\nvar script$g = {\n  mixins: [Local],\n  components: { Modal: __vue_component__$2, Btn: Btn },\n  props: {\n    backdrop: null,\n    title: String,\n    content: String,\n    html: {\n      type: Boolean,\n      default: false\n    },\n    okText: String,\n    okType: {\n      type: String,\n      default: 'primary'\n    },\n    cancelText: String,\n    cancelType: {\n      type: String,\n      default: 'default'\n    },\n    type: {\n      type: Number,\n      default: TYPES.ALERT\n    },\n    size: {\n      type: String,\n      default: 'sm'\n    },\n    cb: {\n      type: Function,\n      required: true\n    },\n    validator: {\n      type: Function,\n      default: function () { return null; }\n    },\n    customClass: null,\n    defaultValue: String,\n    inputType: {\n      type: String,\n      default: 'text'\n    },\n    autoFocus: {\n      type: String,\n      default: 'ok'\n    },\n    reverseButtons: {\n      type: Boolean,\n      default: false\n    }\n  },\n  data: function data () {\n    return {\n      TYPES: TYPES,\n      show: false,\n      input: '',\n      dirty: false\n    }\n  },\n  mounted: function mounted () {\n    if (this.defaultValue) {\n      this.input = this.defaultValue;\n    }\n  },\n  computed: {\n    closeOnBackdropClick: function closeOnBackdropClick () {\n      // use backdrop prop if exist\n      // otherwise, only not available if render as alert\n      return isExist(this.backdrop) ? Boolean(this.backdrop) : (this.type !== TYPES.ALERT)\n    },\n    inputError: function inputError () {\n      return this.validator(this.input)\n    },\n    inputNotValid: function inputNotValid () {\n      return this.dirty && this.inputError\n    },\n    okBtnText: function okBtnText () {\n      return this.okText || this.t('uiv.modal.ok')\n    },\n    cancelBtnText: function cancelBtnText () {\n      return this.cancelText || this.t('uiv.modal.cancel')\n    }\n  },\n  methods: {\n    toggle: function toggle (show, msg) {\n      this.$refs.modal.toggle(show, msg);\n    },\n    validate: function validate () {\n      this.dirty = true;\n      if (!isExist(this.inputError)) {\n        this.toggle(false, { value: this.input });\n      }\n    }\n  }\n};\n\n/* script */\nvar __vue_script__$g = script$g;\n\n/* template */\nvar __vue_render__$g = function() {\n  var _vm = this;\n  var _h = _vm.$createElement;\n  var _c = _vm._self._c || _h;\n  return _c(\n    \"modal\",\n    {\n      ref: \"modal\",\n      class: _vm.customClass,\n      attrs: {\n        \"auto-focus\": \"\",\n        size: _vm.size,\n        title: _vm.title,\n        header: !!_vm.title,\n        backdrop: _vm.closeOnBackdropClick,\n        \"cancel-text\": _vm.cancelText,\n        \"ok-text\": _vm.okText\n      },\n      on: { hide: _vm.cb },\n      model: {\n        value: _vm.show,\n        callback: function($$v) {\n          _vm.show = $$v;\n        },\n        expression: \"show\"\n      }\n    },\n    [\n      _vm.html\n        ? _c(\"div\", { domProps: { innerHTML: _vm._s(_vm.content) } })\n        : _c(\"p\", [_vm._v(_vm._s(_vm.content))]),\n      _vm._v(\" \"),\n      _vm.type === _vm.TYPES.PROMPT\n        ? _c(\"div\", [\n            _c(\n              \"div\",\n              {\n                staticClass: \"form-group\",\n                class: { \"has-error\": _vm.inputNotValid }\n              },\n              [\n                _vm.inputType === \"checkbox\"\n                  ? _c(\"input\", {\n                      directives: [\n                        {\n                          name: \"model\",\n                          rawName: \"v-model\",\n                          value: _vm.input,\n                          expression: \"input\"\n                        }\n                      ],\n                      ref: \"input\",\n                      staticClass: \"form-control\",\n                      attrs: {\n                        required: \"\",\n                        \"data-action\": \"auto-focus\",\n                        type: \"checkbox\"\n                      },\n                      domProps: {\n                        checked: Array.isArray(_vm.input)\n                          ? _vm._i(_vm.input, null) > -1\n                          : _vm.input\n                      },\n                      on: {\n                        change: [\n                          function($event) {\n                            var $$a = _vm.input,\n                              $$el = $event.target,\n                              $$c = $$el.checked ? true : false;\n                            if (Array.isArray($$a)) {\n                              var $$v = null,\n                                $$i = _vm._i($$a, $$v);\n                              if ($$el.checked) {\n                                $$i < 0 && (_vm.input = $$a.concat([$$v]));\n                              } else {\n                                $$i > -1 &&\n                                  (_vm.input = $$a\n                                    .slice(0, $$i)\n                                    .concat($$a.slice($$i + 1)));\n                              }\n                            } else {\n                              _vm.input = $$c;\n                            }\n                          },\n                          function($event) {\n                            _vm.dirty = true;\n                          }\n                        ],\n                        keyup: function($event) {\n                          if (\n                            !$event.type.indexOf(\"key\") &&\n                            _vm._k(\n                              $event.keyCode,\n                              \"enter\",\n                              13,\n                              $event.key,\n                              \"Enter\"\n                            )\n                          ) {\n                            return null\n                          }\n                          return _vm.validate($event)\n                        }\n                      }\n                    })\n                  : _vm.inputType === \"radio\"\n                  ? _c(\"input\", {\n                      directives: [\n                        {\n                          name: \"model\",\n                          rawName: \"v-model\",\n                          value: _vm.input,\n                          expression: \"input\"\n                        }\n                      ],\n                      ref: \"input\",\n                      staticClass: \"form-control\",\n                      attrs: {\n                        required: \"\",\n                        \"data-action\": \"auto-focus\",\n                        type: \"radio\"\n                      },\n                      domProps: { checked: _vm._q(_vm.input, null) },\n                      on: {\n                        change: [\n                          function($event) {\n                            _vm.input = null;\n                          },\n                          function($event) {\n                            _vm.dirty = true;\n                          }\n                        ],\n                        keyup: function($event) {\n                          if (\n                            !$event.type.indexOf(\"key\") &&\n                            _vm._k(\n                              $event.keyCode,\n                              \"enter\",\n                              13,\n                              $event.key,\n                              \"Enter\"\n                            )\n                          ) {\n                            return null\n                          }\n                          return _vm.validate($event)\n                        }\n                      }\n                    })\n                  : _c(\"input\", {\n                      directives: [\n                        {\n                          name: \"model\",\n                          rawName: \"v-model\",\n                          value: _vm.input,\n                          expression: \"input\"\n                        }\n                      ],\n                      ref: \"input\",\n                      staticClass: \"form-control\",\n                      attrs: {\n                        required: \"\",\n                        \"data-action\": \"auto-focus\",\n                        type: _vm.inputType\n                      },\n                      domProps: { value: _vm.input },\n                      on: {\n                        change: function($event) {\n                          _vm.dirty = true;\n                        },\n                        keyup: function($event) {\n                          if (\n                            !$event.type.indexOf(\"key\") &&\n                            _vm._k(\n                              $event.keyCode,\n                              \"enter\",\n                              13,\n                              $event.key,\n                              \"Enter\"\n                            )\n                          ) {\n                            return null\n                          }\n                          return _vm.validate($event)\n                        },\n                        input: function($event) {\n                          if ($event.target.composing) {\n                            return\n                          }\n                          _vm.input = $event.target.value;\n                        }\n                      }\n                    }),\n                _vm._v(\" \"),\n                _c(\n                  \"span\",\n                  {\n                    directives: [\n                      {\n                        name: \"show\",\n                        rawName: \"v-show\",\n                        value: _vm.inputNotValid,\n                        expression: \"inputNotValid\"\n                      }\n                    ],\n                    staticClass: \"help-block\"\n                  },\n                  [_vm._v(_vm._s(_vm.inputError))]\n                )\n              ]\n            )\n          ])\n        : _vm._e(),\n      _vm._v(\" \"),\n      _vm.type === _vm.TYPES.ALERT\n        ? _c(\n            \"template\",\n            { slot: \"footer\" },\n            [\n              _c(\"btn\", {\n                attrs: {\n                  type: _vm.okType,\n                  \"data-action\": _vm.autoFocus === \"ok\" ? \"auto-focus\" : \"\"\n                },\n                domProps: { textContent: _vm._s(_vm.okBtnText) },\n                on: {\n                  click: function($event) {\n                    return _vm.toggle(false, \"ok\")\n                  }\n                }\n              })\n            ],\n            1\n          )\n        : _c(\n            \"template\",\n            { slot: \"footer\" },\n            [\n              _vm.reverseButtons\n                ? [\n                    _vm.type === _vm.TYPES.CONFIRM\n                      ? _c(\"btn\", {\n                          attrs: {\n                            type: _vm.okType,\n                            \"data-action\":\n                              _vm.autoFocus === \"ok\" ? \"auto-focus\" : \"\"\n                          },\n                          domProps: { textContent: _vm._s(_vm.okBtnText) },\n                          on: {\n                            click: function($event) {\n                              return _vm.toggle(false, \"ok\")\n                            }\n                          }\n                        })\n                      : _c(\"btn\", {\n                          attrs: { type: _vm.okType },\n                          domProps: { textContent: _vm._s(_vm.okBtnText) },\n                          on: { click: _vm.validate }\n                        }),\n                    _vm._v(\" \"),\n                    _c(\"btn\", {\n                      attrs: {\n                        type: _vm.cancelType,\n                        \"data-action\":\n                          _vm.autoFocus === \"cancel\" ? \"auto-focus\" : \"\"\n                      },\n                      domProps: { textContent: _vm._s(_vm.cancelBtnText) },\n                      on: {\n                        click: function($event) {\n                          return _vm.toggle(false, \"cancel\")\n                        }\n                      }\n                    })\n                  ]\n                : [\n                    _c(\"btn\", {\n                      attrs: {\n                        type: _vm.cancelType,\n                        \"data-action\":\n                          _vm.autoFocus === \"cancel\" ? \"auto-focus\" : \"\"\n                      },\n                      domProps: { textContent: _vm._s(_vm.cancelBtnText) },\n                      on: {\n                        click: function($event) {\n                          return _vm.toggle(false, \"cancel\")\n                        }\n                      }\n                    }),\n                    _vm._v(\" \"),\n                    _vm.type === _vm.TYPES.CONFIRM\n                      ? _c(\"btn\", {\n                          attrs: {\n                            type: _vm.okType,\n                            \"data-action\":\n                              _vm.autoFocus === \"ok\" ? \"auto-focus\" : \"\"\n                          },\n                          domProps: { textContent: _vm._s(_vm.okBtnText) },\n                          on: {\n                            click: function($event) {\n                              return _vm.toggle(false, \"ok\")\n                            }\n                          }\n                        })\n                      : _c(\"btn\", {\n                          attrs: { type: _vm.okType },\n                          domProps: { textContent: _vm._s(_vm.okBtnText) },\n                          on: { click: _vm.validate }\n                        })\n                  ]\n            ],\n            2\n          )\n    ],\n    2\n  )\n};\nvar __vue_staticRenderFns__$g = [];\n__vue_render__$g._withStripped = true;\n\n  /* style */\n  var __vue_inject_styles__$g = undefined;\n  /* scoped */\n  var __vue_scope_id__$g = undefined;\n  /* module identifier */\n  var __vue_module_identifier__$g = undefined;\n  /* functional template */\n  var __vue_is_functional_template__$g = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  var __vue_component__$g = /*#__PURE__*/normalizeComponent(\n    { render: __vue_render__$g, staticRenderFns: __vue_staticRenderFns__$g },\n    __vue_inject_styles__$g,\n    __vue_script__$g,\n    __vue_scope_id__$g,\n    __vue_is_functional_template__$g,\n    __vue_module_identifier__$g,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nvar queue = [];\n\nvar destroy = function (instance) {\n  // console.log('destroyModal')\n  removeFromDom(instance.$el);\n  instance.$destroy();\n  spliceIfExist(queue, instance);\n};\n\n// handel cancel or ok for confirm & prompt\nvar shallResolve = function (type, msg) {\n  if (type === TYPES.CONFIRM) {\n    // is confirm\n    return msg === 'ok'\n  } else {\n    // is prompt\n    return isExist(msg) && isString(msg.value)\n  }\n};\n\nvar init = function (type, options, cb, resolve, reject) {\n  if ( resolve === void 0 ) resolve = null;\n  if ( reject === void 0 ) reject = null;\n\n  var i18n = this.$i18n;\n  var instance = new Vue({\n    extends: __vue_component__$g,\n    i18n: i18n,\n    propsData: assign({}, { type: type }, options, {\n      cb: function cb$1 (msg) {\n        destroy(instance);\n        if (isFunction(cb)) {\n          if (type === TYPES.CONFIRM) {\n            shallResolve(type, msg) ? cb(null, msg) : cb(msg);\n          } else if (type === TYPES.PROMPT) {\n            shallResolve(type, msg) ? cb(null, msg.value) : cb(msg);\n          } else {\n            cb(msg);\n          }\n        } else if (resolve && reject) {\n          if (type === TYPES.CONFIRM) {\n            shallResolve(type, msg) ? resolve(msg) : reject(msg);\n          } else if (type === TYPES.PROMPT) {\n            shallResolve(type, msg) ? resolve(msg.value) : reject(msg);\n          } else {\n            resolve(msg);\n          }\n        }\n      }\n    })\n  });\n  instance.$mount();\n  document.body.appendChild(instance.$el);\n  instance.show = true;\n  queue.push(instance);\n};\n\n// eslint-disable-next-line default-param-last\nvar initModal = function (type, options, cb) {\n  var this$1 = this;\n  if ( options === void 0 ) options = {};\n\n  if (isPromiseSupported()) {\n    return new Promise(function (resolve, reject) {\n      init.apply(this$1, [type, options, cb, resolve, reject]);\n    })\n  } else {\n    init.apply(this, [type, options, cb]);\n  }\n};\n\nvar alert = function (options, cb) {\n  return initModal.apply(this, [TYPES.ALERT, options, cb])\n};\n\nvar confirm = function (options, cb) {\n  return initModal.apply(this, [TYPES.CONFIRM, options, cb])\n};\n\nvar prompt = function (options, cb) {\n  return initModal.apply(this, [TYPES.PROMPT, options, cb])\n};\n\nvar MessageBox = { alert: alert, confirm: confirm, prompt: prompt };\n\nvar TYPES$1 = {\n  SUCCESS: 'success',\n  INFO: 'info',\n  DANGER: 'danger',\n  WARNING: 'warning'\n};\n\nvar PLACEMENTS$1 = {\n  TOP_LEFT: 'top-left',\n  TOP_RIGHT: 'top-right',\n  BOTTOM_LEFT: 'bottom-left',\n  BOTTOM_RIGHT: 'bottom-right'\n};\n\nvar IN_CLASS$1 = 'in';\nvar ICON = 'glyphicon';\nvar WIDTH = 300;\nvar TRANSITION_DURATION = 300;\n\nvar script$h = {\n  components: { Alert: __vue_component__$a },\n  props: {\n    title: String,\n    content: String,\n    html: {\n      type: Boolean,\n      default: false\n    },\n    duration: {\n      type: Number,\n      default: 5000\n    },\n    dismissible: {\n      type: Boolean,\n      default: true\n    },\n    type: String,\n    placement: String,\n    icon: String,\n    customClass: null,\n    cb: {\n      type: Function,\n      required: true\n    },\n    queue: {\n      type: Array,\n      required: true\n    },\n    offsetY: {\n      type: Number,\n      default: 15\n    },\n    offsetX: {\n      type: Number,\n      default: 15\n    },\n    offset: {\n      type: Number,\n      default: 15\n    }\n  },\n  data: function data () {\n    return {\n      height: 0,\n      top: 0,\n      horizontal: this.placement === PLACEMENTS$1.TOP_LEFT || this.placement === PLACEMENTS$1.BOTTOM_LEFT ? 'left' : 'right',\n      vertical: this.placement === PLACEMENTS$1.TOP_LEFT || this.placement === PLACEMENTS$1.TOP_RIGHT ? 'top' : 'bottom'\n    }\n  },\n  created: function created () {\n    // get prev notifications total height in the queue\n    this.top = this.getTotalHeightOfQueue(this.queue);\n  },\n  mounted: function mounted () {\n    var this$1 = this;\n\n    var el = this.$el;\n    el.style[this.vertical] = this.top + 'px';\n    this.$nextTick(function () {\n      el.style[this$1.horizontal] = \"-\" + WIDTH + \"px\";\n      this$1.height = el.offsetHeight;\n      el.style[this$1.horizontal] = (this$1.offsetX) + \"px\";\n      addClass(el, IN_CLASS$1);\n    });\n  },\n  computed: {\n    styles: function styles () {\n      var obj;\n\n      var queue = this.queue;\n      var thisIndex = queue.indexOf(this);\n      return ( obj = {\n        position: 'fixed'\n      }, obj[this.vertical] = ((this.getTotalHeightOfQueue(queue, thisIndex)) + \"px\"), obj.width = (WIDTH + \"px\"), obj.transition = (\"all \" + (TRANSITION_DURATION / 1000) + \"s ease-in-out\"), obj )\n    },\n    icons: function icons () {\n      if (isString(this.icon)) {\n        return this.icon\n      }\n      switch (this.type) {\n        case TYPES$1.INFO:\n        case TYPES$1.WARNING:\n          return (ICON + \" \" + ICON + \"-info-sign\")\n        case TYPES$1.SUCCESS:\n          return (ICON + \" \" + ICON + \"-ok-sign\")\n        case TYPES$1.DANGER:\n          return (ICON + \" \" + ICON + \"-remove-sign\")\n        default:\n          return null\n      }\n    }\n  },\n  methods: {\n    getTotalHeightOfQueue: function getTotalHeightOfQueue (queue, lastIndex) {\n      if ( lastIndex === void 0 ) lastIndex = queue.length;\n\n      var totalHeight = this.offsetY;\n      for (var i = 0; i < lastIndex; i++) {\n        totalHeight += queue[i].height + this.offset;\n      }\n      return totalHeight\n    },\n    onDismissed: function onDismissed () {\n      removeClass(this.$el, IN_CLASS$1);\n      setTimeout(this.cb, TRANSITION_DURATION);\n    }\n  }\n};\n\n/* script */\nvar __vue_script__$h = script$h;\n\n/* template */\nvar __vue_render__$h = function() {\n  var _vm = this;\n  var _h = _vm.$createElement;\n  var _c = _vm._self._c || _h;\n  return _c(\n    \"alert\",\n    {\n      staticClass: \"fade\",\n      class: _vm.customClass,\n      style: _vm.styles,\n      attrs: {\n        type: _vm.type,\n        duration: _vm.duration,\n        dismissible: _vm.dismissible\n      },\n      on: { dismissed: _vm.onDismissed }\n    },\n    [\n      _c(\"div\", { staticClass: \"media\", staticStyle: { margin: \"0\" } }, [\n        _vm.icons\n          ? _c(\"div\", { staticClass: \"media-left\" }, [\n              _c(\"span\", {\n                class: _vm.icons,\n                staticStyle: { \"font-size\": \"1.5em\" }\n              })\n            ])\n          : _vm._e(),\n        _vm._v(\" \"),\n        _c(\"div\", { staticClass: \"media-body\" }, [\n          _vm.title\n            ? _c(\"div\", { staticClass: \"media-heading\" }, [\n                _c(\"b\", [_vm._v(_vm._s(_vm.title))])\n              ])\n            : _vm._e(),\n          _vm._v(\" \"),\n          _vm.html\n            ? _c(\"div\", { domProps: { innerHTML: _vm._s(_vm.content) } })\n            : _c(\"div\", [_vm._v(_vm._s(_vm.content))])\n        ])\n      ])\n    ]\n  )\n};\nvar __vue_staticRenderFns__$h = [];\n__vue_render__$h._withStripped = true;\n\n  /* style */\n  var __vue_inject_styles__$h = undefined;\n  /* scoped */\n  var __vue_scope_id__$h = undefined;\n  /* module identifier */\n  var __vue_module_identifier__$h = undefined;\n  /* functional template */\n  var __vue_is_functional_template__$h = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  var __vue_component__$h = /*#__PURE__*/normalizeComponent(\n    { render: __vue_render__$h, staticRenderFns: __vue_staticRenderFns__$h },\n    __vue_inject_styles__$h,\n    __vue_script__$h,\n    __vue_scope_id__$h,\n    __vue_is_functional_template__$h,\n    __vue_module_identifier__$h,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nvar queues = {};\nqueues[PLACEMENTS$1.TOP_LEFT] = [];\nqueues[PLACEMENTS$1.TOP_RIGHT] = [];\nqueues[PLACEMENTS$1.BOTTOM_LEFT] = [];\nqueues[PLACEMENTS$1.BOTTOM_RIGHT] = [];\n\nvar destroy$1 = function (queue, instance) {\n  // console.log('destroyNotification')\n  removeFromDom(instance.$el);\n  instance.$destroy();\n  spliceIfExist(queue, instance);\n};\n\nvar init$1 = function (options, cb, resolve, reject) {\n  if ( resolve === void 0 ) resolve = null;\n  if ( reject === void 0 ) reject = null;\n\n  var placement = options.placement;\n  var queue = queues[placement];\n  // check if placement is valid\n  if (!isExist(queue)) {\n    return\n  }\n  /* istanbul ignore else */\n  // `error` alias of `danger`\n  if (options.type === 'error') {\n    options.type = 'danger';\n  }\n  var instance = new Vue({\n    extends: __vue_component__$h,\n    propsData: assign({}, { queue: queue, placement: placement }, options, {\n      cb: function cb$1 (msg) {\n        destroy$1(queue, instance);\n        if (isFunction(cb)) {\n          cb(msg);\n        } else if (resolve && reject) {\n          resolve(msg);\n        }\n      }\n    })\n  });\n  instance.$mount();\n  document.body.appendChild(instance.$el);\n  queue.push(instance);\n};\n\n// eslint-disable-next-line default-param-last\nvar _notify = function (options, cb) {\n  if ( options === void 0 ) options = {};\n\n  // simplify usage: pass string as option.content\n  if (isString(options)) {\n    options = {\n      content: options\n    };\n  }\n  // set default placement as top-right\n  if (!isExist(options.placement)) {\n    options.placement = PLACEMENTS$1.TOP_RIGHT;\n  }\n  if (isPromiseSupported()) {\n    return new Promise(function (resolve, reject) {\n      init$1(options, cb, resolve, reject);\n    })\n  } else {\n    init$1(options, cb);\n  }\n};\n\nfunction _notify2 (type, args) {\n  if (isString(args)) {\n    _notify({\n      content: args,\n      type: type\n    });\n  } else {\n    _notify(assign({}, args, {\n      type: type\n    }));\n  }\n}\n\nvar notify = Object.defineProperties(_notify, {\n  success: {\n    configurable: false,\n    writable: false,\n    value: function value (args) {\n      _notify2('success', args);\n    }\n  },\n  info: {\n    configurable: false,\n    writable: false,\n    value: function value (args) {\n      _notify2('info', args);\n    }\n  },\n  warning: {\n    configurable: false,\n    writable: false,\n    value: function value (args) {\n      _notify2('warning', args);\n    }\n  },\n  danger: {\n    configurable: false,\n    writable: false,\n    value: function value (args) {\n      _notify2('danger', args);\n    }\n  },\n  error: {\n    configurable: false,\n    writable: false,\n    value: function value (args) {\n      _notify2('danger', args);\n    }\n  },\n  dismissAll: {\n    configurable: false,\n    writable: false,\n    value: function value () {\n      for (var key in queues) {\n        /* istanbul ignore else */\n        if (hasOwnProperty(queues, key)) {\n          queues[key].forEach(function (instance) {\n            instance.onDismissed();\n          });\n        }\n      }\n    }\n  }\n});\n\nvar Notification = { notify: notify };\n\nvar services = /*#__PURE__*/Object.freeze({\n  __proto__: null,\n  MessageBox: MessageBox,\n  Notification: Notification\n});\n\nvar install = function (Vue, options) {\n  if ( options === void 0 ) options = {};\n\n  // Setup language, en-US for default\n  locale.use(options.locale);\n  locale.i18n(options.i18n);\n  // Register components\n  Object.keys(components).forEach(function (key) {\n    var _key = options.prefix ? options.prefix + key : key;\n    Vue.component(_key, components[key]);\n  });\n  // Register directives\n  Object.keys(directives).forEach(function (key) {\n    var _key = options.prefix ? options.prefix + '-' + key : key;\n    Vue.directive(_key, directives[key]);\n  });\n  // Register services\n  Object.keys(services).forEach(function (key) {\n    var service = services[key];\n    Object.keys(service).forEach(function (serviceKey) {\n      var _key = options.prefix ? options.prefix + '_' + serviceKey : serviceKey;\n      Vue.prototype['$' + _key] = service[serviceKey];\n    });\n  });\n};\n\nexport { __vue_component__$9 as Affix, __vue_component__$a as Alert, BreadcrumbItem, Breadcrumbs, Btn, BtnGroup, BtnToolbar, __vue_component__ as Carousel, Collapse, __vue_component__$8 as DatePicker, Dropdown, MessageBox, __vue_component__$2 as Modal, __vue_component__$e as MultiSelect, __vue_component__$f as Navbar, NavbarForm, NavbarNav, NavbarText, Notification, __vue_component__$b as Pagination, Popover, ProgressBar, ProgressBarStack, __vue_component__$1 as Slide, __vue_component__$3 as Tab, __vue_component__$4 as Tabs, __vue_component__$c as TimePicker, Tooltip, __vue_component__$d as Typeahead, install, popover, scrollspy, tooltip };\n//# sourceMappingURL=uiv.esm.js.map\n","/*\n * bootstrap.js\n * Copyright (c) 2020 james@firefly-iii.org\n *\n * This file is part of Firefly III (https://github.com/firefly-iii).\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program.  If not, see